注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/数据分配机制、固件启动运行机制等核心概念的深入理解非常有益。然而也只有深入理解了这些固件相关知识,才能充分发挥固件分析的破解攻击价值。

固件运行机制

熟悉了什么是固件、固件的由来之后,在此,需要熟悉固件的运行机制。不同种类的设备,其内部固件运行的细节都不一样,但其运行机制大体类似,一般比较常见的运行机制是:上电boot->uboot->cos->applet,针对不带操作系统的运行机制一般是:上电-> boot-> applet或上电-> applet。这里仅作简要说明,实际固件分析过程中,最好是对每一步里每个函数、每行代码的功能都做到了如指掌,这样才能充分发挥固件分析的破解攻击价值。

固件分析其它必要技术

固件分析,离不开电路/器件分析,因此需要具备必要的数电、模电知识;典型固件分析里,牵涉到固件提取、IO控制查询、数字接口驱动、中断唤醒、工作模式切换、外围器件的驱动等方面,这些都离不开电路/器件分析。

固件分析,需要熟悉常用数据通信规约/协议簇(如TCP/IP协议簇、CAN总线),在你分析有关数据通信功能部分的固件时,熟练掌握各类常用数据通信协议和底层对应接口,会让你在固件分析时如虎添翼,得心应手。

固件分析,需要熟悉主流CPU/MCU处理器内部体系架构、内部各硬件模块工作原理(DMA、虚拟内存管理、中断处理、工作模式管理、外围模块等)、内部存储及运行机制等,还有熟悉/能看懂并理解主流CPU/MCU汇编语言(寄存器级别操作)也很重要,在分析固件时,对每个函数的初始化、数据处理、代码跳转、函数执行等方面会让你临危不乱、思路清晰。

固件分析,熟悉相关加解密算法及安全通信、认证机制架构/原理,会让你少走很多弯路,知道如何权衡利弊得失,避开暗坑,提升固件分析效率。

固件分析,学会使用对自己有用的相关工具(包括但不限于:IDAPro、binwalk等)会让你事半功倍,这些工具会快速提升你的工作效率,让你进入状态,花更多的时间精力在固件分析上,而不是在固件分析的准备路上。

固件分析,熟悉主流嵌入式操作系统工作原理及内核工作原理(如linux、android等)也至关重要,然而这个也是最难的,因为要深入了解操作系统内核的具体工作流程、任务调度机制、数据存储分配细节、权限管理、进程隔离保护/运行机制等非常难,非一朝一夕能学成,需要时间、需要毅力、更需要智商,但是一旦掌握了这些知识,在分析类似的固件时,则很容易找出漏洞,而且是高危漏洞。当然一旦达到此级别,个人认为已是大牛级别、黑客级别了。

编后语

随着信息安全的普及,固件分析不仅受到黑客爱好者们的青睐,厂家设计者也越来也重视固件的防护,这无疑会加大固件分析的难度和降低固件分析的成功率,也正是因为这矛与盾的竞争关系,促使着网络技术的不断进步,就看随的步伐块,步伐慢的人注定会有被攻击破解的风险。

