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 스토리지 도메인을 차단하며, 보고된 파일 아티팩트와 프로세스 패턴을 추적해야 합니다. 또한, 추가적으로 떨어진 구성 요소를 식별하고 지속성 메커니즘을 제거하기 위한 철저한 포렌식 조사가 수행되어야 합니다.
공격 흐름
탐지
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 "정리가 완료되었습니다."