探索基于.NET下妙用DLL处理映射实现后渗透权限维持
0×01 前言
笔者在“探索.NET实现一句话木马”系列文章中,使用一般处理程序(当然也不限于ashx,asmx照样可用)的时候发现一处功能点可以自定义文件类型映射,再配合强大的csc和js编译器就可以完美的生成DLL并且作为WebShell后门程序,这就给攻击者在后渗透阶段权限维持提供了极大的便利,此后门可以实现任意后缀名访问,可以绕过一些IDS等防御产品。笔者从攻防的视角总结出一点姿势和大家分享一下。关于本文介绍到的权限维持的方法和步骤,笔者画了简易的流程图 ,如下图。
传送门
探索基于.NET下实现一句话木马之ashx篇
探索基于.NET下实现一句话木马之Asmx篇
探索基于.NET下实现一句话木马之SVC篇
隐藏手段
说明
利用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里实现了下面代码:
Apptest.ashx中代码如下,作用是输出一句话“Hello World , this is App_Code ProcessRequest”
打开VS调试输出的结果如下图
若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如下图
保存后到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版本,在命名行下输入 /? 看到所有的帮助
其中 /t:library 表示生成dll,/r参数表示引用DLL,-out参数表示生成dll的位置,这里很显然得放到Bin目录下,完整命令如下:
看到下列内容的输出,表示命令执行成功!
WebShell执行结果如图
0×01 前言
笔者在“探索.NET实现一句话木马”系列文章中,使用一般处理程序(当然也不限于ashx,asmx照样可用)的时候发现一处功能点可以自定义文件类型映射,再配合强大的csc和js编译器就可以完美的生成DLL并且作为WebShell后门程序,这就给攻击者在后渗透阶段权限维持提供了极大的便利,此后门可以实现任意后缀名访问,可以绕过一些IDS等防御产品。笔者从攻防的视角总结出一点姿势和大家分享一下。关于本文介绍到的权限维持的方法和步骤,笔者画了简易的流程图 ,如下图。
传送门
探索基于.NET下实现一句话木马之ashx篇
探索基于.NET下实现一句话木马之Asmx篇
探索基于.NET下实现一句话木马之SVC篇
隐藏手段
说明
利用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里实现了下面代码:
本文来自无奈人生安全网
Apptest.ashx中代码如下,作用是输出一句话“Hello World , this is App_Code ProcessRequest”
打开VS调试输出的结果如下图
若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如下图 无奈人生安全网
保存后到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版本,在命名行下输入 /? 看到所有的帮助
其中 /t:library 表示生成dll,/r参数表示引用DLL,-out参数表示生成dll的位置,这里很显然得放到Bin目录下,完整命令如下:
看到下列内容的输出,表示命令执行成功!
内容来自无奈安全网
WebShell执行结果如图
copyright 无奈人生
无奈人生安全网