ウェブサイト検索

Linuxでハッシュをクラッキングするためのhashcatの使い方


パスワードを破ることは、侵入テストに興味があるなら学ぶべき重要なスキルです。ここでは、hashcatを使用してLinux上でハッシュを破る方法を説明します。

サイバーセキュリティの分野で初心者ですか?攻撃側に立ちたいですか?レッドチームとして、サイバーキルチェーンの活動を実行するための多くの技術や戦術を学びます。その中の一つが特権昇格であり、そこでパスワードハッシュを取得します。

ハッシュキャットは、様々な攻撃モードを使用して既知のハッシュを用い、保存された認証情報をブルートフォースで解析する強力で多機能なツールです。この記事では、パスワードを見つけるためにペネトレーションテスター、システム管理者、スパイ、またはハッカーによって使用されるこのパスワードクラッキングユーティリティについて説明しています。

ハッシュとは何ですか?

ハッシングは、一方向の数学的関数またはユニークな識別子であり、入力のサイズ/長さに関係なく固定長の出力を返します。したがって、これはハッシュ値を解読するために暗号化のように鍵を必要としない不可逆的なプロセスです。

ハッシングの最も一般的な目的は、データ転送中の改ざんからデータの整合性を確保することです。ハッシングの特性は以下の通りです:

  • 迅速な計算を提供します
  • 良いアルゴリズムは異なる入力に対して同じ出力を避けます
  • 彼らは決定論的な性質を持っています。
  • 入力の小さな変更が出力ハッシュ値に大きな影響を与えます

なぜhashcatを使用するのか?

hashcatは、スレッドの数を設定し、優先度に基づいて実行を制限できるマルチスレッドユーティリティです。MD4、MD5、SHA1、SHA512、bcrypt、HMAC-SHA512、NTLM、MySQL、WHIRLPOOLなど、300以上のハッシュアルゴリズムをサポートしています。Windows、Linux、Unix、BSDを含むすべてのタイプのオペレーティングシステムで利用可能です。

hashcatを使用してパスワードハッシュを解読する方法

hashcatは、より良いカバレッジを提供するために、さまざまな攻撃モード(コンビネータ、ルールベース、ブルートフォース推測、ハイブリッド、辞書攻撃)を提供しています。ここでは、hashcatがハッシュ化されたパスワードを解読するために使用するいくつかの攻撃の説明を示します:

  1. ブルートフォース攻撃: ブルートフォース攻撃は、すべての可能な文字の組み合わせを利用して正確なパスワードを特定します。しかし、最大のパスワードの長さと文字数に制限があります。さらに、高度なブルートフォース攻撃は複雑さの仮定をすることで時間を最適化することもできます。たとえば、高度なブルートフォース技術は、最初の文字が大文字である可能性が高く、数字がパスワードの最後に現れる可能性が高いと仮定することができます。
  2. 辞書攻撃:辞書攻撃は、ターゲットに関する情報やユーザー全体に観察されたパターンに基づいて、事前に計算されたパスワードのリストを利用します。そのため、最も一般的に使用されるパスワードのいくつかを取り、それにいくつかの置換を加えて範囲を広げます。
  3. ハイブリッド攻撃:ハイブリッドは、前述の攻撃の組み合わせであり、辞書攻撃によってパスワードが「クラッキング可能」かどうかを確認し、不可能な場合はブルートフォース手法に移行します。

Linuxにhashcatをインストールする方法

hashcatはKali Linuxにデフォルトで含まれています。UbuntuおよびDebianにインストールするには:

sudo apt-get update
sudo apt-get install hashcat

Fedora、CentOS、およびその他のRHELベースのディストリビューションでは:

sudo dnf update
sudo dnf install hashcat

Arch Linuxにhashcatをインストールする方法:

sudo pacman -Syu
sudo pacman -S hashcat

インストール後は、ヘルプコマンドを使用して利用可能なオプションをすべてリストします:

hashcat --help

いくつかのhashcatオプションとその説明は以下の通りです:

オプション

説明

-m

デフォルト値が0のハッシュの種類、すなわちMD5ハッシュ

-a

攻撃の種類、0はストレート攻撃、2はコンビネーション、3は総力攻撃です。

-o

出力ファイルに壊れたパスワードを保存する

単語リスト

ハッシュを一致させて破るためのパスワードリストへのパスが必要です

注意: hashcatを使用する前に、あなたのシステムがそのハードウェア動作要件に準拠していることを確認してください。詳細については公式ウェブサイトをチェックしてください。

Linuxの/etc/shadowファイルからハッシュをクラッキングする

/etc/shadowファイルは、Linux上のすべてのユーザーのパスワードの乱雑またはハッシュ化された値を保存します。これは、厳格なアクセス権限を持つ重要なファイルであり、ルートアカウントのみにアクセス可能でなければなりません。

したがって、もし通常のユーザーアカウントを通じて読み取り可能な/etc/shadow ファイルに遭遇した場合、ルートアカウントのハッシュ値を取得し、hashcatユーティリティを使用してパスワードハッシュを解読することができます。

デモンストレーションの目的で、ルートアカウントに変更し、新しいユーザーアカウント alice を作成して、hashcatがどのように機能するかを理解してください。

sudo su
sudo useradd -c "Alice" alice

passwdコマンドを使用してパスワードを作成します:

passwd alice

次のようにして/etc/shadowファイル内のハッシュ化されたパスワード値を確認してください:

cut -d: -f1 /etc/shadow | grep alice

出力 :

alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:19023:0:99999:7::

上記の出力にあるハッシュは「alice:」から始まります。それを新しいファイルhash.txtに保存してください。

ハッシュ関数の種類と関連する参照値を特定するには、hashcatのウェブサイトにアクセスすることができます。SHA512ハッシュモードは一般的に$6$の用語で識別され、参照値は1800です。

ログイン定義ファイル login.defs 内にも暗号化方法を探すことができます。

grep ENCRYPT_METHOD /etc/login.defs

次に、hashcatコマンドを使用してハッシュ関数の関連値を次のように確認します:

hashcat -h | grep sha512

次に、ハッシュキャットユーティリティを使用して、攻撃モードのための-aフラグ、ハッシュ参照値用の-mフラグ(ハッシュ関数名をサポートしていないため)、hash.txtファイルのパス、および単語リストrockyou.txtへのパスを指定してハッシュをクラッキングします。

hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txt

出力 :

<snip>
.
.
$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:12345
.
.
<snip>

注: Kali Linuxでは、rockyou.txtファイルはデフォルトで/usr/share/wordlistsディレクトリ内にあります。他のワードリストを使用する場合は、ターミナルで次のコマンドを実行します:

locate wordlists | less

出力 :

ただし、他のLinuxディストリビューションの場合は、次のようにGitHubリポジトリからrockyou.txtファイルをダウンロードする必要があります:

wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txt

Linuxでhashcatを使ってパスワードを解読する

適切に構築された認証システムは、ユーザーのパスワードを平文で、かつ目に見える形で保存しません。これはセキュリティの脆弱性を引き起こす可能性があります。より良い認証メカニズムは、パスワードをハッシュとして安全でアクセス不可能なファイルに保存します。しかし、hashcatのようなパスワードクラッカーは、さまざまな攻撃モードを使用してパスワードを解読または推測するように設計されています。

この記事では、ペネトレーションテスターがハッシュ化されたパスワードをハッシュキャットユーティリティを使用して解析する方法を詳述しています。レッドチームのメンバーとして、攻撃者が認証コントロールを侵害するために使用できる技術を理解し、システムの抜け穴をカバーするためのガイドラインを提供することが必要です。

関連記事: