executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
re-fw-rootfs固件文件系统分析:rootfs、配置、密钥、启动脚本。 触发词:rootfs、文件系统分析、squashfs、cramfs、配置文件
Independent GitHub snapshot · Automated classification · Original documentation governs
所有工具先验证再使用。本技能纯静态分析可免沙箱([[re-analyze/platform-tips]] 最高原则);解出的程序要运行时转 [[re-fw-emulate]]。
unblob --version / binwalk --versionapt install p7zip-full / dnf install p7zip-plugins / pacman -S 7zipbrew install p7zipchoco install 7zip(或 7-zip.org 官方安装包)7z i | head -5(显示版本)apt install squashfs-tools / dnf install squashfs-tools / pacman -S squashfs-toolsbrew install squashfsunsquashfs -versionapt install cramfsprogs(Debian/Ubuntu);其他发行版无官方包 → 用 unblob 解 cramfs 兜底cramfsck -Vapt install ripgrep / dnf install ripgrep / pacman -S ripgrep(grep 随发行版自带)brew install ripgrepchoco install ripgrep(或 WSL)rg --version / grep --versionapt install binutils-arm-linux-gnueabi binutils-arm-linux-gnueabihf binutils-mipsel-linux-gnu binutils-mips-linux-gnu(Debian/Ubuntu;Fedora: dnf install binutils-arm-linux-gnu binutils-mips-linux-gnu)brew install binutils(greadelf)或 brew install llvm(llvm-readelf)arm-linux-gnueabi-readelf --version;本机 readelf 也能读交叉 ELF 头(readelf -h),属性级信息用交叉版 readelf -A按顺序执行,每步记下结果。
挂载/解包文件系统:
# squashfs(最常见)
unsquashfs rootfs.squashfs -d rootfs_out
# cpio initramfs
mkdir rootfs_out && cd rootfs_out && cpio -idmv < ../initramfs.cpio
# 通用兜底
7z x rootfs.img
# cramfs(Debian 系)
cramfsck -x rootfs_out rootfs.cramfs
# ext 类镜像(需 root,只读挂载)
mkdir mnt && mount -o loop,ro rootfs.img mnt
已用 [[re-fw-extract]] 解出则直接进入下一步,跳过此步。
启动脚本找程序入口:
ls etc/init.d/ etc/rc.d/ 2>/dev/null
cat etc/inittab 2>/dev/null
cat etc/init.d/rcS 2>/dev/null # 常见主启动脚本
阅读启动顺序:记录先启的服务与固件主程序(httpd / 服务端主进程),分析从它开始;rcS / rc 脚本里常有版本、厂商信息与调试开关。
配置文件挖密钥/口令:
rg -i "password|passwd|secret|token|key|login|admin" rootfs_out -l
cat etc/passwd etc/shadow 2>/dev/null
重点目录:/etc、/usr/share、web 界面目录(固件 web 配置常明文存口令)、wpa_supplicant.conf、SSH 私钥(find rootfs_out \( -name "*id_rsa*" -o -name "*.pem" \))。
交叉编译二进制定位:
find rootfs_out -type f -exec file {} \; 2>/dev/null | grep ELF
# 大镜像改用:
find rootfs_out -type f -print0 | xargs -0 file | grep ELF
arm-linux-gnueabi-readelf -h rootfs_out/usr/sbin/httpd # Machine + Data 字段确认架构/字节序
arm-linux-gnueabi-readelf -A rootfs_out/usr/sbin/httpd # 交叉工具链细节(EABI 等)
重点目录:/bin、/usr/bin、/usr/sbin、/usr/lib;busybox 是软链集合(ls -la bin/ 看链接目标确认 applet)。
弱口令/后门账号搜索:
cat etc/passwd
rg -i "admin|root|debug|backdoor|telnet" rootfs_out/etc -l
常见:root 空口令/弱口令、telnetd 常驻、默认 admin/admin、调试账号(debug/backdoor);发现后门与可疑程序转 [[re-malware]] 评估。
rg 扫全部配置目录与 web 目录,别只看 /etc(步骤 3)readelf -A 确认架构与 EABI(步骤 4),确认后再选仿真/反编译工具file 全部指向同一 ELF;原因——busybox 单二进制多 applet;对策——看软链名即 applet 功能(ls/cat/httpd 等),分析该单一 ELF 即覆盖全部命令