一、概述
近期,伏影实验室捕获了多个使用windows11相关话题作为诱饵的钓鱼文档。这些钓鱼文档显示了一些不同于常见钓鱼攻击的思路和技巧。通过深入分析,伏影实验室发现这些钓鱼文档是FIN7组织正在进行的大规模鱼叉攻击活动的一部分,其释放的木马实际上是该组织常用的Griffon木马的较新变种。
钓鱼文档与后续攻击组件的技术细节显示,FIN7组织在本次鱼叉攻击活动中开始更频繁地检测主机环境,并在掩盖攻击痕迹方面花费了更多精力。
这些钓鱼文档再次证明,FIN7组织并未因2018年的集中抓捕行动而解散,而是在改变了经营模式后,更谨慎地进行以盗取金融资产为主的网络犯罪活动。安全厂商应密切注意使用FIN7组织已知攻击工具的各类攻击活动。
二、组织情况
FIN7是一家先进的,以金融为目标的组织,其活动最早始于2015年。
该组织历来以零售,餐饮和酒店业公司为目标,初始感染环节采用精心设计的鱼叉式钓鱼活动。一旦进入受害者的网络中,该组织便利用类似于APT的行为来维持和扩大立足点,直到他们完成目标或具备获取信息的能力。
据悉,从2015年开始,FIN7成员就针对100多家公司开展了高度复杂的恶意软件活动。组织成员入侵了数以千计的计算机系统,窃取了百万计的客户信用卡和借记卡号,进而出售并牟利。仅在美国,FIN7就成功突破了47个州和哥伦比亚特区的公司的计算机网络,从3,600多个单独营业地点的6,500多个销售点中窃取了1500万张客户卡记录。
该组织条理并结构化的运营以及他们适应和更改TTP的规模和速度表明,FIN7是大规模的网络犯罪团伙。
2018年8月1日,FIN7的三位领导者被逮捕,分别是现年44岁的乌克兰国民Dmytro Fedorov、33岁的Fedir Hladyr和30岁的Andrii Kolpakov。
然而,卡巴斯基在2019年[1]和2020年[2]的公开内容显示,FIN7组织在失去领导者后依然在进行网络犯罪活动,甚至伪装为渗透测试公司并大规模招募黑客。这一重组的黑客团体被命名为FIN7.5。
2020年底的一篇分析文章[3]显示,FIN7组织的攻击活动开始投递RYUK勒索软件。
更多组织内容可参考伏影实验室对FIN7组织的复盘分析报告[4]。
三、技术分析
本次FIN7钓鱼攻击事件中出现了多个诱饵文档,其中多数文档使用了相同的攻击流程,但包含的恶意代码与执行逻辑稍有不同。本节的分析将以名为“Clients-State-072021-4.doc”的样本为主。
钓鱼文档
该文档打开后,显示如下内容:
文档的第一页包含一张诱饵图片,声称该文档使用windows11 alpha版本制作,需要用户打开编辑功能。这是一种常见的社会工程学手法。为增加可信度,图片附带了来自windows官方网站的合法二维码链接图片。
文档的第二页包含一份字符不可见的表格,该表格包含的内容将被后续攻击流程使用。
恶意vba宏
该文档包含一段比较复杂的恶意vba宏代码,将在受害者开启word编辑功能后启动。
混淆手法
该恶意宏代码包含几种已知的混淆手法。
混淆手法一如下图,该木马包含大量注释文本,用于对抗检测。这种技巧常被一些俄罗斯APT组织使用:
混淆手法二如下图,恶意宏使用的所有字符串通过一个名为UVRqb的函数获取:
该函数的功能为从word文档中不可见表格中提取对应位置的字符串,将该字符串解析成十进制数列后,经过简单的偏移算法IBjdq1x92解出其中的文字信息。
该偏移算法使用的密钥为ASCII字符串NY2qBrOIEllx8Br。
功能
去除混淆后,容易发现该宏的主要功能有两部分。
第一部分的宏代码主函数名为FKL6POhP:
该函数主要进行运行环境的检测,其检测项包括:
- 检测主机所在域是否名为“CLEARMIND”;
- 通过LDAP检测是否存在CLEARMIND/RootDSE目录;
- 检测计算机名称中是否包含VMware,Virtual,innotek,QEMU,Oracle,Hyper,Parallels字符串;
- 检测操作系统的内存总量是否少于4GB;
- 检测系统操作语言是否为以下之一:
LCID | code | 语言 |
1049 | ru-RU | 俄语 |
1058 | uk-UA | 乌克兰语 |
2073 | ru_MD | 摩尔多瓦语 |
1070 | hsb-DE | 德语 |
1051 | sk-SK | 斯洛伐克语 |
1059 | be-BY | 白俄罗斯语 |
1060 | sl-SI | 斯洛文尼亚语 |
1061 | et-EE | 爱沙尼亚语 |
3098 | sr-Cyrl-CS | 塞尔维亚西里尔语 |
2074 | sr-Latn-CS | 塞尔维亚拉丁语 |
- 检测系统语言首选项是否为俄语;
- 检测注册表项HKEY_USERS\.DEFAULT\Control Panel\International\User Profile\Languages是否为俄语。
以上检测若命中任意一项,恶意宏将删除文档中的表格并结束程序。
第二部分宏代码寻找文档中内嵌的名为word_data.bin的ole流,将其释放和重命名至%TEMP%\word_data.js下并执行。
恶意js脚本(Griffon)
前述vba脚本释放并执行的名为word_data.js的脚本程序,实际上是FIN7组织在既往攻击事件中经常使用的Griffon木马程序。
混淆手法
该js脚本包含类似的混淆逻辑,包括使用大量注释文本对抗检测、使用混淆算法隐藏字符串内容等。
该js脚本使用的混淆算法函数ri2cy的逻辑很简单,会将输入的加密字符串转换为十进制数数列,再使用多字节异或解密出对应的字符串。该算法使用的异或键为ASCII字符串gp26vwk9。
功能
去除混淆的js脚本符合FIN7使用的Griffon木马的样式。对该木马早期版本的分析可参见伏影实验室对FIN7组织的复盘分析报告。
本次出现的新版Griffon木马增加了以下对抗功能:
- 运行时间校验,方式为连续获取2次系统时间并与固定值对比,用于反调试;
- 向固定域名tnskvggujjqfcskwk.com发送post请求并判断返回值内容,推测为控制木马的kill switch;
该木马的主要通信逻辑与早期版本一致,会尝试链接以下url:
https[:]/bypassociation.com/[path1]/[path2]?type=name
[path1]在以下字段中随机选取:
“images”, “pictures”, “img”, “info”, “new”
[path2]在以下字段中随机选取:
“sync”, “show”, “hide”, “add”, “new”, “renew”, “delete”
连接url后,其发送的post包中带有以下信息:
‘group=doc700&secret=7Gjuyf39Tut383w&time=120000&uid=’ + uniq_id + ‘&id=’ + id + ‘&’ + data
其中uniq_id为脚本启动时获取的时间戳,id由mac地址和DNSHostName组成,data部分内容为固定字符串”page_id=new”。
后续攻击载荷
经测试,Griffon木马与上述CnC通信后,会获取到一个用于收集系统基本信息的JS间谍木马。推测该木马属于当前Griffon框架的一部分。
该间谍木马使用与Griffon木马相同的通信逻辑与bypassociation.com通信,其发送的post请求包的data部分内容包含固定字符串”page_id=add_info&info=”和从受害主机收集到的以下内容:
前缀 | 内容 |
username*** | 用户名 |
hostname*** | 主机名 |
elevated*** | 是否为高权限,’yes’或’no’ |
process_owner*** | 木马进程创建者 |
adinformation*** | 木马运行目录 |
part_of_domain*** | 是否在域中,’yes’或’no’ |
pc_domain*** | 计算机所在域 |
pc_dns_host_name*** | 计算机DNS主机名 |
pc_model*** | 计算机型号 |
error0*** | 获取上述内容时是否出现错误 |
os_name*** | 系统名 |
os_build_number*** | 系统build号 |
os_version*** | 系统版本 |
os_sp*** | 系统sp版本 |
os_memory*** | 内存大小 |
os_free_memory*** | 空闲内存大小 |
os_registered_user*** | 系统注册用户名 |
os_registered_org*** | 系统注册组织 |
os_registered_key*** | 系统注册序列号 |
os_last_boot*** | 上次启动时间 |
os_install_date*** | 安装时间 |
os_arch*** | 系统架构 |
os_product_type*** | 产品类型 |
os_language_code*** | 系统语言 |
os_timezone*** | 当前时区 |
os_number_of_users*** | 系统用户数量 |
dm_type*** | 显示器型号 |
dm_screen_size*** | 显示器尺寸 |
uac_level*** | 是否开启UAC,’yes’或’no’ |
outlook*** | outlook程序信息 |
word*** | word程序信息 |
excel*** | excel程序信息 |
acrobat*** | acrobat程序信息 |
error1*** | 获取上述内容时是否出现错误 |
process_list*** | 进程列表 |
is_vm*** | 是否为虚拟机环境,’yes’或’no’ |
error2*** | 获取上述内容时是否出现错误 |
由此可见该木马会收集非常详细的受害者主机信息。
依照以往出现的Griffon木马逻辑,CnC主机会在确认这些主机信息后下发其他的JS木马组件。
四、其他文档分析
使用了同样诱饵图片的文档中,有一份较早出现(2021-06-29 21:22:09)的样本(md5:dc7c07bac0ce9d431f51e2620da93398)携带了独特的木马程序。该木马程序使用简单的rc4加密外壳封装,对应的密钥为ASCII字符串aeghde。
分析解密出的木马程序发现,该木马是使用C++重写的JSSLoader下载者木马程序。该木马原本是.NET程序,曾被FIN7组织和被安全厂商proofpoint称作TA543的组织使用过。FIN7组织主要使用JSSLoader木马程序下载Carbanak木马和Griffon木马。 Proofpoint的相关报告[5]对该JSSLoader的演化过程进行了详细分析。
本例中出现的JSSLoader木马连接CnC为https[:]//crafterband.com,对应IP为109.234.37.173。
五、攻击者关联
本次钓鱼攻击事件中出现的木马,是FIN7组织已知木马Griffon的较新版本。本事件中攻击者展现出的包括大规模投放诱饵、使用通用的诱饵图片、大量的对抗手段等特征也符合FIN7组织在以往攻击事件中的表现。由此可以判断,这些利用了windows 11话题的诱饵文档,是FIN7组织近期发起的钓鱼攻击活动的一部分。
有趣的是,这些钓鱼文档搭载的vba代码中,在语言检测部分加入了对德语的判断逻辑。该特征很容易联系到FIN7组织曾经的领导者Fedir Hladyr的遭遇。根据近期的一则新闻[6],这名高级成员在2018年于德国被逮捕,并在2021年4月被判处10年监禁。以上信息表明,近期的FIN7攻击活动变得更加谨慎,开始有意识地规避特定国家的执法机构。
六、结论
FIN7组织依然活跃。本次攻击事件表明,在2018年进行的集中抓捕并未彻底消灭这一网络犯罪组织。在经历了一段时间的重组后,卷土重来的FIN7组织开始使用新的运营模式和攻击模式,继续施行以盗取金融资产为主的网络犯罪活动。
通过近期攻击事件推测,组织可能已经开始销售其已有的攻击工具,促使其攻击流程与其他黑客组织的攻击流程融合。因此,防御者应积极应对使用FIN7已有木马和工具的攻击活动,检测重点应包括该组织常用的Griffon木马和JSSLoader木马等。
参考链接
[1] https://securelist.com/fin7-5-the-infamous-cybercrime-rig-fin7-continues-its-activities/90703/
[2] https://www.brighttalk.com/webcast/15591/382191/fin7-apt-how-billion-dollar-crime-ring-remains-active-after-leaders-arrest
[3] https://blog.truesec.com/2020/12/22/collaboration-between-fin7-and-the-ryuk-group-a-truesec-investigation/
[4] https://blog.nsfocus.net/fin7-review-analysis-part1-delivery-and-execution/
[5] https://www.proofpoint.com/us/blog/threat-insight/jssloader-recoded-and-reloaded
[6] https://therecord.media/fin7-hacker-sentenced-to-10-years-in-prison/
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。