2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ksnctf #19 ZIP de kure

Posted at

#ZIP de kure
https://ksnctf.sweetduet.info/problem/19

zipファイルを解析する問題。
flag.zipをダウンロードしてunzipで解凍する。

┌──(kali㉿kali)-[~/Downloads]
└─$ unzip flag.zip
Archive:  flag.zip
Hint:
- It is known that the encryption system of ZIP is weak against known-plaintext attacks.
- We employ ZIP format not for compression but for encryption.
[flag.zip] flag.html password: 
password incorrect--reenter: 
   skipping: flag.html               incorrect password
   skipping: Standard-lock-key.jpg   incorrect password

ヒントには「zipの暗号化は既知平文攻撃に弱く、圧縮ではなく暗号化にzipを使っている」と書かれている。
zipといったら圧縮するイメージだけど、暗号化としても使われている。
既知平文攻撃は、暗号化zip内に、既知のファイルがあばそれをヒントに復号する方法である。今回はこのヒントを頼りに既知平文攻撃を行ってみる。
unzipの結果から解凍したフォルダには、パスワードが分からないので開くことはできないが、flag.htmlとStandard-lock-key.jpgという2つのファイルがあることがわかる。flag.htmlにflagがありStandard-lock-key.jpgはそのための鍵だそ予想できる。

##解く
既知平文攻撃を行うには、既知のファイルがわかっている必要がある。zip内にはStandard-lock-key.jpgがありこれを調べてみると以下のwikiサイトが見つかった。
https://ja.wikipedia.org/wiki/ファイル:Standard-lock-key.jpg
この画像をダウンロードして既知のファイルとして攻撃を行ってみる。

攻撃にはPkCrackというコマンドを使う。
参考:https://kaworu.jpn.org/kaworu/2012-12-07-1.php
これはパスワード付きzipを解析するためのツールで既知平文攻撃を行うことができる。

PkCrackの使い方
 -C [暗号化されたzipファイル]
 -c [暗号化されたzipファイルの中で平文がわかるファイル]
 -P [平文のファイルが入っている暗号化されていないzip]
 -p [平文のファイル]
 -d [出力先(復号したzipファイルの名前)]

以下のコマンドで実行してみる。

┌──(kali㉿kali)-[~/Downloads]
└─$ ../pkcrack-1.2.2/src/pkcrack -C flag.zip -p Standard-lock-key.jpg -c Standard-lock-key.jpg -d q19ans.zip                                    130 ⨯
Warning! Plaintext is longer than Ciphertext!
Files read. Starting stage 1 on Thu Sep 23 23:39:15 2021
Generating 1st generation of possible key2_500762 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Lowest number: 955 values at offset 497625
Lowest number: 902 values at offset 497621
Lowest number: 872 values at offset 497412
Lowest number: 846 values at offset 490225
Lowest number: 833 values at offset 488822
Lowest number: 831 values at offset 488821
Lowest number: 790 values at offset 488820
Lowest number: 769 values at offset 488814
Lowest number: 764 values at offset 488761
Lowest number: 747 values at offset 488738
Lowest number: 733 values at offset 488737
Lowest number: 732 values at offset 488683
Lowest number: 663 values at offset 488673
Lowest number: 646 values at offset 488508
Lowest number: 631 values at offset 483194
Lowest number: 621 values at offset 483193
Lowest number: 581 values at offset 483053
Lowest number: 580 values at offset 483051
Lowest number: 560 values at offset 483018
Lowest number: 534 values at offset 483017
Lowest number: 492 values at offset 483016
Lowest number: 461 values at offset 483015
Lowest number: 451 values at offset 482993
Lowest number: 434 values at offset 482988
Lowest number: 421 values at offset 482987
Lowest number: 415 values at offset 482985
Lowest number: 398 values at offset 482940
Lowest number: 385 values at offset 482939
Lowest number: 381 values at offset 476360
Lowest number: 343 values at offset 476359
Lowest number: 335 values at offset 476347
Lowest number: 298 values at offset 476346
Lowest number: 280 values at offset 476345
Lowest number: 278 values at offset 476291
Lowest number: 257 values at offset 475962
Lowest number: 241 values at offset 475958
Lowest number: 232 values at offset 475955
Lowest number: 221 values at offset 475338
Lowest number: 210 values at offset 475337
Lowest number: 175 values at offset 475336
Lowest number: 159 values at offset 475330
Lowest number: 153 values at offset 475306
Lowest number: 145 values at offset 475296
Lowest number: 143 values at offset 475295
Lowest number: 129 values at offset 475293
Lowest number: 121 values at offset 475247
Lowest number: 119 values at offset 475246
Lowest number: 110 values at offset 475245
Lowest number: 96 values at offset 475244
Done. Left with 96 possible Values. bestOffset is 475244.
Stage 1 completed. Starting stage 2 on Thu Sep 23 23:39:25 2021
Stage 2 completed. Starting zipdecrypt on Thu Sep 23 23:39:26 2021
No solutions found. You must have chosen the wrong plaintext.
Finished on Thu Sep 23 23:39:26 2021

