导语:目前FireEye的研究人员观察到了几个大型FormBookFormBook的传播活动,发现FormBook在过去几个月主要针对美的航空航天,国防承包商和制造业进行攻击。
目前FireEye的研究人员观察到了几个大型FormBookFormBook的传播活动,发现FormBook在过去几个月主要针对美的航空航天,国防承包商和制造业进行攻击。FireEye研究人员发现攻击者是通过使用各种含有不同附件的电子邮件来传播的FormBook的:
含有下载链接的PDF文档 含有恶意宏的word文档和Excel文件 包含EXE有效载荷的文件(ZIP,RAR,ACE和ISO)
FormBook概述
FormBook是一个数据窃取和表单攫取的工具,该工具自2016年初以来就开始在各种黑客论坛上开始出现,下面两个图显示了FormBook的两则宣传广告。
介绍FormBook广告
FormBook的价格广告
FormBook可以注入到各种进程中,通过安装键盘记录器功能,来窃取文件内容,并从HTTP会话中提取数据。FormBook还可以通过命令和控制服务器执行命令,这些命令包括指示FormBook下载和执行文件,启动进程,关闭并重启系统,并窃取cookie和本地密码。
FormBook最有趣的一个功能就是将Windows的ntdll.dll模块通过磁盘读取内存,并直接调用其导出的函数,这样在用户模式下的hook和API监控机制就都失效了。为此,FormBook开发者特意将此攻击技术称为“拉各斯岛方法”,据了解,有一种进程rootkit就这样叫。
除此之外,FormBook还具有持久性攻击的特点,可以随机地改变路径、文件名、文件扩展名和用于持久性的注册表项。
目前,FormBook的开发者是不销售其构建器的,黑市能买到的也只它的操作界面。
FormBook的攻击性能
FormBook目前还仅仅是一个数据窃取工具,并没有任何扩展或插件。其性能包括:
键盘记录 文本监控 抓取HTTP/HTTPS/SPDY/HTTP2表单和网络请求 从浏览器和电子邮件客户端抓取密码 截图
FormBook还可以从命令和控制服务器接收以下远程命令:
在主机系统上更新恶意程序 下载并执行恶意文件 从主机系统中删除恶意程序 通过ShellExecute启动命令 清除浏览器Cookie 重启系统 关闭系统 收集密码并创建屏幕截图 下载并解压缩ZIP文件
命令和控制服务器
由于命令和控制服务器的域名通常使用的都是最新的通用顶级域名(gTLD),例如.site,.website,.tech,.online和.info。
所以,专家们最近观察到的FormBook的命令和控制服务器的域名已使用了WhoisGuard隐私保护服务对注册信息进行保护。目前能了解到的就是FormBook的命令和控制服务器托管在乌克兰托管服务提供商BlazingFast.io上。
攻击过程还原
恶意文件特征
我在这篇文章中的分析是基于以下一个FormBook样本:
封装过程
FormBook是一个自动解压的压缩文件,它可以启动AutoIt加载程序。 AutoIt加载器然后会进行编译并运行AutoIt脚本,接着AutoIt脚本会解密FormBook的有效载荷文件,将其加载到内存中,然后开始执行。
安装过程
FormBook会将自己复制到一个新的位置中,在复制后它首先会选择以下一个字符串作为其安装文件名的前缀:
ms,win,gdi,mfc,vga,igfx,user,help,config,update,regsvc,chkdsk,systray,audiodg,certmgr,autochk,taskhost,colorcpl,services,IconCache,ThumbCache,Cookies
然后安装文件会生成2到5个随机字符,并将这些字符附加到上面所选择的一个字符串上。
以下是文件所形成的一些扩展名:
.exe,.com,.scr,.pif,.cmd,.bat
如果FormBook要提升运行的权限,它会将自身复制到以下一个目录中:
%ProgramFiles% %CommonProgramFiles%
如果FormBook以正常权限运行,它会将自身复制到以下一个目录中:
%USERPROFILE% %APPDATA% %TEMP%
持久性驻留过程
FormBook驻留过程中使用的字符串列表与上一个过程都相同,在这个过程中,FormBook会使用一个随机字符串来创建一个前缀,并将这些字符附加到生成的1至5个随机字符中,最后FormBook使用该字符作为注册表的名称。
FormBook会根据其运行的权限,在以下两个位置对持久性驻留特点进行设置:
(HKCU|HKLM)SOFTWAREMicrosoftWindowsCurrentVersionRun
(HKCU|HKLM)SOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorerRun
启动攻击
FormBook会创建两个16字节的互斥(mutexes),第一个互斥是客户端标识符(例如8-3503835SZBFHHZ)。第二个互斥是从命令和控制的信息和用户名(例如LL9PSC56RW7Bx3A5)导出的。
然后,FormBook会遍历一个进程列表,并计算进程名称的校验和值(而不是检查名称本身)以确定要注入哪个进程。FormBook可能会注入浏览器进程和explorer.exe。根据目标进程,FormBook会选择安装不同的hook函数子。
反分析过程
FormBook使用了多种技术来防止研究人员对其进行跟踪和分析,比如:
1.使用RDTSC指令进行定时检查 2.调用含有InfoClass = 7 (ProcessDebugPort)的NtQueryInformationProcess 3.FormBook路径和文件名检查(FormBook文件名必须短于32个字符) 4.基于哈希的模块黑名单 5.基于哈希的进程黑名单 6.基于哈希的用户名黑名单 7.在通信之前,检查主机文件中是否存在命令与控制服务器
然后FormBook会将这些测试的结果放入一个16字节的阵列(array)中,并在阵列上计算出SHA1哈希值,而这个哈希值将会被作为后续字符串的解密密钥(例如要加载的DLL名称)。在FormBook尝试加载支持的DLL(kernel32.dll和advapi32.dll)之前,它是不会让安全防护软件发现自己的。
保存检查结果的正确的16字节阵列是:00 00 01 01 00 00 01 00 01 00 01 00 00 00 00 00
计算出的SHA1哈希值是:5b85aaa14f74e7e8adb93b040b0914a10b8b19b2
完成所有反分析检查后,FormBook会手动将ntdll.dll从磁盘映射到内存中,并直接在代码中使用其导出的函数。所有的API函数都将在代码中具有一小段的stub 函数,该函数会使用具有API名称的CRC32校验和来查找映射的ntdll.dll中的API地址,并在堆栈上设置参数。
接下来,FormBook将直接登记呼叫(register call)映射的ntdll.dll模块。由于永远不会通过系统映射的ntdll.dll执行,这就使得API上的常规调试器断点不可操作。
进程注入
FormBook循环遍历所有正在运行的进程,通过CRC32校验和来查找其进程名称的explorer.exe。为了避免更常见的可识别技术,如WriteProcessMemory和CreateRemoteThread,FormBook会使用以下API调用将其注入explorer.exe:
NtMapViewOfSection NtSetContextThread NtQueueUserAPC
被劫持的explorer.exe实例中注入的代码会随机地从以下列表中选择并启动(也可以暂停)内置的Windows可执行文件:
svchost.exe,msiexec.exe,wuauclt.exe,lsass.exe,wlanext.exe,msg.exe,lsm.exe,dwm.exe,help.exe,chkdsk.exe,cmmon32.exe,nbtstat.exe,spoolsv。 exe,rdpclip.exe,control.exe,taskhost.exe,rundll32.exe,systray.exe,audiodg.exe,wininit.exe,services.exe,autochk.exe,autoconv.exe,autofmt.exe,cmstp.exe, colorcpl.exe,cscript.exe,explorer.exe,WWAHost.exe,ipconfig.exe,msdt.exe,mstsc.exe,NAPSTAT.EXE,netsh.exe,NETSTAT.EXE,raserver.exe,wscript.exe,wuapp。 exe,cmd.exe
接着,原始进程会从explorer.exe的内存中读取随机选择的可执行文件,并通过NtMapViewOfSection,NtSetContextThread和NtQueueUserAPC进入到这个新进程。
然后,新进程将删除原始FormBook并设置持久性。这样,该进程就会进入一个循环过程,不断枚举正在运行的进程,并根据进程名称的CRC32校验和查找目标。
目标进程名称包括:
iexplore.exe,firefox.exe,chrome.exe,MicrosoftEdgeCP.exe,explorer.exe,opera.exe,safari.exe,torch.exe,maxthon.exe,seamonkey.exe,avant.exe,deepnet.exe,k- meleon.exe,citrio.exe,coolnovo.exe,coowon.exe,cyberfox.exe,dooble.exe,vivaldi.exe,iridium.exe,epic.exe,midori.exe,mustang.exe,orbitum.exe,palemoon。 exe,qupzilla.exe,sleipnir.exe,superbird.exe,outlook.exe,thunderbird.exe,totalcmd.exe
在注入目标进程之后,FormBook会根据进程设置用户模式的API hook。
FormBook会根据进程而选择安装不同的hook函数。这些hook函数的主要目的是进行键盘记录,窃取文本数据,并从浏览器HTTP会话中提取认证信息。
接着FormBook会将这些盗取的数据存储在本地密码日志文件中,其中目录名称来自于命令与控制的信息和用户名(与上面创建的第二个互斥相同:LL9PSC56RW7Bx3A5)。
但是,目录名称只从其中选取了8个字节(例如,LL9PSC56)。接下来,新生成的目录名称的前三个字符会被用作日志文件的前缀,这些字符串定义了日志格式本身。紧跟的这个前缀便是与日志文件类型对应的名称,例如,对于Internet Explorer密码,对应的日志文件如下:
%APPDATA%LL9PSC56LL9logri.ini.
以下是没有前缀的密码日志文件名:
(no name): Keylog data rg.ini: Chrome passwords rf.ini: Firefox passwords rt.ini: Thunderbird passwords ri.ini: Internet Explorer passwords rc.ini: Outlook passwords rv.ini: Windows Vault passwords ro.ini: Opera passwords
不使用.INI文件扩展名的另一个文件便是截图文件:im.jpeg。
hook函数
键盘记录或文本监控:
GetMessageA GetMessageW PeekMessageA PeekMessageW SendMessageA SendMessageW
浏览器函数:
PR_Write HttpSendRequestA HttpSendRequestW InternetQueryOptionW EncryptMessage WSASend
浏览器的hook函数会在HTTP请求的内容中查找某些字符串,如果找到匹配字符串,则提取有关请求的信息,目标字符串如下:
pass token email login signin account persistent
网络通信
FormBook会使用HTTP请求与以下命令与控制服务器进行通信:
www[.]clicks-track[.]info/list/hx28/
信标
如下图所示,FormBook会使用一个含有URL中的“id”参数的HTTP GET来发送信标请求(由定时器或计数器控制)。
解码后的“id”参数如下:
FBNG:134C0ABB 2.9:Windows 7 Professional x86:VXNlcg==
位置:
“FBNG” - 魔术字 “134C0ABB” - 用户SID的CRC32校验和 “2.9” – 木马版本 “Windows 7 Professional” - 操作系统版本 “x86” - 操作系统架构 “VXNlcg ==” - Base64编码的用户名
通讯加密
FormBook会使用硬编码的HTTP标头发送HTTP请求。如下图所示的HTTP标头就是硬编码的。
发送到命令与控制服务器的消息会进行RC4加密和Base64编码,不过,FormBook使用的Base64字母表稍微进行了一些改变,并且用于填充的字符"="还会被"."代替。
比如标准的Base64字母是:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
但修改后的Base64字母是:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
使用具有命令与控制 URL的SHA1哈希算法,可以创建RC4密钥。标准SHA1算法在算法结束时反转DWORD字节顺序。但命令与控制 URL的SHA1哈希算法是不会导致字节顺序反转的。例如,上述URL的SHA1哈希值为“9b198a3cfa6ff461cc40b754c90740a81559b9ae”,但是当重新排序DWORD时,它会产生反转的RC4密钥:3c8a199b61f46ffa54b740cca84007c9aeb95915。可以看出,第一个DWORD“9b198a3c”变成“3c8a199b”。
下图就是一个HTTP POST请求:
在这个例子中,解码的结果为:
ClipboardrnrnBlank Page - Windows Internet ExplorerrnrncEXN{3wutV,
命令接收
当命令与控制服务器发出一个命令时,HTTP响应体的格式如下图所示。
数据以魔术字“FBNG”开头,接着单字节的命令代码会从十六进制字节的31到39以明文形式开始。之后是RC4编码的命令数据,其中RC4密钥与用于请求的密钥相同。在解密的数据中,魔术字“FBNG”会又一次出现在命令数据的结尾处。
下表就是FormBook接收的命令:
FormBook的传播活动
FireEye研究人员发现攻击者是通过使用各种含有不同附件的电子邮件来传播的FormBook:
1.带有“tny.im”短URL链接的PDF文件,如果用户点击该链接,就会被重定向到包含FormBook可执行有效载荷的临时服务器(staging server)中。 2.包含恶意宏的word文档和Excel文件,如果用户点开,就会启动下载FormBook的有效载荷。 3.包含EXE有效载荷的文件(ZIP,RAR,ACE和ISO)。
采用PDF进行攻击
PDF在进行攻击活动时,其所发送的邮件主题都是假冒的FedEx和DHL进行送货的,以及文档共享主题。其实PDF文件本身并不包含恶意代码,只是文中会含有一个FormBook的有效载荷链接,临时服务器(如下表所示)似乎就是被攻击的网站。
PDF攻击的电子邮件附件
PDF文件里含有的FormBook的有效载荷链接
根据研究者们对tny.im短链接的数据统计分析,该链接总共被分布在36个国家的用户点击过716次。如下图所示,PDF的大部分恶意活动都影响的是美国用户。
通过恶意word文档和Excel文件进行攻击
通过word文档和Excel文件的电子邮件攻击活动,依赖于使用恶意宏来下载可执行有效载荷。当启用宏时,下载URL将检索具有PDF扩展名的可执行文件,下表列出了这些活动中所使用的电子邮件主题和下载URL。
FireEye在2017年8月11日至8月22日期间观察到了大量的这种恶意活动,且大部分活动在美国被,其中攻击的主要行业是航空航天和国防承包商。
8月11日至8月22日的DOC/XLS恶意活动
受DOC/XLS活动影响的十大国家
受DOC/XLS活动影响的十大行业
包含EXE有效载荷的文件攻击
文件攻击活动提供了各种攻击格式,包括ZIP,RAR,ACE和ISO,并且成了攻击活动的主要形式。该方式所涉及的主题五花八门,其中以商业主题最多,通常涉及付款或采购订单。
FireEye是在2017年7月18日至8月17日期间观察到这一活动的。其中大部分在韩国和美国,影响最大的是制造业。
2017年7月18日至8月17日的恶意活动
受影响的十大国家
受影响的十大行业
总结
虽然FormBook的攻击性能或传播方法并没有什么独特的,但由于其操作简单,价格低廉,功能强大,使得很多网络犯罪分子对它青睐有加。
在过去的几周里,研究者发现攻击者已经可以利用FormBook来下载其他的恶意软件了,比如NanoCore。根据预测,攻击者通过FormBook获得的登录凭证和其他数据将在未来用于其它的网络犯罪活动,比如盗窃身份、钓鱼攻击、银行欺诈和敲诈勒索。