如何通過SSH隧道實現 Windows Pass the Ticket攻擊?
攻擊者所使用基於NTLM哈希的哈希傳遞攻擊以及基於Kerberos票據的票據傳遞攻擊(pass-the-ticket,以下簡稱PtT)來訪問用戶主機或伺服器是非常簡單的,最常見的手段就是使用黃金票據(Golden Ticket)和銀票據(Silver Ticket),不過本文要為大家介紹一個新辦法,就是通過SSH 隧道實現PtT攻擊 ,當然這個辦法較前兩種也比較複雜。
在今年舉辦的環太平洋大學網路防禦競賽(CCDC) 中,有一個小組就遇到了目標的KRBTGT 帳戶和帳戶NTLM哈希的情況,並且通過內部網路連接對基於DMZ的Linux主機進行了非特權的SSH訪問,但是他們並沒有用這種辦法直接訪問任何Windows主機。
通過票據攻擊的流程圖大致如下:
嘗試攻擊敏感的網路分段的主機時,就有可能在運行網路上遇到類似的情況。本文就介紹了如何通過SSH隧道傳遞黃金票據和銀票據。為了更好的讓大家理解,我們會通過一個具體的樣本,向大家展示如何通過位於10.0.10.81的Linux主機來破壞Windows主機WIN-RMJBTDB7QTF。
黃金票據
微軟實現的Kerberos版本中存在的一系列問題,最後讓Kerberos成為了攻擊者進行漏洞利用的天堂。最要命的是,攻擊者能夠生成任意的TGT。我們習慣上把其稱之為黃金票據,其特點如下:
黃金票據是全功能的TGT,可用於Kerberos認證的任何服務。另外黃金票據還可以繞過當前Kerberos的加密要求。例如,可以使用DES或RC4加密演算法創建一個TGT,即使該域明確支持AES,禁止使用DES或RC4。
總而言之就是,如果KRBTGT賬戶丟失了,也就意味著攻擊者可以生成任意的Kerberos票據,使用用戶的賬戶的許可權進行任意操作。此外,鑒於KRBTGT賬戶極少更改散列值,攻擊者可以對這些偽造的票據可以使用很長一段時間。
在本案例中,攻擊時安裝了Impacket庫和proxychains的Linux主機,而主機不需要加入域。
生成黃金票據
要創建黃金票據,我們需要從目標域獲取以下信息:
krbtgt帳戶的NT哈希域的SID域的FQDN虛擬用戶
我們將使用Impacket的示例腳本ticketer.py來創建黃金票據憑證緩存文件。以下是為用戶mbrody-da創建緩存文件的語法示例:
要使Impacket示例腳本能夠使用緩存文件進行身份驗證,而不是提供明文密碼或NT哈希值,我們就需要將KRB5CCNAME變數設置為緩存文件的絕對路徑:
export KRB5CCNAME=/path/to/ccache/file
驗證變數正確的設置如下:
echo $KRB5CCNAME
現在我們就可以使用-k標誌與支持Kerberos身份驗證的任何Impacket腳本來使用黃金票據,而不需要提供明文密碼或NT哈希值。
名稱解析
為了確保Kerberos的進程功能可以正常運行,我們需要修改目標設備的/ etc / hosts文件,以包含目標域控制器的FQDN和目標主機的NetBIOS名稱的條目,比如下面這個例子:
127.0.0.1localhost192.168.26.129amity.local192.168.26.128 WIN-RMJBTDB7QTF
如果你還沒有域控制器的IP地址,請通過目標Linux主機上的SSH會話在目標域的FQDN上運行nslookup,如下所示:
nslookup -type=srv _ldap._tcp.AMITY.LOCAL
Proxychains
proxychains,翻譯過來應該叫代理鏈。簡而言之,就是可以配置一系列的proxychains地址,然後以代理的方式訪問互聯網。
我們將使用Proxychains通過SSH隧道對路由器的流量進行控制,通過在Kali上(linux操作系統的一個發行版)查看默認配置文件的最後一行/etc/proxychains.conf來驗證代理埠。
不過要注意的是,如果在執行攻擊時遇到名稱解析問題,則可能需要在proxychains配置文件中對proxy_dns設置進行注釋。
當我們通過SSH進入目標Linux主機時,我們將向代理埠提供-D標誌。這樣就能在本地主機的埠上創建一個SOCKS代理,proxychains將通過路由器對流量進行控制,如下圖所示:
ssh unpriv@10.0.10.81 -D 1337
要驗證隧道是否被正確設置了,我們可以針對目標主機的端445運行帶有proxychains的nmap TCP連接掃描:
proxychains nmap -sT -Pn -p445 192.168.26.128
Time Sync
TimeSync是一款好用的系統時間校對工具,如果你的電腦時間經常會出現不準的現象,可以使用這款工具進行校準,它可以讓你實時與世界時間保持同步,一般情況下大家的系統時間都不會出現錯誤的,除非CMOS沒電了。
如果攻擊機的時間距離目標域的DC超過約五分鐘,黃金票據就將無法正常工作。如果deltaTime超過五分鐘,我們可以使用deltaTime來檢查目標時間(下圖中的第1行),並設置目標攻擊設備上的時間(第2行):
proxychains net time -S proxychains net time set -S
啟動攻擊
在所有設置完成後,我們就可以使用任何支持ccache身份驗證的工具來攻擊目標主機。比如利用Impacket的psexec.py示例腳本(利用Impacket 可以 偽造和解碼網路數據包,支持高級協議如 NMB 和 SMB),然後運行以下命令就可以返回互動式CMD提示符:
proxychains ./psexec.py mbrody-da@WIN-RMJBTDB7QTF -k -no-pass
如果在啟動後收到運行的錯誤報告,請查看依賴關係的配置並使用psexec.py的-debug標誌進行故障排除。
銀票據
銀票據是偽造的TGS,其範圍有限,只能訪問指定的服務許可權。另外銀票據是由服務賬戶,通常為計算機賬戶進行哈希加密的。銀票據在使用的過程不需要同域控通信,總而言之就是,只要攻擊者有銀票據,就可以跳過KDC認證,直接去訪問指定的服務。
執行銀票據攻擊需要安裝Impacket庫和proxychains的Linux主機,並安裝配有Mimikatz和Kekeo的Windows主機。兩個主機都不需要加入域。
生成銀票據
要生成銀票據,我們需要以下信息:目標主機帳戶的NTLM哈希目標主機的FQDN目標服務域SID域FQDN虛擬用戶
在本文所列舉的案例中,我們將通過SMB對目標主機進行身份驗證,因此我們將使用CIFS服務。 由於我們在本文中借鑒了安全研究人員Sean Metcalf所介紹的常見SPN列表,所以ticketer.py不支持銀票據的生成。所以,我們會在Windows主機上使用Mimikatz來創建一個銀票據 .kirbi文件,並使用Kekeo將銀票據轉換為ccache文件。
通過以下語法使用Mimikatz的Kerberos模塊就可以生成銀票據:
以下是為用戶mbrody-da和CIFS服務創建的銀票據:
退出Mimikatz並啟用Kekeo,將kirbi文件轉換為ccache文件,具有語法如下:
misc::convert ccache /path/to/ticket.kirbi
我們可以使用以下語法轉換多個kirib銀票據:
misc::convert ccaches /path/to/ticket1.kirbi /path/to/ticket2.kirbi ...
將ccache文件Kekeo導出到攻擊的Linux主機以確保在Linux主機上的文件是絕對路徑。我們需要用該路徑來設置KRB5CCNAME變數,然後其餘的攻擊在Linux主機操作上就可以了。
攻擊設置
其餘的銀票據攻擊設置與以上所講的黃金票據攻擊大致相似,但有兩個例外。
首先,我們需要在/ etc / hosts文件中提供目標主機的FQDN,而不是NetBIOS名稱。在我們所列舉的案例中,/ etc / hosts文件如下所示:
127.0.0.1localhost192.168.26.129amity.local192.168.26.128 WIN-RMJBTDB7QTF.amity.local
第二個區別是我們需要將攻擊設備的時間與目標主機設置成同步運行,銀票據不與目標的域控制器通信。
然後,按照與上述黃金票據攻擊相同的步驟設置KRB5CCNAME變數,驗證proxychains配置,使用SOCKS代理建立SSH隧道,並使用nmap驗證隧道。
啟動攻擊
我們現在可以使用psexec.py針對目標主機的FQDN啟動攻擊:
proxychains python psexec.py mbrody-da@WIN-RMJBTDB7QTF.amity.local -k -no-pass
總結
黃金票據和銀票據為攻擊者提供了持久性的隱身攻擊技術,但前提是需要與目標主機用ssh做正向連接。不過攻擊者只能通過Linux主機間接訪問目標主機,此時,可以通過SSH隧道通過proxychains執行通過票據的攻擊。雖然這篇文章闡述了如何使用psexec.py來發起針對目標主機的攻擊,但任何支持-k參數的Impacket腳本都可以做到這一點,包括atexec.py,smbclient.py,smbexec.py和wmiexec.py。
點擊展開全文
※看統計數據如何顛覆你的網路安全觀,2017年第一季度IT威脅及演變
※一種Bypassing Windows Attachment Manager的有趣姿勢
※安全工程師們必看:加強網路環境的9條建議
※APT案例分析:一個基於meterpreter和Windows代理的攻擊事件
※藉助內核命令行注入繞過Nexus 6安全引導
TAG:嘶吼RoarTalk |
※潮男隧道!Pharrell x adidas Originals 全新聯名 Hu NMD 曝光!
※Underminer通過加密的TCP隧道提供Bootkit以及挖礦惡意軟體
※Elon Musk 的 The Boring Company 融資 1.13 億美元,繼續挖隧道
※Elon Musk的The Boring Company 融資 1.13 億美元,繼續挖隧道
※Cobalt Strike中DNS隱蔽隧道的利用,以及使用DLP進行檢測
※馬斯克Boring Company首個洛杉磯隧道揭幕
※Borning Company 最新產品:用挖隧道移除泥土打造的「樂高式」磚塊
※在巴黎跟著virgil abloh們一起穿過「時光隧道」!
※馬斯克Boring公司的隧道修到什麼程度?已經開始運輸Model X了
※Tunna:一款神奇的工具,它可以通過HTTP封裝隧道通信任何TCP
※防水透氣又輕量,Kailas蜻蜓UL 2P+隧道帳篷測評
※在時空隧道里走秀?是時候跟Balenciaga一起邁向未來了!
※帶上它!穿梭3D隧道 「小怪獸」 Goblin VR一體機評測
※親自干銷售!馬斯克在Twitter上大力宣傳隧道項目
※挪威Ulriken軌交隧道貫通,30年「缺席」後TBM掘進再現挪威!
※別超速啊!奧克蘭Waterview隧道附近,最高限速馬上調整了!
※澳洲電訊利用無人機抓拍EastLink隧道激光雷達地圖
※Boring公司第一條洛杉磯隧道即將建成
※除了馬斯克的「Boring」公司,谷歌也要做隧道挖掘?
※馬斯克Dugout Loop地下隧道有望2020年以前完工