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

利用PNG像素隐藏PE代码:分析PNG Dropper新样本本文将主要针对PNG Dropper恶意软件进行分析,这一恶意软件是由Turla组织开发和使用的。PNG Dropper在2017年8月被Carbon Bla本

本文将主要针对PNG Dropper恶意软件进行分析,这一恶意软件是由Turla组织开发和使用的。PNG Dropper在2017年8月被Carbon Bla

本文将主要针对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文件的入口点,如下图所示。 RegRunnerSvcPNG 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 IV0x18 IV的大小0x20 AES加密数据0x28 加密数据大小现在,我们已经完成对标头的分析,接下来就可以进行第二部分的解密。主要Payload使用AES算法进行加密。首先,注册表中的一大块数据会被传递给BCryptGenerateSymmetricKey函数,随后创建AES解密密钥。在生成密钥并设置解密属性后,将会对Payload进行解密。再之后,对解密的Payload进行校验,以确认它是有效的PE文件。该校验主要检查MZ和PE魔术字节,并检查PE标头中的主机体系结构条目。如果校验通过,就会手动加载文件(导入和重定位),并调用入口点,如下图所示。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/8020.html

(0)

相关推荐

  • 女神节商家如何做好网络营销推广做好网络营销推广的技巧有哪些

    点击【蓝字】关注我们。 节假日总是顾客刷卡的好日子。在这个节点上,商家通过网络策划优惠、活动、互动,更好地满足消费者的期待,从而利用网络营销更好地获取消费者的信。 任和参与。 然而...

    科技 2022年3月18日
  • 上海健康科普创新:中国首档大型健康科普电视脱口秀将开播,25名医护人员登台亮相。

    上海健康科普又有创新突破!记者今天(12月1日)获悉,《健康脱口秀》即将于12月5日下午3点起在上海

    生活 2021年12月1日
  • 国务院发布重磅文件:2030年新能源和清洁能源汽车新增40%!新能源汽车又要火了?

    国务院发布《2030年前碳达峰行动方案》提出了“碳达峰十大行动”,在推动运输工具装备低碳转型方面,提及电力、氢能、天然气等多种能源路线和城市公共服务车辆、重型货运车辆、船舶、机场等多种交通场景。

    科技 2021年10月27日
  • 目前的负面情况是筋疲力尽!怎么断线?

    一、概述 目前钢材市场供应缓慢回升,部分钢厂受利润压减影响采取停产减产操作;市场资金结构来看,整体空头持仓仍然远远高于多头持仓,市场压力也比较大;那么钢价后续将继续下跌么?请和小编一起来看看。 二、最新产量、库存变动 【全国库存】35城螺纹社库533.95万吨减少24.18万吨,线材社库140.12万吨增加3.64万吨,社库总库存674.07万吨;螺纹钢厂库280.12万吨增加19.73万吨,线材厂库94.16万吨增加10.63万吨,钢厂总库存374.28万吨;螺纹钢周度产量288.4万吨减少2.16万吨。 小编总结:数据显示,本周5大成材产量总体略有下降,钢厂内库存继续回升,社会库存降库放缓,表观需求明显下降,市场延续供需双弱格局。 三、需求分析 根据统计局最新数据核算,9月份全国房地产开发投资为14508亿元,同比下跌3.47%,今年来首次单月同比增速由增转跌。9月份新屋开工面积同比下滑13.5%,跌幅较8月份收窄3.2个百分点。自3月份以来,房企资金来源累计增速、全国新屋开工面积累计增速持续趋弱,9月份新屋开工面积累计增速跌幅放大,为-4.5%;土地购置面积累计跌幅略收窄,仍为-8.5%。以上数据表明,房企新屋开工及土地购置积极性仍较低。预计11月份的需求仍不乐观。近期全国受大范围寒潮带来的雨雪天气影响,需求受拖累。 四、后市预判 据小编了解,上月初全国建材价格主流弱调,黑色品种期货日内跌幅高近400元/吨。总体情况来看,供给端并没有出现超预期的变化,还是受到政策面的影响为主。预计短期内,钢材供给端以稳为主;然下游需求端维持偏弱运行,导致成交偏弱,各地区降库放缓,螺纹利空情绪大部分已经兑现,散户资源处于低位,钢厂错峰生产下,货权掌握在大户以及钢厂手中,但另一方面又考虑临近冬储,市场的避险情绪大于观望情绪;成本端继续走弱,近期焦炭现货第一轮提降范围扩大,但是双焦及动力煤期货端的跌势放缓。综合考虑,预计11月份钢价总体跌多涨少,近期维持偏弱整理。

    生活 2021年11月7日
  • 碳经济的本质是什么,碳币是什么东西

    11月8日,中国人民银行发布消息,推出碳减排支持工具。

    生活 2021年11月15日
  • 迷你世界怎么驯服牛 迷你世界怎么驯养繁殖牛

    迷你世界怎么驯服牛 迷你世界怎么驯养繁殖牛2021-10-08 08:45:551、使用栅栏养牛,牛容易出现出逃的问题。我们可以用岩石、玻璃等材料建一个房间,在房间门口安装门。2、准备麦子:想要驯服野牛,我们需要给它们喂

    生活 2021年10月8日