HAP-002 PMS Patch Manifest and Hash Evidence
공격 행위 요약
공격자는 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 비교 |
| ELK | hanguel-ad-agent-* | pms_patch_changed_emulated, pms_patch_downloaded |
주요 필드
| 필드 | 의미 | 예시 |
file.path | 변경 파일 경로 | /opt/hanguel-pms/updates/patch.ps1 |
file.hash.sha256 | 파일 해시 | redacted hash |
message | manifest/hash snapshot 원문 또는 collector 요약 | patch.ps1 sha256=... |
event.action | 정규화된 보조 행위 | pms_patch_changed_emulated |
hanguel.classification | 분류 | suspicious |
커버하는 Techniques Used
탐지 포인트
- manifest version/hash 변경 직후 win01의 patch download/execution 이벤트가 발생하는지 본다.
- 변경 주체와 시간대가 정상 배포 절차와 일치하는지 확인한다.
원본 로그 기준 탐색 포인트
| 관찰할 행위 | 원본 필드/문자열 | 분석 의미 |
| 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"