歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

惡意軟件開發檔案解密之根據PDB路徑和其他調試細節來推測相關的惡意活動(上)

來源:本站整理 作者:佚名 時間:2019-09-16 TAG: 我要投稿


你是否想過惡意軟件開發者在開發時的最初想法是什么?他們如何構建他們的工具?他們如何組織他們的開發項目?他們使用什么樣的計算機和軟件?
通過探索惡意軟件調試信息,我們嘗試回答其中的一些問題。首先,我們發現惡意軟件開發人員為所開發的文件夾和代碼所起的名稱,通常都明確的表明了其所包含的功能。因此,當使用符號調試信息編譯惡意軟件項目時,這些描述性名稱將顯示在PDB路徑中。通過調試信息可以讓我們深入了解惡意軟件開發環境,雖然這些信息不顯眼,但只要最夠細心,我們可以使用PDB路徑和其他調試細節來檢測相關的惡意活動。
人機協議
數字存儲系統徹底改變了我們的世界,但為了利用我們存儲的數據并以有效的方式檢索它,我們必須合理地組織它。為此,用戶要仔細構建目錄,并為文件和文件夾提供唯一的描述性名稱。用戶通常根據文件內容命名文件夾和文件,而計算機會強制用戶根據數據類型,功能和目的標記和注釋其數據。這種人機協議意味著大多數存儲的數數據會具有一些明確的描述文件,同樣,惡意文件也不例外。對于PDB路徑尤其如此,它是惡意軟件中描述開發環境的工具標記。
PDB
在編譯時生成的程序數據庫(PDB)文件,通常稱為“符號文件”,它會存儲關于程序的單個構建的調試信息。 PDB可以存儲符號、地址、函數和資源的名稱以及可以幫助調試程序找到異常或錯誤的確切來源的其他信息。
惡意軟件就是軟件,惡意軟件開發人員就是軟件開發人員。與任何軟件開發人員一樣,惡意軟件開發者通常必須調試他們的代碼,有時還必須在開發過程中創建PDB。如果他們沒有花時間調試他們的惡意軟件,他們的惡意軟件就有可能無法在目標主機上正常運行,或者無法成功地與他們的惡意軟件進行遠程通信。
PDB路徑是如何生成的?
但PDB如何創建并連接到程序呢?讓我們通過惡意軟件開發人員的視角來研究一個PDB路徑的形成(以Smiller為例)。
Smiller有很多編程項目,并在他的計算機上以適當標記的文件夾結構進行組織。此項目用于嵌入在HTML應用程序(HTA)文件中的shellcode加載程序,可以看出,開發人員把它很有邏輯地存儲在文件夾中:
D:\smiller\projects\super_evil_stuff\shellcode\

簡單的“Test”項目代碼文件“Program.cs”,它將一段shellcode和一個可執行的啟動程序嵌入到HTML應用程序(HTA)文件中

通過Windows資源管理器看到的惡意Visual Studio解決方案HtaDotnet和對應的“Test”項目文件夾,文件夾和文件的名稱則明確描述了它們的功能
惡意軟件開發者然后在默認的“Debug”配置中編譯他們的“Test”項目Visual Studio(圖3),并將Test.exe和Test.pdb寫入子文件夾(圖4)。

默認編譯配置的Visual Studio輸出

Test.exe和Test.pdb被寫入代碼項目文件夾的默認子文件夾
在Test.pdb文件(圖5)中,引用了源代碼文件的原始路徑以及用于調試的其他二進制信息。

Test.pdb包含二進制調試信息和對原始源代碼文件的引用,以便在調試時使用
在編譯期間,鏈接程序通過在IMAGE_DEBUG_DIRECTORY中添加一個指定調試信息類型的條目,將PDB文件與構建的可執行文件相關聯。在本文的示例中,調試類型是CodeView,因此PDB路徑嵌入在文件的IMAGE_DEBUG_TYPE_CODEVIEW部分下。這使調試器能夠在調試Test.exe時找到正確的PDB文件Test.pdb。

PEview實用程序中顯示的Test.exe,它可以輕松地從可執行文件的IMAGE_DEBUG_TYPE_CODEVIEW部分解析出PDB路徑
CodeView調試信息中的PDB路徑
CodeView結構
調試信息的確切格式可能因編譯器和鏈接器以及軟件開發工具的現代化程度而異。CodeView調試信息存儲在IMAGE_DEBUG_TYPE_CODEVIEW下面的結構中:

圖7:CodeView調試目錄信息的結構
完整與部分PDB路徑
通常有兩種CodeView PDB路徑,一種是完全限定的目錄路徑,另一種是部分限定的目錄路徑,它們只指定PDB文件的名稱。在這兩種情況下,都包含擴展名為. PDB的PDB文件的名稱,以確保調試器為程序找到正確的PDB。
部分限定的PDB路徑將只列出PDB文件名,例如:
Test.pdb
完全限定的PDB路徑通常以卷驅動器號和PDB文件名的目錄路徑開頭,例如:
D:\smiller\projects\super_evil_stuff\shellcode\Test\obj\Debug\Test.pdb
通常,本機Windows可執行程序使用部分限定的PDB路徑,因為許多調試PDB文件在Microsoft公共符號服務器上是公開可用的,因此在符號路徑(PDB路徑)中不需要完全限定的路徑。在本文中,我們將主要關注完全限定的PDB路徑。

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.gkrbnd.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        福彩原副主任