はじめに
デジタルデータの保護は現代社会において非常に重要です。ファイルを暗号化して機密性を保つためのツールは数多く存在しますが、その中でも「BestCrypt」は広く利用されているディスク暗号化ソフトウェアの一つです。しかし、パスワードを忘れてしまったり、セキュリティ監査の一環としてパスワード強度を評価する必要がある場合、どのように対処すればよいでしょうか?
ここで登場するのが、強力なパスワード回復ツール「John the Ripper」とその補助ツール群です。今回注目するのは、BestCryptコンテナファイル(.jbc
)からJohn the Ripperが解析可能な形式のハッシュデータを抽出するためのPythonスクリプト、bestcrypt2john.py
です。
このブログ記事では、bestcrypt2john.py
の基本的な使い方から、具体的なコマンド例、そして関連ツールについて、初心者にも分かりやすく解説していきます。この記事を読むことで、BestCryptコンテナのパスワード回復プロセスにおけるbestcrypt2john
の役割と利用方法を深く理解できるでしょう。
BestCryptとは?
BestCryptは、フィンランドのJetico社によって開発された商用ディスク暗号化ソフトウェアです。1995年に最初のバージョンがリリースされ、Windows、Linux、macOS、Androidといった複数のプラットフォームで利用可能です。
BestCryptには主に2つのエディションがあります:
- BestCrypt Volume Encryption: ハードディスクドライブ全体やパーティションを暗号化します。起動前の認証機能も提供し、OSが起動する前にパスワード認証を要求することで、システム全体のデータを保護します。
- BestCrypt Container Encryption: ファイルとして存在する仮想ディスク(コンテナ)を作成し、その中に保存されたデータを暗号化します。このコンテナファイル(拡張子は通常
.jbc
)は、パスワードを入力してマウントすることで、通常のドライブのようにアクセスできます。
BestCryptは、AES、Serpent、Blowfish、Twofish、DES、Triple DES、GOST 28147-89など、多様な暗号化アルゴリズムをサポートしています。動作モードとしてはCBC、LRW、XTS(AES、Twofish、Serpentのみ)などが利用可能です。
bestcrypt2john.py
は、主にこの「BestCrypt Container Encryption」で作成されたコンテナファイル(.jbc
)を対象としています。
関連情報として、Jetico社はデータ消去ユーティリティ「BCWipe」も提供しており、暗号化と併用することで、より強固なデータ保護を実現できます。
John the Ripper と *2john ツール群
John the Ripper(通称 JtR)は、非常に有名なオープンソースのパスワードクラッキングツールです。元々はUnix系のパスワードハッシュ(crypt(3)形式)の脆弱性を検出するために開発されましたが、現在では非常に多くのハッシュ形式や暗号化ファイルに対応しています。
John the Ripper自体は、パスワードハッシュの解析(クラッキング)に特化しています。しかし、暗号化されたファイルや特定のアプリケーションのデータファイルから、直接パスワードハッシュを取り出す機能は持っていません。
そこで登場するのが「*2john」と呼ばれる補助ツール群です。これらは、特定のファイル形式やデータから、John the Ripperが解析できる形式のハッシュ文字列を抽出する役割を担います。多くはPythonやPerlスクリプトとして提供されています。
以下に *2john ツールの一部を示します:
zip2john
: ZIPアーカイブからハッシュを抽出rar2john
: RARアーカイブからハッシュを抽出office2john.py
: Microsoft Officeファイル(doc, xls, pptなど)からハッシュを抽出pdf2john.py
: PDFファイルからハッシュを抽出keepass2john
: KeePassパスワードデータベース(kdb, kdbx)からハッシュを抽出ssh2john.py
: SSH秘密鍵からハッシュを抽出wpapcap2john
: Wi-Fi WPA/WPA2のキャプチャファイルからハッシュを抽出- そして、今回の主役である
bestcrypt2john.py
: BestCryptコンテナファイル(.jbc)からハッシュを抽出
これらのツールは、John the Ripperのソースコードリポジトリ内の `run` ディレクトリや、Kali Linuxなどのセキュリティ向けLinuxディストリビューションの `/usr/sbin/` や `/usr/bin/` ディレクトリに含まれていることが一般的です。
bestcrypt2john.py
は、BestCryptコンテナファイル(.jbc
)を読み込み、そのヘッダー情報やメタデータからパスワード検証に必要な情報を抽出し、John the Ripperが理解できる特定のフォーマット($BestCrypt$
で始まる文字列)に変換して出力します。
bestcrypt2john の使い方
bestcrypt2john.py
の使い方は非常にシンプルです。基本的な構文は以下の通りです。
python bestcrypt2john.py [BestCryptコンテナファイル(.jbc)]
または、実行権限が付与されている場合は直接実行できます。
./bestcrypt2john.py [BestCryptコンテナファイル(.jbc)]
このコマンドを実行すると、指定された .jbc
ファイルから抽出されたハッシュ情報が標準出力に表示されます。この出力結果をファイルに保存し、John the Ripperの入力として使用します。
具体的な手順
-
bestcrypt2john の準備:
まず、
bestcrypt2john.py
スクリプトを入手します。通常、John the Ripper (Jumbo版) をインストールすると、run
ディレクトリ内に含まれています。Kali Linuxなどの環境では、/usr/sbin/bestcrypt2john
や/usr/bin/bestcrypt2john.py
として既にインストールされている場合があります。 -
ハッシュの抽出:
解析したいBestCryptコンテナファイル(例:
my_container.jbc
)に対してbestcrypt2john.py
を実行し、出力をファイル(例:bestcrypt.hash
)にリダイレクトします。python /path/to/run/bestcrypt2john.py my_container.jbc > bestcrypt.hash
または
/usr/sbin/bestcrypt2john my_container.jbc > bestcrypt.hash
bestcrypt.hash
ファイルには、以下のような形式の文字列が格納されます(実際の値はファイルによって異なります)。my_container.jbc:$BestCrypt$1$5$3$16384$240$3154116612$129$64$06b5...4251$1$5
この文字列には、暗号化アルゴリズム、ハッシュアルゴリズム、イテレーション回数、ソルトなどの情報が含まれています。
-
John the Ripper での解析:
抽出したハッシュファイル(
bestcrypt.hash
)をJohn the Ripperに渡して、パスワード解析を開始します。最も基本的な使い方は以下の通りです。john bestcrypt.hash
John the Ripperは、デフォルトのモード(シングルクラックモード、辞書モード、インクリメンタルモード)を順に試行します。
特定の辞書ファイル(例:
password.lst
)を使用する場合は、--wordlist
オプションを指定します。john --wordlist=password.lst bestcrypt.hash
解析が成功すると、クラックされたパスワードが画面に表示され、
$JOHN/john.pot
(通常は~/.john/john.pot
)ファイルに記録されます。 -
結果の確認:
クラックされたパスワードを確認するには、
--show
オプションを使用します。john --show bestcrypt.hash
これにより、
bestcrypt.hash
ファイルに対応するクラック済みのパスワードが表示されます。my_container.jbc:crackedpassword:1:2:::my_container.jbc 1 password hash cracked, 0 left
ヒント:
- John the Ripperでの解析には時間がかかることがあります。特にパスワードが複雑な場合や、辞書ファイルが大きい場合、ブルートフォース(総当たり)攻撃を行う場合は、数時間から数日、あるいはそれ以上かかることもあります。
- より高速な解析のために、GPUを利用できるHashcatと連携することも可能です。ただし、
bestcrypt2john
で抽出したハッシュ形式がHashcatで直接サポートされているか確認する必要があります。(一部の形式はサポートされています) bestcrypt2john.py
はBestCryptコンテナファイル(.jbc
)を対象としています。BestCrypt Volume Encryptionで暗号化されたボリューム全体に対しては、bestcryptve2john.py
という別のツールが用意されています。
注意点とトラブルシューティング
-
Pythonのバージョン:
bestcrypt2john.py
はPythonスクリプトです。実行環境に適切なバージョンのPythonがインストールされている必要があります。依存ライブラリが必要な場合もあります。 -
ファイルの破損: 対象の
.jbc
ファイルが破損している場合、bestcrypt2john.py
が正しくハッシュを抽出できないことがあります。 -
BestCryptのバージョン: 非常に古い、または非常に新しいバージョンのBestCryptで作成されたコンテナファイルの場合、
bestcrypt2john.py
が対応していない可能性があります。John the Ripper (Jumbo版) は頻繁に更新されるため、最新版を使用することをお勧めします。 - エラーメッセージ: 実行時にエラーメッセージが表示された場合は、その内容をよく読み、原因を特定してください。Pythonのトレースバック情報などが役立ちます。
- ハッシュ形式の警告: John the Ripperで解析する際に、複数のハッシュ形式として認識される旨の警告が出ることがあります (例: `Warning: detected hash type “BestCrypt”`, but the string is also recognized as …)。通常は自動検出で問題ありませんが、必要であれば `–format=BestCrypt` のように明示的に形式を指定することもできます。
まとめ
bestcrypt2john.py
は、John the Ripperを使用してBestCryptコンテナファイル(.jbc
)のパスワード回復や強度評価を行う際に不可欠なツールです。このツールを使うことで、コンテナファイルからJohn the Ripperが解析可能な形式のハッシュデータを簡単に抽出できます。
手順は以下の通りです:
bestcrypt2john.py
を使って.jbc
ファイルからハッシュを抽出する。- 抽出したハッシュをファイルに保存する。
- John the Ripperにハッシュファイルを指定して解析を実行する。
john --show
コマンドで結果を確認する。
パスワード回復ツールは強力ですが、その使用には責任が伴います。常に法と倫理を遵守し、正当な目的のためにのみ使用してください。この記事が、bestcrypt2john
と John the Ripper を安全かつ効果的に活用するための一助となれば幸いです。 Happy cracking (ethically)!
参考情報
- John the Ripper official website: https://www.openwall.com/john/
- Jetico (BestCrypt developer): https://www.jetico.com/
- Kali Linux Tools – john: https://www.kali.org/tools/john/ (多くの*2johnツールが含まれています)