システム脆弱性のオープン系ツールを用いた検証

ネットワークのセキュリティ確立に最適な手法やソフトウェアを見極めるのは、IT管理者にとって難題の1つだ。特にセキュリティ関連製品の場合、その謳い文句どおりの恩恵が得られるかを確認するのは非常に困難である。こうしたネットワークの安全度を検証する手法の1つが、攻撃側の手口を実際にシミュレートしてみる侵入テスト(ペネトレーションテスト)というプロセスだ。通常このプロセスでは、インターネット検索ないしその他のオープンソース系ソースから必要な情報を収集した上で、ターゲットとなるネットワークにNmapなどのツールを用いたスキャニングとマッピングを実行し、目的のコンピュータへの侵入経路となり得る脆弱点を探し出して、実際にコンピュータを攻撃するという手順が取られる。有益な侵入テストを実施するにはセキュリティに関する広範な知識が必要なのは当然だが、同時に不可欠なのが、下記に紹介するオープンソース系ツールなども含めた各種の関連ソフトウェアである。

パスワードおよびログイン情報のクラッキング

セキュリティを維持する上で、最も突破されやすい弱点の1つがパスワードである。というのも、一般のユーザはパスワード指定時にランダムな文字列を選ぶとは限らないからだ。例えば、とあるイギリス系のテクノロジ関連ブログによると、英国における使用度の高いパスワードのベスト10には、「123」、「123456」、「password」という文字列がランクインしているそうである。なおこの集計には、恋人の誕生日や姓名など、第三者が簡単に推測できるタイプのパスワードは含まれていない。また適切なパスワードを選ぶ人であっても、同じ文字列を使い回す傾向が見られるという。例えば同一のパスワードでカバーしているアプリケーションの数を調べた調査によると、そうしたアプリケーションは5つ以上あると答えた者が67%おり、9つ以上と答えた者も32%に上るとのことだ。サイトによっては未だに暗号化を施すことなくログイン情報を送信しているところもあるので、ずさんなパスワードの使用法は、より重大な事態を招く危険性を秘めている。

パスワードを解読する最も簡単な手口は、それを盗むことである。例えばFTPやTelnetなど旧世代に属するプログラムには暗号化によるパスワード保護機能が用意されていないので、これらのプロトコルを用いたネットワークトラフィックを盗聴すると、簡単にパスワードを入手することができてしまう。実際、ネットワークトラフィックの盗聴は、Wiresharkなどのプログラムで簡単に行うことができる。また攻撃側が同じLAN内部に存在するのであれば、ARPスプーフィング(偽造)という手口を使って、サブネットを流れるすべてのトラフィックを特定のコンピュータにリダイレクトさせることができる。逆に、LANの外部から攻撃を仕掛けてパスワードなどの秘匿性の高い情報を盗み取る場合、最も頻用されているのがフィッシングという手口である。その他、不正侵入できたコンピュータないしは外部に公開されているコンピュータにキーロガーというソフトウェアをインストールしておくのも、暗号化が施されていないパスワードを盗み出す手口の1つである。

セキュアプロトコルでは、ユーザ認証時にプレインテキスト(無暗号化)でのパスワード送信は行わないようになっている。その代わりセキュアプロトコルでは、パスワードに何らかの暗号化を施すか、あるいは既知パスワードに属すことを示す情報を暗号化した上でパスワードを送信する。同様にパスワードを記録する際には、パスワードハッシュ(暗号化の一形態)としてハードディスクに格納される。

ただし、パスワードにプロテクトを施しておけば、絶対に攻撃側に利用されないという訳ではない。パスワードをクラッキングする手口には、使われていそうなパスワード文字列を類推し、盗み出しておいたパスワードハッシュとこうした推定結果を比較する、という方式もあるからだ。またセキュリティの甘いパスワードだと、John the Ripperなどのツールを用いるだけで簡単に解析できてしまう場合もある。またWindowsにはパスワードハッシュの格納法に欠陥があり、事前に演算されたパスワードハッシュのテーブルを参照することで、最大14キャラクタ長のパスワード文字列が極めて短時間で解読されてしまう場合がある。

