WindowsでGPGPU パスワードクラッカーを使う

グラフィックボードの演算能力をパスワード
クラックに応用
WindowsでGPGPU
パスワードクラッカーを使う
番外
編
本章ではCain and Abel のさまざまな機能を解説
してきたが、最後に番外編としてGPGPU を使ったパ
スワードクラッカーツールを紹介しよう。Cain and
Abelよりもはるかに高速で解析してくれるゾ。
文● TTS
GPGPU を使ったパスワードクラック
◉ パスワードクラッカーのトレンドは
GPU 利用へ !
べて短時間に解析できることが証明されている。
こうしたことから、Cain & Abel は Windows 向
ここ数年、浮動小数点演算の処理効率がよい
けのパスワードリカバリツールとしてメジャーで優
GPU を画像処理以外の目的に応用する GPGPU が
秀なツールではあるものの、パスワードクラックに
注目されている。NVIDIA の CUDAやAMD の ATI
CPU を使うという点では、すでに古典的だとも言
Streamといった開発環境が出現したことが大き
われている。
な要因で、暗号解読やデーターベース処理など、
GPGPU でのパスワードクラックは、NVIDIAや
GPGPU での性能向上が期待されている。
AMD のグラフィックカードを用いて解析処理を行
パスワードクラックの世界でも GPGPU への期
わせるため、事前にパスワードクラックに利用で
待は高まっており、数年前よりGPU のパワーを利
きるグラフィックカードを所有しているか、もしく
用したアプリケーションが登場している。MD5 や
は、購入するなど用意しておく必要がある。
NTLM ハッシュなどのクラックでどれも CPU に比
表 1:GPU ベースのパスワードクラックツールの例
ソフト
hashcat-gui
oclHashcat
IGHASHGPU
RAR GPU Password Recovery
BarsWF
Cryptohaze GPU Rainbow Cracker
Cryptohaze Multiforcer 1.0
MD5 GPU Crack Elcomsoft Distributed Password Recovery
Advanced PDF Password Recovery Professional Edition
Elcomsoft Wireless Security Auditor
Lightning Hash Cracker
Elcomsoft Phone Password Breaker
Advanced Office Password Recovery
Extreme GPU Bruteforcer
Accent RAR Password Recovery
Accent OFFICE Password Recovery
RainbowCrack for GPU
Pyrit
OS
Linux/Windows
URL
http://hashcat.net/
Windows
http://golubev.com/hashgpu.htm
Windows
Linux/Windows/
Mac OS X ※
Linux/Windows
http://3.14.by/en/md5
Windows
http://www.elcomsoft.com/
http://cryptohaze.com/
http://bvernoux.free.fr/md5/index.php
Windows
http://www.insidepro.com/eng/egb.shtml
Windows
http://www.passwordrecoverytools.com/
Linux/Windows
http://project-rainbowcrack.com/
FreeBSD/MacOS X/Linux http://code.google.com/p/pyrit/
※ GPU Rainbow Cracker のみ
76
◉ GPUベースのパスワードクラックツール
こう。利用する GPU は、AMD 製 Radeon HD6970
GPUベースのパスワードクラックツールを簡単に
を搭載した玄人志向の RH6970-E2GHD/DP であ
まとめたのが表1である。代 表的なフリーで利用
る(編集部よりレンタル)。
できるツールとしては、IGHASHGPU、oclHashcat、
これを搭載した PC 環境は以下で、通常であれ
Cryptohaze Multiforcer などがあり、有償のツー
ばサブ機レベルのマシンであり、これに高機能グ
ルとしては、
Elcomsoft社やPasscovery社の各ツー
ラフィックカードが載っている奇妙な環境で、OS
ルなどがある。
は、Windows7 Ultimate 64bit 版、インストールし
ツールによっては、NVIDIAのみ対応しているもの
たドライバーは、Catalyst Software Suite
(64bit)
(Cryptohaze Multiforcer など)や、ここ数年アッ
プデートがないもの(BarsWF、MD5 GPU Crack な
ど)
、商用へ移行したもの(RAR GPU Password
Recovery など)もあるので注意してほしい。
今回の記事では、Windows に対応しフリーで
利用できるものとして、IGHASHGPU、hashcatgui を中心に解説していく。
◉ テスト環境
今回のテスト環境についても簡単に解説してお
のバージョン11.8 である。
●テストマシンのスペック
CPU:Celeron Dual-Core E3400
MB:ASUS P5K-VM
Memory:DDR2 4GB
(2GBx2)
HDD:SATA2 7200RPM 16MB キャッシュ
VGA:RH6970-E2GHD/DP
電源: 550W
OS:Windows7 Ultimate 64bit
IGHASHGPUを使ったブルートフォースクラック
IGHASHGPUは、Windows向けのブルートフォー
◉ IGHASHGPU の基本的な使い方
スハッシュクラックツールで、ATI、NVIDIA いずれ
IGHASHGPU の基本となるコマンド入力は以下
の GPU にも対応している(ただし、すべてのグラ
のとおりだ。
フィックカード対応というわけではない)。CUI の
ツールなので、コマンド入力が苦手なユーザーは
ighashgpu.exe
敬遠してしまうかもしれないが、使用方法の説
[switch:param]
[hashfile.txt]
明が入った README ファイルやサンプルコマンド
ファイルも付属しているので、これらを参考にすれ
[switch:param] [hashfile.txt]とあるが、hash-
ば、使用自体はそれほど難しくはないだろう。
file. txt は複数のハッシュをクラックする時の指
注意点としては、オフィシャルページのダウン
定で、ハッシュが1つの場合は、switch:paramで
ロードリンクは、
バージョン0.62という古いものが
指定していけばよい。ここでは、代表的な例を
記載されているので、ダウンロードする際には、オ
README ファイルにあるサンプルから抜粋して示
フィシャルブログに記載されている最新版をゲッ
すが、その他の各オプションについてはヘルプや
トするようにしてほしい。原稿執筆段階での最新
README ファイルを参照してほしい。
版はバージョン 0.93.17.1だ。
図 1は、MD5 ハッシュをクラックするためのコ
ちなみに、今回テストで使用しているグラフィッ
マンド入力例である。
クカード(Radeon HD6970)も古いバージョンで
冒頭にある、-h:239361613fe5281d8efb90e7
は使用できず、v0.93.17.1でも MD4/MD5 のみ対
f8e0ceb0 部分は見てわかるように、アタックする
応と限定的である。
ハッシュを指定(-h: ハッシュ)している。
-t:md5 は、クラックするハッシュタイプの 指
定(-t: パラメーター)で、MD4であれば、-t:md4、
77
ighashgpu.exe -h:239361613fe5281d8efb90e7f8e0ceb0 -t:md5 -c:sd -m:????assw???1234
図 1 MD5 ハッシュをクラックするためのコマンド入力例
SHA1なら -t:sha1というように入力すればよい。
ドは、bigpassword1234である。
-c:sd は、
クラックに用いる文字セットの定義
(-c:
同様にして、最大文字列(例:-max:6)やソルト
パラメーター)である。大文字 c、小文字 s、数字 d、 (-salt:e16bed51)などをパラメーターとして指定
記号 e、スペース p、すべてa、となっており、-c:sd
できる。
は、
「小文字と数字」の組み合わせを指定している。
同じようなサンプルが README ファイルにいく
-m:????assw???1234はパスワードマスクの指定
つか記載されているので、参考にしながらテスト
(-m: パラメーター)で、???? 部分のみアタックを行
していくといいだろう。
い、
その他は指定した文字列で固定される。
なお、ファンレスのグラフィックカードなどを使
このコマンドを実行した結果判明したパスワー
用していると図 2 のようにGPU の温度が高いとい
う理由から処理が中断されてしまう
Hardware monitoring enabled, threshold temperature is
90°C.
ことがある。ハードウェアのモニタリ
ングはデフォルトでは 90 度に設定さ
れており、この温 度は -hmで指定す
CURPWD: amjpa4 DONE: 04.08% ETA: 57s CURSPD: 36.5M
ることができる。例えば、95 度なら
Threshold GPU temperature reached! Exiting.
-hm:95、無効にするなら 0 を入力す
↑赤色で表示され処理中断
ればよい。ただし無理をするとカード
Processed 150 994 944 passwords in 5s.
Thus, 36 393 093 password(s) per second in average.
図 2 GPU の温度が高いという理由から処理が中断されてしまう
を壊す可能性もあることから、ファン
レスのグラフィックカードで温度指定
する際には十分注意してほしい。
CainとIGHASHGPU で解析時間を比較
では実際に、GPUとCPU では解析時間にどの
程度の違いが出るかを CainとIGHASHGPU を使
用してテストしてみることにしよう
(いずれもブルー
表 2 テストに使用したパスワード
使用する文字種
パスワード
トフォースアタック)
。
0-9
31950186
パスワードは、表 2 のようにそれぞれの条件、つ
a-b
dxylojts
まり、0-9 なら数字のみ、a-b ならアルファベット
a-b, 0-9
i0r7ja5k
小文字というよう定義して、各定義に沿った形で
a-b, A-B, 0-9
vS1v3b
生 成したものを Cain の Hash Calculatorで MD5
a-b, A-B, 0-9, 記号
(3%4Ku
ハッシュとしたものを使用している。
これらのハッシュを CainとIGHASHGPU にをク
ラックさせて、解析完了までにどのくらい時間が
78
ので、参考にしてほしい。
◉ 単純な組み合わせのパスワードを
クラック
かかるか測定する。
はじめにパスワードとして、数字のみ、アルファ
ただし、Cain
(CPU)でのクラックは、時間がか
ベット小文字のみ、アルファベット小文字+数字の
かるもの(例えば丸1日とか)もあるため、それら
8 桁のパスワード 3 種類をテストしたものを見てみ
に関しては、参考までに示される「おおよその解
よう。
析時間残」を比較対象とすることとしている。
Cain もIGHASHGPU も桁数や文字セットは同じ
それぞれ、IGHASHGPU のコマンド入力も記す
ものを指定している。
◉ 数字のみ 8 桁のパスワード:31950186
数字のみの構成は Cainでも IGHASHGPU でもほんの数秒でクラックが完了している。若干 Cain の方が時
間がかかっているが、
それほど大きな違いはない。
・IGHASHGPU のコマンド
ighashgpu.exe -h:B08B3E7097683AA3281C5A1E46FDE4EA -t:md5 -c:d -min:8 -max:8
図 3 Cain も IGHASHGPU
もほんの数秒でクラック
完了
◉ アルファベット小文字のみ 8 桁パスワード:dxylojts
アルファベット小文字のみで構成されたパスワードは、Cainではスタートしてすぐの解析残り時間が約 8 時
間と出たため、
そこでクラックは中止しているが、IGHASHGPU では、23 秒で解析が完了している。
・IGHASHGPU のコマンド
ighashgpu.exe -h:8DE60C08615D0B19624AA56FAC758289 -t:md5 -c:s -min:8 -max:8
図 4 Cain は 残り 8 時 間
に 対 して IGHASHGP は
23 秒でクラック完了
◉ アルファベット小文字+数字の 8 桁パスワード:i0r7ja5k
アルファベット小文字+数字のみの構成だが、こうしたパスワードを強固なパスワードだと思って設定してい
るユーザーも少なくないだろう。Cainでは、スタートしてすぐの解析残り時間が約 4.6日と表示されたため、そ
こでクラックは中止。
IGHASHGPU では 2 分14 秒で解析が完了している。
・IGHASHGPU のコマンド
ighashgpu.exe -h:924F5DFA0559925B26FDB1D63D6BBFE5 -t:md5 -c:sd -min:8 -max:8
図 5 Cain は残り 4.6 日に
対して IGHASHGP は 2 分
14 秒でクラック完了
79
◉ アルファベット小文字+大文字+数字の 6 桁パスワード:vS1v3b
桁数は 6 桁と少ないので脆弱ではあるが、アルファベット小文字+大文字+数字を組み合わせて、辞書にな
いようなランダムなパスワードである。Cainではスタートしてすぐのクラック残り時間、3 時間弱という表示で
クラックを停止しているが、IGHASHGPU でのクラックは、6 秒で完了している。
・IGHASHGPU のコマンド
ighashgpu.exe -h:F591311F1A761D11E06E44FD2B48E423 -t:md5 -c:csd -min:6 -max:6
図 6 Cain は残り 3 時間
に 対 して IGHASHGP は
6 秒でクラック完了
◉ アルファベット小文字+大文字+数字+記号の 6 桁パスワード:(3%4Ku
このパスワードも桁数は少ないのでとても脆弱だが、アルファベット小文字+大文字+数字+記号の組み合
わせだ。これはパスワードの作成時に「この組み合わせで作成するのが良い」と言われる文字種別の組み合わ
せではある。
Cainではスタートしてすぐのクラック残り時間は、丸1日ちょいという表示で作業自体を停止。IGHASHGPU
でのクラックは、16 秒で完了した。
・IGHASHGPU のコマンド
ighashgpu.exe -h:3E21B68438D8229F62621BBECB9D37F0 -t:md5 -c:csde -min:6 -max:6
図 7 Cain は 残 り 丸 1 日
強 に 対 し て IGHASHGP
は 16 秒でクラック完了
◉ テスト結果について
しかしながら、ショボイCPU をテスト対象として
ストではなく、CPUと比べてどの程度の違いがあ
いるということもあるものの、圧倒的な速度の違
るかを簡易的に比較している程度にとどめている。
いを見せつけられたといってもよいだろう。
また、
アルファベット・数字・記号を組み合わせ
これまでのブルートフォースアタックであれば、
たパスワードクラックも当初は 8 桁でテストして
ある程度の桁数があり、複数の文字セットが使わ
いたのだが、IGHASHGPU+HD6970 でも 8 桁だ
れていれば、クラッキングまでに数百日などどい
とGPU 温度が 90 度を超えたことや数時間かかり
う残時間が表示されて、現実的ではなかったが、
そうな状況だったため、テスト時間短縮のために 6
GPGPU によって、パスワードクラッキングの速度
桁としている。
が現実的なものに近づいてきていることは間違い
ただし、次回にチャンスがあるのならば、パ
ないようだ。
スワードの種 類も各10 種 類くらい、また桁 数も
80
6/8/10/12 桁くらいでテストしたいところである。
今回のテストは時間の関係もあって、厳密なテ
GUIで使用可能なhashcat-guiを使ってみよう
hashcat-gui は Windows および Linux( い
ずれも 32/64bit ともにサポート)で 動 作 す
るパスワードリカバリツールで、CPU、GPU
(OpenCL・CUDA をサポート)いずれも利用で
きる。今回テストで利用しているグラフィック
カード・HD6970 は、前述した現バージョンの
IGHASHGPU で は MD4/MD5 の み の 限 定 的
な利用しかできなかったが、hashcat-gui で
はその他のハッシュにも対応している(MD4、
図 8 ユーザーの環境に合わせて、32bit か 64bit の exe ファイル
を実行し、CUDA(NVIDIA)か、OpenCL(ATI)を選択できるよう
になっている
MD5、SHA1、DCC、MySQL など)。また辞書
アタック可能で、
より細かな設定もできる。
hashcat- gui は、CUI の hashcat や
oclHashcat、oclHashcat-plus などを統合し
てGUI からクラックを指定できるもので、実
行するとコマンドプロンプトが表示され、解
析が開始される仕組みとなっている。
hashcat-gui は、 単 純 なもの は 別として、
詳細な設定を行いたい場合には、直感的な操
作だけでは理解しづらい部分があり、使用す
るにはオプションの理解など、若干の習得が
必要だ。
コマンドラインでヘルプを参照したり、オ
フィシャルサイトでダウンロード可能な User
Manual(GUI バージョンは今のところない)な
どを参考にしながら使用するといいだろう。
◉ OS 環境+使用している GPU を
選択して利用を開始する
図 9 hashcat-gui のメイン画面。上部にあるタブを切り替えて使用
できる
hashcat-gui(ここでは v0.4.4 を使用)を展
開 す る と、hashcat-gui32.bin、hashcat-gui32.
う場合には、これらのタブを選択すればよい。
exe、hashcat-gui64.bin、hashcat-gui64.exe の
同 様 に、タブ に あ る「cudaHashcat-plus」お
4ファイルが存在するので、自身の使用している
よび「oclHashcat-plus」は、辞書攻撃を専門と
OS 環境に合わせて、32bit か 64bit の exeファイ
ルを実行する。
したクラッカーで、
「cudaHashcat-lite」および
「oclHashcat-lite」はブルートフォースアタッカー
起 動 時 には、 図 8 のように CPU を 使うのか、
である。
CUDA
(Nvidia)か、OpenCL
(ATI)か、を選択する
複 数のハッシュを辞 書やブルートフォースで
ウインドウが表示されるので、自身の環境に合わ
クラック する 際 に は、
「cudaHashcat」や「ocl-
せてボタンをクリックする。
Hashcat」を選択し、辞書攻撃やブルートフォース
図 9 が メ イ ン 画 面 で あ る。 上 記 タ ブ に
で、シングルハッシュなどのクラックをしたい場合
「cudaHashcat」や「oclHashcat」などのタブが表
には、plus や lite を選択するといった使い分けが
示されるので、GPU を利用したクラッキングを行
できる。
81
◉ oclHashcat-lite や
oclHashcat-plus から使ってみよう
Resourcesでは、GPU の温度設定(デフォルト
は 90 度)やデバイスの選択などの設定が行える。
はじ めて 使 う 場 合 に は、oclHashcat-lite や
実際に実行すると、②のような画面が表示さ
oclHashcat-plus から試してみ るといいだろう。
れ、s を入力すると解析状況が示される。クラック
例えば、図 10 は oclHashcat-lite を使用した例で
に成功すると、指定したアウトプットファイルにク
あ る。pass1234wordというパ スワード を MD5
ラックされたパスワードが出力される(③)。
ハッシュとして生成したものをクラックしている
例である。
◉ oclHashcat-plus の使用例
Hash にハッシュ値を入れるのはいいとして、そ
同様にして、oclHashcat-plus も使ってみよう。
の 下 段 の MASK に チ ェック を 入 れ て、
「?l?l?l?l
前述したように、oclHashcat-plus は辞書アタック
1234?l?l?l?l」と記述しているのは、パスワードマ
専用クラッカーである。基本的な使用方法は、ク
スクとして、文字列の小文字(英)の 4 桁を前後で
ラックしたいハッシュテキストを読み込むか直接
(?l?l?l?l)また、真ん中の1234 は事前にわかって
記述
(シングルハッシュ)し、辞書を指定してクラッ
いるものとして指定している。同じように、文字
クを開始するだけである(ルールの指定も可能)。
列の指定(Charsets)なども行える。
hashcat-gui の ディレ クトリに あ る oclHashcat-
文字列のオプションについては、Charsets へマ
plus の中にサンプル辞書やサンプルルールなどが
ウスを持っていくとヘルプとして、文字列のオプ
あるので、
これらを利用したり参考にするといいだ
ション指定方法が表示されるので、これらを参考
ろう。
にするか、マニュアルを参照して理解を深めると
よいだろう。
Password Length はパスワードの長さの指定で、
◉ oclHashcat で複数のハッシュを
高速クラック
また Output はクラックしたパスワードの出力の
oclHashcat-liteとoclHashcat-plus を使った後
指定だ。
であれば、oclHashcat の画面も若干わかりやすく
図 10
oclHashcat-liteを使ってみよう
1
MD5 のハッシュクラックの例。マスクの指定やパスワー
ドの長さ、出力ファイルの指定など、それほど多くのオ
プションはない
2
「Start」ボタンをクリックすると図のような DOS 画
面が表示される。ここで「s」とタイプすると解析
状況などが表示される
3
クラックに成功するとパスワードが
出力される
82
図 11
oclHashcat-plusを使ってみよう
1
クラックしたいハッシュテキストを読み込むか直接記述、
辞書を指定してクラックを開始する
2
図では NTLM ハッシュをクラックを選択。進捗状況もパー
セント表示される
3
クラックに成功するとパスワードが
出力される
図 12
oclHashcatで複数のハッシュをクラックしてみる
1
複数のハッシュを辞書ファイルとブルートフォースで解析
する
2
クラックに成功したパスワード
なっているだろう。
hashcat-gui は Cain に比べればわかりにくい点
oclHashcat では、これまでと同様にして、ハッ
が多いが、高機能で高速なパスワードクラッキン
シュを指定(ハッシュファイルで)し、ハッシュタイ
グが可能なフリーツールとしては、おさえておきた
プ、パスワード左側・右側、それぞれの辞書やマス
いところだ。今回はページの都合上、駆け足での
クの指定、またオプションで文字列やルールなど
紹介しかできなかったが、またの機会があれば、オ
を指定してクラッキングを行うことができる。
プションの設定などについて解説したい。
83