孟加拉央行SWIFT攻击事件恶意木马分析

前言:刚拿到这个样本,然后花了些时间看了看,弄了个报告交差了。很多的细节分析纯是猜测,因为我对SWIFT具体业务逻辑也不了解。当参考吧。

第一章 分析概述

   该恶意木马样本为运行于winodws平台上的PE文件(名称:evtdiag.exe)。文件大小为64KB,编译时间是2016年2月5日。

   经分析,该样本为定制的攻击SWIFT客户端程序的恶意木马程序,未做加壳和代码混淆处理,主要功能是与本地的SWIFT客户端软件Alliance交互。该木马以windows服务形式运行,通过遍历读取SWIFT客户端软件Alliance安装目录下的配置文件和交易记录文件,从而获取Alliance的重要授权等配置文件。通过监控Alliance软件的收发报文并打印日志导出文件,攻击者通过监控日志分析学习Alliance软件的操作流程。该木马可以查询并修改Oracle数据库中的数据,完成相关账户信息的篡改,以便让程序完成伪造的转账请求。该恶意木马还通过一系列技术手段完成痕迹的消除,比如在获取Oracle操作结果时关闭数据校验和反馈、修改Oracle连接进程中内存数据绕过Oracle数据校验,并在最后删除数据库中获取的账户相关数据信息。

   可以看出,攻击者完全获取了SWIFT客户端主机的控制权限,所以通过打印日志记录各种命令执行结果并深入分析。木马程序编写者具有专业的金融知识背景,完全熟悉SWIFT Alliance的操作流程,深入了解该软件的工作原理,甚至是数据库表结构和文件网络等各类信息格式,另外还做了很多反侦查的技术操作。

1.1 分析环境和方法

本次分析基于PE样本(名称:evtdiag.exe)进行,分析环境为WinXP,静态代码分析工具为IDA,动态调试工具为Ollydbg。

第二章 样本分析过程

2.1 启动方式分析

该恶意木马在启动时接收不同的启动参数,从而实现不同的功能。所接收参数有-P、-g、-svc、resume、pause、on、off、queue等。如图2-1所示。其中on、pause、resume、off、queue都是对日志记录功能的操作,-svc参数则是将木马以windows服务方式启动。

 

图2-1 启动参数分析

如图2-2所示,-svc参数则将木马程序以windows服务方式启动。该操作调用StartServiceCtrlDispatcherA函数完成,所运行的服务的名字为evtsys.exe,并且在服务启动之后才进行后续的操作。

 

图2-2 以windows服务方式启动

2.2 枚举Oracle连接进程,修改内存数据

该恶意木马运行中,通过枚举系统中的进程,查找加载了Oracle连接库liboradb.dll的进程,该进程是SWIFT客户端软件Alliance与Oracle数据库进行交互所依赖的。如下图2-3所示。

 

图2-3 枚举加载了liboradb.dll模块的进程

    如图2-4所示,木马文件找到加载了liboradb.dll模块的进程文件后,通过修改内存的方式,对模块中的关键数据进行篡改。结合后续的一些运行行为初步推断,是对模块中的数据校验功能进行篡改,防止在修改账目过程中报错。

图2-4 修改Oracle连接进程中的内存数据

2.3 开启日志打印功能并进入关键处理函数

恶意木马开启日志打印功能sub_409460,便于记录每一步操作中的数据结果,如图2-5所示。同时进入关键信息窃取逻辑sub_409AF0。

 

图2-5 开启日志打印记录功能

如下图2-6便进入关键窃取信息的处理逻辑sub_409AF0,前面提到,当木马以服务方式启动时,便会执行该功能。

 

图2-6 sub_409AF0函数处理逻辑

 

图2-7 服务方式启动后即开始窃取信息

2.4 遍历SWIFT客户端软件Alliance目录文件

     该恶意木马接着遍历swift客户端软件Alliance的安装目录,拼接不同的目录路径,读取Alliance目录文件,如下图2-8所示。

 

图2-8 读取swift客户端软件alliance的目录文件

其中,推断gpca.dat文件可能为alliance软件关键的配置文件,可能保存了用户转账过程中的信息,并进行了加密。该木马代码获取到该文件后进行了有效的破解。破解算法如下图2-9所示。

 

