路由器硬件的提取

1、硬件基础知识

1.1、路由器FLASH

  FLASH也叫闪存,是路由器中常用的一种内存类型。它是可读可写的存储器,在系统重新启动或关机之后仍能保存数据。FLASH中存放着当前正在使用的路由器操作系统等信息。

  路由器的FLASH就像计算机的硬盘。我们的硬盘通常会被格式化成多个分区。同样的原理,FLASH也会被格式化为多个分区。通常情况下,FLASH分为4个区块,其作用如下:

  bootloader:主要功能时对硬件环境进行初始化、更新固件及认识操作系统的文件格式并将内核加载到内存中去执行。

  Kernel:操作系统的内核。

  Root Filesystem:操作系统的根文件系统,如squashfs、rootfs等。

  NVRAM:作用是保存路由器中的配置文件。路由器在启动之后会从NVRAM中读取配置文件,对路由器进行设置。用户修改路由器设置后,系统会将修改后的参数写回NVRAM中。

  路由器的FLASH中存储的数据对于我们进行路由器安全研究具有十分重要的意义。我们可以读取NVRAM中的配置信息,以了解当前路由器中的敏感信息,还可以从FLASH中提取固件。

1.2、硬件提取数据的思路

  通过接触硬件进行数据提取的方法很多,通常情况可以考虑以下三种方案:

  1、通过路由器主板上的JTAG接口提取FLASH、NVRAM等。这种方法的优点是只需要一根JTAG线,不需要太多的辅助设备,缺点是需要路由器CPU支持JTAG,主板上要有JTAG接口。

  2、从主板上取下的FLASH芯片中提取。这种方法可以在路由器不支持JTAG方式时使用,但缺点也很明显------从主板上取出芯片可能会对路由器造成物理损伤。

  3、使用测试夹从FLASH芯片中提取。使用测试夹的优点是不需要从路由器上取下芯片,只需要用测试夹夹住芯片引脚即可,缺点是对不同引脚数的FLASH芯片需要使用对应的测试夹。



2、路由器串口

  路由器的串口对于开发人员来说,通常可以用串口实现如下功能:

  1、访问路由器的CFE(Common Firmware Environment 统一固件环境)。

  2、观察boot和调试信息。

  3、通过一个Shell与系统进行交互异步串行通信。

  在路由器中,我们要寻找的串口不是指通常所见的RS232,而是指UART(通用异步收发器),它是路由器设备中比较常见的一种接口。虽然RS-232和UART在协议方面是兼容的,但在电压上却是不兼容。UART通常在3.3伏特进行操作,但也可运行在其他标准电压(如5伏特、1.8伏特等)下。

2.1、探测串口

  我们使用基本的观察法和万用法从复杂的路由器主板中找出UART,并确定UART的每一个引脚的用途。

  首先,我们通过肉眼观察路由器主板上的引脚。一般来说,UART至少包含以下4个引脚。

  1、Vcc(VCC):电源电压。该引脚电压较稳定。

  2、Ground(GND):接地。该引脚电压通常为0.

  3、Transmit(TXD):数据发送引脚。

  4、Receive(RXD):数据接收引脚。

  也就是说,我们首先要注意在路由器主板上那些单行具有4~6个引脚的位置。但这种方法不一定在任何时候都有效,因为这些引脚的位置是由各个厂商设计的,没有统一标准。

  找到串口以后,我们需要区分这些引脚的功能。可以通过目测法和万用表测试法。

2.1.1、目测法

  主板在印刷时都会遵循一些规律,这些规律可以帮助我们识别串口的引脚。

  (1)VCC引脚特点:

  VCC引脚通常被做成方形,从路由器主板上可以看到较宽的走线,那么该引脚极有可能也是VCC引脚。

  (2)GND引脚特点:

  GND引脚通常存在多条走线连接到周围的地线(GND)。

