mmp 不小心x掉了,写了那么多都没了,又要从头写
什么是物联网,我就不说了,除了web安全,其他的关于机器的渗透都算是物联网。
固件又是个啥?运行在硬件上的软件,里面的文件系统提取后是二进制文件,也包含相关代码,如php,asp。
固件分析流程
固件提取电路板截取数据烧flash官网下载固件分析概念范围广,可理解挖0day,如路由器rce文件系统提取cramfsjffs2yaffs2initrdSquashfsext4文件系统加载启动项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买真实设备,就需要模拟器进行搭建,三种模拟方式后续的话,我应该会写出来,可自行百度下面三种方式。