UAE-인도 파트너십 유혹으로 전달된 PulseRAT
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
UAE-인도 전략적 파트너십 파일로 가장한 악성 ISO 아카이브가 .NET 기반 원격 액세스 트로이 목마인 PulseRAT을 전달하는 데 사용되고 있습니다. 악성 코드는 ISO에 삽입된 드로퍼를 통해 설치되며, Google 스프레드시트를 명령 및 제어 채널로 사용합니다. 지속적으로 접근하기 위해, WindowsVaultSyncService라는 이름의 예약 작업을 만들고, %LOCALAPPDATA%에 보관 디렉토리를 생성하며, 동일한 호스트에서 다중 실행을 방지하기 위해 뮤텍스를 사용합니다. 이 캠페인은 아랍에미리트와 인도 간의 고위 방위 관계를 미끼로 활용하고 있습니다.
조사
분석가는 ISO 파일을 풀고, 실행 파일을 실행하는 LNK 바로가기를 식별했으며, 드로퍼를 역설계하여 그 페이로드와 지속성 논리를 밝혀냈습니다. PulseRAT에 대한 추가 분석을 통해 Google 스프레드시트를 어떻게 명령 및 제어로 사용하는지, 뮤텍스를 생성하는 방법, 프로세스 메모리 내에서 PowerShell을 실행하는 방법, 그리고 지속성을 위한 예약 작업을 생성하는 방법이 밝혀졌습니다. 파일 이름, 파일 시스템 경로, 뮤텍스 패턴, 스프레드시트 식별자가 모두 기록되어 탐지 엔지니어링을 지원합니다.
완화 조치
조직은 제거 가능 또는 장착된 미디어에서 실행되는 알려지지 않은 바이너리의 실행을 차단하고 WindowsVaultSyncService라는 이름의 예약 작업 생성을 모니터링해야 합니다. %LOCALAPPDATA%MicrosoftVault에서 실행되는 바이너리에 대해 애플리케이션 제어가 시행되어야 하며, 방어자는 Google 스프레드시트 API 트래픽을 검사하여 무단 계정 접근 또는 예상치 못한 스프레드시트 활동을 확인해야 합니다. 모든 악성 예약 작업은 제거되어야 하며, 영향을 받은 시스템에서 vaultsvc.exe 파일이 삭제되어야 합니다.
대응
PulseRAT 활동이 감지될 경우, 영향을 받은 엔드포인트를 즉시 격리하고 휘발성 메모리 및 디스크 이미지를 수집하며, 문서화된 침해 지표를 검색해야 합니다. 악성 예약 작업을 비활성화하고 제거하고, 보관 디렉토리를 삭제하며, 손상된 Google 관련 서비스 계정을 재설정해야 합니다. 추가적으로, 가능한 측면 이동을 식별하기 위해 전체 포렌식 검토가 수행되어야 하며, UAE 및 인도 내 관련 이해관계자들에게 통보해야 합니다.
"graph TB %% Class definitions classDef action fill:#99ccff,stroke:#333,stroke-width:2px classDef tool fill:#dddddd,stroke:#333,stroke-width:2px classDef process fill:#ffeb99,stroke:#333,stroke-width:2px %% Nodes step_user_open["<b>동작</b> – <b>T1204.002 사용자 실행: 악성 파일</b><br/><b>설명</b>: 피해자가 악성 파일 바로가기(LNK)를 엽니다.<br/><b>하위 기술</b> T1547.009 바로가기 수정<br/><b>설명</b>: 지속성을 달성하기 위해 배치된 바로가기입니다."] class step_user_open action step_dropper["<b>동작</b> – <b>T1027.009 은폐/저장된 파일: 내장 페이로드</b><br/><b>설명</b>: 드로퍼가 숨겨진 페이로드를 추출합니다.<br/><b>기술</b> T1105 진입 도구 전송<br/><b>설명</b>: 피해자 시스템으로 페이로드를 전송합니다."] class step_dropper action step_persistence["<b>동작</b> – <b>T1053 예약 작업/직무</b><br/><b>설명</b>: 지속성을 위한 예약 작업을 생성합니다.<br/><b>기술</b> T1070.004 파일 삭제<br/><b>설명</b>: 설치 후 드로퍼가 자체 삭제됩니다."] class step_persistence action step_execution["<b>동작</b> – <b>T1055.013 프로세스 주입: 프로세스 비우기</b><br/><b>설명</b>: 프로세스 내에서 PowerShell을 실행하여 악성 코드를 실행합니다.<br/><b>기술</b> T1602 피해자 식별 정보 수집<br/><b>설명</b>: 시스템 정보를 수집합니다(systeminfo)."] class step_execution action step_uid["<b>동작</b> – <b>T1589 피해자 식별 정보 수집</b><br/><b>설명</b>: 고유 피해자 식별자(UID)를 생성합니다."] class step_uid action step_c2["<b>동작</b> – <b>T1102.001 웹 서비스: 데드드롭 리졸버</b><br/><b>설명</b>: 명령 및 제어 채널로 Google Sheets를 사용합니다.<br/><b>기술</b> T1102.002 웹 서비스: 웹 서비스를 통한 데이터 유출<br/><b>설명</b>: 원격 Google Sheets API와 통신합니다."] class step_c2 action step_rat["<b>동작</b> – <b>T1219 원격 액세스 도구</b><br/><b>설명</b>: 손상된 호스트에 대한 원격 대화형 액세스를 제공합니다."] class step_rat action step_cleanup["<b>동작</b> – <b>T1070.009 Windows 이벤트 로그 지우기</b><br/><b>설명</b>: 아티팩트를 제거하고 지속성 메커니즘을 정리합니다."] class step_cleanup action %% Connections step_user_open –>|유도| step_dropper step_dropper –>|생성| step_persistence step_persistence –>|활성화| step_execution step_execution –>|생성| step_uid step_uid –>|사용자| step_c2 step_c2 –>|활성화| step_rat step_rat –>|트리거| step_cleanup "
공격 흐름
탐지
잠재적인 지연 실행 사용 (명령줄 통해)
보기
VHDMP 광 디스크 이미지가 마운트되었습니다 (VHDMP 통해)
보기
의심스러운 예약 작업 (감사를 통해)
보기
잠재적인 Google 명령 및 제어 유틸리티 활동 (프록시 통해)
보기
IOCs (HashSha256) 탐지용: UAE-인도 파트너십 미끼를 사용하는 Google Sheets 기반 RAT인 PulseRAT
보기
PulseRAT 프로세스 내 PowerShell 실행 탐지 [Windows Powershell]
보기
의심스러운 실행 파일 실행 via LNK 파일과 RAT 페이로드 [Windows 프로세스 생성]
보기
시뮬레이션 실행
전제조건: 텔레메트리 및 기준선 사전 점검이 통과해야 합니다.
-
공격 서술 및 명령:
적이 사용자 계정을 손상시키고 호스트에 악성 “PulseRAT” DLL을 배치했습니다. PulseRAT은explorer.exe와 같은 합법적인 프로세스에 로드되며, 눈에 띄는 실행 공간 (프로세스 내 실행)을 생성하여 가시적인powershell.exe생성을 피합니다. 그런 다음 공격자가 제어하는 Google Sheet에서 base64로 인코딩된 PowerShell 페이로드를 검색, 디코드하여 실행 공간 내에서 실행합니다. 이는 실행 공간 생성에서의 ‘System.Management.Automation.Runspaces’ 마커 문자열과 디코드된 페이로드에서의 ‘base64’ 단어를 포함하는 유일한 EventID 4104 항목을 생성하여 Sigma 규칙을 충족합니다. -
회귀 테스트 스크립트:
# PulseRAT 스타일의 프로세스 내 PowerShell 실행 (시뮬레이션) # --------------------------------------------------------- # 1. PowerShell 실행 공간 생성 (프로세스 내) $runspace = [runspacefactory]::CreateRunspace() $runspace.Open() # 2. base64로 인코딩된 페이로드 구축 (공격자가 제어한 데이터 시뮬레이션) $payload = 'Write-Host "Compromised by PulseRAT"' # 간단한 페이로드 $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [Convert]::ToBase64String($bytes) # 3. 페이로드를 디코드하고 실행하는 스크립트 블록 구성 $script = @" `$b64 = '$b64' `$decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$b64)) Invoke-Expression `$decoded "@ # 4. 실행 공간 내에 PowerShell 파이프라인 생성 및 호출 $powershell = [powershell]::Create() $powershell.Runspace = $runspace $null = $powershell.AddScript($script).Invoke() $powershell.Dispose() $runspace.Close() -
정리 명령:
# 실행 공간 제거 및 리소스 해제 (남아 있는 경우) if ($runspace -and $runspace.RunspaceStateInfo.State -ne 'Closed') { $runspace.Close() } Remove-Variable -Name runspace -ErrorAction SilentlyContinue Remove-Variable -Name powershell -ErrorAction SilentlyContinue