文章插圖

文章插圖
超級任天堂(SNES,Super Nintendo Entertainment System)是任天堂全球知名主機NES(國內稱為小霸王)的后續主機,主機采用16位色表現,令主機的畫面表現在當時非常之棒 。而作為當時的主機霸主,任天堂SNES主機上出現了非常多經典的游戲,現在大紅大紫的游戲系列很多都是在SNES上發跡的 。像勇者斗惡龍系列、傳說系列、最終幻想系列、超時空之輪系列等等 。當年的超級任天堂憑借全球數千萬臺的銷量一直占據著游戲機市場的鰲頭,在這個優秀的平臺上,誕生過無數優秀的精品游戲,很多作品即使拿到現在與PS2,XBOX的游戲相比在游戲性方面也毫不遜色(其實是比他們還要好很多) 。如果你對那些令人激動的游戲念念不忘的話,而Snes9x可以在你的電腦上網模擬超級任天堂,讓你再次回到童年 。軟件可根據不同硬件方便的調節聲音,圖像等 。
首先,我拿出舊的外部硬盤,找到了我的SNES9x模擬器的壓縮副本,啟動它,就發現了一個 DLL 劫持漏洞 。
Snes9x是款讓你重溫童年游戲的SNES模擬器,能夠在Windows平臺上運行經典SNES/SFC游戲的模擬器軟件,支持.smc, .sfc, .fig, 和 .1等格式的游戲,可用鍵盤,也能用手柄進行操作,支持鍵位修改 。
以 x86 和 x64 架構編寫的程序利用動態鏈接庫 (DLL) 在軟件開發過程中提供靈活性和可移植性 。DLL 基本上是包含可重用代碼、資源和變量的小程序 。就其性質而言,它們沒有入口點并且需要父級可執行文件在運行時調用它們 。如果你只有一個 DLL,則可以使用 Rundll32.exe 之類的東西來運行該特定 DLL 的內容,而無需父級程序 。否則,DLL 中的函數可以由父級可執行文件調用,使用 LoadLibrary API 調用將它們動態導入到程序中 。
有時軟件開發并不完全按計劃進行,并且你可能會經常編寫一個程序來調用加載一個不存在的 DLL 。或者,在 SNES 模擬器的情況下,你可能會遇到相當于路徑漏洞的問題,這基本上意味著程序嘗試從當前工作目錄加載 DLL,然后在別處查找 。
以下就是我加載Procmon并運行SNES模擬器時的情況:
注意,System32和SysWOW64有點像冰島/格陵蘭的情況 。在標準的x64設備上,64位系統目錄是System32, 32位系統目錄是SysWOW64 。
總之,這是一個漏洞 。程序試圖從一個可以寫入的目錄中裝入DLL 。這是因為該程序已被復制到桌面,而不是安裝在標準程序目錄中,例如“程序文件” 。
這就很容易發生這個軟件被共享即從硬盤驅動器共享它,然后將文件復制到他們自己的筆記本電腦上 。
另外,在這里需要注意的是,SNES模擬器有DEP但沒有ASLR,將來可能會回到那個狀態 。
DLL 代理
DLL 代理實現 DLL 劫持的成功率更高 。
該程序以其原始預期功能執行,得到有效載荷執行 。
使用 Procmon,過濾以下內容:
在攻擊者的設備上,使用這個簡單的Python腳本從原始DLL中取出導出的函數并將它們寫入一個模塊定義文件 (.def):
現在,我們制作我們的代理 DLL 。這是一個用 C 編寫得非常簡單的程序,它導出一個 DLLMain 函數作為 DLL 的入口點 。在 DLLMain 方法中,我們偷偷調用了 Payload 函數 。該函數執行,然后所有其他請求的函數調用都傳遞給 [dllName]_original.dll:
創建此 C 文件并將其命名為 [dllName].c:
最后,我們需要創建這個代理 DLL 并將它與我們的模塊定義文件鏈接起來 。這可以通過 mingw-w64 來完成,它擁有編譯DLL所需的必要工具鏈 。注意這里的架構:我代理了32位SNES模擬器,所以我需要為32位架構編譯它 。
如果你的攻擊設備上沒有 mingw-w64,只需輸入:
[dllName].c:包含我們的有效載荷的代理 DLL 的 C 代碼 。
[dllName].def:使用Python腳本從原始dll中提取導出的函數調用創建的模塊定義文件 。
[dllName].dll:新編譯的代理DLL 。
最后一步是將原始DLL和代理DLL在目標主機的程序目錄下登陸,這兩個 DLL 必須與彼此和原始程序位于同一目錄中 。
- 電子書編輯軟件哪個好 電子書編輯器手機軟件
- gif動畫制作軟件手機版 手機GIF制作軟件
- 系統自帶手機管家怎么關閉
- djvu文件怎么打開 蘋果手機 djvu文件怎么打開安卓
- 三星手機解壓軟件哪個好 手機解壓軟件哪個好知乎
- 比較好玩的3d游戲有哪些 有哪些3D游戲
- 手機怎么模擬手柄玩電腦游戲 手機怎么模擬手柄連接電視
- c++游戲編程源代碼 C語言游戲源代碼
- 餐飲記賬軟件哪個好用 手機個人記賬軟件哪個好用
- 電腦用什么模擬器用手機app 手機模擬電腦的軟件哪個好
