VHDX 파일로 전달되는 Remcos RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
다단계 멀웨어 캠페인은 일반적인 보안 제어를 회피하기 위해 무기화된 ZIP 아카이브에 포함된 VHDX 디스크 이미지를 사용합니다. VHDX가 마운트되면 난독화된 JavaScript 파일이 실행되고 WMI를 통해 일련의 PowerShell 스테이지를 시작합니다. 최종 페이로드는 합법적인 Windows 프로세스에 주입되어 실행을 숨기는 Remcos RAT입니다.
조사
연구자는 악성 ZIP 아카이브와 내장된 VHDX 컨테이너를 조사하여 전체 공격 흐름을 재구성했습니다. 분석 결과, WMI 기반 프로세스 생성으로 부모-자식 관계를 숨기는 복잡한 실행 체인이 드러났으며, XOR 및 Base64 문자열 난독화와 반사적 .NET 로더도 사용되었습니다. 초기 JavaScript 실행부터 최종 Remcos 페이로드 배포에 이르는 감염 경로가 성공적으로 추적되었습니다.
완화
조직은 신뢰할 수 없는 출처로부터의 VHDX 디스크 이미지 마운팅을 방지하기 위해 엄격한 제어를 적용해야 합니다. 보안 도구는 또한 JavaScript 또는 PowerShell과 같은 스크립팅 엔진에 의해 트리거된 의심스러운 Win32_Process.Create 활동을 모니터링해야 하며, 알려진 악성 도메인을 차단하고 레지스트리에서 비정상적인 Run 키 지속성을 검색함으로써 위험을 더욱 줄일 수 있습니다.
대응
이 활동이 감지되면 즉시 영향을 받은 엔드포인트를 격리하여 명령 및 제어 통신을 중단해야 합니다. 주입된 Remcos 페이로드와 반사적 .NET 로더를 캡처하기 위해 메모리 덤프를 획득해야 합니다. 그런 다음, 전체 포렌식 검토를 통해 악성 Run 키 항목, 추가 VHDX 파일 및 환경 내의 다른 의심스러운 PowerShell 활동을 검색해야 합니다.
graph TB %% 클래스 정의 classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% 초기 접근 및 실행 action_phishing[“<b>행위</b> – <b>T1566.001 피싱: 스피어피싱 첨부 파일</b><br/>설명: 악성 ZIP 아카이브가<br/>이메일을 통해 전달됨.”] class action_phishing action action_user_exec[“<b>행위</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/>설명: 사용자가<br/>악성 ZIP 파일을 실행함.”] class action_user_exec action tool_vhdx[“<b>도구</b> – <b>이름</b>: VHDX 파일<br/>설명: Escape to Host T1611을 사용하여<br/>페이로드를 숨기는 악성코드 컨테이너.”] class tool_vhdx tool %% 난독화 및 스크립팅 file_js[“<b>파일</b>: Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>설명</b>: 문자열 오염 및 XOR 복호화를 이용한<br/>명령 난독화 T1027.010을 사용하는 악성 JavaScript 파일.”] class file_js tool action_wmi[“<b>행위</b>: WMI를 통한 PowerShell 실행<br/><b>설명</b>: WMI를 사용하여 PowerShell 스크립트를 실행하고<br/>프로세스 관계 모니터링을 우회함.”] class action_wmi action %% 인그레스 전송 및 악성코드 단계 action_ingress_1[“<b>행위</b> – <b>T1105 인그레스 툴 전송</b><br/><b>설명</b>: PowerShell 스크립트가<br/>2단계 파일을 다운로드함.”] class action_ingress_1 action file_dsp[“<b>파일</b>: Exoticisms121.dsp<br/><b>설명</b>: %APPDATA%에 저장된<br/>2단계 파일.”] class file_dsp tool tool_loader[“<b>도구</b>: Reflective .NET Loader<br/><b>설명</b>: 2단계 파일에서<br/>셸코드를 실행함.”] class tool_loader tool action_ingress_2[“<b>행위</b> – <b>T1105 인그레스 툴 전송</b><br/><b>설명</b>: 셸코드가<br/>최종 Remcos RAT 페이로드를 가져옴.”] class action_ingress_2 action malware_remcos[“<b>악성코드</b>: Remcos RAT<br/>설명: Command and Control TA0011 통신을 위해<br/>구성된 최종 페이로드.”] class malware_remcos malware %% 프로세스 및 C2 process_bg_task[“<b>프로세스</b>: backgroundTaskHost.exe<br/>설명: 악성코드 주입 대상<br/>프로세스.”] class process_bg_task process c2_server[“<b>C2 서버</b>: animal342.duckdns.org:53562<br/>설명: Command and Control 통신에<br/>사용되는 원격 서버.”] class c2_server tool %% 지속성 action_persistence[“<b>행위</b> – <b>T1547.001 부팅 또는 로그온 자동 실행: Registry Run 키 / Startup 폴더</b><br/><b>설명</b>: cmd.exe를 사용하여 PowerShell 로더를 위한<br/>레지스트리 자동 실행 키를 생성함.”] class action_persistence action %% 연결 action_phishing –>|연결됨| action_user_exec action_user_exec –>|노출함| tool_vhdx tool_vhdx –>|포함함| file_js file_js –>|WMI를_통해_실행| action_wmi action_wmi –>|수행함| action_ingress_1 action_ingress_1 –>|다운로드함| file_dsp file_dsp –>|처리됨| tool_loader tool_loader –>|수행함| action_ingress_2 action_ingress_2 –>|가져옴| malware_remcos malware_remcos –>|주입함| process_bg_task malware_remcos –>|통신함| c2_server malware_remcos –>|보장함| action_persistence
공격 흐름
탐지
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (레지스트리 이벤트를 통해)
보기
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (cmdline을 통해)
보기
LOLBAS WScript / CScript (프로세스 생성 통해)
보기
가상 하드 디스크 파일이 생성됨 (파일 이벤트 통해)
보기
가능한 동적 DNS 서비스에 접속됨 (DNS 통해)
보기
PowerShell 반사적 .Net 로더 및 프로세스 주입 탐지 [Windows 프로세스 생성]
보기
PowerShell 스크립트 실행 WMI 통해 EDR 회피 [Windows PowerShell]
보기
## 시뮬레이션 실행
필수 조건: 텔레메트리 및 기준선 사전 비행 점검이 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 고안된 적수 기술(TTP)의 정확한 실행을 자세히 설명합니다. 명령 및 내러티브는 반드시 식별된 TTP를 직접 반영해야 하며, 탐지 논리에 예상되는 정확한 텔레메트리를 생성하는 것이 목표입니다. 추상적이거나 관련 없는 예는 오진으로 이어질 것입니다.
-
공격 내러티브 및 명령: 적수는 악성 페이로드를 메모리에서 실행하여 전통적인 AV 탐지를 피하려고 합니다. 그들은 다음을 활용하는 PowerShell 스크립트를 사용합니다.
[System.Reflection.Assembly]::Load()바로 현재 프로세스로 바이트 배열에서 컴파일된 .NET DLL을 직접 가져오려 합니다. 지속성을 유지하고 검사를 피하기 위해backgroundTaskHost.exe, 합법적인 Windows 프로세스를 생성 또는 상호작용하여 실행 스레드를 표준 시스템 백그라운드 작업 내에 숨기고자 합니다. -
회귀 테스트 스크립트:
# 시뮬레이션 스크립트: 반사적 .NET 로드 및 프로세스 상호작용 # 이 스크립트는 탐지 규칙에 의해 캡처된 논리를 모방합니다. # 1. .NET 어셈블리를 나타내는 더미 바이트 배열 생성 (시뮬레이션을 위해 매우 단순화됨) $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # MZ 헤더 모방 Write-Host "[+] 반사적 .NET 어셈블리 로드를 시도 중..." -ForegroundColor Cyan try { # 이 특정 문자열은 탐지 규칙의 대상입니다 $assembly = [System.Reflection.Assembly]::Load($assemblyBytes) Write-Host "[!] 성공: 어셈블리가 메모리로 로드됨 (시뮬레이션 전용)." -ForegroundColor Green } catch { Write-Host "[-] 어셈블리 로드 실패 (무효한 더미 바이트로 인해 예상됨), 그러나 명령은 전송됨." -ForegroundColor Yellow } Write-Host "[+] backgroundTaskHost.exe를 호출하여 탐지를 트리거하려고 합니다..." -ForegroundColor Cyan # 이 특정 문자열은 탐지 규칙의 대상입니다 Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection" -
정리 명령:
# 정리: 생성된 backgroundTaskHost 프로세스 종료 Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue Write-Host "[+] 정리 완료. BackgroundTaskHost 종료됨." -ForegroundColor Green