欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

利用信誉服务的DealPly变种分析

来源:本站整理 作者:佚名 时间:2019-08-06 TAG: 我要投稿

通常情况下,Adware(广告软件)并不是特别有趣的一个研究内容。然而某次我们遇到了某个DealPly变种,可以规避AV检测,因此我们决定深入研究一下。
除了模块化代码、机器指纹识别、VM(虚拟机)检测技术以及强大的C&C架构之外,我们最有趣的发现是DealPly 会滥用微软以及McAfee的信誉服务来规避安全检测。微软的SmartScreen服务以及McAfee的WebAdvisor服务可以提供关于文件以及URL的威胁情报信息,并且可以免费使用。利用这些服务数据,这款广告软件可以延长安装程序以及组件的使用周期,只有发现自身被列入黑名单中才会进行修改。这类技术并不局限于广告软件,也可能被恶意软件开发者所采用。
在本文中,我们将简单介绍这款软件的执行流程、指纹识别、VM检测功能,重点关注该软件如何利用信誉服务获取所需信息。
 
0x01 技术分析
基本感染过程
DealPly攻击者最长使用的一种感染方式就是诱使用户通过免费软件下载网站来下载已捆绑这款Adware的合法软件安装包。
我们分析的样本名为Fotor(照片裁剪软件),这本来是一款合法软件安装程序。这款安装程序会在执行时秘密运行DealPly,然后将自身副本拷贝到用户的%AppData%目录,执行如下命令完成本地驻留:
C:\Windows\system32\schtasks.exe /create /F /tn "{5D055606-F35B-577B-8F40-5DE1E36423A2}" /xml "C:\Users\JONNYB~1\AppData\Local\Temp\475671.xml"
计划任务会每隔一小时执行DealPly,每次执行时,DealPly都会联系cwnpu.com这个C&C服务器,通过HTTP发送经过加密的一个请求,如图1所示。

图1. 加密请求
经过解密后,我们能看到真正的请求消息,如图2所示:

图2. 解密后的请求
DealPly会在请求中,通过bty以及lptp之类的参数来标识被感染的主机是否为VM,后面我们会进一步讨论这一点。
一旦服务器收到有效的请求,就会发送响应,将客户端重定向至d1oz9ywjzmvfb5.cloudfront.net。这个域名指向的是某台Amazon S3服务器。响应数据中包含相关指令以及待执行的主模块,主模块名为WB_CH33.dll。
模块化代码架构
DealPly可以分成不同模块,这些模块互相配合以实现攻击目标。虽然每个模块承担不同的角色,但所有模块都采用类似的结构,并且包含某些类似的功能,比如字符串解密功能。

图3. DealPly架构
开发者采用这种架构的目的是规避检测,在特定目标中只部署必要组件,尽可能减少蛛丝马迹。
根据我们的分析,WB_CH33.dll模块中包含主要功能。值得一提的是,所有模块都采用反射式加载方式,可以通过主模块或者其他命令行工具(如wscript、powershell等)运行。
WB_CH33.dll模块会使用http://www.geoplugin.net/json.gp服务来检测地理位置信息,保存国家代码以便后续使用。
WB_CH33.dll会使用sbrg.dll以及WebAdvisorDll.dll模块来查询信誉服务,后续我们会详细介绍这方面内容。
VM检测及指纹收集
如图2所示,DealPly会将相关信息发送回C&C服务器,其中包含当前主机是否为虚拟机的相关特征以及主机上的其他信息,这里我们来讨论其中某些特征。
主机指纹
如图2所示,发往C&C服务端的解密信息中包含UID参数及UID2参数,这些参数包含关于主机的指纹信息。
UID的值包含主机MAC地址以及主机主驱动器序列号的后半部分。
UID2的值包含卷序列号以及代表主机名的一个值。
睡眠按钮
虚拟机中没有物理睡眠按钮,该变种会使用GetPwrCapabilities函数来判断当前主机是否存在物理的睡眠按钮。该函数的原型如下:

图4. GetPwrCapabilities API
该函数会返回一个PSYSTEM_POWER_CAPABILITIES结构,DealPly会检查该结构,判断SleepButtonPresent变量值为true还是false。
如果该值为true,则代表主机存在物理睡眠按钮,很可能不是虚拟机。
电池特征
该变种会调用GetSystemPowerStatus函数,检查主机是否连接到物理的AC电源。该函数的定义如下:

图5. GetSystemPowerStatus API
函数返回的SYSTEM_POWER_STATUS结构中包含ACLineStatus标志,可以用来判断AC电源状态,而AC电源状态可以用来判断电源是否连接到当前主机。
如果当前主机没有连接电源,则很可能是笔记本电脑,因此不大可能是虚拟机。

图6. SYSTEM_POWER_STATUS结构
MAC地址
为了判断当前主机的MAC地址是否为虚拟机MAC地址,该变种会检查主机MAC地址是否属于以下厂商:Microsoft Azure、VMware、Parallels、Oracle Virtualbox、Amazon以及Xensource。
这里有趣的一点在于DealPly会检查主机是否运行在常见的云服务平台上(如Amazon EC2以及Microsoft Azure),背后的原因可能是运行在这些平台上的Windows操作系统会采用云相关的网络适配器,很可能是沙箱环境。

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载