隐藏

手把手带你开发一款 IIS 模块后门

发布:2020/10/15 8:52:02作者:管理员 来源:本站 浏览次数:1027

记得之前看一篇 APT 组织的报告时偶然间看到过 IIS 模块后门然后在网上找了找了资料,想自己开发一款然后开发到一半因为一些事情就停止了很久,这次清理项目文件的时候又有想了起来就打算重新用 C# 继续写出来。

关于 IIS 后门现在好像已经没什么人在提起了,不过最近有时间就顺便把当初的坑填上

首先准备工具

VS2017

IIS

开始开发

先打开 VS 创建一个 winfrom 项目然后添加一个 C# dll 项目

IIS_backdoor_dll 项目代码

以上是 IIS_backdoor_dll 项目的代码

主要思路是获取 Cookie 然后判断 Cookie 名字是否匹配如果匹配就根据 Cookie 名字获取其值然后调用相应的方法并传入其值。

总共实现了 3 个功能分别是执行 cmd,通过 C# 调用 powershell,执行 shellcode。代码里面都写有注释可以自己看看

如果不匹配就什么都不做

IIS_backdoor_shell 项目代码

IIS_backdoor_shell 项目代码就比较简单无非就是发送 http 请求获取返回等等

以上是 IIS_backdoor_shell 项目的代码

基本思路就是判断是否是执行 shellcode 如果是就 base64 编码 shellcode 文件然后末尾附加 |x64 或 |x86 然后添加到 cookie 并发送 http 请求,如果不是执行 shellcode 就直接 base64 编码相应的命令然后添加到 cookie 并发送请求

部署后门

编译完后会得到一个 dll 和 exe。

把 IIS_backdoor_dll.dll 文件放到 web 目录的 bin 文件夹中并配置 web.config 文件

web.config 文件

配置 ok 后正常访问没有任何问题可以

测试后门

现在让我们运行 IIS_backdoor_shell.exe 文件测试一下后门看看主要的 3 个功能

执行 cmd

dir C:\

ipconfig

C# 调用 powershell

获取进程和服务

执行 shellcode

先生成 x64 位的 shellcode

然后把 shellcode 拖到文本框二

执行后 cs 成功上线

基本上我就写了这三个功能其他的比如文件上传远程下载等等还是日后来填坑吧

浅谈一下原理

在 .Net 中,HttpModule 其实就是实现了 IHttpModule 接口的程序集。在 IIS 中 Http 请求会通过一系列 HttpModule,而在经过这些 HttpModule 时,这些 HttpModule 对 Http 请求具有完全的控制权。

而我们这时就可以根据这些 http 请求判断是否是后门请求如果是就触发后门,如果不是就什么也不做交给后面的模块,在经过所有的 HttpModule 之后,它会被 HttpHandler 处理,在 HttpHandler 处理完以后 http 请求返回包会再一次经历 HttpModule,最后到达客户端

基本流程图

具体关于 HttpModule 接口可以看看微软的官方文档

https://docs.microsoft.com/zh-cn/dotnet/api/system.web.ihttpmodule?redirectedfrom=MSDN&view=netframework-4.8

声明

本文提供的代码只限学习、研究,请勿用于其他用途,如因此造成其他后果,后果自负。

随便谈两句

明天整理一下在放 git 上先放个链接,git 链接

https://github.com/WBGlIl/IIS_backdoor

1、文笔不太好写的就这样了还请大佬们多多包涵

2、其实这个项目也还有很多地方可以改进一下比如 shellcode 的执行方式,参数加密方式,等等一些地方都可以在改进改进增强免杀,本文只是作为抛砖引玉希望大家可以搞出更好的东西。

3、在做应急的时候也应该多注意一下有关 web 容器的后门对于判断这类后门应该多查看系统日志,检查扩展,平时也应该做好防御不给对方留下后门的可乘之机