Windows 자격 증λͺ… 보호

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°

WDigest

The WDigest ν”„λ‘œν† μ½œμ€ Windows XPμ—μ„œ λ„μž…λ˜μ—ˆμœΌλ©° HTTP Protocol을 ν†΅ν•œ 인증을 μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 ν”„λ‘œν† μ½œμ€ Windows XPλΆ€ν„° Windows 8.0 및 Windows Server 2003λΆ€ν„° Windows Server 2012κΉŒμ§€ 기본적으둜 ν™œμ„±ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λ³Έ μ„€μ •μœΌλ‘œ 인해 LSASS (Local Security Authority Subsystem Service)에 평문 λΉ„λ°€λ²ˆν˜Έκ°€ μ €μž₯λ©λ‹ˆλ‹€. κ³΅κ²©μžλŠ” Mimikatzλ₯Ό μ‚¬μš©ν•˜μ—¬ 이 자격증λͺ…을 μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€:

sekurlsa::wdigest

이 κΈ°λŠ₯을 λ„κ±°λ‚˜ 켜렀면, UseLogonCredential 및 Negotiate λ ˆμ§€μŠ€νŠΈλ¦¬ ν‚€κ°€ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest μ•ˆμ—μ„œ β€œ1β€œλ‘œ μ„€μ •λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν‚€κ°€ μ—†κ±°λ‚˜ λ˜λŠ” β€œ0β€œμœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆλ‹€λ©΄, WDigestλŠ” λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€:

reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential

LSA 보호 (PP & PPL 보호된 ν”„λ‘œμ„ΈμŠ€)

Protected Process (PP) 및 **Protected Process Light (PPL)**은 Windows 컀널 μˆ˜μ€€ 보호둜, LSASS와 같은 λ―Όκ°ν•œ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 무단 μ•‘μ„ΈμŠ€λ₯Ό λ°©μ§€ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Windows Vistaμ—μ„œ λ„μž…λœ PP λͺ¨λΈμ€ μ›λž˜ DRM κ°•μ œλ₯Ό μœ„ν•΄ λ§Œλ“€μ–΄μ‘ŒμœΌλ©°, 특수 λ―Έλ””μ–΄ μΈμ¦μ„œλ‘œ μ„œλͺ…λœ λ°”μ΄λ„ˆλ¦¬λ§Œ 보호될 수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. PP둜 ν‘œμ‹œλœ ν”„λ‘œμ„ΈμŠ€λŠ” λ™μΌν•˜κ²Œ PPμ΄κ±°λ‚˜ 더 높은 보호 μˆ˜μ€€μ„ κ°€μ§„ λ‹€λ₯Έ PP ν”„λ‘œμ„ΈμŠ€λ§Œ μ ‘κ·Όν•  수 있으며, κ·Έ κ²½μš°μ—λ„ λͺ…μ‹œμ μœΌλ‘œ ν—ˆμš©λ˜μ§€ μ•ŠμœΌλ©΄ μ œν•œλœ μ ‘κ·Ό κΆŒν•œλ§Œ ν—ˆμš©λ©λ‹ˆλ‹€.

PPL은 Windows 8.1μ—μ„œ λ„μž…λœ 보닀 μœ μ—°ν•œ λ²„μ „μ˜ PPμž…λ‹ˆλ‹€. λ””μ§€ν„Έ μ„œλͺ…μ˜ EKU (Enhanced Key Usage) ν•„λ“œλ₯Ό 기반으둜 ν•œ **β€œλ³΄ν˜Έ μˆ˜μ€€β€**을 λ„μž…ν•˜μ—¬ LSASS, Defender λ“±μ—μ„œ 더 넓은 μ‚¬μš© 사둀λ₯Ό ν—ˆμš©ν•©λ‹ˆλ‹€. 보호 μˆ˜μ€€μ€ EPROCESS.Protection ν•„λ“œμ— μ €μž₯되며, μ΄λŠ” λ‹€μŒμ„ ν¬ν•¨ν•˜λŠ” PS_PROTECTION κ΅¬μ‘°μ²΄μž…λ‹ˆλ‹€:

  • Type (Protected or ProtectedLight)
  • Signer (예: WinTcb, Lsa, Antimalware λ“±)

