Tags: Malware, Netzwerk, Monitoring
Wenn Ihr Server Verbindungen zu einem unbekannten Host aufbaut, dann könnte dies ein Zeichen dafür sein, dass er kompromittiert wurde. Mit Hilfe von tcpdump und WinDump können Sie ausgehende TCP-Pakete unter Linux und Windows aufzeichnen und erkennen, welche Programme suspekte Adressen kontaktieren.
Tcpdump ist unter Linux häufig bereits installiert. Falls nicht, können Sie das unter Ubuntu mit den folgenden Befehlen nachholen:
sudo apt update
sudo apt install tcpdump
Wenn Sie mit einer anderen Linux-Distribution arbeiten, müssen Sie die entsprechenden Installationsbefehle verwenden.
Unter Windows können Sie mit dem kostenlosen Tool WinDump arbeiten. Bevor Sie WinDump verwenden können, müssen Sie WinPcap installieren. Sie können beide Tools hier herunterladen. Sobald WinPcap installiert ist, können Sie WinDump in einen Ordner Ihrer Wahl entpacken. Eine Installation ist nicht erforderlich.
Ausgehende Verbindungen
Wenn Sie Grund zur Annahme haben, dass Hacker Malware auf Ihrem Server installiert haben, dann sollten Sie überprüfen, ob sie Verbindungen zu ihren Gebietern aufbaut. Dabei ist zu unterscheiden zwischen ausgehendem Verkehr im Allgemeinen und solchem, der von Ihrem Host initiiert wird.
Unter Linux können Sie tcpdump verwenden, um alle ausgehenden Verbindungen mit diesem Befehl anzuzeigen:
tcpdump -i any src host 10.0.0.1
10.0.0.1 ist hier die IP-Adresse Ihres Hosts. Der Parameter -i bestimmt die Netzwerkschnittstelle, auf der tcpdump lauscht. Wenn Sie nicht auf allen Interfaces horchen wollen, dann können Sie statt any die Schnittstellen des Servers mit dem Befehl ifconfig ermitteln und diese angeben.
Der dazu entsprechende WinDump-Befehl sieht so aus:
windump src host 10.0.0.1
WinDump lauscht automatisch auf allen Schnittstellen, so dass wir den Parameter -i hier nicht benötigen. Wenn Sie nur ein bestimmtes Interface abhören wollen, können Sie den Befehl
windump -D
verwenden, um alle installierten Netzwerkadapter aufzulisten.
Nur vom Host initiierte ausgehende Verbindungen erfassen
Der größte Teil des ausgehenden Datenverkehrs besteht in Antworten Ihres Servers auf Anfragen von Clients. Falls viele externe Geräte Verbindungen von zu Ihrem Server aufbauen, wird Sie die Menge der angezeigten Verbindungen überwältigen.
Wenn Hacker bösartige Software auf Ihrem Server installieren, dann ist es wahrscheinlich, dass diese Malware versucht, mit ihrem Master zu kommunizieren. Sie wird also dafür eine Verbindung zu einer externen IP-Adresse initiieren.
Um ausgehende TCP-Pakete abzufangen, die von Ihrem Server ausgehen, müssen Sie das Drei-Wege-Handshake-Konzept des TCP-Protokolls verstehen. Immer wenn ein Client versucht, eine TCP-Verbindung aufzubauen, setzt er das SYN-Flag. Der Server antwortet daraufhin mit einem SYN/ACK-Paket, und am Ende des Drei-Wege-Handshakes antwortet der Client mit einem ACK-Paket.
Um also nur TCP-Pakete zu erfassen, die auf unserem Rechner initiiert werden, weisen wir tcpdump an, nur solche Pakete anzuzeigen, bei denen das SYN-Flag gesetzt ist. Wir müssen dabei aber auch Pakete ausschließen, bei denen das ACK-Flag gesetzt ist, da wir sonst auch die Antworten des externen Hosts erhalten:
tcpdump -i any src host 10.0.0.1 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0"
Beachten Sie, dass die Syntax von tcpdump so etwas wie "(tcp-syn) == 1" nicht zulässt und dass Sie "&" nicht durch "and" ersetzen können (und umgekehrt).
Dies ist der entsprechende WinDump-Befehl unter Windows:
windump src host 192.168.178.29 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0"
Erkennen von Malware-Verbindungen
Geraten Sie nicht in Panik, wenn Verbindungen zu unbekannten Hosts angezeigt werden. Insbesondere auf einem Windows-System werden Sie höchstwahrscheinlich viele davon sehen, da Windows sehr gerne "nach Hause telefoniert". Microsoft nennt dies Telemetrie, andere würden es als Sammeln privater Daten bezeichnen.
Um zu überprüfen, ob Ihr System kompromittiert wurde, müssen Sie den whois-Dienst für jede unbekannte IP-Adresse konsultieren, um den Eigentümer zu ermitteln.
Ausführbare Datei auffinden
Wenn Sie wissen wollen, welches Programm die Verbindung zu einer bestimmten IP-Adresse hergestellt hat, können Sie den Befehl netstat mit dem Parameter -p verwenden. Der Parameter -n dient dazu, nur numerische Werte anzuzeigen, und -c, um die Verbindungen kontinuierlich jede Sekunde erneut zu prüfen:
netstat -pnc
Wenn Sie die Ausgabe an grep weiterleiten, können Sie die Ausgabe auf die verdächtige IP-Adresse beschränken. Dies ist der Befehl für Linux:
netstat -pnc | grep 8.8.8.8
Unter Windows müssen wir den Parameter -b anstelle von -p verwenden. Um Verbindungen kontinuierlich anzuzeigen, gibt man das Zeitintervall an, in dem netstat den Befehl wiederholt. Im folgenden Beispiel beträgt dieses 1. Statt grep verwenden wir unter Windows findstr:
netstat -b 1 | findstr 8.8.8.8
Protokollierung von tcpdump- und WinDump-Verbindungen
Da die Malware auf Ihrem Server möglicherweise nur zu bestimmten Zeiten ihren Gebieter kontaktiert, empfiehlt es sich, die von Ihrem Server initiierten Verbindungen zu protokollieren. Zu diesem Zweck leiten wir die Ausgabe mit ">" um:
tcpdump -i any src host 10.0.0.1 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0" &> outbound.log &
In der Bash-Shell sorgt das "&" am Ende des Befehls dafür, dass tcpdump im Hintergrund läuft und die Protokollierung auch nach Beendigung der Sitzung weiterläuft.
Dies ist der entsprechende Befehl für Windows:
start /B windump src host 10.0.0.1 and "tcp[tcpflags] & (tcp-syn) != 0" and "tcp[tcpflags] & (tcp-ack) == 0" > outbound.log
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links