2.1.2、万用表测量法

  (1)测试GND引脚

  将万用表调到电阻测量的最小档。这里最小为200欧姆,因此选择电阻200欧姆档位。然后,我们需要确定万用表的两种表应该放在哪些位置。通常金属屏蔽是一个方面测试的接地点,因此,将一只表笔放在金属屏蔽罩上,用另一只表笔分别接触10个引脚,测试金属屏蔽罩与串口的10个引脚,电阻为0的引脚即为GND引脚。

  (2)测试VCC

  虽然VCC引脚对于我们使用路由器的串口是无关紧要的,但是确定VCC引脚可以排除它作为RXD引脚和TXD引脚的可能性,因此也是有必要的。将万用表量程放在直流电压2-伏特档位上,给路由器上电(将路由器电源接通),从路由器启动到系统完全启动这段时间内观察到电压值基本稳定在3.30伏特。

  (3)测试TXD引脚

  当串行端口处于激活状态并发送数据(否则无法测试出发送引脚)时,发送引脚时相当容易识别的。主板上的发送引脚被拉高到与VCC引脚相同的电压时,通常为3.3伏特。在有数据发送时,电压将下降到0.当读取的是一个不断变化的直流电压时,数字万用表将显示最终的平均采样电压。因此,如果万用表显示引脚电压下降,表示该引脚有数据发送,由此可以判断该引脚是TXD引脚。

  虽然这是识别发送引脚的一种有效方法,但是值得注意的是,如果串行端口只发送少量数据,通过锻压波动判断可能就不是那么准确了,这是我们需要使用示波器或逻辑分析仪捕获发送引脚的数据活动。

  (4)测试RXD引脚

  准确地识别接收引脚时最困难的,因为它没有十分有效的特征定义。通常我们通过测试找出TXD引脚,另一个引脚就是RXD引脚了。

2.2、连接串口

  在识别了串口的各个引脚之后,我们可以通过一条USB转UART适配器的线可以连接了。将UART适配器的USB接口端插入计算机的USB接口,将UART适配器连接到路由器串行端口中,使用方式如下:

  1、将适配器的GND连接到串口的GND。

  2、将适配器的RXD连接到串口的TXD。

  3、将适配器的TXD连接到串口的RXD。

  连接上串口后,我们需要检查串行端口的协议设置,串行端口有多种设置,但是在这里我们只需要完成波特率的设置即可。尝试错误是识别波特率最快和最简单的方法。因为串行端口通常用于显示调试信息(即它们发送ASCII数据),并且只有少数可能频率的波特率,所以我们可以逐一测试可能的波特率,直到输出可理解的数据(如ASCII码)时,就找到了当前串口的波特率。

  baudrate.py有一个功能选项“-a”可以自动检测波特率。

2.3、在linux下读取路由器串口数据

  1、通过miniterm.py连接路由器串口

  • baudrate.py获取波特率。
  • 运行sudo miniterm.py /dev/ttyUSB0 波特率值(例子),此时,miniterm.py处于等待状态。启动路由器(接通电源),可以看到中断打印的启动信息。

  2、路由器CFE命令模式

  在路由器启动阶段,按“Ctrl+C”组合键可以终止路由器系统的启动过程,进入CFE命令行模式。(实例WRT54G路由器)

  在CFE命令行模式下,使用这些命令可以完成路由器CFE、FLASH、NVRAM的相关操作。

  3、路由器linux系统模式

  直接在路由器启动后,进入系统模式,操作路由器。

2.4、在windows下读取路由器串口数据

  在windows下有很多串口调试工具,例如Putty等。具体也是设置波特率还有Serial类型。



 3、JTAG提取数据

  为了解决提取FLASH数据问题,我们使用JTAG提取数据。

 3.1、JTAG连接

  JTAG主要应用于电路的边界扫描测试和可编程芯片的在线系统编程。JTAG也是一种国际标准测试协议,主要用于芯片的内部测试。现今大多数的高级器件都支持JTAG协议。标准的JTAG接口是4线,TMS、TCK、TDI、TDO分别为模式选择、时钟、数据输入、数据输出。

  JTAG引脚的相关定义如下:

  • TCK为测试时钟输入。
  • TDI为测试数据输入,数据通过TDI引脚输入JTAG接口。
  • TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出。
  • TMS为测试模式选择,用于设置JTAG接口处于某种特定的测试模式。
  • TRST为测试复位,输入引脚、低电平有效。该引脚非必须,是可选项。
  • GND为接地。

  TRST引脚是一个可选的、相对待测逻辑低电平有效的复位开关。根据芯片的不同,它通常是异步的,但有时也可能是同步的。如果该引脚没有定义,则待测逻辑可由同步时钟输入复位指令复位。因此,在通常情况下,我们只需连接TDI、TDO、TCK、TMS、GND这5根线就够了。

  一个含有JTAG Debug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH、RAM、SOC(System on Chip)内置模块的寄存器。

  确定JTAG接口所具备的能力以后,要想使用这些功能,还需要软件配合,所实现的功能则由具体的软件决定。



