DEFCON CTF 2009 Forensics 300
One of these things is not like the other.
http://shallweplayaga.me/forensics/46646289fff26adc096853ae13b7eba6
まず何のファイルか確認
$ file 46646289fff26adc096853ae13b7eba6 46646289fff26adc096853ae13b7eba6: Zip archive data, at least v2.0 to extract
zipで圧縮されている
$ cp 46646289fff26adc096853ae13b7eba6 f300.zip $ unzip -d files/ f300.zip .... extracting: files/FF62671092430BA2AB745A16CB772C2B inflating: files/FFA04C787C95327E4923D6E314869FA0 inflating: files/FFBE6D27C1DA46C1298B65C99DED9904 inflating: files/FFC4DFE2B96C861792CC91A5EA34DD67 inflating: files/FFC4FBCCAF5151814D90F9807223D6BC inflating: files/FFC5D8E55B22651E7366913F4A1B1A60 inflating: files/FFCB10F3BF538BFA7289D77A0AD7F5DD inflating: files/FFCC1768827A22FA025466B529FBE657 inflating: files/FFCE78000EEC2F2BEDFFA98F7B22A5DB inflating: files/FFE3B13DD224E61DE592506EE07AB5DA inflating: files/FFE58ECC317B5D6661967A55C3C3F107 $ cd files
展開すると大量のファイルが展開される
ファイル名をよく見ると先頭が00〜FFまで揃っている
問題文は「他とは異なるひとつ」と言っているため何かの特徴を見つける
$ md5sum * > md5.txt $ sort md5.txt | uniq -Dw32 0df21559b5e24582cae15e39393c38f2 04CE923AE0A2D4E39B1C55108EC0DDF7 0df21559b5e24582cae15e39393c38f2 99893BF47A011AA674A0932E5B131E29 6caece4f4f1b20354a26f5b074be5108 EE5610E54A9D127F243B8C76DE334031 6caece4f4f1b20354a26f5b074be5108 F21D60B1FE9710677DD261B1BC7F2EB5 7f450b19ae60471a70b9e11c2c96590e 5239871972E224E3DA7F91FE0A5F1794 7f450b19ae60471a70b9e11c2c96590e E14115E1CF6ABB38E1273E512BEBFAA7 9d9e8dbae4b1929921bbc96085fe6307 4457ABF15FAB9698978B3A50600A8E6A 9d9e8dbae4b1929921bbc96085fe6307 D787C1B17F6CCBBE5E867A9FE161C50E d84f0fa3e7c497d270a3dd58cd7d4a0c 233C952E9628E8DA39AC33C136D54120 d84f0fa3e7c497d270a3dd58cd7d4a0c 62136B0178A54B6A6CBE04583B585C0B e38554402d7d73401291695a8f0ff529 57550E8A527E26A7EE44184D8279C3CA e38554402d7d73401291695a8f0ff529 C0D43D209C89AB0868E1C27229E94FB5 eca0636171cdb0d054cfa1e326dfdd50 00ADF16DBCDACEB251CAFAEC464E94F5 eca0636171cdb0d054cfa1e326dfdd50 F9AD23392E16573C408E5FD7560F84CD
同じmd5を持つファイルが7組だけ見つかる
この中で5239871972E224E3DA7F91FE0A5F1794とE14115E1CF6ABB38E1273E512BEBFAA7は
同じmd5を持つが異なるデータファイルである(衝突が起こっている)
$ diff 5239871972E224E3DA7F91FE0A5F1794 E14115E1CF6ABB38E1273E512BEBFAA7 バイナリー・ファイル 5239871972E224E3DA7F91FE0A5F1794 と E14115E1CF6ABB38E1273E512BEBFAA7 は違います $ hexdump -C 5239871972E224E3DA7F91FE0A5F1794 > A $ hexdump -C E14115E1CF6ABB38E1273E512BEBFAA7 > B $ diff A B 2,4c2,4 < 00000010 2f ca b5 87 12 46 7e ab 40 04 58 3e b8 fb 7f 89 |/[email protected]>....| < 00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 71 41 5a |U.4.........%qAZ| < 00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd f2 80 37 3c 5b |.Q%..........7<[| --- > 00000010 2f ca b5 07 12 46 7e ab 40 04 58 3e b8 fb 7f 89 |/[email protected]>....| > 00000020 55 ad 34 06 09 f4 b3 02 83 e4 88 83 25 f1 41 5a |U.4.........%.AZ| > 00000030 08 51 25 e8 f7 cd c9 9f d9 1d bd 72 80 37 3c 5b |.Q%........r.7<[| 6,8c6,8 < 00000050 dd 53 e2 b4 87 da 03 fd 02 39 63 06 d2 48 cd a0 |.S.......9c..H..| < 00000060 e9 9f 33 42 0f 57 7e e8 ce 54 b6 70 80 a8 0d 1e |..3B.W~..T.p....| < 00000070 c6 98 21 bc b6 a8 83 93 96 f9 65 2b 6f f7 2a 70 |..!.......e+o.*p| --- > 00000050 dd 53 e2 34 87 da 03 fd 02 39 63 06 d2 48 cd a0 |.S.4.....9c..H..| > 00000060 e9 9f 33 42 0f 57 7e e8 ce 54 b6 70 80 28 0d 1e |..3B.W~..T.p.(..| > 00000070 c6 98 21 bc b6 a8 83 93 96 f9 65 ab 6f f7 2a 70 |..!.......e.o.*p|
md5の強衝突性を突破している
http://www.win.tue.nl/hashclash/
同じmd5の異なるファイルを作成する際、Dan Kaminskyのstripwireを使ったと思われる
http://www.securityfocus.com/data/vulnerabilities/exploits/stripwire-1.1.tar.gz
$ sed -ie 's/eval/print/' stripwire.pl $ perl stripwire.pl -r E14115E1CF6ABB38E1273E512BEBFAA7 > dec1 $ perl stripwire.pl -r 5239871972E224E3DA7F91FE0A5F1794 > dec2 $ cat dec1 $ cat dec2 SFKtg9S9sWRvwwy3BXn11lXBRqP9QfNCanMiv9lYR9UMqEoZsPhiR662r 11YeU8vWoAimLgUPyXjNApBpiu4LCOBw6pvgYQGGKpZiCaq4sRHjLaoWF Ese2iP7vfvgeIDTHoGNYyYQwiYVLq6wxjJaTkvNKtHANIgBOXWXNO1kFD CcUYnL3eSvIsShsMbHRJ68xafUq0YxDjrIALyGkKYBjrp4dk67ZIaISYQ ....
stripwireは任意のファイルを元に、md5がぶつかる2つのファイルを生成する
今回作成されたファイルは
5239871972E224E3DA7F91FE0A5F1794 と E14115E1CF6ABB38E1273E512BEBFAA7
どちらかを再度stripwireにかければ、どちらか一方は復号され元ファイルに戻る
今回はdec2、つまり5239871972E224E3DA7F91FE0A5F1794が復号された
よって他のファイルとは違う暗号化されたファイル"5239871972E224E3DA7F91FE0A5F1794"が答え