Linux に John the Ripper をインストールする

Kali LinuxBeginner
オンラインで実践に進む

はじめに

John the Ripper(しばしば JtR と略される)は、多くのオペレーティングシステムで利用可能な、人気があり強力なオープンソースのパスワードセキュリティ監査およびパスワードリカバリツールです。パッケージマネージャーからインストールできる場合も多いですが、ソースコードからコンパイルすることで最新バージョンを入手でき、カスタム設定も可能になります。

この実験では、ソースコードをダウンロードし、コンパイルし、システム PATH に追加して簡単にアクセスできるようにすることで、Linux システムに John the Ripper をインストールする方法を学びます。すべての操作は ~/project ディレクトリ内で行われます。

John the Ripper ソースコードのダウンロード

このステップでは、John the Ripper のソースコードを公式 GitHub リポジトリからダウンロードします。その後、コンパイルの準備としてダウンロードしたアーカイブを展開します。現在の作業ディレクトリは ~/project です。

まず、wget コマンドを使用して、John the Ripper の「Jumbo」コミュニティ拡張バージョンの特定の安定版をダウンロードします。

wget https://github.com/openwall/john/archive/refs/tags/1.9.0-jumbo-1.tar.gz

ファイルがダウンロードされ保存されていることを示す出力が表示されるはずです。

--2023-10-27 10:30:00--  https://github.com/openwall/john/archive/refs/tags/1.9.0-jumbo-1.tar.gz
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
...
Saving to: ‘1.9.0-jumbo-1.tar.gz’

1.9.0-jumbo-1.tar.gz      100%[===================================>]  22.13M  65.4MB/s    in 0.3s

2023-10-27 10:30:01 (65.4 MB/s) - ‘1.9.0-jumbo-1.tar.gz’ saved [23201448/23201448]

次に、tar コマンドを使用して、ダウンロードした .tar.gz ファイルの内容を展開します。

tar -xzvf 1.9.0-jumbo-1.tar.gz

このコマンドは、ソースコードを含む新しいディレクトリを作成します。現在のディレクトリの内容を一覧表示することで確認できます。

ls -l

新しく作成されたディレクトリ john-1.9.0-jumbo-1 が表示されるはずです。

total 22668
-rw-r--r-- 1 labex labex 23201448 Jul 25  2021 1.9.0-jumbo-1.tar.gz
drwxr-xr-x 9 labex labex     4096 Jul 25  2021 john-1.9.0-jumbo-1

コンパイルに必要な依存関係のインストール

このステップでは、John the Ripper をソースからコンパイルするために必要なツールとライブラリをインストールします。ソフトウェアのコンパイルは、コンパイラや開発ライブラリなどの他のパッケージに依存することがよくあります。

まず、依存関係の最新バージョンを取得するために、システムのパッケージリストを更新するのが良い習慣です。

sudo apt-get update

次に、Ubuntu のような Debian ベースのシステムでソフトウェアをビルドするために不可欠なパッケージをインストールします。build-essential(GCC コンパイラと make を含む)、libssl-dev(暗号化サポート用)、および yasm(アセンブラ)が必要です。

sudo apt-get install -y build-essential libssl-dev yasm

-y フラグは、プロンプトに自動的に「yes」と応答するため、ユーザーの操作なしでインストールを進めることができます。パッケージがダウンロードされインストールされる際に、多くの出力が表示されます。

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
...
The following NEW packages will be installed:
  build-essential dpkg-dev g++ g++-11 libssl-dev libstdc++-11-dev make yasm
...
Setting up libssl-dev:amd64 (3.0.2-0ubuntu1.10) ...
Setting up make (4.3-4.1build1) ...
...

依存関係がインストールされたので、ソースコードのコンパイル準備が整いました。

ソースコードからの John the Ripper のコンパイル

このステップでは、John the Ripper のソースコードをコンパイルします。コンパイルプロセスは通常、./configuremake の 2 つの主要なコマンドを含みます。

まず、展開されたソースコードフォルダ内の src ディレクトリに移動します。

cd john-1.9.0-jumbo-1/src/

次に、configure スクリプトを実行します。このスクリプトは、システムに必要な依存関係をチェックし、システムに合わせてカスタマイズされた Makefile を作成することでビルド環境を準備します。

./configure

出力には、チェックの結果が表示されます。

