Port-Scanning-Methoden

Als Hobby-Automechaniker kann ich mich stundenlang damit herumquälen, meine einfachsten Werkzeuge (Hammer, Klebeband, Schraubenschlüssel etc.) an mein Problem anzupassen. Wenn ich dann kläglich versage und meine alte Blechkiste zu einem echten Mechaniker schleppe, fischt er immer so lange in einer riesigen Werkzeugkiste herum, bis er das perfekte Ding gefunden hat, mit dem sich die Aufgabe fast von allein löst. Bei der Kunst des Port-Scannings ist es ähnlich. Experten kennen Dutzende von Scan-Methoden und wählen für jede Aufgabe die geeignete (oder eine Kombination von mehreren) aus. Auf der anderen Seite versuchen unerfahrene Benutzer und Script-Kiddies, jedes Problem mit dem standardmäßigen SYN-Scan zu lösen. Da Nmap gratis ist, ist Unwissen das einzige Hindernis auf dem Weg zur Meisterschaft im Port-Scanning. Das ist bestimmt besser als in der Autowelt, wo man eventuell sehr viel Können haben muss, um festzustellen, dass man einen Federbein-Kompressor benötigt, und dann immer noch Tausende dafür bezahlen muss.

Die meisten Scan-Typen stehen nur privilegierten Benutzern zur Verfügung, und zwar deswegen, weil sie rohe IP-Pakete senden und empfangen, wofür auf Unix-Systemen root-Rechte benötigt werden. Auf Windows empfiehlt sich ein Administrator-Account, wenngleich auf dieser Plattform Nmap manchmal auch für unprivilegierte Benutzer funktioniert, sofern WinPcap bereits in das Betriebssystem geladen wurde. Als Nmap 1997 veröffentlicht wurde, war die Voraussetzung von root-Rechten eine ernsthafte Beschränkung, da viele Benutzer nur Zugriff zu Shell-Accounts hatten. Die Welt von heute ist anders. Computer sind billiger, wesentlich mehr Menschen verfügen über einen immer verfügbaren direkten Internet-Zugang, und Desktop-Unix-Systeme (inklusive Linux und Mac OS X) sind weit verbreitet. Eine Windows-Version von Nmap ist nun auch verfügbar, wodurch es nun auf noch mehr Rechnern laufen kann. Aus all diesen Gründen sind Benutzer nur noch selten gezwungen, Nmap von einem beschränkten Shell-Account aus einzusetzen. Das ist erfreulich, denn die privilegierten Optionen machen Nmap wesentlich mächtiger und flexibler.

Auch wenn Nmap versucht, genaue Ergebnisse zu produzieren, sollten Sie nicht vergessen, dass all seine Erkenntnisse auf Paketen basieren, die von den Zielrechnern (oder den Firewalls davor) zurückkommen. Solche Hosts können unzuverlässig sein und eine Antwort senden, die Nmap verwirren oder täuschen soll. Wesentlich häufiger sind Hosts, die nicht RFC-konform sind und auf Testpakete von Nmap nicht so antworten, wie sie sollten. FIN-, NULL- und Xmas-Scans sind für dieses Problem besonders anfällig. Solche Probleme sind spezifisch für bestimmte Scan-Methoden und werden daher in den jeweiligen Abschnitten erörtert.

Dieser Abschnitt dokumentiert die etwa ein Dutzend von Nmap unterstützten Port-Scan-Methoden. Es darf immer nur eine Methode allein benutzt werden, mit der Ausnahme von UDP-Scans (-sU), die sich mit allen anderen TCP-Scan-Methoden kombinieren lassen. Hier eine Gedächtnisstütze: Optionen für Port-Scan-Methoden haben die Form -s<C>, wobei <C> ein bedeutender Buchstabe im Scan-Namen ist, normalerweise der erste. Die eine Ausnahme hiervon ist der als veraltet betrachtete FTP-Bounce-Scan (-b). Nmap führt standardmäßig einen SYN-Scan durch, ersetzt diesen aber mit einem Connect-Scan, falls der Benutzer nicht die nötigen Rechte hat, um rohe Pakete (benötigen unter Unix root-Rechte) zu senden, oder falls er IPv6-Ziele angegeben hat. Von den in diesem Abschnitt aufgelisteten Scans dürfen Benutzer ohne Sonderrechte nur den Connect- und FTP-Bounce-Scan ausführen.

