日产生50亿条金融交易的SWIFT攻击正在进化

简介:

就在去年,还只有极少数人听说过环球银行金融电信协会(SWIFT)。该组织的标准化信息格式,被采纳为银行间金融转账的全球标准;相关软件和消息网络,驱动着今天大多数的国际银行转账,每年产生的金融消息超50亿条。然而,这并不是大多数人听闻SWIFT的原因所在。

近些年,利用或入侵SWIFT应用的网络攻击和欺诈频频见诸报端。2016年,孟加拉央行和纽约联邦储蓄银行便涉入一场净值1.01亿美元的网络劫案——其中大多数资金都未追回。若非其中一笔交易出现拼写错误引发质疑,另外8.5亿美元恐怕也会被盗。随后,对SWIFT网络的攻击此起彼伏,越南、厄瓜多尔、乌克兰都发生了此类事件,不过大多数受影响银行和国家都未公开事件。

攻击策略在进化

对支付系统的攻击,包括对SWIFT的攻击,都不算新鲜。金融机构从一开始就在与欺诈和盗窃作斗争,攻击者则紧跟技术发展,利用一切可以利用的漏洞。

数年前,攻击者选中的策略,是入侵用户电脑,然后以该用户的名义提交虚假金融交易。这让银行恶意软件和远程访问木马(RAT)的流行,成为了金融机构的主要关注点。尽管这些策略依然留存,也是对个人、公司和银行的一个威胁,对这些威胁的认知,已经导致了更好的防护和罪犯成功率的下降。

不过,攻击者也是越战越勇的类型,他们开始改变策略,从对用户终端的攻击,转变到对驱动银行系统本身的应用和网络的攻击。除大量资金被盗外,孟加拉央行攻击事件的重点,在于攻击者使用的攻击方法。除了利用从授权用户处盗得的凭证,攻击者还安装了恶意软件以在支付系统中形成驻留。

举个例子,有系统负责所有交易的打印,那么所有交易记录必然会有一份复印件拷贝。为规避记录,攻击者禁用了该过程,让自己的虚假交易不会出现在打印件里。越南网络劫案中,攻击者修改了用于跟踪SWIFT转账的PDF阅读器,让虚假转账不显现。

除了阻止交易记录打印,攻击者还将恶意软件安装到托管着SWIFT网络管理和连接软件集 SWIFT Alliance Software 的服务器上。 该恶意软件可以解密各种配置文件,搜索特定条款,然后绕过验证检查,规避交易被发现的风险。

很明显,此类攻击正演变得越来越复杂,他们正将攻击堆栈向底层移动,从终端用户,移动到之前尚未触及的银行系统和安全措施上。

Swift Alliance Software架构

凝练出有效防御

针对此一情况,SWIFT发布了其《客户安全计划》,围绕 Swift Alliance Software 和与SWIFT网络互动的任何定制应用,为金融机构提供安全防护指南。

尽管该指南是迈向正确方向的第一步,实际防护SWIFT应用堆栈却是说起来容易做起来难,因为太多SWIFT应用组件都是遗留实体系统,不支持最新的安全软件,也不接收任何安全性更新,并且这些应用组件还往往存在于那些难以适应新安全协议的数据中心里。

防护银行应用的安全控制也有那么一些——交易监测、用户行为监视、反恶意软件、用户安全培训等等,但 SWIFT Alliance Software (或定制SWIFT应用)无论安全通常难以实现。

直到最近,安置各种SWIFT组件的最佳实践,都还是将它们都放到防火墙后面,但这依然阻挡不了同区域内与其他工作负载的自由通信,而且提供不了第4层之上的可见性与控制。很明显,对付熟知SWIFT应用逻辑的黑客时,更精妙的方法是必需的。

有效保护SWIFT应用堆栈的理想解决方案应包含3个要素:

  1. 微分隔——获得对所有数据中心通信的完整可见性与控制
  2. 实现从第7层开始的安全策略,获得细粒度的高效策略构建
  3. 支持虚拟和物理两种工作负载——因为很多金融机构依然是两套系统并行的

微分隔SWIFT应用架构的各种组件,确保了只有恰当的终端和应用组件可以相互通信,且只通过经批准的应用协议进行通信。于是,如果攻击者想要侵入你的SWIFT应用堆栈,他们就得利用SWIFT应用协议中的漏洞,而且要从另一个经授权的应用组件发起攻击,不能简单地在运行SWIFT组件的服务器上通过可用端口或协议获得立足点了。即便是技术高超的攻击者,这也是个极难跨越的障碍。

保护支付系统不受诈骗或网络攻击侵扰是没有万灵丹的。不过,将支付系统组件间通信限制在“有必要才允许”的范围内,可以大幅减小攻击界面,这比其他方法提供的控制严格得多。随着我们继续见证对银行和支付应用的攻击,以及随之而来的安全最佳实践和网络安全监管的收紧,对系统应用间各个方面通信的细粒度可见性与控制的需求,只会不断上升。

目录
相关文章
|
7月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
430 2
|
5月前
|
Unix 调度 Swift
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
171 3
|
26天前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
29 2
|
1月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
56 1
|
2月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
55 5
|
4月前
|
存储 移动开发 Swift
使用Swift进行iOS应用开发:探索现代移动开发的魅力
【8月更文挑战第12天】使用Swift进行iOS应用开发,不仅能够享受到Swift语言带来的简洁、快速、安全的编程体验,还能够充分利用iOS平台提供的丰富资源和强大功能。然而,iOS应用开发并非易事,需要开发者具备扎实的编程基础、丰富的实践经验和不断学习的精神。希望本文能够为您的iOS应用开发之旅提供一些有益的参考和帮助。
|
5月前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
76 7
|
5月前
|
调度 Swift Android开发
苹果iOS新手开发之Swift中的并发任务和消息机制
Swift的消息机制类似Android的Handler,实现任务调度有三种方式: 1. **Grand Central Dispatch (GCD)**:使用`DispatchQueue`在主线程或后台线程执行任务。 2. **OperationQueue**:提供高级接口管理`Operation`对象。 3. **RunLoop**:处理事件如输入源、计时器,类似Android的`Looper`和`Handler`。 **示例**: - GCD:在不同线程执行代码块。 - OperationQueue:创建操作并执行。 - RunLoop:用Timer添加到RunLoop中。
106 2
|
5月前
|
安全 编译器 Swift
探索iOS开发:Swift语言的现代魔法
【7月更文挑战第11天】本文深入探讨了Swift编程语言,它如何革新iOS开发领域,以及它为开发者带来的独特优势。我们将从Swift的基础语法出发,通过实际案例分析其性能优化技巧,最后讨论Swift在跨平台开发中的潜力。文章旨在为读者提供一个全面而深入的视角,了解Swift不仅仅是一门语言,更是一种推动创新的力量。
|
7月前
|
设计模式 前端开发 Swift
使用Swift进行iOS应用开发:深入探索与最佳实践
【5月更文挑战第24天】探索Swift在iOS开发中的深度应用与最佳实践。Swift以其简洁语法、类型安全、面向对象、高性能及与Objective-C的互操作性脱颖而出。使用Xcode设置开发环境,学习Swift语法,创建并设计项目,编写业务逻辑,同时进行调试和测试。遵循MVC模式,利用SwiftUI、并发特性,并注重内存管理,持续学习新工具和技术,以实现高质量应用开发。