钓鱼邮件威胁检测实战及典型样本分析

阅读量    170946 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

作者:360 MeshFire Team

投稿方式:发送邮件至linwei#360.cn,或登录网页版在线投稿

0x00 背景介绍

近些年来,越来越多的攻击者利用社会工程学技巧伪造正常邮件内容,诱骗用户点击邮件链接或下载附件文件,这种攻击方式瞄准了企业安全防护中最薄弱的环节普通用户和终端环境,结合社会工程学和终端安全漏洞进行有效攻击,也为恶意代码的大范围感染和传播提供了诸多便利。多家企业和机构曾对钓鱼邮件攻击展开过调查:Google与加州大学伯克利分校的研究人员近期的一份调查研究报告显示:网络钓鱼攻击对用户账户安全的威胁甚于信息泄露[1];APWG(Anti-Phishing Working Group)曾在多次钓鱼攻击活动趋势报告中指出钓鱼攻击各个行业的威胁[2];过去一段时间,有大量钓鱼邮件用来传播Cerber、Locky等勒索软件[3]; 在已经曝光的APT事件中,多数攻击者都是将钓鱼邮件作为渗透到目标内部网络的入口,鱼叉攻击方式也成为APT组织常用载荷投递方式之一。

 

因此,无论对个人用户还是企业、组织来说,钓鱼邮件攻击都是最为严重的安全威胁之一。为了更好地保障企业网络安全,及时发现并处置来自于钓鱼邮件的威胁,我们结合内网威胁检测的安全需求,结合业务场景,设计了一套钓鱼邮件威胁可落地的检测方法。

我们对钓鱼邮件攻击的检测方法主要可以从以下几个方面描述:

 

邮件威胁防护的总体思路:

钓鱼邮件攻击的威胁检测主要立足于建立一套针对邮件威胁场景的安全运营流程,对外部投递的电子邮件进行威胁检测和有效拦截。首先,通过在邮件网络入口部署邮件网关型产品,通过定义规则对已知钓鱼邮件进行过滤,包括纯粹通过社工手段收集账号密码的场景或已知可查杀的恶意附件样本都依靠邮件网关规则和特征进行拦截;对已经绕过邮件网关检测规则和样本查杀的威胁检测,结合威胁情报技术和沙箱技术,主要针对终端漏洞利用型钓鱼邮件的攻击检测。

 

邮件威胁检测的理论依据:

威胁检测的方法主要是结合威胁情报技术和沙箱技术,威胁情报源往往来源于全球网络环境,而内网中的终端病毒查杀和邮件网关中的样本查杀特征往往有本地杀软的局限性,基于威胁情报的检测机制往往能够超前于杀毒软件特征检测,对于威胁情报未能命中的入侵过程,则可通过沙箱行为检测,在及时发现基于Nday或0day漏洞的攻击方式,又能够产生新的威胁情报,补充到现有的防护策略当中。基于这种静态结合动态的威胁检测分析模型,可以准确提炼入侵事件,还原攻击的每个阶段,提取攻击特征,在攻击实施前切断其传播路径,从而达到保护目标的目的。

 

钓鱼邮件检测流程:

检测线索主要源于两方面数据源:终端侧和流量侧。终端侧可以通过主机Agent对邮件进程进行分析并提取邮件附件MD5生成格式化日志信息;流量侧的信息则主要来自于流量DPI解析获取的流量日志和还原样本本身。

 

通过威胁情报碰撞邮件附件MD5信息和恶意URL信息,并对可疑的文件投放到沙箱中进行动态检测,基于威胁情报和沙箱行为的威胁评级模型进行判定,产生告警信息投递到消息队列系统中,同时在运营平台生成告警工单。由于邮件内容的敏感性,检测过程不作落地处理仅生成告警信息。如发现高危钓鱼邮件样本,则第一时间由分析人员跟进深度安全分析,对内网资产进行威胁判定和应急处置工作。并提取相关高危样本的特征输入到邮件网关的规则库中。提取沙箱检测产生的新的IOC会添加到检测引擎中,成为新的检测规则。

 

0x01 事件简述

本文接下来将以我们团队近来一次通过上文描述的邮件威胁检测系统发现一起钓鱼邮件的攻防实战经历,来分析一起典型的钓鱼邮件攻击样本。

 

