Linux上でのJohn the Ripperを使用したパスワードクラッキング
John the Ripperは、Linuxシステムで利用可能な最も強力なパスワードクラッキングツールの1つです。使いやすく、さまざまなタイプのパスワードハッシュをサポートし、ほぼすべてのタイプのパスワードをブルートフォース攻撃できるため、非常に人気があります。
このチュートリアルでは、さまざまなLinuxディストリビューションにJohn the Ripperをインストールし、Linuxコマンドを使用してパスワードをクラッキングする方法を学びます。また、ハッシュアルゴリズムの基本、ブルートフォースクラッキングの試行に使用する単語リスト、攻撃者がパスワードを取得しにくくするためのベストプラクティスについても学びます。
警告!<&47;b>
ジョン・ザ・リッパーを使用し、パスワードクラッキングを試みるのは、テスト目的のみに限り、自分のパスワードハッシュに対してのみ行うべきです。他人のアカウントのセキュリティを侵害し、パスワードを取得することは法律に触れる可能性があるため、自分のシステムでのみプログラムを使用し、サイバーセキュリティについて学び、自分のアカウントパスワードの有効性をテストするために使用してください。
このチュートリアルでは学びます:<&47;strong>
- 主要なLinuxディストリビューションにJohn the Ripperをインストールする方法
- ジョン・ザ・リッパーは何に使われ、どのように機能しますか?
- パスワードハッシュはどのように取得されますか?
- 単語リストは何に使われますか?
- ブルートフォース法とは何ですか?
- パスワードハッシュ化方法のリスト
- John the Ripperを使ってLinuxアカウントのパスワードを解読する方法
- John the Ripperを使って暗号化されたzipアーカイブを解読する方法
ビデオ
ジョン・ザ・リッパーのインストール
ほとんどのLinuxディストリビューションには、デフォルトでJohn the Ripperがインストールされていません。しかし、Kali LinuxやParrot OSのようなセキュリティベースおよびペネトレーションテスト用のディストロには、すでにツールがインストールされています。
システムのパッケージマネージャーを使用してJohn the Ripperをインストールするには、以下の適切なコマンドを使用できます。
Ubuntu、Debian、Linux MintにJohn the Ripperをインストールするには:
sudo apt updatesudo apt install john
Fedora、CentOS、AlmaLinux、Rocky Linux、Red HatにJohn the Ripperをインストールするには:
sudo dnf install john
Arch LinuxとManjaro LinuxにJohn the Ripperをインストールするには:
sudo pacman -S john
ジョン・ザ・リッパーの始め方
ジョン・ザ・リッパーがインストールされたので、使用を開始する準備が整いました。しかしまず、プログラムの基本的な動作について説明しましょう。ジョン・ザ・リッパーがパスワードクラッキングをどのように行うか、そしてパスワードがどのように露出し脆弱であるかを理解しておくことが重要です。ジョンを実行する前に、これらの基本を把握しておくことが望ましいです。
ジョン・ザ・リッパーはどのように機能しますか?
この時点で、ジョン・ザ・リッパーがパスワードを解読するために使用されることを理解していることでしょう。しかし、それは具体的にどのように機能するのでしょうか?
私たちは、パスワードハッシュを介してパスワードを解読するためにJohn the Ripperを使用します。ペネトレーションテスト中に、セキュリティ専門家はパスワードハッシュを取得し、それをJohnに渡して解読を試みます。
パスワードハッシュの取得
パスワードハッシュは、さまざまな方法で取得できます。それはすべて、対象となるオペレーティングシステム、プログラム、または使用されているプロトコルによります。たとえば、Linuxはシステムアカウントのパスワードハッシュを&47;etc&47;shadow<&47;code>ファイルに保存します。これらのパスワードハッシュに対してJohnを実行することで、システム上のユーザーのパスワードを解読しようとすることができます。Zipファイルもハッシュを介したパスワードクラッキングの別の例です。zip2john<&47;code>ユーティリティは、保護されたzipファイルのパスワードハッシュを検出し、Johnがそれを解読できるようにします。
パスワードハッシュを取得するもう一つの一般的な方法は、パケットスニッフィングを通じて行われます。特にHTTP、FTP、Telnetのようなセキュリティが低い古いプロトコルでは、これらのプロトコルはパスワードハッシュを平文で送信することが知られているため、2つのエンドポイントの間にあるデバイスでハッシュを簡単にキャプチャできます。
知っていましたか?<&47;b>
パスワードハッシュは暗号化されたパスワードではありません。すべてのパスワードはユニークなハッシュを生成し、ハッシュは逆算できないように設計されています。ジョン・ザ・リッパーは、パスワードを直接解読するのではなく、何千(または何百万、またはそれ以上、パスワードの複雑さに応じて)の文字列をハッシュ化し、そのハッシュをパスワードハッシュと比較します。2つのハッシュが一致すれば、ジョンはあなたのパスワードが何であるかを知ることができます。
単語リストとブルートフォース
ジョンはパスワードを取得するために、単語リストとブルートフォース手法に依存しています。単語リストは、各行にテキストの文字列がある単なるテキストファイルです。通常、最も効果的な単語リストは、最も一般的に見つかるパスワードが上部に配置されています。誰でも単語リストを作成でき、多くのものがオンラインで見つかります。それらはしばしば数万行、あるいは場合によっては数百万行にも及びます。非常に人気のある単語リストの一つはrockyou.txt<&47;code>と呼ばれています。ファイルの最初の10行を見てみましょう:
zcat /usr/share/wordlists/rockyou.txt.gz | head -10
123456
12345
123456789
password
iloveyou
princess
1234567
rockyou
12345678
abc123
上記の文字列は、最も一般的に見られるパスワードのいくつかです。ジョンにハッシュファイルの作業をさせ、使用する単語リストとしてrockyouを提供すると、これらのパスワードは瞬時に解読されます。なぜなら、最初にこれらの単純で一般的なパスワードを試すからです。
注意<&47;b>
過去10年間の技術の進歩や、ユーザーにアカウントのセキュリティを意識させるためのキャンペーンにもかかわらず、上記のような単純で予測可能なパスワードは、企業環境内でも非常に一般的です。
John the Ripperはデフォルトで独自の単語リストを持っており、通常は&47;usr&47;share&47;john&47;password.lst<&47;code>にあります。Johnをインストールすると自動的にダウンロードされるはずです。より専念したハッカーは通常、さまざまな単語リストを使用します。Kali Linuxにはそれらが数十個含まれており、次のコマンドを実行することで見つけることができます。
locate wordlist
ブルートフォースは、ジョンが提供された単語リストからすべてのパスワードを試した後に頼る方法です。この方法では、ジョンは単にランダムな文字列を生成し、そのうちの1つが最終的に機能することを期待します。単語リストを使用するよりもはるかに効果が薄いですが、非常に安全なパスワードを破る際に頼られる一般的な戦術です。
ブルートフォース攻撃は膨大な計算能力を必要とすることに注意してください。また、ハードウェアやパスワードの複雑さに応じて、多くの時間がかかります。強力なハードウェアを備えた高度なシステムは、短時間でより多くのパスワードの組み合わせを試すことができ、パスワードが解読される可能性が高まります。サイバーセキュリティ企業は、ジョン・ザ・リッパーを使用してパスワードをブルートフォースするために専用のビデオカードを12枚以上搭載した「スーパーコンピュータ」を持っていることがよくあります。
ハッシュ法
さまざまなソフトウェアは、パスワードハッシュを生成するために異なるハッシュアルゴリズムを使用します。おそらく聞いたことがある一般的なアルゴリズムには、MD5、SHA-256、SHA-512、HMACなどがあります。さらに、これらのアルゴリズムにはさまざまな実装があり、同じアルゴリズムの他の実装と比較してもユニークなハッシュが生成されます。
John the Ripperは、数十種類の異なるハッシュ化方法と実装を処理するために開発されています。多くの場合、パスワードに使用されているハッシュ化方法を知る必要はなく、Johnがそれを特定し、適切なクラッキングプロセスを私たちの助けなしに適用できます。しかし、これは常に当てはまるわけではありません。どのようなハッシュ化方法を扱っているのかを知っておくと、Johnに何を使うべきかを伝えることができます。その例を以下に示します。
--list=formats<&47;code>オプションを使用することで、ジョンが扱えるハッシュ化メソッドを確認できます。
john --list=formats
John the Ripperを使ってパスワードを解読する方法
パスワードクラッキングとJohn the Ripperの基本的な理解ができたので、実際に手を動かしてみましょう!Johnを使用できるシナリオは多数ありますが、今すぐ自分のLinuxシステムで使用できる2つのケースを取り上げます。
まず、ローカルシステムのユーザーのパスワードハッシュを含むシステムの/etc/shadowファイルでJohn the Ripperを実行する方法を見てみましょう。次に、暗号化された.zipファイルでJohn the Ripperを実行する方法を見ていきます。
クラック &47;etc&47;シャドウ
Linuxシステムのアカウントのパスワードハッシュの一部は、
&47;etc&47;passwd<&47;code>と&47;etc&47;shadow<&47;code>ファイルの両方に存在します。ジョンには、これらの2つのファイルを結合してクラックを試みることができる形式にするunshadow<&47;code>ツールが付属しています。以下のコマンドを使用して、これらの2つのファイルから新しいファイルhashes.out<&47;code>を生成してください。
sudo unshadow /etc/passwd /etc/shadow > hashes.out
-
ハッシュファイルが準備できました。これで、ファイルに対してジョンを実行してパスワードが見つかるかどうかを確認できます。このファイルは
crypt<
ハッシュ化メソッドを使用しているため、ジョンがそれを解読する方法を知るために指定する必要があります。john --format=crypt hashes.out
今、私たちは待っています。ジョンがパスワードを見つけた場合、以下のような出力が表示されます:
関連ファイルは現在のディレクトリの
.john<
ファイルに保存されます。ls .john john.log john.pot
john.pot
ファイルには、クラックされたパスワードが含まれています。以前のコンソール出力を失った場合に、再度参照する必要があるかもしれません。cat .john/john.pot
パスワードが見つからない場合、ジョンにブルートフォースを試させるか、別の単語リストを提供することができます。
john --format=crypt --wordlist=/usr/share/wordlists/rockyou.txt hashes.out
注意<&47;b>\n
\n Johnに--rules<&47;code>オプションを使用してルールを提供することも可能で、これによりJohnは単語リスト内の各文字列に適用するルールを指示する設定ファイルを読み取ることができます。たとえば、Johnを設定して各文字列に数字0-9を追加することを試みることができます。これは私たちの入門チュートリアルの範囲外であり、高性能ハードウェアを持つペネトレーションテスターによってのみ高度なシナリオで使用されます。
ジョンは私たちのパスワードを見事に解読しました
ZIPファイルを解凍する
ビデオ
いつものように、まずは作業するためのハッシュファイルが必要です。
zip2john<&47;code>ユーティリティを使用して、パスワード保護されたzipファイルのハッシュファイルを生成しましょう。
zip2john archive.zip > hash.out
次に、ジョンを使ってパスワードを解読できるか見てみましょう:
john hash.out
カスタム単語リストを提供するか:
john --wordlist=/usr/share/wordlists/rockyou.txt hash.out
私たちのzipファイルのパスワードを成功裏に解読する
締めくくりの考え
このチュートリアルでは、Linuxシステム上でJohn the Ripperを使用してパスワードを解読する方法を見ました。また、パスワード解読の基本と、ハッシュ方式、単語リスト、ブルートフォースを用いたプロセスの仕組みについても学びました。John the Ripperは使いやすいですが、非常に強力で効果的なツールです。基本的に、このプロセスはハッシュファイルを取得することから始まります。unshadow<&47;code>、zip2john<&47;code>などの方法を通じて、または他の手段を用いて、ハッシュファイルに対してJohnを使用し、どのようなハッシュアルゴリズムが使用されているかを指定し、オプションで単語リストを提供します。Kali Linuxには多くの関連するパスワード解読ツールと多くの単語リストが付属しているため、パスワード解読にはそれを使用することをお勧めします。