Japan
サイト内の現在位置
Adversary Emulation × AutomatedLab - 攻撃エミュレーション環境を自動で作成する
NECセキュリティブログ2023年6月2日
NECサイバーセキュリティ戦略統括部 セキュリティ技術センターの竹内です。
フォレンジック対応をしている皆さんは、普段どのようにフォレンジックの訓練や勉強をしているでしょうか。一つの方法として自分でやられ環境を作成し、攻撃を行い検証するという方法があると思います。
しかしながら、環境作成や攻撃シナリオを作成するのは大変です。今回のブログでは、それらの課題を解決するべくAdversary Emulation LibraryとAutomatedLabを活用して、環境作成と攻撃をある程度自動かつ楽に行う、フォレンジック勉強に使うための環境作成方法について紹介してきます。
(注意事項)
- 本ブログに記載の内容を悪用したクラッキング行為等は絶対にしないでください。
- 本ブログで紹介する内容ではマルウェアを扱います。利用には細心の注意を払ってください。また、誤操作等によるマルウェア感染について、筆者はなんら責任を負いません。
ブログで紹介する内容について
今回のブログで紹介する内容は以下の通りです。
- Adversary Emulation Library
・Adversary Emulation Libraryについて
・Wizard Spiderのシナリオを実施する時の注意点 - AutomatedLab関連
・AutomatedLabでNATを使用し、外部へと通信する方法
・AutomatedLabでファイルコピーする方法
・AutomatedLabでコマンド実行する方法 - 環境作成
・VyOSを使った、攻撃用Kali LinuxマシンとAutomatedLabで作成したマシンとの通信確立
再現環境
本環境の再現に使用した環境は以下の通りです。最終的にHyper-Vが使用したメモリ容量は12GBほどのため、16GBあれば動かせると思います。
OS:Windows 10 Pro 22H2
CPU:Intel® Core™ i7-9750H
メモリ:32GB
Hyper-V マネージャーバージョン:10.0.19041.1
Adversary Emulation Libraryについて
Adversary Emulation Library [1]はMITRE ENGENUITYによって提供されている「攻撃者による攻撃をエミュレーションする方法」がまとめられたライブラリです。このライブラリは現実世界の脅威を模しており、「特定の攻撃アクターのエミュレーション」や「テクニックレベルのエミュレーション」がまとめられています。また、このライブラリで公開されている攻撃は実際の製品の評価にも使用されており、セキュリティベンダが自社製品の評価結果を公開しています。
[2]
[3]
「特定の攻撃アクターのエミュレーション」については、やられ環境となるインフラの構築方法と攻撃者のシナリオのエミュレーション方法が細かく記載されており、記載されている内容をトレースすることで再現できるものになります。
インフラの構築については、ある程度スクリプトでまとめられており、比較的容易に構築可能です。しかし、さらに楽に構築するべくAutomatedLabを活用します。
今回はAdversary Emulation Libraryにある、Wizard Spider [4]と呼ばれる攻撃アクターのエミュレーションについて、やられ環境と攻撃シナリオを例に紹介していきます。
AutomatedLabについて
Wizard Spider Emulation Plan Scenario 1 - Infrastructure
作成するやられ環境のインフラは図 1の通りです。AutomatedLabでoz.localドメイン環境に所属する3つの端末、Wizard、Dorothy、Totoを作成します。Kali Linuxと仮想ルータ用ホストとして使用するVyOSの作成はAutomatedLabでは自動化できないため、手動でHyper-V環境に作成します。

