Hash傳遞攻擊Windows2012遠(yuǎn)程桌面
前言:小伙伴們還記得metasploit的模塊可以使用hash登錄windows么,可惜僅僅對(duì)XP,2003有效。本文會(huì)介紹一種使用hash登錄widnows2012R2服務(wù)器遠(yuǎn)程桌面的方法。是的,你沒(méi)有看錯(cuò),使用Hash登錄遠(yuǎn)程桌面!windows2012R2中文版測(cè)試通過(guò)!
windows2012R2采用了新版的遠(yuǎn)程桌面協(xié)議(RDP).本文主要討論一下新版協(xié)議中的”受限管理員”(Restricted Admin)這個(gè)特性.相信滲透測(cè)試人員和系統(tǒng)管理員都會(huì)對(duì)這個(gè)特性有足夠的興趣,通過(guò)這個(gè)特性,我們可以實(shí)現(xiàn)哈希傳遞攻擊(Pass-the_Hash attacks).下面會(huì)先簡(jiǎn)要介紹一下哈希傳遞攻擊,然后在windows2012R2上演示如何實(shí)現(xiàn)這樣一種攻擊.測(cè)試工具是我們?cè)贔reeRDP的基礎(chǔ)上修改的.
哈希傳遞攻擊簡(jiǎn)介
簡(jiǎn)單點(diǎn)說(shuō),哈希傳遞就是用戶(hù)登錄的時(shí)候使用密碼的哈希值代替密碼來(lái)完成認(rèn)證.很多windows的協(xié)議都是需要用戶(hù)提供他們的密碼哈希值,并不一定非得需要用戶(hù)提供密碼.這一點(diǎn)在滲透測(cè)試過(guò)程中非常重要,因?yàn)榘l(fā)現(xiàn)用戶(hù)的密碼哈希比發(fā)現(xiàn)用戶(hù)的密碼容易多了.
對(duì)于8.1版的RDP大部分情況下都需要用戶(hù)提供他們的密碼.但是有一個(gè)例外,那就是受限管理員模式,這種情況下用戶(hù)可以使用他們的密碼哈系來(lái)登錄.
微軟發(fā)布過(guò)防御哈希傳遞攻擊的指南.
受限管理員模式
在windows2012R2運(yùn)行”mstsc /?”命令,會(huì)給出如下對(duì)受限管理員模式的說(shuō)明:
所以,開(kāi)啟了受限管理員模式之后,一些恢復(fù)已登錄用戶(hù)明文密碼的工具比如minikatz就會(huì)失效了.基于這個(gè)理由,系統(tǒng)管理員肯定會(huì)被建議在2012的系統(tǒng)上開(kāi)啟這個(gè)特性.它的缺點(diǎn)是這個(gè)RDP會(huì)話中向外的連接可能無(wú)法通過(guò)認(rèn)證,比如映射共享文件夾.所以連接一個(gè)獨(dú)立的服務(wù)器的時(shí)候,這個(gè)特性很有用,連接一個(gè)跳板服務(wù)器的時(shí)候開(kāi)啟這個(gè)特性就沒(méi)必要了.
RDP協(xié)議v8.1
2013年7月22日,微軟發(fā)布了RDP協(xié)議v8.1的特性說(shuō)明.可以通過(guò)點(diǎn)擊”關(guān)于”來(lái)查看你的客戶(hù)端是否支持v8.1
我會(huì)簡(jiǎn)單介紹一下新版協(xié)議中的有意思的地方,這樣你就不用花時(shí)間去讀微軟464頁(yè)的技術(shù)文檔了.
37頁(yè)的下方我們可以看到RDP客戶(hù)端可以發(fā)送一個(gè)RESTRICTED_ADMIN_MODE_REQUIRED 標(biāo)志.我們的測(cè)試工具就是發(fā)送了這個(gè)標(biāo)志.
同樣在這一頁(yè)上的說(shuō)明是這樣的:”If the server supports this mode then it is
acceptable for the client to send empty credentials in the
TSPasswordCreds structure defined in MS-CSSP section 2.2.1.2.1.”(如果服務(wù)器支持這個(gè)模式,那么它會(huì)接受客戶(hù)端用TSPasswordCreds這個(gè)結(jié)構(gòu)發(fā)送空的認(rèn)證信息).所以我們的測(cè)試工具需要發(fā)送一個(gè)空域名,空用戶(hù)名,空密碼的TSPassword結(jié)構(gòu)到服務(wù)器端.
概念證明:場(chǎng)景
想象我們正在一個(gè)內(nèi)網(wǎng)環(huán)境中進(jìn)行滲透測(cè)試.我們的目標(biāo)是登錄一臺(tái)Windows2012R2的遠(yuǎn)程桌面.這臺(tái)服務(wù)器是一個(gè)獨(dú)立的系統(tǒng),而且開(kāi)了防火墻,只允許RDP協(xié)議登錄.
這個(gè)網(wǎng)絡(luò)里還有一些其他的主機(jī),其中一臺(tái)已經(jīng)被我們攻破.使用fgdump(或者其他獲取hash的工具)獲取了管理員的密碼hash如下:
test:1001:NO PASSWORD*********************:36374BD2767773A2DD4F6B010EC5EE0D:::
我們假設(shè)這個(gè)密碼是一個(gè)非常變態(tài)的強(qiáng)密碼,無(wú)法破解它.這在以前是沒(méi)有辦法確實(shí)這個(gè)test賬戶(hù)是否能登錄我們的目標(biāo)服務(wù)器的.不過(guò)在windows2012R2上,我們可以使用哈希傳遞攻擊,使用這個(gè)密碼hash來(lái)登錄服務(wù)器.
概念證明:實(shí)現(xiàn)
測(cè)試工具是我們?cè)谧钚掳娴腇reeRDP的基礎(chǔ)上修改的.最新版的FreeRDP支持了很多新的特性,比如:SSL和CredSSP(NLA),只需要稍微做一些修改就可以支持”受限管理員”模式了.
建立RDP連接,通常的命令如下:
$ xfreerdp -u test -p Portcullis1 192.168.226.129
在修改版的FreeRDP中,-p選項(xiàng)被改成了密碼hash,使用如下:
$ xfreerdp -u test -p 36374BD2767773A2DD4F6B010EC5EE0D 192.168.226.129
下圖是使用hash登錄的截圖,圖片下方是登錄使用的命令.
是的,就是這么簡(jiǎn)單.不過(guò)這個(gè)可能要等2012R2普及之后才能顯示出它巨大的威力.
限制條件
受限管理員模式顧名思義,只對(duì)管理員組有效.所以如果你獲取到的用戶(hù)屬于遠(yuǎn)程桌面用戶(hù)組,那么是無(wú)法通過(guò)hash登錄的.會(huì)提示如下的錯(cuò)誤:
工具使用
原版的工具使用使用說(shuō)明如下:
解壓工具包:
tar zxvf FreeRDP-pth.tar.gz (原參數(shù)寫(xiě)成了cfz,應(yīng)該是筆誤) cd FreeRDP
使用編譯好的二進(jìn)制文件:
$ client/X11/xfreerdp -u test -p 36374BD2767773A2DD4F6B010EC5EE0D 192.168.226.129
重新編譯命令:
$ sh cmake.sh $ make
如果遇到編譯問(wèn)題,可以參考FreeRDP的文檔.在Ubuntu12.04上測(cè)試通過(guò).
測(cè)試心得
經(jīng)過(guò)一番艱苦的斗爭(zhēng),在不同的機(jī)器上反復(fù)測(cè)試,不斷失敗,最后完美的方法就是下載最新版FreeRDP,然后自己打補(bǔ)丁編譯.
git clone git://github.com/FreeRDP/FreeRDP.git cd FreeRDP wget http://labs.portcullis.co.uk/wp-content/uploads/2013/10/FreeRDP-pth.diff_.txt patch -p1 < FreeRDP-pth.diff_.txt cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON . make