系统安全攻防战:DLL注入技术详解
DLL注入是一種允許攻擊者在另一個進程的地址空間的上下文中運行任意代碼的技術。攻擊者使用DLL注入的過程中如果被賦予過多的運行特權,那么攻擊者就很有可能會在DLL文件中嵌入自己的惡意攻擊代碼以獲取更高的執行權限。
具體而言,該技術遵循以下步驟:
1.?需要將DLL寫入磁盤中;
2.?“CreateRemoteThread”調用“LoadLibrary”;
3.?反射加載程序功能將嘗試使用適當的CPU寄存器找到目標進程的進程環境塊(PEB),并從中嘗試查找內存中的kernel32dll和任何其他必需庫的地址;
4. 發現所需的API函數(如LoadLibraryA,GetProcAddress和VirtualAlloc)的內存地址;
5. 上述功能將用于將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權限。
轉載于:https://www.cnblogs.com/h2zZhou/p/7365258.html
總結
以上是生活随笔為你收集整理的系统安全攻防战:DLL注入技术详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库迁移——自动迁移Enable-Mi
- 下一篇: 使用云服务器安装QEMU搭建嵌入式开发环