Spacebar Campaigns

HAP-002 PMS Patch Manifest and Hash Evidence

Log ID:
HAP-002
Source:
hanguel-ops-pms
Representative Path:
/opt/hanguel-pms/updates/manifest.json, /opt/hanguel-pms/evidence/patch_hashes_*.json
Collection:
PMS host file inventory, hash snapshot, Hanguel emulation event
Current Status:
patch hash evidence 파일 생성 확인. ELK 정규화는 Hanguel event로 보강
Primary Use:
정상 파일명으로 유지된 patch 변조와 manifest 갱신 추적

공격 행위 요약

공격자는 PMS 업데이트 경로의 patch.ps1과 manifest를 수정한다. 파일명과 경로가 유지되기 때문에 사용자는 정상 업데이트로 인식할 수 있으며, 실제 탐지에서는 hash, manifest version, 배포 시간, win01 실행 이벤트를 함께 봐야 한다.

로그 발생 위치

구분위치설명
PMS update dir/opt/hanguel-pms/updates/배포되는 manifest와 patch 원본
PMS evidence dir/opt/hanguel-pms/evidence/patch_hashes_*.json정상/변조 patch hash 비교
ELKhanguel-ad-agent-*pms_patch_changed_emulated, pms_patch_downloaded

주요 필드

필드의미예시
file.path변경 파일 경로/opt/hanguel-pms/updates/patch.ps1
file.hash.sha256파일 해시redacted hash
messagemanifest/hash snapshot 원문 또는 collector 요약patch.ps1 sha256=...
event.action정규화된 보조 행위pms_patch_changed_emulated
hanguel.classification분류suspicious

커버하는 Techniques Used

TechniqueMapping Reason
T1195.002 Compromise Software Supply Chain신뢰된 업데이트 경로에 공격 코드를 삽입한다.
T1036.005 Match Legitimate Name or Location기존 파일명과 경로를 유지해 정상 패치처럼 보이게 한다.
T1053.005 Scheduled Taskwin01 PMS Agent scheduled task가 해당 patch를 실행한다.

탐지 포인트

  1. manifest version/hash 변경 직후 win01의 patch download/execution 이벤트가 발생하는지 본다.
  2. 변경 주체와 시간대가 정상 배포 절차와 일치하는지 확인한다.

원본 로그 기준 탐색 포인트

관찰할 행위원본 필드/문자열분석 의미
manifest 변경/opt/hanguel-pms/updates/manifest.json, version, sha256배포 metadata가 언제 바뀌었는지 확인
patch 본문 변경/opt/hanguel-pms/updates/patch.ps1신뢰된 이름을 유지한 파일 변조 여부 확인
hash snapshot 생성/opt/hanguel-pms/evidence/patch_hashes_*.json정상/변조 hash 비교 근거
agent 다운로드와 연결/updates/patch.ps1 HTTP access log변경된 patch가 실제 win01로 전달됐는지 확인

Analyst Hunting KQL

공급망 변조는 먼저 파일 경로, manifest, patch 해시 변경 흔적을 기준으로 찾는다.

host.name:"hanguel-ops-pms" and file.path:("/opt/hanguel-pms/updates/manifest.json" or "/opt/hanguel-pms/updates/patch.ps1")
host.name:"hanguel-ops-pms" and message:(*manifest.json* or *patch.ps1* or *sha256* or *patch_hashes*)
host.name:"hanguel-ops-pms" and file.path:*patch.ps1* and file.hash.sha256:*
host.name:"hanguel-ops-pms" and message:(*"/opt/hanguel-pms/updates/manifest.json"* or *"/opt/hanguel-pms/evidence/patch_hashes_"*)

Normalized Pivot

log.id:"HAP-002" or event.action:"pms_patch_changed_emulated"