快捷搜索:  网络  CVE  渗透  后门  扫描  木马  黑客  as

探索基于.NET下妙用DLL处理映照完成后渗透排泄权限维持

0×01 媒介

笔者在“探索.NET完成一句话木马”系列文章中,使用一般处理程序(当然也不限于ashx,asmx仍是可用)的时辰发现一处功能点可以自定义文件类型映照,再配合强盛的csc以及js编译器就可以完善的生成DLL并且作为WebShell后门程序,这就给攻击者在后渗透排泄阶段权限维持提供了极大的便利,此后门可以完成任意后缀名走访,可以绕过一些IDS等防御产品。笔者从攻防的视角总结出一点姿势以及人人分享一下。关于本文先容到的权限维持的要领以及步骤,笔者画了简易的流程图 ,以下图。

传送门

探索基于.NET下完成一句话木马之ashx篇

探索基于.NET下完成一句话木马之Asmx篇

探索基于.NET下完成一句话木马之SVC篇

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

隐躲手段 说明
行使App_Code目录 攻击者创建类文件并且在代码中写入一句话木马,在别处文件中实例化调用该类
直接上传DLL 攻击者内陆制造一个DLL,可以选择性的加壳后上传到Bin目录下
内陆生成DLL 攻击者行使WebShell在Bin目录下生成DLL后门
第一种要领考虑在App_Code目录下创建类文件且在代码中写入一句话木马,再归到根目录下寻觅可追加代码的文件或者创建新的文件来调用类;第二种要领考虑在内陆创建好一个DLL最佳加上壳,再上传到Bin目录下后修改web.config文件增添handlers节点追加映照关系;第三种要领行使内陆的环境生成DLL后修改映照走访;如许的好处显而易见,一句话或 大小马内容整个保存在DLL中,传统的文本查杀不收效,并且走访的时辰通过GIF后缀名走访归显的是一个图片验证码如许也能逃逸一些基于流量特征检测的IDS产品,下面分几个小节来具体说明完成的道理以及步骤。

0×02 DLL型WebShell后门

在先容DLL后门之前需要先容.NET应用中两个特殊的目录,一个是App_Code目录、还有一个是Bin目录;它们的作用都是在多个Web 应用程序或多个页之间同享代码,App_Code 文件夹可以包含.vb、.cs等扩台甫的源代码文件,,在运行时将会自动对这些代码进行编译,Web应用程序中的其他任何代码都可以走访到,笔者为了更好的演示结果,新建了一个App_Code目录,黑客技术,并且在About.aspx里完成了下面代码:

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

Apptest.ashx中代码以下,作用是输出一句话“Hello World , this is App_Code ProcessRequest”

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

关上VS调试输出的效果以下图

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

若Web应用里存在App_Code 目录,攻击者将一句话木马隐躲在该目录下的某个文件的要领里,正好该要领可以被外界的别的的文件调用到,如许就可以完成一个较为隐蔽的后门程序,但这类隐蔽依旧会被D盾或者安全狗查杀到,显著这类要领不是最好的选择,所以可以考虑放到Bin目录下的DLL文件中。

至于.NET应用程序中Bin目录有何作用,先来段先容:Bin文件夹中存放着已经编译的程序集,并且 在Web 应用程序任意处的其他代码会自动引用该文件夹。典型的示例是您为自定义类编译好的代码。您可以将编译后的程序集复制到Web应用程序的 Bin文件夹中,如许所有页都可以使用这个类。Bin文件夹中的程序集无需注册。只需.dll 文件存在于 Bin 文件夹中,.NET 就可以识别它。要是您更改了 .dll 文件,并将它的新版本写入到了 Bin 文件夹中,则 .NET 会检测到更新,并对随后的新页要求使用新版本的 .dll 文件。接下来笔者假定服务器上已经存在一个WebShell,创建一个ashx的小马,注意代码是C#的即可,至于文件的后缀名可以任意指定,笔者指定为C:\inetpub\wwwroot\AdminWeb.txt以下图

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

保存后到WebShell的CMD窗口下去调用csc.exe编译这个AdminWeb.txt,csc.exe是 .NET提供的可以在命令行下编译cs文件的工具,装置了.Net环境的主机csc.exe的默认地位在 C:\Windows\Microsoft.NET\Framework\[.NET详细版本号]目录下,例如笔者装了VS以后也会自动装置2.0/3.5/4.0版本,在命名行下输入 /? 看到所有的帮助

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

其中 /t:library 表示生成dll,/r参数表示引用DLL,-out参数表示生成dll的地位,这里很显著得放到Bin目录下,完备命令以下:

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

看到如下内容的输出,表示命令执行成功!

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

WebShell执行效果如图

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

再跳转到站点Bin目录下看到成功创建了想要的AdminWeb.dll文件,至此DLL版本的后门程序已经制造实现。

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

到了这步攻击者肯定会想到在一个已经存在的文件中去调用这个DLL里的要领,笔者新建了c.aspx文件,内里写上一段代码去实例化DLL里的AdminWeb类会触发其组织要领,代码以下

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

预览后得到下图效果,在实例化类的过程中自动调用了组织要领,执行了DOS下的Set命令。

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

