D-Link路由器后门固件逆向分析及漏洞利用

转载,详见原文:http://www.atomsec.org/%E5%AE%89%E5%85%A8/d-link%E8%B7%AF%E7%94%B1%E5%99%A8%E5%90%8E%E9%97%A8%E5%9B%BA%E4%BB%B6%E9%80%86%E5%90%91%E5%88%86%E6%9E%90%E5%8F%8A%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/

1、下载D-Link DIR-100固件

下载链接:ftp://ftp.dlink.eu/Products/dir/dir-100/driver_software/DIR-100_fw_reva_113_ALL_en_20110915.zip

2、使用binwalk -e解包

查看解压后的文件,发现squashfs-root文件夹下内容为空,并且存在另一个squashfs文件


说明:squashfs-root文件夹下内容为空的问题是由于sasquatch安装的有问题导致的,可以通过重新安装sasquatch解决,参考:https://www.jianshu.com/p/29c99274ff85,具体如下:

<meta charset="utf-8">

百度了一下,在这篇文章中找到答案binwalk WARNING: Extractor.execute failed to run external extractor 'sasquatch -p 1 -le -d '%%squash
需要安装sasquatch:
安装地址位于:
https://github.com/devttys0/sasquatch
安装步骤

  1. 打开命令行(或到如下github上手动下载安装)
    git clone https://github.com/devttys0/sasquatch
  2. 安装依赖环境
$ sudo apt-get install build-essential liblzma-dev liblzo2-dev zlib1g-dev

  1. cd 到clone下来的文件下安装sasquatch
$ ./build.sh

之后,再进行binwalk解压,终于成功。

image

作者:飞熊先生
链接:https://www.jianshu.com/p/29c99274ff85
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


解压出来的文件主要有两类,可以查看文件夹下内容来具体区分查看

  • 路由器二进制可执行文件,通常在bin sbin 文件夹下

  • 路由器web端文件,通常在htdocs web webs www文件夹下

3、静态分析,将bin/webs二进制程序载入idapro中

在strings window中找到一个有趣的字符 thttpd-alphanetworks/2.23

这是一个嵌入式设备常用的小型http服务器,特点是其中的函数都是以alpha_开头

4、在functions window窗口中找alpha_开头的函数,发现一个疑似登录认证的函数 alpha_auth_check

5、分析此函数,找到几个比较有趣的地方

  • 存在strstr字符串子串函数,比较的 graphic/、public/ 是路由器的子文件
  • 存在一个硬编码,疑似后门
  • 存在strcmp字符比较函数
  • 存在check_logined登录验证函数

6、根据上下文分析代码,存在如下逻辑:

  • 0xB8($S0)字符中是否有 graphic/、 public/ 子串
  • 0xD0($S0)字符跟硬编码字符串进行strcmp比较
  • 0xC(S0)与0xE0(S0)代码进行check_logined操作 很可能是用户名和密码或是cookie,session等

7、仔细观察check_logined登录验证图 可以看到明显的登录绕过可能性 —-> 当strcmp字符串比较匹配时

初步结论: 此硬编码很可能就是预留的路由器后门

8、哪一个参数跟此字符串比较?

函数交叉调用关系

  • httpd_parse_request
  • alpha_httpd_parse_request
  • alpha_upload
  • alpha_auth_check

根据$S0偏移量0xD0进行字符查找

根据函数调用关系和字符查找,发现可能的赋值代码处

9、双击进入定位到偏移代码处

根据跳转关系向上查找到调用处

传入的参数是 User-Agent?

目前还不确定,分析到此有个初步结论

结论:

访问站点时设置 User-Agent: xmlset_roodkcableoj28840ybtide 就可以绕过登录验证过程

PS:

后门字符串倒置 edit by 04882joel backdoor _teslmx 更加怀疑是后门

10、对漏洞进行验证

使用shodan查找使用此后门漏洞缺陷的D-Link路由器,例如型号 DI-524UP

找到一个站点** http://93.184.71.88:8080**

访问此站点,使用Burpsuite抓包修改User-Agent的值

会有个重定向到Home/h_wizard.htm页面,记得此处还需要修改 User-Agent值

forward值之后,就可以查看到 /Home/h_wizard.htm的页面了

成功绕过了登录认证过程

探索路由器后台功能,例如查看有哪些设备连接了此路由器,可以直接查看DHCP

至此,我们证明了D-Link路由器存在的后门漏洞以及如何进行利用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。