Operation Dragon Weave는 Azure Cloud C2를 사용하여 체코와 대만을 타겟으로 합니다
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
Operation Dragon Weave로 추적되는 표적 스파이 활동은 악성 LNK 바로 가기 파일을 사용하여 Rust 기반 실행 파일과 함께 다단계 로더를 실행시켜 최종적으로 Adaptix AZUREVEIL 제어 및 명령 에이전트를 배포합니다. 운영자는 Microsoft Azure Blob Storage를 C2 통신의 비밀 드롭 기제로 악용합니다. 이 캠페인은 체코 공화국과 대만의 정부 직원과 연구원을 대상으로 합니다.
조사
조사는 초기 ZIP 아카이브에서 시작하여 VBScript 실행, PowerShell 기반 복호화, DLL 사이드로딩, RC4, Base64, SM4를 사용하여 최종 페이로드를 복호화하는 커스텀 Rust 로더까지 감염 체인을 전부 추적했습니다. 최종 단계의 악성 소프트웨어 AZUREVEIL은 Azure Blob Storage를 통해서만 통신하며 메모리 내 Beacon Object File 실행을 지원하는 64비트 Adaptix DLL로 확인되었습니다.
완화
수호자는 예기치 않은 LNK 파일 및 서명이 없는 바이너리 실행을 차단하고, 스크립트 및 매크로 실행에 대한 엄격한 제어를 실행하며, 비정상적인 Azure Blob Storage 트래픽을 모니터링해야 합니다. 실행 정책 우회가 적용되는 PowerShell 사용은 제한되거나 철저히 감시되어야 하며, 보안 팀은 %LOCALAPPDATA% 및 %TEMP%에서 의심스러운 파일 생성 여부를 탐지해야 합니다. Azure 계정의 강력한 자격 증명 위생을 유지하고, SAS 토큰을 주기적으로 교체할 것을 권장합니다. %LOCALAPPDATA% and %TEMP%. Strong credential hygiene for Azure accounts and regular rotation of SAS tokens are also recommended.
대응
보안 팀은 영향을 받은 호스트를 탐지하고 격리하며, 메모리에 남아 있는 페이로드를 복구하기 위해 휘발성 메모리를 수집하고, 식별된 Azure 스토리지 도메인을 차단하며, 보고된 파일 아티팩트와 프로세스 패턴을 추적해야 합니다. 또한, 추가적으로 떨어진 구성 요소를 식별하고 지속성 메커니즘을 제거하기 위한 철저한 포렌식 조사가 수행되어야 합니다.
graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ddffdd classDef process fill:#ffeb99 classDef operator fill:#ff9900 %% Nodes attack_phishing[“<b>행위</b> – <b>T1566.001 스피어피싱 첨부파일</b><br/>공격자는 피해자에게 악성 ZIP 아카이브를 이메일로 전송한다.”] class attack_phishing action file_zip[“<b>파일</b> – malicious.zip<br/>.lnk 바로가기 파일과 Rust로 컴파일된 .exe 드로퍼를 포함한다.”] class file_zip file action_user_exec[“<b>행위</b> – <b>T1204.001 사용자 실행</b><br/>피해자가 .lnk 파일을 열거나 .exe를 실행하여 드로퍼 체인이 시작된다.”] class action_user_exec action file_lnk[“<b>파일</b> – payload.pdf.lnk<br/>바로가기 파일은 이중 확장자와 Edge 아이콘을 사용하여 정상 파일처럼 위장한다.”] class file_lnk file tool_wscript[“<b>도구</b> – wscript.exe<br/>VBScript 페이로드를 실행한다.”] class tool_wscript tool file_vbs[“<b>파일</b> – empty.vbs<br/>PowerShell을 실행하는 최소 VBScript.”] class file_vbs file action_vbscript[“<b>행위</b> – <b>T1059.005 Visual Basic</b><br/>VBScript는 wscript를 통해 실행되어 PowerShell을 시작한다.”] class action_vbscript action action_powershell[“<b>행위</b> – <b>T1059.001 PowerShell</b><br/>Profile.ps1이 실행 정책 우회를 통해 실행되며 다음 단계의 데이터를 복호화한다.”] class action_powershell action file_dat[“<b>파일</b> – 1.dat<br/>RuntimeBroker_update.exe를 포함한 XOR 암호화 컨테이너.”] class file_dat file process_runtime[“<b>프로세스</b> – RuntimeBroker_update.exe<br/>1.dat에서 복호화되며 DLL 사이드로딩을 통해 악성 UnityPlayer.dll을 로드한다.”] class process_runtime process file_dll[“<b>파일</b> – UnityPlayer.dll<br/>RuntimeBroker_update.exe와 함께 배치된 악성 DLL.”] class file_dll file action_dll_sideload[“<b>행위</b> – <b>T1546.009 AppCert DLL</b><br/>DLL 사이드로딩을 통해 코드 실행이 이루어진다.”] class action_dll_sideload action tool_rustloader[“<b>도구</b> – Rust 로더 (RUSTCLOAK)<br/>메모리를 할당하고 복호화된 AZUREVEIL PE를 기록한 뒤 Windows Fibers로 실행한다.”] class tool_rustloader tool action_process_injection[“<b>행위</b> – <b>T1055.002 프로세스 인젝션</b><br/>Windows Fibers를 사용한 PE 인젝션.”] class action_process_injection action file_azureveil[“<b>파일</b> – AZUREVEIL.exe<br/>인젝션 이후 실행되는 복호화된 페이로드.”] class file_azureveil file action_discovery[“<b>행위</b> – <b>T1083 파일 및 디렉터리 탐색</b><br/>로더가 파일을 열거하고 %TEMP%로 이동시킨다.”] class action_discovery action action_network_discovery[“<b>행위</b> – <b>T1016 시스템 네트워크 구성 탐색</b><br/>MAC 및 IP 정보를 수집하여 프록시 및 측면 이동에 사용한다.”] class action_network_discovery action action_c2[“<b>행위</b> – <b>T1102 웹 서비스</b><br/>HTTPS를 통해 Azure Blob Storage와 통신한다.”] class action_c2 action action_dead_drop[“<b>행위</b> – <b>T1102.003 단방향 통신</b><br/>비콘 블롭을 업로드하고 같은 컨테이너에서 명령을 가져온다.”] class action_dead_drop action action_encrypted_channel[“<b>행위</b> – <b>T1573.001 암호화 채널</b><br/>비콘 및 명령 데이터는 커스텀 RC4 및 SM4-CBC로 암호화된다.”] class action_encrypted_channel action action_exfil[“<b>행위</b> – <b>T1567.002 웹 서비스 통한 유출</b><br/>암호화된 데이터를 Azure Blob 엔드포인트로 업로드한다.”] class action_exfil action action_persistence[“<b>행위</b> – <b>T1547.009 바로가기 수정</b><br/>지속성을 위해 시작 위치에 악성 .lnk 파일을 배치한다.”] class action_persistence action %% Edges attack_phishing –>|전달| file_zip file_zip –>|트리거| action_user_exec action_user_exec –>|열기| file_lnk file_lnk –>|실행| tool_wscript tool_wscript –>|실행| file_vbs file_vbs –>|시작| action_vbscript action_vbscript –>|시작| action_powershell action_powershell –>|복호화| file_dat file_dat –>|생성| process_runtime process_runtime –>|로드| file_dll file_dll –>|사용됨| action_dll_sideload process_runtime –>|실행| action_process_injection action_process_injection –>|사용| tool_rustloader tool_rustloader –>|로드| file_azureveil file_azureveil –>|실행| action_discovery action_discovery –>|추가 실행| action_network_discovery action_network_discovery –>|데이터 전송| action_c2 action_c2 –>|사용| action_dead_drop action_dead_drop –>|의존| action_encrypted_channel action_encrypted_channel –>|활성화| action_exfil action_exfil –>|트리거 가능| action_persistence file_lnk –>|지속성 설정| action_persistence %% Class Assignments class attack_phishing action class file_zip file class action_user_exec action class file_lnk file class tool_wscript tool class file_vbs file class action_vbscript action class action_powershell action class file_dat file class process_runtime process class file_dll file class action_dll_sideload action class tool_rustloader tool class action_process_injection action class file_azureveil action class action_discovery action class action_network_discovery action class action_c2 action class action_dead_drop action class action_encrypted_channel action class action_exfil action class action_persistence action
공격 흐름
탐지
LOLBAS WScript / CScript (프로세스 생성에서)
보기
숨겨진 PowerShell 명령줄을 통한 실행 가능성 (cmdline 통해)
보기
Powershell에서 수상한 .NET 메소드 호출 (powershell 통해)
보기
가능한 Powershell 난독화 지표 (powershell 통해)
보기
IOCs (HashSha256)를 사용하여 탐지: Operation Dragon Weave : Azure Cloud C2를 사용하는 체코 공화국 및 대만을 대상으로 한 중국계 캠페인 발견
보기
악성 wscript.exe 실행 및 CreateFiberEx 사용 탐지 [Windows 프로세스 생성]
보기
프로파일.ps1 실행 PowerShell 우회 [Windows PowerShell]
보기
RUSTCLOAK 실행을 위한 악성 LNK 파일 및 DLL 사이드로딩 [Windows 파일 이벤트]
보기
시뮬레이션 실행
전제: Telemetry 및 Baseline Pre-flight Check가 통과해야 합니다.
공격 서사 및 명령
- 전달: 공격자는 ‘계획서 신청 심사 결과 통지서’라는 첨부 파일이 포함된 피싱 이메일을 보냅니다.
계획서 신청 심사 결과 통지서.pdf.lnk. 이중 확장자가 바로가기 특성을 숨깁니다. LNK는C:Tempevil.vbs. - 실행 (VBScript): 피해자가 LNK를 더블 클릭하면,
wscript.exe가 실행됩니다evil.vbs. 이 스크립트는RuntimeBroker_update.exe를 드롭합니다.to%APPDATA%MicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe이며 악성UnityPlayer.dll을같은 디렉토리에 복사합니다. - DLL 사이드로딩: 공격자가
RuntimeBroker_update.exe를 드롭합니다.를 실행합니다. 실행 파일이 서명되었거나 정품 바이너리를 흉내내므로 Windows는 인접한UnityPlayer.dll을을 로드하여 내장 Rust 페이로드 (RUSTCLOAK)를 실행하고 Azure에 C2 채널을 설정합니다. - 실행 후: 페이로드는 시스템 발견 (T1016, T1082)을 수행하고 암호화된 채널 (T1573)을 통해 (T1041)을 시작합니다.
회귀 테스트 스크립트
<#
악성 LNK + DLL 사이드로딩 탐지를 위한 시뮬레이션 스크립트.
전제 조건:
- ProcessCreate (ID 1) 및 ImageLoad (ID 7)가 활성화된 Sysmon.
- $env:APPDATAMicrosoftWindowsStart MenuPrograms에 대한 쓰기 권한.
#>
# 1. 악성 VBScript 준비
$vbPath = "$env:TEMPevil.vbs"
@'
Set objShell = CreateObject("WScript.Shell")
'objShell.Run """$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe""", 0, False
'@ | Set-Content -Path $vbPath -Encoding Unicode
# 2. 페이크 UnityPlayer.dll 배포 (이진 자리표시자)
$dllPath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll"
# 데모를 위해, 기존 DLL (예: version.dll)을 복사하고 이름을 변경합니다.
Copy-Item "$env:SystemRootSystem32version.dll" $dllPath -Force
# 3. 도우미 실행 파일 배치 (사실적을 위해 정품 바이너리의 복사본)
$exePath = "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe"
Copy-Item "$env:SystemRootSystem32RuntimeBroker.exe" $exePath -Force
# 4. 이중 확장자가 있는 악성 LNK 생성
$lnkPath = "$env:USERPROFILEDesktop계획서 신청 심사 결과 통지서.pdf.lnk"
$ws = New-Object -ComObject WScript.Shell
$shortcut = $ws.CreateShortcut($lnkPath)
$shortcut.TargetPath = "$env:SystemRootSystem32wscript.exe"
$shortcut.Arguments = "`"$vbPath`""
$shortcut.Save()
Write-Host "악성 LNK가 $lnkPath에 생성되었습니다."
Write-Host "LNK를 실행하여 체인을 트리거합니다..."
Start-Process -FilePath $lnkPath -Wait
정리 명령
# 아티팩트 제거
Remove-Item "$env:TEMPevil.vbs" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsUnityPlayer.dll" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:APPDATAMicrosoftWindowsStart MenuProgramsRuntimeBroker_update.exe" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILEDesktop계획서 신청 심사 결과 통지서.pdf.lnk" -Force -ErrorAction SilentlyContinue
Write-Host "정리가 완료되었습니다."