汽车渗透测试方法之一威胁模型
2017-04-18 19:42
239 查看
汽车渗透测试方法之一威胁模型
前言
如果你之前是从事软件领域的渗透测试,你已经很熟悉攻击面。至于其他,攻击面关系到与攻击目标相关的所有可能途径,从独立组件到那些影响整个车辆的漏洞。当我们讨论攻击面的时候,我们关注的不是怎么样去利用一个目标,而是仅仅关注入口点。你可能想起攻击面像一个物体的表面,两个物体可能有相同的体积,但是面积却不相同。面积越大,暴露的风险越高。如果考虑一个对象的体积值,我们强化安全的目标是创造低风险的价值比率。
0x01发现攻击面
一辆汽车的攻击面,想想如果自己是一个邪恶的间谍,尝试对一辆车做点坏事。为了发现汽车的安全漏洞,需要评估一辆车的边界和记录车辆的工作环境。务必要考虑数据进入到车内的所有方式,重点关注汽车与外界通信的方式。当检车汽车外部的时候,问我们自己这些问题:
什么信号被接收?无线电?遥控钥匙?距离传感器?
有物理控制按键吗?
有接触或运动传感器吗?
如果汽车是电动的,它是怎么充电的?
当检查汽车内部的时候,考虑下面的问题:
音频输入的方式是什么?CD?USB?蓝牙?
有诊断端口吗?
仪表盘的功能是什么?有GPS吗?蓝牙?移动网络?
就像我们看到的,有很多的方式数据能进入到车辆内部。如果这些数据中有任何一个是有缺陷的或者恶意的,将会发生什么?
0x02威胁模型
当建立汽车的威胁模型的时候,收集目标结构的信息,画一个图表来说明汽车各部分是怎么通信的。然后使用图表识别高风险的输入和拥有一份可以审计的清单,这样能帮助我们按优先级排序好入口点,这样我们会获得做大的回报。威胁模型一般是在产品开发和设计阶段就应该创建。公司生产一个特别的产品应该有一个好的生命周期,在产品开发之前创建一个威胁模型,随着产品穿过整个生命周期持续更新威胁模型。威胁模型是一个活的文档,随着目标的改变而改变。随着你对目标了解的越多,你应该经常更新你的威胁模型。
威胁模型由不同的等级组成,如果模型中的某个流程超复杂,我们应该进一步分解它,在图表中增加更多的等级。刚开始的时候,等级2是我们最远能达到的。
等级0-----俯瞰
在这个等级,我们使用之前攻击面的检查列表。考虑数据怎么样进入一辆汽车,在中心画一辆车,然后标注外部和内部。图2.1是一个可能的等级0框图。
等级1------接收端
到了等级1的图表,选择一个探索的进程。因为在我们的图标中仅仅只有一个进程,所以我们挖掘汽车更多的进程和关注每一个输入的是什么。
等级1的图和等级0几乎差不多,唯一的区别是,我们详细描述了车辆的连接关系。
图2.2 汽车数据传输连接关系图
等级2-----接收端分解
等级2,我们检查在车内发生了那些通信。我们的样本图表关注了一个基于Linux的娱乐信息平台(IVI),这是个比较复杂的接收端,并且连接到车内的网络。我们用虚线框分组了通信通道,这也代表一个可信边界。现在有一个新的可信边界出现在娱乐信息终端的内部---内核空间。系统直接和内核层会话的风险高于系统和系统应用层的会话,因为这样会绕过娱乐信息单元的访问控制机制。因此,蜂窝通信通道风险高于WIFI信道,因为它交叉可信边界到了内核层。WIFI信道,换句话说,是带着WPA用户空间的客户端。
这是一个基于Linux的车载娱乐信息系统,使用了部分Linux的通用组件。在内核空间,你能看到内核模块设备、HIS、Kvaser/SocketCAN,它们接收输入从我们的威胁模型。Udev安装了USB设备,HIS是一个串行通信处理蜂窝通信模块。Kvaser/SocketCAN是汽车网络驱动。
当建立或者设计汽车系统,我们应该尽可能的钻研一些复杂的进程,引入开发团队,开始讨论方法和每一个应用程序使用的库,我们应该把这些增加到我们的框图里。我们发现了应用层的可信边界是:应用程序和内核之间、应用程序和库之间、应用程序和其他应用程序之间,甚至功能之间。当我们发现这些关系后,标记那些较高权限的或者处理敏感信息的。
0x03威胁识别
我们已经完成两级深入到我们的威胁模型图表,现在我们开始识别潜在的威胁。通常,威胁识别一组人在一起处理会更有趣。让我们开始实践,从等级0—初看—考虑潜在高等级输入和接收问题,还有威胁边界。现在我们列表我们威胁模型中所有潜在威胁。
等级0
在等级0探索潜在的威胁的时候,我们最好定位在高等级的风险。一些威胁看起来不切实际,因为你知道增加了障碍或者是保护,但是是重要的,因为它包含了列表中可能的威胁,甚至有些已经被解决了的。这个时候需要集体讨论每一个进程和输入的风险。
在等级0高风险威胁可能是:
远程接管汽车
停止汽车
监视车辆所有者
解锁汽车
偷窃汽车
跟踪汽车
干扰安全系统
在车内安装恶意软件
首先,是很困难巧遇到这些攻击场景,眼下哪些人是最适合的呢?工程师或者参与者。因为他们要么是开发者,要么是工程师。
尝试去联想詹姆士.邦德,你能想象到的坏人攻击。或许考虑其他的攻击场景是否能应用到车里。例如,勒索软件,能加密的恶意软件,给你电脑或智能电话上锁,想想这些是否能用到车上?答案是可以的。
等级1
在等级1的威胁识别关注每块之间的连接。我们假设这个等级的漏洞是与连接到车内设备有关的。
我们可以威胁分组涉及到蜂窝通信、WIFI、无线钥匙、胎压监测传感器、娱乐信息控制台、USB、蓝牙和CAN总线。看看下面的清单,我们就有很多潜在的方式进入到车内。
蜂窝网络
黑客可以利用车内的蜂窝网络做如下的事情:
从任何地方访问车内网络
利用娱乐信息系统的应用控制电话呼入
访问用户身份信息,通过娱乐信息系统。
使用蜂窝网络连接远程诊断系统
窃听蜂窝通信
阻断求救电话
跟踪车辆运动状态
建立一个GSM伪基站
WI-FI
攻击者可以利用WIFI做到下面的事情:
至少300能从300米以外访问车内网络。
在娱乐信息设备中安装恶意代码。
破解WIFI密码
建立一个伪造的代理访问点欺骗汽车
通过WIFI网络,拦截通信。
追踪汽车
遥控钥匙
攻击者可以利用遥控钥匙:
发送一个畸形的信号让汽车的防盗系统进入到一个未知的状态。
频繁的欢心汽车防盗系统,从而耗尽汽车蓄电池的电源
捕获防盗系统在握手期间泄露的加密信息
暴力破解遥控钥匙的加密算法
复制遥控钥匙
堵塞遥控钥匙信号
耗尽遥控钥匙的电源
胎压监控传感器
攻击者可利用胎压检测传感器:
发送一个不可能的条件到引擎控制单元,引起一个可被利用的故障
欺骗ECU进入过矫正状态,提供虚假的路况信息。
让胎压监测传感器/ECU进入到一个未知的状态,导致司机把车停靠在路边去检测故障,或者甚至停止汽车。
用汽车的胎压监控系统的唯一身份标识符欺骗汽车
伪造胎压监控系统的信号,是汽车发出报警信号。
娱乐信息控制平台
攻击者可以利用娱乐信息控制平台:
让控制台进入调试模式
改变诊断设置
发现一个输入的缺陷,引起非预期的结果
安装恶意软件
利用恶意的应用程序访问车内CAN总线网络
利用恶意的应用程序窃取车辆拥有者的信息
利用恶意应用程序伪造数据显示,例如,车辆位置信息
l USB
攻击者可以用一个USB端口:
在娱乐信息单元中安装恶意软件
利用娱乐信息单元中USB协议栈中的缺陷
在娱乐信息设备中插入一个恶意的USB设备,目的在于获取设备的输入信息。
安装一个篡改的更新软件
短路USB端口,因此,破坏娱乐信息系统
l 蓝牙
攻击者可以使用蓝牙:
在车机中执行代码
利用蓝牙协议栈的缺陷
上传畸形的信息,目的在于执行代码
近距离访问汽车
阻止蓝牙设备
l CAN
攻击这里用CAN总线:
安装一个恶意的诊断设备在CAN总线中发送数据包
不用钥匙,直接插入CAN总线尝试启动汽车
直接插入到CAN总线上传恶意软件
安装恶意的诊断设备追踪车辆
安装恶意的诊断设备远程通信CAN总线
等级2—接收器
当我们准确的知道哪一个应用处理哪一个连接的时候,依据可能的威胁我们开始验证。
分解威胁为5组:蓝牙,WPA应用,HIS(高速同步接口),DEV(设备管理器),Kvaser驱动。
l 蓝牙
蓝牙程序的老的版本或者未打补丁的版本:
有可利用的漏洞
或许不能处理腐败的地址簿
或许不能配置适当的加密方式
或许不能配置处理安全握手
或许使用默认的密钥
l WPA客户端
老版本可能可以利用
或许没有执行特有的WPA2类型的无线加密
可能连接到恶意的访问点
通过,BSSID泄露驱动程序的信息
l HIS
老版本的有可利用
中间人攻击
l Udev
老版本,未打补丁的容易攻击。
没有维护设备白名单,允许攻击者写入另外的驱动。
允许攻击者装载外部的设备,例如,键盘访问娱乐信息系统。
l Kvaser/SockitCAN驱动
较老的,没有打补丁的版本有可利用的漏洞
可能允许一个攻击者上传恶意固件到Kvaser设备
这些潜在威胁清单是不详尽的,但它们给我们一个想法,如何去集体讨论。如果你想继续深入你的汽车到等级3的示意图,你可以选择一个进程,像HIS,开始查找它的内核源码识别敏感的方法和相关性,可能被攻击的漏洞。
相关文章推荐
- 灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第3版)
- 灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第3版)
- 谈渗透测试方法和流程
- 避开客户端控件的渗透测试方法
- Kali Linux渗透测试方法
- 模型驱动测试用例设计方法
- 渗透测试入门方法
- 浅谈渗透测试方法及流程
- 渗透测试方法与流程
- 汽车车机测试方法说--简单、直接
- 灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第3版)
- 谈渗透测试方法和流程
- 渗透测试方法及流程(转)
- 谈渗透测试方法和流程
- 移动应用安全测试:工具与威胁模型相结合
- 渗透测试实践指南:必知必会的工具与方法
- 谈渗透测试方法和流程 渗透那些事
- [转]谈渗透测试方法和流程
- 【转】渗透测试环境搭建常用命令方法checklist(iOS&&Android)
- Tensorflow Syntaxnet模型安装测试方法