Japan

関連リンク

関連リンク

関連リンク

関連リンク

サイト内の現在位置

「DetectionLab」で手軽にWindowsラボ環境を構築

NECセキュリティブログ

2021年4月16日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの大家です。
本記事では、わずか数コマンドでActive Directoryを含むWindowsラボ環境を構築することができる「DetectionLab」を紹介します。

DetectionLabとは

DetectionLabnew window[1]new window[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ホストでは、収集したログをSplunknew window[3]で閲覧・検索可能です。また、IDS(Suricatanew window[4])や調査ツール(Fleetnew window[5]やVelociraptornew window[6])もあらかじめ搭載されています。さらに、Windowsの各ホストには、Mimikatznew window[7]やAtomic Red Teamnew window[8]、PurpleSharpnew window[9]といった攻撃ツール・攻撃シミュレーションツールが用意されています。

DetectionLabのシステム構成図
new windowhttps://www.detectionlab.network/introduction/より)

ラボ環境の主な利用目的としては、各種攻撃が行われた際にシステム上にどのような痕跡が残るのかを検証することで、セキュリティ対策の改善に繋げること、フォレンジック関連の知見を高めることなどが考えられます。あるいは、AD環境に対するペネトレーションテストの練習環境として用いることもできるかと思います。なお、DetectionLabの作者は本ラボの利用目的について、「This lab has been designed with defenders in mind. (拙訳: このラボは防御側の視点を念頭に設計されています。)」としていますnew window[1]

DetectionLab環境を用いた攻撃検知の検証例については、JPCERT/CCの主催するカンファレンスであるJapan Security Analyst Conference 2021 new window[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の最新バージョンでインストール方法に変更があったことに伴うエラー回避策ですnew window[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スクリプトの実行を許可しています。
    スクリプトが終了したら、出力結果を見てシステムが前提条件を満たしていることを確認します。
prepare.ps1 スクリプトの実行
  • 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個です。
post_build_checks.ps1 スクリプトの実行

ラボ環境へのアクセス

ラボ環境の各マシンはApache Guacamolenew window[12]にて操作できます。ブラウザから http://192.168.38.105:8080/guacamole/ にアクセスすると、GuacamoleのUIが表示され、各マシンにアクセスできます。ただし、私の環境では、Win10ホストにGuacamoleからアクセスするとマシンがスタックしてしまう現象が発生しました。本問題の解決ができなかったため、Win10ホストについてはVirtualBoxのUIから操作することにしました。

Guacamoleのダッシュボード
GuacamoleからDCホストにアクセスしている様子

ラボ環境の利用

ラボ環境の構築が完了したら、あとは好きなように環境を使い倒すだけです。
今回はActive Directoryの調査ツールのADReconnew window[13]を実行し、Splunkでログを確認してみます。

まずはADRecon.ps1をダウンロードした後、実行します。

ADReconの実行

次にSplunkでログを確認します。イベントログを検索すると、Active Directoryへのログインや、グループメンバーの列挙、ディレクトリサービスへのアクセスなどのログが見つかります。また、Sysmonのネットワーク接続ログを確認すると、同時刻にADサーバーの389ポート(LDAP)や445ポート(SMB)にPowerShellから接続していることが確認できます。これらを総合的に捉えると、Active Directoryへの調査行為が行われていると判断できるかと思います。

ADに対する調査行為の痕跡1
ADに対する調査行為の痕跡2

おわりに

本記事では、わずか数コマンドでActive Directoryを含むWindowsラボ環境を自動構築できる「DetectionLab」を紹介しました。このツールを使用することでWindowsのラボ環境を手軽に用意することができます。防御技術の研究、フォレンジック関連の調査、ツール調査などにぜひ活用してみてください。

参考資料

執筆者プロフィール

大家 政胤(おおや まさつぐ)
セキュリティ技術センター リスクハンティングチーム

お客様へ提供するサービス・製品の脆弱性診断、リスクアセスメント業務を通して、NECグループのセキュア開発・運用を推進。
RISS、GPEN、CISSP Associate、CCSP Associate、AWS Security Specialtyを保持。

執筆者の他の記事を読む

Escキーで閉じる 閉じる