跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

GadgetToJScript利用率分析


剑道尘心

推荐的帖子

0x00 前言

Gadtojscript可以封装。Net程序的js或vbs脚本。Gadtojscript与詹姆斯福肖开源的DotNetToJScript相比,修改了反序列化调用链,绕过了AMSI,增加了绕过的功能。Net 4.8到block组件。负荷

本文用于记录研究细节,分析利用思路,简单修改原项目,方便测试有效载荷,分享与SILENTTRINITY结合的方法。

0x01 简介

本文将介绍以下内容:

GadgetToJScript的代码分析和实现逻辑

为了测试有效载荷的修改方法

利用率分析

与沉默三位一体相结合的方法

0x02 GadgetToJScript的代码分析和实现逻辑

1.代码分析

(1)templates文件夹

用js、vbs和hta保存模板

模板文件基本上与DotNetToJScript相同,但有以下区别:

增加了一些对版本的判断。Net,读取注册表HKLM \ \软件\ \微软\ \ NET Framework \ \ v4.0.30319 \ \,如果成功,则版本为4.0.30319,否则为2.0.50727。

反序列化进行了两次。第一次是禁用ActivitySurrogateSelector的类型检查,它用于绕过。Net 4.8到block组件。加载,第二次用来加载。Net程序。

(2)Program.cs

主程序替换模板中的变量,计算长度,生成最终的js、vbs和hta脚本。

(3)TestAssemblyLoader.cs

Payload保存为字符串,使用CompileAssemblyFromSource动态编译,编译结果保存在内存中(results。已编译的程序集)。

关键功能:CompileAssemblyFromSource

其中,GenerateInMemory属性的默认值为true,表示CompiledAssembly保存在内存中,可以通过CompilerResults实例的CompiledAssembly获取。如果设置为false,编译后的程序集可以保存在本地硬盘上。

参考资料:

https://docs . Microsoft . com/en-us/dot net/API/system . codedom . compiler . codedom provider . compile assembly from source?view=netframework-4.8

(4)_ASurrogateGadgetGenerator.cs

构建一个映射字节数组的链来创建类的实例:

byte[] -程序集。装载-装配-装配。GetType - Type[] - Activator。创建实例-赢!

此代码应来自:https://github . com/pwntester/yso serial . net/blob/master/yso serial/generators/activity surrogate selector generator . cs # L50

可以理解为TestAssemblyLoader.cs的实现将编译后的结果保存在内存中(results。CompiledAssembly),而_ASurrogateGadgetGenerator.cs用于读取此内存并实现对。Net程序。

(5)_DisableTypeCheckGadgetGenerator.cs

用于绕过的功能。Net 4.8到block组件。负荷

请参考:

https://silentbreaksecurity . com/re-animated-activitysurrogateselector/

(6)_SurrogateSelector.cs

创建一个充当包装的代理类。

此代码应来自:https://github . com/pwntester/ysoserial . net/blob/bb 695 b 8162 BDC 1d 191 c 32 f 6 a 234 a8ff 5665 ab9b/ysoserial/generators/activitysurrogateselector generator . cs # l15

2.实现逻辑

执行TestAssemblyLoader.cs以字符串形式动态编译有效载荷,并将编译结果保存在内存中(results。已编译的程序集)。

execute _ asurrogategadgetgenerator . cs读取1中的内存,实现对的调用。Net程序。

execute _ disabletypecheckgadgetgenerator . cs实现绕过的功能。Net 4.8到block组件。负荷

执行Program.cs,替换模板文件的两个变量,计算长度,生成最终的js、vbs、hta脚本。

0x03 为了便于测试Payload的修改方法

检查文件TestAssemblyLoader.cs Payload是否以字符串形式保存,内容如下:

string _testClass=@ '

使用系统;

使用系统。Runtime . InteropServices

公共类TestClass

{

'[DllImport('User32.dll ',CharSet=CharSet。Unicode)]'

@ ' public static extern int MessageBox(int ptr h,string m,string c,int t);

public TestClass(){

' ' MessageBox((IntPtr)0,'测试。已调用. NET程序集构造函数。‘库里奥’,0);'

@'}

}

我们可以看到,当有效载荷保存为字符串时,要考虑转义字符,这会影响有效载荷的开发效率,而且不是很直观。

下面是我的解决方案:将CompileAssemblyFromSource改为CompileAssemblyFromFile。

这样,你就可以从文件中读取有效载荷,而不再需要考虑转义字符。

我的修改版本已经上传到github,地址如下:

https://github.com/3gstudent/GadgetToJScript

我的版本修改TestAssemblyLoader.cs,关键代码如下:

编译器结果结果=提供程序。CompileAssemblyFromFile(参数,' payload . txt ');

从固定文件payload.txt中读取有效负载

如果想实现和原项目一样的功能,payload.txt的内容如下:

使用系统;

使用系统。Runtime . InteropServices

公共类TestClass

{

[DllImport('User32.dll ',CharSet=CharSet。unicode)]public static extern int MessageBox(int ptr h,string m,string c,int t);

公共测试类()

{

MessageBox((IntPtr)0,' Test。已调用. NET程序集构造函数。‘库里奥’,0);

}

}

Payload看起来更直观,也更容易开发。

0x04 利用分析

GadgetToJScript应该被看作是詹姆斯福肖的开源DotNetToJScript的进一步利用。添加的反序列化调用链不需要调用d.dynamicconvoke (al.toarray())。CreateInstance (entry _ class),可以绕过某些杀毒软件对特定代码的检测。你可以试着用这个作为进一步开发的模板。

为了有效载荷的进一步利用,需要改成csharp格式,这让我想起了SILENTTRINITY。

0x05 同SILENTTRINITY结合的方法

关于SILENTTRINITY,我在之前的文章《SILENTTRINITY利用分析》里做了分析。

注:

SILENTTRINITY在不断更新,增加更多功能,我的文章内容可能不再准确。

设置SILENTTRINITY后,选择stager生成csharp格式。该命令如下所示:

舞台演员

目录

使用csharp

生成http

从stager.cs中提取代码,填入payload.txt,最终的样本代码已经上传到github,地址如下:https://github . com/3g student/gadgettojscript/blob/master/payload . txt。

编译我修改过的GadgetTojscript,将payload.txt保存在同一个目录下。生成JS脚本的命令如下:

GadgetToJScript.exe-w js-o 1

1.js生成

1.执行1.js后,SILENTTRINITY获取在线信息,进程名为wscript,如下图所示

2-1.png

测试成功。

0x06 小结

本文介绍了GadgetToJScript的代码细节和实现过程,对原项目进行了简单的修改,使有效载荷的测试更加容易,分析了利用思路,分享了与SILENTTRINITY结合的方法。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...