Spacebar Campaigns

SB-07 Detection Map

이 페이지는 OZZY PMS Chain 환경에서 발생하는 공격 Technique과 이를 증명할 수 있는 Log Source를 분리해 정리한 Campaign Page 2 초안이다. Technique 문서는 공격 행위와 분석 관점을 설명하고, Log Catalog는 원본 로그 위치, 수집 방식, 주요 필드, 커버 가능한 Technique을 역매핑한다. 특히 loader 기반 실행은 직접 증거와 추론 증거를 분리하여 manual_mapping_inferred처럼 표현한다.

문서화 원칙 Technique 하나를 바로 탐지한다고 쓰지 않고, 실제 행위 단위인 "PMS patch 실행", "credential artifact 발견", "AWS control-plane local admin bridge", "DC WinRM/C$ 접근", "loader forensic artifact"를 Log ID와 연결한다.
Evidence Page 실제 KQL 조회와 Windows artifact 검증 흐름은 SB-07 Detection Evidence에서 확인한다.
Correlation Scope 현재 검증된 alert path는 Elastic Security native rule이 아니라 hanguel-alerts-*에 기록되는 Hanguel AD custom sequential correlator이다. Native .internal.alerts-*는 count 0이므로 별도 검증 과제로 둔다.

Environment Scope

AWS Regionap-northeast-2
Bastionhanguel-bastion, 10.60.0.10
PMS / JBosshanguel-ops-pms, 10.60.0.20
Domain Controllerhanguel-dc01, 10.60.20.10
Windows Clienthanguel-win01, 10.60.30.10
ELK / SOChanguel-soc01, 10.60.40.10
Campaign IDHGC-2026-AD-001

Technique to Log Map

# MITRE ID Technique 현재 환경 적용 여부 Related Logs Representative event.action
1T1133External Remote Services관측 가능HAB-001ssh_session_accepted
2T1046Network Service Discovery관측 가능HAB-001, HAP-001internal_service_probe, jboss_invoker_probe
3T1190Exploit Public-Facing Application핵심 TechniqueHAP-001, HAC-001jboss_command_execution
4T1195.002Supply Chain Compromise핵심 TechniqueHAP-002, HAW-001, HAC-001pms_patch_changed_emulated, pms_patch_executed
5T1053.005Scheduled Task / Job핵심 TechniqueHAW-003, HAD-008dc_scheduled_task_registered, task_xml_loader_action_found
6T1082System Information Discovery관측 가능HAW-001, HTE-002system_user_context, system_ipconfig
7T1482Domain Trust Discovery관측 가능HAW-001, HTE-002domain_controller_discovery, dc_srv_dns_lookup
8T1018Remote System Discovery관측 가능HAW-001, HTE-002dc_port_probe_445, dc_port_probe_5985
9T1552Unsecured Credentials핵심 TechniqueHAW-001, HAW-002, HTE-002, HAC-002dc_cred_xml_discovered, dc_cred_xml_imported
10T1078.004Valid Accounts: Cloud Accounts핵심 TechniqueHAC-002aws_get_password_data_win01_local_admin_verified
11T1078.003Valid Accounts: Local Accounts핵심 TechniqueHAC-002, HAW-002win01_local_admin_context, dc_cred_xml_imported
12T1021.001Remote Desktop Protocol관측 가능HAC-002win01_rdp_local_admin_context
13T1021.002SMB / Windows Admin Shares관측 가능HAW-002, HTE-002, HAC-002dc_c_admin_share_access
14T1021.006Windows Remote Management관측 가능HAW-002, HAW-003, HTE-002, HAC-002dc_winrm_whoami, dc_winrm_command_observed
15T1027Obfuscated Files or Information관측 가능HAD-002, HAD-004, HAD-009encrypted_payload_artifact_found, loader_execution_log_found
16T1620Reflective Code Loading추론 포함HAD-003, HAD-004, HAD-005, HAD-006, HAD-007, HAD-008, HAC-001loader_execution_log_found, manual_mapping_inferred_from_artifacts
17T1003.001OS Credential Dumping: LSASS Memory조건부 관측HAD-002, HAD-003, HAD-004, HAD-005, HAC-001sysmon_lsass_process_access, loader_execution_log_found

