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> <dir>--dir</dir><dir>Directory for SQLite or CSV file [def . ]</dir> <dir>General Options:</dir> <dir>--nocolors Don't Print Colors</dir> <dir>--test Testing information</dir> <dir>--debug Debug information</dir> <dir>-v --version Display version</dir> <dir>-h --help Display this information</dir> <dir>Send Comments to Joshua D. Abraham ( jabra@ccs.neu.edu )</dir> <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.