NECサイバーセキュリティ戦略本部セキュリティ技術センターの大家です。
本記事では、わずか数コマンドでActive Directoryを含むWindowsラボ環境を構築することができる「DetectionLab」を紹介します。
DetectionLabとは
DetectionLab[1][2]は、Chris Long氏が開発したツールです。Vagrant、Ansible、PowerShellなどを用いて、Windows搭載ホストが3台(うち1つはActive Directory)、Linux搭載ホストが1台からなるラボ環境を自動構築することができます。ラボ環境は、仮想環境上(VirtualBox、VMWare Workstation/Fusion、ESXi、Hyper-V)やクラウド(AWS、Azure)に構築できます。
下記はラボ環境のシステム構成図です。Windowsの各ホストには各種ロギングツールが設定されており、収集したログがLoggerホストに転送されるようになっています。Loggerホストでは、収集したログをSplunk[3]で閲覧・検索可能です。また、IDS(Suricata[4])や調査ツール(Fleet[5]やVelociraptor[6])もあらかじめ搭載されています。さらに、Windowsの各ホストには、Mimikatz[7]やAtomic Red Team[8]、PurpleSharp[9]といった攻撃ツール・攻撃シミュレーションツールが用意されています。
ラボ環境の主な利用目的としては、各種攻撃が行われた際にシステム上にどのような痕跡が残るのかを検証することで、セキュリティ対策の改善に繋げること、フォレンジック関連の知見を高めることなどが考えられます。あるいは、AD環境に対するペネトレーションテストの練習環境として用いることもできるかと思います。なお、DetectionLabの作者は本ラボの利用目的について、「This lab has been designed with defenders in mind. (拙訳: このラボは防御側の視点を念頭に設計されています。)」としています[1]。
DetectionLab環境を用いた攻撃検知の検証例については、JPCERT/CCの主催するカンファレンスであるJapan Security Analyst Conference 2021 [10]にて、作者本人が「Accelerating the Analysis of Offensive Security Techniques Using DetectionLab」と題して発表を行っています。この発表では、Mimikatzの実行やプロセスインジェクションの検証について紹介されました。本記事執筆時点(2021/04/12)では、当カンファレンスのウェブサイトにて、発表時のスライドが公開されています。
ラボ環境構築
それでは、DetectionLabを用いたラボ環境の構築手順について紹介します。前述のとおり、DetectionLabは様々なプラットフォームに対応していますが、ここではWindows10上のVirtualBoxに環境を構築します。
事前準備
事前にインストールが必要なソフトウェアは、VirtualBox(バージョン6.0以上)とVagrant(2.2.9以上)のみです。これらのソフトウェアのインストーラは各ツールの公式サイトから入手できます。その他に必要な準備はありません。
自動構築の開始
1. DetectionLabリポジトリのファイル一式をローカル環境にコピーします。
2. Vagrant¥scripts¥install-velociraptor.ps1 をテキストエディタで開き、以下のとおり編集します。
この処理は、Velociraptorの最新バージョンでインストール方法に変更があったことに伴うエラー回避策です
[11]。本記事執筆時点(2021/04/12)では作者から根本的な対応策は提供されていません。
編集前:
$velociraptorDownloadUrl = "https://github.com/Velocidex/velociraptor/releases/download/$tag/velociraptor-$tag-windows-amd64.msi"
編集後:
$velociraptorDownloadUrl = https://github.com/Velocidex/velociraptor/releases/download/v0.5.7/velociraptor-v0.5.7-windows-amd64.msi
3. PowerShellのプロンプトにてVagrantディレクトリに移動し prepare.ps1 スクリプトを実行します。
このスクリプトはシステムが前提条件を満たしているかどうかチェックします。私の環境では、一部のチェックに管理者権限が必要だったため、管理者権限にてスクリプトを実行しています。また、PowerShellスクリプトの実行を許可しない設定となっているため、Set-ExecutionPolicy Unrestricted -Scope Process コマンドにて一時的にPowerShellスクリプトの実行を許可しています。
スクリプトが終了したら、出力結果を見てシステムが前提条件を満たしていることを確認します。
4. vagrant up --provider=virtualbox コマンドを実行します。
このコマンドを実行することで、自動的にラボ環境が構築されます。まずは、Vagrant cloudから各種OSイメージがダウンロードされ、その後、仮想マシンのプロビジョニングが実行されます。しばらく放置していると、Logger、DC、WEF、Win10の4つの仮想マシンが起動されます。私の環境では1時間程度で構築が完了しました。
トラブルシューティング
何らかのエラーにより、途中で環境構築が停止する場合があります。仮想マシンが構築・実行されていない場合は、vagrant up --provider=virtualbox コマンドを再度実行することで、構築を再開することができます。また、特定の仮想マシンでエラーが発生する場合は、vagrant reload <hostname> --provision コマンドを実行することで、指定した仮想マシンの再プロビジョニングを実行することができます。
5. post_build_checks.ps1 スクリプトを実行します。
このスクリプトは、環境構築が完了し各種サービスにアクセスできることをチェックします。出力結果を見るとシステムが無事構築されたことが確認できます。ここまでで実行したコマンドはわずか3個です。
ラボ環境へのアクセス
ラボ環境の各マシンはApache Guacamole[12]にて操作できます。ブラウザから http://192.168.38.105:8080/guacamole/ にアクセスすると、GuacamoleのUIが表示され、各マシンにアクセスできます。ただし、私の環境では、Win10ホストにGuacamoleからアクセスするとマシンがスタックしてしまう現象が発生しました。本問題の解決ができなかったため、Win10ホストについてはVirtualBoxのUIから操作することにしました。
ラボ環境の利用
ラボ環境の構築が完了したら、あとは好きなように環境を使い倒すだけです。
今回はActive Directoryの調査ツールのADRecon[13]を実行し、Splunkでログを確認してみます。
まずはADRecon.ps1をダウンロードした後、実行します。
次にSplunkでログを確認します。イベントログを検索すると、Active Directoryへのログインや、グループメンバーの列挙、ディレクトリサービスへのアクセスなどのログが見つかります。また、Sysmonのネットワーク接続ログを確認すると、同時刻にADサーバーの389ポート(LDAP)や445ポート(SMB)にPowerShellから接続していることが確認できます。これらを総合的に捉えると、Active Directoryへの調査行為が行われていると判断できるかと思います。
おわりに
本記事では、わずか数コマンドでActive Directoryを含むWindowsラボ環境を自動構築できる「DetectionLab」を紹介しました。このツールを使用することでWindowsのラボ環境を手軽に用意することができます。防御技術の研究、フォレンジック関連の調査、ツール調査などにぜひ活用してみてください。
参考資料
[1] https://github.com/clong/DetectionLab
[2] https://www.detectionlab.network/
[3] https://www.splunk.com/ja_jp
[4] https://suricata.io/
[5] https://github.com/kolide/fleet
[6] https://www.velocidex.com/
[7] https://github.com/gentilkiwi/mimikatz
[8] https://github.com/redcanaryco/atomic-red-team
[9] https://github.com/mvelazc0/PurpleSharp
[10] https://jsac.jpcert.or.jp/
[11] https://github.com/clong/DetectionLab/issues/636
[12] https://guacamole.apache.org/
[13] https://github.com/sense-of-security/ADRecon
執筆者プロフィール
大家 政胤(おおや まさつぐ)
セキュリティ技術センター リスクハンティングチーム
お客様へ提供するサービス・製品の脆弱性診断、リスクアセスメント業務を通して、NECグループのセキュア開発・運用を推進。 RISS、GPEN、CISSP Associate、CCSP Associate、AWS Security Specialtyを保持。