-sS (TCP-SYN-Scan)

Der SYN-Scan ist aus gutem Grund die Standardeinstellung und die beliebteste Scan-Methode. Er kann schnell durchgeführt werden und scannt dabei Tausende von Ports pro Sekunde, wenn das Netzwerk schnell ist und nicht von einer intrusiven Firewall behindert wird. Der SYN-Scan ist relativ unauffällig, da er TCP-Verbindungen niemals abschließt. Außerdem funktioniert er auch bei allen konformen TCP-Stacks und ist unabhängig von spezifischen Eigenarten von Plattformen, wie es bei den FIN-/NULL-/Xmas-, Maimon- und Idle-Scans in Nmap der Fall ist. Er erlaubt auch eine klare, zuverlässige Unterscheidung zwischen den Zuständen offen, geschlossen und gefiltert.

Diese Methode wird oft als halboffenes Scannen bezeichnet, weil keine vollständige TCP-Verbindung hergestellt wird. Sie senden ein SYN-Paket, als ob Sie eine echte Verbindung herstellen würden, und warten dann auf eine Antwort. Ein SYN/ACK zeigt, dass jemand auf dem Port lauscht (dass er offen ist), während ein RST (Reset) anzeigt, dass niemand darauf lauscht. Falls nach mehreren erneuten Übertragungen keine Antwort erhalten wird, wird der Port als gefiltert markiert. Der Port wird auch dann als gefiltert markiert, wenn ein ICMP Unreachable-Fehler (Typ 3, Code 1, 2, 3, 9, 10 oder 13) empfangen wird.

-sT (TCP-Connect-Scan)

Der TCP-Connect-Scan ist der standardmäßig eingestellte TCP-Scan-Typ, falls der SYN-Scan nicht möglich ist. Das ist dann der Fall, wenn der Benutzer kein Recht hat, rohe Pakete zu senden, oder wenn er IPv6-Netzwerke scannt. Statt rohe Pakete zu schreiben, wie es die meisten anderen Scan-Typen machen, bittet Nmap das darunterliegende Betriebssystem, eine Verbindung mit dem Zielrechner und -port herzustellen, indem es einen Systemaufruf namens connect benutzt. Das ist derselbe Systemaufruf auf höherer Ebene, den Webbrowser, P2P-Clients und die meisten anderen netzwerkfähigen Anwendungen benutzen, um eine Verbindung herzustellen. Er ist Teil einer Programmierschnittstelle, die unter dem Namen Berkeley Sockets-API bekannt ist. Statt Antworten in Form roher Pakete von der Leitung zu lesen, benutzt Nmap diese API, um zu jedem Verbindungsversuch eine Statusinformation zu erhalten.

Wenn der SYN-Scan verfügbar ist, ist er normalerweise die bessere Wahl. Nmap hat weniger Einfluss auf den connect-Systemaufruf als auf rohe Pakete, wodurch es weniger effizient wird. Der Systemaufruf beendet Verbindungen zu offenen Ziel-Ports vollständig, statt sie in halboffenen Zustand zurückzusetzen, wie es der SYN-Scan macht. Das dauert nicht nur länger und erfordert mehr Pakete, um an dieselbe Information zu gelangen, sondern es ist sehr viel wahrscheinlicher, dass die Zielrechner die Verbindung protokollieren. Ein anständiges IDS wird beides mitbekommen, aber die meisten Rechner verfügen nicht über ein solches Alarmsystem. Viele Dienste auf Ihrem durchschnittlichen Unix-System fügen eine Notiz ins syslog hinzu und manchmal eine kryptische Fehlermeldung, wenn Nmap eine Verbindung herstellt und sofort wieder schließt, ohne Daten zu senden. Ganz armselige Dienste stürzen auch ab, wenn so etwas passiert, was aber eher selten ist. Ein Administrator, der in seinen Protokollen einen Haufen Verbindungsversuche von einem einzelnen System aus sieht, sollte wissen, dass er Ziel eines Connect-Scans wurde.

