攻防演练目前仍然如火如荼地进行中,钓鱼/社工攻击作为一种重要的攻击手法今年仍被大范围的使用。尤其是当防守方正面防线十分坚固的情况下,通过钓鱼/社工的方式进行边界突破往往成为首选,我们也已经观测到不少安全防护水平较高的行业和企业因此被攻击成功,而很多防守方正苦于缺少有效的检测和防护手段。微步云沙箱S作为国内最大的免费云沙箱之一,一直广受攻防演练双方的喜爱。自演练伊始,微步云沙箱S来自Web用户提交样本量增长近10倍有余。实际上,微步云沙箱S平台在帮助防守方有效识别攻击方攻击样本的同时,也收集到了很多新鲜的高价值攻击样本。为了能够帮助防守方进一步提升对于钓鱼/社工类攻击的认识和防守能力,微步情报局投入技术力量对近日提交到微步云沙箱S的部分恶意样本进行的专项分析和研究,并将相关结论归纳成为本报告,希望能够对大家有所助益。随着攻防演习的推进,微步云沙箱相较于平常,捕获了更多的恶意样本。值得注意的是,中文名称钓鱼样本的比例明显增加。综合微步云沙箱S自动分析的结果,发现这些中文钓鱼样本绝大多数都与攻防演习相关。以下是我们统计的通过微步云沙箱S web提交的疑似与攻防演练高度相关的家族样本的趋势图:从趋势可以大致看出:
- 自攻防演练当天,微步云沙箱S Web样本提交量陡增,达到了近几日的高峰,可能说明攻击队自攻防演练开始就大范围使用钓鱼/社工攻击进行攻击,因此被防守方捕获并提交到S进行自动化分析,在随后的几天中,分别于28号、31号出现了两个小高峰。
- 攻防演练开始前一周微步云沙箱S就开始收到少量的相关样本提交,这可能说明除了日常样本提交之外,还有不少攻击队通过提交微步云沙箱S进行免杀测试。
在攻防演习中,网络钓鱼是一种低成本、成功率高的社工手段。通过向安全意识薄弱的普通人员发送木马,诱导执行,可以快速打开目标内网的入口,进而渗透整个内网。攻防演练中的钓鱼样本大多以钓鱼邮件为传播途径,以企业员工和演练安全人员为主要目标,用吸引性或日常工作相关的标题诱骗用户点击执行。比如XX通知、招聘简历、高温补贴、薪资调整、修复补丁、漏洞消息等。对样本名称进行简单统计发现,其中XX表、XX通知、简历、大学、薪资、举报、工具等关键字出现的频率最高。
对钓鱼样本的格式进行统计发现,样本大部分都为可执行文件,经过压缩打包后以邮件的方式投递给潜在受害者。这样在目标主机上,无需依赖任何执行环境,只要目标用户解压邮件附件并双击其中的“文档”,就会加载恶意载荷执行,完成木马上线。为了使可执行文件更像是文档,红队会将可执行文件的图标替换成文档文件的图标,如Word、Excel、PDF等,并对文件后缀或目录结构进行特殊处理。比如使用双重后缀.docx.exe,使用超长文件名隐藏真实后缀,使用RLO控制字符翻转后缀,使用LNK文件启动隐藏文件的方式执行等。
同时为了防止用户在点击后察觉异常,钓鱼样本在执行后会释放并打开同名的诱饵文档。
对沙箱捕获到的钓鱼样本进行人工筛选分析时发现,除了比较常规的加载器 + CS 载荷外,发现了几个比较新颖的手法:1、****系统开户报错截图列表.exe——白文件Patch免杀对该样本进行分析时发现,样本包含的pdb路径以及字符串均显示该样本为永中office的配置组件。并且执行后会向/yozo/yumkids.bmp URI路径发起网络请求。
然而样本为可执行文件,却伪装成文档,说明有极大概率为木马程序,这些特征只是为了逃避检测,掩人耳目。通过存留在样本中的版本信息找到原始的永中office程序,二者比对后发现:该样本与原始文件绝大多数代码相同,只有部分代码被篡改,用于执行恶意代码。
在原始程序执行流的前段,会有一个被篡改的call调用,跳入事先patch好的恶意代码中执行。
通过这一特性,我们发现一批使用相同手法的样本,均伪装成文档进行钓鱼攻击。样本patch所依托的载体有搜狗输入法组件,7-zip组件,微软反病毒组件,迅雷卸载程序,QQ音乐下载器,Everything主程序等。
2、**2022年第三季度在招岗位.zip——控制流平坦化混淆
该样本在到达受害者主机时,受害者只会看到伪装成Word文档的LNK文件。
双击LNK文件会启动执行__MACOSX隐藏目录下的aomhost64.exe白文件,从而侧加载恶意动态库DllSafeCheck64.dll。
在分析恶意动态库时发现,该样本使用控制流平坦化对恶意代码进行混淆,使得原本简单的逻辑变得非常复杂,拖慢安全人员的分析进度,从而给自己的木马争取更长的存活时间。这种混淆方法虽然不是新的技术手段,但在攻防演练的样本中还是比较少见的。
然而奇怪的是,样本在控制流方面使用了复杂的混淆方法,却在样本里留下了大量未混淆的日志信息字符串。从日志信息可以简单判断出,这是一款名为”Loki”的木马,负责下载执行其他的载荷,并通过添加计划任务的方式完成驻留。
3、2022Q3待发债券清单.xlsx.exe——Hook改变Beacon C2
配置静态解析是很多流行沙箱都具备的功能,通过这个特性可以快速的得到具体家族样本的关键信息。但当解析这个样本加载的Beacon载荷时发现,解析得到的C2地址为111.111.111.111。但这个IP为DNS服务器的地址,显然不能作为C2使用。
将内部的载荷单独执行发现确实会与111.111.111.111通信,但原始文件执行时却会连接到一个完全不同的IP地址。经过一番排查后发现,加载器通过导入表hook在不改变原始载荷的情况下改变了C2地址。首先加载器加载内层载荷时,会将GetProcAddress函数hook为GetProcAddress_hook_func。
同样在hook的代码中对InternetConnectA函数进行过滤, 当内层的Beacon进行反射注入时,会调用GetProcAddress_hook_func动态获取InternetConnectA函数,这时hook代码将其定位到自己实现的InternetConnectA_hook_func函数上。
因此在加载完成后的Beacon中, InternetConnectA_hook_func取代了原有InternetConnectA函数,从而可以忽略由配置解析得到的原始IP地址,连接到指定的地址上。
因此无需重新生成内部的CS Beacon载荷, 只需要将存储在加载器.data节中的地址数据改为其他的IP或者域名即可更换木马的C2。
下面是两个比较典型的攻防演练CS木马:
1、域前置CS木马——Google.exe
样本外层为使用C#编写的加载器,执行后会开辟内存空间,使用AES解密CS Beacon载荷,修改内存可执行属性后直接调用执行。
Beacon模块反射加载执行后,会以”Host: mail.***.com”连接域名mail.***.com.dsa.dnsv1.com.cn所指向的CDN主机,以此为中转完成木马连接。从而避免与C2直接进行网络通信,达到隐藏C2的目的。
2、云函数转发CS木马——修复补丁.exe
样本外层为使用C/C++编写的加载器,执行后会使用AES算法解密CS stager载荷,并调用ZwQueueApcThread创建apc线程执行。
CS stager木马执行后会连接腾讯云函数地址service-272xl1r7-1312629461.bj.apigw.tencentcs.com,并以此为中转完成木马通信,从而隐藏真正的C2服务器。
根据微步云沙箱的统计分析结果,攻防演练期间出现的钓鱼木马绝大多数为CobaltStrike木马,并且大多数都使用域前置和云函数转发服务对真正的C2服务器进行隐藏。我们根据CobaltStrike木马的通信机制以及对应的资产特征,提供如下专项建议:
A:静态特征检测上,可以将高频钓鱼关键词添加进内网邮件安全类产品的关键词列表中进行风险提醒,并对来自于外部的邮件添加警告标识,具体关键词列表可以参考附录【Top10 主题关键词】。B:动态特征上,则需要进行更加细粒度的分类,根据实际情况进行处置。(1)微步云沙箱专门配置了CS场景检测功能,通过情报、静态、行为、流量等多维度分析,能覆盖绝大多数的CS样本,并能准确识别样本所使用的域前置,云函数转发等技术手段。因此当我们发现可疑文件时,可直接上传微步云沙箱进行检测https://s.threatbook.com。
(2)对于直连C2域名进行通信的CobaltStrike木马,可以直接封禁相关域名,阻止木马与攻击者的连接。(3)对于使用云函数机制通信的CobaltStrike木马,因为云函数地址一定程度上具有唯一性,可以直接封禁或隔断相关域名,阻止木马与攻击者的连接,相关域名情报也可以直接在微步X情报社区中进行查询。云函数在本些攻防演练中非常流行,因此需要加强云函数连接的监测。以下为微步云沙箱对相关域名的统计:(4)对于使用域前置机制进行通信的CobaltStrike木马,我们一般无法直接获取攻击者的域名或IP等标识,因此需要根据其具体的流量转发机制进行拦截,分列如下:使用域前置手法的CobaltStrike木马在通信时第一步会首先寻找CDN IP,以便于向这些IP发送数据。而CDN IP一般为公共服务,可能会涉及一些使用范围很广的正常网站和服务,因此我们原则上不建议对CDN IP进行封禁,而是在有条件的情况下,对主机的CDN IP连接请求进行一定的异常监测。如部分木马将需要的CDN IP硬编码在样本中,我们可以检测某个可疑进程在某个时刻突然出现同时对多个CDN IP进行访问的情况:部分CobaltStrike木马通过DNS请求 “使用了对应CDN服务的白域名”来获取CDN IP。对此,我们可以监测一些常用的使用CDN服务商的白域名的连接,在特殊时期,甚至可以主动暂时封禁一些确定与正常业务无关的正常域名。部分CobaltStrike木马通过提前在CDN服务中登记未使用的白域名,之后在样本中DNS请求CNAME域名的方式一来获取CDN IP。如下图中,攻击者在CDN服务中登记域名(并非指攻击者拥有该域名的所有权,仅为注册CDN服务时登记,且当前该方式已不可用)为mail.***.com,再在木马样本中连接拼接好的CNAME域名mail.***.com.dsa.dnsv1.com.cn,即可实现DNS请求。对此,由于该CNAME域名也具有唯一性,我们可以直接封禁相关域名,阻止木马与攻击者的连接,相关域名情报也可以直接在微步X情报社区中进行查询。第一时间为您推送最新威胁情报