【関連リンク】 http://nmap.org/ncrack/
nmapでおなじみのnmap.orgで公開されているパスワードクラッカーだ。ncrackの開発は、2009年からGoogle Summer of Codeで始まり、この記事を執筆している時点でも、バージョンはALPHA版の0.3である。
しかし筆者が使ってみたところ、対応プロトコル(サービス)は「hydra」「medusa」と比べ少ないものの安定して動作し、速度も申し分なかった。
nmapのログを使用して、検出したポート、サービスに応じたオンラインクラックを実施するという機能もある。ALPHAが取れるころにはどんなツールに進化しているのか、いまから非常に楽しみなツールだ。
オプションの詳細説明は、筆者のブログで紹介している。記事執筆時点で対応しているプロトコルは、FTP、TELNET、SSH、HTTP(S)、SMB、RDP、POP3(S)だ。
例えば、
「root」というユーザーと「ntsuji」というユーザーで、pass.dictに記述されたパスワードのクラックを、ポート2121で開放しているx.x.x.xのftpサービスに対して行う
という場合は、以下のように入力する。
ncrack --user root,ntsuji -P pass.dict -m ftp x.x.x.x:2121
筆者のブログにある「ncrack オプションメモ」をご覧いただいても分かると思うが、辞書ファイルを作成しなくても、「,」区切りで複数のユーザー名およびパスワードを指定できたり、出力/入力形式でnmapとの連携が可能だったりと、少し複雑ではあるが、その分小回りが利く設計に感じられる。
さて、少し話題を変えよう。「強固なパスワードを付けること」は、パスワードクラック対策の基本中の基本だ。そしてもう1つ、時折耳にする対策が「パスワードの定期的な変更」である。
しばしば「パスワードは○日ごとに変更しましょう」といわれる。そして、それを実装したシステムも多い。だが、パスワードを定期的に変更しさえすれば、クラックの危険性は減るのだろうか? 果たしてこの対策はどの程度の有効性を持つのだろうか?
パスワードの定期的な変更が推奨される理由を考えてみると、主に、以下の2つが挙げられるだろう。
パスワードクラックに使われる手段の多くは、気の遠くなるほどの時間をかけてさまざまな文字列の組み合わせを試すブルートフォース攻撃だ。1. は、このブルートフォース攻撃を想定し、攻撃者がすべての組み合わせを試す前にパスワードを変更すれば、不正なログインを防げるはずだ、という考えに立ったものだろう。
この対策の前提は、「攻撃者がすべてのパスワードパターンを試すこと」。例えば、8文字の英小文字のパスワードをクラックしようとする攻撃者は、「aaaaaaaa」からスタートして「zzzzzzzz」まで、26の8乗分の文字列を1文字1文字変えながら試すのだから、膨大な時間が掛かるはず……というわけだ。
だが残念ながら、机上で計算した試行時間と、実際にクラックされるまでの時間は決してイコールではない。もし「aaaaaaaa」といった単純な文字列、あるいは辞書に登録されているような「password」といった安易な言葉をパスワードに設定していれば、1つ1つ組み合わせを試していくまでもなく、容易にクラックされてしまうだろう。
従って、本当にパスワードが破られる可能性を減らしたいならば、定期的な変更よりも、パスワードの桁数と使用可能な文字種を増やして複雑性を持たせる方が有効だ。また、一定数ログインに失敗するとユーザーをロックアウトするアカウントロックも有効ではないかと考える。
次に2. の有効性について考えてみよう。これは、仮にパスワードが破られ、システムの制御が奪われたとしても、定期的に変更していれば、それ以降の悪用は阻止できるはずだという仮定に立った対策だ。
だが前述したとおり、英小文字8文字で構成されるパスワードを、いくつかの推測に基づいて実際にクラックする時間と、8の26乗通りの組み合わせを試す時間はイコールではない。脆弱なパスワード、安易なパスワードならば、想定よりも大幅に短い期間でクラックされる可能性は十分にある。残念なことに、ペネトレーションテストの現場でも、開始数分でパスワードを破ってクラックに成功するケースは少なくない。この対策については、2つのパターンに分けて次ページから見ていこう。
Copyright © ITmedia, Inc. All Rights Reserved.