Kali Linuxの作成については公式サイト [8]よりISOイメージをダウンロード、Hyper-Vでマシンを作成し、IPアドレスを192.168.0.4/24に設定するだけのため、手順は割愛します。
環境の作成方法については次の流れで説明していきます。
-
AutomatedLabを使用したやられ環境の作成
AutomatedLabの簡単な利用方法を紹介したのち、ActiveDirectoryの設定、ネットワーク設定やNATの設定方法を説明します。最後にOSのインストール後に行うユーザ作成等の自動化について説明します。 -
VyOSの設定方法
1で作成したやられ環境と攻撃側の端末となるKali Linuxが通信を行えるように設定する方法を説明します。
AutomatedLabを使用したやられ環境の作成
AutomatedLabを使用して3台のWindowsマシンを作成します。マシンの作成にはISOイメージが必要となるためダウンロードをしておきます。
今回は評価用のISOイメージの英語版をダウンロードし、使用しています。
ダウンロードしたISOイメージは、LabSourcesフォルダ内のISOsフォルダに保存します。
ISOイメージを保存したら、AutomatedLabを使用したやられ環境の作成を行います。作成方法は次のステップで説明していきます。
- ステップ1:Active Directory環境に所属する3つの端末の作成
- ステップ2:NATを使用し、端末をインターネットへ接続可能にする
- ステップ3:PostInstallActivityおよびAutomatedLabのコマンドを使用して、インストール後の端末の設定を行う
ステップ1:Active Directory環境に所属する3つの端末の作成
1-1:AutomatedLabでの端末作成方法
AutomatedLabの利用イメージとしては次の流れになります。
- ①「New-LabDefinition」コマンドレットで作成するラボ環境を定義
- ②「Add-LabMachineDefinition」コマンドレットでラボ環境内に作成する端末を定義
- ③「Install-Lab」コマンドレットで、定義した環境を作成
1台のWindows Server2019を作成するAutomatedLabのスクリプトは次のようになります。
New-LabDefeinition –Name SampleLab –DefaultVirtualizationEngine HyperV #①
Add-LabMachineDefinition –Name ws2019 –Memory 2GB –OperatingSystem ‘Windows Server 2019 Standard Evaluation (Desktop Experience)’ #②
Install-Lab #③
このスクリプトは図 2に示すようなイメージで環境を作成します。

