Egal ob Angreifer, Penetrationstester, Admin oder Netzwerktechniker: Keiner kommt ohne einen guten Scanner aus, der im Netz nach Hosts fahndet und deren Dienste abklopft. Das Lieblingswerkzeug der meisten ist Nmap. Zu Recht, da das Tool viele trickreiche Scantechniken kombiniert.
Die Suche nach potenziellen Kommunikationspartnern in weltweiten Netzwerken ist Tradition, allein die Hilfsmittel haben sich geändert: Wo früher Modems nächtlich Tausende von Telefonnummern durchprobierten und jeden Connect aufzeichneten (Wardialing genannt), jagen heute Portscanner ihre Klopfzeichen per IP durchs Internet. Über einfache Lebenszeichen hinaus erfahren diese Programme verblüffend viel über die untersuchten Systeme.
Den wohl umfangreichsten Portscanner Nmap (Network Mapper, [1]) stellte der Entwickler Fyodor erstmals im September 1997 vor [2]. Die damals gängigen Tools wie zum Beispiel Strobe [3] und Pscan [4] boten ihm zu wenig, er wollte ihren Funktionensumfang in den Schatten stellen – was ihm auch gelang:
- Nmap erkennt mit seinem TCP-Fingerprinting das Betriebssystem
des gescannten Systems, - stellt die Uptime des untersuchten Rechners fest und
- identifiziert zuverlässig die offenen Dienste und deren
Versionen.
Dabei konstruiert der Scanner auch sehr spezielle Pakete, die im normalen Netzverkehr nicht vorkommen.
Obwohl oft als Hackerwerkzeug verteufelt, hilft Nmap auch Administratoren bei der Analyse ihres Netzwerks. Bevor Angreifer auf vergessene und offen gelassene Dienste stoßen, spürt sie der Admin lieber selbst auf oder prüft das Regelwerk seiner Firewall so, wie es ein Angreifer auch täte. Selbst zum Inventarisieren oder Überprüfen von Patch-Ständen taugt das Tool.
Für Einsteiger und Profis
Die initiale Entwicklungsplattform für Nmap war Linux, mittlerweile läuft es auch auf Windows, BSD und vielen Unix-Varianten. Für das Kommandozeilen-Tool gibt es grafische Oberflächen unter Unix (Nmapfe, Abbildung 1) und den Betriebssystemen aus Redmond (Nmapwin, [5]). Nmapwin hinkt der Entwicklung aber notorisch hinterher. Dank PHP-Nmap [2] (siehe auch Abbildung 2) lässt sich der Scanner sogar per Webbrowser nutzen. Die Nmap-Homepage listet weitere Projekte [7], die auf Nmap aufsetzen oder seine Funktionen nutzen. Dazu gehört sogar eine Portierung auf Sharps Zaurus.
Vielfalt der Optionen
Der Funktionsumfang führt zu einer großen Zahl an Aufrufparametern. Zur Auswahl stehen allein 15 Methoden, um Hosts zu scannen (Tabelle 1). Jede Methode kennt 20 Einstellungen, die teils zu sehr ausgefallenen Paketen führen. Dennoch eignet sich das Programm auch für Laien, wenn sie auf das Feintuning verzichten. Für den vollen Funktionsumfang, der das Tool in die Profi-Liga hebt, ist allerdings einiges Hintergrundwissen über Netzwerke erforderlich.
|
Tabelle 1: |
||
|---|---|---|
|
Scantechnik |
Syntax |
Nutzen |
|
TCP SYN |
-sS |
Unauffälliger Scan |
|
TCP connect() |
-sT |
Ohne Root-Rechte scannen |
|
FIN |
-sF |
Nahezu unbemerkt scannen |
|
Xmas |
-sX |
Nahezu unbemerkt scannen |
|
Null |
-sN |
Nahezu unbemerkt scannen |
|
Ping |
-sP |
Aktive Hosts finden |
|
Version |
-sV |
Dienste genauer identifizieren |
|
UDP |
-sU |
UDP-Dienste finden |
|
IP Protocol |
-sO |
Unterstützte Protokolle feststellen |
|
ACK |
-sA |
Firewalls erkennen |
|
Window |
-sW |
Weiterentwickelter ACK-Scan |
|
RPC |
-sR |
Informationen über RPC-Dienste |
|
List |
-sL |
Dummy zur Kontrolle |
|
Idle |
-sI |
Scannen über Dritte |
|
FTP Bounce |
-b |
Eher historisch |

