在執(zhí)行安全評估(例如滲透測試、Red Teaming等)后,,我習(xí)慣于向客戶的高級管理層匯報已完成的工作,。
這為討論諸如使用的攻擊策略、技術(shù)和程序(TTPs),、使用的攻擊向量,、發(fā)現(xiàn)、建議,、補(bǔ)救措施等內(nèi)容創(chuàng)造了機(jī)會,。
很多時候,領(lǐng)導(dǎo)團(tuán)隊都會對我最初在網(wǎng)絡(luò)上立足的一些方式或我使用的一些策略感到無比驚訝,。
對于他們中的大多數(shù)人來說,,他們期待著像《碟中諜》中湯姆·克魯斯那種風(fēng)格的黑客攻擊、繞過防火墻等等,,結(jié)果卻發(fā)現(xiàn)我毫不費(fèi)力地就破壞了他們的網(wǎng)絡(luò),。
因此,我通常會花時間向我的客戶闡明現(xiàn)代攻擊通常是如何進(jìn)行的,,以及像一個脆弱的用戶憑據(jù)這樣簡單的小漏洞如何能夠顛覆整個網(wǎng)絡(luò)防御,。
事實是,網(wǎng)絡(luò)攻擊強(qiáng)調(diào)更多的是效率而不是精致,。因此,,攻擊者不會尋找最難的突圍闖入方法。他們通常會尋找最簡單的進(jìn)入方式,。
我們通常將這種方法稱為阻力最小的路徑,,其中一條路徑就是登錄憑據(jù)。只需一組用戶憑據(jù),,您的整個網(wǎng)絡(luò)可能會落入敵人的手中,。
任務(wù)
早在2018年,一家大型醫(yī)療保健組織就與我們簽約,,對其外部網(wǎng)絡(luò)基礎(chǔ)設(shè)施進(jìn)行外部滲透測試,。對于從測試的范圍,該組織向我們提供了他們的域名和IP地址范圍,。當(dāng)然,,目標(biāo)是從互聯(lián)網(wǎng)上識別危害組織的攻擊向量。
外部滲透測試清單
偵察
在其他滲透測試技術(shù)中,,我無需提及或重復(fù)偵察在每次網(wǎng)絡(luò)攻擊或網(wǎng)絡(luò)滲透測試中的重要性,。網(wǎng)絡(luò)殺傷鏈的這個階段是您被動或主動收集有關(guān)目標(biāo)的情報的地方。
我通常利用這個機(jī)會使用開源情報(OSINT)工具和平臺進(jìn)行大量被動情報收集,以制定外部滲透測試計劃,。在這個階段,,我?guī)缀醪皇褂脪呙韫ぞ邅砉裟繕?biāo)網(wǎng)絡(luò),因為我可以獲得制定攻擊策略所需要的幾乎所有信息,。
那么,,在這個階段我通常在尋找什么?好吧,,在可以從OSINT中發(fā)現(xiàn)的大量信息中,,我通常會重點關(guān)注的關(guān)鍵內(nèi)容包括:
· 子域
· 登錄門戶(Citrix、OWA,、VPN,、SharePoint等)
· 技術(shù)類型(IIS等)
· 電子郵件地址
· 用戶名(很多)
外部滲透測試工具
使用諸如Google(Google.com)、Shodan(Shodan.io),、Censys(Censys.io),、connect.data.com、Ferge,、Recon ng,、SimpleMail、The Harvester,、SpiderFoot(SpiderFoot.net),、Email Hunter(Hunter.io)、VirusTotal(VirusTotal.com),、FOCA、Maltego和Pastebin(Pastebin.com)等工具,、網(wǎng)站和平臺,,我能夠收集到大量關(guān)于我的客戶的信息,例如子域,、電子郵件地址,、用戶名、主機(jī),、網(wǎng)絡(luò)服務(wù),、開放端口、先前違規(guī)行為泄露的憑據(jù),、登錄門戶等,。
為了在寫這篇文章的同時對我的客戶的姓名進(jìn)行保密,我使用了一個示例域和電子郵件搜索器來演示我獲取目標(biāo)客戶的用戶名格式和電子郵件地址(然后提取用戶名)的多種方法之一,。
目標(biāo)發(fā)展
我在偵察階段花費(fèi)了大量時間并收集了大量信息,,隨后我瀏覽了收集到的大量數(shù)據(jù),并戰(zhàn)略性地繪制出我的攻擊面和我將使用的攻擊技術(shù),。
在瀏覽這些數(shù)據(jù)時,,我對通常向組織的LDAP或AD環(huán)境進(jìn)行身份驗證的應(yīng)用程序和網(wǎng)絡(luò)服務(wù)非常感興趣,。
這可能是SMB、OWA,、Autodiscover,、VPN、Citrix,、Jenkins,、SharePoint、定制應(yīng)用程序等,。一旦我發(fā)現(xiàn)了這樣的服務(wù)以及要攻擊的服務(wù),,我就會組織我在偵察中發(fā)現(xiàn)的所有電子郵件地址和用戶名。
我確保已刪除了重復(fù)的電子郵件地址,、用戶名,,還交叉檢查了外部用戶名和內(nèi)部域用戶名的格式是否相同,或者是否存在差異,。
在此階段結(jié)束時,,我發(fā)現(xiàn)了客戶端的外部OWA和Citrix應(yīng)用程序等,并且還獲得了近1,000個唯一用戶名,。從這里開始,,我已準(zhǔn)備好進(jìn)入我的殺傷鏈的下一階段。
入侵
對于大多數(shù)攻擊,,這一階段對手會開始試圖獲得初始立足點,。在這個階段,很多事情都是迭代的,,因為這個階段使用的TTP會根據(jù)從偵察和目標(biāo)開發(fā)階段收集的信息而變化,。
在外部滲透測試期間,效率是關(guān)鍵,,并且在大多數(shù)情況下,,保持最簡是您的最佳途徑。在滲透測試的早期,,通常需要發(fā)現(xiàn)漏洞并對它們進(jìn)行利用,。
然而,隨著對手的TTP不斷進(jìn)化,,我們也必須不斷發(fā)展,。話雖如此,一種基本但有效的攻擊技術(shù)是基于身份驗證的攻擊,,也稱為密碼暴力破解,。
在典型的密碼暴力破解攻擊中,您有一個用戶名,您嘗試針對該用戶名嘗試多個可能的密碼,,希望該用戶使用的是您列表中的密碼之一,。
管理員變得更聰明,并開始實施帳戶鎖定策略,,因此,,在登錄嘗試達(dá)到一定閾值后(例如五次嘗試后),帳戶將被鎖定,。為了對抗這種控制,,出現(xiàn)了一種新的基于身份驗證的攻擊,稱為密碼噴射(有人稱之為水平攻擊,、反向暴力破解等),。
通過這種攻擊,攻擊者會收集多個用戶名或電子郵件地址(取決于被攻擊的應(yīng)用程序或網(wǎng)絡(luò)服務(wù)的類型),,然后針對所有用戶名或電子郵件地址嘗試使用一個密碼,,以識別可能使用此類密碼的用戶之一。
這種黑客技術(shù)在現(xiàn)實世界中的攻擊和我的大多數(shù)滲透測試活動中都有很高的成功率,,并且這種情況將繼續(xù)存在,。有多種工具可以執(zhí)行這種攻擊,但是,,對于基于應(yīng)用程序的密碼噴射攻擊,,我首選的工具是Burp Suite。
Burp Suite為我提供了足夠的空間來自定義我的密碼噴射,,例如線程,、節(jié)流、字符串grepping等,。在為這次攻擊選擇密碼時,,我通常嘗試季節(jié)+年份(例如Summer2018、Winter19等),、公司名稱+數(shù)字(例如Company123、Company2003等),、先前公司違規(guī)行為,、地點、運(yùn)動隊等的想法,。老實說,,為密碼噴射攻擊選擇密碼沒有所謂的正確或錯誤方法。
在針對客戶端的Citrix Web應(yīng)用程序設(shè)置和配置Web滲透測試工具Burp Suite中的所有內(nèi)容后,,我開始緩慢而穩(wěn)定地發(fā)起攻擊,。我的第一輪噴霧給了我兩個有效的用戶憑據(jù),密碼為Winter2017。
使用發(fā)現(xiàn)的兩個用戶帳戶,,我能夠以這些用戶的身份向客戶端的Citrix應(yīng)用程序進(jìn)行身份驗證,。然而,令我沮喪的是,,沒有一個用戶在他們的Citrix應(yīng)用程序目錄中擁有應(yīng)用程序,。
由于我已經(jīng)擁有兩個有效憑據(jù),因此我使用了Black Hills的MailSniper工具并轉(zhuǎn)儲了客戶端的OWA全局地址列表(GAL),。這為我的下一輪密碼噴射攻擊提供了額外的用戶名,。
這一次,我嘗試對客戶的OWA進(jìn)行噴射攻擊,,使用密碼Companyname123(我使用了實際客戶的名稱并在其后附加了數(shù)字123),。這給我?guī)砹藘蓚€額外的有效憑據(jù)。
這一次,,其中一位用戶在其Citrix應(yīng)用程序目錄中有一個內(nèi)部SAP應(yīng)用程序,,并且該SAP應(yīng)用程序?qū)⑹褂肐nternet Explorer打開。
外部滲透測試中的橫向移動
在橫向移動階段,,無論是從應(yīng)用程序級別還是網(wǎng)絡(luò)級別,,攻擊者或滲透測試人員都已經(jīng)獲得了對目標(biāo)的某種級別的訪問權(quán)限,包括有限訪問權(quán)限或完全訪問權(quán)限,。
從這一點來看,,未來的目標(biāo)是找到在目標(biāo)網(wǎng)絡(luò)內(nèi)移動的方法,同時規(guī)避內(nèi)部網(wǎng)絡(luò)安全控制,。
我們(對手/滲透性測試者)使用獲得的訪問權(quán)限來收集額外的信息,,以便在目標(biāo)的內(nèi)部網(wǎng)絡(luò)中移動。
基本上,,我們回到了偵察階段,,這可以是基于主機(jī)的情報收集和/或基于網(wǎng)絡(luò)的情報收集。同樣,,此階段使用的技術(shù)可能因許多因素而異,。
Citrix突破
此時,我已經(jīng)獲得了應(yīng)用程序級別的訪問權(quán)限,,我的下一個目標(biāo)是獲得網(wǎng)絡(luò)級別的訪問權(quán)限,。由于我有突破Citrix環(huán)境的經(jīng)驗,因此到了進(jìn)入網(wǎng)絡(luò)級別的時機(jī)了,。
如果您有興趣閱讀有關(guān)Citrix突破的更多信息,,NetSPI的同事們有一個很棒的博客(有關(guān)博客鏈接,請參閱On The Web部分),。為了執(zhí)行Citrix突圍攻擊,,我使用Internet Explorer打開了受害者的SAP帳戶并嘗試保存網(wǎng)頁的源代碼,。
然后使用“文件”菜單中的“另存為”選項,我導(dǎo)航到了C:\Windows\System32\目錄并調(diào)用Windows CMD 實用程序(cmd.exe),。
此彈出窗口打開了CMD,,讓我可以訪問后端Citrix服務(wù)器。
通過訪問后端Citrix服務(wù)器,,我啟動了一個PowerShell Empire listener,,生成了一個PowerShell啟動器,在Citrix服務(wù)器上執(zhí)行它,,并從Citrix服務(wù)器回調(diào)到我的 Empire listener,。
Kerberoasting
“關(guān)于Kerberoasting的評論和文章還不夠多,所以我不會在這里詳述它的解釋,。我將直接討論接下來發(fā)生的事情,。大多數(shù)情況下,Citrix服務(wù)器被認(rèn)為是具有高價值的系統(tǒng),,因此只有有限數(shù)量的用戶在服務(wù)器上擁有管理權(quán)限,。
話雖如此,我仍以非特權(quán)用戶身份訪問Citrix服務(wù)器的用戶帳戶,。但是,,任何域用戶帳戶均可用于請求服務(wù)主體名稱(SPN),這是Kerberos身份驗證使用的一種Windows特性,,用于將服務(wù)實例與服務(wù)登錄帳戶關(guān)聯(lián)起來,;例如,運(yùn)行IIS的服務(wù)帳戶的SPN,。
可以使用Windows的內(nèi)置實用程序setspn.exe在本地查詢服務(wù)帳戶的AD,,也可以使用Empire、Impackets,、Metasploit等工具遠(yuǎn)程完成,。
我使用我的Empire會話,轉(zhuǎn)儲了SPN并開始使用Hashcat破解密碼哈希,。破解密碼的命令示例如下:
hashcat -m 13100 -a 0 spn.outputpassword.list -r best64.rule -o kerb.cracked
在查看SPN查詢輸出時,,我注意到一些帳戶屬于Administrators組,而Hashcat碰巧破解了一個此類帳戶(IIS_Admin)的密碼哈希,。
憑證濫用/重用
在這次外部滲透測試收集的初始信息中,,我獲得了一些關(guān)于內(nèi)部網(wǎng)絡(luò)的重要情報,例如域管理員,、企業(yè)管理員、域控制器等的列表,。
因此,,為了有效地使用新獲得的憑據(jù)來破壞域,,我需要確定域管理員或企業(yè)管理員已登錄會話或之前已登錄的系統(tǒng)。
可以使用諸如netview.py,、Invoke-EventHunter之類的工具來實現(xiàn)該目標(biāo),。在我確定了域管理員和企業(yè)管理員進(jìn)行會話的幾個系統(tǒng)之后,我使用IIS_Admin帳戶和破解的密碼啟動了針對這些系統(tǒng)的CrackMapExec,。
我確定了幾個系統(tǒng),,其中IIS_Admin帳戶具有管理權(quán)限,并使用CrackMapExec中的Mimikatz模塊從這些框中提取憑據(jù),。
在提取的憑據(jù)中,,有一個屬于域管理員!我需要做的最后一件事是根據(jù)域控制器確認(rèn)新域管理員憑據(jù)的有效性,,并轉(zhuǎn)儲NTDS數(shù)據(jù)庫以進(jìn)行離線密碼破解和分析,。
數(shù)據(jù)搜索和滲透
對手的主要目標(biāo)之一是訪問或提取敏感/關(guān)鍵數(shù)據(jù),我們粗略地將之稱為目標(biāo)的”crown jewels“,。它們可能是:
· 用戶憑據(jù)
· 秘方
· 藍(lán)圖
· 客戶資料
· 個人身份信息(PII)
· 病歷
· 財務(wù)數(shù)據(jù)
· 知識產(chǎn)權(quán)
滲漏階段是將數(shù)據(jù)從目標(biāo)的網(wǎng)絡(luò)環(huán)境移動到攻擊者控制的系統(tǒng)(例如C2服務(wù)器)的階段,。這通常是數(shù)據(jù)搜尋活動的一部分。
在過去,,滲透測試只是為了獲得域管理員(DA)級別的訪問權(quán)限,,這樣的日子已經(jīng)一去不復(fù)返了。
現(xiàn)在,,外部滲透測試需要證明,,如果您的測試和攻擊由真實世界的對手執(zhí)行,您的客戶可能會遭受業(yè)務(wù)風(fēng)險和影響,。話雖如此,,這是我們測試的關(guān)鍵階段之一。
作為滲透測試人員,,在將數(shù)據(jù)移出客戶環(huán)境之前,,可能有必要與您的客戶確認(rèn)參與規(guī)則(RoE)是否要求數(shù)據(jù)滲漏。
如果允許,,我會仔細(xì)分析要泄露的數(shù)據(jù)類型,,以向客戶展示業(yè)務(wù)風(fēng)險和影響。根據(jù)環(huán)境和受到攻擊的系統(tǒng),,不同的滲漏技術(shù)可用于不同的情況,。
最后的話——外部滲透測試
正如您在這篇文章中可能已經(jīng)注意到的那樣,我沒有在此測試中運(yùn)行單個漏洞掃描,。為什么要提這個,?有幾次我看到一些滲透測試報告或工作聲稱是外部滲透測試,但實際上,,它們是漏洞評估,。
關(guān)于滲透測試和漏洞評估之間差異的爭論已經(jīng)持續(xù)了很長時間,,在這里我只是想分享我執(zhí)行外部滲透測試的眾多方法之一,由于我不是專家,,所以我將不再討論它,。