这是作者新开的一个专栏,主要翻译国外知名安全厂商的APT报告,了解它们的安全技术,学习它们溯源APT组织的方法,希望对您有所帮助。前文分享了Rampant Kitten攻击活动,包括Windows信息窃取程序、Android后门和电报网络钓鱼页面。这篇文章将介绍APT组织拉撒路(Lazarus)使用的两款恶意软件,并进行详细分析。个人感觉这篇文章应该是韩国或日本安全人员撰写,整体分析的深度距安全大厂(FireEye、卡巴斯基、360)的APT分析报告还有差距,但文章内容也值得我们学习。
JPCERT/CC 观察到Lazarus(也称为“隐藏眼镜蛇”)针对日本组织的攻击活动,入侵前后使用了不同类型的恶意软件。第一款工具将介绍网络入侵后使用的一种恶意软件。
Lazarus(T-APT-15)组织是来自朝鲜的APT组织,该组织长期对韩国、美国进行渗透攻击,此外还对全球的金融机构进行攻击,堪称全球金融机构的最大威胁。该组织最早的攻击活动可以追溯到2007年。据国外安全公司的调查显示,Lazarus组织与2014 年索尼影业遭黑客攻击事件,2016年孟加拉国银行数据泄露事件,2017年美国GF承包商、美国能源部门及英国、韩国等比特币交易所被攻击等事件有关。而2017年席卷全球的最臭名昭著的安全事件“Wannacry”勒索病毒也被怀疑是该组织所为。
该恶意软件下载及执行模块如下。它以 .drv 文件的形式保存在 C:\Windows\System32 文件夹中,并作为服务运行。使用VMProtect将其混淆,文件末尾包含一些不必要的数据,使文件大小增加到约150MB。图1显示了恶意软件运行前的事件流。
以下各部分将说明有关恶意软件的详细信息,包括配置、通信格式和模块。
恶意软件的配置(大小0x6DE)被加密并存储在注册表项中,并在执行时加载。在此分析中,已确认配置存储在以下目录中:
图2是一个解码配置示例,它包含一个加密密钥以及C&C服务器的信息。(详见附录A)
恶意软件中的所有字符串均使用AES128加密,加密密钥被硬编码在恶意软件中。图3是加密密钥的示例,由于恶意软件将16个字母的字符串转换为宽字符(32个字节),因此只有前16个字节被用作密钥。
Windows API名称也经过AES加密。在解密API字符串后,将解析由LoadLibrary和GetProcAddress调用的API的地址。
以下是恶意软件首先发送的HTTP POST请求示例。
POST数据的参数([param])是从以下随机选择的。
POST数据中的值是以下数据的Base64编码的字符串。
如果从C&C服务器返回一个与Cookie(Base64编码)中的“ 4位认证密钥”相同的值作为响应,则该恶意软件将发送以下信息。第二次通信后,恶意软件发送以下HTTP POST请求。
POST数据的参数是从上述列表中随机选择的。POST数据包含两条信息,“Data1”包含命令,而“Data2”包含命令执行的结果和其他附加数据(详细信息请参见附录B)。响应数据的格式与请求相同,但缺少参数。响应数据经过AES加密,然后像POST数据一样进行Base64编码。区别在于“+”号被一个空格代替。
图5是从与C&C服务器通信开始到下载模块的通信流程。在第二次通信中,恶意软件发送一个新的AES密钥,该密钥对随后的通信进行加密。
在第三次通讯时,将下载一个模块(Module)。以下是下载模块时来自C&C服务器的响应示例。
模块下载成功后,它将执行如从C&C服务器接收命令的主要功能。恶意软件提供了包括C&C服务器和加密密钥的信息作为参数,下载的模块经过UPX加密,如图6所示。
通信以与前面提到的几乎相同的格式执行。经确认,该模块具有以下功能:
为了横向移动,在通过Pyinstaller将其转换为Windows PE文件后,使用了SMBMap这个Python工具。该工具允许通过SMB访问远程主机,攻击者通过利用事先获得的帐户信息来横向传播感染。
Lazarus的活动已经被许多不同的组织都报告过,并且在多个国家都发生了攻击。在日本也有可能继续观察到类似的情况。
在上一部分,我们介绍了Lazarus在网络入侵后使用的一种恶意软件。可以肯定的是,该组织使用了多种类型的恶意软件,其中包括CISA最近在其报告中引入的BLINDINGCAN。接下来我们分析BLINDINGCAN的攻击流程。
当加载程序加载DLL文件时,恶意软件就会运行。图1显示了BLINDINGCAN运行之前的事件流。JPCERT/CC 已确认DLL文件已在某些示例中编码(这需要在执行前由加载程序进行解码)。
BLINDINGCAN与上述恶意软件有一些相似之处,包括其功能和通信编码算法。下面的部分将解释它的配置和通信协议。
BLINDINGCAN的配置(大小0xA84)主要存储在以下位置中:
如果将其保存为文件,则将其存储在BLINDINGCAN所在的文件夹中。我们已经确认,如果配置存储在注册表项中,则使用以下目录。
配置使用XOR编码、AES或RC4进行加密。加密密钥是固定的,也可以根据受感染设备的环境生成。JPCERT/CC 已确认以下加密密钥模式:
下图显示了解码配置的示例。这包括代理信息以及C&C服务器信息。(详细信息请参阅附录)
BLINDINGCAN中的某些代码部分使用RC4进行了混淆。下图是混淆代码的示例。RC4加密密钥在示例本身中进行了硬编码。
下面是BLINDINGCAN最初发送的HTTP POST请求数据示例。
数据格式如下,除了RC4密钥,所有值都是RC4加密和Base64编码的。第一个HTTP POST请求中的param2是字符串“T1B7D95256A2001E”的编码值。
POST数据中的参数(param1,param2,param3)是从以下内容中随机选择的:
此处使用的RC4加密与常规加密不同。它有一个进程来将密钥流移动C00h。以下是用Python编写的RC4加密过程,它不适用于使用常规RC4的param3。
下图是从与C&C服务器通信开始到接收命令的通信流程。
如果服务器收到一个Base64编码的param3值(上图中的随机二进制数据)作为对第一个请求的响应,则恶意软件将发送另一个请求。下一数据是用param3中的空param2和一个命令请求(上图中的命令请求0x2040)发送的。param3中的数据是异或编码、RC4加密,然后Base64编码。此后,BLINDINGCAN从C&C服务器接收命令,响应数据也经过XOR编码、RC4加密和Base64编码。唯一的区别是“ +”号被空格代替。
BLINDINGCAN执行多种功能,具体如下:
到目前为止,我们已经介绍了Lazarus使用的两种恶意软件。但是,已知它们也使用其他类型的恶意软件。如果发现任何新型恶意软件,我们将提供更新。
Lazarus APT是来自朝鲜的APT组织,挺厉害和出名的一个攻击组织。该组织擅长使用邮件钓鱼进行鱼叉攻击,同时武器库强大,具有使用0Day发起攻击的能力。而从披露的该组织的活动来看,该组织发起攻击的规模都巨大。虽然该组织的攻击活动被不断的披露,但是该组织从未停止攻击活动的脚步,相反攻击活动还更加的活跃,同时还把攻击目标不断扩大,从能源、JS、政企等部门到专项金融机构,尤其是数字货币交易所等。因此,我们提醒政企等广大用户,切勿随意打开来历不明的邮件附件,同时安装安全软件。最后希望这篇文章对您有所帮助,更推荐大家阅读原文。
前文分享:
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、逆向分析、APT分析报告、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。
(By:Eastmount 2020-11-19 星期四 晚上8点写于贵阳 http://blog.csdn.net/eastmount/ )