パスワードの定期変更という“不自然なルール”:セキュリティ・ダークナイト(6)(4/4 ページ)
しばしば「パスワードは○日ごとに変更しましょう」といわれるけれど、それで本当にクラックの危険性は減るの? ペネトレーションテストの現場から検証します(編集部)
パスワードの使い回しの危険性:ペネトレテストの現場から
過去の記事でも触れたが、攻撃者がWindowsホストへの侵入に成功すると、さらに侵入範囲を広げるためにホスト内の情報を収集する。侵入を広げる手掛かりとなるのが「パスワードハッシュ」だ。
攻撃者がパスワードハッシュを取得した際に行うことは、パスワードを「John The Ripper」や「RainbowCrack」ローカルでクラックすることと、それ以外にもう1つある。この記事を読まれている方はご存じだろうか、「Pass-the-hash」という手法を。
「Pass-the-hash」とは、本来の認証で使うパスワードではなく、パスワードハッシュを用いて認証を行う手法のことだ。こう説明していけば、勘のよい方ならばおおよそ見当が付くだろう。そう、パスワードの使い回しを行っている場合、一度何かしらの方法によりパスワードハッシュを取得してしまえば、他のホストについても芋づる式に侵入できてしまうのである。
今回はそれを「Keimpx」を利用して紹介しよう。以下は、脆弱性を利用した侵入を糸口に、「Pass-the-hash」を利用して侵入の拡大を行った流れである。
ここは、3台のWindowsホストを検査対象にしたときのケースを紹介する。まず、その中の1台に対し、脆弱性を利用して侵入に成功し、さらにパスワードハッシュを取得した(画面1)。
ここで、取得した「Administrator」ユーザーのパスワードハッシュと、残りの2台の対象のIPアドレスをテキストに保存し、「keimpx」でパスワードを使い回していないかを調査する。
画面2は、残りの2台において、パスワードの使い回しが行われていることを示している。「keimpx」は、調査の機能だけでなく、専用のシェルが用意されている。これを用いて、使い回しが判明した対象を操作することができるのである(画面3)。
ここでは「Do you want to get a shell from any of the targets?」という質問に「y」と回答し、パスワード使い回しが判明している対象「10.100.0.111」の「Administrator」ユーザーを選択している。この結果、Administratorユーザーとして対象の操作が可能な状態になってしまったことになる。
ここで利用できるコマンドはいくつかある。主なものだけ挙げても、システム情報を表示する「info」や「cd」「ls」「cat」のようなUNIXライクなコマンド、ファイル操作を行う「upload」「download」などがある。keimpxでは今後、レジストリの操作を行うコマンドも実装予定のようだ。なお、その他のコマンドの詳細は「help」に記されている。
今回の検査では、対象のシェルを取得する「shell」コマンドを実行した。「shell」コマンドを実行すると、対象ホストにバックドアプログラムがアップロードされる。そして、特に指定しなければtcp/2090ポートで待ち受けを行い、そこに接続してシェルを奪取できてしまう(バックドアポートを変更したい場合は「shell」コマンドの引数としてポートを指定する)。
画面4は、引数指定なしで「shell」コマンドを実行した結果である。シェル奪取後の「ipconfig」の結果から、パスワードの使い回しが判明したホスト上でコマンドが実行されていることが分かるだろう。このように、パスワードの使い回しは侵害範囲を大きく広げる危険性を秘めているのである。
おかしな常識でこれ以上惑わさないで
今回は、パスワードの使い回しの危険性について実例を基に説明した。ホストがいとも簡単に一網打尽にされてしまう危険性がお分かりいただけただろうか。この危険性はWindowsに限らず、他のシステム、サービスにも共通していえることだ。
あらためて、強固なパスワードを設定することの重要性を認識していただけたと思う。そして、パスワードの定期的な変更は無意味だとまではいわないが、それよりも先にパスワードの使い回しについて考え直す方が有効ではないかと筆者は考える。
今回はパスワードの設定に関する「伝説」を取り上げたが、これに限らずセキュリティの世界では、さまざまな「対策」「情報」が発信されている。だが、その情報の中には、形骸化しているもの、「そこにない危機を、あたかもそこにある危機のように煽る情報もまだまだたくさんあると感じている。筆者も同じ業界にいる人間として反省しなければいけないと感じることも多々ある。
重要なのは、日々、濁流のように流れてくる情報を無条件に信じるのではなく、その真偽や範囲、他の情報と比較したときの優先度などを自分の環境と比べながら見極めていくことだ。常識のようにいわれてきた情報でも、自分の頭で考え、その情報が正しいか正しくないか、必要か不必要かを自身で決めることが大切だ。情報の真偽を自分の目で見極め、取捨選択を行うことこそ、セキュリティの基本なのだから。
筆者紹介
辻 伸弘(つじ のぶひろ)
セキュリティエンジニアとして、主にペネトレーション検査などに従事している。
民間企業、官公庁問わず多くの検査実績を持つ。
自宅では、趣味としてのハニーポットの運用、IDSによる監視などを行っている。
▼辻氏のブログ「(n)」: http://n.pentest.jp/
▼辻氏のTwitter: http://twitter.com/ntsuji
Copyright © ITmedia, Inc. All Rights Reserved.