Abbildung 1: Das Nmap-Frontend bewahrt den Admin vor dem Auswendiglernen der vielfältigen Optionen und stellt das Kommando (letzte Zeile) zusammen. Das Textfenster im unteren Drittel sammelt die Ausgaben des Nmap-Scan.
Einfacher Dreisatz
Nmap-Scans laufen dreistufig ab, der Prozess lässt sich allerdings recht feingranular beeinflussen. Per Default arbeitet der Scanner in drei Schritten: Ping, Lookup und Scan.
Nmap pingt zuerst sein Zielsystem. Zur Wahl stehen dabei herkömmliche ICMP-Echo-Requests (siehe Kasten “Hosts aufspüren”) und Nmap-eigene Techniken, um aktive Hosts aufzuspüren. Es folgt per Default ein Reverse Lookup, der die IP-Adresse des Systems in einen Namen auflöst. Im letzten Schritt scannt Nmap mit der ausgewählten Technik die Ports seiner Ziele. Bei Bedarf bricht [Strg]+[C] den Vorgang ab. Schreibt Nmap ein Logfile, kann es später an derselben Stelle fortfahren.

Abbildung 2: Für Nmap existiert sogar eine Weboberfläche. Ihr Komfort beschränkt sich allerdings darauf, die gezeigten Optionen per Maus zu setzen und das Tool dann mit »sudo« vom PHP-Skript aus aufzurufen. Die dazu nötigen Rechte öffnen aber eine potenzielle Sicherheitslücke.
Vier Zustände
Nmap kennt vier Zustände, in denen sich ein Port befinden kann (Tabelle 2). Um sie festzustellen, bietet es eine Fülle an Scantechniken an, sie sind seine große Stärke. Statt stur eine gewöhnliche TCP-Verbindung zu öffnen, sendet das Programm gezielt Pakete, die gegen etliche RFCs verstoßen, und zieht seine Schlüsse aus der Reaktion der gescannten Systeme. Das Tool braucht dazu allerdings Root-Rechte, um mit Raw-Sockets arbeiten und die Pakete selbst zusammensetzen zu dürfen.
Primitivscan
Ohne Root-Rechte (Abbildung 3) bleibt nur der einfache »connect()«-Scan. Er verwendet die gleichnamige Betriebssystemfunktion, der Verbindungsaufbau verläuft RFC-konform mit einem Three-Way-Handshake: Der Scanner sendet ein TCP-Paket mit gesetztem SYN-Flag (Abbildung 4) und passenden Quell- und Zielports. Horcht kein Dienst auf dem Zielport, antwortet das System mit einem RST-Paket, das die Verbindung abbaut, andernfalls antwortet es mit einem Paket mit gesetzten SYN- und ACK-Flags. Ein ACK-Paket schließt den Handshake ab, die Verbindung steht. Nmap beendet sie sofort mit einem Reset (Listing 1).
Wer über Root-Rechte verfügt, setzt besser auf den TCP-SYN-Scan. Diese Technik schont die Netz- und Systemressourcen, funktioniert unabhängig vom Betriebssystem und bleibt unauffällig.

