NtdllPipe – 使用 cmd.exe 检索干净版本的 ntdll.dll

原文链接:https://www.x86matthew.com/view_post?id=ntdll_pipe

我最近使用了一台安装了 AV 软件的计算机,该软件将用户模式挂钩注入到ntdll.dll中的各种函数中。我不了解现代 AV 软件的运行方式,所以我决定看看这是多么容易克服。

最明显的方法是使用CreateFile和ReadFile从磁盘读取ntdll.dll,但这会触发 AV 启发式引擎。 我的下一个想法是使用受信任的 Microsoft 可执行文件为我完成这项工作 – 一个候选者是cmd.exe。 我使用CreateProcess创建了一个隐藏的带有stdin的cmd.exe进程

重定向到我的程序中的自定义命名管道。我还为ntdll.dll输出内容创建了一个单独的命名管道。使用WriteFile将类型 %windir%\\system32\\ntdll.dll > \\.\pipe\ntdll_output_pipe发送到自定义标准输入管道,然后将ntdll.dll的内容写入我的输出管道,我读取并存储在缓冲区中. 这种简单的方法没有触发任何 AV 警告。

这可以通过删除标准输入重定向并使用初始参数中的 type 命令启动 cmd.exe 来稍微简化( cmd.exe / c type % windir%\\system32\\ntdll.dll > \\.\pipe\ntdll_output_pipe),但这看起来更可疑。

我已经清理了代码,以便可以轻松地使用它来读取任何命令的输出内容。

完整代码如下:

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部