最近我们捕捉到投递到公司多个公共邮箱的带有邮件附件电子邮件告警,邮件的内容描述的是一些通用的商务场景,该邮件绕过了公司邮件网关的查杀,邮件威胁检测对该邮件的附件判定为高风险,威胁情报判定为高风险,接受到邮件时通过virustotal查询只有有限的杀软厂商检测到该附件为恶意样本,沙箱行为检测结果也显示该邮件附件有诸多危险行为。

钓鱼邮件攻击者的IP地址为104.160.176.215,经查确认为Sharktech VPS洛杉矶机房,投递的邮箱为公开域名的邮件组,怀疑是通过互联网渠道获取的公共组邮箱针对商业组织群发的钓鱼邮件。通过对邮件内容和样本进行分析,我们认定这是一次利用.NET 漏洞(CVE-2017-8759)传播AutoIt恶意代码钓鱼邮件攻击。CVE-2017-8759是一个远程代码执行漏洞,该漏洞产生的原因在于.NET库中的SOAP WSDL 解析模块IsValidUrl函数没有正确处理包含回车换行符的情况,导致调用者函数PrintClientProxy存在代码注入执行,影响多个主流.NET版本,且稳定触发。而AutoIt脚本恶意代码则很容易避过主流杀毒软件的检测。这也可能是攻击者选用此种攻击方式的原因。

 

0x02 样本分析

样本原始文件是一个RTF文档,MD5为9BDA03073A4A52142F021D9AC7E4735C。漏洞触发过程和原理,此前已有研究人员详细分析过,在这里就不做赘述了[4]。

 

