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