*本文仅供安全研究和教学用途,禁止非法使用
在渗透测试的时候,我们可能需要规避杀软程序,特别是在post攻击阶段要在目标机器上执行特定文件的时候。有时候,绕过特定的杀软是一个挑战,因为并没有标准的规避杀毒软件的方法和技术。因此,我们需要尝试一个不同的方法来绕过它们。这篇文章将介绍常用的规避杀软的工具。
文件分割和十六进制编辑器
我们要讨论的第一个技术就是使用文件切割工具来定位杀软检测的特征,然后修改它。这是一个比较老的绕过杀软的办法。如果我们能够精确定位出被检测的特征,这个技术是很有效的。然而,这个技术也有限制。如果我们破坏了应用程序的功能,即便我们规避了杀软也是无用的。所以,只要我们在修改特征的时候没有改变它的功能,就是可以的。
这可以使用文件分割工具来实现,它能把二进制分割成多个部分。分割方式应该是这样的,每一个部分都比前一个部分多一个固定大小的内容。然后,我们使用杀软扫描这些分割好的块儿,判断哪一个块儿被首先标记为恶意软件。我们需要重复这个过程直到定位出特征的确切位置。“Dsplit”和“Evade”之类的工具就可以用来分割文件。一旦定位出特征,我们需要修改它然后保存。
让我们用一个例子来说明它是怎样对抗杀软的吧。
我从这里下载了wce.exe。这是在post攻击阶段常用的获取明文口令的工具。
当我们在virustotal.com上扫描这个工具时,56个杀软中有47个把它识别为恶意软件。
通过使用Dsplit,我们发现杀毒软件使用欢迎字符串来检测它,这个字符串会在工具运行时显示。因此,我用十六进制个编辑器打开wce.exe,通过把大写转换为小写,小写转换为大写的方式改变其特征。如下所示:
在对二进制文件作了上面的修改后,再次在virustotal.com上扫描,这次发现56个杀软中有42个将其标记为恶意软件。
然而,这样并不能绕过大多数杀毒软件程序,如果我们能够准确定位出被哪些杀软检测的特征的话,我们就可以规避它们。
作为一个例子,下面是原始的wce程序,从内存中提取口令。
原始wce.exe的输出
在修改了二进制文件后,功能没有变化。它依然可以从内存中得到口令。如下图。
修改后的wce.exe的输出
Hyperion
加密二进制也是一种常用的过杀软的方法。加密器的原理就是混淆二进制来对抗杀软。当二进制文件运行的时候加密的内容会被还原。Kali Linux有一个开源的加密器,名为Hyperion,已经可以下载使用。
我用的是从上面的链接处下载的工具。让我们看看这个工具怎么用。
在我们使用Hyperion之前,首先让我们在virustotal.com上扫描wce.exe的32位版本。
正如我们看到的,有44个杀软把它识别为恶意软件。
让我们用Hyperion加密这个文件,如下:
让我们再次扫描这个新生成的文件,看看检测率。
如上图所示,与未加密的文件相比,这个得到了更低的检测率。
Veil-Evasion
Veil-Evasion是另外一个用python写的流行的框架。我们可以用这个框架生成能够规避大多数杀软的载荷。
可以从其官网上下载到Veil-evasion。
首先,下载并安装Veil-Evasion,然后运行它,命令为:
“veil-evasion”
正如我们看到的,已经加载了46个载荷。我们可以使用“use”命令选择特定的载荷。
我选择第31个,创建一个python/meterpreter/rev_tcp可执行载荷。实际上,它创建了一个python脚本,然后会使用工具转换为可执行文件,比如:pyinstaller。
在上图中,我们设置LHOST为192.168.56.101,输入命令“generate”生成载荷。
接下来,它会让我们输入载荷的名称,我将其命名为“backdoor”。如上面提及的,Veil会把python文件转为exe,它询问我们选择什么工具来转换。我个人而言,喜欢Pyinstaller,我输入1选择它。这两步如下图所示
一旦完成,它就会创建出最终的载荷,并显示它的路径,如下:
正如我们在上图看到的,这个框架的作者不建议我们把样本上传到网上。因此,我在Avast杀软的沙盒环境中测试这个载荷,没有被检测到。
这些载荷在目标机上也会工作得很好。
下图展示了使用上面创建的载荷获取的一个meterpreter shell。
可以试试带加密的其它载荷,效果会更好。
peCloak
peCloak是另外一个有趣的工具,我是从下面的链接处下载的。
http://www.securitysift.com/pecloak-py-an-experiment-in-av-evasion/
这个脚本自动采用多种技巧规避杀软。作者为了自己使用开发了这个工具,之后公开发行了beta版。这个脚本可以启发我们写出自己的规避杀软的脚本。
让我们看看怎么用它
为此,我要用msfvenom创建一个meterpreter载荷。如下图:
让我们在virustotal.com上扫描这个载荷“test.exe”,如下图。
56个杀软中有36个杀软将其标记为恶意软件。现在,让我们执行peCloadk.py脚本。我们以默认的参数执行这个脚本,如下:
它创建了一个名为“cloaked.exe”的文件,如上图所示。
让我们扫描这个新载荷,看看有多少杀毒软件引擎将其识别为恶意软件。
56个中只有26个将其识别为恶意软件。
结论
除了这篇文章中提到的工具外,还有很多其它的工具,比如Metasploit的编码器。写一个定制的能规避杀软检测的载荷比使用流行的框架创建载荷要好。注意:在你阅读这篇文章的时候,这篇文章中显示的结果可能有所变化,因为杀软的特征也在不断地更新。