利用rundll32執行程序的函數執行程序


利用rundll32執行程序的函數執行程序

來源 https://www.cnblogs.com/17bdw/p/8668780.html

1、前言

無意間發現hexacorn這個國外大佬,給出了很多通過rundll32執行DLL中的函數執行程序的方法,思路很靈巧。

2、原理

  • rundll32加載dll

用法:

rundll32 <dllname>,<entrypoint> <optional arguments> 

參數代表傳入dll的導出函數名,在dll中定義如下:

void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 

參數對應dll導出函數中的LPSTR lpszCmdLine

也就是說通過rundll32能控制dll導出函數的LPSTR lpszCmdLine參數

  • 執行命令原理

枚舉%windir%/system32下所有dll的導出函數,篩選出包含導出函數OpenURL的dll。

也就是在系統自帶的DLL中找到存有利用函數的方式。

通過powershell獲得dll的導出函數可參考FuzzySecurity的代碼,地址如下:

https://github.com/FuzzySecurity/PowerShell-Suite/blob/master/Get-Exports.ps1

在這個代碼的基礎上,添加枚舉dll的功能,分別獲得導出函數,對可以執行程序的函數進行判斷。

3、實現

  • url.dll
    rundll32 url.dll, OpenURL file://c:\windows\system32\calc.exe rundll32 url.dll, OpenURLA file://c:\windows\system32\calc.exe rundll32 url.dll, FileProtocolHandler calc.exe 
  • zipfldr.dll
    rundll32 zipfldr.dll, RouteTheCall calc.exe

4、參考

關於利用rundll32執行程序的分析

https://xz.aliyun.com/t/2188

Running programs via Proxy & jumping on a EDR-bypass trampoline

http://www.hexacorn.com/blog/2017/05/01/running-programs-via-proxy-jumping-on-a-edr-bypass-trampoline/

命令執行系列

http://www.hexacorn.com/blog/category/living-off-the-land/pass-thru-command-execution/

https://twitter.com/subTee

 

============= End

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM