現在只對常讀和星標的公眾號才展示大圖推送,建議大家把瀟湘信安設為星標”,否則可能看不到了

0x00 概述

在我們的日常研究中,我們面臨著可以從受感染的機器中提取什么以便橫向移動或提取敏感信息的問題。

組織使用多種工具通過 SSH、FTP、TELNET 或 RDP 協議對服務器和數據庫進行身份驗證。這些工具提供了一種保存憑據以便更快地進行身份驗證的方法。

在這篇博文中,我們將展示攻擊者如何提取非明文憑據以便對數據庫和服務器進行身份驗證。

我們將介紹以下工具:

WinSCPRoboMongoMobaXterm

筆記:我們使用逆向工程技術來了解不同工具如何解密憑據,但此處描述的方法不涉及利用漏洞 

0x01 WinSCP

我們看到的第一個工具是 WinSCP,它提供了保存用于通過 SSH 連接到遠程計算機的憑據詳細信息的選項。

WinSCP 混淆憑據并將它們保存在 Windows 注冊表中,憑據根本沒有加密,任何知道用于混淆的算法的人都可以訪問憑據。

保存在注冊表中的憑據:

計算機\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Sessions

WinSCP 的源代碼在 GitHub 上,我們找到了使用的混淆算法:

  • https://github.com/winscp/winscp/blob/master/source/core/Security.cpp


我們使用了一個實現相同算法的工具來對憑據進行去混淆處理,并且我們獲得了對明文憑據的訪問權限:

實施混淆算法來保護存儲的憑據并不是最佳做法,因為它很容易被逆轉并導致憑據被盜。

讓我們看看下一個分析的工具是否使用更好的方法來保護憑證存儲。

0x02 RoboMongo

RoboMongo 是一個 MongoDB 客戶端,用于連接到 Mongo 數據庫服務器。當您保存憑據時,它們會被加密并保存在一個 JSON 文件中:

%USERPROFILE%\.3T\robo-3t\1.4.4\robo3t.json

但是,用于加密憑據的密鑰也以明文形式保存在文件中:

%USERPROFILE\.3T\robo-3t\robo3t.key:

這意味著獲得計算機訪問權限的攻擊者可以使用以明文形式保存的密鑰來解密憑據。

RoboMongo 是開源的,所以我們決定查看 GitHub 上的源代碼,以了解如何使用密鑰來加密密碼。

我們發現 Qt 中的 SimplCrypt 庫用于加密和解密憑據:

  • https://github.com/Studio3T/robomongo/blob/master/src/robomongo/utils/SimpleCrypt.cpp

每個人都可以訪問這個庫,所以我們可以用它來解密憑據:

RoboMongo 使用加密來安全地存儲憑據,但密鑰以明文形式保存,這也不是最佳實踐。密鑰以明文形式存儲,任何有權訪問工作站的用戶都可以解密憑據。

讓我們看看另一個工具并分析憑據是如何保存的。

0x03 MobaXterm

MobaXTerm 是一個強大的工具,用于使用各種協議(如 SSH、Telnet、RDP、FTP 等)連接到遠程計算機。想要在 MobaXTerm 中保存憑據的用戶將被要求創建一個主密碼來保護他們的敏感數據。

默認選項是 MobaXTerm 將要求僅在新計算機上輸入此主密碼:

這意味著主密碼保存在某個地方,MobaXTerm 將檢索它以訪問加密保存的憑據。

我們使用 Sysinternals Suite 中的 Procmon 來映射 MobaXTerm 訪問的所有注冊表項和文件,我們發現主密碼保存在以下注冊表項中:

計算機\HKEY_CURRENT_USER\SOFTWARE\Mobatek\MobaXterm\M

憑據和密碼分別保存在 C 和 P 注冊表項中,而 M 注冊表項包含主密碼。

Master Password好像是用DPAPI加密的,但是我們解密失敗了。

在使用 base64 對其進行解碼,并將其與使用 DPAPI 的標準加密密碼進行比較后,我們了解到,始終相同的前 20 個 DPAPI 字節已被刪除。

您可以在下面看到,第一行是我們使用 DPAPI 加密的密碼,第二行是在注冊表中找到的加密值。

右移后,我們可以看到字節是相同的。實際上,使用 DPAPI 加密的數據始終具有第一個恒定的 ~60 字節元數據

我們添加了前二十個字節,我們成功解密了 DPAPI 密碼,它對應于主密碼的 SHA512 哈希,此哈希用于加密和解密憑據。

我們編寫了一個工具,可以使用上述方法解密保存的憑據:

在這里,用于安全存儲憑據的加密密鑰是使用 DPAPI 保存的,這意味著只有保存憑據的用戶才能訪問它們。但是,具有管理員訪問權限的用戶或獲得受害者會話訪問權限的攻擊者也可以解密存儲在計算機上的憑據。

0x04 工具解密

上面使用的所有工具都可以在我們的Github存儲庫上以開源形式獲得。只需運行它,您將獲得以明文形式保存的所有憑據。

不斷更新該工具——我們將在未來添加更多功能!