硬件黑客破解之固件分析相关推荐

  1. XPwn黑客破解秀,16位网红见证黑掉小米

    作为国内黑客大会的始祖 XCon,今年已经是第15届,与往届不同的是,本届XCon首次插入了黑客破解秀XPwn,并邀请了16位网络主播网红妹子对破解秀进行直播,让XPwn不仅台上精彩不断,台下也十分惊 ...

  2. 黑客破解网络密码的十个方法

    破解网络密码-暴力穷举   密码破解技术中最基本的就是暴力破解,也叫密码穷举.如果黑客事先知道了账户号码,如邮件帐号.QQ用户帐号.网上银行账号等,而用户的密码又设置的十分简单,比如用简单的数字组合, ...

  3. 微软体感设备Kinect上市三天即遭黑客破解

    微软体感设备Kinect上市三天即遭黑客破解 上周,一家名为Adafruit Industries的美国公司悬赏2000美元,号召个人或团队开发开源Kinect驱动,以便能将这一技术应用到Xbox 3 ...

  4. 路由器逆向分析------路由器固件分析和动态调试环境搭建简述

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70140865 01.路由器固件分析和动态调试环境搭建简述的原文 <Emula ...

  5. 网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂

    网易云加密--Android安卓移动应用程序加密加壳保护方案防破解防逆向分析防游戏外挂 一.服务简介 网易云加密为网易公司旗下产品,致力于为移动应用程序提供专业保护方案,让加固变得更简单,一键搞定.目 ...

  6. 固件分析工具Binwalk

    固件分析工具Binwalk 固件是保存在嵌入式设备存储器的程序.它负责设备运行和功能,如路由器等设备.通过分析固件文件,可以了解设备的工作方式,并且确认是否存在漏洞.Binwalk是Kali Linu ...

  7. 九州PTV8508优盘破解免固件刷入第三方app教程

    九州PTV8508优盘破解免固件刷入第三方app教程 与我现在工作的技术没啥关系,因为是自己亲自经历过的感觉挺不错的教程,就留下来吧 第一步:需要电视盒子,电脑,u盘 准备工作:下载ADB组件地址(h ...

  8. 咸鱼硬件—ZTMS开发板固件安装

    咸鱼硬件-ZTMS开发板固件安装 学习编程语言最好的方法就是对其产生兴趣.所以我弄了一个板子. ZTMS是一款使用Python作为脚本语言的开源硬件开发板,它基于STM32F405单片机,通过USB接 ...

  9. NVT | NVT SDK 67X固件分析工具使用

    NVT 67X固件分析工具使用 1.工具下载 https://download.csdn.net/download/I_feige/79813201 2.解压工具到ubuntu下 3.使用 查看版本信 ...

最新文章

  1. PO、VO、FormBean的思考
  2. jquery动态生成SKU表格
  3. snort3安装教程
  4. 【Linux】一步一步学Linux——gzip命令(63)
  5. C# 截取图片的方法
  6. java对excel经行读写
  7. linux查看jar包内容命令,【达内Java教程】用linux查看jar包内文件命令
  8. php和mysql防伪网站源码,2015年最新php+mysql防伪查询程序源码微信认证查询含7套模板...
  9. 第2章_Java基本语法(下):程序流程控制
  10. phpstudy配置SSL证书的步骤(Apache环境)以及一些注意事项
  11. 兄弟9150cdn换硒鼓清零抹粉_兄弟9150cdn换硒鼓清零抹粉_兄弟打印机粉盒硒鼓怎么清零?这里有详细的步骤......
  12. 【数字信号处理课程设计】基于MATLAB实现语音信号的采集与处理(偏重滤波)
  13. g729编解码的总结
  14. 中文停用词库,不用C币直接复制
  15. cocos2dx 植物大战僵尸 5 塔基Terrain的更新
  16. nokogiri 足球比赛数据
  17. Hadoop安装配置(转自虾皮工作室)
  18. 【leetcode刷题】 64.数组的度——Java版
  19. 拍拍抢拍精灵 --腾讯拍拍秒杀器--截图
  20. 如何理解三维向量叉乘

热门文章

  1. APM飞控学习之路:2 四旋翼的工作原理与系统组成
  2. 物联网开发笔记(94)- 使用Micropython开发ESP32开发板之获取天气数据并用ILI9341屏幕显示
  3. 数据库之decode函数的用法
  4. 用这4个方法撰写文案,获得客户信任
  5. 什么是明星店铺品牌词?拼多多明星店铺品牌推广注意什么?
  6. Flask一个页面多个form提交的问题及解决方法
  7. Python全栈工程师要掌握的五种知识
  8. apollo原理简介
  9. RMB一千五百圆西藏行攻略
  10. Ubuntu16.04 64位 + GTX1070显卡驱动 + CUDA 8.0