-sU (UDP-Scan)

Obwohl die meisten bekannten Dienste im Internet über das TCP-Protokoll laufen, sind UDP-Dienste weitverbreitet. Drei der häufigsten sind DNS, SNMP und DHCP (auf den registrierten Ports 53, 161/162 und 67/68). Weil UDP-Scans im Allgemeinen langsamer und schwieriger als TCP-Scans sind, werden diese Ports von manchen Sicherheitsprüfern einfach ignoriert. Das ist ein Fehler, denn ausbeutbare UDP-Dienste sind recht häufig, und Angreifer ignorieren bestimmt nicht das ganze Protokoll. Zum Glück kann Nmap helfen, diese UDP-Ports zu inventarisieren.

Ein UDP-Scan wird mit der Option -sU aktiviert. Er kann mit einem TCP-Scan-Typ wie einem SYN-Scan (-sS) kombiniert werden, um beide Protokolle im gleichen Durchlauf zu prüfen.

Beim UDP-Scan wird ein leerer UDP-Header (ohne Daten) an alle Ziel-Ports geschickt. Falls ein ICMP Port-unreachable-Fehler (Typ 3, Code 3) zurückkommt, ist der Port geschlossen. Andere ICMP Unreachable-Fehler (Typ 3, Codes 1, 2, 9, 10 oder 13) markieren den Port als filtered. Gelegentlich wird ein Dienst mit einem UDP-Paket antworten, was beweist, das er offen ist. Falls nach einigen erneuten Übertragungen keine Antwort erhalten wird, wird der Port als offen|gefiltert klassifiziert. Das heißt, der Port könnte offen sein, oder aber es gibt Paketfilter, die die Kommunikation blockieren. Man kann eine Versionserkennung (-sV) benutzen, um bei der Unterscheidung der wirklich offenen von den geschlossenen Ports zu helfen.

Eine große Herausforderung beim UDP-Scanning ist Geschwindigkeit. Offene und gefilterte Ports antworten nur selten, wodurch Nmap Zeitbeschränkungen überschreitet und seine Anfragen erneut sendet, für den Fall, dass das Testpaket oder die Antwort verloren ging. Geschlossene Ports sind oftmals ein noch größeres Problem. Sie senden normalerweise eine ICMP Port-unreachable-Fehlermeldung zurück. Aber anders als die RST-Pakete, die von geschlossenen TCP-Ports als Antwort auf einen SYN- oder Connect-Scan geschickt werden, beschränken viele Hosts standardmäßig die Rate der ICMP Port-unreachable-Nachrichten. Linux und Solaris sind dabei besonders streng. Der Linux-Kernel 2.4.20 z.B. beschränkt Destination-unreachable-Nachrichten auf eine pro Sekunde (in net/ipv4/icmp.c).

Nmap erkennt eine Ratenbeschränkung und verlangsamt seinen Betrieb entsprechend, um zu vermeiden, dass das Netzwerk mit nutzlosen Paketen überflutet wird, die vom Zielrechner verworfen werden. Unglücklicherweise führt eine Beschränkung wie in Linux auf ein Paket pro Sekunde dazu, dass ein Scan von 65.536 Ports über 18 Stunden dauert. Um Ihre UDP-Scans zu beschleunigen, können Sie z.B. mehr Hosts parallel scannen, zuerst nur einen schnellen Scan der beliebten Ports durchführen, von hinter der Firewall scannen und die Option --host-timeout benutzen, um langsame Hosts auszulassen.

-sN; -sF; -sX (TCP-NULL-, FIN- und -Xmas-Scans)