Abbildung 3: Ohne Root-Rechte bleiben Nmap nur wenige Techniken, um im Netz nach offenen Ports zu suchen. Normale User verwenden den einfachen Connect-Scan, der mit RFC-konformen TCP-Verbindungen arbeitet.
|
Hosts aufspüren |
|---|
|
Nmap unterstützt den Admin nicht nur darin, System und Dienste eines Rechners aufzuspüren, es durchforstet auf Wunsch auch Subnetze nach Rechnern. Besonders der Ping-Scan leistet gute Dienste. Passend zu seinem Namen erzeugt das »ping«-Kommando einen ICMP-Echo-Request, auf den aktive Zielsysteme mit einem ICMP-Echo-Reply reagieren. Da ICMP keine Ports verwendet, die Nmap durchsuchen könnte, ist der Scan nach spätestens zwei Frames pro Host fertig und damit sehr flott. Ohne weiteres Zutun ist aber nicht feststellbar, ob beim Ausbleiben von Antworten kein Host vorhanden ist oder ob ein Paketfilter die ICMP-Nachrichten verschluckt. Gute Vorbereitung spart viel AufwandBesonders gut eignet sich der Ping-Scan zur Vorbereitung auf weitere Untersuchungen: Er prüft sehr schnell, welche Systeme überhaupt reagieren, sodass aufwändige Portscans nicht ins Leere laufen. Mögliche Fehlerquellen bei der Wahl der Optionen oder der Ziel-Hosts bereits im Vorfeld erkennen, das gelingt mit einem List-Scan. Er gibt lediglich aus, welche Systeme Nmap auf welche Weise überprüfen würden. Echte Scans unterlässt dieser Modus. Vorsicht ist dennoch geboten, wenn jemand etwa im Zuge eines Penetrationstests kein Aufsehen erregen will. Nmap versucht per Default, die IP-Adresse über einen Reverse Lookup in einen Hostnamen zurückzuverwandeln. Dabei befragt er zwangsläufig einen Nameserver, der zum Zielnetz gehört. Dieses verräterische Verhalten lässt sich aber deaktivieren. |
Halbe Sachen erwünscht
Statt eine vollständige TCP-Verbindung aufzubauen, sendet Nmap nur das erste SYN-Paket aus dem Three-Way-Handshake. Ein geschlossener Port reagiert mit einem »RST«-Flag, um die halb geöffnete Verbindung sauber abzubauen. Ein offener Port antwortet mit einem SYN/ACK, das Nmap mit einem Reset quittiert (Listing 2). Der gescannte Dienst bemerkt nichts und hinterlässt keine verräterischen Einträge in Logfiles.
|
Listing 1: |
|---|
01 Port geschlossen: 02 192.168.5.22 -> 192.168.5.10 TCP 60319 > 80 [SYN] 03 192.168.5.10 -> 192.168.5.22 TCP 80 > 60319 [RST, ACK] 04 05 Port offen: 06 192.168.5.22 -> 192.168.5.10 TCP 60320 > 80 [SYN] 07 192.168.5.10 -> 192.168.5.22 TCP 80 > 60320 [SYN, ACK] 08 192.168.5.22 -> 192.168.5.10 TCP 60320 > 80 [ACK] 09 192.168.5.22 -> 192.168.5.10 TCP 60320 > 80 [RST, ACK] |
|
Listing 2: |
|---|
01 Port geschlossen: 02 192.168.5.22 -> 192.168.5.10 TCP 56522 > 80 [SYN] 03 192.168.5.10 -> 192.168.5.22 TCP 80 > 56522 [RST, ACK] 04 05 Port offen: 06 192.168.5.22 -> 192.168.5.10 TCP 60420 > 80 [SYN] 07 192.168.5.10 -> 192.168.5.22 TCP 80 > 60420 [SYN, ACK] 08 192.168.5.22 -> 192.168.5.10 TCP 60420 > 80 [RST] |
Intrusion-Detection-Systeme wie Snort [8] oder Prelude [9] lassen sich dadurch aber nicht täuschen. Die ungewöhnlich hohe Anzahl gleichzeitiger Verbindungenswünsche zu wechselnden Ports entlarvt den Portscan. Snort protokolliert:
[**] [100:1:1] spp_portscan: PORTSCAN U DETECTED from 192.168.5.22 (THRESHOLD 4 U connections exceeded in 0 seconds) [**] 10/05-19:40:49.540435
Solche Spuren vermeidet der Scanner auf Wunsch mit einem geänderten Timing, bei dem sich Nmap langsam vortastet. Die Pakete verlieren sich dann im übrigen Netzverkehr, dem IDS gelingt es nicht mehr, die Einzelstücke des Scan einander zuzuordnen. Oder der Scanner greift auf andere Techniken zurück, beispielweise FIN-, Xmas- oder Null-Scan.
Topsecret
Diese besonders unauffälligen Techniken verzichten auf jeden Verbindungsaufbau, egal ob halb oder vollständig. Sie senden nur einen einzigen Frame zum Zielsystem. Die Varianten FIN, Xmas und Null unterscheiden sich nur durch die TCP-Flags (Abbildung 4), die in dieser Kombination unter normalen Umständen nicht vorkommen. Keiner setzt dabei das SYN-Flag. Ob der Port verfügbar ist, zeigt sich anhand des Antwortpakets oder dessen Ausbleibens. Bei einem geschlossenen Port reagieren standardkonforme TCP-Stacks mit einem RST-Paket, das die Verbindung zurücksetzt.
Lauscht ein Dienst auf dem Zielport, wird das gescannte System mit hoher Wahrscheinlichkeit keine Verbindung finden, zu der das Anfragepaket passt. Leider definieren die zutreffenden RFCs nur ungenau, wie mit solchen Paketen zu verfahren ist. Daher reagieren die TCP-Stacks unterschiedlich, Listing 3 zeigt das Verhalten eines Linux-Rechners: Er ignoriert die unerwarteten Pakete.
Windows-Systeme nehmen hier eine Sonderrolle ein. Sie antworten immer mit einem Reset der Verbindung – offene und geschlossene Ports sind nicht zu unterscheiden. Immerhin lässt auch dieses Verhalten auf das Betriebssystem schließen, da sonst nur exotische TCP-Stacks so reagieren.
Bleibt jede Antwort aus, klassifiziert Nmap den Port als offen oder gefiltert (siehe Tabelle 2), da Firewalls solche Pakete ebenfalls meist kommentarlos verwerfen. Wer es genau wissen will, arbeitet zusätzlich mit Version Detection (auch Version Probe genannt): Sie verzichtet auf jede Tarnung und ermittelt offensiv den Zustand des Ports.
|
Tabelle 2: |
|
|---|---|
|
Zustand |
Erklärung |
|
Offen (open) |
Die Kommunikation auf diesem Port ist ungehindert |
|
Gefiltert (filtered) |
Der Port ist vermutlich durch eine Firewall geblockt. Finden |
|
Nicht gefiltert |
ACK- oder Window-Scans spüren ungefilterte Ports auf. |
|
Geschlossen |
Der Port ist entweder korrekt durch eine Firewall |
Tiefer gebohrt
Version Detection sucht keine offenen Ports, sie untersucht, welche Software auf einem Port lauscht. Vorher findet ein Portscan (Connect- oder SYN-Scan) mögliche Kandidaten. Version Detection startet eine gewöhnliche Verbindung und kommuniziert mit dem Dienst. Das hinterlässt fast immer Einträge in den Logfiles. Die gewonnenen Erkenntnisse vergleicht Nmap mit seiner Datenbasis in »nmap-service-probes«. In Version 3.93 enthält sie 2895 Dienste-Signaturen.