漏洞触发后,访问https:[//]longstop[.]club/avatars/gues/lnd[.]php,  并下载名称为 nobenow.exe的PE文件,然后在本地执行。漏洞触发后的进程树如下图所示:

 

 

2.1 Nobenow.exe

样本标签

文件名称: nobenow.exe

文件大小: 973 KB (996,472 字节)

文件时间: 2017-11-21 10:15:14

时 间 戳: 4FD34D75->2012-06-09 21:19:49

文件 MD5: 9F1B411E5006780E69F6775C5E849714

 

行为分析和描述

对该样本进行动态分析的结果是这样的:这个样本会在系统临时目录下创建多个文件,并创建子进程,带参数运行vvk.exe,参数名为jvc-qek。出于这样的行为,基本认定该样本行为类似于自解压文件。实际分析的结果印证了这种猜测,且该样本对解压代码进行了混淆。

混淆代码由法语写成,叙述的是权力的游戏(Game of Throne)的故事简介。

 

2.2 Vvk.exe & jvc-qek

样本标签

文件名称: vvk.exe

文件大小: 732 KB (750,320 字节)

文件时间: 2012-01-29 22:34:20

时 间 戳: 2012-01-30 05:32:28

文件 MD5: 71D8F6D5DC35517275BC38EBCC815F9F

从样本属性看,该样本是AutoIT脚本的解释器。是AutoIT脚本封装成exe后用来运行脚本的。所以jvc-qek就是样本核心的脚本文件。

这个脚本文件大小为2986KB,显然是不正常的。打开文件,看到了大量混淆的语句。

对混淆字符串进行进一步处理,得到一个代码相对清晰的脚本文件:

脚本代码首先读取svo.jpg,用文本方式打开这个jpg文件,发现是一个混淆过的配置文件,用于配置脚本的各种功能。我们可以看到几个字段。

脚本代码也会检查系统进程中是否有avastui.exe,并通过sleep函数躲避杀软的检测。然后会检查当前temp路径下是否存在34772436目录,如果条件不满足,脚本会删除目录下的文件并立即强制重启系统。

脚本会设置目录文件为隐藏和只读属性,然后会去读取svo.jpg中的二进制数据,解密出另一个脚本,并生成长度为五的随机大写字符串作为新的文件名。

调试过程中产生的随机文件名为QRIFT。在脚本生成完毕后,会重新调用vvk.exe,运行新生成的脚本。

2.3 QRIFT & RegSvcs.exe

QRIFT样本标签

文件名称: QRIFT

文件大小: 271 KB (277,864 字节)

文件时间: 2017-11-23 17:44:38

时 间 戳: n/a

文件 MD5: 5374CF136115A54E3B6470ACB430888F

 

转储样本标签

文件名称: Dumped.exe

文件大小: 650 KB (666,130 字节)

文件时间: 2017-11-24 12:55:46

时 间 戳: 2016-06-24 00:04:21

文件 MD5: 5374C0A78E5766C9B273F7A75737FC28

 

QRIFT是新生成的恶意脚本。这个脚本同样是被混淆过的,且变量名等信息做了散列。这段脚本的行为是读取”\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe”,并将该文件赋复制到临时目录下,然后附加svo.jpg的一段数据到RegSvcs.exe的末尾。

在创建并挂起RegSvcs.exe后,脚本会利用DllStructCreate等API完成进程映像替换。替换后RegSvcs.exe也就变成了一个脚本解释器。

此时RegSvcs.exe的进程空间中也会运行脚本。再次执行脚本时,由于代码逻辑不同,新的脚本会多次执行一段shellcode,而且参数是有变化的。

通过分析得知,这段shellcode的行为是收集主机的信息并发送到服务器maxontre.shop上。被收集的信息有:主机名称,设备GUID、用户主机安装的浏览器中存储的网站密码、邮箱账户密码及FTP软件的账号密码等。Shellcode 窃取账户文件的方式有两种,一种是访问相关软件的数据库文件和配置文件,如 %Application Data%\Google\Chrome\User Data\Default\Login Data,C:\Users\Username\Documents\yMail2\Accounts.xml等文件;另一种是通过注册表信息获取账户信息,如HKLM\Software\NCH Software\ClassicFTP\FTPAccounts等注册表项。

 

对恶意代码针对的软件做了相关统计,结果如下面各表所示:

 

恶意代码尝试窃取浏览器账户信息如下:

恶意代码尝试窃取FTP软件账户信息如下:

恶意代码尝试窃取邮件和其他软件信息如下:

2.4 其他行为和功能

脚本还有其他行为和功能。比如设置开机自启动:

反沙箱检测和主机抗调试:

另外,该恶意代码有很强的兼容性,能支持64位和32位系统环境,同时支持win2000操作系统。

0x03 总结

本次钓鱼邮件攻击事件被定性为一次利用新漏洞传播恶意代码的垃圾邮件攻击。之所以受到我们的关注,是因为它有两个比较鲜明的标签——CVE-2017-8759和AutoIt脚本漏洞。

 

该样本具备比较强的对抗能力,释放的程序做了大量的技术混淆并增加了反沙箱检测和主机抗调试的功能,此外AutoIt恶意代码一个显著特点是需要封装脚本解释器形成一个较大的可执行文件。由于封装的脚本解释器本身并非恶意代码,所以该类恶意代码常常能够规避掉杀毒软件的检测。而脚本文本属性使得此类恶意代码功能修改和添加更为灵活,容易产生变种,导致恶意代码大量增殖,可能会导致此类恶意代码数量短期内呈现增长的趋势。CVE-2017-8759影响几乎所有主流.NET版本,且披露时间较短,互联网已经流传开放源码的POC程序,利用成本低,可能未来一段时间类似样本可能会广泛传播。据报到Cobalt在内的众多攻击组织此前就曾多次利用这个漏洞开展过攻击活动,近日Cobalt组织在一个新Office漏洞 CVE-2017-11882曝出数天内,大量利用新漏洞进行攻击[5]。因互联网上已公开了多个版本POC,该漏洞制作钓鱼利器成本非常低,且漏洞本身比CVE-2017-8759具备更好的适用性。从企业网络安全防护上我们需要做到的就是及时补丁修复终端漏洞,提升终端用户的安全意识,针对该类型的钓鱼邮件攻击进行专项威胁检测。

 

0x04 样本IOC

9bda03073a4a52142f021d9ac7e4735c

9F1B411E5006780E69F6775C5E849714

71D8F6D5DC35517275BC38EBCC815F9F

5374CF136115A54E3B6470ACB430888F

Fex[.]net                   194.106.216.20

maxontre[.]shop                 162.221.190.147

klotshop[.]tech             194.88.105.79

fs12.fex[.]net                  194.106.216.70

longstop[.]club                 194.88.105.79

https://longstop.club/avatars/gues/lnd[.]php

http://maxontre.shop/Themes/core/morre/fre[.]php

 

附录  参考链接

[1]  https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/46437.pdf

[2]  https://docs.apwg.org/reports/apwg_trends_report_h1_2017.pdf

[3]  https://phishme.com/wp-content/uploads/2017/10/Q1_2016_Malware_Review_PhishMe.pdf

[4]  http://bobao.360.cn/learning/detail/4411.html

[5]  http://bobao.360.cn/news/detail/4392.html

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多