0x1 介绍
GadgetToJScript工具能够将.Net程序封装在js或vbs脚本中,相比于James Forshaw开源的DotNetToJScript,修改了反序列化调用链,能够绕过AMSI,添加了绕过.Net 4.8+阻止Assembly.Load的功能。
该工具生成.NET序列化的小工具,当JScript,VBScript或VBA通过BinaryFormatter反序列化时,可以触发程序集加载/执行。
stage_1是用来绕过.Net 4.8+阻止Assembly.Load的XML代码,这里经过bash64加密。
stage_2是要执行的payload的硬编码,这里经过bash64加密
github:
https://github.com/med0x2e/GadgetToJScript
0x2 代码结构
(1)templates文件夹
保存js、vbs和hta的模板
模板文件同[DotNetToJScript]基本相同,区别如下:
- 添加了一些对.Net版本的判断,读取注册表
HKLM\\SOFTWARE\\Microsoft\\.NETFramework\\v4.0.30319\\
,如果成功,版本为4.0.30319,否则为2.0.50727 - 做了两次反序列化,第一次是禁用ActivitySurrogateSelector类型检查,用来绕过.Net 4.8+阻止Assembly.Load的功能,第二次用来加载.Net程序
(2)Program.cs
主程序,替换模板中的变量,计算长度,生成最终的js、vbs和hta脚本