按照如许的思路在服务器上已经找不到ASPX马儿的任何特征,至多可以发现新建的c.aspx文件可疑,但调用的要领名看上去很平常,即使治理员用D盾或者安全狗也扫不出任何的蛛丝马迹,也完成了一种后门权限维持的要领。但笔者还不餍足,接下来还要先容一种更隐蔽的要领。

0×03 HttpHandler映照

笔者在第一篇先容ashx中我们提到过 ISAPI,它是根据文件名后缀把不同的要求转交给不同的处理程序。几乎一泰半的文件走访都交给 aspnet_isapi.dll 行止理了,很显然aspnet_isapi.dll对不同的要求采取不同的处理方式,查看C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config设置定义,可以知道ashx是可以自定义设置完成映照关系,例以下面的设置:

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

设置项中path属性是必选的,它的作用是指定路径可以包含单个URL或者简单的通配符字符串如 *.ashx ;  别的的属性参考下表

属性 说明
name 处理映照程序的名称
type 必选的属性,指定逗号宰割的类/程序集组合,一般对应的就是Bin目录下的DLL
verb 必选的属性,可以是GET/POST/PUT;也可以是脚本映照如通配符*
preCondition 可选属性,可以是集成模式(Integrated)/ 经典模式(Classic)
validate 可选的属性,通常是true

下面笔者演示将通过阅读器走访验证码图片达到命令执行的结果:起首name属性配置为一个伪装成正常处理程序的名字PageHandlerFactory-ISAPI-2.0-32;path属性配置为任意名称的gif图片,这里是完成的验证码;verb属性为*表示任意要求都可以;type是最重要的命名空间.类名 ;preCondition属性配置为集成模式(IIS7性能好)

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

笔者编写了一个C#的小马,保存名称为IsapiModules.Handler.cs ,完成三个功能,一是生成验证码,二是创建一个aspx的一句话文件,三是执行cmd命令;生成验证码的目的是为了更好的隐躲本人,从HTTP返归的数据里输出的是一张图片文件,代码片段以下图

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

再在命令行下生成 IsapiModules.Handler.dll,生成DLL的命令以下:

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

最后只要要在站点根目录下的Web.config文件新增handlers/httpHandlers节点 ; 注意在IIS6添加以下设置

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

在IIS7集成模式下如许设置

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

设置好了以后,IIS7服务治理器映照列表中就会注册笔者自定义的映照程序 PageHandlerFactory-ISAPI-2.0-32,名字以及体系的 PageHandlerFactory-ISAPI-2.0很接近,但确凿是一个伪装者

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

关上阅读器随意输入http://ip/anything.gif?a=c&p=cmd.txt&c=ipconfig ,这个时辰界面是一个验证码图片,伪装的很好,IDS也不好检测。

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

这个时辰已经在服务器上生成了cmd.txt,得到IP设置信息!

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

试想留下如许一个完善的后门程序,参数加不加的时辰都会输出验证码图片,如许就可以绕过一些终端产品以及流量检测,达到了很好的隐躲结果。

0×04 菜刀一句话的隐躲

完成菜刀可用的一句话就必须要引入Jscript.Net,而且需要行使.NET FrameWork自带的jsc.exe去编译js脚本。有关jsc.exe的命令可以参考 https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/7435xtz6(v=vs.100)

笔者新建IsapiModu1e.Handler.js,完成代码以下

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

在WebShell里调用jsc.exe编译js脚本,输入

image.png探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持跳转到Bin目录下得到编译后的DLL

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持修改Web.config设置,添加新的DLL映照关系,实现这步全部菜刀后门设置实现。

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

走访图片菜刀地址 http://ip/news.gif ,看到下图表示菜刀马运行成功!

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持菜刀也毫无压力的连接成功!

探索基于.NET下妙用DLL+处理映照完成后渗透排泄权限维持

最后笔者下载了常见的几款查杀工具,不出预料之前探索出来的一句话木马以及混淆后的DLL均免杀。

0×05 小结

1.   如许完成的后门无比隐蔽,治理员很难发觉,可以长期权限维持;

2.   生成的DLL也能够在内陆,或者再进一步可以混淆或者加壳等等匹敌服务端杀软;

3.   文章的代码片段以及DLL下载请参考https://github.com/Ivan1ee ;

4.   Github上已经有编译好的并且加了混淆的DLL;

5.   未加混淆的DLL MD5分别是

IsapiModu1e.Handler.dll  => MD5 (39cbf41b99a3751b3ff755509e35b1ae)、IsapiModules.Handler.dll => MD5 (e891914d65f28822aaf2d13ae984eee6)

6.   加壳混淆后的DLL MD5分别是 

IsapiModu1e.Handler.dll => MD5 (8cc5a23e925aa52d0ae80bec8ab28f88) 、IsapiModules.Handler.dll => MD5 (7cbba64946ecbc824c2cca1192b16684)

0×06 防御措施

1.   作为治理员可以通过查看Web.config里的handlers映照关系排查;

2.   通过IIS服务器治理程序排查非法的映照关系;

3.   对于隐躲的大马或者小马,传统的IDS不好检测,需要终端防护联动起来排杀;

0×07参考链接

https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/7435xtz6(v=vs.100)

https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/compiler-options/co妹妹and-line-building-with-csc-exe

https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-2.0/bya7fh0a%28v%3dvs.80%29

*

您可能还会对下面的文章感兴趣: