BackTrack Tools – Teil 1 PBNJ

Im Rahmen meiner Arbeit mit BackTrack Linux und Penetrationstests sieht man oft den Wald vor lauter Bäumen nicht mehr. BackTrack bietet eine so überwältigende Flut an Werkzeugen, dass es einige Zeit kostet, sich einen Überblick zu verschaffen. Um das zu vereinfachen werden hier die kommenden Wochen einige Werkzeuge kurz vorgestellt.

Den Anfang macht PBNJ von Joshua D. Abraham, ein Frontend für den beliebten Portscanner NMAP, dass die Ergebnisse der Portscans in einer Datenbank speichern kann.

1. Ansicht bei ersten Aufruf

Usage: scanpbnj [Options] {target specification}

Target Specification:
    Can pass hostnames, IP addresses, networks, etc.
    Ex: microsoft.com, 192.168.0.1, 192.168.1.1/24, 10.0.0.1-254
   -i  --iplist      Scan using a list of IPs from a file
   -x  --xml       Parse scan/info from Nmap XML file

Scan Options:
   -a  --args          Execute Nmap with args (needs quotes)
   -e  --extraargs     Add args to the default args (needs quotes)
       --inter    Perform Nmap Scan using non default interface
   -m  --moreports    Add ports to scan ex: 8080 or 3306,5900
   -n  --nmap          Path to Nmap executable
   -p  --pingscan            Ping Target then scan the host(s) that are alive
       --udp                 Add UDP to the scan arguments
       --rpc                 Add RPC to the scan arguments
   -r  --range        Ports for scan [def 1-1025]

       --diffbanner          Parse changes of the banner

Config Options:
   -d  --dbconfig    Config for results database [def config.yaml]
--configdir</pre>
<dir>Directory for the database config file</dir>

<dir>--data SQLite Database override [def data.dbl]</dir>&nbsp;

<dir>--dir</dir><dir>Directory for SQLite or CSV file [def . ]</dir>

<dir>General Options:</dir>&nbsp;

<dir>--nocolors Don't Print Colors</dir>&nbsp;

<dir>--test Testing information</dir>&nbsp;

<dir>--debug Debug information</dir>&nbsp;

<dir>-v --version Display version</dir>&nbsp;

<dir>-h --help Display this information</dir>

<dir>Send Comments to Joshua D. Abraham ( jabra@ccs.neu.edu )</dir>&nbsp;

<dir>

2. Funktionen

PBNJ ist als Koordinator zwischen NMAP und einer Datenbank gedacht. Dabei werden durch NMAP XML-Dateien erzeugt, die PBNJ liest und der Datenbank hinzufügt. Durch das intelligente verwalten der Zeitpunkte, zu denen die Portscans durchgeführt wurden, kann PBNJ Veränderungen im Netzwerk wie plötzlich offene FTP-Server oder geänderte Softwareversionen sichtbar machen. Es ist vom Autor als Ersatz zum händischen grep und diff zwischen verschiedenen durchgeführten Portscans gedacht.

  • Portscan mit NMAP durchführen
  • NMAP-XML Dateien einlesen
  • Daten in Datenbank speichern (SQLite, PostgreSQL und MySQL)
  • Unterschiede zwischen Portscans darstellen

All diese Funktionen können, wenn die Implementierung stimm, sehr nützlich für die IT-Sicherheit großer Netzwerke eingesetzt werden. Die Vorteile liegen auf der Hand.

  • Nach bestimmten ungepatchten Servern suchen
  • Nach bestimmten Softwareversionen suchen
  • Nach plötzlich neuen Hosts suchen

Sobald die Daten vieler NMAP-Portscans durchsuchbar in einer SQL-Datenbank vorliegen, sind die Möglichkeiten nur durch die eigenen SQL-Fähigkeiten begrenzt.

3. Einrichtung mit MySQL

Der Backtrack beiliegende MySQL-Server wird zuerst mit dem Befehl /etc/init.d/mysql start gestartet und eine Testdatenbank mit dem bekannten Passwort angelegt.

mysqladmin -uroot -ptoor create pbnjblogtest

Daraufhin wird die Konfiguration von PBNJ in der Datei /root/.pbnj/config.yaml wie folgt angepasst.

db: mysql
# for SQLite the name of the file. For mysql the name of the database
database: pbnjblogtest
# Username for the database. For SQLite no username is needed.
user: "root"
# Password for the database. For SQLite no password is needed.
passwd: "toor"
# Password for the database. For SQLite no host is needed.
host: "localhost"
# Port for the database. For SQLite no port is needed.
port: "3306"

Schon ist PBNJ bereit für den ersten Scan.

4. Umgang mit der Anwendung

Über den Kommandozeilenbefehl scanpbnj lassen sich Portscans starten (Hilfe siehe oben). Dabei kann die selbe Host-Notation verwendet werden, wie bei NMAP selbst. Also zum Beispiel scanpbnj 127.0.0.0/24.

Mit dem Befehl outputpbnj lassen sich über Aliases komplexe SQL-Anfragen durchführen. Bevor das aber funktioniert muss ein Flüchtigkeitsfehler im Perlskript /usr/local/bin/outputpbnj korrigiert werden.

Dort muss in Zeile 702 die Übergabe der Test- und Debugoptionen von:

'test|=s',   'debug|=s',

geädert werden in:

'test=s',    'debug=s',

Jetzt funktioniert auch outputpbnj. Die vordefinierten SQL-Queries lassen sich inklusive Beschreibung mittels outputpbnj --list ausgeben.

root@bt:~# outputpbnj -q latestchange
Sat Jul 14 23:34:04 2012	127.0.0.1	ssh	up	5.3p1 Debian 3ubuntu7	tcp

5. Fazit

PBNJ kann sicher bei Penetrationstests genauso, wie bei genereller Netzwerküberwachung nützlich sein. Was mir beim ausprobieren sauer aufgestoßen hat ist, dass die Statusmeldungen von NMAP nicht durchgereicht werden und die Portscans länger dauern, als mit NMAP. Teilweise für ein kleines SoHo-Netzwerk über zwei Stunden. Dem Problem lässt sich zwar beikommen, indem scanpbnj über die Option -e "-T Insane" ein Turbo für NMAP mitgegeben wird, aber hier müsste eigentlich transparent die Ausgabe von NMAP weitergegeben werden. Außerdem sorgte der Flüchtigkeitsfehler im Skript outputpbnj erstmal für Verwirrung. Alles in allem trotzdem ein sehr nützliches Werkzeug.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.