图2-9 可能的pgca.cat文件内容的解密算法

如果该木马程序未读取到gpca.dat时,会通过打印日志来记录。如下图2-10所示的CFG FAIL记录。由此来推断,gpca.cat是配置文件。

 

图2-10 读取swift客户端软件alliance的目录文件

另外,alliance目录下的mcm目录下存放了in和out两个子文件夹,该木马程序对这两个目录进行了遍历读取,如图2-11所示,并匹配查找其中.prc和fal文件,然后读取文件内容,如图2-12所示。初步推断为SWIFT转账时的转入和转出操作时对应的目录,其中存放了转账时转入或者转出的数据记录文件。

 

图2-11 遍历Alliance的in和out目录

 

图2-12 遍历匹配in、out目录中的特定文件

2.5 操作Oracle数据库,进行查询、更新等操作

该木马程序通过Alliance软件操作数据库,对Oracle数据库进行查询、篡改和删除操作。同时将Oracle的相关属性进行修改,清除Alliance客户端软件的记录,同时将查询到的数据信息导出到某一个文件中。程序最后还执行delete语句删除Oracle的数据记录。

如下图2-13所示,该木马程序通过设置一系列的set命令将数据反馈和校验关闭。然后通过创建进程执行sql语句,将每个执行结果导出到一个文件中,同时Alliance并未留下操作记录。

 

图2-13 更改 Oracle相关属性以屏蔽数据操作记录

    如下图2-14所示,查询结果有Login字段。推断该操作应该是登录的授权信息的查询过程。

 图2-14 查询登录的账户信息

如下图2-15所示,该查询语句中有FIN_CCY_AMOUNT字段,推断是在查询账户的金额信息。

 

图2-15 查询账户金额信息

如下图2-16所示,该UPDATE语句中有FIN_CCY_AMOUNT字段,推断是在更新篡改账户的金额信息。

 

图2-16 修改账户金额信息

    如下图2-17所示,最后通过delete语句删除数据库的信息,推测是转账交易结束后,对数据库记录的删除,以消除痕迹。

 

图2-17 删除数据库中相关信息

2.6 监控SWIFT客户端软件Alliance的通信信息

在确定配置文件路径和文件信息之后,循环处理Alliance客户端软件的通信信息,即监控该软件发出和接收的信息,如图2-18所示。将信息记录日志导出。推测攻击者利用该监测功能观察SWIFT通信过程中的交换报文格式,从而伪造转账的报文请求,篡改数据库,从而让SWIFT按照设定的指定发送转账交易请求,从而完成攻击过程。

 

图2-18 监控Alliance软件的通信信息

第三章 分析总结

   该恶意木马样本为运行于winodws平台上的PE文件。文件大小为64KB,编译时间是2016年2月5日。

   经分析,该样本为定制的攻击SWIFT客户端程序的恶意木马程序,未做加壳和代码混淆处理,主要功能是与本地的SWIFT客户端软件Alliance交互。该木马以windows服务形式运行,通过遍历读取SWIFT客户端软件Alliance安装目录下的配置文件和交易记录文件,从而获取Alliance的重要授权等配置文件。通过监控Alliance软件的收发报文并打印日志导出文件,攻击者通过监控日志分析学习Alliance软件的操作流程。该木马可以查询并修改Oracle数据库中的数据,完成相关账户信息的篡改,以便让程序完成伪造的转账请求。该恶意木马还通过一系列技术手段完成痕迹的消除,比如在获取Oracle操作结果时关闭数据校验和反馈、修改Oracle连接进程中内存数据绕过Oracle数据校验,并在最后删除数据库中获取的账户相关数据信息。

   可以看出,攻击者完全获取了SWIFT客户端主机的控制权限,所以通过打印日志记录各种命令执行结果并深入分析。木马程序编写者具有专业的金融知识背景,完全熟悉SWIFT Alliance的操作流程,深入了解该软件的工作原理,甚至是数据库表结构和文件网络等各类信息格式,另外还做了很多反侦查的技术操作。

posted on 2016-06-02 14:52  童年的夏天  阅读(1474)  评论(4编辑  收藏  举报