黑掉美国(英国、澳大利亚、法国等)的交通控制系统
作者 Taskiller
像电影中那样hacking
可能很多读者已经看过电影《虎胆龙威4:虚拟危机》,里面的“黑客恐怖分子”只需要在键盘上按几个按键就可以控制交通信号灯。是不是很酷!我也想过这么试试!不过后来仔细想想,我无法做到像电影里演的那样(Hollywood风格太浓重了!),所以放弃了这个想法。但我倒确实在一些美国的城市中发现一些交通控制系统使用的有趣设备,这些设备在英国、法国、澳大利亚、中国等国也在使用,这就更有意思了。
拿到了设备,就不难找到它的漏洞(实际上让它们正常工作其实更难,但这是另一话题了)。
我找到的漏洞允许任何人完全控制设备并向交通控制系统发送非法数据,也就是说基本上任何人都有可能通过一款便宜的可编程硬件($100或更少)引起一场交通瘫痪。
我甚至测试了飞行高度超过650英尺的无人驾驶飞机,也可以攻击成功。理论上,如果使用更好的无人操纵设备和硬件,这种攻击可以从1到2英里之外发起,而我测试时只是用的普通廉价无人操纵设备和便宜的硬件。由于无人飞机在美国并不违法,任何人如果需要都可以拥有一架,我担心以后针对美国的攻击可能就直接从空中发起了。
同时也有一种可能是创建能够自我复制的恶意软件(蠕虫)来感染这些包含漏洞的设备,以发起一场影响交通控制系统的攻击,而被感染的设备之后又可被用来感染附近的相同设备。
让我最担心的是,如果某个包含漏洞的设备被破坏,其非常非常难以检测,且代价非常非常昂贵。也许现在有些设备可能已经被感染了,只是外人不知道而已。
接下来向读者展示一下可能产生影响的城市。以下内容来自包含漏洞的设备厂商的相关文档:
1,包含250+家客户分布在10个国家以及美国45个州。2,已在美国多个重要城市部署:纽约,华盛顿、旧金山、洛杉矶、波士顿、西
雅图等3,全球部署超过50,000+台设备(大部分位于美国)4,部署的国家包括美国、英国、中国、加拿大、澳大利亚、法国等。例
如已经在英国部署的城市包括:伦敦、什罗普5,5,郡、Slough、Bournemouth、阿伯丁、布莱克本的达尔文自治委员会、贝尔法斯
特等。5,澳大利亚在其最重要的、现代化的高速公路上有大量部署。
(墙内地址:http://v.youku.com/v_show/id_XNzA4MDE2NjI0.html)
(墙外地址: https://www.youtube.com/watch?feature=player_embedded&v=vHm-x9ag3c0)
如读者所见,已经有超过50,000+台设备部署在这么多重要城市中,很有可能被黑客利用发动一场造成交通瘫痪的攻击。
现场勘察
虽然我知道我自己的设备包含漏洞,但我想100%确保我的测试没有遗漏任何其它信息。真实环境中的部署可能配置不同(不同的硬件/软件版本),并且我报告漏洞时设备供应商似乎还把信息提供错了,所以我在自己设备上的发现可能对真实环境中的部署没有效果。
我将“工具”放进背包,起身去西雅图、纽约和华盛顿,来一场说走就走的旅行,做一些“被动”现场测试(“只是测试,没有非法行为”)。幸运的是,我可以确定我的发现也可以应用到真实环境的部署中。顺便说一句,非常感谢Ian Amit和我去华盛顿并为我摄影与录像。
漏洞
本文不会分享相关的技术细节(想要得到更多细节内容,读者需要等到几周后举行的Infiltrate2014,但可以先看看下面的视频解解馋J):
(墙内地址:http://v.youku.com/v_show/id_XNzA4MDE3MTAw.html)
(墙外地址:https://www.youtube.com/watch?feature=player_embedded&v=RviQ3YQTxMo)
我想说的是,我在很早之前(2013年9月)就通过ICS-CERT与设备厂商联系了(发给ICS-CERT的初始报告是在2013年7月31号提交的),但被ICS-CERT告知,设备供应商那边不认为我的发现的危险性,甚至都不认为有什么重要。例如,对于其中一个漏洞,供应商说由于设备就是用那种(不安全的)方式设计的,那些设备也正按设计的方式工作,客户(州/市政府)也想让设备按那种(不安全的)方式工作,所以不会有任何安全问题。是的,这就是我得到的答案,简直不敢相信!
对于另一个漏洞,厂商表示在设备的新版本中修复了。但仍有一个大问题,就是需要用新设备替换旧设备。这对州/市政府来说可不是什么好消息,因为已经部署了成千上万台设备,替换所有这些设备需要花费的时间和金钱是相当可观的。与此同时,现有设备又满是漏洞,向攻击者大开方便之门。
厂商给出的另一个理由是,由于设备不控制交通信号灯,因此没有安全性需求。这理由太扯了,虽然设备不直接控制交通控制系统,但会对这些系统的行为和判断产生直接影响。
我多次尝试想让ICS-CERT和设备厂商理解问题的重要性,但仍无法说服他们。最后我说,如果设备厂商不认为我发现的这些是漏洞,那么好的,事情到此为止。我已经努力过了,不想继续浪费时间和精力在这上面。同时,由于DHS(国土安全部)已经(通过ICS-CERT)了解此事,看起来对他们来说也不怎么重要,那对我来说除了将其公之于众之外也没什么可做的了。
同时,这个发现再次提醒政府,在关键的基础设施中使用这些设备之前,需要对设备/产品做好充分的安全评估,同时需要政府的设备/产品供应商认真对待产品的安全问题和安全漏洞报告。
影响
利用我发现的漏洞,攻击者可以在十字路口、高速公路等地点引发交通堵塞,也可以使信号灯(根据配置)保持绿灯亮更长或更短时间,保持红灯状态而不转成绿灯(我敢打赌,读者中的很多人一定在非交通高峰时段的深夜骑自行车或开车时经历过这样的情况),或使信号灯闪来闪去。也有可能使电子屏显示错误的限速或指令,并通过引路调节灯使汽车在公路上以更快或更慢的速度行驶。
这些交通问题可能引起实际的现实问题,通过引发交通事故,或阻止救护车、救火车或警车的紧急报警电话,其产生的问题甚至可能是致命的。
我确信可以通过适当的手工测试或二次控制来检测可能存在的异常,以减缓可能存在的攻击,因为些交通控制系统并不只依赖这些满是漏洞的设备。但这不意味着攻击就不可能发生或有多么复杂。存在真实攻击的可能性不应该被忽视,因为发起这种攻击很简单。唯一可能的复杂性源自能产生更大影响的攻击,但复杂不代表不可能。
州/市的交通部分在部署这些包含漏洞的设备时,需要特别注意无明显原因产生的交通异常,并密切关注设备的行为。
“在2012年,约有5,615,000起警方报告的交通事故,其中33,561人死亡,2,362,000人受伤,但只有3,950,000起事故造成了财产损失。”美国国家公路交通安全管理局:交通安全事实。
“美国的道路交通事故每年要造成约$2.306千亿美元,或平均每人$820美元的损失。”国际道路安全旅行协会:美国年度交通事故统计数据。
如果再加上交通控制系统的故障数据,这些数字看起来可能会更糟糕。
原文地址:http://blog.ioactive.com/2014/04/hacking-us-and-uk-australia-france-etc.html
- Leetcode 279. Perfect Squares
- Leetcode 278. First Bad Version
- Leetcode 275. H-Index II
- Leetcode 274. H-Index
- 值得 .NET 开发者了解的15个特性
- Angular和Vue.js 深度对比
- 前端开发者常用的9个JavaScript图表库
- 1000多个项目中的十大JavaScript错误以及如何避免
- SoapUI实践:自动化测试、压力测试、持续集成
- 如何把kotlin+spring boot开发的项目部署在tomcat上
- 使用开源项目Alipay.AopSdk.Core完成支付宝网页登录
- vhost-user 简介
- 把玩爬虫框架Gecco
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 实例说明js脚本语言和php脚本语言的区别
- 在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
- PHP7匿名类的用法示例
- laravel配置Redis多个库的实现方法
- PHP中Static(静态)关键字功能与用法实例分析
- 详解PHP 二维数组排序保持键名不变
- 详解PHP的抽象类和抽象方法以及接口总结
- keras的ImageDataGenerator和flow()的用法说明
- python 识别登录验证码图片功能的实现代码(完整代码)
- Laravel事件监听器用法实例分析
- iOS 性能优化实践:头条抖音如何实现 OOM 崩溃率下降50%+
- PHP join()函数用法与实例讲解
- Laravel框架实现的使用smtp发送邮件功能示例
- 浅谈PHP无限极分类原理
- 浅谈PHP各环境下的伪静态配置