编程风格有大用?MuddyWater与APT34异同分析
2019-08-29 12:16:27 Author: www.4hou.com(查看原文) 阅读量:119 收藏

ang010ela 新闻 2019年8月29日发布

Favorite收藏

许多具有政府背景的黑客组织随着时间的流逝逐渐显现,通过比较不同黑客组织泄露的工具和代码,找出代码风格的异同有助于发现黑客组织背后的资助国家。

本文介绍研究人员对比APT34样本与MuddyWater组织恶意软件样本的分析。

研究人员发现MuddyWater泄露的工具主要是用python语言编写的,主要实现自动化感染链。

MuddyWater攻击的目标主要是针对中东国家,也有包括印度和美国在内的国家。MuddyWater的攻击一般会使用基于PowerShell的第一阶段后门——POWERSTATS。

研究人员通过分析恶意软件开发者的代码风格来分析MuddyWater与APT34组织的异同。分析的样本源是最新泄露的MuddyC3和WebMask。

MuddyC3:https://github.com/blackorbird/APT_REPORT/blob/master/muddywater/muddyc3.zip

WebMask:https://marcoramilli.com/2019/04/23/apt34-webmask-project/

Print

研究人员首先发现printing函数有所不同。MuddyWater的printing函数更加精致,运行正确时加入了符号[+],当出现错误或其他意外条件时加入符号[-]。此外,MuddyWater还用colors.py函数实现了彩色输出。这在APT 34中都没有出现。

MuddyWater的Color.py

但这两个组织都在打印字符串时都使用了单引号’’,并使用操作符+而不是%s作为字符串连接符号。MuddyWater在复杂的字符串替换中在每个字符串的开始和结尾都使用\n,在APT34的工具中却不常见,比如:

print "\nmshta http://%s:%s/hta\n"%(config.IP,config.PORT)(MuddyWater风格)

APT34中将print作为调试器,有许多注释的打印语句,比如:#print 'something'

这在MuddyWater中也很少见。所以综上可以得出二者的print风格是不同的。

Payload使用多行字符串来传播payload。但代码风格明显不同,比如APT34使用真实的多行,而MuddyWater使用的多行auto-escape indirect特性。下图解释了滥用auto-escape indirect特性:

MuddyWater多行字符串

APT34多行字符串

MuddyWater用行内多字符串的形式来传播payload,以避免特殊字符逃逸,APT 34使用

相同的技术但扩展了payload以增加可读性。这两个组织都使用操作符=+来连接,都使用' '.join( 来构建来自空字符串的对象。在MuddyWater包的core/webserver.py 中,开发者使用的是' '.join( ,而在core/resa.py中,开发者使用了'.join( 和 " ".join( 。研究人员猜测可能有两个开发者参与了其开发??

代码函数和循环

这两个组织使用明确和相同的函数命名法。APT34和MuddyWater的开发者都选择了lowercase_with_underscore命名模式。这两个组织都使用了for i in range而没有使用lists或 While loop。MuddyWater最著名的就说混淆powershell payload,他们会replace函数值来替换混淆的字符,而APT34使用了完全不同的技术。下图是一个伪造的内部函数replaceAll,用来替换字符串以用作反混淆。

APT34替换函数

总结

下表总结了研究人员分析过程中发现的MuddyWater和APT34代码风格的异同。其中-表示不同,+表示相似。通过分析,研究人员认为这两个组织代码风格有一点相似。

image.png

因为前3个不同点都是关于printing的,因此如果将前3个不同看作是1个的话,那么一共有3个不同点和5个相同点。


文章来源: https://www.4hou.com/info/news/18859.html
如有侵权请联系:admin#unsafe.sh