이 κ΅¬μ‘°μ²΄λŠ” 단일 λ°”μ΄νŠΈλ‘œ νŒ¨ν‚Ήλ˜μ–΄ λˆ„κ°€ λˆ„κ΅¬μ— μ ‘κ·Όν•  수 μžˆλŠ”μ§€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€:

  • Higher signer values can access lower ones
  • PPLs can’t access PPs
  • Unprotected processes can’t access any PPL/PP

곡격 κ΄€μ μ—μ„œ μ•Œμ•„μ•Ό ν•  점

  • LSASSκ°€ PPL둜 싀행될 λ•Œ, 일반 κ΄€λ¦¬μž μ»¨ν…μŠ€νŠΈμ—μ„œ OpenProcess(PROCESS_VM_READ | QUERY_INFORMATION)둜 μ—΄λ €κ³  ν•˜λ©΄ SeDebugPrivilegeκ°€ ν™œμ„±ν™”λ˜μ–΄ μžˆμ–΄λ„ **0x5 (Access Denied)**둜 μ‹€νŒ¨ν•©λ‹ˆλ‹€.
  • Process Hacker 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ EPROCESS.Protection 값을 읽어 ν”„λ‘œκ·Έλž˜λ°μ μœΌλ‘œ LSASS 보호 μˆ˜μ€€μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • LSASSλŠ” 일반적으둜 PsProtectedSignerLsa-Light (0x41)λ₯Ό κ°€μ§€λ©°, μ΄λŠ” WinTcb (0x61 λ˜λŠ” 0x62)와 같은 더 높은 μˆ˜μ€€μ˜ signer둜 μ„œλͺ…λœ ν”„λ‘œμ„ΈμŠ€λ§Œ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • PPL은 Userland μ „μš© μ œν•œμ΄λ©°, 컀널 μˆ˜μ€€ μ½”λ“œλ‘œλŠ” μ™„μ „νžˆ μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • LSASSκ°€ PPL이라 ν•˜λ”λΌλ„ kernel shellcodeλ₯Ό μ‹€ν–‰ν•  수 μžˆκ±°λ‚˜ μ μ ˆν•œ μ ‘κ·Ό κΆŒν•œμ„ κ°€μ§„ κ³ κΆŒν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ΄μš©ν•  수 μžˆλ‹€λ©΄ credential dumping을 λ°©μ§€ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.
  • PPL μ„€μ • λ˜λŠ” μ œκ±°λŠ” μž¬λΆ€νŒ… λ˜λŠ” Secure Boot/UEFI 섀정을 ν•„μš”λ‘œ ν•˜λ©°, λ ˆμ§€μŠ€νŠΈλ¦¬ 변경을 되돌린 후에도 PPL 섀정이 지속될 수 μžˆμŠ΅λ‹ˆλ‹€.

런치 μ‹œ PPL ν”„λ‘œμ„ΈμŠ€ 생성 (λ¬Έμ„œν™”λœ API)

WindowsλŠ” ν™•μž₯된 μ‹œμž‘ 속성 λͺ©λ‘(extended startup attribute list)을 μ‚¬μš©ν•΄ 생성 쀑에 μžμ‹ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ Protected Process Light μˆ˜μ€€μ„ μš”μ²­ν•˜λŠ” λ¬Έμ„œν™”λœ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŠ” μ„œλͺ… μš”κ΅¬μ‚¬ν•­μ„ μš°νšŒν•˜μ§€ μ•ŠμœΌλ©° β€” λŒ€μƒ μ΄λ―Έμ§€λŠ” μš”μ²­λœ signer ν΄λž˜μŠ€μ— 맞게 μ„œλͺ…λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

Minimal flow in C/C++:

// Request a PPL protection level for the child process at creation time
// Requires Windows 8.1+ and a properly signed image for the selected level
#include <windows.h>

int wmain(int argc, wchar_t **argv) {
STARTUPINFOEXW si = {0};
PROCESS_INFORMATION pi = {0};
si.StartupInfo.cb = sizeof(si);

SIZE_T attrSize = 0;
InitializeProcThreadAttributeList(NULL, 1, 0, &attrSize);
si.lpAttributeList = (PPROC_THREAD_ATTRIBUTE_LIST)HeapAlloc(GetProcessHeap(), 0, attrSize);
if (!si.lpAttributeList) return 1;

if (!InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, &attrSize)) return 1;

