我们直奔主题!现在,查看你的路由器品牌及型号信息,然后去对应厂商的官方网站下载你路由器对应的固件。下载完成之后,把固件文件丢到binwalk里,这样我们就可以在QEMU中模拟路由固件了。此时,你将会看到如下图所示的画面:

发生了什么?

一般来说,每一个非binwalk友好的固件都要用不同的方法来进行分析,因此我们无法给大家提供一个针对所有类型加密固件的通用手把手教程。不过,我们将在这篇文章中给大家演示几种常见的固件分析场景,并提供一个处理这类加密固件的一般性指南。除此之外,沃恩还将提供一个解密D-Link DIR-882固件的示例。

加密固件的三种情形

解密固件最简单的方法就是在固件中寻找解密程序。那我们该怎么做呢?如果路由器可以解密新固件并进行更新,那么解密程序就肯定位于就固件镜像中的某个地方。如果你遇到的是加密固件,那你就可以访问厂商官网并寻找这个固件的旧版本,然后下载所有的旧版本固件并开始分析。

下面给出的是三种常见的固件发布场景。

场景1

设备固件在出场时未加密,也未包含任何解密程序。解密程序与较新版本(v1.1)中未加密版本的固件一起提供,以便将来进行加密固件更新。此后发布的固件为加密固件。

此时,我们可以从固件v1.1处获取解密程序,然后用它来解密最新版本的固件v1.2。

场景2

设备固件在原始版本中加密,厂商决定更改加密方案并发布一个未加密的转换版本v1.2,其中包含了新的解密程序。

跟场景1类似,我们可以从v1.2映像获取解密程序,并将其应用到最新的加密固件中。阅读固件版本的发布公告可以帮助我们识别未加密的转换版本。发布公告通常会指示用户在升级到最新版本之前先升级到中间版本,而中间版本很可能就是未加密的转换版本固件。

场景3

设备固件在原始版本中加密。但是,厂商决定更改加密方案,并发布包含新版解密程序的未加密转换版本。

此时,获取解密程序会比较困难。一种方法是购买设备并直接从设备硬件中提取未加密的固件,另一种方法就是对固件进行更深层次的分析,希望能够“破解加密”。

场景4

通过使用十六进制编辑器来查看固件内容,我们可以迅速且直观地了解我们正在处理的对象。使用二进制或十六进制模式查看固件源码,你看到了0xFF或0×00字节的数据域吗?文件代码有特定的模式吗?它们是由随机十六进制字节组成的同质块吗?如果有的话,很有可能固件源码已经被带有静态密钥的简单异或域取代了。你可以看看,是否有一个十六进制字节比其他字节出现得更加频繁呢?

场景5:压缩、加密还是混淆处理?

熵可以帮助我们更好地分析固件,固件中有一部分具有高熵,表明这些地方经过了加密处理。一段低熵字节代表的是低随机性、结构化和可预测性。当与其他分析相结合时,它可以帮助我们确定固件是经过压缩得、加密得还是混淆处理得。在这个分析阶段,binwalk的大量选项可能会提供帮助。

理论与实践

接下来,我们将刚学到的知识应用到加密的D-Link DIR-882固件镜像中:

我们可以从厂商的FTP服务器找到这款路由器的所有旧版本固件。使用binwalk对最早期版本的固件v1.00B07进行测试,它将正确检测到uImage头以及LZMA压缩数据:

这表明,我们现在处于场景1中。浏览了固件镜像的所有可用版本之后,我们发现固件的v1.04B02版本就是转换版本,它包含在v1.10B02固件包中。除此之外,我们还可以计算镜像的熵来快速确定哪个镜像已进行了加密处理。

接下来,使用binwalk从v1.04B02固件中提取文件系统:

提取成功之后,我们就可以开始分析固件的更新过程了,并确定解密固件的方法。幸运的是,快速浏览文件系统后,我们在/bin目录中找到了一个貌似有戏的代码文件“imgdecrypt”。

我们遇到了一个小问题,即主机设备和代码文件之间的处理器架构存在差异。幸运的是,我们可以使用QEMU执行跨架构chroot。首先,我们需要将qemu-mipsel-static代码拷贝到固件root文件系统中的/usr/bin/目录,然后将加密固件拷贝到未加密固件的文件系统中。最后,使用chroot进入到固件root,然后获取到可用的shell。

我们可以看到,binwalk成功检测到了解密固件中的不同区域。

