物联网设备层次安全风险

- 物理层(固件提取、硬件攻击)
- 通信层(流量监听、中间人攻击)
-
物联网设备通信模型安全分险

云端安全分险
- 客户端(APP)安全分险
-
IOT设备信息收集
端口扫描
- 流量抓取、分析
- 外部嗅探
- 混杂模式抓包(同局域网)
- 本机热点(可以抓到所有包)
- 交换机端口镜像
- 内部调试
- 外部嗅探
功能点评估
常规端口扫描(TCP)
指定UDP扫描
80:http服务(Web管理页面)
- 554:rtsp服务(视频传输/视频解析)
-
流量抓取
Wireshark
-
物联网渗透技能
渗透测试
- 二进制逆向分析
-
物联网渗透工具
反汇编工具:IDA、Chidra
- 流量分析:Wireshark、Tcpdump、BurpSuite
- 固件分析工具:Binwalk、Qemu
物联网设备漏洞点分析
基于Web安全的漏洞分险
未授权访问
认证绕过
- 敏感路径不需要认证/认证可绕过,如直接访问 view.html、system.html
- Cookie伪造
- 其他的姿势
案例一(D-Link 850L)
案例二(D-Link DCS-2530L)
- 未认证的敏感路径

案例三(Tenda系列前台未授权)
- 后台路径+静态资源名
- /goform/reboot?.gif
- /goform/reboot?.png


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

- 此类漏洞在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
弱密码
- 密码门槛低
- 黑灰产、僵尸网络广泛利用
- Github密码项目
命令注入
开发者未对用户可控的输入参数进行验证或者过滤,导致攻击者可以构造出恶意的Payload,达到执行命令的效果。
案例一
基于固件二进制的漏洞分险
堆、栈溢出
- 拒绝服务
- 整数溢出
- 越界读取
-
研究步骤
栈溢出
程序对用户的可控输入验证不足,导致攻击者可以输入过长的数据到栈缓冲区上,非法覆盖栈上合法数据,造成栈溢出漏洞
案例一(D-Link DIR-815路由器)
HTTP 协议 Cookie字段栈溢出
可以看到cookie_buf的长度限制了50个字节
构造超过50个字节的数据,就可以造成栈溢出
案例二(思科 RV110w 路由器)
- guest_logout.cgi 栈溢出
可以看到判断了用户输入的 submit_button 是否为空,如果不为空,就带入 sscanf 的格式化字符串,在&v30(&v29也可以)处输入过长就会造成栈溢出。溢出长度可以在IDA里面看到
拒绝服务
- 固件代码逻辑验证不足造成指针异常,进而导致程序非正常崩溃,造成设备无法正常访问
- 影响有限,只能造成设备重启或者宕机,达不到获取shell或者执行命令。
案例一
通过getenv获取 HTTP 数据包的 REFERER 头,getenv返回一个指针,然后传入strdup函数,没有做任何验证
- strdup会为传入的指针开辟一个堆空间,然后将指针指向的值复制到堆空间里面
案例二

使用strchr判断url中有没有等号,如果url中去掉等号,就会造成内存非法访问。
后门漏洞
- 服务访问后门(Web、Rtsp、…)
- 调试后门(软件、硬件)
服务访问后门
案例一
案例二
- 某摄像机 9530 端口存在调试后门


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

逻辑漏洞
- 任意文件读取
- 任意密码重置
任意文件读取
- 存在路径穿越,没有过滤
../,/../

符号连接漏洞
访问路径:http://IP/user/wpe_tool_cache即可读取到tmp目录下的所有文件(包括登录帐号和密码)
云端安全分险
物联网设备常见漏洞挖掘方法
- 固件逆向分析之分析输入点
- 固件逆向分析之敏感函数/代码段回溯
-
分析程序输入点
寻找二进制中统一的
cgi输入接口函数- 如:get_evn(“HTTP_HOST”)
- get_cgi(“device”)
- websGetvar(wp,”device_id”)
- 原理都是通过键获取输入到内存中的值,可以抓包找到键,然后在IDA里面匹配
敏感函数/代码段回溯
- 合理借助反汇编工具(IDA/Ghidra)脚本
- 寻找一些关键的敏感函数,如system,回溯传入的参数是否可控
模糊测试(通信协议/固件)
- 端口Fuzz
- Burp Suite
- 协议 Fuzz 工具(boofuzz/peach)
端口Fuzz
- 对私有端口发送大量数据,看反应。
BurpSuite
- 使用爆破模块自定义几个变量,发送数据
协议Fuzz
boofuzz

固件Fuzz
需要使用Qemu等模拟运行