4、brjtag的使用

  brjtag工具是一款用于Broadcom CPU路由器JTAG连接线的FLASH刷写工具.

4.1、基本安装(待续)

4.2、提取FLASH

  FLASH芯片中存储了路由器的固件,其中包含路由器的bootloader信息。因为每个路由器厂商在对操作系统进行编码和压缩的时候可能会使用一些非标准的算法,因此,有些时候,提取和分析bootloader也是很有必要性的。在无法通过网络下载路由器固件时候,可以通过JTAG方式读取路由器FLASH中的固件,对文件系统及bootloader进行提取和分析。

  使用brjtag对路由器FLASH进行操作的基本命令如下:

  • brjtag-backup:kernel:备份固件
  • brjtag-erase:kernel:擦除固件
  • brjtag-flash:kernel:写入固件
  • brjtag-backup:wholeflash:备份wholeflash(包含CFE/NVRAM/KERNEL)。
  • brjtag-earse:wholeflash:擦除wholeflash(包含CFE/NVRAM/KERNEL)。
  • brjtag-flash:wholeflash:写入wholeflash(包含CFE/NVRAM/KERNEL)。

4.3、提取CFE

  使用brjtag读路由器NVRAM的基本命令如下:

  • brjtag-backup:cfe:备份CFE。
  • brjtag-earse:cfe:擦除CFE。
  • brjtag-flash:cfe:写入CFE。

4.4、提取NVRAM

  路由器的配置文件都存放在NVRAM中,因此,通过读取NVRAM可以得到路由器的所有配置信息。使用brjtag读取路由器NVRAM的基本命令如下。

  • brjtag-backup:nvram:备份NVRAM。
  • brjtag-earse:nvram:擦除VMRAM。
  • brjtag-flash:nvram:写入VNRAM。  

  

  

时间: 2024-10-29 19:08:22

路由器硬件的提取的相关文章

路由器文件系统与提取

1.路由器文件系统 我们通常所说的更新路由器是指更新路由器的固件,不同的路由器使用了不同呃硬件平台.操作系统及固件.通常情况下,路由器的固件中包含操作系统的内核及文件系统. 1.1.路由器固件 路由器固件不是硬件,而是软件,在路由器中,它通常是被固化在只读存储器中的,所以称为固件. 在进行漏洞分析时获取路由器固件的通常有两种方式: 一.从路由器厂商提供的更新网站下载: 二.通过硬件接入,从路由器的Flash中提取固件. 路由器固件中包含了该路由器中所有的可执行程序及配置文件信息,这些信息对于我们

路由器开发(一)—— 路由器硬件结构及软件体系

一.路由器的硬件构成  路由器主要由以下几个部分组成:输入/输出接口部分.包转发或交换结构部分(switching fabric).路由计算或处理部分.如图所示 图1    路由器的基本组成 输入端口是物理链路和输入包的进口处.端口通常由线卡提供,一块线卡一般支持4.8或16个端口,一个输入端口具有许多功能.第一个功能是进行数据链路层的封装和解封装.第二个功能是在转发表中查找输入包目的地址从而决定目的端口(称为路由查找),路由查找可以使用一般的硬件来实现,或者通过在每块线卡上嵌入一个微处理器来完

Cisco的互联网络操作系统IOS和安全设备管理器SDM__路由器软、硬件知识