Behavior-Centric Detection Units

멘토님 피드백에 맞춰 Technique 단위만 나열하지 않고, 실제 공격자가 수행하는 행위 단위로 탐지 단위를 재정의한다. 각 행위는 primary logs, KQL, 후속 pivot을 가진다.

Behavior Unit What Happened Primary Logs KQL Pivot Evidence State
PMS patch executionPMS update path의 patch.ps1이 win01 PMS Agent에 의해 SYSTEM으로 실행됨HAP-002, HAW-001, HAW-003, HAC-001event.action:("pms_patch_executed" or "pms_patch_changed_emulated")확인됨
AD/DC discoverywin01에서 DC DNS/SRV, 445/5985 reachability, domain context를 확인함HAW-001, HTE-002event.action:("domain_controller_discovery" or "dc_port_probe_445" or "dc_port_probe_5985")확인됨
Credential artifact accessdc_cred.xml 발견, SYSTEM Import-Clixml 실패, local Administrator 컨텍스트에서 Import-Clixml 성공을 분리해 확인함HAW-001, HAW-002, HTE-002, HAC-002event.action:("dc_cred_xml_discovered" or "dc_cred_xml_imported")확인됨
AWS control-plane local admin bridgeAWS ec2:GetPasswordData와 EC2 private key로 win01 local Administrator password를 획득하고, 비밀 출력 없이 WinRM/RDP 컨텍스트를 확인함HAC-002event.action:"aws_get_password_data_win01_local_admin_verified"확인됨
DC remote accesslocal Administrator 컨텍스트에서 복호화된 HANGUEL\Administrator credential object로 DC WinRM/C$ 접근 및 원격 task 등록 흐름 확인HAW-002, HAW-003, HAW-004, HTE-002, HAC-001, HAC-002event.action:("dc_winrm_whoami" or "dc_c_admin_share_access" or "dc_scheduled_task_registered")확인됨
Loader artifact reconstructionTask XML, Application Error, Amcache, ShimCache, USN Journal, loader run log로 loader 실행 흐름 재구성HAD-004, HAD-005, HAD-006, HAD-007, HAD-008, HAD-009, HAC-001log.id:("HAD-005" or "HAD-006" or "HAD-007" or "HAD-008" or "HAD-009")확인됨 + 일부 추론
LSASS access direct proofSysmon Event ID 10으로 hgl_loader.exe -> lsass.exe를 직접 증명하는 단계HAD-003event.action:"sysmon_lsass_process_access" and not hanguel.test_runner:true미확인

Log Source Documentation Standard

Page 2의 각 Log ID는 단순 경로가 아니라, 발생 조건과 필드 의미까지 포함해야 한다. 아래 표는 SB-07에서 우선 보강한 실무형 로그 설명 기준이다.

