使用已知明文逆转未知混淆或加密

逆向工程 固件 加密 去混淆 解压
2021-06-10 15:34:13

介绍

出于学术原因,我正在为嵌入式设备反转固件。我已经创建了一个 perl 脚本,它能够解析固件结构并从中提取文件(它的一些自定义 VXWORX/RTOS 系统具有自定义固件标头和混淆。

我无法访问设备本身,即我无法调试固件更新过程。

到目前为止我发现了什么

固件中有两种类型的文件,简单的 XOR 混淆文件。我能够通过在十六进制编辑器中进行快速分析来检测单字节 XOR 密钥。第二种类型有点混乱。这用于更敏感的数据。但幸运的是,我有一些文件是明文,通过 Web 界面直接从设备下载。

这些第二个强混淆和/或压缩类型具有以下特征:

  • 小文件编码有一点开销(25%)
  • 较大的文件被压缩,但远非理想(HTML/文本为 25-30%)
    • 我在明文文件上尝试了几种压缩算法,以确保它们与编码文件的大小不匹配
  • 单个字节更改可能会导致编码版本中的多个字节更改

例子

首先是原始文件,然后是固件中的编码。

  • o_000000.gif

    00000000  47 49 46 38 39 61 04 00  04 00 80 00 00 00 00 00  |GIF89a..........|
    00000010  ff ff ff 21 f9 04 01 00  00 01 00 2c 00 00 00 00  |...!.......,....|
    00000020  04 00 04 00 00 02 04 84  8f 09 05 00 3b           |............;|   
    0000002d
    
    00000000  40 04 07 ff 04 09 c4 b1  3b 9c 90 58 12 43 09 18  |@.......;..X.C..|
    00000010  4c 03 f3 8f 28 f4 65 86  93 e7 fe e1 9f d5 5c 82  |L...(.e.......\.|
    00000020  66 76 ea c1 0c 42 a9 ad  e3 bd f4 65              |fv...B.....e|
    0000002c
    
  • o_0000ff.gif

    00000000  47 49 46 38 39 61 04 00  04 00 80 00 00 00 00 ff  |GIF89a..........|
    00000010  ff ff ff 21 f9 04 01 00  00 01 00 2c 00 00 00 00  |...!.......,....|
    00000020  04 00 04 00 00 02 04 84  8f 09 05 00 3b           |............;|   
    0000002d                                                                      
    
    00000000  40 04 04 c2 60 1f 9c 7c  10 20 b0 24 86 13 ff 14  |@...`..|. .$....|
    00000010  7a 32 c3 49 27 12 c4 ee  73 c7 7c f9 ff 55 52 86  |z2.I'...s.|..UR.|
    00000020  ee ee 53 58 21 e8 55 31  b2 4f 9e 0f b5           |..SX!.U1.O...|
    0000002d
    
  • iframe.html

    00000000  0d 0a 0d 0a 0d 0a 3c 69  66 72 61 6d 65 20 73 72  |......<iframe sr|
    00000010  63 3d 22 68 74 74 70 3a  2f 2f 77 77 77 2e 73 6f  |c="http://www.so|
    00000020  6c 61 72 6c 6f 67 31 30  30 2e 64 65 2f 76 69 73  |larlog100.de/vis|
    00000030  75 2f 6b 61 72 77 61 74  68 2f 62 61 6e 6e 65 72  |u/karwath/banner|
    00000040  2e 68 74 6d 6c 22 20 77  69 64 74 68 3d 22 32 30  |.html" width="20|
    00000050  30 22 20 68 65 69 67 68  74 3d 22 31 32 30 22 20  |0" height="120" |
    00000060  6e 61 6d 65 3d 22 53 6f  6c 61 72 4c 6f 67 42 61  |name="SolarLogBa|
    00000070  6e 6e 65 72 22 20 73 63  72 6f 6c 6c 69 6e 67 3d  |nner" scrolling=|
    00000080  22 6e 6f 22 20 66 72 61  6d 65 62 6f 72 64 65 72  |"no" frameborder|
    00000090  3d 22 30 22 3e 0d 0a 3c  70 3e 49 68 72 20 42 72  |="0">..<p>Ihr Br|
    000000a0  6f 77 73 65 72 20 6b 61  6e 6e 20 6c 65 69 64 65  |owser kann leide|
    000000b0  72 20 6b 65 69 6e 65 20  65 69 6e 67 65 62 65 74  |r keine eingebet|
    000000c0  74 65 74 65 6e 20 46 72  61 6d 65 73 20 61 6e 7a  |teten Frames anz|
    000000d0  65 69 67 65 6e 3a 0d 0a  53 69 65 20 6b 26 6f 75  |eigen:..Sie k&ou|
    000000e0  6d 6c 3b 6e 6e 65 6e 20  64 69 65 20 65 69 6e 67  |ml;nnen die eing|
    000000f0  65 62 65 74 74 65 74 65  20 53 65 69 74 65 20 26  |ebettete Seite &|
    00000100  75 75 6d 6c 3b 62 65 72  20 64 65 6e 20 66 6f 6c  |uuml;ber den fol|
    00000110  67 65 6e 64 65 6e 20 56  65 72 77 65 69 73 0d 0a  |genden Verweis..|
    00000120  61 75 66 72 75 66 65 6e  3a 20 3c 61 20 68 72 65  |aufrufen: <a hre|
    00000130  66 3d 22 68 74 74 70 3a  2f 2f 77 77 77 2e 73 6f  |f="http://www.so|
    00000140  6c 61 72 6c 6f 67 31 30  30 2e 64 65 2f 76 69 73  |larlog100.de/vis|
    00000150  75 2f 6b 61 72 77 61 74  68 2f 62 61 6e 6e 65 72  |u/karwath/banner|
    00000160  2e 68 74 6d 6c 22 3e 42  61 6e 6e 65 72 3c 2f 61  |.html">Banner</a|
    00000170  3e 3c 2f 70 3e 0d 0a 3c  2f 69 66 72 61 6d 65 3e  |></p>..</iframe>|
    00000180
    
    00000000  0b a2 e7 6d 2c f7 7b 0a  ca 5a 13 c9 74 80 16 29  |...m,.{..Z..t..)|
    00000010  f1 42 98 94 65 32 93 53  5b ed 8b 95 b8 4b d3 d8  |.B..e2.S[....K..|
    00000020  69 75 b3 48 84 28 5e aa  d7 6b 80 99 49 96 39 dd  |iu.H.(^..k..I.9.|
    00000030  91 69 4c 13 ab 5e 7c 67  c6 7c 35 ed 68 c6 9c 55  |.iL..^|g.|5.h..U|
    00000040  d5 96 d8 01 cf f6 30 52  95 b1 4a 67 53 91 22 fd  |......0R..JgS.".|
    00000050  f3 7d ac 72 f8 5a 63 f9  d1 4c 19 88 0e ed 53 6c  |.}.r.Zc..L....Sl|
    00000060  01 cf 6e 5f 76 0c cb 7d  1f 7d b7 62 f1 18 19 6e  |..n_v..}.}.b...n|
    00000070  2f 47 db 7b 31 ac b7 1e  53 3a 8d 48 91 0e ed 56  |/G.{1...S:.H...V|
    00000080  dc 5d 55 29 cf d6 4c b7  72 db eb 46 35 04 ab b5  |.]U)..L.r..F5...|
    00000090  59 6f ed c3 9f 0d 73 86  36 ca 78 95 22 89 53 ff  |Yo....s.6.x.".S.|
    000000a0  3b b7 9a f7 6a 9f fa f5  a7 5e b2 28 10 02 05 6f  |;...j....^.(...o|
    000000b0  19 46 34 27 3b e4 2f 11  5f ec f8 8f e4 ff fa 65  |.F4';./._......e|
    000000c0  a0 e7 d7 76 ad fb f2 75  eb 22 81 00 20 4f 1d 78  |...v...u.".. O.x|
    000000d0  13 f4 e9 a0 e7 d7 02 a7  ed 5b eb 29 91 5f 6a df  |.........[.)._j.|
    000000e0  92 a8 ab c2 cf 83 d3 5a  d3 55 7f 9d a3 76 52 d7  |.......Z.U...vR.|
    000000f0  2d b0 03 9f ec 60 a5 2b  62 94 ce a7 22 45 fb e6  |-....`.+b..."E..|
    00000100  fb 58 e5 f0 b4 c7 f3 a2  98 33 10 1d da a6 d8 03  |.X.......3......|
    00000110  9e e1 88 77 6a 9a c1 c2  d6 39 c3 9f 0d 63 da d1  |...wj....9...c..|
    00000120  8d 42                                             |.B|
    00000122
    

示例文件下载

提供原始文件和编码文件的二进制版本。

例子.zip

例子2.zip

更新 1:使用加密的二进制文件上传的第二个示例。他们都有这样的明文 MX 标头。

    hexdump -C extsd_new.exe
    00000000  4d 58 07 00 0f 00 01 00  03 00 26 00 ff ff 2e 00  |MX........&.....|
    00000010  00 03 00 00 00 00 00 00  2c 00 00 00 3c 14 be 54  |........,...<..T|
    00000020  00 00 00 00 00 00 00 00  00 00 00 00 ce 00 1b 00  |................|
    00000030  b9 68 0d be ce 1a 89 f7  1e a9 b5 80 8c c8 05 01  |.h..............|
    00000040  00 8e d8 05 13 00 8e c0  fd f3 a5 fc 2e 80 6c 12  |..............l.|
    00000050  01 73 e7 92 af ad 0e 0e  0e 06 1f 07 16 bd 31 00  |.s............1.|
    00000060  bb 0f 80 55 cb 55 50 58  21 0b 13 03 08 8d 43 8c  |...U.UPX!.....C.|
    00000070  ba 30 ad 68 62 5a 2b 00  30 1a 00 20 2d 00 00 1b  |.0.hbZ+.0.. -...|
    00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00000130  ff ba 24 00 2e 89 16 40  02 ff b4 30 cd 21 8b 2e  |..$....@...0.!..|
1个回答

我建议再次尝试使用 binwalk。binwalk 有它自己的解压实用程序,可以解压/压缩许多不同文件类型的文件。

像这样使用它......

binwalk -Me 文件名

我希望这有帮助!