孟加拉央行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的操作流程,深入了解该软件的工作原理,甚至是数据库表结构和文件网络等各类信息格式,另外还做了很多反侦查的技术操作。
孟加拉央行SWIFT攻击事件恶意木马分析(转)的更多相关文章
- Exp4 恶意代码分析
一.原理与实践说明 1. 实践目标 1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysin ...
- 2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165317 Exp4 恶意代码分析 实验要求 1.系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间 ...
- 2018-2019-2 网络对抗技术 20165305 Exp4 恶意代码分析
Exp4 恶意代码分析 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysi ...
- 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...
- Exp4 恶意代码分析 20164303 景圣
Exp4 恶意代码分析 实验内容 实验点一:系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件,综述一下分析结果.目标就是找出 ...
- 2017-2018-2 20155314《网络对抗技术》Exp4 恶意代码分析
2017-2018-2 20155314<网络对抗技术>Exp4 恶意代码分析 目录 实验要求 实验内容 实验环境 基础问题回答 预备知识 实验步骤 1 静态分析 1.1 使用virsca ...
- 2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析
2017-2018-2 20155303『网络对抗技术』Exp4:恶意代码分析 --------CONTENTS-------- 一.原理与实践说明 1.实践目标 2.实践内容概述 3.基础问题回答 ...
- 2018-2019 2 20165203 《网络对抗技术》 Exp4 恶意代码分析
2018-2019 2 20165203 <网络对抗技术> Exp4 恶意代码分析 实验要求 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2或Exp ...
- 20155302《网络对抗》Exp4 恶意代码分析
20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...
随机推荐
- Android定位方式和测试方法
Android常用的三种定位方式有:基于GPS定位.基于基站地位.基于wifi定位. 1.基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的. GPS定位最 ...
- 疯狂java学习笔记之面向对象(五) - 封装、继承、多态
一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
- Learning storm book 笔记8-Log Processing With Storm
有代码的书籍看起来就是爽,看完顺便跑个demo,感觉很爽! 场景分析 主要是利用apache的访问日志来进行分析统计 如用户的IP来源,来自哪个国家或地区,用户使用的Os,浏览器等信息,以及像搜索的热 ...
- js的function
1.funciton的js如果直接写是不会执行的 例如 function TableInit() { //var treeNode = $('#otherTree').omTree('getSelec ...
- js身份证验证-超级准!!!
function checkIdcard(idcard) { var Errors = new Array( "验证通过!", "身份证号码位数不对!", &q ...
- NOIp 2013 #3 转圈游戏 Label:模拟
题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此 ...
- 【POJ】3243 Clever Y
http://poj.org/problem?id=3243 题意:求$a^y \equiv b \pmod{p}$最小的$y$.(0<=x, y, p<=10^9) #include & ...
- poj 2239 二分图最大匹配,基础题
1.poj 2239 Selecting Courses 二分图最大匹配问题 2.总结:看到一个题解,直接用三维数组做的,很巧妙,很暴力.. 题意:N种课,给出时间,每种课在星期几的第几节课上 ...
- C#_数据转换 实用方法
[String转Array]string str = "123asd456asd789";单字符: string[] a0 = str.Split('a');多字符: string ...
- 如何让代码实现C++
其实本来就知道 但是主要突然忘了去怎样实现C++代码 ,所以写个笔记记忆一下 让代码实现C++ 只需要修改.m文件为 .mm 就可以了 突然是不是很像打脸. 不过希望能给不知道的小伙伴一点帮助哦 ...