tag 标签: 车联网安全

相关帖子
相关博文
  • 热度 7
    2023-2-9 11:42
    985 次阅读|
    0 个评论
    注1:本文为湖南底网安全团队原创文章(官网:www.bttmsec.com,聚焦车联网安全、物联网安全、工控安全),转发请注明出处 注2:该文已同步在今日头条"湖南底网安全"主页发布(原"电子技术论"主页),链接如下:https://www.toutiao.com/article/7197968863081284133/‍ 前言 固件分析和固件检测的技术“深”不可测,其范畴包括但不限于CPU架构类型、指令集、应用程序、文件系统、操作系统、驱动、内核、boot、die晶圆、集成晶体管电路等等,越往底层越深不可测,其“段位”也越高,“固件分析”和“固件检测”如何差异化理解对于客户需求理解、甲方固件安全类产品设计、乙方固件安全类产品应用理念同样非常重要。 固件检测 重点指检测平台采用“模板”式方式对固件“特定”内容进行自动化、高效率匹配检测,如元信息提取、指定文件分析、开源或已知组件漏洞关联检测等功能,其特点是“呆板式”、高自动化、高效率检测,换而言之,平台“模板”以外、固件“特定”内容以外的固件无法检测,当然没有绝对的固件“检测”,很多厂商提供的固件检测产品定会附带部分固件分析功能,侧重点不同而已。 固件分析: 行业内人士最先想到的是IDAPro,这只是固件分析的有力工具之一,最重要的是有“目的”的会用活用这类工具。 重点指平台具备对固件所有内容或部分内容进行反汇编逆向解析的能力,平台逆向解析的能力包括且不限于:函数调用关系图(非函数对应关系图)、反汇编指令及对应地址的解析呈现、内存数据及对应地址的解析呈现、指令的拓展解析(伪代码、寄存器映射、指令功能注释等)、指令/RAM的内存分布解析、动静态模拟逆向仿真等能力,特点是强调平台反汇编逆向解析能力、人工分析的结果。不少国际顶尖安全团队时不时爆出某某设备或系统的固件高危漏洞或隐患,不仅仅单独依托固件自动化检测平台检测出来,而主要是靠人工分析、摸索、测试、挖掘、验证出来。 关键点 固件检测、固件分析的结果能否真正打动客户、撬动客户内心尤其是引起客户高层重视甚至震撼业界,是争取客户、打动客户并赢得口碑的关键。这需要团队各方面的努力,固件分析服务前期、中期、末期各阶段都不容忽视,也就说所谓的“全生命周期、闭环理念”。 固件分析工作如何开展? 1.首先要能够通过各种途径获取到分析对象--固件,固件提取/固件截获监听/uboot内存导出、root权限下载、厂商索要等都是可以尝试的方式。 2.明确或尝试明确固件对应设备/应用功能特点、通信接口、业务功能、技术参数等信息,初步总结出固件分析的最终达到目的。避开设备/应用信息不谈的固件分析是“不负责任”或“情不得已”的固件分析。 3.确定固件对应处理器的内核种类、指令集,明确该固件是应用处理器的固件还是微控制器的固件,因为这是两个固件分析/检测的方向,这一步相对容易。 4.熟悉固件对应芯片型号,深入分析芯片datasheet,想办法确定其内存分布空间、代码运行机制、代码加载/运行地址等细节,这一步较难、很抽象,需要有较深的相关技术背景和基础学科沉淀。 5.固件逆向分析,这一步是最难、最核心一步,对技术基础学科、技术功底、技术面、心理素质、逻辑思维等方面要求极高,尤其对硬件底层综合技术和固件编程正反向技术开发能力兼备的要求极高(这里涉及的技术点太多太广,不展开论述),这也是最容易失败、遭遇挫折的一步,分析的方法没有固定也不会固定,主要靠个人或团队经验,不同的设备,采取的固件分析方法、思路都不同。千变万化、变幻莫测。 6.“固件分析”相关的工作开展,除了讲究技术策略、技术功底外,还有什么很重要? 答曰:发散思维,最忌讳墨守成规,鼓励“自主创新”、“天马行空”、“头脑风暴”式的探索、挖掘、验证,其实这和IOT设备渗透测试、模糊测试的思维类似,这句话表面看似好理解,真正能融会贯通、深入理解运用到实际工作中却很难,包括我们安全团队自己也需要不断学习摸索。另外需持续不断学习“新”的技术知识,还要不断巩固夯实“旧”的技术基础。 7.“固件分析”与“固件攻击”两者您能联想到什么? 两者应紧密结合起来考虑,“固件攻击”是“固件分析”的升华版,以攻促防是“固件攻击”的核心出发点,也是我们安全团队的职业道德准则,只做固件分析,不考虑固件攻击,会有点“亏”,因为具备了固件分析的能力,固件攻击也近在咫尺,固件分析是服务,固件攻击是固件分析的“反”面教材,直接演示效果,很有“观赏性”、“警示性”,是最能直接拨动客户高层内心“琴弦”的”说客“,也是树立口碑、品牌推广最有效、花费成本最低的捷径之一。 关联技术不可忽略 国内或国际顶级固件分析、硬件底层、网络底层安全研究团队,我们坚信他们用到的技术绝非单一、孤成一体,而是灵活多变、有的放矢、借助其它外部关联技术、工具相辅相成、环环相扣、循序渐进的开展,包括且不限于KPI密钥管理体系、嵌入式正向开发编程、ARM硬件体系架构、汇编指令、证书文件编码格式、加解密算法特征掌握、动态协议分析验证、标准和非标准安全/非安全协议(TLS、telnet、ssh、UDS、私有CA认证协议等)熟悉、TCP/IP、CAN、UART、I2C、SPI、USB等各常用总线协议的理论知识和实践应用甚至具备开发级能力……太多太多(这是个漫长的过程,需要个人及团队不断沉淀积累,非一朝一夕之功)。 我们在分析固件时,其对应的设备种类、功能千变万化,没有上述关联技术支撑,很难有重大突破,当然即便有关联技术支撑,固件分析整个过程也很艰辛,尤其是越来越多的芯片厂商逐渐重视固件的防护,矛和盾之间的彼此竞争赛跑,谁落后就得“挨打”。 这里着重强调下TCP/IP底层网络攻击,所谓底层网络攻击,主要是相对于上层应用来区分的,典型的上层TCP/IP网络攻击包括且不限于:HTTPS截获篡改攻击、SQL注入、跨站脚本攻击(XSS)、DNS欺骗、钓鱼网站诱导等等都是TCP/IP应用层攻击,那么TCP/IP底层协议攻击包括哪些?又如何理解这些攻击背后的防护理念和技术竞争力? 答曰:包括且不限于DHCP攻击、ARP欺骗、DOS攻击、TCP半连接攻击、SYN洪流攻击、IP欺骗、IP报文攻击(如TTL值篡改)、路由表攻击、MAC欺骗、ICMP协议攻击(重定向、IPtrace嗅探)等等,运用上述攻击方法理论知识并同时具备TCP/IP驱动层编程能力(类似LINUX或WIN系统内核级TCP/IP编程),就可实现针对任意普通局域网内(相比军事网络、特定安全防御网络而言)任何上网设备,如台式机PC、笔记本电脑、手机、工控机、其它IOT智能联网设备,均可远程无接触、无需授权即可篡改这些设备的IP配置信息,如IP地址、DNS、网关等关键配置,并可获取该网络里所有或指定设备里各应用程序与外网通讯的所有TCP/IP数据流(具体可详见湖南底网安全官网另一篇文章:模拟黑客攻击视频),当然,也可进一步配合架设外部DNS欺骗服务器,实现典型的DNS欺骗攻击、网页欺骗攻击等。 结束语 上述内容均聚焦于固件分析、硬件底层、网络底层安全分析、攻防及检测三大块,这三大块是系统最脆弱、最易被攻击的地方,虽然现在很多安全公司宣称有很多安全防护技术,如沙箱隔离防护技术、零信任认证体系等,但这些都是基于上层的防御,对于硬件底层攻击毫无抵抗之力。固件分析、硬件底层、网络底层这三大块每一块都是个重要领域、一门专业,很多公司甚至是设专人专岗,独成一体甚至独成一团队,但三者又是相辅相成,你离不开我,我离不开你,我们坚信,顶级的硬件底层安全研究团队,分工明确,看问题、看需求、做事情能大胆创新、融会贯通、灵活有效运用不同技术方法、技术策略、技术验证等手段达成目标。
  • 热度 8
    2023-2-8 12:05
    690 次阅读|
    0 个评论
    注1:本文为“湖南底网安全信息技术有限公司”安全团队原创文章(官网:www.bttmsec.com,聚焦车联网安全/物联网安全/工控安全),转发请注明出处 注2:该文已同步在今日头条"湖南底网安全"主页发布(原"电子技术论"主页),链接如下:https://www.toutiao.com/article/6789945669256741387/?log_from=a59c9ca98c949_1675651265539 前言 固件分析,一种深入硬件底层(芯片级)的技术破解方法,经常被用于系统攻防对抗、硬件破解、逆向分析等实际工作中,相对其它技术破解攻击方法,科学有效的固件分析因其扒开了破解攻击对象的“外衣”,直接深入“骨髓”对其逻辑代码、数据存储、数据类别、数据属性等全方面分析,可找出其它攻击方法无法找出的严重漏洞,可对破解攻击对象形成“致命级杀伤力”。 固件分析,由“固件”和“分析”2个词组成,看似简单的4个字,要想有效充分发挥出其“杀伤力”,其背后人员需要庞大的技术体系支撑,这些技术体系并非孤立自成一体,而是环环相扣、相辅相成;每项技术体系、每个技术点都力求达到熟练甚至精通的标准。除此之外,还需要有超强的心理素质,在未知二进制“数据海洋”里“黑盒”探索,需要耐心、细心、信心,同时还要面对固件分析里的高失败率,因为很多时候即便你能获取到固件,由于固件本身的防护(如加壳、私有指令集、差分固件包)或固件分析实力不够等因素仍然无法找出有效漏洞,你可能会不知所措、迷茫无助甚至焦虑不安,你得到的仅仅是固件文件、一堆冰冷的二进制数据而已,除此之外毫无其他用处,这时还得及时调整心态和思路继续“战斗”,以上内容通俗的讲就是对固件分析技术人员要求很广的技术面、很深的技术点、很强的心里素质。 固件分析技术浅谈 上面已提到过,固件分析由“固件”+“分析”两部分组成,不了解固件,何谈分析?“固件分析”--固件之所以在前面想必原因也在此。考虑到篇幅原因,这里对固件只做概要说明,不深究。 什么是固件? 什么是固件(firmware)?怎么理解固件?不同的人有不同的回答,但每种回答都会反映出回答者理解固件分析的思维层次。 固件是什么?固件是软件的一种,也是一种程序。 固件是什么?固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序(百度百科)。 固件是什么?固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件(百度百科)。 以上回答都没错,我个人的回答是:固件是存储在可由CPU直接或间接读取指令/数据并可运行的FLASH/ROM芯片里的二进制数据集合,这些指令/数据集合是根据CPU内核架构及型号,将高级编程语言(如C、C++等)由对应的编译器、链接器、装载器生成并通过对应的烧写器将指令/数据集合烧写到对应设备里的存储芯片中。固件之所以和软件程序区分开来,是为了强调固件侧重于智能设备、嵌入式设备、工控设备里运行的程序,而非PC电脑、服务器、手机内部的程序(只是侧重并非绝对,很多场合手机里的程序也被称为固件)。 固件的位置是存储在设备的FLASH/ROM芯片里,但展现在固件分析人员面前是提取出来后以文件的形式呈现。固件文件的格式并非固定不变,因厂家、设备不同而不同,目前常见的固件文件格式有:hex、bin、elf、axf、txt、ulmage等,对于固件分析人员,熟悉这些固件文件的内部编码规则、数据块定义等细节尤为重要,否则拿到固件你也不认识它,更无从分析它。 固件的由来--编译、链接、装载 对于固件,不仅知其然,知其所以然也很重要,虽说不同的固件,格式、编码不同,但其 由来大体相同,都是由高级编程语言经编译、链接、装载生成而成,编译、链接、装载这3步6个字至关重要,是有效提升固件分析成功率的重点、难点,对固件文 件的形成机制、固件文件内部函数构造、内部指令/RAM/数据分配机制、固件启动运行机制等核心概念的深入理解非常有益。然而也只有深入理解了这些固件相关知识,才能充分发挥固件分析的破解攻击价值。 固件运行机制 applet。这里仅作简要说明,实际固件分析过程中,最好是对每一步里每个函数、每行代码的功能都做到了如指掌,这样才能充分发挥固件分析的破解攻击价值。 固件分析其它必要技术 固件分析,离不开电路/器件分析,因此需要具备必要的数电、模电知识;典型固件分析里,牵涉到固件提取、IO控制查询、数字接口驱动、中断唤醒、工作模式切换、外围器件的驱动等方面,这些都离不开电路/器件分析。 固件分析,需要熟悉常用数据通信规约/协议簇(如TCP/IP协议簇、CAN总线),在你分析有关数据通信功能部分的固件时,熟练掌握各类常用数据通信协议和底层对应接口,会让你在固件分析时如虎添翼,得心应手。 固件分析,需要熟悉主流CPU/MCU处理器内部体系架构、内部各硬件模块工作原理(DMA、虚拟内存管理、中断处理、工作模式管理、外围模块等)、内部存储及运行机制等,还有熟悉/能看懂并理解主流CPU/MCU汇编语言(寄存器级别操作)也很重要,在分析固件时,对每个函数的初始化、数据处理、代码跳转、函数执行等方面会让你临危不乱、思路清晰。 固件分析,熟悉相关加解密算法及安全通信、认证机制架构/原理,会让你少走很多弯路,知道如何权衡利弊得失,避开暗坑,提升固件分析效率。 固件分析,学会使用对自己有用的相关工具(包括但不限于:IDAPro、binwalk等)会让你事半功倍,这些工具会快速提升你的工作效率,让你进入状态,花更多的时间精力在固件分析上,而不是在固件分析的准备路上。 固件分析,熟悉主流嵌入式操作系统工作原理及内核工作原理(如linux、android等)也至关重要,然而这个也是最难的,因为要深入了解操作系统内核的具体工作流程、任务调度机制、数据存储分配细节、权限管理、进程隔离保护/运行机制等非常难,非一朝一夕能学成,需要时间、需要毅力、更需要智商,但是一旦掌握了这些知识,在分析类似的固件时,则很容易找出漏洞,而且是高危漏洞。当然一旦达到此级别,个人认为已是大牛级别、黑客级别了。 编后语 随着信息安全的普及,固件分析不仅受到黑客爱好者们的青睐,厂家设计者也越来也重视固件的防护,这无疑会加大固件分析的难度和降低固件分析的成功率,也正是因为这矛与盾的竞争关系,促使着网络技术的不断进步,就看随的步伐块,步伐慢的人注定会有被攻击破解的风险。