門番を強化する:なぜパスワード監査が重要なのか
ある火曜日の午前2時、私のサーバーのログが爆発しました。1時間あたり4,500回を超えるSSHログイン試行があり、そのすべてが ‘admin’ や ‘root’ をターゲットに ‘Password123’ のバリエーションを試していました。この出来事は、私のセキュリティに対する考え方を変えました。強固なファイアウォールを構築していましたが、これほど大量의 試行が行われるということは、ポリシーの強度はユーザーが実際に選択するエントロピー(複雑さ)に依存するのだと痛感したのです。
企業ネットワークでは、「8文字以上、大文字1つ、記号1つ」といった標準的なルールを強制することがよくあります。しかし、現代のハードウェアにとって、これらの要件はもはや些細なものです。HashcatやJohn the Ripper(JtR)を使用して自社のインフラを監査することは、単なるレッドチームの仕事ではありません。それはシステム管理者の基本的な責任です。攻撃者が計算を始める前に、その「強力な」パスワードがプレッシャーの下でどれだけ耐えられるかを正確に把握しておく必要があります。
これらのポリシーを設計する際、私はよくToolCraftのPassword Generatorを使用して、高エントロピーな文字列のベンチマークを行います。これはクライアントサイドで動作するツールなので、テスト用の文字列がバックエンドサーバーに漏洩する心配がありません。真にランダムな16文字の文字列と、ユーザーが好む予測可能なパターンの間のギャップを視覚化するのに役立ちます。
インストール:監査環境のセットアップ
ほとんどのLinuxディストリビューションでは、これらのツールの導入は簡単です。私は通常、UbuntuやKaliなどのDebian系システムを使用しますが、ロジックはどこでも同じです。
John the Ripperのインストール
John the Ripperは、迅速な監査に適したツールです。CPUベースで動作し、数十種類のハッシュ形式を自動的に処理します。最良の結果を得るには、最大限のフォーマットサポートが含まれる “jumbo” バージョンをインストールしてください。
sudo apt update
sudo apt install john
Hashcatのインストール
Hashcatは真打ちとも言えるツールです。OpenCLやCUDAを介して、重い処理をGPUにオフロードします。参考に、現代的なNVIDIA RTX 4090を使用すると、1秒間に250万回以上のSHA-512 (Unix) ハッシュを試行できます。標準的なCPUでは5万回に到達するのもやっとでしょう。専用カードのないサーバーではCPUにフォールバックしますが、その圧倒的なパフォーマンスの優位性は失われます。
sudo apt install hashcat
以下のコマンドを実行して、ハードウェアが認識されているか確認します。
hashcat -I
設定:ハッシュの分析とワードリストの構築
クラッキングを始める前に、何を扱っているのかを理解する必要があります。Linuxはユーザーパスワードを /etc/shadow に保存します。これらは通常SHA-512でハッシュ化されており、ハッシュ文字列の $6$ プレフィックスで識別できます。
John用にShadowファイルを準備する
John the Ripperでは、パスワードハッシュとユーザーのメタデータをマージする必要があります。これには unshadow ユーティリティを使用します。
sudo unshadow /etc/passwd /etc/shadow > my_passwords.db
chmod 600 my_passwords.db
カスタムワードリストの構築
rockyou.txt のような汎用的なリストは良いスタート地点ですが、ローカルなコンテキスト(文脈)を見落としがちです。私の経験上、従業員は会社名、現在の西暦、地元のスポーツチームなどをよく使用します。crunch を使用して、これらの特定のパターンを生成できます。
ユーザーが “Company2024!” のようなパターンでルールを回避している疑いがある場合、その仮説をテストするためにバリエーションを生成します。特定の文字列を確認する場合、私は時々 Hash Generator を使用して、一般的なローカルパターンのハッシュを手動で作成します。これは、データをWebに公開することなく、特定の推測が監査で見つかったハッシュと一致するかどうかを確認できる、安全な100%クライアントサイドの方法です。
Johnによる基本的な監査の実行
まずはJtRの「シングルクラック」モードから始めましょう。これはユーザー名やGECOS情報をベースに使用するもので、驚くほど多くのユーザーがこれで特定されます。
john --single my_passwords.db
それで結果が出ない場合は、ワードリスト攻撃に移行します。
john --wordlist=/usr/share/wordlists/rockyou.txt my_passwords.db
検証:ポリシー強度の評価
成功とは、すべてのパスワードを解読することではありません。「侵害までの時間」を測定することです。ハッシュの20%が10分以内に解読されるようであれば、いくら「特殊文字」を要求していても、そのポリシーは失敗しています。
Hashcatによる高度なクラッキング
Hashcatはハッシュの種類ごとに特定のモードを指定する必要があります。SHA-512 (Unix) の場合、モードは 1800 です。ハッシュ文字列だけを hashes.txt に抽出したと仮定して、ルールを用いた辞書攻撃を実行できます。
ルールは強力です。’s’ を ‘$’ に置き換えたり、末尾に ‘2024’ を付け加えたりといったバリエーションを自動的に試行します。
hashcat -m 1800 -a 0 hashes.txt /path/to/wordlist.txt -r /usr/share/hashcat/rules/best64.rule
データの解釈
実行中に ‘s’ を押すとステータスが表示されます。「Speed(速度)」と「Estimated Time(予定時間:ETA)」を確認してください。12文字のパスワードのETAが現在のハードウェアで80年と表示されれば、そのポリシーは機能しています。ETAが4時間であれば、より長いパスフレーズを義務付ける時期です。
解読されたパスワードのパターンに注目してください。人々は現在の月を使っていませんか? “Summer2024” などはどうでしょう? この定性的なデータは、ユーザー教育において極めて重要です。複雑さのルールが、単に予測可能な置換を招くだけであることを経営陣に証明できます。
継続的なセキュリティのためのベストプラクティス
- 長さを優先する: 16文字の文章は、
P@ssw0rd!のような8文字の「複雑な」パスワードよりも指数関数的に解読が困難です。 - ハッシュ方式の近代化: GPUベースの攻撃を遅らせるために、システムがArgon2や、反復回数の多いSHA-512を使用していることを確認してください。
- 四半期ごとの監査: 侵害が発生するのを待ってはいけません。数ヶ月ごとにこれらのテストを実行し、悪意のある者がそれを見つける前に弱いパスワードを特定しましょう。
- プライバシー優先のツール: 正規表現のテストやJSONログの整形を行う際は、クライアントサイドツールを使用してください。私はこのために ToolCraft をブックマークしています。機密データをローカルマシンから出すことなく処理できるからです。
HashcatとJohn the Ripperをワークフローに組み込むことで、セキュリティに関する「推測」を止めることができます。脆弱性をデータに基づいて理解し、実際に機能する防御策を構築できるようになります。