DWORD level = PROTECTION_LEVEL_ANTIMALWARE_LIGHT; // or WINDOWS_LIGHT/LSA_LIGHT/WINTCB_LIGHT
if (!UpdateProcThreadAttribute(
si.lpAttributeList, 0,
PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL,
&level, sizeof(level), NULL, NULL)) {
return 1;
}

DWORD flags = EXTENDED_STARTUPINFO_PRESENT;
if (!CreateProcessW(L"C\\Windows\\System32\\notepad.exe", NULL, NULL, NULL, FALSE,
flags, NULL, NULL, &si.StartupInfo, &pi)) {
// If the image isn't signed appropriately for the requested level,
// CreateProcess will fail with ERROR_INVALID_IMAGE_HASH (577).
return 1;
}

// cleanup
DeleteProcThreadAttributeList(si.lpAttributeList);
HeapFree(GetProcessHeap(), 0, si.lpAttributeList);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}

λ…ΈνŠΈ 및 μ œμ•½:

  • STARTUPINFOEXλ₯Ό InitializeProcThreadAttributeList와 UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL, ...)와 ν•¨κ»˜ μ‚¬μš©ν•œ λ‹€μŒ, EXTENDED_STARTUPINFO_PRESENTλ₯Ό CreateProcess*에 μ „λ‹¬ν•©λ‹ˆλ‹€.
  • 보호 DWORDλŠ” PROTECTION_LEVEL_WINTCB_LIGHT, PROTECTION_LEVEL_WINDOWS, PROTECTION_LEVEL_WINDOWS_LIGHT, PROTECTION_LEVEL_ANTIMALWARE_LIGHT, λ˜λŠ” PROTECTION_LEVEL_LSA_LIGHT와 같은 μƒμˆ˜λ‘œ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” ν•΄λ‹Ή 이미지가 κ·Έ signer class둜 μ„œλͺ…λœ κ²½μš°μ—λ§Œ PPL둜 μ‹œμž‘ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ ν”„λ‘œμ„ΈμŠ€ 생성이 μ‹€νŒ¨ν•˜λ©°, 일반적으둜 ERROR_INVALID_IMAGE_HASH (577) / STATUS_INVALID_IMAGE_HASH (0xC0000428)둜 λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
  • 이것은 μš°νšŒκ°€ μ•„λ‹™λ‹ˆλ‹€ β€” 적절히 μ„œλͺ…λœ 이미지에 λŒ€ν•΄ μ˜λ„λœ 지원 APIμž…λ‹ˆλ‹€. 도ꡬλ₯Ό κ°•ν™”ν•˜κ±°λ‚˜ PPL둜 보호된 κ΅¬μ„±μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λŠ” 데 μœ μš©ν•©λ‹ˆλ‹€.

μ΅œμ†Œ λ‘œλ”λ₯Ό μ‚¬μš©ν•œ CLI μ˜ˆμ‹œ:

  • Antimalware signer: CreateProcessAsPPL.exe 3 C:\Tools\agent.exe --svc
  • LSA-light signer: CreateProcessAsPPL.exe 4 C:\Windows\System32\notepad.exe

Bypass PPL protections options:

PPL에도 λΆˆκ΅¬ν•˜κ³  LSASSλ₯Ό λ€ν”„ν•˜λ €λ©΄ μ£Όμš” μ˜΅μ…˜μ΄ 3κ°€μ§€ μžˆμŠ΅λ‹ˆλ‹€:

  1. **Use a signed kernel driver (e.g., Mimikatz + mimidrv.sys)**λ₯Ό μ‚¬μš©ν•˜μ—¬ LSASS의 보호 ν”Œλž˜κ·Έλ₯Ό μ œκ±°ν•©λ‹ˆλ‹€.

  1. μ·¨μ•½ν•œ λ“œλΌμ΄λ²„λ₯Ό 자체적으둜 가져와(BYOVD) μ»€μŠ€ν…€ 컀널 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κ³  보호λ₯Ό λΉ„ν™œμ„±ν™”ν•©λ‹ˆλ‹€. PPLKiller, gdrv-loader, λ˜λŠ” kdmapper와 같은 도ꡬ듀이 이λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.
  2. λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€(예: AV ν”„λ‘œμ„ΈμŠ€)κ°€ μ—΄μ–΄λ‘” κΈ°μ‘΄ LSASS 핸듀을 ν›”μ³μ„œ(steal) κ·Έ 핸듀을 μžμ‹ μ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ 볡제(duplicate) ν•©λ‹ˆλ‹€. 이것이 pypykatz live lsa --method handledup κΈ°λ²•μ˜ κΈ°λ°˜μž…λ‹ˆλ‹€.
  3. μž„μ˜μ˜ μ½”λ“œλ₯Ό ν•΄λ‹Ή μ£Όμ†Œ κ³΅κ°„μ΄λ‚˜ λ‹€λ₯Έ κΆŒν•œμžˆλŠ” ν”„λ‘œμ„ΈμŠ€ 내뢀에 λ‘œλ“œν•˜λ„λ‘ ν—ˆμš©ν•˜λŠ” 일뢀 κΆŒν•œμžˆλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ•…μš©ν•˜μ—¬ PPL μ œν•œμ„ μš°νšŒν•©λ‹ˆλ‹€. 이에 λŒ€ν•œ μ˜ˆμ‹œλŠ” bypassing-lsa-protection-in-userland λ˜λŠ” https://github.com/itm4n/PPLdumpμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

LSASS에 λŒ€ν•œ LSA 보호(PPL/PP)의 ν˜„μž¬ μƒνƒœ 확인:

reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL

When you running mimikatz privilege::debug sekurlsa::logonpasswords it’ll probably fail with the error code 0x00000005 becasue of this.

Credential Guard

Credential Guard, a feature exclusive to Windows 10 (Enterprise and Education editions), enhances the security of machine credentials using Virtual Secure Mode (VSM) and Virtualization Based Security (VBS). It leverages CPU virtualization extensions to isolate key processes within a protected memory space, away from the main operating system’s reach. This isolation ensures that even the kernel cannot access the memory in VSM, effectively safeguarding credentials from attacks like pass-the-hash. The Local Security Authority (LSA) operates within this secure environment as a trustlet, while the LSASS process in the main OS acts merely as a communicator with the VSM’s LSA.

By default, Credential Guard is not active and requires manual activation within an organization. It’s critical for enhancing security against tools like Mimikatz, which are hindered in their ability to extract credentials. However, vulnerabilities can still be exploited through the addition of custom Security Support Providers (SSP) to capture credentials in clear text during login attempts.

To verify Credential Guard’s activation status, the registry key LsaCfgFlags under HKLM\System\CurrentControlSet\Control\LSA can be inspected. A value of β€œ1” indicates activation with UEFI lock, β€œ2” without lock, and β€œ0” denotes it is not enabled. This registry check, while a strong indicator, is not the sole step for enabling Credential Guard. Detailed guidance and a PowerShell script for enabling this feature are available online.

reg query HKLM\System\CurrentControlSet\Control\LSA /v LsaCfgFlags

For a comprehensive understanding and instructions on enabling Credential Guard in Windows 10 and its automatic activation in compatible systems of Windows 11 Enterprise and Education (version 22H2), visit Microsoft’s documentation.

Further details on implementing custom SSPs for credential capture are provided in this guide.

RDP RestrictedAdmin Mode

Windows 8.1 and Windows Server 2012 R2 introduced several new security features, including the Restricted Admin mode for RDP. This mode was designed to enhance security by mitigating the risks associated with pass the hash attacks.

μ „ν†΅μ μœΌλ‘œ RDPλ₯Ό 톡해 원격 컴퓨터에 μ—°κ²°ν•  λ•Œ, μ‚¬μš©μžμ˜ 자격 증λͺ…은 λŒ€μƒ 머신에 μ €μž₯λ©λ‹ˆλ‹€. μ΄λŠ” κΆŒν•œμ΄ 높은 계정을 μ‚¬μš©ν•  λ•Œ 특히 큰 λ³΄μ•ˆ μœ„ν—˜μ„ μ΄ˆλž˜ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ _Restricted Admin mode_κ°€ λ„μž…λ˜λ©΄μ„œ 이 μœ„ν—˜μ€ μƒλ‹Ήνžˆ μ€„μ–΄λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

