我正在尝试拆卸Cisco Sx300交换机的固件,如下所示:
https://software.cisco.com/download/release.html%3Fmdfid%3D283019611%26softwareid%3D282463181%26release%3D1.2.7。 76

虽然存在一些有关Wind River固件的其他迭代的文档,但我还没有遇到针对该特定固件的一组工作工具。

Binwalk给出了一些结果:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Cisco VxWorks firmware header, header size: 80 bytes, number of files: 15, image size: 6988894, firmware version: "1.2.7.76"
209           0xD1            LANCOM WWAN firmware
1483          0x5CB           LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 16016448 bytes
3984149       0x3CCB15        LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 859164 bytes
4153128       0x3F5F28        LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2962457 bytes
4847723       0x49F86B        LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2122505 bytes
6914211       0x6980A3        LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 66664 bytes
6932632       0x69C898        XML document, version: "1.0"
6950635       0x6A0EEB        LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 121427 bytes


但是,使用-e标志进行提取不会提供有意义的结果。提取了几个文件,但其他文件最终变成损坏的存档,或者文件太小而无法实际显示。我不确定LZMA压缩数据不是误报。

使用IDA的反汇编失败,因为我不知道加载程序地址。

此思科帮助资源表明正在进行某种形式的压缩:
https://supportforums.cisco.com/t5/small-business-support-documents/how-to -recover-a-reboot-loop-on-sx300 / ta-p / 3134953

此帮助支持文章确认该固件基于ARM,但我不确定该固件的确切名称芯片。

我知道VxWork固件的先前迭代在标头中具有加载程序地址。分析标题时,在建议的位置(0x14)找不到可用的地址。



我试图将固件中的字符串与字符串表匹配,但没有尽管进行了彻底的搜索,仍然能够找到任何字符串表。这支持了我的观点,即压缩或打包。

最后,我在二进制文件中搜索了可能的地址,以便推断出加载程序地址。我找不到任何通常引用的地址或范围。这特别困难,因为IDA不能正确分析二进制文件。

我在这里错过了一些简单而基本的东西吗? VxWorks固件是否有特殊技术?

#1 楼


这支持我的观点,即压缩或打包。


您是正确的;此固件映像中的大多数已压缩或加密。为了进行分解,必须对二进制文件进行解压缩。

压缩/加密的证据:



binwalk熵图


整个文件大部分的熵级别似乎都接近最大可能值。 />
左侧是固件熵的可视化,右侧是未压缩文件的熵的可视化:





ent(伪随机数序列测试程序)

$ ent sx300_fw-12776.ros 
Entropy = 7.999864 bits per byte.

Optimum compression would reduce the size
of this 6988974 byte file by 0 percent.

Chi square distribution for 6988974 samples is 1330.86, and randomly
would exceed this value 0.01 percent of the times.

Arithmetic mean value of data bytes is 127.3134 (127.5 = random).
Monte Carlo value for Pi is 3.145007550 (error 0.11 percent).
Serial correlation coefficient is 0.002524 (totally uncorrelated = 0.0).


请参阅http://www.devttys0.com/2013/06/从使用算术的压缩中区分加密/