MD5のハッシュをクラックする方法

提供: セキュリティ
2017年5月13日 (土) 19:34時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「MD5の元になった値を求める方法(MD5の解読方法)を紹介します。MD5 とは、ハッシュアルゴリズムの1つです。以前はよく使...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

MD5の元になった値を求める方法(MD5の解読方法)を紹介します。MD5 とは、ハッシュアルゴリズムの1つです。以前はよく使われていたものですが、今は利用が非推奨になっております。

読み方

MD5
えむでぃふぁいぶ

概要

MD5はハッシュアルゴリズムの1つです。 このドキュメントの目的は、MD5が簡単に破れるものであり、使うべきではない、ということを理解するためのものです。 また、マシン(CPUGPU)の性能を比較することにも利用できます。

MD5は、すでに利用を推奨されているものではありません。SHA-2 などのハッシュアルゴリズムを利用してください。

ツール

MD5の作り方

echo -n a | openssl md5 |awk '{print $2}'
echo -n a | openssl md5 |awk '{print $2}' > /tmp/a.md5
echo -n b | openssl md5 |awk '{print $2}' > /tmp/b.md5

hashcat

./hashcat -a 3 -m 0 /tmp/b.md5
  • -a オプションは、アタックモード(attack mode)です。
  • アタックモードの 3 は、ブルートフォース です。
  • -m は、ハッシュタイプです。
  • ハッシュタイプ 0 は、 MD5 です。

以下は実行例です。

hashcat (v3.5.0) starting...
 
nvmlDeviceGetFanSpeed(): Not Supported
 
OpenCL Platform #1: NVIDIA Corporation
======UNIQ9af77ff06919bc09-h-4--QINU================================
* Device #1: Tesla M40 24GB, 5734/22939 MB allocatable, 24MCU
 
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
 
Applicable optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Hash
* Single-Salt
* Brute-Force
* Raw-Hash
 
Watchdog: Temperature abort trigger set to 90c
Watchdog: Temperature retain trigger disabled.
 
The wordlist or mask that you are using is too small.
This means that hashcat cannot use the full parallel power of your device(s).
Unless you supply more work, your cracking speed will drop.
For tips on supplying more work, see: https://hashcat.net/faq/morework
 
Approaching final keyspace - workload adjusted.
 
92eb5ffee6ae2fec3ad71c777531578f:b
 
Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 92eb5ffee6ae2fec3ad71c777531578f
Time.Started.....: Sat May 13 19:18:34 2017 (0 secs)
Time.Estimated...: Sat May 13 19:18:34 2017 (0 secs)
Guess.Mask.......: ?1 [1]
Guess.Charset....: -1 ?l?d?u, -2 ?l?d, -3 ?l?d*!$@_, -4 Undefined
Guess.Queue......: 1/15 (6.67%)
Speed.Dev.#1.....:        0 H/s (0.02ms)
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 7/62 (11.29%)
Rejected.........: 0/7 (0.00%)
Restore.Point....: 0/1 (0.00%)
Candidates.#1....: s -> p
HWMon.Dev.#1.....: Temp: 83c Util: 95% Core:1113MHz Mem:3004MHz Bus:16
 
Started: Sat May 13 19:18:32 2017
Stopped: Sat May 13 19:18:35 2017

John the Ripper

john --format=raw-md5 /tmp/a.md5

以下は実行例です。

$ echo -n b | openssl md5 |awk '{print $2}' > /tmp/b.md5
$ time ./john --format=raw-md5 /tmp/b.md5
Loaded 1 password hash (Raw-MD5 [MD5 128/128 AVX 12x])
Warning: poor OpenMP scalability for this hash type, consider --fork=56
Will run 56 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
b                (?)
1g 0:00:00:01 DONE 3/3 (2017-05-13 19:16) 0.5235g/s 442394p/s 442394c/s 442394C/s 123456..drb13
Use the "--show" option to display all of the cracked passwords reliably
Session completed
./john --format=raw-md5 /tmp/b.md5  9.20s user 0.06s system 355% cpu 2.606 total

まとめ

MD5 の解読は、ツールで簡単にできることがお解り頂けたと思います。 ここで紹介したツール以外でも同様のことができます。

関連項目




スポンサーリンク