国际首发窃取孟加拉国央行万美元的

malwarebenchmark今年3月11日在国内首先报道了孟加拉央行被黑客窃取了万美元的事件后,一直持续跟踪金融安全热点,并努力追踪利用swift及其客户端进行渗透入侵的恶意代码及背后黑客。经过持续努力,第一时间获取了孟加拉央行和越南先锋银行的恶意代码,并作出了粗略分析。

0X01什么是SWIFT?

年5月,来自美国、加拿大和欧洲的15个国家的家银行宣布正式成立SWIFT,其总部设在比利时的布鲁塞尔。

在国际贸易结算中,SWIFT信用证是正式的、合法的,被信用证各当事人所接受的、国际通用的信用证。

千辛万苦,我们获取了在孟加拉央行窃取了万美元的“元凶”evtdiag.exe。如何确认呢?我们在样本中发现了孟加拉国银行的swiftcode:BBHOBDDHA,这显然是重要“罪证”啦~!其它的请继续阅读吧~!

图1Evtdiag.exe中的swiftcode

简单一句话,在国际外汇交易中都必须要用到SWIFT所提供的服务,而且SWIFT的传输信息被作为交易凭证!所以,一些黑阔就对SWIFT下手了,而且还是大手笔!

0X02样本概述

样本名称:evtdiag.exe

编译时间:-02-:46:20

大小:64KB

MD5:24d76abbc0a10e4ca28b33c

该恶意软件包含了复杂的功能,主要是与本地的SWIFTAlliance交互,然而,软件只是整个攻击链上的一个工具。黑客恰恰是通过该恶意软件入侵了SWIFT的AllianceAccess客户端软件,以掩饰其非法转账的痕迹。

目前,BAE等公司尚没有就黑客如何通过SWIFT系统发起转账给出解释。小编在拿到样本之后,先做一个抛砖引玉的初步分析,希望更多金融安全的有志之士可以加入进来。

0x03启动方式

该样本能够根据不同的启动参数,实现不同的子功能,接收的启动参数有–P、-g、-svc、resume、pause、on、off、queue等,如图所示:

图2Evtdiag.exe的启动项

样本在运行过程中有很多的打印语句,说明该样本是攻击者在获取系统权限之后,对系统的swiftAlliance进行进一步渗透所用的工具。

0x04将自身以服务的方式启动

将自身以服务启动,成功后,进入关键的功能函数段sub_AF0

图3Evtdiag.exe的服务启动方式

下面我们重点就sub_AF0中的功能进行逆向分析。

图4sub_AF0控制流

0X05查找关键配置文件(转账过程等文件)

恶意代码在Allians录下的mcpmcm等目录下,查找关键配置文件gpca.dat等,其中gpaca.dat保存着用户转账过程中的信息,并进行了加密,该恶意代码在获取到该文件后进行了有效的破解。在查找的配置文件中mcm目录非常特殊,分别有in和out两个子文件夹,初步判定为转账时的转入和转出操作对应的目录。

图5配置文件操作

0X06查找关键功能模块并篡改(与oracle交互等进程)

遍历整个系统的进程,查找加载liboradb.dll的进程,该进程是Alliance与Oracle数据库进行交互所依赖的,恶意代码在获取该模块后,对模块中的关键数据校验功能进行篡改,仿制修改账目过程中报错。

图6从Evtdiag.exe静态信息中获取liboradb.dll

0X07操作Oracle数据库(修改账目)

经过小编查看,该代码存在对数据库做查找、删除、更新等操作,下面我们一起来看一看。

首先,通过sql语句“SELECTMESG_S_UMIDFROMSAAOWNER.MESG_%sWHEREMESG_SENDER_SWIFT_ADDRESSLIKE%%%s%%ANDMESG_TRN_REFLIKE%%%s%%;”查询到用户的相关信息。

我们注意到此处调用了sub_B70函数,此函数操作如下:分别对oracle数据库的相关属性进行更改,意在将查询到的数据信息导出到某一文件中去,以便copy。

图7数据查询信息导出

当大家都以为窃取行动就此终止时,他们又做了一件意想不到的事情,通过sql语句“DELETEFROMSAAOWNER.MESG_%sWHEREMESG_S_UMID=%s;”删除之前窃取到的库中的信息,具体目的是什么,我们会在以后进行分析。

图8删除窃取信息

上面部分是对数据的窃取+删除,下面则是重头戏,窃取+修改以获取资金。

首先通过sql语句“SELECTMESG_FIN_CCY_AMOUNTFROMSAAOWNER.MESG_%sWHEREMESG_S_UMID=%s;”查询现有金额,再通过“UPDATESAAOWNER.MESG_%sSETMESG_FIN_CCY_AMOUNT=%sWHEREMESG_S_UMID=%s;”修改金额信息。是不是有点画蛇添足了?

图9查询修改金额

0X08守株待兔

在确定配置文件路径和文件信息之后,循环处理Allians客户端发出和接收的信息。

图10循环处理Allians客户端信息

0X09总结

要完成这样一次攻击,可以说攻击者如果没有相对专业的金融知识背景将会很难完成,而且选择孟加拉国的银行也非常值得琢磨。攻击者完全熟悉SwiftAlliance的操作流程,深入了解SwiftAlliance的工作原理,甚至是数据库表结构和文件网络等各类信息格式,并且在攻击成功后做了很多反侦察操作。

需要金融安全人士


转载请注明:http://www.aierlanlan.com/grrz/149.html