IPUSIRON氏著の「ハッキング・ラボの作り方 仮想環境におけるハッカー体験学習」を実践した記録です。
ホストOSはWindows 11です。
第2部
第4章 Windowsのハッキング
4-1 Windows 7のハッキング
Netcatでシェルの基本を習得する
Netcatを用いた「バックドア」の構築法です。
本稿では、KaliとWindows 7のネットワーク環境は以下の通りとします。IPアドレスは環境ごとに異なります。
Kali | Windows 7 | |
位置づけ | 攻撃側 | 被害者側 |
ネットワーク | ホストオンリー | ホストオンリー |
IPアドレス | 192.168.56.106 | 192.168.56.107 |
VirtualBox上で行うWindows 7のネットワーク環境設定の方法は、以下の記事を参照ください。
Windows 7環境でIPアドレスを調べる方法は、次の図のように、コマンドプロンプトから”ipconfig”コマンドを実行します。図ではIPアドレスが”192.168.56.107″であることが分かります。

KaliでIPアドレスを調べるには、下図のように”ip a”とコマンドを入力します。下では、ホストオンリーネットワークのアドレスが”192.168.56.106″、NAT側のアドレスが”10.0.2.15″です。

Netcatをインストールしよう
それではNetcatをWindows 7にインストールします。
ここでは「Sysinternals Suite」をインストールした時のように、いったんインターネットに接続できるWindows 11にダウンロードし、Windows 7にドラッグ&ドロップでファイルを転送します。
まず、ホストOSでこのリンクからNetcatをダウンロードします。
もし上記のリンクからダウンロードできなかった場合は、こちらのURLからダウンロードします。
下のページに移動し、”Download nc111nt.zip (password:nc) – Netcat for Windows”のリンクをクリックしてダウンロードを開始します。リンクの「nc111nt.zip」の部分はファイル名ですが、将来変更されると考えられます。またZIPファイルを解凍するときのパスワードが「nc」であることがわかります。

ダウンロードが完了したら、ホストPC(Windows 11)からWindows 7のデスクトップに「nc111nt.zip」をドラッグ&ドロップします。
Windows 7のデスクトップに「nc111nt.zip」ファイルが転送されます。「nc111nt.zip」ファイルをマウスで右クリックし、メニューを表示させ、[Extract All]を選択してZIPファイルを解凍します。

パスワードは「nc」です。

解凍が終わるとデスクトップにフォルダが作成され、その中にソースコードや実行ファイルが格納されています。

ここで、”C:\Work”というフォルダを作成し、その下に解凍済みのフォルダを移動します。
まず、エクスプローラでCドライブ直下に移動します。
①[New folder]でフォルダを作成し、
②「Work」という名称に変更します。

「Work」フォルダの中に移動し、デスクトップの「nc111nt」フォルダをドラッグ&ドロップで「Work」フォルダに移動させます。

Windows 7からコマンドプロンプトを起動し、”cd “と入力しておきます。cdの後ろに空白を入れておきます。
次に、エクスプローラで「nc111nt」フォルダをドラッグし、コマンドプロンプトにドロップします。するとcdコマンドの後に「nc111nt」のフルパスが補完されます(下図①)。
Enterキーを押します。すると、コマンドプロンプト上で、「nc111nt」フォルダの中に移動できます(②)。
上記フォルダの中にはNetcatの実行ファイル(コマンド名:nc.exe)があります。

コマンドプロンプトでNetcatを実行してみます。
“nc -h”と入力して[Enter]キーを押すと、下のようにncコマンド(Netcat)のバージョンと使い方(ヘルプ)が表示されます。
C:\Work\nc111nt>nc -h [v1.11 NT www.vulnwatch.org/netcat/] connect to somewhere: nc [-options] hostname port[s] [ports] ... listen for inbound: nc -l -p port [options] [hostname] [port] options: -d detach from console, background mode -e prog inbound program to exec [dangerous!!] -g gateway source-routing hop point[s], up to 8 <以下省略>
Windows 7側でKaliからの接続を待ち受ける
IPアドレスは家に例えると、その家の住所のようなものです。そして家の出入り口にあたるものを「ポート」と呼びます。ポートは番号で区別します。
ここでncコマンドを実行し、ポート5555を使って、Kaliからの接続をWindows 7で待ち受けてみます。
nc -lvp 5555
下図のように「Windows Security Alert」画面が表示されたら、[Allow access]をクリックします。コマンドプロンプトでは、ncコマンドが実行されたままの、次のプロンプトが表示されない状態になります。これで、家の入口で来客が来たらすぐ出迎えることができる状態になりました。つまり、ncコマンドが、Kaliからの接続を待ち受けている状態です。

もう一つ別のコマンドプロンプトを起動し、以下のコマンドを実行します。
netstat -an
実行結果は以下のようになります。
少しわかりにくいですが、ncコマンドがポート番号5555で、誰かが接続してくるのを待ち受け状態(LISTENING)になっていることを表しています。

NetcatでKaliからWindowsに接続する
Windows 7で待ち受け状態を作ったところで、KaliからWindows 7に接続を試みます。
KaliでTerminalを起動し、以下の通り実行します。
nc 192.168.56.107 5555
次にWindows 7側のncを起動したコマンドプロンプトを見ます。
図のように、表示が追加されるでしょう。一見、エラーのように見えますが、かまわず次に進みます。

Windows 7のもう一つのコマンドプロンプトから、再度netstatコマンドを実行します。
netstat -an
すると、Windows 7のポート5555(192.168.56.107:5555)を使用して、Kali(192.168.56.106)と通信中(ESTABLISHED)であるということが出力結果からわかります。

チャットライクな通信をしてみよう
Kali側のncコマンドを実行中のTerminalに”This is Kari.”と入力して[Enter]を押します。
下図の”$”はプロンプトです。
$ nc 192.168.56.107 5555 This is Kari.
次にWindows 7側のncコマンドを起動中のコマンドプロンプトを見てください。
“This is Kari.”と、Kaliからのメッセージが表示されているでしょうか。
C:\Work\nc111nt>nc -lvp 5555 listening on [any] 5555 ... 192.168.56.106: inverse host lookup failed: h_errno 11004: NO_DATA connect to [192.168.56.107] from (UNKNOWN) [192.168.56.106] 48166: NO_DAT This is Kari.
今度はWindows側のコマンドプロンプトから、”This is 7.”と入力してメッセージを送ってみます。
C:\Work\nc111nt>nc -lvp 5555 listening on [any] 5555 ... 192.168.56.106: inverse host lookup failed: h_errno 11004: NO_DATA connect to [192.168.56.107] from (UNKNOWN) [192.168.56.106] 48166: NO_DATA This is Kari. This is 7.
KariのTerminalにWindowsからのメッセージが表示されます。
$ nc 192.168.56.107 5555 This is Kari. This is 7.
ncコマンドを終了するには、Kali側のTerminalで[Ctrl]+[C](同時に押す)を入力します。Windows側のncコマンドも同時に終了します。
さいごに
今回はNetcatによるメッセージ交換を紹介しました。
次回は、Netcatを応用してターゲット端末を操る(遠隔操作する)方法を紹介します。