こうしたパスワードハッシュにアクセスしなくても、ログイン時に使われる情報を推測することで、セキュリティの甘いパスワードを突破できる場合も存在する。例えばTHC Hydraは、こうしたパスワードの推測プロセスを自動化するためのツールだ。Hydraの動作原理は、パスワードとして想定される文字列を登録しておいたファイルを読み込んで、総当たり式にすべての候補を1つずつ試してゆくというものである。特にHydraでは、パスワードの推測プロセスを並列処理化することで単位時間当たりの推測量を増強することが可能だ。こうした推測プロセスの並列処理化によってパスワードのクラッキング速度がどの程度高まるかについては、THC Hyrdraの解説ページに具体的な事例が示されている。これは、295個のエントリを登録したパスワードファイルを用意し、そのうち1つが正しいパスワードであるという設定である。実行結果は、FTPに対するクラッキングをシングルタスクで行った場合が平均46分(手作業でのパスワード入力に相当)であったのに対し、128タスクを並列処理させた場合は30秒程度で済んでいる。

バッファオーバーフロー攻撃

ネットワークによっては、パスワードのクラッキング程度では歯が立たず、より高度なテクニックを駆使しないと不正アクセスできないという場合も存在する。そうしたテクニックの1つが、悪意を持ってコンピュータシステムへの不正侵入を試みるプログラマたちが過去20年以上に渡って使い続けている、バッファオーバーフロー攻撃という手口だ。こうしたバッファオーバーフロー攻撃で利用されるのは、入力パラメータに対する適切なチェックや制限を施していない一種の欠陥プログラム群である。そしてバッファのオーバーフローが誘発されたシステムは、クラッシュしたり、あるいはコマンドの不正実行が行えるようになってしまう。またSmashing the Stack for Profit and Fun(趣味と実益のためのスタック破壊法)は、PCプラットフォームに対するバッファオーバーフロー攻撃のやり方を最初に解説した草分け的存在であり、現在でもこの種の行為をする際の絶好の入門ガイドとなっている。

バッファオーバーフロー攻撃に必要なコードを書き下すには、プロセッサのアーキテクチャに関する詳細な知識やアセンブリコードの記述法など、かなり高度な技能が求められる。こうした技能面での負担を大幅に軽減してくれるのがMetasploit Frameworkであり、これを利用すると比較的簡単にシステムの脆弱性を突いた攻撃を実行できる。実際MetasploitのWebサイトによると、このユーティリティの謳い文句は「Point. Click. Root.」(ポイントしてクリックすればルートになれる)なのだそうだ。

このMetasploit Frameworkとは、脆弱性実証コードの作成、テスト、実行に必要な手続きを自動処理するために用意された環境と言っていいだろう。同様の機能を装備したものにはCanvasやCore Impactなどの商用製品も存在するが、後者を利用するとなると数千ドルの出費を覚悟しなければならない。

Metasploitで採用されている攻撃システムは、ペイロードと脆弱性実証コードという2つのパートに分かれている。バッファオーバーフロー攻撃はその性質上、ターゲットとなるプロセッサのアーキテクチャやインストールされているソフトウェアのバージョンなどに深く依存しているため、ある脆弱性実証コードは特定バージョンのソフトウェアでしか機能しない、というケースが多々存在する。そして前述したペイロードとは、システム攻撃時に実行されるアクションのことで、ターゲットとなるソフトウェアの複数バージョンをカバーしたい場合に有用となることが多い。Metasploitに用意されているデフォルトのペイロードでは、攻撃対象のマシンに対するリモートスクリーンビュワーサーバの植え付け、ローカルシェルとリスニングポートの関連づけ、攻撃元のマシンに対するリバースシェルの生成、コマンドの実行などを行うことができる。こうしたMetasploitに装備されているペイロード数は現状で65を超えており、9種類のオペレーティングシステムと4種類のアーキテクチャに対応している。また攻撃手法をカスタマイズすることもできるので、攻撃パターンとしては100通り近くを試すことが可能だ。

