静态分析
- 拿到固件
- binwalk 解包(解密)
- firmwalker 查找关键信息(信息泄露)
- web 目录下确定开发语言和特征
- etc、etc_ro 目录下查找 sdk 的特征(ralink)
动态仿真/模拟
- 单个程序尝试模拟(httpd、goahead),打 patch
- 若模拟失败,进行 firmadyne 的模拟,尝试访问路由器的 ip(用 fat.py 改过的脚本)
- 进入 qemu-system 模式,进行单个程序的模拟(可以一开始就做这步)
漏洞挖掘
- 访问路由器界面,查找可控点,挂着 burp 让他抓链接,所以接口都访问一遍
- burp active 扫描
- 收集url,对参数进行 fuzz(命令执行、栈溢出,准备自己实现一个根据接口自动对 get、post 参数进行自动 fuzz 的脚本),可以 gdbserver 挂着,定位、收集报错信息
在 target 处批量选择 url,右键导入... - 目录扫描(cgi-bin、和未授权),用fuzzlists/vuln..discover字典扫描
- 使用插件测试未授权(待优化)
- 单个接口测试
- 端口渗透
fuzzing
- unifuzzer 单个文件fuzz?
- afl-unicorn?跑不起来?
- radamsa 生成样例,自己写 payload 脚本,将生成的 payload 喂给程序
fuzz 类型
- 长度 fuzz
- 类型fuzz(int <--> str)
https://www.ics-cert.org.cn/portal/page/133/cf6ae40284a9445098bc4876eaa701b1.html
TODO
- 理解fuzz原理,看源码
- afl-unicorn
- youtube视频
- 插件开发
- 寻找针对于 IOT 更好的漏洞挖掘方法