HAP-001 PMS JBoss and Update Relay HTTP Log
공격 행위 요약
공격자는 bastion에서 hanguel-ops-pms:8080 JBoss AS 6 서비스를 식별하고, /invoker/JMXInvokerServlet 같은 취약 표면을 확인한다. 이후 Windows PMS Agent가 신뢰하는 /updates/manifest.json, /updates/patch.ps1 조회 흐름이 발생한다.
로그 발생 위치
| 구분 | 위치 | 설명 |
| JBoss container | Docker JSON log 또는 container stdout | JBoss HTTP request, error, invoker 접근 |
| PMS relay | journalctl -u hanguel-pms-relay.service | 8081 internal relay 파일 요청 |
| Update path | /opt/hanguel-pms/updates/manifest.json, /opt/hanguel-pms/updates/patch.ps1 | 배포 파일 원본 |
주요 필드
| 필드 | 의미 | 예시 |
url.path | 요청 경로 | /invoker/JMXInvokerServlet |
http.request.method | HTTP method | GET, POST |
http.response.status_code | 응답 코드 | 200, 500 |
source.ip | 요청 출발지 | 10.60.30.10 |
message | 원본 access/journal/docker log line | GET /updates/patch.ps1 HTTP/1.1 |
event.action | 정규화된 보조 행위 | jboss_invoker_probe, pms_patch_downloaded |
커버하는 Techniques Used
탐지 포인트
source.ip:10.60.30.10 win01이 patch를 주기적으로 조회하는 정상 baseline을 만든다.
- bastion 또는 비정상 source가 JBoss invoker, deploy path, update path를 짧은 시간에 탐색하는지 본다.
원본 로그 기준 탐색 포인트
| 관찰할 행위 | 원본 필드/문자열 | 분석 의미 |
| JBoss 취약 표면 확인 | /invoker/JMXInvokerServlet, /invoker/readonly | JBoss AS 6 취약 표면 probe 여부 확인 |
| PMS manifest 조회 | /updates/manifest.json | PMS Agent 또는 공격자가 update metadata를 조회했는지 확인 |
| PMS patch 다운로드 | /updates/patch.ps1 | win01 agent가 변경된 patch를 가져간 시간 확인 |
| 비정상 요청 주체 | source.ip, http.request.method, http.response.status_code | bastion, win01, 외부 source를 구분 |
| relay 서비스 로그 | journalctl -u hanguel-pms-relay.service 원문 | 8081 relay 기반 파일 제공 여부 확인 |
Analyst Hunting KQL
HTTP 로그는 원본 요청 경로와 응답 코드로 먼저 탐색한다. event.action은 보조 피벗이며, JBoss/PMS 로그가 정규화되지 않은 경우에는 message 필드가 가장 넓게 동작한다.
host.name:"hanguel-ops-pms" and url.path:("/invoker/JMXInvokerServlet" or "/invoker/readonly" or "/updates/manifest.json" or "/updates/patch.ps1")
host.name:"hanguel-ops-pms" and message:(*"/invoker/JMXInvokerServlet"* or *"/updates/patch.ps1"* or *"/updates/manifest.json"*)
host.name:"hanguel-ops-pms" and source.ip:"10.60.30.10" and message:*"/updates/patch.ps1"*
host.name:"hanguel-ops-pms" and message:(*Apache-Coyote* or *JBossAS-6* or *JMXInvokerServlet*)
Normalized Pivot
host.name:"hanguel-ops-pms" and event.action:("jboss_invoker_probe" or "pms_patch_downloaded")