关于近期曝光的针对银行SWIFT系统攻击事件综合分析
Contents
关于近期曝光的针对银行SWIFT系统攻击事件综合分析
一、概述
二、孟加拉央行攻击事件回顾
1. 背景
2. 攻击流程
3. 篡改MT900报文
1) MT900借记证实
MT900范围
MT900域详述
2) 具体篡改细节
4. liboradb.dll分析
三、相关攻击事件综合分析
1. SWIFT官方预警或申明
2. 战术:瞄准SWIFT系统
1) 针对银行系统的一系列攻击事件
2016年-孟加拉国央行(Bangladesh Central Bank)
2015年-越南先锋银行(Tien Phong Bank)
2015年-厄瓜多尔银行(Banco del Austro)
2013年-索纳莉银行(Sonali Bank)
2) 相似的攻击战术
3. 技术:恶意代码同源性分析
安全删除函数
四、总结
1. 相关攻击由一个组织或多个组织协同发起
2. 攻击组织极为熟悉目标银行作业流程
3. 相关恶意代码与Lazarus组织有关联
4. 银行等金融行业本身暴露出诸多安全问题
一、概述
2016年2月孟加拉国央行被黑客攻击导致8100万美元被窃取的事件被曝光后,如越南先锋银行、厄瓜多尔银行等,针对银行SWIFT系统的其他网络攻击事件逐一被公开。在相关事件曝光后,我们立即对相关攻击事件的展示溯源分析,就越南先锋银行相关攻击样本,我们形成了技术报告:《SWIFT之殇——针对越南先锋银行的黑客攻击技术初探》[1]。
在分析孟加拉国央行和越南先锋银行攻击事件期间,我们发现近期曝光的这4起针对银行的攻击事件并非孤立的,而很有可能是由一个组织或多个组织协同发动的不同攻击行动。另外通过对恶意代码同源性分析,我们可以确定本次针对孟加拉国央行和越南先锋银行的相关恶意代码与Lazarus组织有关联,但我们不确定幕后的攻击组织是Lazarus组织。
另外攻击组织对目标银行作业流程极为熟悉,也就并非短期内所能达到的,我们推测在侦查跟踪环节,攻击者应该针对目标进行了长时间且非常专注的持续性分析。
在对相关攻击事件的分析和剖析过程中,也暴露出诸多银行等金融行业本身的安全问题。如这一系列攻击事件要想达到金钱窃取,前提就需要获得银行本身SWIFT操作权限,而要获得相关权限则首先需要将银行自身网络攻陷。
近年来,针对银行、证券等金融行业的APT 攻击不断出现,尽管目前披露的还只是以境外银行业发生的安全事件为主,但是网络攻击本就是跨国界的,这对于国内银行业的安全防护也敲响了警钟。在过去的安全实践中,我们不止一次发现了国内金融行业曾遭受到了APT 攻击,安全态势并不是天下太平;再结合之前安天移动发布的《针对移动银行和金融支付的持续黑产行动披露——DarkMobileBank 跟踪分析报告》2中所披露的地下黑产针对金融行业最终用户的攻击现状,我们确实有必要 重新审视国内金融行业所面临的安全风险,以及在过去的安全规划与建设基础上创新思路,以应对不断出现的新兴威胁。
二、孟加拉央行攻击事件回顾
1. 背景
2016年2月5日,孟加拉国央行(Bangladesh Central Bank)被黑客攻击导致8100万美元被窃取,攻击者通过网络攻击或者其他方式获得了孟加拉国央行SWIFT系统操作权限,进一步攻击者向纽约联邦储备银行(Federal Reserve Bank of New York)发送虚假的SWIFT转账指令,孟加拉国央行在纽约联邦储备银行上设有代理帐户。纽约联邦储备银行总共收到35笔,总价值9.51亿美元的转账要求,其中30笔被拒绝,另外5笔总价值1.01亿美元的交易被通过。进一步其中2000万美元因为拼写错误(Foundation误写为fandation)被中间行发觉而被找回,而另外8100万美元则被成功转走盗取。
而我们捕获到的这次网络攻击中所使用的恶意代码,其功能是篡改SWIFT报文和删除相关数据信息以掩饰其非法转账的痕迹,其中攻击者通过修改SWIFT的Alliance Access客户端软件的权限检测指令,绕过相关验证。
2. 攻击流程
图 1 evtdiag.exe执行流程
步骤1:恶意代码检测是否有进程加载了“dll”模块,进一步修改权限检测指令,绕过验证;
步骤2:读取“dat”配置文件,其中包括了transord、日期、C&C等攻击者预设的关键信息;
步骤3:“2016年2月5日”是样本在满足其他特定条件后,执行报文篡改操作的触发时间;
步骤4:MT900报文篡改,操作打印机,并选择性修改数据库;
步骤5:样本执行篡改报文操作时,查询被感染计算机的相关“登录/注销”状态,将相关信息回传C&C服务器;
步骤6:监控执行持续到2016年2月6日6:00,之后退出并删除自身的日志、数据以及注册的服务。
选项 参数 说明
无参数 1. 配置信息读取(gpca.dat, mcm)
2. 等待JRNL_20160205.JRNL_DISPLAY_TEXT中
出现Login
3. swift账单操作
4. 等待20160206.06清除操作信息,调用
evtsys.exe
-svc 无 注册服务,执行程序主要流程
-p [PRINTER] resume 恢复PRINTER的运行
[PRINTER] pause 暂停PRINTER的运行
[PRINTER] on 运行PRINTER
[PRINTER] off 停止PRINTER
[PRINTER] queue 枚举打印任务
-s [FILENAME] 修改SWIFT目录下的nroff.exe为rnoff.exe。将[FILENAME]重命名为nroff.exe,目的为使用[FILENAME]劫持nroff.exe
-r 无 重命名”nroff.exe”为”nroff.exe.bak”,重命名”rnoff.exe”为”nroff.exe,目的是恢复nroff劫持
-t [CMD] 连接196.202.103.174:80,通过HTTP GET 向”/al?”发送数据,参数为 [CMD]
-i 无 Patch Dll:遍历进程,更改liboradb.dll中0x6A8B6偏移处的内容为9090
-u 无 Unpatch Dll:遍历进程,更改liboradb.dll中0x6A8B6偏移处的内容为7504
-g [DATE] 查询SWIFT数据库”JRNL_DATE”表中的”JRNL_DISPLAY_TEXT”字段是否有”Logout”和”Login”信息,输出显示表 1 evtdiag.exe相关参数
偏移量 数据 说明
0x0 0A0B0C0Dh Magic标记
0x4 66h transord个数
0x8h – 0x8007 00901/0000058500
00901/0000058501
……
102个transord(gpca.dat含有)
0x8008 20160205 检查登录日期
0x8028 D:\Alliance\Access\database\bin\sqlplus.exe swift客户端sqlplus路径
0x812C D:\MESSAGE_PARTNER printer相关路径
0x8230 D:\Alliance\Access\common\bin\Win32 -s,-r操作的目录
0x8334 196.202.103.174 远程C&C表 2 gpca.dat配置文件内容 ## 3. 篡改MT900报文 《SWIFT之殇——针对越南先锋银行的黑客攻击技术初探》[2]中“二、 关于SWIFT”,详细介绍了SWIFT。MT900是SWIFT MT十大类报文中其中第9类的一种,关于MT900报文的格式,下面有详细介绍,这样有助于理解后门具体篡改细节。 ### 1) MT900借记证实 #### MT900范围 这是由帐户行发给开户行,用来通知开户行某笔款项已借记其所开帐户的报文格式。该借记将在对帐单中被进一步证实。如果帐户行经常发送该帐户的对帐单,那么就不会定期发送此报文。 该报文不能用于记帐,它只是向收报行(即开户行)证实这一笔借记。 #### MT900域详述 [3] - 域20:发报行的编号 - 域21:有关业务编号 列明引起这笔借记的业务编号。如:MT100中域“20”中的编号。 - 域25:帐号 列明已被借记的帐户号码。 - 域32A:起息日、货币、金额 列明借记的起息日、货币和金额。 - 域52a:指示行 列明指示发报行借记该帐户的银行。如果该银行是收报行以外的银行,那么报文使用该域列明指示行。 - 域72:附言 该域只能填写有关说明,不能出现任何指示。 ### 2) 具体篡改细节图 2相关被篡改文件和配置文件关系图 获取nfzp/nfzf下所有”%d_%d”报文,并且根据MSG_TRN_REF是否已经在配置纪录当中进行分类,同时获取”%d_1″中的”60F”和”Sender”。
项目 操作
60F/60M: 更改为”60F”
Debit/Credit 如果Amount>0,设为Credit;否则,Debit
Amount “%d_1-”中的”60 Amount”
61: 如果”%d_-”中对应的报文有部分不能在配置信息中查询到, “%d_1-”的”Sender”为”FEDERAL RESERVE BANK”且该笔”61″的交易类型为”RP …
一、概述
二、孟加拉央行攻击事件回顾
1. 背景
2. 攻击流程
3. 篡改MT900报文
1) MT900借记证实
MT900范围
MT900域详述
2) 具体篡改细节
4. liboradb.dll分析
三、相关攻击事件综合分析
1. SWIFT官方预警或申明
2. 战术:瞄准SWIFT系统
1) 针对银行系统的一系列攻击事件
2016年-孟加拉国央行(Bangladesh Central Bank)
2015年-越南先锋银行(Tien Phong Bank)
2015年-厄瓜多尔银行(Banco del Austro)
2013年-索纳莉银行(Sonali Bank)
2) 相似的攻击战术
3. 技术:恶意代码同源性分析
安全删除函数
四、总结
1. 相关攻击由一个组织或多个组织协同发起
2. 攻击组织极为熟悉目标银行作业流程
3. 相关恶意代码与Lazarus组织有关联
4. 银行等金融行业本身暴露出诸多安全问题
一、概述
2016年2月孟加拉国央行被黑客攻击导致8100万美元被窃取的事件被曝光后,如越南先锋银行、厄瓜多尔银行等,针对银行SWIFT系统的其他网络攻击事件逐一被公开。在相关事件曝光后,我们立即对相关攻击事件的展示溯源分析,就越南先锋银行相关攻击样本,我们形成了技术报告:《SWIFT之殇——针对越南先锋银行的黑客攻击技术初探》[1]。
在分析孟加拉国央行和越南先锋银行攻击事件期间,我们发现近期曝光的这4起针对银行的攻击事件并非孤立的,而很有可能是由一个组织或多个组织协同发动的不同攻击行动。另外通过对恶意代码同源性分析,我们可以确定本次针对孟加拉国央行和越南先锋银行的相关恶意代码与Lazarus组织有关联,但我们不确定幕后的攻击组织是Lazarus组织。
另外攻击组织对目标银行作业流程极为熟悉,也就并非短期内所能达到的,我们推测在侦查跟踪环节,攻击者应该针对目标进行了长时间且非常专注的持续性分析。
在对相关攻击事件的分析和剖析过程中,也暴露出诸多银行等金融行业本身的安全问题。如这一系列攻击事件要想达到金钱窃取,前提就需要获得银行本身SWIFT操作权限,而要获得相关权限则首先需要将银行自身网络攻陷。
近年来,针对银行、证券等金融行业的APT 攻击不断出现,尽管目前披露的还只是以境外银行业发生的安全事件为主,但是网络攻击本就是跨国界的,这对于国内银行业的安全防护也敲响了警钟。在过去的安全实践中,我们不止一次发现了国内金融行业曾遭受到了APT 攻击,安全态势并不是天下太平;再结合之前安天移动发布的《针对移动银行和金融支付的持续黑产行动披露——DarkMobileBank 跟踪分析报告》2中所披露的地下黑产针对金融行业最终用户的攻击现状,我们确实有必要 重新审视国内金融行业所面临的安全风险,以及在过去的安全规划与建设基础上创新思路,以应对不断出现的新兴威胁。
二、孟加拉央行攻击事件回顾
1. 背景
2016年2月5日,孟加拉国央行(Bangladesh Central Bank)被黑客攻击导致8100万美元被窃取,攻击者通过网络攻击或者其他方式获得了孟加拉国央行SWIFT系统操作权限,进一步攻击者向纽约联邦储备银行(Federal Reserve Bank of New York)发送虚假的SWIFT转账指令,孟加拉国央行在纽约联邦储备银行上设有代理帐户。纽约联邦储备银行总共收到35笔,总价值9.51亿美元的转账要求,其中30笔被拒绝,另外5笔总价值1.01亿美元的交易被通过。进一步其中2000万美元因为拼写错误(Foundation误写为fandation)被中间行发觉而被找回,而另外8100万美元则被成功转走盗取。
而我们捕获到的这次网络攻击中所使用的恶意代码,其功能是篡改SWIFT报文和删除相关数据信息以掩饰其非法转账的痕迹,其中攻击者通过修改SWIFT的Alliance Access客户端软件的权限检测指令,绕过相关验证。
2. 攻击流程
图 1 evtdiag.exe执行流程
步骤1:恶意代码检测是否有进程加载了“dll”模块,进一步修改权限检测指令,绕过验证;
步骤2:读取“dat”配置文件,其中包括了transord、日期、C&C等攻击者预设的关键信息;
步骤3:“2016年2月5日”是样本在满足其他特定条件后,执行报文篡改操作的触发时间;
步骤4:MT900报文篡改,操作打印机,并选择性修改数据库;
步骤5:样本执行篡改报文操作时,查询被感染计算机的相关“登录/注销”状态,将相关信息回传C&C服务器;
步骤6:监控执行持续到2016年2月6日6:00,之后退出并删除自身的日志、数据以及注册的服务。
选项 参数 说明
无参数 1. 配置信息读取(gpca.dat, mcm)
2. 等待JRNL_20160205.JRNL_DISPLAY_TEXT中
出现Login
3. swift账单操作
4. 等待20160206.06清除操作信息,调用
evtsys.exe
-svc 无 注册服务,执行程序主要流程
-p [PRINTER] resume 恢复PRINTER的运行
[PRINTER] pause 暂停PRINTER的运行
[PRINTER] on 运行PRINTER
[PRINTER] off 停止PRINTER
[PRINTER] queue 枚举打印任务
-s [FILENAME] 修改SWIFT目录下的nroff.exe为rnoff.exe。将[FILENAME]重命名为nroff.exe,目的为使用[FILENAME]劫持nroff.exe
-r 无 重命名”nroff.exe”为”nroff.exe.bak”,重命名”rnoff.exe”为”nroff.exe,目的是恢复nroff劫持
-t [CMD] 连接196.202.103.174:80,通过HTTP GET 向”/al?”发送数据,参数为 [CMD]
-i 无 Patch Dll:遍历进程,更改liboradb.dll中0x6A8B6偏移处的内容为9090
-u 无 Unpatch Dll:遍历进程,更改liboradb.dll中0x6A8B6偏移处的内容为7504
-g [DATE] 查询SWIFT数据库”JRNL_DATE”表中的”JRNL_DISPLAY_TEXT”字段是否有”Logout”和”Login”信息,输出显示表 1 evtdiag.exe相关参数
偏移量 数据 说明
0x0 0A0B0C0Dh Magic标记
0x4 66h transord个数
0x8h – 0x8007 00901/0000058500
00901/0000058501
……
102个transord(gpca.dat含有)
0x8008 20160205 检查登录日期
0x8028 D:\Alliance\Access\database\bin\sqlplus.exe swift客户端sqlplus路径
0x812C D:\MESSAGE_PARTNER printer相关路径
0x8230 D:\Alliance\Access\common\bin\Win32 -s,-r操作的目录
0x8334 196.202.103.174 远程C&C表 2 gpca.dat配置文件内容 ## 3. 篡改MT900报文 《SWIFT之殇——针对越南先锋银行的黑客攻击技术初探》[2]中“二、 关于SWIFT”,详细介绍了SWIFT。MT900是SWIFT MT十大类报文中其中第9类的一种,关于MT900报文的格式,下面有详细介绍,这样有助于理解后门具体篡改细节。 ### 1) MT900借记证实 #### MT900范围 这是由帐户行发给开户行,用来通知开户行某笔款项已借记其所开帐户的报文格式。该借记将在对帐单中被进一步证实。如果帐户行经常发送该帐户的对帐单,那么就不会定期发送此报文。 该报文不能用于记帐,它只是向收报行(即开户行)证实这一笔借记。 #### MT900域详述 [3] - 域20:发报行的编号 - 域21:有关业务编号 列明引起这笔借记的业务编号。如:MT100中域“20”中的编号。 - 域25:帐号 列明已被借记的帐户号码。 - 域32A:起息日、货币、金额 列明借记的起息日、货币和金额。 - 域52a:指示行 列明指示发报行借记该帐户的银行。如果该银行是收报行以外的银行,那么报文使用该域列明指示行。 - 域72:附言 该域只能填写有关说明,不能出现任何指示。 ### 2) 具体篡改细节图 2相关被篡改文件和配置文件关系图 获取nfzp/nfzf下所有”%d_%d”报文,并且根据MSG_TRN_REF是否已经在配置纪录当中进行分类,同时获取”%d_1″中的”60F”和”Sender”。
项目 操作
60F/60M: 更改为”60F”
Debit/Credit 如果Amount>0,设为Credit;否则,Debit
Amount “%d_1-”中的”60 Amount”
61: 如果”%d_-”中对应的报文有部分不能在配置信息中查询到, “%d_1-”的”Sender”为”FEDERAL RESERVE BANK”且该笔”61″的交易类型为”RP …