検証環境

% 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件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です