mstsc.exe /RestrictedAdmin λͺ…λ ΉμœΌλ‘œ RDP 연결을 μ‹œμž‘ν•˜λ©΄, 원격 컴퓨터에 λŒ€ν•œ 인증이 ν•΄λ‹Ή 자격 증λͺ…을 그곳에 μ €μž₯ν•˜μ§€ μ•Šκ³  μˆ˜ν–‰λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ μ•…μ„±μ½”λ“œ 감염 λ˜λŠ” 원격 μ„œλ²„μ— μ•…μ˜μ  μ‚¬μš©μžκ°€ μ ‘κ·Όν•˜λ”λΌλ„ 자격 증λͺ…이 μ„œλ²„μ— μ €μž₯λ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ…ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ€‘μš”ν•œ 점은 Restricted Admin modeμ—μ„œλŠ” RDP μ„Έμ…˜μ—μ„œ λ„€νŠΈμ›Œν¬ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λ € ν•  λ•Œ 개인 자격 증λͺ…을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  λŒ€μ‹  컴퓨터 신원이 μ‚¬μš©λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 κΈ°λŠ₯은 원격 λ°μŠ€ν¬ν†± 연결을 λ³΄ν˜Έν•˜κ³  λ³΄μ•ˆ μΉ¨ν•΄ μ‹œ λ―Όκ°ν•œ 정보가 λ…ΈμΆœλ˜λŠ” 것을 λ°©μ§€ν•˜λŠ” 데 μ€‘μš”ν•œ 진전을 μ˜λ―Έν•©λ‹ˆλ‹€.

μžμ„Έν•œ μ •λ³΄λŠ” this resourceλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

Cached Credentials

WindowsλŠ” domain credentials을 톡해 **Local Security Authority (LSA)**둜 λ³΄ν˜Έν•˜λ©°, Kerberos 및 NTLMκ³Ό 같은 λ³΄μ•ˆ ν”„λ‘œν† μ½œλ‘œ 둜그온 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. Windows의 μ£Όμš” κΈ°λŠ₯ 쀑 ν•˜λ‚˜λŠ” μ‚¬μš©μžκ°€ domain controllerκ°€ μ˜€ν”„λΌμΈμΈ κ²½μš°μ—λ„ 컴퓨터에 μ•‘μ„ΈμŠ€ν•  수 μžˆλ„λ‘ λ§ˆμ§€λ§‰ 10개의 도메인 λ‘œκ·ΈμΈμ„ μΊμ‹œν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€. μ΄λŠ” νšŒμ‚¬ λ„€νŠΈμ›Œν¬μ—μ„œ 자주 λ–¨μ–΄μ Έ μžˆλŠ” λ…ΈνŠΈλΆ μ‚¬μš©μžμ—κ²Œ 맀우 μœ μš©ν•©λ‹ˆλ‹€.

μΊμ‹œλœ 둜그인 μˆ˜λŠ” νŠΉμ • registry key λ˜λŠ” group policyλ₯Ό 톡해 μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 섀정을 ν™•μΈν•˜κ±°λ‚˜ λ³€κ²½ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€:

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON" /v CACHEDLOGONSCOUNT

이 μΊμ‹œλœ 자격 증λͺ…에 λŒ€ν•œ 접근은 μ—„κ²©νžˆ ν†΅μ œλ˜λ©°, ν•΄λ‹Ή 정보λ₯Ό λ³Ό 수 μžˆλŠ” κΆŒν•œμ€ 였직 SYSTEM κ³„μ •μ—λ§Œ μžˆμŠ΅λ‹ˆλ‹€. 이 정보에 μ ‘κ·Όν•΄μ•Ό ν•˜λŠ” κ΄€λ¦¬μžλŠ” SYSTEM μ‚¬μš©μž κΆŒν•œμœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•©λ‹ˆλ‹€. 자격 증λͺ…은 λ‹€μŒμ— μ €μž₯λ©λ‹ˆλ‹€: HKEY_LOCAL_MACHINE\SECURITY\Cache

