通过 Rundll32 运行 C# DLL 转储内存

释放双眼,带上耳机,听听看~!

在网上看到一个用rundll32调用c#的dll的案例,感觉还不错,就拿来复现一下

原文:https://blog.xpnsec.com/rundll32-your-dotnet/

借助mimikatz的项目https://github.com/GhostPack/SafetyKatz

一、VS加载项目

由于SafetyKatz是.NET PE程序实现,所以在VS中的属性 -> 应用程序 -> 输出类型中更改为 “类库”

二、修改代码

首先需要将Main函数改成如下

[DllExport]
static void RunSafetyCatz()

这时候已经定义好入口点之后,设置输出在父程序终端

[DllImport("Kernel32.dll")]
private static extern bool AttachConsole(int processId);


AttachConsole(-1);

如果不设置,在之后调用rundll32的时候是没有回显的

最后的代码大致如下

...
 [DllExport]
        static void RunSafetyCatz()
        {
            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

下载完后卸载掉,这时候在项目路径中会出现一个DllExport.bat,点击运行

按照上述参数进行配置,然后点击Apply再重新加载项目到VS中

照常编译后

在项目的生成目录下会出现两个版本的dll

选择自己系统相匹配的版本然后运行

网络安全

[CTF-PWN学习]初识Canary保护 & 简单bypass利用

2020-6-5 21:58:15

网络安全

通过调用 Windows 本地 RPC 服务器 Bypass UAC

2020-6-13 20:18:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索