利用rundll32执行程序的函数执行程序
2024-09-25 08:38:10
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执行程序的分析
Running programs via Proxy & jumping on a EDR-bypass trampoline
命令执行系列
http://www.hexacorn.com/blog/category/living-off-the-land/pass-thru-command-execution/
最新文章
- 谈谈关键字final
- 洛谷P1101 单词方阵——S.B.S.
- Shell study note
- Delphi 有关Dbgrideh控件:变色处理
- [kipmi0]进程导致系统负载高
- Linux发行分支时间轴
- 导出excel表功能
- .Net实现的批量删除(使用了repeater控件)
- VS的启动方式
- C# 白话系列之——白话委托
- iOS sharedSDK详解
- (转载)delphi 把图片存入数据库
- canvas个人总结
- 在WPF中使用ArcGIS Engine
- winform倒计时
- delphi 鼠标拖动
- RHEL,红帽CentOS7linux进入单用户(紧急救援)模式修改密码
- 使用数据泵expdp、impdp备份和还原oracle数据库
- rad 10.2
- 导出Excel工具类