加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 安全 > 正文

浅析IOT二进制静态辅助技巧

发布时间:2022-07-30 15:29:08 所属栏目:安全 来源:互联网
导读:一、预备知识 1.1 污点分析 污点分析是一种跟踪并分析污点信息在程序中流动的技术。在漏洞分析中,使用污点分析技术将所感兴趣的数据(通常来自程序的外部输入)标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,可以知道它们是否会影响某些关键的
  一、预备知识
  1.1 污点分析
  污点分析是一种跟踪并分析污点信息在程序中流动的技术。在漏洞分析中,使用污点分析技术将所感兴趣的数据(通常来自程序的外部输入)标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,可以知道它们是否会影响某些关键的程序操作,进而挖掘程序漏洞。即将程序是否存在某种漏洞的问题转化为污点信息是否会被 Sink 点上的操作所使用的问题。
 
  1.3 环境准备
  本文选用某厂商路由器的upnpd二进制文作为实例,笔者在很久以前的一篇文章中对upnpd(CVE-2020-9373)挖掘利用作过分析,之后不同型号相继爆出类似问题。
 
  固件结构
  在上述文章中笔者对结构作过分析,这里不赘述,结构如下图:
 
 
 
  解包之分接单,直接通过binwalk提取,CPU架构为ARMv5,文件系统是Squashfs。
 
  复制
  DECIMAL       HEXADECIMAL     DESCRIPTION
  --------------------------------------------------------------------------------
  58            0x3A            TRX firmware header, little endian, image size: 32653312 bytes, CRC32: 0x5CEAB739, flags: 0x0, version: 1, header size: 28 bytes, loader offset: 0x1C, linux kernel offset: 0x21AB50, rootfs offset: 0x0
   1.
  2.
  3.
  4.
  5.
  漏洞简介
  漏洞成因是upnpd服务中解析 SSDP 协议数据包的代码存在缺陷,导致未经授权的远程攻击者可以发送特制的数据包使得栈溢出,进一步实现RCE。
 
  漏洞原理很简单, strcpy()拷贝导致的缓冲区溢出,在 sub_1D020()中使用 recvfrom()从接受最大长度 0x1fff的 UDP 报文数据。
 
 
 
  在 ​sub_25E04()​中调用 strcpy()​将以上数据拷贝到大小为 0x634 - 0x58 = 0x5dc​的 buffer。
 
  下文工具测试结果中就要重点关注sub_25E04调用strcpy()是否出现。
 
  1.4 工具简介
  BinAbsInspector
 
  BinAbsInspector是Keenlab开发的用于自动化逆向工程和扫描二进制文件漏洞的静态分析器,其基于 Ghidra 的 Pcode 而不是汇编,目前支持 x86、x64、armv7 和 aarch64 上的二进制文件。
 
 
  到目前为止 BinAbsInspector 支持以下漏洞检测:
 
  CWE78(OS Command Injection)
  CWE119(Buffer Overflow (generic case))
  CWE125(Buffer Overflow (Out-of-bounds Read))
  CWE134(Use of Externally-Controlled Format string)
  CWE190(Integer overflow or wraparound)
  CWE367(Time-of-check Time-of-use (TOCTOU))
  CWE415(Double free)
 
  SaTC是上海交大研究人员提出的IoT漏洞自动化挖掘方法,相应的学术论文已在 USENIX Security 2021【2】发表。
 
  与BinAbsInspector通用性不同,SaTC则是专注IOT漏洞挖掘。现有嵌入式系统中的许多漏洞都位于web服务中,寻找这些漏洞的关键是如何定位后端程序中用于处理与用户输入数据相关的代码,而Web前端文件(html、js、xml等)中存在的一些关键字符串通常与后端二进制文件之间共享,也就是说承载用户输入数据的某个参数名称在前端文件与后端文件中都会存在。基于此,SaTC将解压后的固件目录作为输入,然后全程自动完成提取关键字符串、定位后端程序中关键字符串的引用位置、以引用点为起始位置进行污点分析,最终输出了所有可能存在漏洞的指令位置,同时还给出了从输入点到漏洞指令位置的函数调用链条。
 
 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读