Log ID Original Location When It Appears Important Fields Collection Example KQL
HAW-001C:\ProgramData\HanguelADAgent\logs\*.jsonlwin01 PMS patch/AD discovery/credential artifact 요약 이벤트 생성event.action, host.name, user.name, hanguel.classificationHanguel AD Agent -> Logstash HTTP -> ESlog.id:"HAW-001" and campaign.id:"SB-07"
HAW-002PowerShell Operational / agent-normalized eventImport-Clixml, Invoke-Command, New-PSDrive 등 credential 사용 및 DC 접근powershell.command, event.action, related.hostscollector summary -> hanguel-ad-agent-*event.action:("dc_winrm_whoami" or "dc_c_admin_share_access")
HAD-003Microsoft-Windows-Sysmon/OperationalSysmon 설치 후 process create/access/file create/image load 발생event.code, SourceImage, TargetImage, GrantedAccessSysmon + Windows Event collectorevent.action:"sysmon_lsass_process_access"
HAD-005Windows Logs > Application, Event ID 1000/1001hgl_loader.exe crash 또는 WER reporting 발생process.name, error.code, event.codecollector summary -> hanguel-ad-agent-*log.id:"HAD-005" and event.action:"application_loader_crash_observed"
HAD-006C:\Windows\AppCompat\Programs\Amcache.hveApplication Compatibility inventory에 실행 파일 metadata가 남을 때file.path, pe.architecture, artifact.sourceforensic collector summaryevent.action:"amcache_loader_artifact_found"
HAD-007HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCacheShimCache/AppCompatCache에 executable path reference가 남을 때registry.path, file.path, artifact.sourceregistry collector summaryevent.action:"shimcache_loader_artifact_found"
HAD-008TaskCache registry + C:\Windows\System32\Tasks\*DC loader scheduled task 등록/실행 action 확인task.name, task.action, process.command_linetask collector summaryevent.action:("taskcache_loader_task_found" or "task_xml_loader_action_found")
HAD-009fsutil usn readjournal C: csvloader/payload/run script 파일 생성/수정/close lifecycle 확인file.name, file.path, usn.reasonUSN collector summaryevent.action:"usn_loader_file_lifecycle_observed"
HAC-001hanguel-alerts-*custom sequential correlator가 여러 event.action을 시간창 내에서 연결rule.id, correlation.key, correlation.actionsHanguel AD correlator reads hanguel-ad-agent-* + langflow-agent-* -> EScorrelation.key:"run:SB07-FULL-BAS-20260528-111840"
HAC-002AD-JBOSS\verify_aws_control_plane_win01_admin.py redacted JSON outputAWS GetPasswordData, win01 local Administrator WinRM, dc_cred.xml Import-Clixml, DC WinRM/C$ 확인password_data_present, plaintext_printed:false, dc_winrm_succeeded, dc_c_admin_share_succeededManual verification script, optional HTTP collector -> current index langflow-agent-*event.action:"aws_get_password_data_win01_local_admin_verified"

Hanguel AD Agent Packaging

수집 스크립트가 흩어져 보이지 않도록 최종 운영 기준 경로를 C:\ProgramData\HanguelADAgent\로 정의한다. 기존 C:\ProgramData\HanguelPMS\ 경로는 PMS patch chain의 공격/실습 artifact 경로로 남기고, 탐지 수집 패키지는 별도 agent 경로로 분리한다.

Package Item Recommended Path Purpose Status
Agent configC:\ProgramData\HanguelADAgent\config.jsoncampaign id, collector endpoint, host role, log routing 설정패키지 기준 정의됨
Windows detection collectorC:\ProgramData\HanguelADAgent\collectors\collect_windows_detection_logs.ps1Defender, Security, PowerShell, TaskScheduler, Sysmon 이벤트 정규화패키지 포함
Loader artifact collectorC:\ProgramData\HanguelADAgent\collectors\collect_loader_bypass_artifacts.ps1Amcache, ShimCache, TaskCache, Task XML, USN Journal, WER artifact 요약패키지 포함
Local normalized outputC:\ProgramData\HanguelADAgent\logs\*.jsonlELK 전송 전 로컬 원본 보존 및 재전송 근거패키지 기준 정의됨
Optional SysmonC:\ProgramData\HanguelADAgent\tools\Sysmon\Event ID 10 ProcessAccess, Event ID 11 FileCreate 직접 증거 확보직접 LSASS 증거는 아직 미확인

Detection Details

아래 상세 항목은 Technique별로 어떤 행위가 발생하고, 어떤 Log ID를 1차 근거로 삼아야 하며, 어떤 필드와 KQL로 확인할 수 있는지 정리한다. 단일 로그만으로 단정하지 않고, host.name, source.ip, event.action, hanguel.classification, related.events를 pivot으로 연결한다.

T1195.002 PMS Patch Supply Chain

PMS update path의 manifest와 patch.ps1이 변경되고, win01 PMS Agent가 이를 정상 업데이트처럼 다운로드/실행하는 단계다.

Detection Point

patch.ps1 hash 변경, pms_patch_executed, SYSTEM 실행 context

KQL Draft

event.action : ("pms_patch_changed_emulated" or "pms_patch_executed")

Investigation Pivot: PMS host의 manifest/hash 변경 시간과 win01의 patch 실행 시간, 이후 AD/DC discovery 이벤트를 연결한다.

T1082 / T1482 / T1018 win01 Discovery

win01 SYSTEM 컨텍스트에서 사용자, IP/DNS, 도메인 컨트롤러, DC SMB/WinRM 포트 접근성을 확인하는 단계다.

Detection Point

system_user_context, domain_controller_discovery, dc_port_probe_445

KQL Draft

event.action : ("domain_controller_discovery" or "dc_srv_dns_lookup" or "dc_port_probe_445" or "dc_port_probe_5985")

T1552 Credential Artifact

C:\ProgramData\HanguelPMS\dc_cred.xml을 발견하고, SYSTEM 컨텍스트의 Import-Clixml 실패와 win01 local Administrator 컨텍스트의 Import-Clixml 성공을 분리해 확인하는 단계다.

Detection Point

dc_cred_xml_discovered, dc_cred_xml_imported, password redaction 여부

KQL Draft

event.action : ("dc_cred_xml_discovered" or "dc_cred_xml_imported")

T1078.004 / T1078.003 / T1021.001 AWS Control-Plane Local Admin Bridge

AWS control-plane credential과 EC2 private key로 hanguel-win01 local Administrator password를 얻고, WinRM/RDP로 local Administrator 컨텍스트를 확보하는 단계다. 이 단계는 DPAPI 우회가 아니라, 올바른 사용자 컨텍스트를 획득해 Export-Clixml 보호 범위 안에서 복호화한 것으로 표현한다.

Detection Point

aws_get_password_data_win01_local_admin_verified, plaintext_printed:false, win01_local_admin_context

KQL Draft

event.action : ("aws_get_password_data_win01_local_admin_verified" or "win01_local_admin_context")

T1021.002 / T1021.006 DC WinRM and C$ Access

win01 local Administrator 컨텍스트에서 dc_cred.xml로 복호화한 도메인 관리자 credential object를 사용해 DC WinRM command와 C$ admin share 접근을 수행하는 단계다.

Detection Point

dc_winrm_whoami, dc_c_admin_share_access, dc_scheduled_task_registered

KQL Draft

event.action : ("dc_winrm_whoami" or "dc_c_admin_share_access" or "dc_scheduled_task_registered")

T1620 / T1003.001 Loader and LSASS Artifact

DC에 loader chain 파일이 배치되고, Task XML, Application Error, Amcache, ShimCache, USN Journal, loader run log로 실행 흐름을 재구성하는 단계다. Sysmon Event ID 10이 없으면 LSASS process access는 직접 증거가 아니라 한계로 표시한다.

Detection Point

application_loader_crash_observed, amcache_loader_artifact_found, usn_loader_file_lifecycle_observed

KQL Draft

log.id : ("HAD-005" or "HAD-006" or "HAD-007" or "HAD-008" or "HAD-009")

Technique to Log Matrix

TechniqueHAB-001HAP-001HAP-002HAW-001HAW-002HAW-003HAW-004HAD-003HAD-004HAD-005~009HTE-002HAC-001HAC-002
T1133 External Remote ServicesO------------
T1046 Network Service DiscoveryOO-----------
T1190 Exploit Public-Facing Application-O---------O-
T1195.002 Supply Chain Compromise-OOO-O----OO-
T1082/T1482/T1018 Discovery---O------OO-
T1552 Unsecured Credentials---OO-----OOO
T1078.004/T1078.003 Valid Accounts----O-------O
T1021.001 RDP to win01------------O
T1021.002/T1021.006 Remote Services----OOO---OOO
T1620 Reflective Code Loading-----OOOOO-O-
T1003.001 LSASS Memory------O확장 필요OO-O-

Referenced Log Catalog

Current Gaps

  1. Sysmon Event ID 10 기반 hgl_loader.exe -> lsass.exe ProcessAccess 직접 증거는 아직 재현 캡처가 필요하다.
  2. manual_mapping_inferred는 직접 증거가 아니라 loader run log, Application Error, Amcache, ShimCache, Task XML, USN Journal 조합에 따른 추론으로 유지한다.
  3. Bastion SSH, JBoss HTTP access, PMS relay access log를 ELK로 직접 ingest하면 초기 접근부터 supply chain까지의 증거가 더 강해진다.
  4. 정상 traffic emulation인 HTE-001과 공격 traffic emulation인 HTE-002를 Page 3 Detection Evidence 캡처로 분리하면 오탐/탐지 비교가 쉬워진다.
  5. CloudTrail, VPC Flow Log를 연결하면 AWS-level 접근과 내부 east-west traffic을 보조 증거로 확장할 수 있다.