Switches und Scan Types in Nmap
Nmap ist wahrscheinlich das bekannteste Aufklärungswerkzeug unter Pentestern und Hackern. Es ist im Wesentlichen ein Portscanner, der Ihnen hilft, Netzwerke zu scannen und verschiedene Ports und Dienste im Netzwerk zu identifizieren, neben weiteren Informationen über Ziele, einschließlich reverse DNS-Namen, Betriebssystemvermutungen, Gerätetypen und MAC-Adressen. Es ist auch während der Netzwerküberprüfung nützlich!
Die grundlegende Syntax von Nmap ist:
$ nmap [FLAGS] [IP]
Beachten Sie, dass Sie es manchmal auch mit sudo-Berechtigungen ausführen müssen, um bestimmte Arten von Scans durchzuführen,
Switches in Nmap
Nmap ist ein starkes und leistungsfähiges Netzwerk-Scanning-Tool, das es uns ermöglicht, unsere Scans mit Hilfe von Flags anzupassen, die über die Befehlszeile übergeben werden. Einige der wichtigen Flags sind:
- -h: Druckt eine Hilfeszusammenfassung
- -sS: Führt einen TCP SYN-Scan durch
- -sU: Führt einen UDP-Scan durch
- -sV: Untersucht offene Ports, um Dienst-/Versionsinformationen zu bestimmen
- -O: Ermöglicht die Erkennung des Betriebssystems
- -v: Aktiviert die Ausführlichkeit. Sie können sogar den Grad der Ausführlichkeit festlegen:
- -vv: Stufe 2 der Ausführlichkeit. Die minimale Stufe der Ausführlichkeit, die zur Verwendung empfohlen wird.
- -v3: Stufe 3 der Ausführlichkeit. Sie können immer den Grad der Ausführlichkeit angeben, indem Sie eine Zahl wie diese spezifizieren.
- -oA: Gleiche Nmap-Ausgabe in „normalen“, XML- und durchsuchbaren Formaten. Sie können jedoch das Format Ihrer Wahl angeben mit:
- -oN: Leitet normale Ausgabe in eine angegebene Datei um
- -oX: Erstellt eine Ausgabe im sauberen XML-Format und speichert sie in einer angegebenen Datei
- -oG: Erstellt eine „durchsuchbare“ Ausgabe und speichert sie in einer Datei. Veraltetes Format, da Benutzer nun zu XML-Ausgaben wechseln.
- -A: Aktiviert das „aggressive“ Scannen. Derzeit aktiviert dies die Erkennung des Betriebssystems (-O), Versionsscannen (-sV), Skriptscannen (-sC) und Traceroute (–traceroute)
- -p: Spezifiziert die zu scannenden Ports. Es kann ein einzelner Port sowie ein Bereich von Ports sein. Zum Beispiel:
nmap -p 80 127.0.0.0.1: Dies scannt Port 80 auf localhost
nmap -p 1-100 127.0.0.1: Dies scannt Ports von 1 bis 100 auf localhost
nmap -p- 127.0.0.1: Dies scannt alle Ports auf dem localhost
Scan Types in Nmap
Nmap unterstützt viele verschiedene Scan-Arten. Die beliebtesten sind jedoch:
1. TCP Connect Scans (-sT) – Scan Types in Nmap
Bei dieser Art von Scan sendet Nmap ein TCP-Paket an einen Port mit gesetztem SYN-Flag. In diesem Szenario können zwei Dinge geschehen:
- Das Ziel antwortet mit einem RST-Paket, was bedeutet, dass der Port geschlossen ist.
- Das Ziel antwortet überhaupt nicht, wahrscheinlich aufgrund einer Firewall, die alle eingehenden Pakete blockiert, in welchem Fall der Port als gefiltert betrachtet wird
- Das Ziel antwortet zurück mit einem TCP-Paket mit gesetzten SYN/ACK-Flags, was bedeuten würde, dass der Port offen ist, und dann würde Nmap mit einem TCP-Paket mit gesetztem ACK-Flag antworten und somit den TCP-Dreifach-Handshake vervollständigen.
Dies ist keine sehr zuverlässige Scan-Technik, da es einfach ist, eine Firewall-Regel zu konfigurieren, um mit RST-Paketen zu antworten oder alle eingehenden Pakete zu blockieren. Außerdem ist diese Methode extrem langsam, da sie auf den gesamten TCP-Dreifach-Handshake wartet.
2. SYN „Half-open“ Scans (-sS) – Scan Types in Nmap
SYN-Scans, auch bekannt als „Half-Open“ oder „Stealth Scan“, sind eine Verbesserung der vorherigen Methode. In der vorherigen Methode, in der wir ein TCP-Paket mit gesetztem ACK-Flag zurückgesendet haben, nachdem wir ein SYN/ACK-Paket erhalten haben, würden wir jetzt ein RST-Paket senden. Dies verhindert, dass der Server wiederholt versucht, die Anfragen zu stellen, und reduziert massiv die Scanzeiten.
3. UDP Scans (-sU) – Scan Types in Nmap
UDP-Scans sind viel weniger zuverlässig als die vorherigen zwei, da UDP-Verbindungen von Natur aus zustandslos sind. Dies bedeutet, dass es keinen „Feedback-Mechanismus“ wie TCP gibt. UDP arbeitet nach dem Prinzip „Fire and Forget“, was bedeutet, dass es Pakete an bestimmte Ports der Ziele sendet und hofft, dass sie ankommen. Dies legt mehr Wert auf Geschwindigkeit als auf Qualität. Jedoch macht das Fehlen eines Feedback-Mechanismus es schwierig, offene Ports zu identifizieren.
Spezielle Scans in Nmap
Abgesehen davon gibt es einige weniger beliebte Scan-Arten, die noch „stealthier“ sind als ein TCP SYN-Scan. Dazu gehören:
1. TCP Null Scans (-sN)
Bei TCP Null Scans haben die gesendeten TCP-Pakete keine der Flags gesetzt. Laut RFC sollte das Ziel in einem solchen Fall mit einem RST antworten, wenn der Port geschlossen ist
2. TCP FIN Scans (-sF)
Dies ist sehr ähnlich dem TCP Null Scan, außer dass statt eines komplett leeren TCP-Pakets ein Paket mit gesetztem FIN-Flag gesendet wird, das verwendet wird, um eine Verbindung anmutig zu schließen. Dementsprechend muss das Ziel mit einem RST für geschlossene Ports antworten, wie per RFC vorgeschrieben.
3. TCP Xmas Scans (-sX)
TCP Xmas Scans ist ebenfalls sehr ähnlich den letzten beiden Scan-Techniken, außer dass sie TCP-Pakete mit gesetzten PSH, URG und FIN-Flags verwenden. Wie bei den letzten beiden Scan-Arten, erwartet auch dieser RST-Pakete für geschlossene Ports unter RFC.
Einschränkungen
Da diese Scans ähnlicher Natur sind, haben sie auch ähnliche Outputs, die sehr ähnlich denen von UDP-Scans sind. In diesem Fall können wir nur die folgenden drei Antworten haben:
- open|filtered: Wenn keine Antwort erhalten wird, wird der Port als dies kategorisiert, weil keine Antwort nur zwei Dinge bedeuten kann: Der Port ist offen Der Port ist hinter einer Firewall geschützt, daher gefiltert
- filtered: Wenn der Port hinter einer Firewall geschützt ist, die ein ICMP-Ping zurücksendet
- closed: Wenn es ein RST-Paket erhält
Es ist auch zu beachten, dass obwohl RFC 793 vorschreibt, dass Netzwerkhosts auf fehlerhafte Pakete mit einem RST TCP-Paket für geschlossene Ports antworten und überhaupt nicht für offene Ports reagieren, einige Systeme diese Konvention ablehnen. Dieses Verhalten wird meist bei Microsoft Windows Servern und einigen CISCO-Geräten beobachtet, wo alle fehlerhaften Pakete standardmäßig verworfen werden.
Ein Netzwerk nach Hosts mit Nmap scannen
Eine der wichtigsten Aufgaben beim Verbinden mit einem Netzwerk ist es, eine Liste aller aktiven Hosts im Netzwerk zu erhalten, bevor weitere Untersuchungen durchgeführt werden. Dies kann über einen „Ping Sweep“ erfolgen, was, wie der Name schon sagt, das Senden von ICMP-Paketen an alle IPs im Netzwerk und das Warten auf Antworten beinhaltet. Die Hosts, die mit einem ICMP-Paket antworten, gelten in diesem Fall als aktiv.
Sie können Ihre Ziel-IP-Bereiche mit Bindestrichen oder über CIDR wie folgt angeben:
$ nmap -sn 192.168.0.1-254
oder
$ nmap -sn 192.168.0.0/24
Das -sn-Flag unterdrückt jegliche Portscans und zwingt nmap dazu, sich ausschließlich auf ICMP-Echo-Pakete (oder ARP-Anfragen, wenn mit Superuser-Berechtigungen ausgeführt) zu verlassen, um aktive Hosts im Netzwerk zu identifizieren. Es sendet auch ein TCP-SYN-Paket an den Port 443 des Ziels und eine TCP-ACK-Anfrage (TCP-SYN, wenn mit Superuser-Berechtigungen ausgeführt) an den Port 80 des Ziels.
Nmap Scripting Engine
Die Nmap Scripting Engine (NSE) ist eine leistungsstarke Ergänzung zu Nmap, die es uns ermöglicht, seine Funktionalität noch weiter auszubauen. Geschrieben in Lua, können wir sie nutzen, um unsere Skripte zu schreiben und viele unserer Arbeiten wie das Testen auf Schwachstellen und Exploitation zu automatisieren.
Es gibt viele verfügbare Kategorien. Einige nützliche Kategorien sind:
- safe: Wird das Ziel nicht beeinflussen
- intrusive: Nicht sicher: Könnte das Ziel wahrscheinlich beeinflussen
- vuln: Nach Schwachstellen scannen
- exploit: Versuchen, eine Schwachstelle auszunutzen
- auth: Versuchen, die Authentifizierung für laufende Dienste zu umgehen
- brute: Versuchen, Zugangsdaten für laufende Dienste zu erzwingen
- discovery: Versuchen, laufende Dienste abzufragen, um weitere Informationen über das Netzwerk zu erhalten
Um ein Skript auszuführen, müssen wir es als –script= angeben
Sie können auch mehrere Skripte gleichzeitig ausführen, indem Sie die Skriptnamen wie folgt trennen: –script=,
Einige Skripte erfordern auch ein Argument, das mit –script-args angegeben werden kann
Einige Skripte verfügen über integrierte Hilfemenüs, die mit abgerufen werden können:
$ nmap --script-help
Schlussfolgerung
Nmap verfügt über eine Menge kostenloser und gut ausgearbeiteter Dokumentation. Sie können viele Informationen über die Flags, Skripte und vieles mehr auf ihrer offiziellen Website finden. Sie können mit den verschiedenen Flags und Skripten experimentieren und sehen, wie sich ihre Ausgaben unter verschiedenen Umgebungen unterscheiden.