LegacyHive: 다른 사용자의 레지스트리 하이브를 로드하는 윈도우 사용자 프로필 서비스 버그 악몽
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
LegacyHive는 Windows 사용자 프로파일 서비스(ProfSvc)의 패치되지 않은 로컬 권한 상승 취약점입니다. 공격자는 레지스트리 오염, 객체 관리자 심볼릭 링크 및 옵록을 통한 TOCTOU 레이스 조건을 조합하여 SYSTEM 레벨의 서비스가 대상 사용자의 레지스트리 하이브를 로드하도록 강제할 수 있습니다. 이를 통해 낮은 권한의 사용자가 민감한 레지스트리 데이터에 비인가 접근을 하거나, 잠재적으로 전체 SYSTEM 손상을 초래할 수 있습니다.
조사
연구자 Nightmare-Eclipse는 SYSTEM 레벨 파일 작업과 사용자 제어 경로 간의 불일치를 이용하는 개념 증명(PoC)을 개발했습니다. 조사는 Local AppData 레지스트리 값을 수정하여 서비스가 NT 객체 관리자 네임스페이스로 리디렉션될 수 있음을 시연합니다. 공격자는 미끼 파일에 옵포르투니스틱 락(oplock)을 사용하여 서비스가 하이브를 로드하려는 정확한 순간에 심볼릭 링크를 교환할 수 있습니다.
긴급 조치
Microsoft는 경로 정규화를 구현하여 해결된 경로가 적법한 사용자 프로파일 디렉터리 내에 남아 있음을 보장하고 장치/객체 관리자 접두사를 거부해야 합니다. 또한 개발자는 재분석 보호(FILE_FLAG_OPEN_REPARSE_POINT)를 사용하고, SYSTEM 컨텍스트가 아닌 사용자의 보안 컨텍스트 내에서 I/O를 수행하여 혼란된 대리자 상황을 방지해야 합니다.
대응
수비자는 비대화형으로 로그인한 계정의 비정상적인 레지스트리 로드(RegLoadKey)를 즉시 모니터링하고 BaseNamedObjectsRestricted 아래에 객체 디렉터리가 생성되는 것을 주의 깊게 봐야 합니다. WDAC 또는 AppLocker와 같은 애플리케이션 제어 도구를 사용하여 서명되지 않은 바이너리의 실행을 방지해야 합니다. Microsoft가 공식 패치를 배포하면 모든 Windows 데스크톱 및 서버 설치에서의 배포가 우선시되어야 합니다.
공격 흐름
탐지
레거시하이브 악용 가능성 행위(레지스트리 이벤트를 통해)
보기
레거시하이브 악용 가능성 행위(파일 이벤트를 통해)
보기
레거시하이브 악용 가능성 행위(cmdline을 통해)
보기
확률 높은 Windows Hacktools 사용 [Part3] (파일 이벤트를 통해)
보기
확률 높은 Windows Hacktools 사용 [Part3] (cmdline을 통해)
보기
레거시하이브 권한 상승 공격 탐지 [Windows 레지스트리 이벤트]
보기
CreateProcessWithLogonW 및 중단된 메모장을 통해 레거시하이브 익스플로잇 시도를 탐지 [Windows 프로세스 생성]
보기
상황 보고서
- 테스트 케이스 ID: TC-20240522-K9P2L
- TTPs: T1068, T1548
-
탐지 규칙 논리 요약: 레거시하이브 취약점을 악용하려는 시도를 탐지하기 위해
notepad.exe가CreateProcessWithLogonWAPI 패턴과 함께 명령줄에서 실행되는지 모니터링합니다. - 탐지 규칙 언어/형식: yaml
- 대상 보안 환경: Windows OS, Windows 이벤트 로그(프로세스 생성), EDR/SIEM.
- 탄력성 점수 (1-5): 2
-
정당성: 이 규칙은 특정 문자열(
CreateProcessWithLogonW)이CommandLine필드에 나타나는 것에 크게 의존합니다. 상대방은 동일한 결과를 얻기 위해 다른 API 호출을 사용하거나notepad.exe. - 핵심 발견 사항: 탐지는 단일 익스플로잇 구현에 매우 특화되어 있으며 공격 벡터의 사소한 변형에 대해 극히 취약합니다.
-
권장 사항: 여러 일반 바이너리(e.g.,
CreateProcess)의 변형을 모니터링하고 사용자 프로파일 서비스(ProfSvc) 이상을 모니터링하여 탐지를 확장하십시오.calc.exe,cmd.exe)
시뮬레이션 환경 & 컨텍스트
-
테스트 대상 TTPs:
- T1068: 권한 상승을 위한 악용
- T1548: 권한 상승 메커니즘 악용
-
TTP 컨텍스트 & 연관성: 레거시하이브 익스플로잇은 사용자를 대신하여 작업을 수행하도록 SYSTEM 레벨의 서비스를 강요하는 것을 기반으로 합니다.
CreateProcessWithLogonW을 사용하여 중단 상태의 프로세스를 생성함으로써 공격자는 환경을 조작하여 악성 레지스트리 하이브를 로드할 수 있습니다. 이 API 호출의 특정 명령줄 유물을 모니터링하는 것은 익스플로잇 단계의 폭로를 포착하려는 의도입니다. -
대상 환경:
- OS: Windows 10/11 또는 Windows Server 2019/2022
- 로깅: Sysmon (이벤트 ID 1) 또는 명령줄 감사가 활성화된 Windows 보안 이벤트 로그 (이벤트 ID 4688).
- 보안 스택: SIEM (e.g., Splunk, Microsoft Sentinel)
원격 측정 & 기준선 사전 검사
근거: 공격을 시뮬레이션하기 전에 대상 호스트가 필요한 로그를 생성하도록 구성되고, 이러한 로그가 SIEM에 수집되며, 탐지 규칙이 악성 활동에 반응하지 않는지를 확인해야 합니다. 이 검증 없이는 테스트 결과가 신뢰할 수 없습니다.
-
1. 원격 측정 구성 설명:
-
- 그룹 정책을 통해 “프로세스 생성 감사”가 활성화되어 있는지 확인하십시오 (컴퓨터 구성 > Windows 설정 > 보안 설정 > 고급 감사 정책 구성 > 세부 추적).
-
- “프로세스 생성 이벤트에 명령줄 포함”이 활성화되어 있는지 확인하십시오 (레지스트리:
HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemAuditProcessCreationIncludeCmdLine).
- “프로세스 생성 이벤트에 명령줄 포함”이 활성화되어 있는지 확인하십시오 (레지스트리:
-
- Sysmon을 설치하고 이벤트 ID 1(프로세스 생성)이 수집되고 있는지 확인하십시오.
-
-
2. 수집 및 기준선 검증:
-
작업 (정상 원격 측정): 표준 노트패드 인스턴스를 실행하여 프로세스 생성 로깅이 탐지하기 어려운 상태 없이 작동하는지 확인합니다.
Start-Process "notepad.exe" -
검증 쿼리 (수집):
DeviceProcessEvents | where FileName =~ "notepad.exe" | where ProcessCommandLine !contains "CreateProcessWithLogonW"
-
시뮬레이션 실행
전제 조건: 원격 측정 & 기준선 사전 검사가 통과해야 합니다.
근거: 이 섹션은 탐지 규칙을 유발하기 위해 설계된 상대방 기술(TTP)의 구체적인 실행을 상세히 설명합니다. 명령과 설명은 식별된 TTP를 직접 반영해야 하며 탐지 논리에서 예상되는 원격 측정을 정확히 생성하려고 합니다. 추상적이거나 관련 없는 예는 오진으로 이어질 수 있습니다.
-
공격 내러티브 및 명령: 공격자는 권한을 SYSTEM으로 상승시키기 위해 레거시하이브 취약점을 악용하려고 합니다. 이를 위해
CreateProcessWithLogonWWindows API를 호출하는 스크립트를 사용합니다. 목표는notepad.exe을 중단 상태로 실행하는 것입니다. 시뮬레이션은 탐지 규칙이 찾고 있는 명령줄 인수 패턴을 모방하기 위해 PowerShell 래퍼를 사용하여CreateProcessWithLogonW이라는 문자열을 특히 실행 컨텍스트 내에서 목표로 합니다.notepad.exe. -
회귀 테스트 스크립트:
# 명령줄 아티팩트 주입을 통한 레거시하이브 익스플로잇 시뮬레이션 # 참고: 이 스크립트는 탐지 테스트를 위한 명령줄 문자열 패턴을 시뮬레이션합니다. $targetProcess = "notepad.exe" $fakeArgument = "CreateProcessWithLogonW" Write-Host "[+] 레거시하이브 익스플로잇 시도 시뮬레이션 시작..." # cmd /c를 사용하여 명령줄 문자열이 명확히 전달되고 # 프로세스 생성 원격 측정에 나타나도록 합니다. Start-Process "cmd.exe" -ArgumentList "/c $targetProcess $fakeArgument" Write-Host "[+] 시뮬레이션 명령이 전송되었습니다. CreateProcessWithLogonW가 명령줄에 있는 notepad.exe를 위한 SIEM을 확인하십시오." -
정리 명령:
# 시뮬레이션에 의해 생성된 남아 있는 노트패드 또는 cmd 프로세스 종료 Stop-Process -Name "notepad" -ErrorAction SilentlyContinue Stop-Process -Name "cmd" -ErrorAction SilentlyContinue