Open Source im professionellen Einsatz

© Daniel Funke, photocase.com

Mit NSE den Netzwerkscanner Nmap erweitern

Erweiterungsbau

Ab Version 4.21 enthält Nmap die Scripting Engine NSE. Statt nur nach Ports und Protokollen zu suchen, erweitern dabei Skripte die Funktionen des Netzwerk-Tools erheblich. Eine Programmiersprache und eine Schnittstelle zu den Funktionen des Scanners helfen dem Netzwerker.

Wenn es um Penetrationstests oder einen Überblick der im eigenen Netz angebotenen Dienste geht, ist Nmap das Maß der Dinge [1]. Viele Administratoren wünschen sich jedoch - ausgehend von den Ergebnissen - weitere Tests: Wenn Nmap schon einen HTTP-Dienst gefunden hat, wieso nicht gleich die Version des Webservers abfragen? Bislang schrieb mancher Admin eigene Skripte, die Nmaps Ausgabedateien parsen. Da dies bei großen Netzen aufwändig und langwierig ist, entschloss sich Fyodor, Projektleiter von Nmap, die Entwicklung einer Scripting Engine in die Hände von Diman Todorov zu legen.

NSE erweitert alle Kernbereiche des Scanners [2]. Das Abfragen detaillierter Informationen von Services wie SNMP, NFS, SMB oder RPC reichert die Suche nach aktiven Systemen durch Domain-Lookups, Eigentümerdaten aus Whois-Datenbanken oder anderen Quellen an (Network Discovery). Bereits im Normalbetrieb identifiziert Nmap zwar offene Ports (Version Detection), stellt jedoch durch den Einsatz von NSE-Skripten die Versionen angebotener Dienste sehr viel genauer fest.

Das Werkzeug ist nicht als Vulnerability Scanner ausgelegt, es bietet sich jedoch an, wichtige Sicherheitslöcher beim Scannen durch Nmap gleich mit überprüfen zu lassen. Für umfangreiche Scans sind Tools wie Nessus [3], GFI Languard [4] oder ISS Internet Scanner [5] allerdings besser geeignet.

Um Backdoors zu erkennen, setzt NSE Regular Expressions auf die erkannten Versionsstrings an. Für Penetrationstester ist die Möglichkeit interessant, vorhandene Schwachstellen durch Einbinden von Exploits direkt zu testen. Allerdings weisen die Entwickler darauf hin, dass sich Nmap nicht zur Konkurrenz für das Metasploit-Framework [6] entwickeln soll. In erster Linie erweitert NSE damit die nativen Fähigkeiten von Nmap, ermöglicht aber auch individuelle Anpassungen der Nmap-Scans.

Vom Server des Projekts [7] lädt der Administrator entweder den Sourcecode oder installiert ein Paket aus einem Repository seiner Distribution. Die NSE-Erweiterung ist ab Version 4.21 fest integriert. Herzstück von NSE ist ein Lua-Interpreter [8] (siehe Abbildung 1). Wenn Nmap einen Host oder Port erkannt hat, ruft es den Lua-Interpreter mit passenden Skripten auf, die neben den Funktionen des Lua-Sprachumfangs auch die Nmap-spezifischen Funktionen der NSE-Bibliothek nutzen können.

Abbildung 1: Das Zusammenspiel von NSE-Skripten, Nmap-Bibliotheken und neuen Lua-Aufrufen erweitert den Funktionsumfang des klassischen Nmap.

Abbildung 1: Das Zusammenspiel von NSE-Skripten, Nmap-Bibliotheken und neuen Lua-Aufrufen erweitert den Funktionsumfang des klassischen Nmap.

Die Skripte von NSE finden sich nach der Installation unter »/usr/share/nmap/nselib«. Diese Bibliotheken stellen beispielsweise Hilfen zur Auswertung und Manipulation von IP-Adressen, den Einsatz Perl-kompatibler Regular Expressions oder von URL-Manipulationen bereit, die so in Lua nicht vorhanden sind.

Architektur

Über das Nmap-API tauschen Nmap und die NSE Informationen aus. Hierzu zählen der Name des Zielhosts, dessen Betriebssystem und IP-Adresse, der untersuchte Port und dessen Status. Außerdem erlaubt das API, Socket-Funktionen von Nmap zur Netzwerkkommunikation aufzurufen. Eine Erweiterung, um beliebig definierbare Pakete zu verschicken, steht kurz vor der Freigabe.

Das Normalverhalten von Nmap ist, entsprechend seinen Optionen für einen Host die verfügbaren Ports auf Erreichbarkeit zu überprüfen. Bei einem TCP-Scan stellt das Werkzeug dabei beispielsweise einen Status wie »open«, »closed« oder »filtered« fest. Für weitergehende Tests kommt NSE zum Zuge.

Sobald Nmap einen Port erkannt hat und NSE mit der Option »-sC« aktiviert ist, sucht das Subsystem nach einem passenden Skript für diesen Test. Ob Nmap ein NSE-Skript ausführt oder nicht, hängt in erster Linie von der Skriptregel ab. Diese Regel ist im Programmcode als Funktion implementiert und legt die Bedingung fest, unter der das Skript startet.

Erkennt der Scanner beispielsweise den TCP-Port 80 als offen und erklärt sich das Skript »showHTMLTitle.nse« für diesen Port zuständig, wird es aufgerufen. Es fragt die Startseite des Webservers ab und zeigt deren Titel an (Abbildung 2). Der Programmcode, um Webserver zu analysieren, befindet sich zusammen mit über 30 bereits mitgelieferten Skripten unter »/usr/share/nmap/scripts«.

Abbildung 2: Im neuen Skriptmodus mit »-sC« ruft Nmap externe Skripte auf. Da Nmap einen offenen Port 80 erkennt, fragt das Werkzeug unter anderem den Titel einer erkannten Website ab und zeigt ihn an. Auch pro Host sind zusätzliche Auswertungen möglich: Hier erkennt NSE den Netbios-Namen des Ziels.

Abbildung 2: Im neuen Skriptmodus mit »-sC« ruft Nmap externe Skripte auf. Da Nmap einen offenen Port 80 erkennt, fragt das Werkzeug unter anderem den Titel einer erkannten Website ab und zeigt ihn an. Auch pro Host sind zusätzliche Auswertungen möglich: Hier erkennt NSE den Netbios-Namen des Ziels.

Auswahlverfahren

Ein Skript »showHTTPVersion.nse« im selben Verzeichnis würde jedoch im Beispiel nicht ausgeführt, weil es der Kategorie »version« angehört, deren Skripte beim Standardverhalten nicht aktiviert sind. NSE teilt Skripte in Kategorien ein, um eine genauere Steuerung zu ermöglichen. Bestimmte Skripte könnten die Systemstabilität beeinträchtigen und lassen sich daher nur ausführen, wenn der Admin sie explizit einbindet.

Erfolgt der Aufruf mit »-sC«, werden nur die Skripte der Kategorie »safe« und »intrusive« ausgeführt. Das genannte NSE-Skript »showHTTPVersion.nse« ist allerdings keiner dieser beiden Kategorien zugeordnet und läuft daher normalerweise nicht ab.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook