跳转到帖子

搜索论坛

显示结果为标签'GadgetToJScript'。

  • 用标签来搜索

    用逗号分隔标签类型
  • 用作者来搜索

内容类型


论坛

  • 漏洞与黑客攻击防御安全领域
    • 黑客攻防业务合作
    • 世界黑客新闻动态
    • WEB和服务器安全漏洞
    • CHT漏洞数据库
    • Linux Kali高级学习教程
    • CTF&密码学与社会工程
    • 木马病毒分析
    • 黑客世界会员中心
  • 问题讨论中心
    • 问答中心
    • 交流中心
  • 编程开发
    • 各种编程技术
    • ios /安卓开发
  • CHT官方团队介绍及比赛制度
    • CTF攻防系统[供会员使用]
    • 积分商场
    • 积分跳马系统
    • 积分统计系统

产品组

  • Hacker attack and defense security hardware series
  • Internet Security Book Recommendations

博客

没有结果。

没有结果。

类别

  • Hacker Attack and Defense & Network Security Videos

查找结果在…

查找包含的结果…


创建日期

  • 开始

    结束


最后更新

  • 开始

    结束


按数量过滤…

注册日期

  • 开始

    结束


用户组


About Me

找到1个结果

  1. 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,如下图所示 测试成功。 0x06 小结 本文介绍了GadgetToJScript的代码细节和实现过程,对原项目进行了简单的修改,使有效载荷的测试更加容易,分析了利用思路,分享了与SILENTTRINITY结合的方法。 留下回复

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    ×
    ×
    • 创建新的...