Abbildung 4: Nmap nutzt die Felder des TCP-Headers trickreich, um Informationen über das Zielsystem zu erlangen. Neben den übliche Flags ACK, RST und SYN (gelb) setzen manche Techniken unerwartete Kombinationen mit den restlichen Flags (pink).
Was bei einzelnen Diensten klappt, macht Nmap auch mit dem kompletten System: OS-Detection, also die Erkennung des Betriebssystems aus der Ferne, gehört zu den fortgeschrittenen Techniken. Mit der gebotenen Qualität hält kein anderes Programm mit.
Die Technik profitiert von subtilen Unterschieden im Verhalten der TCP-Stacks. Eine Datenbank verzeichnet die spezifischen Merkmale als so genannte Fingerprints; Nmap 3.93 liefert in »nmap-os-fingerprints« 1707 davon mit. Ein Abgleich mit dieser Liste entlarvt den Protokollstack und sein Betriebssystem. Der Scan arbeitet erstaunlich unauffällig. Er verzichtet auf Verbindungen zu speziellen Applikationen und begnügt sich mit ungefähr 30 einfachen Frames.
Jagd aufs Betriebssystem
OS-Detection beginnt mit einem gewöhnlichen Portscan und startet anschließend acht kleine Tests, die eigens erzeugte Pakete zum Ziel-Host senden. Manche davon würden in einem normalen Netz niemals vorkommen, ein IDS entdeckt sie recht leicht. Das Zielsystem bemerkt von dem Abtasten aber nichts. Nebenbei ermittelt die TCP-Timestamp-Option noch die Uptime des Systems.
Erkennt Nmap das Zielsystem nicht, legt es dem User alle gewonnenen Daten vor. Weiß der, um welches OS es sich handelt, kann er auf der Submit-Seite [10] die Signatur veröffentlichen. Auf diese Weise helfen Nmap-Benutzer die Erkennungsrate weiter zu verbessern.
Ohne Filter
In Situationen, in denen Nmap einen gefilterten Port nicht von einem offenen unterscheiden kann (Tabelle 2), helfen ACK-Scans weiter. Die einfache und unauffällige Technik schafft es zwar nicht, einen Port als offen zu klassifizieren, erkennt aber Firewalls. Nmap schickt ein einzelnes ACK-Paket zum Ziel-Host, der eigentlich mit einem Reset-Paket antworten müsste. Bleibt es aus oder trifft dafür ein ICMP-Destination-Unreachable-Paket ein, dann blockierte sehr wahrscheinlich eine Firewall die Übertragung. Der Port ist also gefiltert.
Als abgewandelte Form des ACK-Scan nutzt Nmap auch Window-Scans, um offene Ports zu identifizieren. Der Scan beginnt wieder mit einem ACK-Paket, wertet aber zusätzlich die Window Size aus, die das Zielsystem in seiner Antwort einträgt. Aus RST-Paketen mit einer Fenstergröße größer null schließt der Scanner, dass der Port geöffnet ist.
Jenseits von TCP
Neben TCP scannt Nmap auch UDP. In diesem Fall existieren kaum Optionen, da das Protokoll ohne SYN oder sonstige Flags auskommt. UDP-Scanning ist in der Folge denkbar einfach: Anfragen an geschlossene Ports beantwortet das Zielsystem mit einem ICMP-Port-Unreachable-Paket, ein geöffneter Port liefert dagegen meist Daten zurück. Kommen keine Antwortpakete, klassifiziert Nmap den Port als offen oder gefiltert (Tabelle 2). Im Zweifelsfall hilft Version Detection weiter.
Viele Systeme limitieren ihre ICMP-Fehlermeldungen auf niedrige Raten von wenigen Paketen pro Sekunde. Nmap erkennt dieses Verhalten und arbeitet entsprechend langsamer. UDP-Scans können dann aber sehr lange dauern.
Ganz unten
Der IP-Protocol-Scan will nichts über spezifische Ports in Erfahrung bringen, er verrät, welche Schicht-4-Protokolle ein Ziel-Host unterstützt (Abbildung 5). Bei einem Linux-Client findet Nmap beispielsweise ICMP (Internet Control Message Protocol), IGMP (Internet Group Multicast Protocol), TCP, UDP und IPv6 (für IPv6-über-IPv4-Tunnel). Es probiert alle Protokollnummern (1 bis 255) durch und wartet auf Anworten.
Diese Informationen lassen auch Rückschlüsse auf den Typ des gescannten Systems zu. Mit etwas Hintergrundwissen gelingt eine grobe Klassifizierung, da nur Router und spezielle Server beispielsweise das Virtual Router Redundancy Protocol (VRRP) oder dessen freie Alternative CARP unterstützen (siehe Artikel zu Firewalling mit OpenBSD in diesem Schwerpunkt).
|
Listing 3: FIN, Xmas- und |
|---|
01 FIN-Scan, Port geschlossen: 02 192.168.5.22 -> 192.168.5.10 TCP 56485 > 80 [FIN] 03 192.168.5.10 -> 192.168.5.22 TCP 80 > 56485 [RST, ACK] 04 05 FIN-Scan, Port offen: 06 192.168.5.22 -> 192.168.5.10 TCP 43406 > 80 [FIN] 07 192.168.5.22 -> 192.168.5.10 TCP 43407 > 80 [FIN] 08 09 Xmas-Scan, Port geschlossen: 10 192.168.5.22 -> 192.168.5.10 TCP 49499 > 80 [FIN, PSH, URG] 11 192.168.5.10 -> 192.168.5.22 TCP 80 > 49499 [RST, ACK] 12 13 Xmas-Scan, Port offen: 14 192.168.5.22 -> 192.168.5.10 TCP 47109 > 80 [FIN, PSH, URG] 15 192.168.5.22 -> 192.168.5.10 TCP 47110 > 80 [FIN, PSH, URG] 16 17 Null-Scan, Port geschlossen: 18 192.168.5.22 -> 192.168.5.10 TCP 50508 > 80 [] 19 192.168.5.10 -> 192.168.5.22 TCP 80 > 50508 [RST, ACK] 20 21 Null-Scan, Port offen: 22 192.168.5.22 -> 192.168.5.10 TCP 55971 > 80 [] 23 192.168.5.22 -> 192.168.5.10 TCP 55972 > 80 [] |
In den Wald gerufen
Mit RPC-Scans lassen sich Dienste wie NFS und NIS, die auf dieser Technik beruhen, sowie deren zugehörige Ports identifizieren. RPC-Scans sind nur zusammen mit anderen Varianten sinnvoll, die vorher Informationen über geöffnete Ports liefern. Version Detection aktiviert den RPC-Scan automatisch.
Um auch versteckte RPC-Dienste aufzuspüren, nutzt diese Technik die spezielle RPC-Anweisung »PROC=0«. Sie hat keine Auswirkung auf einen eventuell vorhandenen Dienst, entlockt ihm aber ein Lebenszeichen. Nicht-RPC-Dienste können mit der Anweisung nichts anfangen und bleiben stumm. Da RPC-Scans direkt mit einer Applikation interagieren, gehören sie zu den auffälligsten Techniken, sie verraten im günstigsten Fall aber viel über das untersuchte System.
Versteckspiele
In manchen Situationen hinterlassen selbst die ausgeklügeltesten Nmap-Scantechniken zu viele Spuren. Oder ein Penetration-Tester braucht detaillierte Informationen über einzelne Dienste, die ihm nur ein auffälliger Scan liefert. Muss er dennoch unerkannt bleiben, bietet es sich an, die IDS-Systeme und Admins der Gegenseite mit Hilfe falscher Köder abzulenken.
|
Listing 4: Version |
|---|
01 192.168.5.22 -> 192.168.5.10 TCP 59555 > 80 [SYN] 02 192.168.5.10 -> 192.168.5.22 TCP 80 > 59555 [SYN, ACK] 03 192.168.5.22 -> 192.168.5.10 TCP 59555 > 80 [ACK] 04 192.168.5.22 -> 192.168.5.10 HTTP GET / HTTP/1.0 05 192.168.5.3 -> 192.168.5.22 TCP 80 > 59555 [ACK] 06 192.168.5.3 -> 192.168.5.22 HTTP HTTP/1.0 200 Ok 07 192.168.5.22 -> 192.168.5.10 TCP 59555 > 80 [ACK] 08 192.168.5.22 -> 192.168.5.10 TCP 59555 > 80 [FIN, ACK] 09 192.168.5.3 -> 192.168.5.22 HTTP Continuation or non-HTTP traffic 10 192.168.5.22 -> 192.168.5.10 TCP 59555 > 80 [RST] |
Nmap nennt diese Technik Decoy, sie emuliert zusätzlich zum echten Scanvorgang viele weitere Scans, die von einer definierten Anzahl gefälschter IP-Adressen ausgehen. Das erhöht zwar die Wahrscheinlichkeit, dass die Scans auffallen, macht es aber schwerer, den Verursacher in der Vielzahl von Kandidaten zu erkennen.
Stress-Test
Aus Admin-Sicht ist Decoy Scanning zudem ein guter Test für die Leistungsfähigkeit von Hosts, Firewalls und Intrusion-Detection-Systemen. Nmap emuliert problemlos bis zu 128 gleichzeitige Hosts. Auf sehr leistungsfähigen und gut angebundenen Rechnern bietet es sich an, diese Grenze in der »MAX_DECOYS«-Konstante in »nmap.h« zu erhöhen und Nmap neu zu übersetzen.