路由器软.硬件知识 1.路由器的组件: 组件 解释 Bootstrap 存储在ROM中的微代码,bootstrap用于在初始化阶段启动路由器.它将启动路由器然后装入IOS POST(开机自检) 存储在ROM中的微代码,POST用于检测路由器硬件的基本功能并确定哪些接口当前可用 ROM监控程序 存储在ROM中的微代码,ROM监控程序用于手动测试和故障诊断 微型IOS Cisco调 用 RXBOOT或 bootloader(引导装入程序),微型IOS是一个在ROM中可以启动接口并将Cisco IOS

必虎路由器大量高危漏洞分析

前言 这件事情还得从几个月前说起.有一名叫做Tao Sauvage的老外开开心心的来中国旅游.想着得带点中国的土特产回去,选了半天,选中了一款叫做必虎的无线路由器. 看着这个超低的价格和完美的做工,这个老外感觉自己赚大发了,简直是天赐礼物!249!买不了吃亏!249!买不了上当!必虎的英文翻译叫做“Tiger Will Power”,我擦!叼炸天的名字啊!虎之力路由器!感觉身体被掏空!但是因为是国产路由器,谷歌翻译也不准确,他也不懂中文. 怎么办呢?把路由器拆开研究一下看看吧!橙色的地方可以插入

天大6BOX路由器IPV6免费上网配置教程

6BOX是一台利用IPV6协议进行路由转换的路由器,它也同时配备了双栈服务器,所以可以实现各大高校IPV6的免费上网. 但是各大高校的IPV6环境和回收机制也不一样,所以在配置上存在了一定的差异. 拿天津大学的6box配置来讲. 后台管理地址  :  192.168.199.1   默认口令:  admin   admin 进入后台之后,点击  网络设置 -> 接口  , 修改WAN口配置. 将WAN和WAN6口切换成静态协议(因为路由器在IPV6地址的获取上存在问题),只能切换成静态协议后手动

cisco路由器的启动过程及密码重置

一.思科路由器的内部组件 为了配置,思科互联网络和排除故障,我们必须首先了解思科路由器的主要组件,并理解这些组件 各自的作用. 表7-1 给出了对思科路由器主要组件的描述. 引导程序           存储在ROM中的微代码,主要作用是在路由器初始化时启动它.引导程序将启动路由器并加载10S POST (开机自检)    存储在ROM中的微代码,用于检测路由器硬件的基本功能,并确定当时可用的接口 ROM监控程序        存储在ROM中的微代码,用于制造.测试和故障诊断 微型IOS    

浅谈路由器软硬件架构

我们可以把路由器比作网络世界的骨架,我们之所以能够在网络世界里畅游,很大程度上是得益于这个铁盒子. 路由器硬件架构 随着专用多核网络处理器.专用转发芯片的出现,使得现代路由器摆脱了以往纯软件转发的局限,向着高吞吐率.硬件快速转发等方向发展.高端的路由器设计成多板分布式+冗余备份的架构,使转发能力成倍的增强,同时还大大提高了业务的稳定性. 下图是一幅典型的路由器硬件架构图: 目前高端路由器大多采用专门的多核网络处理器作为CPU,如Cavium公司研发的Octeon系列处理器,主流的6000系列16

openwrt-智能路由器hack技术(1)---"DNS劫持"

openwrt-智能路由器hack技术(1)---"DNS劫持" 1   导读 PS:之前写的一个文章,现在发现结构内容排版不是太好,导致阅读体验太差,影响传播和SEO,所以现在整理拆分一下,从小处写起, 本系列介绍了两个关于智能路由器的hack技术,供大家赏玩一下. 本文提到的两个基于网络的hack技术: DNS劫持 数据抓包 基本本质上就是路由器设备的两个主要网络功能: 网关配置功能 网关数据中转功能 但是用于软件开发的正途,就变换成下面的说法: 网络环境迁移 数据监控 由于大家可

路由器启动过程分析

路由器启动顺序 1.路由器上电,开始执行上电自检(POST),其中路由器从ROM执行所有硬件模块诊断(包括CPU,内存和网络接口). 2. 路由器硬件自检正常后,开始软件初始化,执行Bootstraploader(用来测试硬件和初始化IoS). 3. 查找和加载思科IOS软件(configurationregister,根据这个值来执行). 4. 查找和应用启动配置文件(加载到主内存,一条一条执行),如果没有,就到设置模式 路由器启动过程分析