解析できなかった。
Warning! Plaintext is longer than Ciphertext!
No solutions found. You must have chosen the wrong plaintext.
この2文から既知のファイル(plaintext)が暗号文より長くて間違ったファイルを選んでいるっぽい。
スクリーンショット 2021-09-24 12.45.57.png
既知のファイルは現在の版の2018年8月6日のものを使った。次は2010年8月29日のファイルを使ってみる。

┌──(kali㉿kali)-[~/Downloads]
└─$ ../pkcrack-1.2.2/src/pkcrack -C flag.zip -p Standard-lock-key.jpg -c Standard-lock-key.jpg -d q19ans.zip
Files read. Starting stage 1 on Thu Sep 23 23:50:57 2021
Generating 1st generation of possible key2_255975 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Lowest number: 986 values at offset 248213
Lowest number: 948 values at offset 248202
Lowest number: 945 values at offset 247980
Lowest number: 928 values at offset 247965
Lowest number: 894 values at offset 247957
Lowest number: 883 values at offset 244764
Lowest number: 825 values at offset 244113
Lowest number: 820 values at offset 243180
Lowest number: 769 values at offset 243179
Lowest number: 758 values at offset 243175
Lowest number: 723 values at offset 243172
Lowest number: 702 values at offset 243171
Lowest number: 694 values at offset 243170
Lowest number: 657 values at offset 243162
Lowest number: 653 values at offset 243151
Lowest number: 652 values at offset 243149
Lowest number: 638 values at offset 243143
Lowest number: 621 values at offset 243106
Lowest number: 567 values at offset 243104
Lowest number: 546 values at offset 243103
Lowest number: 534 values at offset 243102
Lowest number: 510 values at offset 243073
Lowest number: 498 values at offset 243054
Lowest number: 476 values at offset 242992
Lowest number: 472 values at offset 242990
Lowest number: 396 values at offset 242989
Lowest number: 359 values at offset 242984
Lowest number: 321 values at offset 242983
Lowest number: 311 values at offset 242977
Lowest number: 310 values at offset 242939
Lowest number: 296 values at offset 242935
Lowest number: 270 values at offset 242934
Lowest number: 268 values at offset 242921
Lowest number: 244 values at offset 242915
Lowest number: 224 values at offset 242880
Lowest number: 215 values at offset 242879
Lowest number: 209 values at offset 242878
Lowest number: 188 values at offset 242877
Lowest number: 187 values at offset 242867
Lowest number: 186 values at offset 242866
Lowest number: 167 values at offset 242865
Lowest number: 164 values at offset 242670
Lowest number: 157 values at offset 242669
Lowest number: 141 values at offset 242655
Lowest number: 132 values at offset 242654
Lowest number: 112 values at offset 242652
Lowest number: 91 values at offset 242651
Done. Left with 91 possible Values. bestOffset is 242651.
Stage 1 completed. Starting stage 2 on Thu Sep 23 23:51:10 2021
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Ta-daaaaa! key0=7adffffe, key1=468d5ff6, key2=259a116a
Probabilistic test succeeded for 13329 bytes.
Stage 2 completed. Starting zipdecrypt on Thu Sep 23 23:51:14 2021
Decrypting flag.html (250d8b78ce908fe210d7c091)... OK!
Decrypting Standard-lock-key.jpg (037d8119e2c2884a4a665d91)... OK!
Finished on Thu Sep 23 23:51:14 2021
                                    

うまく解析できた。

flag.htmlを開いてみるとflagが得られた。

##まとめ
パスワード付きzipの解析ができた。
pkcrackはCTFで使う機会が多そうなのでちゃんと使い方を覚えておきたい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?