译者:興趣使然的小胃
预估稿费:120RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
一、前言
受Casey Smith(@subtee)发表的一则推文的启发,我更新了几年前我与Andrew Chiles(@andrewchiles)共同开发的一款工具。
以红队身份参与渗透测试活动时,如果无法避免磁盘操作,那么你可以使用这款工具尽可能融入周围环境。在内存中操作是非常好的方法,然而许多情况下,我们不得不使用磁盘上的二进制文件。我使用的技术非常有效,那就是修改二进制文件的资源信息(元数据,metadata)。元数据包含许多字段,如文件图标、版本、描述、产品名称、版权等信息。许多威胁源经常会通过突破安全防御或者修改IOC特征来尝试欺骗或蒙蔽安全分析人员(可以参考我发布的关于修改IOC特征的系列视频)。
将文件融入周围环境可以使安全分析人员将恶意行为当成可信行为。特别是如果某个二进制文件看起来像是微软出品的,那么应该更加可信。
这正是MetaTwin发挥作用的场景。经过修改后,这款工具不仅能够修改二进制文件的元数据,也能添加最近由@subtee以及@mattifestation描述的数字签名信息。
二、MetaTwin工作原理
1、MetaTwin以经过合法签名的二进制文件作为源文件,如explorer.exe。
2、提取资源(利用ResourceHacker)以及数字签名信息(利用SigThief)。
3、将提取到的数据写入目标二进制文件中。
三、工具演示
在这个例子中,我选择使用默认的meterpreter reverse_tcp二进制文件。选择这个程序并没有什么特别含义,这里我们可以使用任意二进制文件(.exe或.dll文件)。就我个人而言,在实际环境中我是Cobalt Strike的忠实粉丝。
如你所见,经过处理的文件看起来非常有迷惑性。红方操作人员无需消耗太多精力,只需将其保存在类似c:ProgramData之类的目录中,修改文件时间戳,就可以实现更长时间的驻留。
四、有趣的实验结果
4.1 反病毒软件
通常情况下,经过简单的修改,防御方工具的反应也会有所不同。当然反病毒软件通常不是个花架子,但我们还是很好奇它们会如何处理经过MetaTwin修改的Metasploit meterpreter程序。除了添加元数据及数字签名外,我们没有做其他的混淆处理。实验结果非常有趣。
未经处理的源文件检测结果如下图所示。
不出意外,VirusTotal上的检出率非常高。
添加元数据后的检测结果如下图所示。
有趣的是,仅添加元数据就能降低反病毒软件的检出率。
添加元数据及数字签名后的检测结果如下图所示。
添加数字签名及元数据后,检出率从76%降到了58%。这一点非常重要,因为我们还没有真正尝试规避反病毒软件!
4.2 SysInternals AutoRuns
除了反病毒软件外,我们还调查了SysInternals AutoRuns工具对这些修改的具体反应。
我们使用计划任务创建了与修改版二进制文件有关的任务,以此简单实现了本地持久化机制。AutoRuns可以用来检测这类Windows持久化方法,然而,默认情况下,它并不会显示与修改版程序有关的任务。
默认设置下,AutoRuns会隐藏“微软”的计划任务,如下所示。
AutoRuns的默认设置如下:
修改默认配置后,我们就可以发现伪装的“微软”计划任务。
五、总结
根据以上观察结果,我们可以得出一个非常明显的结论,那就是某些防病毒软件以及端点检测和响应(EDR)工具容易受到元数据以及数字签名的欺骗,因此难以有效胜任蓝方角色。在无法避免磁盘操作的情况下,红方操作人员在未来对抗中可以充分利用这一点。