女黑客:通过rundll32运行C#DLL转储内存

新闻动态 1年前 (2020) 玥玥
0

在网上看到一个用rundll32调用c#的dll的案例,感觉还不错,就拿来复现一下
原文:https://blog.xpnsec.com/rundll32-your-dotnet/
借助mimikatz的项目https://github.com/GhostPack/SafetyKatz
一、VS加载项目
由于SafetyKatz是.NET PE程序实现,所以在VS中的属性 -> 应用程序 -> 输出类型中更改为 “类库”

女黑客:通过rundll32运行C#DLL转储内存

二、修改代码
首先需要将Main函数改成如下
[DllExport]
staticvoidRunSafetyCatz()
这时候已经定义好入口点之后,设置输出在父程序终端
[DllImport(“Kernel32.dll”)]
private static extern bool AttachConsole(int processId);
AttachConsole(-1);
如果不设置,在之后调用rundll32的时候是没有回显的
最后的代码大致如下
[DllExport]
staticvoidRunSafetyCatz()
{
AttachConsole(-1);
string[] args;
if(!IsHighIntegrity())
{
Console.WriteLine("n[X] Not in high integrity, unable to grab a handle to lsass!n");
}
三、Nuget下载DllExport依赖
在工具->Nuget包管理中下载DllExport

女黑客:通过rundll32运行C#DLL转储内存下载完后卸载掉,这时候在项目路径中会出现一个DllExport.bat,点击运行

女黑客:通过rundll32运行C#DLL转储内存
按照上述参数进行配置,然后点击Apply再重新加载项目到VS中
照常编译后

女黑客:通过rundll32运行C#DLL转储内存
在项目的生成目录下会出现两个版本的dll

女黑客:通过rundll32运行C#DLL转储内存
选择自己系统相匹配的版本然后运行

女黑客:通过rundll32运行C#DLL转储内存
版权声明:玥玥 发表于 2020-07-15 20:41:07。
转载请注明:女黑客:通过rundll32运行C#DLL转储内存 | 女黑客导航