mmp 不小心x掉了,写了那么多都没了,又要从头写
什么是物联网,我就不说了,除了web安全,其他的关于机器的渗透都算是物联网。
固件又是个啥?运行在硬件上的软件,里面的文件系统提取后是二进制文件,也包含相关代码,如php,asp。
固件分析流程
固件提取
电路板截取数据
烧flash
官网下载
固件分析
概念范围广,可理解挖0day,如路由器rce
文件系统提取
cramfs
jffs2
yaffs2
initrd
Squashfs
ext4
文件系统加载
启动项
sh文件
文件系统分析
配置文件
密钥文件
binwalk 固件提取工具,除了它还有其他的工具,自行百度
自动识别固件,进行自动提取
binwalk -Me xxx.bin
解压后会出现_xxx.bin.extracted目录
进到目录后就是他的文件系统
这种squashfs的目录就直接是文件系统,如果是jffs2, yaffs2 就需要对文件系统进行提取,通常是用unyaffs工具。
然后对文件系统进行信息收集
使用firmwalker进行信息收集
- etc/shadow 和 etc/passwd
- 列出 etc/ssl 目录
- 搜索 SSL 相关文件,例如 .pem、.crt 等。
- 搜索配置文件
- 寻找脚本文件
- 搜索其他 .bin 文件
- 寻找诸如管理员、密码、远程等关键字。
- 搜索物联网设备上使用的常见网络服务器
- 搜索常见的二进制文件,例如 ssh、tftp、dropbear 等。
- 搜索 URL、电子邮件地址和 IP 地址
- 使用 Shodan CLI 调用 Shodan API 的实验性支持
运行脚本即可
emm,真垃圾
我用find都比它找得多
find . -name "*.conf" -o -name "*.sh" -o -name "*.pem"
查找之后呢,就是找二进制文件进行逆向分析,路径大致在usr/sbin/
具体请看这里D-Link DSL-3782 代码注入漏洞分析
挖day,代码审计,只不过通过汇编和伪代码的方式查找,这就很费时间
命令行参数:argv操作,经典的栈溢出
环境变量:getenv()
输入数据文件:read() fscanf() getc() fgetc() fgets() fscanf()
键盘输入/stdin: read, scanf getchar gets
网络数据:read recv recvfrom
字符串复制:strcpy(char *dest,char *src) strncpy
命令执行:system execve
字符串格式化:strcat
格式化字符串:sprintf snprintf
再然后就是固件模拟,因为没有money买真实设备,就需要模拟器进行搭建,三种模拟方式后续的话,我应该会写出来,可自行百度下面三种方式。