Diese drei Scan-Typen (noch mehr sind mit der im nächsten Abschnitt beschriebenen Option --scanflags möglich) beuten ein subtiles Schlupfloch im TCP RFC aus, um zwischen offenen und geschlossenen Ports zu unterscheiden. Seite 65 von RFC 793 besagt: Falls der Zustand des [Ziel-] Ports GESCHLOSSEN ist ... bewirkt ein eingehendes Segment, in dem sich kein RST befindet, dass ein RST als Antwort gesendet wird. Die nächste Seite beschreibt dann Pakete, die ohne gesetztes SYN-, RST- oder ACK-Bit an offene Ports geschickt werden, und dort heißt es weiter: Es ist unwahrscheinlich, dass Sie hierhin kommen, aber wenn doch, dann verwerfen Sie das Segment und springen Sie zurück.

Beim Scannen von Systemen, die konform zu diesem RFC-Text sind, führt jedes Paket, das kein SYN-, RST- oder ACK-Bit enthält, dazu, dass ein RST zurückgegeben wird, wenn der Port geschlossen ist, bzw. zu gar keiner Antwort, falls der Port offen ist. Solange keines dieser drei Bits gesetzt ist, sind alle Kombinationen der anderen drei (FIN, PSH und URG) okay. Das nutzt Nmap mit drei Scan-Typen aus:

Null-Scan (-sN)

Setzt keinerlei Bits (der TCP-Flag-Header ist 0).

FIN-Scan (-sF)

Setzt nur das TCP-FIN-Bit.

Xmas-Scan (-sX)

Setzt die FIN-, PSH- und URG-Flags und beleuchtet das Paket wie einen Weihnachtsbaum (engl. Xmas).

Diese drei Scan-Typen haben exakt dasselbe Verhalten und unterscheiden sich nur in den TCP-Flags ihrer Testpakete. Wenn ein RST-Paket empfangen wird, wird der Port als geschlossen betrachtet, während keine Antwort bedeutet, dass er offen|gefiltert ist. Der Port wird als gefiltert markiert, falls ein ICMP Unreachable-Fehler (Type 3, Code 1, 2, 3, 9, 10 oder 13) empfangen wird.

Der Schlüsselvorteil dieser Scan-Arten ist, dass sie sich an bestimmten zustandslosen Firewalls und paketfilternden Routern vorbeschleichen können. Ein weiterer Vorteil ist, dass diese Scan-Arten ncoh ein wenig unauffälliger sind als ein SYN-Scan. Aber verlassen Sie sich nicht darauf – die meisten modernen IDS-Produkte können so konfiguriert werden, dass sie diese Scans erkennen. Der große Nachteil ist, dass nicht alle Systeme sich ganz genau an RFC 793 halten. Eine Reihe von Systemen sendet RST-Antworten auf die Testpakete, unabhängig davon, ob der Port offen ist oder nicht. Das bewirkt, dass alle Ports als geschlossen markiert werden. Hauptvertreter der Betriebssysteme, die das machen, sind Microsoft Windows, viele Cisco-Geräte, BSDI und IBM OS/400. Aber auf den meisten Unix-basierten Systemen funktioniert dieser Scan. Ein weiterer Nachteil dieser Scans ist, dass sie keine Unterscheidung zwischen offenen und bestimmten gefilterten Ports machen, sondern lediglich das Ergebnis offen|gefiltert ausgeben.

-sA (TCP-ACK-Scan)

Dieser Scan unterscheidet sich insofern von den bisher hier vorgestellten, als er nie offene (oder auch nur offene|gefilterte) Ports bestimmt. Er wird dazu benutzt, Firewall-Regeln zu bestimmen, festzustellen, ob sie zustandsbehaftet sind oder nicht, und welche Ports gefiltert werden.

Beim Testpaket eines ACK-Scans wird nur das ACK-Flag gesetzt (es sei denn, Sie benutzen --scanflags). Beim Scannen ungefilterter Systeme werden sowohl offene als auch geschlossene Ports ein RST-Paket zurückgeben. Nmap markiert sie dann als ungefiltert, d.h. sie werden vom ACK-Paket erreicht, aber es kann nicht bestimmt werden, ob sie offen oder geschlossen sind. Ports, die nicht antworten oder bestimmte ICMP-Fehlermeldungen zurückgeben (Type 3, Code 1, 2, 3, 9, 10 oder 13), werden als gefiltert markiert.

