係統安全攻防戰:DLL注入技術詳解

DLL注入是一種允許攻擊者在另一個進程的地址空間的上下文中運行任意代碼的技術。攻擊者使用DLL注入的過程中如果被賦予過多的運行特權,那麼攻擊者就很有可能會在DLL文件中嵌入自己的惡意攻擊代碼以獲取更高的執行權限。
具體而言,該技術遵循以下步驟:
- 需要將DLL寫入磁盤中;
- “CreateRemoteThread”調用“LoadLibrary”;
- 反射加載程序功能將嚐試使用適當的CPU寄存器找到目標進程的進程環境塊(PEB),並從中嚐試查找內存中的kernel32dll和任何其他必需庫的地址;
- 發現所需的API函數(如LoadLibraryA,GetProcAddress和VirtualAlloc)的內存地址;
- 上述功能將用於將DLL正確加載到內存中,並調用其將執行DLL的入口點DllMain。
本文將介紹使用PowerSploit,Metasploit和自定義工具以及使用這些工具執行DLL注入的過程。
手動注入
手動注入可以從頭開始創建DLL,也可以通過Metasploitmsfvenom創建DLL,該文件可以生成包含特定有效內容的DLL文件。 應該注意的是,如果DLL被注入的進程是64位,那麼應該使用64位有效負載。
下一步是設置metasploit偵聽器,以便在將惡意DLL注入進程後接受連接。
有許多可以執行DLL注入的工具,但最可靠的工具之一是出自SecurityXploded技術團隊的Remote DLL Injector,該工具在實現上使用的是CreateRemoteThread技術,它可以將DLL注入到啟用了ASLR的進程中,工具使用的過程中隻需要提供進程ID和DLL路徑兩個參數:
RemoteDLLInjector在初始運行的時候會展示為了完成dll注入所涉及到的所有步驟, 如下圖所示。
如果DLL被成功注入,它將返回一個具有和被注入進程相同權限的meterpreter 會話。因此,具有高權限的進程可能會是攻擊者首選要注入的進程以執行提權操作。
Metasploit
Metasploit框架具有執行DLL注入的特定模塊。它隻需要指定進程的PID和DLL的路徑並和meterpreter 成功建立會話。
PowerSploit
也可以通過使用PowerSploit完成dll注入以提升程序執行權限。 msfvenom可以用於生成惡意DLL,然後通過任務管理器可以獲得目標進程的PID。 如果目標進程作為SYSTEM運行,則注入的DLL將以相同的權限運行。
Invoke-DLLInjection模塊將執行DLL注入,如下所示:
DLL內的有效內容將被執行,並且將獲得SYSTEM權限。
本文作者:liulang
來源:51CTO
最後更新:2017-11-03 15:34:39
上一篇:
勒索軟件恢複:短期損失難免,但長遠益處大
下一篇:
PhEmail:基於Python的開源網絡釣魚攻擊工具
阿裏巴巴戛納首秀,帶去了天貓全域營銷
linux查看文件夾大小、文件個數的方法
mongodb查看表記錄計數
阿裏雲幸運券為什麼用不了?
uva 11549 - Calculator Conundrum 模擬
9GAG客戶端,五一3天盡心之作,Just Android Design!(開源)+毛玻璃效果
完整複現何愷明ICCV獲獎論文結果並開源 !(附論文&開源代碼)
《容器技術係列》一導讀
J2EE中關於tomcat的maxIdle、maxActive、maxActive相關配置
《Linux From Scratch》第二部分:準備構建 第四章:最後的準備- 4.2. 創建 $LFS/tools 文件夾