Metasploit Frameworkには、コンソール、コマンドラインシェル、Webベースという3つのインタフェースが用意されている。いずれのインタフェースも、機能は基本的に同じだ。最初のステップは、用いる攻撃手法を利用可能なリストから選択することである。なお個々の攻撃手法ごとに、その説明とターゲットとなる脆弱性の一覧が付属している。攻撃手法の選択後に行うのは、リモートホストのアドレスや脆弱なポートなど、ターゲットに固有なオプションの指定である。次に攻撃内容に応じたペイロードを選択するが、その際には個々のペイロードに対する追加オプションの設定が必要となる場合もある。これらの指定が終了すると、後はボタンをクリックするだけで、所定の攻撃が実行される。すべてが成功した場合、ターゲットとされた脆弱なシステムに対する制御権は、見知らぬ攻撃者により陥落寸前となっているはずだ。

侵入テストとディストリビューション

侵入テストを行えるLinuxディストリビューションは多数存在している。自分がどのディストリビューションを使うべきかが分からない場合は、1枚のDVDに収録されている中から適切なものを探すことも可能だ。SecureDVDはそうしたライブDVDディストリビューションの1つで、侵入テストおよびその後の診断とリカバリに必要なライブディストリビューションとして、利用度の高いベスト10が収録されている。ディストリビューションの収録内容は、パスワードクラッキング用ユーティリティ、ネットワークスキャナ、MACおよびIPアドレスのスプーフィング用ツール、脆弱性実証コードだ。これは侵入テストの初学者にとっての有益な学習用リソースであるだけでなく、経験者にとっても有用なツールとして機能するであろう。

侵入テストの基本

侵入テストは、ペネトレーションテストあるいはその省略形のペンテストとも呼ばれるが、これは第三者機関などに依頼して、実際にシステムリソースに対して不正アクセスが行えるかを試してもらうことで、管理下にある情報処理システムの脆弱性を評価する行為である。侵入テストでは試験的にシステムへの不正アクセスを試みることになるが、こうした行為を行うには、ソーシャルエンジニアリング(社会的な手段でセキュリティ情報を入手する行為)、パスワードのクラッキング、ネットワークのスキャニング、コンピュータの脆弱性攻撃、ダンプスターダイビング(ごみ箱の情報を漁って個人情報を盗む行為)など、セキュリティに関する豊富な知識と関連ツールが必要となる。

こうした第三者機関による検証が普及しつつある背景には、企業の運営するネットワークに対してセキュリティの強化を求める最近の動向や、関連する法体系の整備が存在している。例えばSarbanes-Oxley Act(サーベンス・オクスリー法:書類の改竄などを重罪化した米国の企業改革法)の第404条を見ると、企業には有効な内部統制を行う責任があるとされている。同様に医療産業の分野においても、HIPAA(医療保険の相互運用性と責任に関する米国の法律)などの法律の存在が、情報セキュリティに対する外部評価の必要性を高めていると見ていいだろう。また、ネットワークに侵入された際に企業側が負担しなければならない経済的な損失の大きさも、ネットワークセキュリティの評価に対する意識を高めている要素の1つだ。

ここで理解しておくべき重要なポイントは、侵入テスト用ツールを使用するにあたっての理由には、正当化できるものもあれば正当化できないものもあるということである。例えば、システムの所有者からの書面による明示的な許可を得ていない侵入テストは、どのような理由を付けても正当化することはできない。またコンピュータセキュリティの専門家にとっては、Computer Ethics Instituteの定めたTen Commandments of Computer Ethics(コンピュータ倫理に関する十戒)が1つのガイドラインとなるだろう。ここに、その一部を引用しておく。

  • 汝、他者を害するためにコンピュータを使うことなかれ。
  • 汝、他者のコンピュータ作業を妨害することなかれ。
  • 汝、コンピュータを窃盗行為に用いることなかれ。
  • 汝、コンピュータを使用する際には、常に同胞を愛し敬うべし。

ただし、侵入テストさえ実施しておけば、その他のセキュリティは不要になるという訳ではない。セキュリティを維持する上では、健全なセキュリティポリシーの確立、基準となるセキュリティ指標の制定、個々のネットワークユーザが果たすべきセキュリティトレーニングの実施、セキュリティ監査の定期実行など、様々な活動が不可欠だからである。

NewsForge.com 原文