Abbildung 5: Der IP-Header enthält unter anderem das IPID-Feld (pink), dessen Nummer zusammengehörige Fragmente kennzeichnet. Der Protocol-Eintrag bezeichnet das Schicht-4-Protokoll, das dieses IP-Paket transportiert (1=UCMP, 6=TCP, 17=UDP).
Missbrauchter Zombie
Noch listiger arbeiten Idle Scans. Sie bedienen sich eines unbeteiligten Dritten und tauschen mit dem gescannten System zu keinem Zeitpunkt Pakete aus. Das nötige IP-Spoofing übernimmt Nmap selbst. Die Technik funktioniert nur unter folgenden Voraussetzungen:
- Der so genannte Zombie-Host (der unbeteiligte Dritte, auch
Proxy genannt) sollte wenig bis gar keine Netzwerklast haben, um
die IPID (Identification-Feld im IP-Header, Abbildung 5) nicht zu
beeinflussen. - Die IPID des Zombies muss vorhersehbar sein. Ein geeignetes
System erhöht sie bei jedem neuen Paket um den Wert 1.

Abbildung 6: Beim trickreichen Idle Scan benutzt der Angreifer die Hilfe eines unbeteiligten Dritten (Zombie oder Proxy genannt). Alle Pakete, die den Ziel-Host erreichen, stammen vom Zombie. Der Angreifer zieht seine Schlüsse aus den Änderungen der IPID (Identification-Feld im IP-Header).
Ob sich der Zombie eignet, erkennt Nmap recht schnell: Das Programm sendet sechs SYN/ACK-Pakete zum Zombie-Host und erwartet, dass die IPIDs der zurückgesendeten RST-Pakete linear ansteigen. Andernfalls bricht der Scan mit einer freundlichen Fehlermeldung ab: »Idlescan is unable to obtain meaningful results from proxy 192.168.5.99 (192.168.5.99). I’m sorry it didn’t work out. QUITTING!«.
Steigerungsfähig
Steigen die IP-Identifikationsnummern vorhersehbar, wiederholt Nmap den Prozess viermal und verwendet dazu Pakete mit der Absenderadresse des zu scannenden Systems. Der Zombie wird seine Reset-Pakete jedoch zum Ziel-Host statt zum Scanner versenden. Um dennoch ein Ergebnis zu erhalten, schickt Nmap ein weiteres SYN/ACK-Paket zum Zombie, diesmal wieder mit der eigenen Absender-IP. Nur wenn die IPID im folgenden Reset um fünf gestiegen ist, betrachtet Nmap den Idle Scan (auch Blind Scanning genannt) als durchführbar.
Blinde sehen mehr
Beim Untersuchen des Zielsystems geht Nmap ähnlich vor: Es sendet SYN-Pakete an das Zielsystem, verwendet als Absender aber die Zombie-Adresse. Anfragen an geschlossene Ports beantwortet das Scan-Ziel mit einem RST an den Zombie, der das unerwartete Paket ignoriert. Ein offener Port versucht dagegen, die Verbindung durch ein SYN/ACK-Paket weiter aufzubauen. Von der Verbindung weiß der Zombie nichts und reagiert seinerseits mit einem Reset. Dabei erhöht er seine IPID – den neuen Zählerstand kann der Scan-Host anschließend vom Zombie abfragen (Abbildung 6).
Um den Vorgang etwas zu beschleunigen, geht Nmap von der (sinnvollen) Annahme aus, dass die meisten Ports ohnehin geschlossen sind. Er beginnt mit 30 zufällig gewählten TCP-Ports, an die er je ein SYN-Paket sendet. Hat sich anschließend die IPID erhöht, weiß Nmap, wie viele Ports im gescannten Block offen waren. Im zweiten Anlauf halbiert er die Zahl der Ports und grenzt den Bereich so lange ein, bis er die genauen Portnummern kennt.
Einsatz beim Admin
Trotz seines zwielichtigen Rufs als Hacker-Instrument erweist Nmap auch gestandenen Admins gute Dienste, wie ein paar Beispiele aus der Praxis zeigen. Nmaps teils heftige Protokolltricks sind aber nicht immer frei von Risiken: Wenn ein Mission-Critical-System unerwartet empfindlich reagiert und wegen eines Scans ausfällt, zeigt dies dem Admin zwar eine wichtige Schwachstelle – hilfreich ist das aber nicht, wenn der Schaden den Informationsgewinn überwiegt. Beispielsweise könnte der TCP-Stack einer Telefonanlage bei bestimmten Scantechniken abstürzen und die Telefonanlage lahmlegen, was je nach Firma teuer zu stehen kommt.
Ausnahmeregel
Für routinemäßige Checks bietet es sich an, die IP-Adressen der riskanten Rechner in einer Textdatei zu sammeln. In Verbindung mit der »–excludefile«-Option kann der Admin dann ganze Netze scannen, ohne diese Hosts zu beeinträchtigen.
Zur Dokumentation und für Vergleiche zwischen Scan-Durchgängen bringt Nmap vielfältige Logging-Varianten mit. Die Option »-oA« schaltet drei sinnvolle Formate ein und bereitet einer manuellen Überprüfung sowie der maschinellen Verarbeitung den Weg. Für Vergleiche zwischen Scan-Durchläufen steht NDiff [12] zur Verfügung.
Organisationen, deren Zweigstellen sich über mehrere Standorte verteilen, ohne jeweils IT-Personal vor Ort zu haben, behalten mit Nmap ein besseres Bild der Lage in den Außenstellen. Nicht nur für die Sicherheit ist das sinnvoll, oft gilt es auch aus Linzenzgründen, darauf zu achten, dass nur die vorgesehenen Hosts vorhanden sind.
Eine entsprechende Übersicht würde bereits ein einfacher Ping-Scan liefern. Aufwändigere Techniken liefern weitere Informationen, etwa die Patch-Stände der Maschinen. Zudem steigt die Wahrscheinlichkeit, einen fremden Host zu enttarnen:
nmap -vv -sS -O -T Polite -n -oA remote U 192.168.6.0/24
Nmap durchsucht per SYN-Scan »-sS« das Class-C-Subnetz 192.168.6.0 und sammelt zusätzlich Informationen über Betriebssysteme (OS-Detection »-O«). IP-Adressen in Hostnamen aufzulösen wäre in diesem Fall sinnlos, »-n« deaktiviert den Reverse Lookup. Um die WAN-Verbindungen zu entlasten, schaltet »-T Polite« auf eine weniger aggressive Timing-Variante um. Für ausführliches Logging sorgt »-oA remote«. Nmap schreibt drei Standardformate: einfach lesbares »remote.nmap«, per Grep leichter durchsuchbares »remote.gnmap« sowie die XML-Datei »remote.xml«.
Wurmausbrüche sind in Windows-basierten Netzen immer wieder anzutreffen und Spyware wie Backorifice befindet sich immer noch im Umlauf. Nmap vermag dem kreativen Admin als “IPS für Arme” zu dienen. Dazu sucht es gezielt nach Ports, die Malware bekanntermaßen verwendet:
nmap -vv -sS -n --excludefile Ausnahmen U -p Wurmports -oA infiziert 192.168.5.0/24
Der Befehl weist Nmap an so gesprächig wie möglich »-vv« zu arbeiten. Die bekannten, potenziell gefährlichen Ports folgen nach »-p«. Auf ihnen erwarten Würmer Befehle, laden schädlichen Code oder verbreiten sich weiter. Die Hosts im Netz 192.168.5.0/24 werden per SYN-Scan »-sS« überprüft, ohne die Namen aufzulösen »-n«. Die in der Ausnahmen-Datei enthaltenen Hosts entgehen dem Scan. Das Ergebnis landet in »infiziert.nmap«, »infiziert.gnmap« und »infiziert.xml«.
Beim Erkennen von Malware, die auf Standardports lauscht, leistet Nmaps Version Detection »-sV« gute Dienste. Nmap erkennt anhand seiner Datenbank recht zuverlässig, um welchen Dienst es sich handelt. Da diese zeitaufwändige Maßnahme unter Umständen aber zu hoher Netzwerklast führt, ist sie oft kaum praktikabel.
Patchwork
Würmer, Viren und andere Malware profitieren von ungepatchten, aber bekannten Sicherheitslücken. Große Verbreitung und Bekanntheit erlangte beispielsweise der SQL-Slammer, aber auch OpenSSL erhielt negative Schlagzeilen, als sich der Scalper-Wurm verbreitete. Tests auf solche Altlasten ähneln den vorhergehenden Beispielen. Wegen des erheblichen Netzwerkverkehrs durch Version Detection und OS-Detection bleiben sie aber besser getrennt:
nmap -vv -sS -A -n --excludefile U Ausnahmen -oA version 192.168.5.0/24
Die Grundlage ist wieder ein SYN-Scan »-sS«, auch die weiteren Optionen sind fast unverändert. Neu hinzu kommen Version Detection und OS-Fingerprinting, kombiniert in der Option »-A«. Ihre Resultate lassen Rückschlüsse auf fehlende Patches oder vergessene Updates zu. Allerdings erhöht nicht jedes Security-Patch die Versionsnummer – echtes Patch-Management will Nmap auch nicht ersetzen.
Vielseitig einsetzbar, umfangreiche Scans
Nmap besticht mit seinen vielen ausgefeilten und trickreichen Scantechniken. Dass sich das Tool auch für Angriffe eignet, sollte Admins nicht davon abhalten, es selbst einzusetzen. Nmap dankt es ihnen mit umfangreichen und teils verblüffend detaillierten Informationen über ihr Netz – dieses wertvolle Wissen sollte kein Admin den Angreifern allein überlassen. (fjl)
|
Infos |
|---|
|
[1] Nmap (Network Mapper): [http://www.insecure.org/nmap/] [2] Fyodor, “The Art of Port Scanning”, Phrack 51: [http://www.phrack.org/phrack/51/P51-11] [3] Strobe: [http://ftp.surfnet.nl/security/coast/scanners/strobe/] [4] Pscan: [http://www.packetstormsecurity.com/UNIX/scanners/pscan.c] [5] Nmapwin (Windows-Oberfläche für Nmap): [http://nmapwin.sourceforge.net] [6] PHP-Nmap (Weboberfläche): [http://phpnmap.sourceforge.net] [7] Liste mit Projekten, die Nmap verwenden: [http://www.insecure.org/nmap/nmap_relatedprojects.html] [8] Snort-IDS: [http://www.snort.org] [9] Prelude-IDS: [http://www.prelude-ids.org] [10] Betriebssystem-Fingerprints an die Nmap-Entwickler melden: [http://www.insecure.org/cgi-bin/nmap-submit.cgi] [12] NDiff zeigt Unterschiede in den Nmap-Logs: [http://www.vinecorp.com/ndiff/] [13] OpenSSL: [http://www.openssl.org] |
|
Der Autor |
|---|
|
|







