知道创宇 乔小松 IoT安全攻防实践

CodeWarrior

2019/07/08 发布于 编程 分类

GIAC2019 

文字内容
1. IoT安全攻防实践 乔小松 404实验室 安全研究员
3. Who am i • fenix / Security Researcher • Knownsec 404 Team • IoT / 二进制 / radio • https://0x43434343.com
4. 内容 • 常见 IoT 设备及全球暴露情况 • 硬件攻防 • 软件攻防 • 协议攻防
5. 常见 IoT 设备
6. 常见 IoT 设备
7. 网络通信
8. 全球公网暴露情况(2019)
9. 硬件攻防
10. 某 路 由 器 拆 机
11. 某摄像头 拆机
12. 一般 IoT 设备都留有调试接口,如 uart、jtag、usb 等。 sudo minicom -D /dev/ttyUSB0
13. 启动完成后通常会提供 shell: 1. 无需认证,可直接获取 root shell; 2. 需要认证,用户名:admin/root,密码:弱密码/网上泄露; 3. 需要认证,非弱密码;
14. 根据提示,可进入 bootloader。以 u-boot 为例:
15. u-boot 负责加载内核,同时给内核传递参数。
16. 通过 setenv 修改u-boot传递给 kernel 的参数: console=${consoledev},${baudrate} noinitrd mem=${mem} rw ${rootfstype} init=/bin/sh 未经初始化进入系统后,可破解或者擦除 /etc/shadow 中的密码。
17. 其他:在 u-boot 中直接读写 flash 芯片, 提取目标固件。
18. 其他:在 u-boot 中进行固件替换。
19. 使用编程器读取 flash 芯片提取固件:
21. 逆向分析、漏洞挖掘、exp 开发
22. 模拟调试环境:https://people.debian.org/~aurel32/qemu/ #!/bin/bash sudo tunctl -t tap0 -u `whoami` sudo ifconfig tap0 192.168.2.1/24 qemu-system-arm -M versatilepb -kernel vmlinuz-3.2.0-4versatile -initrd initrd.img-3.2.0-4-versatile -hda debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -net nic -net tap,ifname=tap0,script=no,downscript=no -nographic
23. 如何应对? • 去掉 / 隐藏 uart 等硬件调试接口 • bootloader 添加密码保护 • 固件混淆 / 加密 • 设置强系统密码
24. 软件攻防(web server) 一个软件产生,必不可少的会有其脆弱的一面。
25. 第一大问题:各种形式的登陆绕过
26. 默认密码、弱密码、凭证泄露
27. 认证逻辑问题(goahead 系列漏洞之一)
28. 认证逻辑问题(国外某知名 nas) 国外 --cookie "isAdmin=1;username=admin"
29. 危害 • 修改 dns,流量劫持 • 功能滥用,打开 telnet、ssh 等 • 为需要认证的命令执行漏洞等其他漏洞解除限制
30. 引申攻击面:未授权登陆目标系统后,滥用固件升级功能。
31. 以 cisco rv110 为例,从登陆绕过到远程命令执行(视频演示)
32. 命令注入( OKIRU/SATORI )
33. 命令注入:
34. 命令注入拓展及防范: • 配合 csrf、ssrf 打内网 • 过滤 ` $() && ; 等字符,务必要全,防止逃逸。 • busybox 裁剪, 去掉 nc、wget、curl、telnet 等命令,参数过滤 > 重定向,尽可能阻止攻击者利用命令注入漏洞写入恶意程序执行 • 其他语言,如 php,尽量避免使用 exec(), passthru(), popen(), shell_exec(), system() 等命令执行函数。使用 escapeshellcmd 对 命令进行过滤。
35. 内存异常类漏洞 R7 = strstr(httpstr, ‘Content-Length’) R6 = strchr(R7, ‘\n’) R1 = strchr(R7, ‘:’) + 1 R2 = R6 – R1 strncpy(dest, R1, R2) dest = -0x38
36. (视频演示)
37. 防范 • 去除符号表,提高逆向难度 • ASLR、canary,提高漏洞利用难度 • 规范编码,谨慎使用 sprintf、strcpy、strcat、system 等危险函数
38. 协议攻防
40. 通用措施 • 固件加密,提升程序漏洞分析门槛。 • 快速修补,自动升级,缩短漏洞的生命周期。 • 提高安全编码意识,提升代码质量。 • 操作系统补丁。
41. Q&A
42. 关注msup微信公众账号 关注高可用架构公众账号 获取更多技术实践干货 改变互联网的构建方式