利用PNG像素隐藏PE代码:分析PNG Dropper新样本

访客3年前黑客文章904

本文将主要针对PNG Dropper恶意软件进行分析,这一恶意软件是由Turla组织开发和使用的。PNG Dropper在2017年8月被Carbon Black研究人员首次发现。早在2017年,该恶意软件就被用来分发Snake。但是最近,NCC的研究人员发现了一个带有新型Payload的样本,我们在内部将其命名为RegRunnerSvc。
值得注意的是,这种威胁还有其他我们无法获得的组成部分。其中,有一个之一阶段的Dropper,将会投放并安装PNG Dropper(RegRunnerSvc)。我们非常有必要记录PNG Dropper的这种新用途。
 
PNG Dropper
关于PNG Dropper组件的详细信息,已经由Carbon Black研究团队进行了记录,但为了清晰起见,我们在这里将对其进行简要描述,并说明其工作原理。

Dropper的目的是加载并运行隐藏在众多PNG文件中的PE文件。上图展示了Dropper的资源。在这里,我们可以看到一个名为“PNG”的二进制数据的资源项。所有这些资源都有有效的PNG文件,可以使用任意支持这种文件格式的图像查看器打开,但在打开后,我们无法看到任何有意义的图像内容。举例来说,打开其中的一个文件,我们只能看到其中的几个彩色像素(如下图放大版本所示)。

PNG文件使用Microsoft的GDI+库加载。在下图中,我们看到其调用了LockBits,用于从PNG文件中读取像素数据。像素数据中的每个字节代表像素的RGB值。在每个RGB值中编码的是来自PE文件的字节。之所以没有形成一个有意义的图像,是因为恶意软件将数据隐藏在了看似合法的资源之中。

我们通过枚举每个PNG资源,提取其中的像素数据,并将它们组合在一起,最终获得到了完整的PE文件,正是内存中的完整PE文件。然后,Dropper会手动加载PE文件。对于导入和重定位的处理过程也大致一致,最后将执行整个PE文件的入口点,如下图所示。

 
RegRunnerSvc
PNG Dropper将从PNG资源中解码,随后运行RegRunnerSvc。RegRunnerSvc的目的是从注册表中提取加密的Payload,将其加载到内存中,然后运行。之一阶段的Dropper(我们目前还未获得)已经将它作为服务安装,同时执行了一些额外的设置操作。
下图展现了RegRunnerSvc的入口点。在这里,我们可以看到对StartServiceCtrlDispatcher的调用。在示例中,其服务名称为WerFaultSvc,显然是为了使其看上去类似于Windows错误报告服务的合法服务而特意选择的名称。该服务还可以作为恶意软件的持久性机制。

在进行服务的功能设置后,恶意软件开始在注册表中查找数据。通常,注册表值的路径将会作为(可能经过加密或混淆后的)字符串,存储到二进制文件中,但有趣的是,这一样本中并没有这样实现。实际上,恶意软件使用RegEnumKeyExA和RegEnumValueA函数遍历注册表项和值。遍历从HKEY_LOCAL_MACHINE开始,并采用深度优先的搜索方式,直至找到数据或结束遍历为止。另外还有一个有趣的实现细节(如下图所示),调用解密函数的唯一要求是数据的大小为0x200(512)字节。这一细节并不像它看起来的那么低效,如果之一阶段的Dropper没有执行其设置操作,那么解密函数就会迅速退出。很明显,对于恶意软件的作者来说,混淆比运行效率更重要。

注册表中的数据,包含加密Payload和解密它所需的数据。尽管其包含用于生成密钥的数据,但却不包含解密密钥。该数据自身使用Microsoft CNG库函数(NCrypt*)实现部分加密。之一阶段的Dropper将生成一个解密密钥,并将其存储在一个系统默认密钥存储提供程序中,在这一样本中为“Microsoft Software Key Storage Provider”。如果之一阶段Dropper未运行,那么密钥将不会保存在存储提供程序中,并且解密函数将会退出。如果存储提供程序实际包含密钥,那么会解密数据的之一个0x200(512)字节。该解密数据包含一个标头,其中包含在二进制Blob中定位其余数据所需的信息。标头中偏移量及完整描述如下:
0x00 加密数据,用于调用BCryptGenerateSymmetricKey()函数;
0x08 加密数据的大小
0x10 IV
0x18 IV的大小
0x20 AES加密数据
0x28 加密数据大小
现在,我们已经完成对标头的分析,接下来就可以进行第二部分的解密。主要Payload使用AES算法进行加密。首先,注册表中的一大块数据会被传递给BCryptGenerateSymmetricKey函数,随后创建AES解密密钥。在生成密钥并设置解密属性后,将会对Payload进行解密。再之后,对解密的Payload进行校验,以确认它是有效的PE文件。该校验主要检查MZ和PE魔术字节,并检查PE标头中的主机体系结构条目。如果校验通过,就会手动加载文件(导入和重定位),并调用入口点,如下图所示。

相关文章

「截取别人手机短信教程」同步接收别人手机短信

「截取别人手机短信教程」同步接收别人手机短信 专业盗取微信密码,开房查询,通话记录查询,查询微信聊天记录,非常靠谱!众所周知,王者荣耀总共分为两个大区:微信区和QQ区。由于玩家年龄的差距,很多玩家在...

心肺复苏术(应该怎么学习心肺复苏呢)

现代都市闯荡的上班族女士必不可少技能有哪些? 早晨的15分钟——快手视频妆面 推拉门腾挪——挤公交秘笈 从早到晚三杯现磨咖啡——醒神专业技能 除开上边这种都市白领存活方法 女孩们最最最最必须把握的专...

房产知识:新房屋信息有哪些 新房一般多久能拿

相信现在有很多的朋友们对于新房屋信息有哪些 新房一般多久能拿到房产证的最新相关信息都想要了解吧,那么今天小编就来给大家针对新房屋信息有哪些 新房一般多久能拿到房产证的最新相关信息进行一个介绍吧,希望小...

派克特登陆《天赐的声音》 用精炼说唱歌词和

2月5日,国内资深说唱歌手派克特作为“飞行合伙人”登陆浙江卫视《天赐的声音》,帮唱胡海泉献上三年前两人的合作单曲《忘》。这首歌歌词写诗与写意并重,抒情的旋律被节奏不断强化,渲染力极强。胡海泉出色的唱功...

泰安网站优化:如何针对SEO优化网站内容?

泰安网站优化:如何针对SEO优化网站内容? 值得一看 假如你已经为你的网站建设了一些出色的内容,可是你没有你的事情那么多欣赏次数或互动内容。你大概没有在你的网站上包罗搜索引擎优化。研究表白,93%的在...

找qq黑客q号,黑客找网站后台地址,系统密码破解 黑客动画吧

2019年9月20日,FireEye Intelligence发布了一篇文章,具体介绍了针对动力和航空航天业的鱼叉式网络垂钓活动。 最近的揭露陈述标明,APT33鱼叉式网络垂钓与SHAMOON进犯之间...