嵌入式设备漏洞挖掘实战

admin 2023年2月1日16:26:34评论29 views字数 987阅读3分17秒阅读模式

最近我挖掘到了一个嵌入式设备的任意固件植入漏洞。这个嵌入式产品包括设备本身和一个PC端软件,设备上有usb口,设备通过usb口接到PC上后可以使用PC端软件进行固件的升级。

既然要进行固件升级,那就需要从某个url下载固件。于是我执行:

strings <PC端软件名> | grep https

果然发现其中包含一个硬编码的url。但是,如果在浏览器中直接访问,会回显错误信息。

将该软件拖到IDA里,open subviews->strings窗口里找到该url,查找对该url字符串的交叉引用,发现需要使用POST请求对该url发送一串参数,才能正常下载指定固件。这串参数包括当前固件版本号和一些设备相关的信息。通过综合使用OD和IDA,我挨个获取了这些参数的值,并编写了一个可以从该url下载固件的python脚本。

固件下载成功后,我用7zip来查看该固件包,结果成功打开了这个固件包,看到了其中的内容,这说明这个固件包没有加密。我可以对它进行修改,然后将改过的固件包写入设备中。还有一个要注意的点就是该固件中的部分文件的文件头是其实际内容的sha256值,所以修改完之后还要小心的用十六进制编辑器将这些文件的sha256值写到它们头部。

现在还需要搞清楚怎么将固件包从PC写入设备。我查看了一下IDA分析出来的函数名称,注意到了其中一个名叫hid_write的函数。这个函数来自一个开源的操作hid设备的库hidapi(https://github.com/signal11/hidapi),作用是对hid设备进行写入操作。那么软件大概率就是调用这个函数将固件写入设备的。在IDA中逐层查看对该函数的交叉引用,最终我得以还原出将固件写入设备的全过程,并编写了一个工具将经过修改后的固件写入设备。

由于我修改了植入固件的shell脚本,所以连上该设备自带的AP后我可以获取该固件的shell,是root权限的。在shell中修改root密码并启动telnetd,则给了我一个稳定的、可以telnet上去的root shell。

这个漏洞我提交了CNVD,拿到了10分(最高等级漏洞),现在厂商已经修复了该漏洞。假如有漏洞的设备被插到了攻击者的电脑上,只需要几分钟(这个时间是植入固件所需的时间),这个设备就会完全被攻击者所控制。

原文始发于微信公众号(Hack All):嵌入式设备漏洞挖掘实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月1日16:26:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   嵌入式设备漏洞挖掘实战https://cn-sec.com/archives/1531738.html

发表评论

匿名网友 填写信息