倫理的なハッキングや侵入テストでは、システムやサーバーにアクセスする際にパスワードクラッキングが非常に重要です。
システムやデータベースでは、パスワードがプレーンテキスト形式で保存されることはほとんどありません。
パスワードはデータベースに保存される前に常にハッシュされ、検証プロセス中にハッシュが比較されます。
採用されている暗号化に応じて、システムごとにパスワード ハッシュが異なる方法で保存されます。また、ハッシュがあれば、どんなパスワードでも簡単に解読できます。
この記事では、便利で優れた Hashcat コマンドライン ツールを使用してパスワード ハッシュを解析する方法を説明します。
それでは始めましょう。
でもその前に…

ハッシュ関数とは何ですか?
ハッシュとは、ハッシュ関数として知られる数学関数を使用して、通常の入力テキストを固定サイズのテキスト文字列に変換するプロセスです。アルゴリズムを使用すると、長さに関係なく、あらゆるテキストを整数とアルファベットのランダムな組み合わせに変換できます。
- 入力とは、ハッシュされるメッセージを指します。
- ハッシュ関数とは、文字列をハッシュ値に変換するMD5やSHA-256などの暗号化アルゴリズムです。
- そして最後に、結果としてハッシュ値が得られます。

ハッシュキャットとは何ですか?
Hashcat は最も迅速なパスワード回復ツールです。これは、高度に複雑なパスワードを短時間で解読できるように設計されています。そして、このツールは ワードリスト攻撃 と ブルート フォース攻撃 の 両方 も 可能 です 。
Hashcat には 2 つの亜種があります。 CPU および GPU (グラフィック プロセッシング ユニット) ベース。 GPU ベースのツールは、CPU よりも短い時間でハッシュを解析できます。 GPU ドライバーの要件は公式 Web サイトで確認できます。
特徴
- 無料かつオープンソース
- 200 を超えるハッシュ タイプのバリエーションを実装できます。
- Linux、Windows、macOS などのマルチオペレーティング システムをサポートします。
- CPU や GPU のサポートなどのマルチプラットフォームが利用可能です。
- 複数のハッシュが同時にクラックされる可能性があります。
- Hex-salt ファイル と hex-charset ファイルは 、自動パフォーマンス チューニングとともにサポートされてい ます 。
- 組み込みのベンチマーク システムが利用可能です。
- 分散クラッキング ネットワークは、オーバーレイを使用してサポートできます。
他の機能も Web サイトからご覧いただけます。
ハッシュキャットのインストール
まず、Linux システムが最新のプログラムとツールを備えた最新の状態であることを確認します。
このためには、ターミナルを開いて次のように入力します。
$ sudo apt update && sudo apt upgrade
Hashcat は通常、Kali Linux にプリインストールされています。このツールはパスワードクラッキングセクションにあります。ただし、Linux ディストリビューションに手動でインストールする必要がある場合は、ターミナルに次のコマンドを入力します。
$ sudo apt-get install hashcat
ツールの使用法
Hashcat を使い始めるには、いくつかのパスワード ハッシュが必要です。クラックするハッシュがない場合は、最初にハッシュをいくつか作成します。
コマンドラインを使用してハッシュを作成するには、次の形式に従ってください。
echo -n "input" | algorithm | tr -d "-">>outputfiename
たとえば、以下の md5 アルゴリズムを使用していくつかの単語をハッシュに変換したことがわかります。
┌──(root💀kali)-[/home/writer/Desktop]
└─# echo -n "" | md5sum | tr -d "-">>crackhash.txt
echo -n "password123" | md5sum | tr -d "-">>crackhash.txt
echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt
echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt
echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
そして出力はcrackhash.txtファイルに保存されます。
次に、指定されたファイルに保存されたハッシュを確認します。
┌──(root💀kali)-[/home/writer/Desktop]
└─# cat crackhash.txt
066d45208667198296e0688629e28b14
482c811da5d5b4bcd497ffeaa98491e3
72a2bc267579aae943326d17e14a8048
2192d208d304b75bcd00b29bc8de5024
caae8dd682acb088ed63e2d492fe1e13
ご覧のとおり、解読すべきハッシュがいくつかあります。これは、選択したアルゴリズムを使用してハッシュを作成する手順です。
次のステップは、Linux マシンで Hashcat ツールを起動することです。 Hashcat を使用するには、次のコマンドを使用するだけです。
$ hashcat --help
ツールを実行するために必要なオプションがすべて表示されます。ターミナルでは、すべての攻撃モードとハッシュ モードを見つけることができます。
コマンドの一般的な形式は次のとおりです。
$ hashcat -a num -m num hashfile wordlistfile
ここで、「num」は、使用する特定の攻撃とハッシュ モードを表します。ターミナルをスクロールすると、すべての攻撃とハッシュ モードの正確な数値を見つけることができます。たとえば、md4 の場合は数値が 0、sha256 アルゴリズムの場合は数値が 1740 です。
私が使用する単語リストはrockyou wordlistです。その単語リストはパス /usr/share/wordlists で簡単に見つけることができます。
locate コマンドを使用して、その単語リストのパスを見つけることもできます。
┌──(root💀kali)-[/home/writer]
└─# locate rockyou.txt
最後に、wordlist ファイルを使用してハッシュを解析するには、次のコマンドを使用します。
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
このコマンドを実行すると、実行時エラー (トークン長例外エラー) が発生する場合がありますが、これは簡単に解決できます。
これを解決するには、各ハッシュを別のファイルに個別に保存します。このエラーは、CPU または GPU の速度が低い場合に発生します。コンピュータに高速プロセッサが搭載されている場合は、単一のファイル自体と同時にすべてのハッシュを簡単に解析できます。
したがって、エラーとすべてを修正すると、結果は次のようになります。
┌──(root💀kali)-[/home/writer/Desktop]
└─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt
hashcat (v6.1.1) starting...
OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=============================================================================================================================
* Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344405
* Bytes.....: 139921671
* Keyspace..: 14344398
* Runtime...: 1 sec
8276b0e763d7c9044d255e025fe0c212: @987654
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 8276b0e763d7c9044d255e025fe0c212
Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs)
Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs)
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4096/14344398 (0.03%)
Rejected.........: 0/4096 (0.00%)
Restore.Point....: 0/14344398 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456 -> pampam
Started: Sun Dec 12 08:06:13 2021
Stopped: Sun Dec 12 08:06:16 2021
上記の結果では、辞書キャッシュの詳細の後に、ハッシュが解読され、パスワードが明らかになっていることがわかります。
結論
Hashcat を使用してパスワードを解析することについて、よりよく理解していただけたでしょうか。
また、侵入テスト用のさまざまなブルート フォース ツールや、いくつかの最良のペネトレーション テスト ツールについて知りたいと思うかもしれません。