-sW (TCP-Window-Scan)

Der Window-Scan ist genau derselbe wie der ACK-Scan, nur dass er ein Implementationsdetail bestimmter Systeme zur Unterscheidung zwischen offenen und geschlossenen Ports nutzt, statt bei jedem erhaltenen RST immer nur ungefiltert anzugeben. Das geschieht durch Analyse der TCP-Fenstergröße der zurückgegebenen RST-Pakete. Auf manchen Systemen benutzen offene Ports eine positive Fenstergröße (sogar für RST-Pakete), während geschlossene eine Fenstergröße von Null haben. Statt einen Port immer als ungefiltert aufzulisten, wenn von dort ein RST zurückkommt, listet der Window-Scan den Port als offen oder geschlossen auf, je nachdem, ob die TCP-Fenstergröße in diesem Reset jeweils positiv oder Null ist.

Dieser Scan baut auf einem Implementationsdetail einer Minderheit von Systemen im Internet auf, d.h. Sie können sich nicht immer darauf verlassen. Systeme, die es nicht unterstützen, werden normalerweise alle Ports als geschlossen zurückgeben. Natürlich ist es möglich, dass auf dem Rechner wirklich keine offenen Ports sind. Falls die meisten gescannten Ports geschlossen, aber einige Ports mit geläufigen Nummern (wie 22, 25 und 53) gefiltert sind, dann ist das System sehr wahrscheinlich anfällig. Gelegentlich zeigen Systeme auch genau das gegenteilige Verhalten. Falls Ihr Scan 1000 offene und drei geschlossene oder gefilterte Ports anzeigt, dann könnten jene drei sehr wohl die wirklich wahren offenen Ports sein.

-sM (TCP-Maimon-Scan)

Der Maimon-Scan wurde nach seinem Erfinder, Uriel Maimon, benannt. Er hat diese Methode im Phrack-Magazin, Ausgabe #49 (November 1996), beschrieben. Zwei Ausgaben später war diese Methode in Nmap enthalten. Sie macht genau das Gleiche wie der NULL-, FIN- und Xmas-Scan, außer, dass sie ein FIN/ACK-Testpaket verwendet. Laut RFC 793 (TCP) sollte als Antwort auf solch ein Paket ein RST-Paket erzeugt werden, egal ob der Port offen oder geschlossen ist. Allerdings hatte Uriel bemerkt, dass viele von BSD abgeleitete Systeme das Paket einfach verwerfen, wenn der Port offen ist.

--scanflags (Benutzerdefinierter TCP-Scan)

Wirklich fortgeschrittene Nmap-Benutzer brauchen sich nicht auf die vorgefertigten Scan-Typen zu beschränken. Mit der Option --scanflags können Sie Ihren eigenen Scan entwerfen, für den Sie beliebige TCP-Flags angeben können. Lassen Sie Ihrer Kreativität freien Lauf und umgehen Sie Intrusion-Detection-Systeme, deren Hersteller einfach die Nmap-Manpage durchgeblättert und spezifische Regeln dafür angegeben haben!

Das Argument für --scanflags kann ein numerischer Flag-Wert wie z.B. 9 (PSH und FIN) sein, aber symbolische Namen sind einfacher zu benutzen. Erstellen Sie einfach eine beliebige Kombination von URG, ACK, PSH, RST, SYN und FIN. So setzt z.B. --scanflags URGACKPSHRSTSYNFIN alle Flags, auch wenn das beim Scannen nicht besonders hilfreich ist. Die Reihenfolge, in der Sie diese Flags angeben, spielt keine Rolle.

