从移动应用逆向获取汽车总线命令

姓名:胡娟

学号:20021110092

转载自:https://mp.weixin.qq.com/s/didptKY4CeQmEfC84kMfsA

【嵌牛导读】

在现代汽车中,CAN 总线命令对于诊断、安全监控和自动驾驶等广泛应用是必要的。但是,只有一小部分 CAN 总线命令是标准化的,其他绝大多数是由汽车制造商私下开发的。目前揭示专有 CAN 总线命令最有效的方法就是使用真实汽车进行逆向工程,不幸的是,这是耗时且成本高昂的。本文提出了一个经济高效的(不需要真正的汽车)和自动(无需人工干预)系统,CAN-HUNTER,用于使用汽车配套移动应用程序对 CAN 总线命令进行逆向工程。

【嵌牛鼻子】

移动应用,汽车总线

【嵌牛正文】

背景简介

对于现代汽车,大约有数百个电子控制单元(ECU)负责控制各种子系统,如转向、加速、制动、车门和车窗。为了协调这些复杂的组件,CAN 总线设计用于连接 ECU 并确保整个系统正常工作。网络内所有组件都可以理解的消息会来回发送,以便进行通信,称为 CAN 总线消息。这些消息是用特定的标准化结构形成的,如图1所示。CAN 总线命令的语义通常可分为两类:(1) 控制,它操作车辆的物理部件,如解锁车门和启动发动机;(2) 诊断,用于查询车辆的数据(如速度和温度)。对于每个语义含义,都有一个对 CAN 总线命令的一对一映射。例如,对于丰田普锐斯,CAN总线命令标识符"0x750"是指主体,"0x7C4"用于空调。


图一:CAN总线消息结构

如今,汽车制造商和第三方开发人员已经生产了大量移动应用程序,以与车载系统(如车载信息娱乐 (IVI))连接,并提供方便的基于应用的车辆控制或诊断。有趣的是,为了实现与现有车载系统的兼容性,这些应用从根本上仍然依赖于 CAN 总线命令来与车辆接合。也就是说,这些应用必须包含直接或间接生成 CAN 总线命令的逻辑(通过加密狗或云服务器中的转换或中继)为每个受支持的车辆生成 CAN 总线命令。因此,这种新形成的汽车移动应用生态系统可以为 CAN 总线命令的逆向工程创造新的方向。这也是本篇论文的切入方向,通过逆向这些app来达到获取CAN总线命令的目的。


图二:CAN总线间接控制的几种方式

系统设计

从整体上来看,CANHUNTER分为三个部分:反向切片(backward slicing),语法恢复(syntactics recovery)和语义恢复(semantics recovery)。它首先将移动应用程序的二进制代码作为输入,对其进行反汇编和反编译,并通过对反编译后的代码进行反向切片来生成执行路径。然后,它使用动态强制执行(dynamic forced execution),以感兴趣的执行路径运行应用程序,从中可以发现CAN总线命令的语法和语义。


图三:CANHUNTER总体设计图

A.Backward Slicing(方向切片)

并非移动应用程序中的所有代码都有助于CAN总线命令的生成,因此我们使用反向切片来确定我们感兴趣的代码路径,从而可以高效地执行分析。反向切片需要从一些底层接口开始。为了识别这些入口点,我们发现CAN总线命令通常是通过具有固定底层网络API的无线网络(例如蓝牙和Wi-Fi)从应用程序发送到车辆的。因此,我们的反向切片算法首先会识别这些接口,并初始化一组目标变量,这些目标变量携带要发送的数据。然后,它向后迭代反编译后的程序语句,并根据目标变量及其闭包的生成方式生成执行路径。


图四:算法描述

B. Syntactics Recovery(语法恢复)

语法的恢复是为了推断CAN总线命令的具体值,这是通过强制执行执行路径中涉及的指令来实现的。由于指令独立于外部输入,因此可以直接执行。具体来说,执行从树的叶节点开始,最后在根节点结束。在代表特定块的每个节点内,该算法根据它们在切片中出现的顺序执行每个指令。强制执行在运行汽车伴侣应用程序的真实移动设备上动态执行。网络发送API的每次调用都会通过我们的动态强制执行生成CAN总线命令。我们记录该命令,并保留其值作为其语法。

C. Semantics Recovery(语意分析)

在通过强制执行对CAN总线命令进行语法恢复的过程中,CANHUNTER还会推断其语义以及车辆模型信息(如果可用)。我们根据观察经验来设计一种语义恢复算法:CAN总线命令的语义通常在应用程序代码中显示为常量字符串,而OBD-II加密狗或车辆内部的CAN都不会识别或使用这些字符串。开发人员将这些人类可以理解的语义集成到汽车配套应用程序中的原因是为了帮助用户将CAN总线命令与相关功能相关联。因此,我们的语义恢复算法使用以下两种启发式:(i)UI组件相关性和(ii)函数自变量关联,以推断CAN总线命令的语义。

实验结果

在我们测试的236个应用程序中,CANHUNTER总共从107个中发现了182619个CAN总线命令。其中,使用语义恢复了157,296条命令(占86.1%)。尽管并非所有命令都使用语义来恢复,但我们要强调的是,与依靠手工或模糊处理来构造CAN总线命令的现有方法相比,CANHUNTER提供的自动语法恢复已经很有用,因为它可以加速逆向工程过程在实车测试中。注意,CANHUNTER还发现了称为OBD PIDs的标准化CAN总线命令,该命令用于诊断目的,并且在诊断应用程序中无处不在。由于这些命令的文档记录清楚,并具有保留标识符的独特功能,我们能够将它们与非标准的CAN总线命令区分开。总体而言,这些经过记录的OBD PIDs约占我们结果的15%,而其余85%是自定义的CAN总线命令。


图五:CARHUNTER分析结果,每列左边为安卓,右边为IOS


图六:其他app分析结果

为了评估CANHUNTER的有效性,我们需要验证从实验中恢复的CAN总线命令的正确性。但是,执行全面的正确性验证非常困难,原因有两个。首先,几乎不可能仅用实车来验证所有这些命令,因为它既效率低又成本高。其次,汽车制造商和第三方开发人员将CAN总线命令视为机密信息,几乎无从获得。尽管如此,在本文中,我们还是尝试从三个方面评估有效性:公共资源,交叉验证和真实汽车测试。这使我们能够成功验证130,011(71.2%)的命令语法以及128,298 (70.3%) 命令语意。


图七:使用公共资源进行验证的部分结果

论文出处:

Haohuang Wen, Qingchuan Zhao, Qi Alfred Chen, Zhiqiang Lin: Automated Cross-Platform Reverse Engineering of CAN Bus Commands From Mobile Apps. 27th Annual Network and Distributed System Security Symposium, NDSS 2020

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容