总结

以上就是处理加密固件的一般方法。值得一提的是,厂商有时会对多个路由器使用相同的加密方案,而且imgdecrypt这个文件还可以用来解密DIR-878和DIR-867的固件。因此,我们在找到一个解密程序或解密方案时,可以用它来试试同一产品线中具有相同处理器体系结构的其他路由器产品。

分析和解密已加密的路由器固件相关推荐

  1. md5加密后怎么解密_手机怎么解密已加密的PDF?不会还有人不知道这招吧?

    出门在外的时候,突然想到还要帮领导清除PDF的密码,但又没有随身携带电脑,但这时候我们要庆幸手上还有部手机,因为手机也可以解决清除PDF密码的问题.我们只需要下载PDF快转APP,并叫领导发PDF密码 ...

  2. 路由器逆向分析------路由器固件分析和动态调试环境搭建简述

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70140865 01.路由器固件分析和动态调试环境搭建简述的原文 <Emula ...

  3. Windows系统EFS加密解密原理分析/无密码解密思路

    EFS加密是windows系统自带的加密方式,一个系统用户对文件加密后,只有以该用户的身份登陆才能读取该文件.EFS加密的文件和文件夹名字颜色是绿色,或者在该文件或文件夹的高级属性是加密属性.这样做在 ...

  4. 抓包分析,一条Linux命令实现路由器自动登录深大校园网认证(Drcom Pt版)

    先说结论,通过抓包分析简化最后可以得出,其登录过程只是一个简单的向服务器发送HTTP GET请求或HTTP POST请求.只要在路由器启动之后自动发送一段 HTTP 请求,即可实现自动登录. 对于 G ...

  5. wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应

    Https理论 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为 ...

  6. 路由器固件下的小试牛刀,与漏洞相关的经验分享

    本篇文章以路由器固件相关漏洞来演示,从0到1分享经验. 本地虚拟机搭建ubuntu 16.04 ubuntu iso下载地址:http://mirrors.aliyun.com/ubuntu-rele ...

  7. 逆向路由器固件之敏感信息泄露 Part2

    之前的文章中详细介绍了各种解包路由器固件的工具.解包之后就获得了固件中的文件.下一步就是分析文件寻找漏洞了.这次分析的目标是Trendnet路由器,分析的漏洞是一个远程获取路由器权限的漏洞. 初步分析 ...

  8. 国密SM4,layui前端 和.net core后台 加密解密 .net加密解密

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.本文做用?? 二.SM4介绍 三.使用步骤 1.前台实现加密 2.后台实现解密 四 总结 前言 第一次分享,我是个 ...

  9. python rsa加密解密_RSA加密解密(python版)

    RSA的算法涉及三个参数,n.e.d. 其中,n是两个大质数p.q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度. e1和d是一对相关的值,e可以任意取,但要求e与(p-1)*(q-1)互质: ...

最新文章

  1. EasyUi – 4.datagrid
  2. 第二十二讲 延迟定理(补充)
  3. ⑧javaWeb之在例子中学习(过滤器Filter)
  4. JQ插件 jquery mobiscroll
  5. 小米手机Linux Deploy安装Ubuntu
  6. webserver 交互方式说明
  7. 链表 java详解_链表详解——Java版
  8. SpringMVC系列(十四)Spring MVC的运行流程
  9. 延时加载 lazyload使用技巧
  10. Python -day 7
  11. Javascript基础知识笔记二
  12. 50本财富书籍进行收藏
  13. 申论高分作者心得分享——站在政府的角度写申论
  14. 手把手教你处理单张百度热力图
  15. 如何在公众号添加网站链接
  16. 【Redis】五种存储类型及其底层数据结构
  17. python 服从正态分布下概率密度函数
  18. 黑群辉DSM 6.2.3 系统安装
  19. 蚂蚁金服胡喜:自主研发不是用来捏在手里,是用来开放的
  20. 简单的数据结构与算法(一)

热门文章

  1. 设计模式 — 创建型模式 — 原型模式
  2. Kubernetes — Kubespray 开箱即用的部署工具
  3. OpenStack 系列文章
  4. GD32的flash读、擦除、写操作
  5. XSZD00982 流向屏闭
  6. Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity
  7. 把jpg转换成pdf软件
  8. MySQL Workbench
  9. Spread for ASP.NET技术白皮书
  10. Python TVTK 标量数据可视化与矢量数据可视化,空间轮廓线可视化