随着5G时代的到来,物联网扮演的角色也越来越重要,同时也伴随更多的安全风险。IOT安全涉及内容广泛,本系列文章将从技术层面谈一谈笔者对IOT漏洞研究的理解。笔者将从固件、web、硬件、IOT协议、移动应用五个维度分别探讨,由于水平能力有限,不当或遗漏之处欢迎大家指正补充。IoT固件基础之所以将固件作为第一个探讨的主题,因为比较基础,IOT漏洞研究一般无法绕过。以下将介绍固件解密(若加密)、解包打包、模拟和从固件整体上作安全评估四部分。
除了固件指示头没有可见字符,(除去header)数据按比特展开01频率基本一致如果满足上述特点,就会猜测固件已被加密,固件解密一般会从这几个角度,但也不局限于下面的方法。
binwalk(-e)无法解析固件结构,且(-A)没有识别出任何cpu架构指令
UBI_reader解包,UBI文件必须是1024bytes的整数倍,需要增删内容对其比如通过分析某路由器,发现其rootfs是UBI格式:
分析固件头部的初始化代码,找到vxworks启动的第一个函数usrInit跳然后根据binwalk指示的位置,修复符号表名。
根据BSS区初始化特征找到BSS边界,根据偏移计算固件加载地址
(一) 只需模拟某个应用,比如web、upnpd、dnsmasq等,目的是对该应用作调试。此时可以直接用模拟工具运行该程序,只需考虑动态库是否能加载。下面介绍几个常用的模拟工具。
(二) 需要模拟固件shell,与整个系统有所交互。这里可以通过chroot改变根路径,并利用模拟工具执行/bin/sh。同时可以挂在/proc,这样在ps查看进程时看上去更加真实。
(三) 需要模拟整个固件启动,并且网卡等也能正常使用。这里要利用可模拟img系统的工具直接加载整个系统,也可以利用“套娃”大法,先模拟该架构的debian.img,再用chroot起设备的roofs。
对(IOT)程序作模糊测试关于Unicorn模拟执行修改代码逻辑的教程比较多,这里不再赘述,下面介绍一款基于Unicorn的IDA pro插件,该插件可以在IDA pro中模拟执行,并给出执行结果,UnicornFuzz相关内容会在后面的篇章中介绍。
用于gdb插件,或代码模拟执行的插桩,修改代码逻辑
模拟执行一些复杂混淆代码,提高人工逆向效率
http://cloud.tencent.com/developer/article/1005700[attach]54783[/attach]
http://5alt.me/2017/08/某智能设备固件解密/
http://blog.nsfocus.net/hmi-firmware-decryption-0522/
http://www.ershicimi.com/p/8e818120ac6352368837ef614dd496e4
http://gorgias.me/2019/12/27/固件提取系列-UBI文件系统提取以及重打包/
http://paper.seebug.org/771/
http://paper.seebug.org/1090/
http://blog.csdn.net/yalecaltech/article/details/104113779
欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/) | Powered by Discuz! X3.2 |