【ITニュース解説】Password Cracking Project #1 – From Privilege Escalation to Hashcat
2025年09月06日に「Dev.to」が公開したITニュース「Password Cracking Project #1 – From Privilege Escalation to Hashcat」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
パスワードクラッキングの実践記録。Metasploitable2からユーザー情報を抜き出し、Hashcatでパスワード解析を試みた。デフォルトのワードリストでは成功しなかったが、強力なワードリストやブルートフォース攻撃の重要性、そして安全なパスワード設定の必要性を学んだ。一連の攻撃手順を理解することが大切だ。
ITニュース解説
このニュース記事は、システムエンジニアを目指す初心者にとって非常に実践的なテーマであるパスワードクラッキングの一連の流れを、具体的なプロジェクトを通して解説している。セキュリティの基礎を学ぶ上で、攻撃者の視点からシステムがどのように狙われるのかを理解することは、堅牢なシステムを構築するための重要な第一歩となる。
このプロジェクトの目的は、Metasploitable2という、意図的に多くの脆弱性が仕込まれた仮想OS上で、パスワードクラッキングのエンドツーエンドのプロセスを実際に体験し、その手法を学ぶことであった。Metasploitable2は、セキュリティ学習やテストの目的で広く利用されており、安全な環境で様々な攻撃手法を試すことができる。今回のチャレンジは、攻撃側の立場からシステムのセキュリティの弱点を探る「レッドチーミング」の一環として行われた。
パスワードクラッキングは、一般的にユーザーのパスワードを不正に取得する試みを指す。実際の攻撃では、まず何らかの方法でシステムの内部に侵入し、次に特権を昇格させることで、より機密性の高い情報にアクセスしようとすることが多い。今回のプロジェクトのタイトルには「特権昇格からHashcatへ」とあるが、具体的な特権昇格の手順は省かれ、パスワード情報の取得とその解析に焦点が当てられている。
プロジェクトの最初のステップは、システムからユーザー情報とパスワードのハッシュ値を格納するファイルをダンプすることであった。具体的には、passwdファイルとshadowファイルをコピーした。passwdファイルはユーザー名、ユーザーID、グループIDなどの基本的なユーザー情報を保持している。一方、shadowファイルは、各ユーザーのパスワードのハッシュ値という、パスワードそのものではなく、パスワードを特定の計算で変換した不可逆な文字列を格納している。これにより、パスワードが直接保存されることによるリスクを低減している。これらのファイルは、scpコマンドを使ってリモートのMetasploitable2からローカル環境へ安全にコピーされた。scpはSSH(Secure Shell)という暗号化された通信プロトコルを利用し、ネットワーク経由でファイルを安全に転送するためのコマンドである。
次のステップでは、ダンプしたpasswdファイルとshadowファイルを結合し、Hashcatというパスワードクラッキングツールが処理できる形式のファイルを作成した。これにはunshadowというツールが用いられた。unshadowは、passwdファイルからユーザー名を取得し、対応するshadowファイル内のハッシュ値と結合することで、Hashcatが読み込める「ユーザー名:ハッシュ値」のような形式のファイル(ここではcombined.txt)を生成する。
最後の主要なステップは、Hashcatを使ってこの結合されたハッシュファイルからパスワードを解析する作業だった。Hashcatは非常に高速なパスワード回復ツールであり、様々な攻撃モードとハッシュアルゴリズムに対応している。このプロジェクトでは、以下のコマンドが実行された。
hashcat -m 500 -a 0 combined.txt /usr/share/wordlists/rockyou.txt
このコマンドに含まれるオプションにはそれぞれ意味がある。
-m 500は、クラッキング対象のハッシュの種類を指定する。500はMD5crypt、FreeBSD MD5、Apache MD5などの特定のハッシュアルゴリズムを示すコードである。ハッシュアルゴリズムは、パスワードをハッシュ値に変換する際に使われる計算方法の種類であり、セキュリティの強度に直結する。
-a 0は、攻撃モードを指定する。0は「辞書攻撃」を意味する。辞書攻撃とは、事前に用意された単語リスト(ワードリストや辞書ファイルと呼ばれる)に載っている単語を一つずつパスワードとして試していく方法である。
combined.txtは、先ほどunshadowで作成した、ユーザー名とハッシュ値が結合されたファイルである。
/usr/share/wordlists/rockyou.txtは、クラッキングに使うワードリストのパスを指定している。rockyou.txtは、実際に流出したパスワードから生成された非常に有名なワードリストであり、多くの人が使っている推測されやすいパスワードが大量に収録されている。
プロジェクトの結果として、システムからハッシュ値を正常に抽出することはできたが、rootユーザーのパスワードはデフォルトのrockyou.txtというワードリストではクラックできなかった。これは、rootパスワードがrockyou.txtに含まれていない、比較的強力なパスワードであったことを示唆している。
このプロジェクトから学んだことはいくつかある。まず、パスワードクラッキングには強力なワードリストが不可欠であること、そして辞書攻撃で破れない場合にはブルートフォース(総当たり攻撃)のような、より時間と計算リソースを要する手法も必要になるという点だ。ブルートフォース攻撃は、考えられる全ての文字の組み合わせを試すため、非常に時間がかかるが、パスワードが十分に短く単純であれば有効な場合もある。
次に、単にパスワードをクラックできるか否かの「結果」だけでなく、そのプロセスや「ワークフロー」を理解することの重要性が強調されている。攻撃者がどのような手順で情報を収集し、どのようなツールを使い、どのようにパスワードを解析しようとするのかを学ぶことで、システムエンジニアはより効果的な防御策を講じることができるようになる。
そして、最も重要な教訓の一つとして、システムを防御する側(ディフェンダー)は常に強力なパスワードポリシーを強制し、最新かつ安全なハッシュアルゴリズムを使用すべきだという点が挙げられる。MD5のような古いハッシュアルゴリズムは、現代の計算能力を持つと容易に破られてしまう可能性があるため、bcrypt、scrypt、Argon2といった、より計算コストが高く、クラッキングが困難なアルゴリズムへの移行が推奨される。また、パスワードの最低文字数、複雑性(大文字、小文字、数字、記号の組み合わせ)、定期的な変更などを強制することで、ユーザーが設定するパスワードの強度を高める必要がある。
このプロジェクトの次のステップとしては、より強力なカスタムワードリストの作成や、ブルートフォース手法の試行が挙げられている。また、パスワードクラッキングだけでなく、次のレッドチーミングの課題としてDVWA(Damn Vulnerable Web Application)という別の脆弱なウェブアプリケーションを使ったSQLインジェクション攻撃への挑戦が示唆されており、セキュリティ学習には様々な攻撃手法の理解が必要であることがわかる。このような実践的な経験を積むことで、システムエンジニアはシステムの脆弱性を多角的に理解し、より安全なシステム設計と運用に貢献できるようになるだろう。