MuddyWater의 Rust 피벗: RustyWater 임플란트 분석
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
MuddyWater는 중동 지역의 외교, 해양, 금융 및 통신 기관을 겨냥한 스피어 피싱 캠페인을 시작했습니다. 공격자들은 Rust 기반의 임플란트인 RustyWater를 배포하기 위해 매크로가 포함된 워드 문서를 사용했습니다. 설치되면, 이 악성코드는 런 레지스트리 키를 통해 지속성을 유지하고, HTTP를 통해 명령 및 제어와 통신하며, explorer.exe에 코드를 주입하여 정상 사용자 활동에 섞입니다. 이 임플란트는 분석 방지 기능을 포함하고 있으며, 공격자가 제어를 확장할 수 있도록 모듈식 포스트 컴프라미즈 기능을 지원합니다.
조사
CloudSEK의 TRIAD 팀은 악성 문서를 분석하고, 헥스 인코딩된 페이로드를 복구하여 Rust 실행 파일 reddit.exe를 식별했습니다. 정적 검사는 HTTP 기반 C2에 reqwest 라이브러리를 사용하고, 디버깅 방지용 Vectored Exception Handler 매커니즘, 그리고 CurrentUser Run 레지스트리 경로를 통한 지속성을 보여주었습니다. 동적 테스트는 explorer.exe에 대한 프로세스 주입과, 무작위 콜백 타이밍을 가진 비동기식 C2 동작을 확인했습니다. 조사는 해시, 레지스트리 아티팩트 및 통신에 사용된 악성 도메인을 포함한 주요 지표를 컴파일했습니다.
완화
특히 ProgramData에 저장된 바이너리를 가리키는 항목을 대상으로 HKCUSoftwareMicrosoftWindowsCurrentVersionRun에 대한 의심스러운 수정 사항을 주시하십시오. Office가 WScript.Shell을 통해 cmd.exe를 스폰하는 매크로 중심의 실행 체인을 감지하십시오. JSON → Base64 → XOR 인코딩 및 무작위 지터로 비커닝 비정상 네트워크 트래픽 패턴에 대한 감지를 추가하십시오. 알려지지 않거나 신뢰할 수 없는 발신자가 보낸 매크로 사용 가능한 워드 첨부 파일을 차단하거나 격리하기 위해 이메일 제어를 강화하십시오.
대응
RustyWater 활동이 감지되면, 엔드포인트를 격리하고 주입 중심의 포렌식을 지원하기 위해 메모리 이미지를 수집하십시오. 악성 실행 키의 지속성을 제거하고 ProgramData에 있는 드랍된 파일을 삭제하십시오. 식별된 C2 도메인 및 IP를 외부 보안 대책에서 차단하십시오. 환경 전반에 걸쳐 관련 매크로 활동 및 explorer.exe 주입 아티팩트를 식별하기 위한 검색을 확장하여 완벽한 격리를 보장하십시오.
graph TB %% 클래스 정의 classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#e6e6e6 classDef process fill:#c2f0c2 classDef registry fill:#ffd9b3 classDef data fill:#d9d9ff %% 노드 action_phishing[“<b>행동</b> – <b>T1566.001 스피어피싱 첨부파일</b><br/>악성 Word 문서가 포함된 이메일이 피해자에게 전송됨”] class action_phishing action file_doc[“<b>파일</b> – <b>이름</b>: Cybersecurity.doc<br/><b>유형</b>: VBA 매크로가 포함된 Word 문서”] class file_doc file action_user_execution[“<b>행동</b> – <b>T1204.002 악성 파일</b><br/>사용자가 첨부 문서를 열어 실행이 시작됨”] class action_user_execution action technique_vba_macro[“<b>기법</b> – <b>T1059.005 Visual Basic</b><br/>VBA 매크로가 악성 행위를 수행함”] class technique_vba_macro technique file_ini[“<b>파일</b> – <b>이름</b>: CertificationKit.ini<br/><b>목적</b>: WMI를 통해 실행되는 스크립트”] class file_ini file technique_native_api[“<b>기법</b> – <b>T1106 네이티브 API</b><br/>매크로가 COM 객체를 생성하여 시스템과 상호작용함”] class technique_native_api technique technique_wmi[“<b>기법</b> – <b>T1047 WMI</b><br/>WMI를 사용해 .ini 스크립트를 실행함”] class technique_wmi technique technique_reflective_loading[“<b>기법</b> – <b>T1620 반사 로딩</b><br/>16진수로 인코딩된 페이로드가 메모리에서 복호화되어 디스크에 기록됨”] class technique_reflective_loading technique technique_process_injection[“<b>기법</b> – <b>T1055.002 PE 인젝션</b><br/>쉘코드가 explorer.exe에 주입됨”] class technique_process_injection technique process_explorer[“<b>프로세스</b> – <b>이름</b>: explorer.exe”] class process_explorer process technique_persistence[“<b>기법</b> – <b>T1547 지속성</b><br/>레지스트리 Run 키가 생성됨”] class technique_persistence technique registry_run[“<b>레지스트리</b> – <b>키</b>: HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run”] class registry_run registry technique_encrypted_channel[“<b>기법</b> – <b>T1573 암호화 채널</b><br/>C2 트래픽이 암호화됨”] class technique_encrypted_channel technique technique_symmetric_crypto[“<b>기법</b> – <b>T1573.001 대칭 암호화</b><br/>XOR/Base64로 데이터를 숨김”] class technique_symmetric_crypto technique technique_credential_hooking[“<b>기법</b> – <b>T1056.004 자격 증명 API 후킹</b><br/>API 후킹으로 사용자 자격 증명을 수집함”] class technique_credential_hooking technique credentials[“<b>데이터</b> – <b>유형</b>: 탈취된 자격 증명”] class credentials data %% 연결 action_phishing –>|전달| file_doc file_doc –>|사용자가 열음| action_user_execution action_user_execution –>|트리거| technique_vba_macro technique_vba_macro –>|생성| file_ini technique_vba_macro –>|사용| technique_native_api technique_native_api –>|호출| technique_wmi technique_wmi –>|실행| file_ini file_ini –>|로드| technique_reflective_loading technique_reflective_loading –>|유도| technique_process_injection technique_process_injection –>|주입| process_explorer process_explorer –>|활성화| technique_persistence technique_persistence –>|기록| registry_run registry_run –>|지원| technique_encrypted_channel technique_encrypted_channel –>|사용| technique_symmetric_crypto technique_symmetric_crypto –>|보호| technique_credential_hooking technique_credential_hooking –>|수집| credentials
공격 흐름
탐지
실행 바이너리의 비정상적 확장 (프로세스_생성)
보기
가능한 지속성 지점 [ASEPs – Software/NTUSER Hive] (레지스트리 이벤트)
보기
인수가 없는 의심스러운 프로세스 (cmdline)
보기
의심스러운 MSOffice 자식 프로세스 (cmdline)
보기
탐지를 위한 IOC (HashSha256): 러스트에서의 부활: Muddy Water의 RustyWater 임플란트 도구 발전
보기
Muddy Water RustyWater 임플란트 실행 탐지 [Windows 프로세스 생성]
보기
Muddy Water APT 스피어 피싱 아티팩트 탐지 [Windows 파일 이벤트]
보기
시뮬레이션 실행
필수 조건: 원격 & 베이스라인 사전 비행 검사에 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적의 기술(TTP) 실행을 상세히 설명합니다. 명령과 내러티브는 식별된 TTP를 직접 반영하며 탐지 로직이 기대하는 정확한 원격 측정을 생성하는 것을 목표로 합니다.
-
공격 내러티브 및 명령:
APT 운영자는 악성 매크로가 포함된 Office 첨부 파일과 함께 스피어 피싱 이메일을 수신합니다. 열리자마자 매크로는 두 개의 페이로드 파일을 떨어뜨립니다—Cybersecurity.docandCertificationKit.ini—ProgramData디렉토리에 많은 애플리케이션이 신뢰할 수 있는 위치에 숨기기 위해. 매크로는 PowerShell을 사용하여 파일을 작성하며, 탐지 규칙이 모니터링하는 Sysmon 파일 생성 이벤트를 트리거합니다. -
회귀 테스트 스크립트:
# ------------------------------------------------- # MuddyWater APT 파일 드롭 시뮬레이션 (Windows) # ------------------------------------------------- $progData = $Env:ProgramData # 페이로드 내용 정의 (테스트를 위한 더미 데이터) $docContent = "탐지 테스트에 사용되는 모의 사이버 보안 문서입니다." $iniContent = "[Settings]`nKey=Value`n" # Cybersecurity.doc 생성 $docPath = Join-Path -Path $progData -ChildPath "Cybersecurity.doc" $docContent | Out-File -FilePath $docPath -Encoding UTF8 # CertificationKit.ini 생성 $iniPath = Join-Path -Path $progData -ChildPath "CertificationKit.ini" $iniContent | Out-File -FilePath $iniPath -Encoding UTF8 Write-Host "MuddyWater 시뮬레이션 파일 생성됨:" Write-Host "`t$docPath" Write-Host "`t$iniPath" # ------------------------------------------------- -
정리 명령:
# 시뮬레이션 아티팩트 제거 Remove-Item -Path "$Env:ProgramDataCybersecurity.doc" -ErrorAction SilentlyContinue Remove-Item -Path "$Env:ProgramDataCertificationKit.ini" -ErrorAction SilentlyContinue Write-Host "시뮬레이션 파일 제거됨."