検証環境
% sw_vers
ProductName: macOS
ProductVersion: 13.0.1
BuildVersion: 22A400
はじめに
pkcrackは既知平文攻撃を使用して、zipファイルのパスワードを解析するツールである。
既知平文攻撃は、暗号化されたzipファイル内のとあるファイルが平文でわかっている場合に行うことができる。
pkcrackのインストール
MacOS
brewよりpkcrackをインストールする。
% brew install pkcrack
Linux
Githubからダウンロードしmakeする。
git clone https://github.com/keyunluo/pkcrack
mkdir pkcrack/build
cd pkcrack/build
cmake ..
make
Windows
Linuxと同じくcmakeした後にbuildディレクトリをVisual Studioで開きビルドを行うらしい。(検証はしていない)
オプション
オプションは以下のようになっている。
[必須]
-c: 暗号化されたzipファイル中の平文がわかるファイル
-p: 平文のファイル
[オプション]
-o: 暗号化されたファイル中での平文のオフセット
-C: 暗号化されたzipファイル
-P: 平文のファイルが格納されたzipファイル
-d: 出力先
使ってみる
今回は以下pkcrackのgithubリポジトリにあるデモを使用してzipを解析してみる。
https://github.com/keyunluo/pkcrack/tree/master/demo
まずは普通に解凍してみる。
% unzip demo.zip
Archive: demo.zip
[demo.zip] CRACK.txt password:
password incorrect--reenter:
password incorrect--reenter:
skipping: CRACK.txt incorrect password
skipping: README.txt incorrect password
パスワードがかかっていて解凍できないので、pkcrackを使用して解析する。
解析の前に unzip コマンドや zipinfo コマンドを使用して、zipファイルに含まれているファイルを調査する。
% unzip -l demo.zip
Archive: demo.zip
Length Date Time Name
--------- ---------- ----- ----
48 12-07-2017 11:46 CRACK.txt
1221 12-07-2017 12:45 README.txt
--------- -------
1269 2 files
README.txt というテキストファイルがあるのがわかる。
また、先ほどのgithubに「README.txt」とこれをzipにした「README.zip」があるのでこれを使用して解析を行う。
% pkcrack -C demo.zip -c README.txt -P README.zip -p README.txt
Files read. Starting stage 1 on Wed Dec 21 03:24:44 2022
Generating 1st generation of possible key2_624 values...done.
Found 4194304 possible key2-values.
Now we're trying to reduce these...
Done. Left with 11054 possible Values. bestOffset is 24.
Stage 1 completed. Starting stage 2 on Wed Dec 21 03:24:48 2022
Ta-daaaaa! key0=be5382c6, key1= 750a330, key2=e7d4dbfe
Probabilistic test succeeded for 605 bytes.
Ta-daaaaa! key0=be5382c6, key1= 750a330, key2=e7d4dbfe
Probabilistic test succeeded for 605 bytes.
Stage 2 completed. Starting password search on Wed Dec 21 03:28:13 2022
Key: 63 72 61 63 6b
Or as a string: 'crack' (without the enclosing single quotes)
Key: 63 72 61 63 6b
Or as a string: 'crack' (without the enclosing single quotes)
Finished on Wed Dec 21 03:28:13 2022
解析に成功し、パスワードが「crack」ということが分かった。
0件のコメント