Wizard SpiderのEmulationでは3つの端末を作成し、Active-Directoryの設定を行います。また、IPアドレスの設定と後々必要になるため仮想ネットワークスイッチの作成を行います。
1-2:Active Directoryのインストールおよびドメイン参加
AutomatedLabでは、「Add-LabMachineDefinition」コマンドレットを使用する際に、「-Roles」オプションや「-Domain」オプションを使うことでActiveDirectoryのインストールやドメイン参加が可能となります。
ActiveDirectoryをインストールするWindows Serverではオプション「-Roles」および「-Domain」を使用した次のコマンドを使用することでドメインコントローラになります。
$DomainName = 'oz.local'
Add-LabMachineDefinition `
-Name Wizard `
-Memory 2GB `
-OperatingSystem 'Windows Server 2019 Standard Evaluation (Desktop Experience)' `
-Roles RootDC `
-DomainName $DomainName`
また、ドメインに参加させたいWindows10ではオプション「-Domain」を使用することで、ドメインへの参加が可能となります。
Add-LabMachineDefinition `
-Name Dorothy `
-Memory 2GB `
-OperatingSystem 'Windows 10 Enterprise Evaluation' `
-DomainName $DomainName
また、作成した端末のドメイン管理者のユーザ情報は「Add-LabDomainDefinition」コマンドレットで作成します。なお、AutomatedLabでキッティング時に使用する「Set-LabInstallationCredential」コマンドレットで同一のユーザ名とパスワードを設定する必要があります。
## ドメイン管理者ユーザの情報。
$DomainAdminUser = "fleming"
$DomainAdminPassword = "q27VYN8xflPcYumbLMit"
#キッティング用のアカウント情報を設定
Set-LabInstallationCredential -Username $DomainAdminUser -Password $DomainAdminPassword
# ドメイン管理者アカウントを設定
Add-LabDomainDefinition -Name $DomainName -AdminUser $DomainAdminUser -AdminPassword $DomainAdminPassword
1-3:仮想ネットワークスイッチの作成とIPアドレスの設定
IPアドレスは「Add-LabMachineDefinition」コマンドレットのオプション「-IpAddress」や「-Gateway」で設定します。
また、特定の仮想ネットワークスイッチを使用したい場合、「Add-LabMachineDefinition」コマンドレットのオプション「-Network」で設定することができます。仮想ネットワークスイッチの作成には「Add-LabVirtualNetworkDefinition」コマンドレットを使用します。
表 1 やられ環境のネットワーク設定
端末名 | ネットワーク設定 |
Wizard | IP:10.0.0.4/16 GateWay:10.0.0.1 |
Dorothy | IP:10.0.0.7/16 GateWay:10.0.0.1 |
Toto | IP:10.0.0.8/16 GateWay:10.0.0.1 |
作成するネットワーク設定は表 1の通りです。GateWayはNATによるインターネットへの通信やKali Linuxとの通信時に必要となるため設定しています。
これらの設定を行うAutomatedLabのスクリプトは次の通りです。
## 仮想スイッチの作成
Add-LabVirtualNetworkDefinition -Name 'WizardSpider' -AddressSpace 10.0.0.0/16
## ドメインコントローラWizardの作成
Add-LabMachineDefinition `
-Name Wizard `
-Memory 2GB `
-OperatingSystem 'Windows Server 2019 Standard Evaluation (Desktop Experience)' `
-Roles RootDC `
-DomainName $DomainName `
-Network 'WizardSpider' `
-IpAddress 10.0.0.4 `
-Gateway 10.0.0.1 `
## クライアントDorothy, Totoの作成
Add-LabMachineDefinition `
-Name Dorothy `
-Memory 2GB `
-OperatingSystem 'Windows 10 Enterprise Evaluation' `
-DomainName $DomainName `
-Network 'WizardSpider' `
-IpAddress 10.0.0.7 `
-Gateway 10.0.0.1
Add-LabMachineDefinition `
-Name Toto `
-Memory 2GB `
-OperatingSystem 'Windows 10 Enterprise Evaluation' `
-DomainName $DomainName `
-Network 'WizardSpider' `
-IpAddress 10.0.0.8 `
-Gateway 10.0.0.1
これで、Active Directory環境に所属する3つの端末の作成が完了しました。
ステップ2:NATを使用し、端末をインターネットへ接続可能にする
後述するActiveDirectory環境に所属する3つの端末の設定を行う際、インターネットへの接続が必要になります。Hyper-Vに作成した仮想マシンをインターネットに接続する方法はいくつかありますが、AutomatedLabで設定したIPアドレスを調整することなくインターネットへ接続するために、今回はNATを使用することにします。
Active Directory環境作成時に使用したネットワークアドレスを指定し、PowerShellのコマンドレット「New-NetNat」を使用し、NATネットワークを作成します。
> New-NetNat -Name “WINNAT” -InternalIPInterfaceAddressPrefix 10.0.0.0/16
「-InternalIPInterfaceAddressPrefix」で、環境作成時に使用したIPアドレスレンジを設定します。また、環境を作成する際にゲートウェイのアドレスとして、「10.0.0.1」を設定することで、インターネット外へ接続することが可能になります。
ステップ3:PostInstallActivityおよびAutomatedLabのコマンドを使用して、インストール後の端末の設定を行う
Adversary Emulation Libraryでは、OSインストール後に行う、ドメインユーザーの作成やソフトウェアインストール等の設定用のPowerShellスクリプトが用意されています。これらを作成した環境に適用する際に、PostInstallActivityというオプションが有用です。なお、一部のPostInstallActivityでは難しい処理はAutomatedLabで用意されているコマンドレットを用いて個別に実行します。
作成したWizard端末に設定する内容としては、以下の項目がありました。
- 用意されたPowerShellスクリプトの実行
- Microsoft Visual C++ Redistributableのインストール
- ダミーファイルの作成
3-1:PostInstallActivityを使用した設定方法
PowerShellスクリプトは、端末を作成する際に使用する「Add-LabMachineDefinition」コマンドレットのオプションとしてPostInstallActivityを使用することで、自動的に実行できます。「Get-LabPostinstallationActivity」コマンドレットを使用して、設定を行いたいスクリプトファイルを指定し、配列として変数に格納します。格納した変数を「Add-LabMachineDefinition」コマンドレットの「-PostInstallationActivity」で指定することで、インストール後にPowerShellスクリプトを実行するようになります。
$labSources = 'D:\LabSources'
$postInstallActivityAdmin = @()
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName install_adfind.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName install_firefox.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
Add-LabMachineDefinition `
-Name Wizard `
-Memory 2GB `
-OperatingSystem 'Windows Server 2019 Standard Evaluation (Desktop Experience)' `
-Roles RootDC `
-DomainName $DomainName `
-Network 'WizardSpider' `
-IpAddress 10.0.0.4 `
-Gateway 10.0.0.1 `
-PostInstallationActivity $postInstallActivityAdmin
なお、この方法では設定時になんらかの実行ファイルをコピーしておく必要があるケースや、Windowsの設定を事前に変更していないと動かせないといったケースには対応できません。その場合は、AutomatedLabのコマンドレットを使用して設定します。
3-2:AutomatedLabのコマンドレットを使用してコマンドを実行する方法
やられ環境では、Microsoft Visual C++ Redistributableのインストールやダミーファイルの作成が必要です。これらの設定を行うためには実行ファイルを設定する端末にコピーする必要があります。そのため、「PostInstallationActivity」を使用した方法ではなく、AutomatedLabのコマンドレットを使います。「Copy-LabFileItem」コマンドレットでファイルコピーを行ったのちに、「Invoke-LabCommand」コマンドレットでプログラムを実行し、設定を行います。また、Windows Defenderを無効化するスクリプトは、PostInstallActivityで設定を行おうとすると、Defenderによって検知されてしまうため、「Invoke-LabCommand」コマンドレットで設定する必要があります。注意点として、これらのコマンドは「Install-Lab」コマンドレットの実行後に行います。
Install-Lab
# Generate file Wizard
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\templates\ -Recurse -ComputerName Wizard -DestinationFolderPath C:\Users\Public\
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\file_generator\generate-files.exe -ComputerName Wizard -DestinationFolderPath C:\Users\Public
3-3:NATの設定の削除
ここまでの手法を使い、設定が終わったらNATの設定は不必要になるため、次のコマンドでNATを削除し、外部インターネットへ通信できないようにします。
> Get-NetNat | Remove-NetNat
3-4:手動設定
最後にAutomatedLabでは自動化できなかった以下の項目を手動で設定し、やられ環境の構築は完了となります。
- Dorothy端末でのOfficeアプリケーションやEdgeの設定
- Dorothy端末へjudyでログインし、実行する以下のコマンドの実行
takeown /f "C:\Windows\*" /r /d y
icacls "C:\Windows\*" /grant judy:(OI)(CI)F /T
3-5:再起動
これらが終わったら、PowerShellで「Restart-LabVM」コマンドレットを実行し、端末の再起動を行い、必要に応じて「Checkpoint-LabVM」コマンドレットでスナップショットを取得します。
ここまでに説明をしてきた内容を踏まえ、最終的に完成するWizard SpiderのEmulationを行うための、やられ環境のスクリプトは次のようになります。
# 既に存在しているLabを削除
Remove-Lab
New-LabDefinition -Name SampleLab -DefaultVirtualizationEngine HyperV
#ドメインに関する情報
$DomainName = 'oz.local'
$DomainAdminUser = "fleming"
$DomainAdminPassword = "q27VYN8xflPcYumbLMit"
## Lab構築用のアカウントの設定
Set-LabInstallationCredential -Username $DomainAdminUser -Password $DomainAdminPassword
# ドメイン管理者アカウントを設定
Add-LabDomainDefinition -Name $DomainName -AdminUser $DomainAdminUser -AdminPassword $DomainAdminPassword
# Lab毎のPostInstallationActivityを事前に定義する
$labSources = 'D:\LabSources'
$postInstallActivityAdmin = @()
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName install_adfind.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName install_firefox.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName create_domain_users.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName give_rdp_permissions.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName setup_spn.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityAdmin += Get-LabPostinstallationActivity -ScriptFileName enable-winrm.ps1 -DependencyFolder $labSources\PostInstallationActivities\WizardSpider
$postInstallActivityDorothy = @()
$postInstallActivityDorothy += Get-LabPostInstallationActivity -ScriptFileName give_rdp_permissions.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
$postInstallActivityDorothy += Get-LabPostInstallationActivity -ScriptFileName enable-winrm.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
#$postInstallActivityDorothy += Get-LabPostInstallationActivity -ScriptFileName disable-defender.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
$postInstallActivityDorothy += Get-LabPostInstallationActivity -ScriptFileName install_msoffice.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
$postInstallActivityDorothy += Get-LabPostInstallationActivity -ScriptFileName setup_outlook.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
$postInstallActivityToto =@()
$postInstallActivityToto += Get-LabPostInstallationActivity -ScriptFileName give_rdp_permissions.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
$postInstallActivityToto += Get-LabPostInstallationActivity -ScriptFileName enable-winrm.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
#$postInstallActivityToto += Get-LabPostInstallationActivity -ScriptFileName disable-defender.ps1 -DependencyFolder D:\LabSources\PostInstallationActivities\WizardSpider
## ネットワーク関係の設定を行う
# 仮想スイッチの作成
Add-LabVirtualNetworkDefinition -Name 'WizardSpider' -AddressSpace 10.0.0.0/16
# NATネットワークの削除
Get-NetNat | Remove-NetNat
# NATネットワークの設定
New-NetNat -Name 'WINNAT' -InternalIPInterfaceAddressPrefix 10.0.0.0/16
### ドメインコントローラ(Wizard)を作成
Add-LabMachineDefinition `
-Name Wizard `
-Memory 2GB `
-OperatingSystem 'Windows Server 2019 Standard Evaluation (Desktop Experience)' `
-Roles RootDC `
-DomainName $DomainName `
-Network 'WizardSpider' `
-IpAddress 10.0.0.4 `
-Gateway 10.0.0.1 `
-PostInstallationActivity $postInstallActivityAdmin
## クライアントであるWindows10マシン(Dorothy, Toto)を作成
Add-LabMachineDefinition -Name Dorothy -Memory 2GB -OperatingSystem 'Windows 10 Enterprise Evaluation' -DomainName $DomainName -Network 'WizardSpider' -IpAddress 10.0.0.7 -Gateway 10.0.0.1 -PostInstallationActivity $postInstallActivityDorothy
Add-LabMachineDefinition -Name Toto -Memory 2GB -OperatingSystem 'Windows 10 Enterprise Evaluation' -DomainName $DomainName -Network 'WizardSpider' -IpAddress 10.0.0.8 -Gateway 10.0.0.1 -PostInstallationActivity $postInstallActivityToto
# ラボ設定を適用し作成する
Install-Lab
### Wizard端末の設定を行う。
# Disable Windows Defender
Invoke-Labcommand -ScriptBlock { Set-MpPreference -DisableRealtimeMonitoring $true } -ComputerName Wizard -PassThru
Invoke-LabCommand -ComputerName Wizard -FileName disable-defender.ps1 -DependencyFolderPath $labSources\PostInstallationActivities\WizardSpider\ -PassThru
# Generate file Wizard
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\templates\ -Recurse -ComputerName Wizard -DestinationFolderPath C:\Users\Public\
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\file_generator\generate-files.exe -ComputerName Wizard -DestinationFolderPath C:\Users\Public
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\Public\" -c 50 --seed "EVALS" --noprompt } -ComputerName Wizard -PassThru
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\" -c 50 --seed "EVALS" --noprompt } -ComputerName Wizard -PassThru
# Install Visual StudioRedistributable
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\vsredistributable -Recurse -ComputerName Wizard -DestinationFolderPath C:\Users\Public\
Invoke-LabCommand -ScriptBlock { C:\Users\Public\vsredistributable\VC_redist.x64.exe /install /quiet /norestart } -ComputerName Wizard -PassThru
Invoke-LabCommand -ScriptBlock { C:\Users\Public\vsredistributable\VC_redist.x86.exe /install /quiet /norestart } -ComputerName Wizard -PassThru
### Dorothy端末の設定を行う
# Disable Windows Defender
Invoke-Labcommand -ScriptBlock { Set-MpPreference -DisableRealtimeMonitoring $true } -ComputerName Dorothy -PassThru
Invoke-LabCommand -ComputerName Dorothy -FileName disable-defender.ps1 -DependencyFolderPath $labSources\PostInstallationActivities\WizardSpider\ -PassThru
# Generate file Dorothy
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\templates\ -Recurse -ComputerName Dorothy -DestinationFolderPath C:\Users\Public\
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\file_generator\generate-files.exe -ComputerName Dorothy -DestinationFolderPath C:\Users\Public
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\Public\" -c 50 --seed "EVALS" --noprompt } -ComputerName Dorothy -PassThru
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\" -c 50 --seed "EVALS" --noprompt } -ComputerName Dorothy -PassThru
# Install Visual StudioRedistributable
Copy-LabFileItem -Path $labSources\PostInstallationActivities\WizardSpider\vsredistributable -Recurse -ComputerName Dorothy -DestinationFolderPath C:\Users\Public\
Invoke-LabCommand -ScriptBlock { C:\Users\Public\vsredistributable\VC_redist.x64.exe /install /quiet /norestart } -ComputerName Dorothy -PassThru
Invoke-LabCommand -ScriptBlock { C:\Users\Public\vsredistributable\VC_redist.x86.exe /install /quiet /norestart } -ComputerName Dorothy -PassThru
### Toto端末の設定を行う
# Disable Windows Defender
Invoke-Labcommand -ScriptBlock { Set-MpPreference -DisableRealtimeMonitoring $true } -ComputerName Toto -PassThru
Invoke-LabCommand -ComputerName Toto -FileName disable-defender.ps1 -DependencyFolderPath $labSources\PostInstallationActivities\WizardSpider\ -PassThru
# Generate file Toto
Copy-LabFileItem -Path D:\LabSources\PostInstallationActivities\WizardSpider\templates\ -Recurse -ComputerName Toto -DestinationFolderPath C:\Users\Public\
Copy-LabFileItem -Path D:\LabSources\PostInstallationActivities\WizardSpider\file_generator\generate-files.exe -ComputerName Toto -DestinationFolderPath C:\Users\Public
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\Public\" -c 50 --seed "EVALS" --noprompt } -ComputerName Toto -PassThru
Invoke-LabCommand -ScriptBlock { C:\Users\Public\generate-files.exe -d "C:\Users\" -c 50 --seed "EVALS" --noprompt } -ComputerName Toto -PassThru
# デプロイ結果を表示する
Show-LabDeploymentSummary -Detailed
VyOSの設定方法
VyOS [9]はオープンソースのネットワークOSです。Wizard SpiderのEmulationでは攻撃用に使うツールの通信先のIPアドレスが192.168.0.4で調整されて配布されています。やられ環境と攻撃用のKali Linuxのネットワークレンジが異なることになるため、VyOSを使用して、通信が行えるようにします。
VyOSには次のようにネットワークアダプタを2つ設定します。ひとつはAutomatedLabで作成した仮想スイッチ、もう一つはKali Linuxと接続する用の仮想スイッチになります。

接続後にVyOSを起動します。VyOSはライブ起動状態でも使用可能です。設定を保存したい場合は、「install image」コマンドを使用します。検証用ではネットワークアダプタに対してIPアドレスの設定を行えば通信可能となるため、ライブ起動状態でも問題ありません。
起動後はID:vyos、パスワード:vyowでログインし、次のコマンドを入力し、ネットワーク設定を行います。
$ configure
# set interfaces ethernet eth0 10.0.0.1/16
# set interfaces ethernet eth1 192.168.0.1/16
# commit
# exit
「show interfaces」コマンドを入力し、図 4に示す設定が出力されていれば、Kali Linuxとやられ環境との通信が可能となります。Kali Linux側はIPアドレス192.168.0.4/24、ゲートウェイ:192.168.0.1を割り振るのを忘れないようにしてください。

Wizard Spider Emulation Plan Scenario1 – Attack Phase
環境作成が完了したら、あとはEmulation Libraryにある シナリオ通りの流れで攻撃を行うことで攻撃フェーズは完了します。
攻撃シナリオの実行途中で実行したマルウェアやウイルスの結果は、「sudo ./controlServer」を実行した画面上に表示されます。

「./evalC2client.py」コマンド実行時に使用する「--set-task」オプションには 表示されるGUIDを設定する必要があります。

アーティファクトの取得と解析
一連の攻撃が終われば、アーティファクトを回収し、解析の勉強に使用しましょう。今回実施したEmulationがどういった痕跡を残すかを調査してもよいですし、なにも事前情報がないメンバーにログだけ渡して解析をするという方法での勉強もできるかもしれません。
Wizard Spiderの攻撃シナリオでは途中でマルウェア(uxtheme.exe)を実行しています。マルウェアの実行痕跡を調査したところ、AmCacheからはマルウェアのハッシュ値や実行時間(図 5)が、AppCompatCacheからは実行したマルウェアの実行フラグが「Yes」となっていること(図 6)が確認できました。


このように解析の勉強に使えるアーティファクトが回収できましたが、これらを使う際には注意点があります。収集したWindowsのログにはAutomatedLabでのキッティング時の情報が残っていました。解析する際にはいつ攻撃を始めたのかを記録し、攻撃日時以前のログを削除する、攻撃日時を伝えてから解析を行ってもらう等が必要となります。
おわりに
今回はAdversary Emulation LibraryとAutomatedLabを使用して、環境作成の方法を中心に紹介しました。今回はWizard SpiderのEmulation Planを実行しましたが、他の攻撃Emulationもあるため、興味ある方は他のものもぜひ試してみてください。
参考文献
- [1]Center for Threat Informed Defense | Adversary Emulation Library
https://github.com/center-for-threat-informed-defense/adversary_emulation_library
- [2]BrackBerry |BlackBerry が 100%の予防を再び実証! MITRE ATT&CK によるエミュレートされた Wizard Spider および Sandworm 脅威グループに対する 評価の結果が公表されました。
https://blogs.blackberry.com/ja/jp/2022/04/blackberry-again-demonstrates-prevention-against-wizard-spider-and-sandworm-threat-groups
- [3]ESET | SandwormとWizard SpiderをモデルとしたATT&CK® Evaluation: ESETの評価と結果
https://www.eset.com/jp/blog/welivesecurity/hunting-down-sandworm-and-wizard-spider-how-eset-fared-in-the-attckr-evaluation/
- [4]AutomatedLab
https://github.com/AutomatedLab/AutomatedLab
- [5]MITRE |Wizard Spider
https://attack.mitre.org/groups/G0102/
- [6]AutomatedLab Documents
https://automatedlab.org/en/latest/
- [7]株式会社LAC | AutomatedLabでAD構築を自動化しよう
https://devblog.lac.co.jp/entry/20210622
- [8]
- [9]VyOS
https://vyos.io/
執筆者プロフィール
竹内 俊輝(たけうち としき)
セキュリティ技術センター リスクハンティング・アナリシスグループ
リスクハンティング・アナリシスグループにて脆弱性診断やペネトレーションテストを担当。趣味はマルウェア解析
SEC560メダル保持
情報処理安全確保支援士(登録番号014728号)
GIAC GPEN

執筆者の他の記事を読む
アクセスランキング
2025年3月16日~3月22日に読まれた記事のランキング