物联网设备层次安全风险

image.png

  • 物理层(固件提取、硬件攻击)
  • 通信层(流量监听、中间人攻击)
  • 管理控制层/应用层(Web、Rtsp、SSH)

    物联网设备通信模型安全分险

    image.png

  • 云端安全分险

  • 客户端(APP)安全分险
  • 设备自身安全分险

    IOT设备信息收集

  • 端口扫描

  • 流量抓取、分析
    • 外部嗅探
      • 混杂模式抓包(同局域网)
      • 本机热点(可以抓到所有包)
      • 交换机端口镜像
    • 内部调试
      • image.png
  • 功能点评估

    • 管理页面

      端口扫描

  • 常规端口扫描(TCP)

  • 指定UDP扫描

    • 物联网设备经常存在一些私有协议,TCP很可能会漏掉

      摄像头IP的扫描结果

      image.png
  • 80:http服务(Web管理页面)

  • 554:rtsp服务(视频传输/视频解析)
  • 9898:非固定端口(此处是对摄像头转动进行控制)

    流量抓取

  • Wireshark

  • Tcpdump

    物联网渗透技能

  • 渗透测试

  • 二进制逆向分析
  • 硬件拆焊

    物联网渗透工具

  • 反汇编工具:IDA、Chidra

  • 流量分析:Wireshark、Tcpdump、BurpSuite
  • 固件分析工具:Binwalk、Qemu

    物联网设备漏洞点分析

    image.png

    基于Web安全的漏洞分险

    未授权访问

    认证绕过

  1. 敏感路径不需要认证/认证可绕过,如直接访问 view.html、system.html
  2. Cookie伪造
  3. 其他的姿势

案例一(D-Link 850L)
image.png
案例二(D-Link DCS-2530L)

  • 未认证的敏感路径

image.png
案例三(Tenda系列前台未授权)

  • 后台路径+静态资源名
    • /goform/reboot?.gif
    • /goform/reboot?.png

image.png
image.png
案例四(Rtsp未授权访问)

  • Rtsp(视频实时传输协议)是TCP/IP协议体系中的一个应用层协议,用来控制声音或影像的多媒体串流协议。在智能IPC摄像头中,Rtsp服务经常开放在554端口。

image.png

  • 此类漏洞在IPC摄像头中很常见
    • rtsp://x.x.x.x:554/stream1
    • rtsp://x.x.x.x:554/onvif1
    • rtsp://x.x.x.x:554/channe1=1&stream=0.sdp

image.png

弱密码

  1. 密码门槛低
  2. 黑灰产、僵尸网络广泛利用
  3. Github密码项目

image.png

命令注入

  • 开发者未对用户可控的输入参数进行验证或者过滤,导致攻击者可以构造出恶意的Payload,达到执行命令的效果。

    案例一

    image.png
    image.png

    基于固件二进制的漏洞分险

  • 堆、栈溢出

  • 拒绝服务
  • 整数溢出
  • 越界读取
  • 命令注入

    研究步骤

    固件获取—>固件解包—>逆向分析
    image.png

    栈溢出

  • 程序对用户的可控输入验证不足,导致攻击者可以输入过长的数据到栈缓冲区上,非法覆盖栈上合法数据,造成栈溢出漏洞

    案例一(D-Link DIR-815路由器)

  • HTTP 协议 Cookie字段栈溢出

可以看到cookie_buf的长度限制了50个字节
image.png
构造超过50个字节的数据,就可以造成栈溢出
image.png

案例二(思科 RV110w 路由器)

  • guest_logout.cgi 栈溢出

可以看到判断了用户输入的 submit_button 是否为空,如果不为空,就带入 sscanf 的格式化字符串,在&v30(&v29也可以)处输入过长就会造成栈溢出。溢出长度可以在IDA里面看到
image.png

拒绝服务

  • 固件代码逻辑验证不足造成指针异常,进而导致程序非正常崩溃,造成设备无法正常访问
  • 影响有限,只能造成设备重启或者宕机,达不到获取shell或者执行命令。

    案例一

    通过 getenv 获取 HTTP 数据包的 REFERER 头,getenv返回一个指针,然后传入 strdup 函数,没有做任何验证
  1. strdup会为传入的指针开辟一个堆空间,然后将指针指向的值复制到堆空间里面

image.png
image.png

案例二

image.png
使用strchr判断url中有没有等号,如果url中去掉等号,就会造成内存非法访问。

后门漏洞

  • 服务访问后门(Web、Rtsp、…)
  • 调试后门(软件、硬件)

服务访问后门

案例一
image.png
案例二

  • 某摄像机 9530 端口存在调试后门

image.png
image.png
案例三

  • Zyxel 防火墙设备 ftp 调试后门
  • 这类漏洞可以直接通过string命令查找关键字

image.png

逻辑漏洞

  • 任意文件读取
  • 任意密码重置

任意文件读取

  • 存在路径穿越,没有过滤 ../ , /../

image.png
符号连接漏洞
image.png
访问路径:http://IP/user/wpe_tool_cache即可读取到tmp目录下的所有文件(包括登录帐号和密码)
image.png

云端安全分险

  • 传统Web安全分险(SQL注入、命令注入)
  • 越权访问

    越权访问

    某共享充电器云端获取密码存在越权漏洞

    挺鸡肋的,但确实存在漏洞
    image.png

物联网设备常见漏洞挖掘方法

  • 固件逆向分析之分析输入点
  • 固件逆向分析之敏感函数/代码段回溯
  • 模糊测试(通信协议/固件)

    分析程序输入点

  • 寻找二进制中统一的 cgi 输入接口函数

    • 如:get_evn(“HTTP_HOST”)
    • get_cgi(“device”)
    • websGetvar(wp,”device_id”)
    • 原理都是通过键获取输入到内存中的值,可以抓包找到键,然后在IDA里面匹配

image.png

敏感函数/代码段回溯

  • 合理借助反汇编工具(IDA/Ghidra)脚本
  • 寻找一些关键的敏感函数,如system,回溯传入的参数是否可控

image.png
python脚本
image.png

模糊测试(通信协议/固件)

  • 端口Fuzz
  • Burp Suite
  • 协议 Fuzz 工具(boofuzz/peach)

端口Fuzz

  • 对私有端口发送大量数据,看反应。

image.png

BurpSuite

  • 使用爆破模块自定义几个变量,发送数据

image.png

协议Fuzz

boofuzz

image.png

固件Fuzz

需要使用Qemu等模拟运行