APT-Q-27 멀웨어 캠페인, 웹3 고객 지원 겨냥
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
APT-Q-27로 추적되는 금전적 동기로 움직이는 위협 행위자(별명: GoldenEyeDog)가 Web3 고객 지원 채팅 상호작용에서 시작되는 다단계 악성코드 캠페인을 운영하고 있습니다. 초기 유혹은 스크린샷으로 위장된 .pif 파일로, 이는 커스텀 .NET 로더를 배포합니다. 이 로더는 AWS S3에서 추가 단계를 가져와 숨겨진 스테이징 디렉토리를 구축하고, 악성 DLL을 합법적인 YY 플랫폼 실행 파일과 짝지어 DLL 측면 로딩을 활용합니다. 마지막 단계는 비표준 TCP 포트를 통해 통신하는 백도어를 설치하여 일반적인 웹 트래픽 기준선을 넘어서는 은밀한 원격 접근을 가능하게 합니다.
조사
제로섀도우는 Feedback.exe 및 photo2025060268jpg.exe를 포함한 여러 로더 변종을 분석하고 체인에 내장된 이중 Base64로 인코딩된 C2 URL을 복구했습니다. 리버스 엔지니어링 결과 로더의 암호 해독 로직과 실행 부트스트랩에 사용된 측면 로딩 워크플로우가 밝혀졌습니다. 분석가들은 또한 “@27″을 포함하는 일관된 스테이징 경로 표시와 SystemUpdats라는 이름의 HKCU Run 값을 통한 영구 메커니즘을 문서화했습니다. 백도어는 하드코딩된 37개의 C2 IP 주소 세트를 사용해 TCP 15628을 통해 통신하며, Microsoft 업데이트 URL을 참조하여 활동을 위장하는 것으로 관찰되었습니다.
완화
.pif 파일의 실행을 차단하고 엔드포인트 전반에 걸쳐 전체 파일 확장자 가시성을 활성화하세요. Windows Update 스타일의 캐시 위치에서 숨겨진 디렉토리 생성 여부를 모니터링하고 SystemUpdats Run 키 값을 알림으로 설정하세요. 공격자가 세 가지 관련 정책 키를 동시에 0으로 설정하는 것을 방지하여 UAC를 강화하고, TCP 15628로의 출력 연결을 차단하세요. 코드 서명 검증을 시행하고 비시스템 디렉토리에서 실행된 서명된 바이너리를 철저히 검토하여 DLL 측면 로딩 위험을 줄이세요.
대응
탐지가 발생하면, 엔드포인트를 격리하고 메모리 및 디스크 아티팩트를 보존하여 분석에 대비하세요. “@27″이 포함된 스테이징 디렉토리, SystemUpdats Run 키 항목 및 YY 실행 파일과 쌍을 이룬 의심스러운 DLL을 찾아보세요. 식별된 C2 IP/도메인을 차단하고, 사용자 프로필 경로에서 신뢰할 수 없거나 서명되지 않은 바이너리의 실행을 금지하는 애플리케이션 제어 정책을 배포하세요. 동일한 지속성 및 네트워크 패턴에 대해 범위를 확대하여 추가로 영향을 받은 호스트를 식별하세요.
"graph TB %% Class definitions classDef action fill:#99ccff classDef file fill:#ffcc99 classDef registry fill:#c2f0c2 classDef network fill:#ff99cc classDef builtin fill:#cccccc %% Nodes action_phishing_link["<b>Action</b> – <b>T1204.001 User Execution: Malicious Link</b><br/>라이브 채팅에서 전송된 속임수 URL, 피해자가 클릭하여 photo2025060268jpg.exe라는 이름의 .pif 파일을 다운로드함"] class action_phishing_link action file_pif["<b>File</b> – <b>Name</b>: photo2025060268jpg.exe<br/><b>Type</b>: 이미지로 위장한 .pif 실행 파일"] class file_pif file action_malicious_file["<b>Action</b> – <b>T1204.002 User Execution: Malicious File</b><br/>.pif가 실행되어 Paint를 가짜 오류 이미지로 열고 로더를 실행함"] class action_malicious_file action file_loader["<b>Malware</b> – <b>Name</b>: Loader<br/><b>Behavior</b>: 페이로드를 해독하고 updat.exe를 실행함"] class file_loader builtin action_obfuscation["<b>Action</b> – <b>T1027.008 Obfuscated Files or Information</b><br/>모든 문자열, URL 및 페이로드가 이중 Base64로 인코딩됨"] class action_obfuscation action action_debugger_evasion["<b>Action</b> – <b>T1622 Debugger Evasion</b><br/>IsDebuggerPresent 및 호출 스택을 확인하고 디버거가 발견되면 종료함"] class action_debugger_evasion action action_persistence["<b>Action</b> – <b>T1547.001 Registry Run Keys/Startup Folder</b><br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRunSystemUpdats → updat.exe를 숨겨진 스테이징 폴더에 씀"] class action_persistence action registry_run_key["<b>Registry</b> – <b>Path</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRunSystemUpdats<br/><b>Value</b>: updat.exe 경로"] class registry_run_key registry file_updat["<b>File</b> – <b>Name</b>: updat.exe<br/><b>Location</b>: 숨겨진 스테이징 디렉토리"] class file_updat file action_uac_bypass["<b>Action</b> – <b>T1548.002 Bypass UAC</b><br/>하나의 트랜잭션에서 EnableLUA, ConsentPromptBehaviorAdmin, PromptOnSecureDesktop를 0으로 설정함"] class action_uac_bypass action action_appinit["<b>Action</b> – <b>T1546.010 AppInit DLLs</b> & <b>T1546.009 AppCert DLLs</b><br/>스테이징 폴더에 작업 디렉토리가 설정된 상태로 updat.exe가 실행되어 악성 DLL이 로드됨"] class action_appinit action file_vcruntime["<b>DLL</b> – <b>Name</b>: vcruntime140.dll (악성)"] class file_vcruntime file file_msvcp["<b>DLL</b> – <b>Name</b>: msvcp140.dll (악성)"] class file_msvcp file file_crashreport["<b>DLL</b> – <b>Name</b>: crashreport.dll (악성)"] class file_crashreport file action_dll_sideload["<b>Action</b> – <b>T1574.002 DLL Side-Loading</b><br/>정상적인 런타임 라이브러리 대신 악성 DLL이 로드됨"] class action_dll_sideload action action_c2["<b>Action</b> – <b>T1571 Non-Standard Port</b> & <b>T1573 Encrypted Channel</b><br/>백도어가 TCP 포트 15628로 C2와 연결을 설정하고, 트래픽이 암호화되어 AWS S3에서 매니페스트를 가져옴"] class action_c2 action network_c2["<b>Network</b> – <b>Protocol</b>: TCP<br/><b>Port</b>: 15628<br/><b>Endpoint</b>: C2 서버 (AWS S3)"] class network_c2 network %% Connections action_phishing_link –>|downloads| file_pif file_pif –>|executes| action_malicious_file action_malicious_file –>|launches| file_loader file_loader –>|uses| action_obfuscation file_loader –>|uses| action_debugger_evasion file_loader –>|initiates| action_persistence action_persistence –>|writes| registry_run_key registry_run_key –>|points to| file_updat file_updat –>|triggered by| action_uac_bypass action_uac_bypass –>|enables| action_appinit action_appinit –>|loads| file_vcruntime action_appinit –>|loads| file_msvcp action_appinit –>|loads| file_crashreport file_vcruntime –>|contribute to| action_dll_sideload file_msvcp –>|contribute to| action_dll_sideload file_crashreport –>|contribute to| action_dll_sideload action_dll_sideload –>|enables| action_c2 action_c2 –>|communicates with| network_c2 "
공격 흐름
탐지
가능한 UAC 우회 – 관리 계정 비활성화 (registry_event를 통해)
보기
가능한 악성 파일 이중 확장자 (process_creation을 통해)
보기
가능한 지속성 포인트 [ASEPs – Software/NTUSER Hive] (registry_event를 통해)
보기
가능한 UAC 우회 – UAC 비활성화 시도 (registry_event를 통해)
보기
수상한 디렉토리에서 로드된 Vcruntime140 동적 라이브러리 (image_load를 통해)
보기
가능한 UAC 우회 – 보안 데스크톱 프롬프트 비활성화 시도(registry_event를 통해)
보기
탐지 대상 IOCs (목적지 IP): 대기열 처리 중: APT-Q-27 악성코드가 Web3 고객 지원을 노림 – 1부
보기
탐지 대상 IOCs (출처 IP): 대기열 처리 중: APT-Q-27 악성코드가 Web3 고객 지원을 노림 – 2부
보기
탐지 대상 IOCs (목적지 IP): 대기열 처리 중: APT-Q-27 악성코드가 Web3 고객 지원을 노림 – 2부
보기
탐지 대상 IOCs (HashSha256): 대기열 처리 중: APT-Q-27 악성코드가 Web3 고객 지원을 노림
보기
탐지 대상 IOCs (출처 IP): 대기열 처리 중: APT-Q-27 악성코드가 Web3 고객 지원을 노림 – 1부
보기
UAC 비활성화 탐지 – 레지스트리 수정 [Windows Registry Event]
보기
AppData 내 Updat.exe를 통한 DLL 측면 로딩 감지 [Windows Process Creation]
보기
시뮬레이션 실행
필수 조건: 텔레메트리 및 기준선 사전 준비 점검이 통과해야 합니다.
근거: 이 섹션은 탐지 규칙을 활성화하기 위해 설계된 특정 적 기법(기술 및 절차)의 정확한 실행을 설명합니다. 명령어와 서사는 확인된 TTP를 직접 반영하고, 탐지 로직이 기대하는 정확한 텔레메트리를 생성하는 것을 목표로 합니다.
-
공격 내러티브 및 명령어:
로컬 관리 권한이 있는 공격자는 UAC를 비활성화하여 추가 권한 상승 도구의 경로를 매끄럽게 만듭니다. 네이티브reg.exe유틸리티(로 생활해온 바이너리)를 사용하여 공격자는 세 가지 중요한 UAC 정책 값을0초과하지 않는 빠른 연속으로 설정하여 수동 감사 프로세스에 의한 탐지를 피합니다.# 단계 1 – UAC "EnableLUA" 비활성화 reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v EnableLUA /t REG_DWORD /d 0 /f # 단계 2 – 관리자에 대한 동의 프롬프트 비활성화 reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f # 단계 3 – UAC 프롬프트를 위한 보안 데스크톱 비활성화 reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v PromptOnSecureDesktop /t REG_DWORD /d 0 /f이 세 가지 명령어는 레지스트리 이벤트 로그를 생성합니다 (
EventID 4657보안 채널에서와Microsoft-Windows-Registry/Operational이벤트)와 함께TargetObject경로 및세부정보값이 Sigma 규칙과 일치합니다. -
회귀 테스트 스크립트: 다음 PowerShell 스크립트는 각 단계 사이에 5초의 일시 정지를 포함하여 30초 이내의 편안한 시간 범위 내에서 쓰기를 수행하며 결정론적인 실행 흐름을 제공합니다.
# 회귀 테스트 – 레지스트리를 통해 UAC 비활성화 $regPath = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" # 나중에 정리를 위해 원래 값을 저장 $originalEnableLUA = (Get-ItemProperty -Path $regPath -Name EnableLUA -ErrorAction SilentlyContinue).EnableLUA $originalConsent = (Get-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -ErrorAction SilentlyContinue).ConsentPromptBehaviorAdmin $originalPrompt = (Get-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -ErrorAction SilentlyContinue).PromptOnSecureDesktop # UAC 비활성화 Set-ItemProperty -Path $regPath -Name EnableLUA -Value 0 Start-Sleep -Seconds 5 Set-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -Value 0 Start-Sleep -Seconds 5 Set-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -Value 0 Write-Host "UAC 비활성화 됨 – 인증 로그가 이제 수집되어야 합니다." -
정리 명령어: 테스트 이전의 상태로 시스템을 복원하기 위해 원래 UAC 설정을 복원합니다.
# 정리 – 원래 UAC 설정 복원 $regPath = "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" if ($null -ne $originalEnableLUA) { Set-ItemProperty -Path $regPath -Name EnableLUA -Value $originalEnableLUA } if ($null -ne $originalConsent) { Set-ItemProperty -Path $regPath -Name ConsentPromptBehaviorAdmin -Value $originalConsent } if ($null -ne $originalPrompt) { Set-ItemProperty -Path $regPath -Name PromptOnSecureDesktop -Value $originalPrompt } Write-Host "UAC 설정이 원래 값으로 복원되었습니다."