binwalk用于固件解包获取文件系统。常用解包命令为:
firmwalker用于查看文件系统中的敏感信息。扫描命令为:
由上面的信息可知:
查看启动项中是否存在后门服务,如telnet服务。嵌入式Linux常用启动项文件位于:etc/rc.d文件夹中。
启动项中未见异常行为,httpd文件在firmwalker扫描的敏感信息和启动项中都有涉,因此需要用IDA分析一下该文件。
由file信息可知用IDA32分析,根据firmwalker扫出的敏感信息可知httpd文件中含passwd、password、root、admin、upgrade等字符串。
通过IDA中字符串搜索发现疑似后门的敏感字符。
通过查看该字符串的引用发现如下代码:
根据伪代码可知其的功能是:判断命令是否为exit,若不是则验证用户名和密码,验证的用户名:osteam 密码:5up。
通过write(pty,cmd,strlen(cmd))来模拟执行命令。(知识扩充:伪终端(pseudo terminal也称为 pty)是指伪终端 master 和伪终端 slave 这一对字符设备。其中的 slave 对应 /dev/pts/ 目录下的一个文件,而 master 则在内存中标识为一个文件描述符(fd)。伪终端由终端模拟器提供,终端模拟器是一个运行在用户态的应用程序。)
通过查看引用找到了DebugResultRpmHtm函数的调用位置。根据此处的伪代码可推断出函数httpRpmConfAdd的功能是绑定URL和执行的函数。由函数名httpDebugInit可推断出这是一个调试后门。
使用FirmAE来对固件进行模拟以验证上述内容。
FirmAE是一款完全自动化的固件模拟和漏洞分析的工具,其固件模拟成功率与Firmadyne工具相比大大提升,且与Qemu相比仅一条命令就可实现固件模拟,简单方便。FirmAE的工作模式分为5种:
使用FirmAE模拟固件命令如下:
通过浏览器访问URL:http://192.168.1.1 出现上图信息,说明模拟成功。开始运行固件模拟并验证后门漏洞。
固件开始运行,此时访问URL要求输入账号密码。
根据提示输入默认的账号密码admin。并访问URL:http://192.168.1.1/userRpmNatDebugRpm26525557/linux_cmdline.html 出现以下界面:
尝试直接输入命令执行:
根据返回结果可知是需要输入账号密码的。输入固件分析时找到的用户名:osteam和密码:5up并执行命令。
由上可知命令被执行并返回。并且在右侧还预设了一些命令,点击按钮即可执行,这个后门很优雅。
熟悉工具的使用和有一些分析常识很重要,通过信息收集到的敏感信息可以快速定位漏洞可能出现的位置并针对性分析,是一个由粗到细的过程。这是复现的第一个路由器漏洞,希望自己能坚持下去,用心复现,仔细记录。“靡不有初,鲜克有终!”
binwalk -Me wr740nv1_en_3_12_4_up.bin
binwalk -Me wr740nv1_en_3_12_4_up.bin
.
/firmwalker
.sh
'/home/iot/Desktop/WR740/_wr740nv1_en_3_12_4_up.bin.extracted/squashfs-root'
.
/firmwalker
.sh
'/home/iot/Desktop/WR740/_wr740nv1_en_3_12_4_up.bin.extracted/squashfs-root'
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)