Zusätzlich zu den gewünschten Flags können Sie einen TCP-Scan-Typen (z.B. -sA oder -sF) angeben. Dieser Basistyp sagt Nmap, wie es die Antworten interpretieren soll. Ein SYN-Scan z.B. betrachtet das Fehlen einer Antwort als einen Hinweis auf einen gefilterten Port, während ein FIN-Scan das als einen Hinweis auf einenoffen|gefilterten Port ansieht. Nmap verhält sich genauso wie beim Scan-Basistyp, nur mit dem Unterschied, dass es die von Ihnen angegebenen TCP-Flags benutzt. Ohne Angabe eines Basistyps wird ein SYN-Scan benutzt.

-sI <zombie host>[:<probeport>] (Idle-Scan)

Diese fortgechrittene Scan-Methode ermöglicht einen wirklich blinden TCP-Port-Scan des Ziels, d.h. es werden keine Pakete von Ihrer wahren IP-Adresse an das Ziel gesendet. Stattdessen wird mit einem Angriff auf einem parallelen Kanal eine vorhersagbare Erzeugung von Folgen von IP-Fragmentation-IDs auf dem Zombie-Host ausgebeutet, um an Information über offene Ports auf dem Ziel zu gelangen. IDS-Systeme zeigen als Urheber des Scans den Zombie-Rechner an, den Sie angeben (der aktiv sein und einige bestimmte Bedingungen erfüllen muss). Da dieser faszinierende Scan-Typ zu komplex ist, um ihn in diesem Handbuch vollständig zu beschreiben, habe ich einen Artikel mit vollständigen Details dazu geschrieben und unter https://nmap.org/book/idlescan.html veröffentlicht.

Dieser Scan-Typ ist nicht nur extrem unauffällig (wegen seiner Blindheit), sondern erlaubt auch, IP-basierte Vetrauensbeziehungen zwischen Rechnern festzustellen. Die Portliste zeigt offene Ports aus der Sicht des Zombie-Hosts an. Also können Sie versuchen, ein Ziel mit verschiedenen Zombies zu scannen, von denen Sie denken, dass sie vertrauenswürdig sind (über Router-/Paketfilterregeln).

Wenn Sie einen bestimmten Port auf dem Zombie auf IP-ID-Änderungen testen möchten, können Sie einen Doppelpunkt gefolgt von einer Portnummer an den Zombie-Host hinzufügen. Sonst benutzt Nmap den Port, den es standardmäßig bei TCP-Pings benutzt (80).

-sO (IP-Protokoll-Scan)

Der IP-Protokoll-Scan ermöglicht die Bestimmung der IP-Protokolle (TCP, ICMP, IGMP etc.), die von Zielrechnern unterstützt werden. Rein technisch ist das kein Port-Scan, da er über Nummern von IP-Protokollen statt TCP- oder UDP-Ports vorgeht. Dennoch benutzt er die Option -p für die Auswahl der zu scannenden Protokollnummern, gibt seine Ergebnisse im normalen Port-Tabellenformat aus und benutzt sogar dieselbe grundlegende Scan-Engine wie die echten Port-Scanning-Methoden. Damit ist er einem Port-Scan ähnlich genug, um an dieser Stelle beschrieben zu werden.

Abgesehen davon, dass er schon als solcher nützlich ist, zeigt der Protokoll-Scan die Macht von Open-Source-Software. Auch wenn die grundlegende Idee recht simpel ist, hatte ich nicht daran gedacht, ihn hinzuzufügen, und bekam auch keine Anfragen nach einer solchen Funktionalität. Dann, im Sommer 2000, hatte Gerhard Rieger die Idee, schrieb einen exzellenten Patch als Implementation und sendete ihn an die Mailingliste nmap-hackers. Diesen Patch habe ich in den Nmap-Baum aufgenommen und einen Tag später eine neue Version veröffentlicht. Es gibt nur wenig kommerzielle Software, deren Benutzer so enthusiastisch sind, dass sie eigene Verbesserungen dafür entwerfen und beitragen!

