敵対的思考を支援するWindows ディストリビューション - Commando VM

# Commando VMとは
「**Commando VM**（[Complete Mandiant Offensive VM](https://github.com/fireeye/commando-vm)）」とは、ペネトレーション・テストやレッドチームの担当者をサポートすることに焦点を当てたWindows OSディストリビューションです。
サイバーセキュリティ企業の[FireEye（ファイア・アイ）](https://www.fireeye.jp/)が立ち上げたプロジェクトです。

![Commando.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/e0676791-65d3-6e74-5d23-33ca90e9c930.png)

ペネトレーションテストに特化したディストリビューションとして、[Kali Linux](https://www.kali.org/)や[Parrot Security Linux](https://parrotlinux.org/)が人気です。これらは、いずれもLinux OSをベースとしたディストリビューションです。
これに対して、[Command VM](https://github.com/fireeye/commando-vm)は、Windows OSをベースとしたディストリビューションです。
このため、Windows OSおよびActive Directoryをネイティブサポートし、ファイル共有をより簡単に（かつインタラクティブに）実現。標的クライアントの資産上にアウトプットファイルを残すことなく、ツールを使用することができるといった特徴があげられます。

>FireEye社の日本語ブログでは、「Commando VM」の概要に関する[記事](https://www.fireeye.com/blog/jp-threat-research/2019/03/commando-vm-windows-offensive-distribution.html)が公開されています。技術詳細を含むブログ全文は[英語サイト](https://www.fireeye.com/blog/threat-research/2019/03/commando-vm-windows-offensive-distribution.html#par_entry)にて公開されています。

本稿では、Commando VMのインストール手順について紹介します。

# Commando VM システム要件
- Windows 7 Service Pack 1 または Windows 10
- 60 GBのハードドライブ
- 2 GB RAM

## 推奨
- Windows 10
- 80 GB以上のハードドライブ
- 4 GB以上のRAM
- 2つのネットワークアダプター
- VMの仮想化サポートを有効にする（Kali または Dockerの利用に必要）

> Commando VMは、仮想マシンで使用することが推奨されています。これにより、展開が容易になり、各エンゲージメントの前にクリーンな状態に戻すことができます。

# 仮想化サポートの有効化
Commando VMでは、「Windows Subsystem for Linux（WSL）」に「**Kali Linux**」をインストールします。また、「**Docker for Windows**」をインストールします。
これらソフトウェアは、仮想環境で動作します。このため、仮想マシン（VMware Fusion仮想マシン）上でさらにネストし仮想環境を動かすこと（Nested Virtualization）になります。
Nested Virtualizationのためには、仮想マシンの設定を変更し、「**Intel VT-x**」という仮想化ハードウェア拡張を有効にする必要があります。その設定方法は次のとおりです。

- VMware Fusion 「[プロセッサ オプションの詳細設定](https://docs.vmware.com/jp/VMware-Fusion/11/com.vmware.fusion.using.doc/GUID-38178690-1234-4843-B135-4063F9AA73E4.html)」

1. [ウィンドウ] > [仮想マシンのライブラリ] を選択します。
2. [仮想マシンのライブラリ] ウィンドウで仮想マシンを選択し、[設定] をクリックします。
3. [設定] ウィンドウの [システム設定] で、[プロセッサとメモリ] をクリックします。
   <img width="640" alt="スクリーンショット 2020-03-11 21.40.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/f1756d06-4dc8-a446-c253-c01dc1580fa5.png">
4. クリックして [詳細オプション] を展開し、[この仮想マシンでハイパーバイザー アプリケーションを有効にする]チェックボックスをチェックします。
   <img width="640" alt="スクリーンショット 2020-03-11 21.50.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/feae5c7f-0c22-fe33-9f5e-96693fcf7153.png">

# インストール手順
1. VMware上に、新規 **Windows 10 November 2019 Update** の仮想マシンを作成して構成します。
    ![Winver.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/d7e65f9b-8d44-0352-e266-95a12d49cafb.png)
Commando VMのインストール前に「[Windows 10 のディスク クリーンアップ](https://support.microsoft.com/ja-jp/help/4026616/windows-10-disk-cleanup)」を実施しておくことをオススメします。

2. `VMware Tools`をインストールします。この時点で、**仮想マシンのスナップショットを取得**しておくことをオススメします。
3. あらためて、ディスクに十分な空き容量があることを確認します。容量不足の場合には、仮想ディスクの拡張を検討します。
    ![disk.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/c76a8540-b710-672f-a4c0-1dec647bff34.png)
    - SOFTANTENNA BLOG 「[【Tips】Windows 10の仮想ディスクを拡張する方法](https://www.softantenna.com/wp/tips/windows-10-vm-extend-system-drive/)」
    - SOFTANTENNA BLOG 「[【Tips】Windows 10の回復パーティションを削除する方法](https://www.softantenna.com/wp/tips/windows-10-remove-recovery-partition/)」
4. 次のURLに移動し、圧縮された`Commando VM`リポジトリを`commando-vm-master.zip`ファイルとして仮想マシン上にダウンロードします。
https://github.com/fireeye/commando-vm
    <img width="1023" alt="スクリーンショット 2020-03-12 1.44.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/892d2dae-58af-f58b-fe29-e72dd5dc69eb.png">

5. 以下の手順に従って、Commando VMのインストールを完了します。
    1. `Commando VM`リポジトリ（`commando-vm-master.zip`）をディレクトリ（ここでは、`c:¥`）に展開します。 
    2. 管理者特権で`PowerShell`の新しいセッションを開始します。Commando VMは追加のソフトウェアをインストールし、システム設定を変更しようとします。したがって、インストールには昇格された特権が必要です。
    ![powershell.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/00c79e1e-ca31-e7ed-ffba-49dba1c242f1.png)
    3. PowerShell内で、Commando VMリポジトリを展開した場所にディレクトリ（ここでは、`c:¥commando-vm-master`）を変更します。
    4. 次のコマンドを実行し、PowerShellのプロンプトが表示されたら「Y」と応答して、PowerShellの実行ポリシーを無制限に変更します。
        - `Set-ExecutionPolicy unrestricted`
    5. 最後に、次のようにインストーラースクリプトを実行します。
        - `.\install.ps1`
        - 引数としてパスワードを渡すこともできます： `.\install.ps1 -password <password>`
      ![commandoVM_install.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/3243bff4-723e-73e6-39d6-b2d3a1a7b164.png)

    6. インストールを進行させるため、次の設問に`N`を選択します。
        - `[-] Do you need to change this setting? Y/N N`
        - `[-] Do you need to take a snapshot before continuing? Y/N N`
    7. 残りのインストールプロセスは完全に自動化されています。ソフトウェアのインストール要件が多数あるため、仮想マシンは複数回再起動します。インストールが完了すると、PowerShellプロンプトは開いたままになり、終了する前にキーを押すまで待機します。
      ![install.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/1d095c30-3390-8062-c581-e8ceeff1232d.png)
      ![desktop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/213438aa-e2ab-3073-67a5-ef9eda133725.png)

    8. 再起動後に、次のデスクトップ環境が表示されます。
      ![CommandoVM_Desktop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/03171946-d0dc-1a32-c5ef-5aad7b4cc25e.png)

一連のスクリプトは「**[Boxstarter](https://boxstarter.org/)**」、「**[Chocolatey](https://chocolatey.org/)**（チョコレティ）」パッケージマネージャー、および「**[MyGet](https://www.myget.org/)**」を使用して環境をセットアップし、Commando VM環境のダウンロードとインストールを行います。

# 拡張されたコンテキストメニュー
Commando VMインストール後、`コンテキストメニュー`（右クリックメニュー）は、次のとおり拡張されています。
<img width="272" alt="スクリーンショット 2020-03-11 15.44.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/96439e8b-0e3d-9ac4-a764-9bb734aa8096.png">

# 最新の状態に保つ
次のコマンドを入力して、すべてのパッケージを最新バージョンに更新します。

```
cup all
```

# 新しいパッケージをインストールする
Commando VMはChocolatey Windowsパッケージマネージャーを使用します。新しいパッケージを簡単にインストールできます。たとえば、システムにGithubデスクトップを展開するには、管理者として次のコマンドを入力します。

```
cinst github
```

# インストール済みツール
<img width="605" alt="スクリーンショット 2020-03-11 15.47.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/77ba0a6c-9f75-071d-5d41-d70e12722564.png">

## Active Directory Tools
- Remote Server Administration Tools (RSAT): ＠IT「[Windows 10にリモートサーバー管理ツール（RSAT）をインストールしてWindows Serverを管理する](https://www.atmarkit.co.jp/ait/articles/1510/19/news023.html)」
- SQL Server Command Line Utilities: Microsoft「[sqlcmd ユーティリティ](https://docs.microsoft.com/ja-jp/sql/tools/sqlcmd-utility?view=sql-server-ver15)」
- Windows Sysinternals: ＠IT「[Windows 10とWindows Sysinternalsのいま](https://www.atmarkit.co.jp/ait/articles/1603/28/news029.html)」

## Command & Control
- [Covenant](https://github.com/cobbr/Covenant): .NETベースのC2フレームワーク。直感的でリッチなWebベースのUIが提供されている。
- [PoshC2](https://github.com/nettitude/PoshC2): PowerShellベースのC2フレームワーク。LAC「[オープンソースのツール「PoshC2」を悪用した新たな標的型攻撃を確認](https://www.lac.co.jp/lacwatch/people/20190213_001770.html)」
- [WMImplant](https://github.com/FortyNorthSecurity/WMImplant): PowerShellベースのWMIによるC2フレームワーク。FireEye「[WMImplant – A WMI Based Agentless Post-Exploitation RAT Developed in PowerShell](https://www.fireeye.com/blog/threat-research/2017/03/wmimplant_a_wmi_ba.html)」
- [WMIOps](https://github.com/FortyNorthSecurity/WMIOps): ネットワーク全体でWMIを使用し、さまざまなアクションを実行できるようにするPowerShellスクリプト。CHRISTOPHER TRUNCER'S WEBSITE「[Introducing WMIOps](https://www.christophertruncer.com/introducing-wmi-ops/)」|

## Developer Tools
- Dep
- Git
- Go
- Java
- Python 2
- Python 3 (default)
- Ruby
- Ruby Devkit
- Visual Studio 2017 Build Tools (Windows 10)
- Visual Studio Code

## Docker
- [OWASP Amass](https://hub.docker.com/r/grugnog/amass): パブリックデータからの情報収集と偵察技術を使用して、DNS列挙、資産の発見を可能にするツール。GitHub「[OWASP Amass - Users' Guide](https://github.com/OWASP/Amass/blob/master/doc/user_guide.md)」
- [SpiderFoot](https://www.spiderfoot.net/): パブリックデータを自動的に巡回し、IPアドレス、ドメイン名、電子メールアドレス、名前などに関するインテリジェンスを収集する偵察ツール。SpiderFoot「[SpiderFoot Documentation](https://www.spiderfoot.net/documentation/)」

## Evasion
- CheckPlease
- Demiguise
- DefenderCheck
- DotNetToJScript
- Invoke-CradleCrafter
- Invoke-DOSfuscation
- Invoke-Obfuscation
- Invoke-Phant0m
- Not PowerShell (nps)
- PS>Attack
- PSAmsi
- Pafishmacro
- PowerLessShell
- PowerShdll
- StarFighters

## Exploitation
- ADAPE-Script
- API Monitor
- CrackMapExec
- CrackMapExecWin
- DAMP
- EvilClippy
- Exchange-AD-Privesc
- FuzzySec's PowerShell-Suite
- FuzzySec's Sharp-Suite
- Generate-Macro
- GhostPack
    - Rubeus
    - SafetyKatz
    - Seatbelt
    - SharpDPAPI
    - SharpDump
    - SharpRoast
    - SharpUp
    - SharpWMI
- GoFetch
- Impacket
- Invoke-ACLPwn
- Invoke-DCOM
- Invoke-PSImage
- Invoke-PowerThIEf
- Kali Binaries for Windows
- LuckyStrike
- MetaTwin
- Metasploit
- Mr. Unikod3r's RedTeamPowershellScripts
- NetshHelperBeacon
- Nishang
- Orca
- PSReflect
- PowerLurk
- PowerPriv
- PowerSploit
- PowerUpSQL
- PrivExchange
- RottenPotatoNG
- Ruler
- SharpClipHistory
- SharpExchangePriv
- SpoolSample
- SharpSploit
- UACME
- impacket-examples-windows
- vssown
- Vulcan

## Information Gathering
- ADACLScanner
- ADExplorer
- ADOffline
- ADRecon
- BloodHound
- dnsrecon
- FOCA
- Get-ReconInfo
- GoBuster
- GoWitness
- NetRipper
- Nmap
- PowerView
    - Dev branch included
- SharpHound
- SharpView
- SpoolerScanner
- Watson

## Kali Linux
- kali-linux-default
- kali-linux-xfce
- VcXsrv

## Networking Tools
- Citrix Receiver
- OpenVPN
- Proxycap
- PuTTY
- Telnet
- VMWare Horizon Client
- VMWare vSphere Client
- VNC-Viewer
- WinSCP
- Windump
- Wireshark

## Password Attacks
- ASREPRoast
- CredNinja
- DomainPasswordSpray
- DSInternals
- Get-LAPSPasswords
- Hashcat
- Internal-Monologue
- Inveigh
- Invoke-TheHash
- KeeFarce
- KeeThief
- LAPSToolkit
- MailSniper
- Mimikatz
- Mimikittenz
- RiskySPN
- SessionGopher

## Reverse Engineering
- DNSpy
- Flare-Floss
- ILSpy
- PEview
- Windbg
- x64dbg

## Utilities
- 7zip
- Adobe Reader
- AutoIT
- Cmder
- CyberChef
- Explorer Suite
- Gimp
- Greenshot
- Hashcheck
- Hexchat
- HxD
- Keepass
- MobaXterm
- Mozilla Thunderbird
- Neo4j Community Edition
- Notepad++
- Pidgin
- Process Hacker 2
- SQLite DB Browser
- Screentogif
- Shellcode Launcher
- Sublime Text 3
- TortoiseSVN
- VLC Media Player
- Winrar
- yEd Graph Tool

## Vulnerability Analysis
- AD Control Paths
- Egress-Assess
- Grouper2
- NtdsAudit
- PwndPasswordsNTLM
- zBang

## Web Applications
- Burp Suite
- Fiddler
- Firefox
- OWASP Zap
- Subdomain-Bruteforce
- Wfuzz

## Wordlists
- FuzzDB
- PayloadsAllTheThings
- SecLists
- Probable-Wordlists
- RobotsDisallowed

# 参考情報
## Commando VM について
- FireEye 「Commando VM: 初の攻撃用Windowsディストリビューション」, https://www.fireeye.com/blog/jp-threat-research/2019/03/commando-vm-windows-offensive-distribution.html
- FireEye 「Commando VM 2.0：カスタマイズ機能の搭載、DockerとKaliのサポートを開始！」, https://www.fireeye.jp/blog/jp-threat-research/2019/08/commando-vm-customization-containers-kali.html
- FireEye 「Commando VM: The First of Its Kind Windows Offensive Distribution」, https://www.fireeye.com/blog/threat-research/2019/03/commando-vm-windows-offensive-distribution.html#par_entry
- GitHub 「fireeye / commando-vm」, https://github.com/fireeye/commando-vm
- Black Hat USA 2019 Arsenal 「Commando VM 2.0: Security Distribution for Penetration Testers and Red Teamers」, https://www.blackhat.com/us-19/arsenal/schedule/index.html#commando-vm--security-distribution-for-penetration-testers-and-red-teamers-16945
- Ethical hacking and penetration testing 「Commando VM: Windows for Hackers」, https://miloserdov.org/?p=3161
- SANS ISC InfoSec Forums 「Commando VM: The Complete Mandiant Offensive VM」, https://isc.sans.edu/forums/diary/Commando+VM+The+Complete+Mandiant+Offensive+VM/25136/
- 0xdf hacks stuff 「Commando VM: Installation」, https://0xdf.gitlab.io/2019/04/09/commando-vm-installation.html
- Insider Threat Security Blog 「Commando VM: Using the Testing Platform」, https://blog.stealthbits.com/commando-vm-using-the-testing-platform/
- 0xdf hacks stuff 「Commando VM: Looking Around」, https://0xdf.gitlab.io/2019/04/10/commando-vm-overview.html
- 0xdf hacks stuff 「Commando VM: Lessons Learned」, https://0xdf.gitlab.io/2019/04/15/commando-vm-lessons.html

## FLARE VM について
- FireEye 「FLARE VM: The Windows Malware Analysis Distribution You’ve Always Needed!」, https://www.fireeye.com/blog/threat-research/2017/07/flare-vm-the-windows-malware.html
- GitHub 「fireeye / flare-vm」, https://github.com/fireeye/flare-vm
- setodaNote 「FLARE VM を使って Windows10 に解析環境を構築する」, https://soji256.hatenablog.jp/entry/2019/10/14/224121

## Chocolatey について
- Qiita 「chocolatey 基本情報まとめ」, https://qiita.com/NaoyaOura/items/1081884068fe3ea79570
- ＠IT 「知っトクWindowsツール： コマンドでWindowsアプリを楽々管理「Chocolatey」」, https://www.atmarkit.co.jp/ait/articles/1806/22/news026.html

## Boxstarter について
- Qiita 「Boxstarter で快適なセットアップを」, https://qiita.com/mihochannel/items/b7d2bfd8ecc5abaf84a5
- 株式会社FIXER 「PCセットアップを自動化しよう！Boxstarter」, https://tech-blog.cloud-config.jp/2019-12-20-pcsetup-automation-boxstarter/