Mimikatzλ₯Ό μ‚¬μš©ν•΄ lsadump::cache λͺ…λ ΉμœΌλ‘œ 이 μΊμ‹œλœ 자격 증λͺ…을 μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μžμ„Έν•œ λ‚΄μš©μ€ 원문 sourceμ—μ„œ ν™•μΈν•˜μ„Έμš”.

Protected Users

Protected Users group의 ꡬ성원 μžκ²©μ€ μ‚¬μš©μžμ—κ²Œ μ—¬λŸ¬ λ³΄μ•ˆ κ°•ν™” κΈ°λŠ₯을 μ μš©ν•˜μ—¬ 자격 증λͺ… νƒˆμ·¨ 및 λ‚¨μš©μœΌλ‘œλΆ€ν„° 더 높은 μˆ˜μ€€μ˜ 보호λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€:

  • Credential Delegation (CredSSP): Group Policy의 Allow delegating default credentials 섀정이 ν™œμ„±ν™”λ˜μ–΄ μžˆμ–΄λ„, Protected Users의 평문 자격 증λͺ…은 μΊμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • Windows Digest: Windows 8.1 and Windows Server 2012 R2λΆ€ν„°λŠ” Windows Digest μƒνƒœμ™€ 관계없이 Protected Users의 평문 자격 증λͺ…을 μΊμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • NTLM: μ‹œμŠ€ν…œμ€ Protected Users의 평문 자격 증λͺ…μ΄λ‚˜ NT one-way functions (NTOWF)을 μΊμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • Kerberos: Protected Users의 경우 Kerberos 인증은 DES λ˜λŠ” RC4 keysλ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμœΌλ©°, 초기 Ticket-Granting Ticket (TGT) νšλ“μ„ λ„˜μ–΄μ„œ 평문 자격 증λͺ…μ΄λ‚˜ μž₯κΈ° ν‚€λ₯Ό μΊμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • Offline Sign-In: Protected UsersλŠ” 둜그인 λ˜λŠ” 잠금 ν•΄μ œ μ‹œ μΊμ‹œλœ κ²€μ¦μž(verifier)κ°€ μƒμ„±λ˜μ§€ μ•ŠμœΌλ―€λ‘œ μ˜€ν”„λΌμΈ λ‘œκ·ΈμΈμ€ μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ³΄ν˜ΈλŠ” μ‚¬μš©μžκ°€ Protected Users group의 κ΅¬μ„±μ›μœΌλ‘œ 기기에 λ‘œκ·ΈμΈν•˜λŠ” μˆœκ°„ μ μš©λ©λ‹ˆλ‹€. μ΄λŠ” λ‹€μ–‘ν•œ 자격 증λͺ… μΉ¨ν•΄ λ°©λ²•μœΌλ‘œλΆ€ν„° λ³΄ν˜Έν•˜κΈ° μœ„ν•œ μ€‘μš”ν•œ λ³΄μ•ˆ μ‘°μΉ˜κ°€ ν™œμ„±ν™”λ˜λ„λ‘ ν•©λ‹ˆλ‹€.

μžμ„Έν•œ μ •λ³΄λŠ” 곡식 documentation λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

Table from the docs.

Windows Server 2003 RTMWindows Server 2003 SP1+

Windows Server 2012,
Windows Server 2008 R2,
Windows Server 2008

Windows Server 2016
Account OperatorsAccount OperatorsAccount OperatorsAccount Operators
AdministratorAdministratorAdministratorAdministrator
AdministratorsAdministratorsAdministratorsAdministrators
Backup OperatorsBackup OperatorsBackup OperatorsBackup Operators
Cert Publishers
Domain AdminsDomain AdminsDomain AdminsDomain Admins
Domain ControllersDomain ControllersDomain ControllersDomain Controllers
Enterprise AdminsEnterprise AdminsEnterprise AdminsEnterprise Admins
Enterprise Key Admins
Key Admins
KrbtgtKrbtgtKrbtgtKrbtgt
Print OperatorsPrint OperatorsPrint OperatorsPrint Operators
Read-only Domain ControllersRead-only Domain Controllers
ReplicatorReplicatorReplicatorReplicator
Schema AdminsSchema AdminsSchema AdminsSchema Admins
Server OperatorsServer OperatorsServer OperatorsServer Operators

참고자료

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°