...
checking for yasm... yasm
checking for OpenSSL... yes
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating common.h
...
Configuration finished. You can now run "make".

設定が完了したら、make コマンドを使用してコンパイルを開始できます。以前のビルドファイルを削除するために make -s clean を使用し、4 つの並列ジョブでコンパイルを実行するために make -sj4 を使用します。これにより、プロセスが高速化されます。

make -s clean && make -sj4

このプロセスは完了までに数分かかる場合があります。完了すると、コンパイルされた john 実行可能ファイルが ../run/ ディレクトリに配置されます。ビルドが成功した場合、コマンドプロンプトはエラーなしで戻ります。

John the Ripper のインストールの検証

このステップでは、実行可能ファイルとその組み込みテストスイートを実行して、John the Ripper が正常にコンパイルされたことを検証します。

コンパイルされたバイナリは src ディレクトリではなく、run ディレクトリにあります。そちらに移動しましょう。

cd ../run

次に、引数なしで john 実行可能ファイルを実行して、使用方法情報を表示します。これは、プログラムが実行されることを確認する簡単な方法です。

./john

バージョンと使用方法の情報が表示され、プログラムが実行可能であることが確認できます。

John the Ripper 1.9.0-jumbo-1 [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
...

より詳細なチェックを行うには、組み込みのベンチマークとセルフテストを実行します。これにより、さまざまなハッシュアルゴリズムがテストされ、システム上で正しく機能していることが確認されます。

./john --test

テストは 1 分か 2 分実行され、多くの異なるハッシュタイプのベンチマーク結果が表示されます。

Benchmarking: descrypt, traditional crypt(3) [DES 128/128 SSE2-16]... DONE
Many salts:	12032K c/s real, 12032K c/s virtual
Only one salt:	11141K c/s real, 11141K c/s virtual

...

Benchmarking: LM [DES 128/128 SSE2-16]... DONE
Raw-MD5 [MD5 128/128 SSE2-16]... DONE
...
All tests passed

最後に「All tests passed」と表示されることで、ビルドが正しく機能していることが確認できます。

John the Ripper をシステム PATH に追加する

このステップでは、john 実行可能ファイルが含まれるディレクトリをシステムの PATH 環境変数に追加します。これにより、ターミナル内のどこからでも、フルパスを入力せずに john を実行できるようになります。

john 実行可能ファイルは現在 ~/project/john-1.9.0-jumbo-1/run にあります。これをユーザー全体でグローバルにアクセス可能にするには、このパスをシェルの設定ファイルに追加する必要があります。ラボ環境では Zsh を使用しているため、ファイルは ~/.zshrc です。

echo コマンドを使用して、export コマンドを ~/.zshrc ファイルに追加します。

echo 'export PATH="$HOME/project/john-1.9.0-jumbo-1/run:$PATH"' >> ~/.zshrc

このコマンドは、run ディレクトリを PATH の先頭に追加します。この変更は新しいターミナルセッションからのみ有効になります。現在のセッションに適用するには、設定ファイルを「ソース」する必要があります。

source ~/.zshrc

これで、正しく機能するかどうかを確認しましょう。まず、run ディレクトリからホームディレクトリに移動します。

cd ~

ホームディレクトリから、パスを指定せずに john を実行してみてください。

john

PATH が正しく設定されていれば、以前と同じ使用方法情報が表示されます。これにより、どこからでも John the Ripper を実行できることが確認できます。

John the Ripper 1.9.0-jumbo-1 [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
...

まとめ

おめでとうございます!Linux システムで John the Ripper をソースコードから正常にインストールしました。

この実験では、以下の方法を学びました。

  • wget を使用してソフトウェアパッケージのソースコードをダウンロードする方法。
  • apt-get を使用して必要なビルド依存関係をインストールする方法。
  • ./configuremake を使用してソースコードを構成およびコンパイルする方法。
  • プログラムとその組み込みテストを実行してコンパイルの成功を確認する方法。
  • どのディレクトリからでも簡単にアクセスできるように、プログラムの場所をシステムの PATH に追加する方法。

ソースからのコンパイルというこのプロセスは、Linux ユーザーにとって基本的なスキルであり、ソフトウェアのインストールをより細かく制御できます。これで、パスワードセキュリティ監査のための John the Ripper の強力な機能を探索する準備が整いました。