Der Protokoll-Scan funktioniert auf ähnliche Weise wie der UDP-Scan. Statt über das Portnummernfeld eines UDP-Pakets zu iterieren, sendet er IP-Paketheader und iteriert über das acht Bit große IP-Protokollfeld. Die Header sind normalerweise leer, enthalten keine Daten und nicht einmal den richtigen Header für das behauptete Protokoll. Die drei Ausnahmen davon sind TCP, UDP und ICMP. Für diese werden richtige Protokoll-Header verwendet, da manche Systeme sie sonst nicht versenden und weil Nmap bereits über die Funktionen verfügt, um sie zu erzeugen. Statt Nachrichten der Art ICMP Port unreachable sucht der Protokoll-Scan nach ICMP Protocol unreachable. Falls Nmap zu irgendeinem Protokoll eine Antwort vom Zielhost erhält, markiert es das Protokoll als offen. Bei einem ICMP Protocol-unreachable-Fehler (Typ 3, Code 2) wird das Protokoll als geschlossen markiert. Bei anderen ICMP Unreachable-Fehlern (Typ 3, Code 1, 3, 9, 10 oder 13) wird das Protokoll als gefiltert markiert (auch wenn sie gleichzeitig beweisen, dass ICMP offen ist). Falls nach einigen erneuten Übertragungen keine Antwort erhalten wird, wird das Protokoll als offen|gefiltert markiert.

-b <FTP relay host> (FTP-Bounce-Scan)

Eine interessante Eigenschaft des FTP-Protokolls (RFC 959) ist dessen Unterstützung sogenannter Proxy-FTP-Verbindungen. Damit kann sich ein Benutzer mit einem FTP-Server verbinden und dann verlangen, dass Dateien an einen Server einer dritten Partei gesendet werden. Solch eine Eigenschaft ist auf vielen Ebenen sturmreif für Missbrauch, weswegen die meisten Server sie nicht mehr unterstützen. Ein solcher Missbrauch, den diese Eigenschaft ermöglicht, ist, den FTP-Server für Port-Scans anderer Hosts zu benutzen. Bitten Sie den FTP-Server einfach, eine Datei nacheinander an alle interessanten Ports eines Zielhosts zu senden. Die Fehlermeldung wird beschreiben, ob der Port offen ist oder nicht. Das ist ein guter Weg, Firewalls zu umgehen, weil FTP-Server von Organisationen oft an Orten platziert sind, von denen aus sie besseren Zugriff auf weitere interne Hosts haben, als es jeder alte Internet-Host hätte. Nmap unterstützt den FTP-Bounce-Scan mit der Option -b. Sie erwartet ein Argument der Form <username>:<password>@<server>:<port>. Dabei ist <Server> der Name oder die IP-Adresse eines anfälligen FTP-Servers. Wie bei einer normalen URL können Sie <username>:<password> auch weglassen, wobei dann eine anonyme Anmeldung erfolgt (username: anonymous password:-wwwuser@). Die Portnummer (samt Doppelpunkt davor) können Sie ebenfalls weglassen, wobei dann auf <server> der Standard-FTP-Port (21) benutzt wird.

Als Nmap 1997 veröffentlicht wurde, war diese Schwachstelle weit verbreitet, wurde seitdem aber größtenteils behoben. Aber da es immer noch anfällige Server gibt, lohnt sich ein Versuch, falls alles andere versagt. Wenn Sie eine Firewall umgehen möchten, scannen Sie das Zielnetzwerk nach einem offenen Port 21 (oder sogar nach beliebigen FTP-Diensten, falls Sie alle Ports mit Versionserkennung scannen können), und probieren Sie dann für jeden einen Bounce-Scan aus. Nmap wird Ihnen sagen, ob der Host angreifbar ist oder nicht. Versuchen Sie lediglich, Ihre Spuren zu verwischen, dann brauchen Sie sich nicht (und tatsächlich sollten Sie das nicht einmal) auf Hosts im Zielnetzwerk zu beschränken. Bevor Sie anfangen, zufällige Internet-Adressen nach anfälligen FTP-Servern zu scannen, bedenken Sie, dass Sysadmins keinen Gefallen daran finden werden, dass Sie ihre Server auf diese Weise missbrauchen.