DotNetToJScript 复活之路-DotNetToJScript 复活之路-华盟网

DotNetToJScript 复活之路

华盟学院山东省第二期线下学习计划

0x00 简介

去年James Forshaw开源了一个工具DotNetToJScript,能够利用JS、Vbs等脚本加载.Net程序。再此工具发布以后,很多很多的工具也在此基础上产生,比如StarFighters、CACTUSTORCH、SharpShooter等等,基于脚本的攻击也随之越来越多,所以在win10中,微软引入了AMSI,并将基于DotNetToJScript的脚本特征加入到检测之列。并将此工具标记为恶意软件。如果直接运行通过DotNetToJScript生成的脚本,便会直接拦截,如下图


最近,学到了两种bypass的方式,所以进行一下分享。

0x01 禁用AMSI

这里讲的禁用AMSI并不需要高权限,只需要一个简单的Trick,这个是从这篇文章学来的,通过Process Monitor 进行查看,设置以下过滤器:


运行通过DotNetToJScript生成的脚本,可以监控到以下调用过程:

这里我们可以看到,在加载AMSI之前,查询了以下注册表键值HKCU\Software\Microsoft\Windows Script\Settings\AmsiEnable,尝试修改此键值为0:

再次运行脚本,可以看到shellcode成功执行了。

虽然修改注册表可以实现禁用AMSI,但是需要高权限,那怎样才可以在普通权限下禁用AMSI,其实通过@tiraniddo的文章我们可以看到,其实可以通过DLL劫持来进行绕过。通过Process Monitor可以看到检测过程中调用了C:\Windows\System32\amsi.dll,如果我们把cscript.exe 重命名成amsi.dll会怎么样呢?

可以看到成功shellcode 成功执行了,修改过滤器如下:


我们来看一下调用过程


可以看到,现在已经没有调用C:\Windows\System32\amsi.dll,这也就让我们成功执行了我们的shellcode。

0x02 利用wmic

Casey Smith@subTee在博客分享的一个技巧,使用wmic能够从本地或从URL调用XSL(可扩展样式表语言)脚本。经过测试,通过此方式来调用DotNetToJScript的脚本也是可以成功执行的。subTee的文章在这。利用命令如下:


evil.xsl


修改好的脚本,可以看这里:

https://raw.githubusercontent.com/Ridter/AMSI_bypass/master/shellcode.xsl

使用一下命令则可执行shellcode


但是使用wmic执行的时候会有一个问题,在powershell下执行会失败。如下图:

那么怎么调用呢?

在读了mdsec的这篇文章以后,我们发现,其实是可以通过COM来调用的。用javascript写可以这样:

那这样我们就可以构造HTA来远程调用了。为了方便使用,我已经写好了一个aggressor脚本,地址:

GITHUB:https://github.com/Ridter/AMSI_bypass

0x03参考

https://tyranidslair.blogspot.com/2018/06/disabling-amsi-in-jscript-with-one.html

https://subt0x11.blogspot.ca/2018/04/wmicexe-whitelisting-bypass-hacking.html?m=1

https://www.mdsec.co.uk/2018/06/freestyling-with-sharpshooter-v1-0/

本文由来源 Evi1cg's blog ,由 一叶知秋 整理编辑,其版权均为 Evi1cg's blog 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
已赞1

发表评论