FAQ: Network Intrusion Detection Systems[日本語版]

Version 0.8.3, March 21, 2000/ Japanese Tnaslation 0.8.3.j3, December 28, 2000

このFAQは、ネットワークを通じてシステムを攻撃する侵入者の発見に関して、どのようにしてそのような侵入を発見するのかというような一般的な質問に答えるものです。

Questions? Feedback? Send mail to nids-faq @ robertgraham.com 日本語での質問やご意見はkeiji @ sfc.keio.ac.jp まで。
0. このFAQに関して
- 著作権
- このFAQのアドレス
- 謝辞
- 更新履歴
1. イントロダクション
- What is a "network intrusion detection system (NIDS)"?
- 誰がシステムを悪用しているのですか?
- 侵入者はどのようにしてシステムに入り込むのですか?
- なぜ侵入者はシステムに入りこめるのですか?
- 侵入者はどのようにしてパスワードを取得するのですか?
- 典型的な侵入のシナリオは?
- 一般的な"シグネチャ(signature)"にはどのようなものがありますか?
- システムの攻略法(exploit)にはどのようなものがありますか?
- 典型的な偵察スキャンにはどのようなものがありますか?
- 一般的なサービス妨害(Denial of Service:DoS)にはどのようなものがありますか?
- 侵入されることはどのぐらい危険なのでしょうか?
- 最近の侵入に関する統計はどこで得ることができますか?
2. アーキテクチャ
- 侵入はどのようにして発見されるのでしょうか?
- IDSは入力トラフィックからどうやってシグネチャを見つけるのですか?
- IDSが攻撃を発見した後はどうなるのですか?
- IDSのほかにどのような対抗手段がありますか?
- IDSシステムはネットワークのどこに置けばよいのでしょう?
- IDSは他のセキュリティーフレームワークとどのようにフィットさせることができますか?
3. ポリシー
- WinNTにおいて、どのようにして侵入の検出や防止を行うことができますか?
- Win95/Win98において、どのようにして侵入の検出や防止を行うことができますか?
- UNIXにおいて、どのようにして侵入の検出や防止を行うことができますか?
- Macintoshにおいて、どのようにして侵入の検出や防止を行うことができますか?
- 企業において、どのようにして侵入の検出や防止を行うことができますか?
- 私の企業においてどのように侵入検知を実装することができますか?
- ハックを受けた場合どのように対処するべきですか?
- 誰かから自分のサイトからハックされたと連絡を受けた場合どのように対応するべきですか?
- ハッカーに関する十分な証拠をどのようにして集めることができますか?


4. 製品
- どのようなフリーウェア/シェアウェアのIDSが入手可能ですか?
- どのような商用のIDSが入手可能ですか?
- network grep システムとは何ですか?
- 侵入者はどのようなツールを使用しますか?
- 他に知っておくべきフリー/シェアウェアにはどのようなものがありますか?
6. リソース
- 新しいセキュリティー・ホールの情報は何処で手に入れることができますか?
- 他のセキュリティ及び侵入検出のためのリソースにはどのようなものがありますか?
- 有用なサイトにはどのようなものがありますか?
7. IDSとファイアーウォール
- ファイアー・ウォールを備えているのになぜIDSが必要なのですか?
- IDSを使用した場合にファイアーウォールは必要ですか?
- IDSはどこから情報を得るのでしょうか?ファイアーウォール?
8. インプリメンテーション・ガイド(実装の手引き)
- IDSベンダーに対してどのような質問をするべきですか?
- どのようにしてシステムを使用を継続しながらメンテナンスすることができますか?
- 不適切なWebサーフィンを防止するにはどうすれば良いですか?
- どのようにして自分のIDSを開発(プログラム)することができますか?
- IDSの法的な妥当性はどうなっていますか?(盗聴に関する問題)
- どのようにすればログファイルを安全な方法で保存することができますか?
9. NIDSの限界は?
-スィッチを用いたネットワーク(生来の限界)
-リソースの限界
-NIDSに対する攻撃
-単純な回避
-複雑な回避
-Tools
10. Misc.
- 標準化/相互運用性のための活動にはどのようなものがありますか?
11. ハニーポットとデセプション(欺瞞)システム[new]
- What is ハニーポット?[new]
- ハニーポットを使う利点はなんですか?[new]
- ハニーポットの欠点は何ですか?[new]
- どのようにしてハニーポットを設置することができますか?[new]
- ハニーポットにはどのような種類がありますか?[new]
- ハックされるようなシステムをセットアップすることに対してどのような意見がありますか?[new]
- ハニーポットを使用している人たちの例はありますか?[new]
- どのようなハニーポット製品が存在しますか?[new]
- デセプション・カウンターメジャー(欺瞞による対策)とは何ですか?[new]
- ハニーポットの法的妥当性は?[new]

0. このFAQに関して

0.1 著作権:Copyright

0.6 このFAQのアドレス


作者のページ: (低速)
http://www.robertgraham.com/pubs/network-intrusion-detection.html (HTML)
http://www.robertgraham.com/pubs/network-intrusion-detection.txt (text)
TICM (高速)http://www.ticm.com/kb/faq/
Shake Communications (オーストラリア)http://www.shake.net/misc/network-intrusion-detection.htm
IT Sec (ドイツ)http://www.it-sec.de/mirrors/ids/idsfaq.html
ロシア語: http://www.citforum.ru/internet/securities/faq_ids.shtml
日本語: http://www.sfc.keio.ac.jp/~keiji/ids/ids-faq-j.html

 

0.7 謝辞


情報やコメントをいただきました以下の皆様に感謝いたします。(注:自動SPAMアドレス収集システムを避けるため、アドレスの標記方法に変更を加えています。)

Olaf Schreck <chakl at syscall de>
John Kozubik <john_kozubik at hotmail com> (see http://www.networkcommand.com/john/index.html for NT login-script tips).
Aaron Bawcom <abawcom at pacbell net>
Mike Kienenberger <mkienenb at arsc edu>
Keiji Takeda <keiji at sfc keio ac jp>
Scott Hamilton <sah at uow edu au>
Holger Heimann <hh at it-sec de>
Bennett Todd <bet at mordor dot net>


0.8 更新履歴


Version 0.7, 1999年10月9日

限界に関する情報を追加
Version 0.6, 1999年7月17日

NAI及びNFRからのベンダー情報を追加 8.7 及び 8.8 を追加
Version 0.5, 1999年5月19日

ロシア語及び日本語翻訳ページ公開、新IDS製品を追加
Version 0.4, 1999年4月8日

セクション 8. 目次を修正
Version 0.3, 1999年1月1日

マイナーアップデート
ハイパーリングの修正によりテキストバージョンを作成可能に。
スパム防止のためe-mailアドレスの表記を変更。
目次を追加
Version 0.2, 1998年11月1日

マイナーアップデート
Version 0.1, 1998年8月1日

最初のバージョン

 

1. イントロダクション

1.1 What is a "network intrusion detection system (NIDS)"?


侵入(intrusion) とは、何者か (例えば: "ハッカー" あるいは "クラッカー") があなたのシステムへ入り込もうとする、悪用しようとすることをいいます。"悪用(misuse)"という言葉には広い意味があり、秘密のデータを盗もうとするような重大なものから、スパムのためにメールシステムを悪用されるというような比較的マイナーなものまでを含みます。(とはいえ私達には重大な問題です。)

"イントルージョン・デテクション・システム(侵入検知システム:Intrusion Detection System (IDS)" はこのような侵入を検出するためのシステムのことをいいます。IDSは以下のカテゴリーに分類することができます。

ネットワーク侵入検知システム(Network Intrusion Detection Systems - NIDS) ネットワーク・ケーブル上を流れるパケットをモニタし、ハッカー/クラッカーの侵入(あるいはサービス妨害攻撃)の発見を行います。典型的な例は、目標となるマシンに対して行われる大量のTCP接続要求(SYN)を監視することにより、TCPポートスキャンなどが行われていることを発見するシステムのようなものです。NIDSには対象となるマシン上で運用されそのマシンに対するトラフィックを監視するものもあり(大抵は、提供するサービスに統合)、また、専用のマシンによって全てのネットワーク・トラフィックを監視(ハブ、ルータ、プローブ)するようなものもあります。他のIDSが(インストールされている)単一のマシンだけをモニタするのに対して、"ネットワーク" IDSは他の複数のマシンをモニタします。

システム・インテグリティ・ベリファイア(system integrity verifiers) (SIV) はシステム・ファイルを監視し、侵入者がこれを変更したことを検出します。(バックドアなどの設置を検出します。) このようなシステムの最も有名なものに"Tripwire"があります。SIVには、良く知られている手口を発見するためにシステム・ファイルの他Windowsレジストリやchron configuration などの要素を監視するものもあります。

ログファイル・モニタ (LFM) はネットワーク・サービスによって生成されたログファイルをモニタします。NIDSと同様にこのシステムはログファイル上の侵入者による攻撃を示すパターンを探します。この典型的なに例は、"phf"攻撃のような良く知られたセキュリティー・ホールを探る侵入者を検出するHTTPサーバーのログファイル解析パーサーがあります。例: swatch

デセプション(欺瞞)システム(deception systems) (A.K.A. デコイ, ルアー, ハエ取り紙, ハニーポット)はハッカーを引っ掛ける目的で良く知られている偽物のサービスを提供するものです。 参照例 デセプション・ツールキット http://www.all.net/dtk/ 単純なトリックとしてはWindowsNTのadministratorアカウント名を変更し、権限のない偽のadministratorを設定することによって、侵入者の追跡を容易にするものなどがあります。

1.2 誰がシステムを悪用しているのか?


侵入者を示すにはハッカー(hacker)クラッカー(cracker)という二つの言葉があります。ハッカーは物事に深く踏み込むことを好む人物をさす一般的な言葉です。健全なハッカーは自分のコンピュータに踏み込んで、それがどのように動いているのかを知ることが好きな人達です。悪いハッカーは他人のシステムに踏み込むことが好きな人達です。健全なハッカーはメディアによって全てのハッカーが悪者にされることが無くなることを望んでおり、悪い行為をする人達に対してクラッカーという言葉を用います。残念ながらクラッカーという言葉が一般に普及することはなさそうです。とにかく、このFAQではあなたのシステムに忍び込もうとするものを示す言葉として侵入者(intruder)という言葉を用いています。

侵入者は以下の2つのカテゴリに分類されます。

 
部外者

あなたのネットワーク外部からの侵入者及び、あなたの対外的な活動を攻撃するものを示します。(Webサーバへの落書き, メールサーバを利用したスパムの送信など)彼らは内部ネットワークを攻撃するためにファイアウォールに対してちょっかいを出すかもしれません。外部からの侵入者はインターネット, ダイアルアップ , 物理的な侵入あるいは、あなたの会社のネットワークに接続された パートナー(ベンダー, 顧客, 販売店など)のネットワーク等からやってきます。

部内者

合法的にあなたの内部ネットワークを使用する侵入者を示します。これは、次のような行為をするユーザーを含みます。特権の悪用をするユーザ (例えば、嫌いな人を死亡しているかのように記録してしまう市役所職員のようなものです。) あるいは高い権限を持つ人物への なりすまし (他人の端末の使用など。) よく引用される統計によると80%のセキュリティ侵害は部内者によるものだそうです。

侵入にはいくつかのタイプがあります。 Joy riders (暴走族)はハックできるものには何でもします。理由はありません。Vandals(山賊)は破壊をしたりウェブページに落書きをしたりします。 Profiteers (利益目的)は企業データを盗んだり売ったりすることで、企業等から利益を得ることを目的とします。

1.3 侵入者はどのようにしてシステムに入り込むのか?


侵入者がシステムに侵入する主な方法:

物理的な侵入 侵入者が物理的なアクセスをマシンに対して持っている場合(例えば、キーボードを利用することができるとか、システムを分解できるなどの場合)彼らはシステムへの侵入が可能です。そのテクニックはその端末の持つ権限によるものから、システムを分解してディスクドライブを取り出す(そして他のマシンを用いて内容を読み書きする)などがあります。BIOSプロテクションさえバイパスすることは簡単です:実際全てのBIOSはバックドア・パスワードを持っています。

システム侵入 このタイプのハッキングは侵入者がすでにそのシステムに低い権限でのアカウントを持っている場合を想定しています。もしそのシステムが最新のセキュリティー・パッチを当てていなければ、侵入者はかなりの確率で、一般に知られている手口を用いて管理権限などを手に入れることができるでしょう。

リモート侵入 このタイプのハッキングはネットワークを経由してリモートからシステムに対して侵入を試みようとする侵入者によるものです。侵入者は全く特別な権限のない状態から侵入を開始します。このハッキングにはいくつかの形態があります。もし侵入者と被害者のマシンの間にファイアウォールが存在すれば侵入はより困難なものになるでしょう。

NIDSは主としてこのリモート侵入に関して扱うものです。

1.4 なぜ侵入者はシステムに入りこめるのですか?


ソフトウェアにバグはつきものです。システム管理者及びプログラマは全てのセキュリティー・ホールに対策を講じることは不可能です。これに対して侵入者はただ一つの穴を見つけるだけでいいのです。

1.4.1 ソフトウェア・バグ


サーバ・デーモン、クライアント・アプリケーション、オペレーティング・システムそしてネットワーク・スタックの中のソフトウェア・バグが利用されます。ソフトウェアバグは以下のように分類されます。

バッファー・オーバフロー(Buffer overflows): おそらく、報道などで報じられたセキュリティ・ホールはこの問題によるものです。典型的な例はユーザのログイン名入力に対して256文字以上が想定されていなかったというものです。たしかにプログラマは誰もそんなに長い名前を持っていないと考えたことでしょう。しかし、ハッカーはもしそれよりも長い間違ったユーザネームを入力したらどうなるだろうかというようなことを考えます。あまった文字列はどこにいくのだろう?もし、彼らハッカーが正しく操作をしたならば、彼らはサーバによって実行されるコードを含んだ300文字を送ることができ侵入に成功するであろう。ハッカーはこのようなバグを様々な方法で発見します。まずはじめに、ネットワーク上に公開されている様々なサービスのソースコードを解読します。ハッカーは大抵バッファー・オーバーフロー問題を抱えているコードを探してプログラムを眺めます。次に、ハッカーはそのような問題が存在するのか、プログラム自体(実行ファイル)に注目し、機械語を解読します。第3にハッカーは全ての入出力部分に対してでたらめなデータを与えオーバ・フローが発生するかを検証します。もし、そのプログラムが壊れれば、入力データをうまく構成すればかなりの確率ハッカーの侵入が可能であることを示しています。この問題はCやC++で書かれたプログラムで一般的でありJavaで書かれたものにはあまりあてはまりません。

予期せぬ組み合わせ(Unexpected combinations): プログラムは一般にオペレーション・システム最下層とする何層にもわたるコードによって構成されています。侵入者は一つの層には意味を成さないが、他のレイヤに大きな意味を持つ入力を与えることができることがあります。Web上でユーザの入力を処理する最も一般的な言語はPERLです。PERLで書かれたプログラムはこの入力を次の処理を行うために他のプログラムへ送り出します。一般的なハッキングの手口は"| mail < /etc/passwd"というものです。PERLがオペレーティング・システムに、与えられた入力とともに別のプログラムを起動するように処理を行うので、このコードが実行されることになります。しかしながら、オペレーティング・システムがパイプ'|'キャラクタを認識するので、同時に侵入者にパスワードファイルを送信する'mail'を実行してしまうのです。

仕様外の入力(Unhandled input): 多くのプログラムは有効な入力を処理するように作られています。多くのプログラマは、仕様外の入力が与えられることを考慮していません。

レース・コンディション(Race conditions): 最近の多くのシステムは"マルチタスク/マルチスレッド"に作られています。これは、システムが同時に複数のプログラムを実行できるということです。もし2つのプログラムが同時に同じデータにアクセスをする必要がある場合に危険が発生します。同じファイルを更新する必要のある2つのプログラムAとBがあったとしましょう。ファイルを更新するためには、それぞれのプログラムはまずファイルをメモリに読みこまなければなりません。そしてメモリの内容を書き換えます。次にメモリの内容をファイルに書きこみます。レースコンディションはプログラムAがファイルをメモリに読みこみ、変更を加えた場合に、Aがファイルに書きこむよりも前に、Bがファイルの読み出し/変更/書き込みを行ったような場合に発生します。プログラムAはBが変更を行う前にファイルの読み込みを行っているので、Bによる変更は全て失われることになるのです。このような処理を正しい手順で実行させないといけないのでレースコンディションが起こることはあまりありません。侵入者がレースコンディションを引き起こす方法を見つけシステムに侵入するには通常数千回もの試行錯誤が必要です。

1.4.2 システム・コンフィギュレーション (System configuration)


システム・コンフィギュレーション・バグは以下のように分類されます。:

デフォルト・コンフィギュレーション: 多くのシステムは、使用しやすいように設定されたデフォルト設定の状態で出荷されます。 残念なことに「使用しやすい」ということは「侵入しやすい」ということを意味します。ほぼ全てのUNIXやWinNTは簡単にハックされる状態で出荷されています。

いい加減な管理者(Lazy administrators): 驚くほど多くのマシンが 空の root/administrator パスワードが設定されています。これは管理者があまりにもいい加減で、できるだけ早くシステムを設定し、できるだけ簡単に起動したいことによるものです。残念なことに彼らは後でこのパスワードを変更するということはなく、侵入者による簡単なアクセスを許しています。侵入者がネットワーク上で最初にすることの一つに、全てのマシンに対して空のパスワード設定がないかをスキャンすることなのです。

ホール(穴)作り(Hole creation): 実質的にほぼ全てのプログラムは non-secure(安全でない)モードに設定することが可能です。ときおり管理者の不注意によりマシンに穴を作ってしまうことがあります。多くの管理者ガイドは、不注意によるホールの発生を防ぐために、特に必要のない機能についてはOFFにしておくことを薦めています。セキュリティ監査パッケージは大抵これらのホールを発見し管理者に知らせます。

信頼関係(Trust relationships): 侵入者は(ネットワークの)信頼関係を利用し、ネットワークを通じて"踏み台(island hop)"攻撃を行うことがあります。お互いに信頼関係にあるマシンのネットワークは最も弱いつながりでもあるのです。

1.4.3 パスワード・クラッキング(Password cracking)


これは少し特別なカテゴリです。

本当に弱いパスワード: 多くの人は自分の名前や、子供、配偶者、ペットあるいは車のモデルなどの名前をパスワードに用います。"password"や空のパスワードを設定するような人もいます。これは侵入者が入力する30個以下程度の可能性のあるパスワードリストを提供することになります。

辞書攻撃(Dictionary attacks): 前項の攻撃が失敗した場合、侵入者は次に辞書攻撃を試みます。この攻撃では、侵入者は辞書にある全ての言葉をトライするプログラムを使用します。辞書攻撃はシステムへ繰り返しログインを試みる方法と、暗号化されたパスワードを手に入れ辞書にある全ての言葉を同じ方法で暗号化したものと対比する方法とがあります。侵入者は大抵、このための英語辞書と外国語の辞書を持っています。彼らはさらに、名前や一般的なパスワードを収めた辞書のようなデータベースを持っています。

ブルートフォース・アタック(Brute force attacks): 辞書攻撃に似ていますが、この場合侵入者は可能な全ての文字の組み合わせを試みます。短い英小文字4文字のパスワードだとほんの数分で解読することができます。(ラフに見積もって、この場合5万とおりの組み合わせがあります。) 大文字と小文字と数字や記号を混ぜた長い7文字のパスワードの場合(10兆とおりの組み合わせ)だと、1秒に100万とおりの組み合わせを試みたとしても数ヶ月はかかる可能性があります。(実際には1台で1秒あたり千個の組み合わせが妥当な線と思われます。)

1.4.4 無防備なトラフィックに対するスニッファーリング(盗聴)


共有メディア: 従来型のイーサネットではそのセグメントを流れるトラフィックを見るためには、スニッファをそのネットワーク上に置くだけで可能でした。これは多くの企業がスィッチング・イーサネットを使うようになってきているので、だんだんと難しくなってきています。

サーバ・スニッファリング(Server sniffing): しかしながら、スィッチングされたネットワークにおいて、もしサーバ上にスニッファ・プログラムを設置することができたなら(特にルータとして機能しているもの)、その情報をクライアントマシンや信頼関係にあるマシンへ侵入することに利用できるでしょう。例えば、ユーザのパスワードを知らない場合でもログインする時のTelnetセッションをスニッフ(盗み見)することで、パスワードを手にいれることができるでしょう。

リモート・スニッファリング(Remote sniffing): 多くのコンピュータは RMONが可能な状態で設定されています。帯域幅は狭いのですが(全てのトラフィックをスニッフすることはできません。)ここにも多くの可能性が潜んでいます。

1.4.5 設計上の不備

ソフトウェアの実装が設計に対して完全に正しいものであっても、設計自体に侵入 のきっかけとなるバグが存在することがあります。

TCP/IP プロトコルの不備: TCP/IP プロトコルは今日のような大規模な ハッキングが行われることを想定して設計されませんでしたので、セキュリティ上の問題を 引き起こす多くの問題を抱えています。例としては smurfアタック, ICMP 接続不能切断, IP スプーフィング, SYNフラッドなどがあげられます。最大の問題はIPプロトコル自体が 信頼関係をベースにしたものなのでハッカー達はIPのデータを咎められることなく偽造する ことができてしまいます。このような問題を解決するためにIPsec(IP security)がデザイン されましたがまだあまり一般的には使用されていません。

UNIXの設計上の不備: UNIXオペレーティングシステムには 侵入の原因となる多くの本質的な問題があります。最大の問題は'root'だけが管理権限を持つ というアクセスコントロールシステムにあります。

 

1.5 侵入者はどのようにしてパスワードを取得するのですか?


侵入者は以下のような手口でパスワードを取得します。:

平文スニッファリング: いくつかのプロトコル(Telnet, FTP, HTTP Basic)は、平文のパスワードを使用しています。つまり、パスワードが暗号化されることなくクライアントとサーバの間のネットワークでやりとりされます。プロトコル・アナライザを持つ侵入者はネットワークを流れるそのようなパスワードを見つけることが可能です。それだけで、侵入者はただちにそのパスワードをログインに用いることができます。

暗号文スニッファリング: しかしながら、他の多くのプロトコルはパスワードに対してなんらかの暗号処理を施しています。この場合、侵入者はこの暗号を解読するための辞書を用いるかブルートフォースを行う必要があります。この段階において、侵入者はパッシブ(受動的)なままで何もネットワーク上に発信していないので、あなたはまだ侵入者の存在には気づくことはありません。パスワード・クラッキングに侵入者のマシンが使われている限りはネットワーク上に何かが送信されるということはありません。

リプライ攻撃(Replay attack): いくつかのケースでは、侵入者はパスワードを復号する必要はありません。システムにログインするために、暗号化されているパスワードそのものを用いることができるのです。このためには大抵、クライアントソフトウェアをプログラムすることが必要になります。

パスワードファイルの盗用(Password file stealing): 全ユーザのデータベースは大抵、一つのファイルとしてディスク上に格納されています。UNIXの場合このファイルは/etc/passwd (あるいはこのファイルのミラーしたもの。)、WinNTの場合は、これはSAMファイルになります。どちらについても、侵入者がこれらのファイルを手に入れれば、そのファイルの中の弱いパスワードを探すためにクラッキングプログラム(前述)を使用することができるでしょう。

観察(Observation): パスワード・セキュリティの従来からの問題点の一つにパスワードは長くて難しくそして推測しにくいものでなければならないというものがあります。(これは辞書やブルートフォースによる攻撃を十分に難しくするためです。)しかしながら、このようなパスワードは覚えるのが難しく、ユーザはどこかに書きとめたりします。侵入者はメモに記されたパスワードを見つけるためにその人机の周りを探したりすることもあります。(大抵はキーボードの下) 侵入者はユーザの背後からパスワードがタイプするのを見てパスワードを読み取ることもできます。

ソーシャル・エンジニアリング(Social Engineering): 一般的な(有効な)方法は単にユーザに電話をかけ、「やぁ、情報システム部のボブです。ネットワーク上の問題を追いかけてるんですが、どうやらあなたのマシンから問題が発生してるようです。どういうパスワードを使っていますか?」多くのユーザはこの状況でパスワードを言ってしまいます。(多くの企業は例え相手が情報システム部であっても絶対にパスワードを他人に教えないように、というポリシーを持っていますが、このテクニックは十分に有効です。一つの簡単な対策としては6ヶ月ほどの新入社員に電話をかけパスワードを聞き出し、その後でパスワードをもらしたことを彼らが忘れられないほど注意することです。:-)

1.6 典型的な侵入のシナリオは?


典型的なシナリオは:

Step 1: 外部からの偵察 侵入者は正体をあらわにすることなくできるだけ多くの情報を手に入れようとします。彼らは公開情報や一般のユーザのふりをしてこれを行います。この段階において彼らを発見することはまず不可能でしょう。侵入者はあなたのネットワークについてドメインネーム(foobar.comのようなもの。)とともに登録されている情報を手に入れるために'whois'での検索を行うでしょう。侵入者はあなたのマシン名を見つけるために、DNSテーブルを探るかもしれません。('nslookup'や'dig'などのドメイン検索のユティリティ−を使用します。)侵入者は他にも、WebサイトやアノニマスFTPサイト、あなたの会社に関するニュース記事や報道資料など一般に公開されている情報を探ります。

Step 2: 内部偵察 侵入者は情報を得るためにより強引なテクニックをを用いますが、まだ実害を与えるには至りません。彼らはあなたのWebページを見て廻り、CGIスクリプトをのぞきます。(CGIスクリプトはハックされやすいことがあります。) 彼らはどのマシンが生きているかを確認するために'ping' のスウィープをかけることもあります。またターゲットとなるマシンでどのようなサービスが提供されているかを確認するためにUDP/TCPスキャン/ストローブをかけるかもしれません。彼らは何が可能かを調べるために'rcpinfo'、'showmount'、'snmpwalk'などのようなユティリティーを使用するかもしれません。この点において、侵入者はネットワーク上の'ノーマル'な行為を終えます。これまでのところでは侵入とみなされる行為は行っていないことになります。この点においてNIDSは「誰かがドアのノブをチェックしています。」ということができますが、誰かがドアを実際にあけようとしたということはできません。

Step 3: 攻略(exploit) 侵入者はいよいよ準備が整い、目標のマシンの攻撃可能なホール(穴)を攻略しにかかります。 侵入者は入力にシェルコマンドを送ることでCGIスクリプトを悪用したりします。また、大量のデータを送ることで、よく知られたバッファー・オーバーラン・ホールをこじ開けるかもしれません。侵入者は予想されやすいパスワードや空のパスワードを試したりもします。ハッカーはいくつかの攻略段階を踏むかもしれません。例えば、もし、ハッカーがユーザアカウントにアクセスできた場合、彼らは次に root/adminアクセスを手に入れるための攻略を開始するでしょう。

Step 4: 踏み台(foot hold) この段階においてハッカーはすでにあなたのネットワークに対してうまく踏み台を手に入れたことになります。侵入者の主な目的は攻撃の証拠を隠し(記録やログファイルを無効にすること)、再び戻ってこれることを確実にすることです。彼らは、アクセスを可能にする'ツールキット(toolkits)'をインストールし、それまであったサービスをバックドア・パスワードを持つトロイの木馬(Trojan horse)に変更したり自分のアカウントを作ったりします。システム・インテグリティー・ベリフィケーション(System Integrity Verifier :SIV)によって、侵入者がシステムファイルを変更したこの時点で発見できるかもしれません。ハッカーはそれから、一般に内部からの防御は弱くなっているものなので、このシステムを他のシステムへの踏み台として利用するかもしれません。

Step 5: 収益(profit) 侵入者は彼らの得た状態を利用して、秘密のデータを盗んだり、システム資源を悪用したり(例:あなたのサイトから他のサイトへの攻撃)、Webページを書き換えたりします。

違った始まり方をする他のシナリオもあります。特定のサイトをアタックするというのではなく、特定のセキュリティーホールを探してインターネット上をランダムにスキャンするのです。例えば、SendMail DEBUGというセキュリティーホールを探すためにインターネット全体をスキャンするなどということが考えられます。彼らは、セキュリティーホールの見つかったマシンに対して侵入を行います。あなたを直接狙うわけではなく、彼らはあなたがだれであるかということすら知らないでしょう。(これは'バースデーアタック(birthday attack)'として知られるものです。良く知られているセキュリティーホールと、IPアドレスのリストさえあれば、そのようなセキュリティーホールを持ったサイトを発見する確率はかなり高いでしょう。)

1.7 他の一般的な"シグネチャ(signature)"にはどのようなものがありますか?


攻撃には以下の3つのタイプがあります。:

偵察 これにはピング・スイープ(ping sweeps)、DNS ゾーン転送(DNS zone transfers)、電子メール偵察(e-mail recons)、TCP/UDPポートスキャン(TCP or UDP port scans)、 CGIセキュリティーホールの検索(cgiのホールを探すための公開サイトのリストアップ)

攻略 システムへのアクセスを得るために、隠された機能やバグを利用するものです。

サービス妨害(denial-of-service :DoS) 攻撃 侵入者はサービス(あるいはマシン)を破壊するため、ネットワークやCPUに過負荷をかけたり、ディスクを一杯にしたりします。この場合、侵入者は情報を得ようとするのではなく単純にあなたのマシンを使えなくしたいだけです。

1.8 システムの攻略法(Exploit)にはどのようなものがありますか?

1.8.1 CGI スクリプト


CGIプログラムはとても危険です。典型的なセキュリティホールは危険な入力データをそのまま、シェル・メタキャラクタを使ってコマンド・シェルに渡すもの、隠れた変数を用いてシステム上のファイルネームを調べる、システムの情報を必要以上にもらしてしまうなどというこものが含まれます。最も良く知られたCGIバグはNCSA httpdに含まれている'phf' ライブラリです。'phf' ライブラリはサーバでHTMLを解析するために用いられるものでしたが、サーバのどのようなファイルでも取り出すことができるというバグがありました。他のよく知られてていて攻撃に使われるCGIスクリプトにはTextCounter, GuestBook, EWS, info2www, Count.cgi, handler, webdist.cgi, php.cgi, files.pl, nph-test-cgi, nph-publish, AnyForm, FormMailなどがあります。もしあなたのサーバに対して、これらのCGIスクリプトへのアクセスを試みている人がいたら、(そしてあなたがそれを使っていなければ) 侵入の試みであることは間違いないでしょう。(実際に使用を前提としたバージョンをインストールしてない場合)

1.8.2 ウェブサーバ攻撃


CGIプログラムの他にもウェブサーバは他のセキュリティー・ホールを持っています。大多数のウェブサーバ(IIS 1.0 と NetWare 2.xを含む。)はファイルネームにファイルシステムの何処へでもアクセスすることを可能にする複数の"../"の記述を許しています。他の一般的なバグはrequestをはじめとするHTTPフィールドでのバッファオーバフローです。

ウェブサーバは使用しているオペレーティングシステムに関係したバグを持っている場合があります。MicrosoftのIIS にあった古いバグのいくつかは、WindowsNTがファイル名の記述をするのにロングファイルネームと短縮8.3文字の2通りの表現を持っていてパーミッション(アクセス許可)をバイパスできることに関係していました。NTFS(新しいファイルシステム) はマッキントッシュのデータとリソースという考え方に似ている、代替データストリーム"alternate data streams"という機能を持っています。この場合あなたは"::$DATA"を加えることで、そのストリーム名を通してスクリプトを実行するのではなく、スクリプトのファイルを手に入れることができます。

多くのサーバはURLsに関してこれまで多くの問題を抱えてきました。例えば昔のApacheが持っていた"大量スラッシュ(death by a thousand slashes)" 問題はURL内のスラッシュで示されたディレクトリを処理するために大量のCPU負荷がかかってしまうという問題がありました。

1.8.3 Web ブラウザ・アタック


全てのMicrosoft と Netscape のウェブ・ブラウザはセキュリティホールを持っているようです。(もちろん最新のブラウザのセキュリティホールについては知られていないのですが。)これはURL, HTTP, HTML, JavaScript, Frames, Java,ActiveX などの攻撃を含んでいます。

URL フィールドはバッファオーバーフロー状態を起こすことがあります。これには、HTTP ヘッダーとしての処理、スクリーンへの表示、何らかの形での処理(キャッシュ・ヒストリでの保存など)フォーム内での処理などの段階で発生します。また古いインターネットエクスプローラのバグでは .LNK や .URLなどのコマンドを実行してしまうというバグがありました。

HTTP ヘッダはバグを悪用するのに利用することが可能です。なぜなら、いくつかのfieldについては特定の情報だけを想定されているからです。

HTML が悪用されることもあります。Netscape Communicatorの<EMBED> コマンドにおけるMIME-typeオーバーフローなどがこれにあたります。

JavaScriptは常に問題があり、大抵は一般化したファイルネームを用いてファイル名を生成し、"SUBMIT" ボタンに隠れ"file upload" 機能を利用するものです。このバグはなんども修正が行われていますがその度に新しい方法が発見されています。

フレーム(Frames) はJavaScriptの一部として使われたり、Java hack (1ピクセル×1ピクセルのサイズのスクリーンとして、ウェブページに隠れる)として利用され問題を起こします。例えば私が、フレームを利用している信頼できるサイトへのリンクをあるページに含めたとしましょう。その信頼できるはずのページのフレームの一部を私のサイトにあるものと置きかえることも可能なのです。そしてそれはあたかも、その信頼できるサイトの一部のように表示されるのです。

Javaはロバスト(強靭な)なセキュリティモデルを持っています。しかし、そのモデルはときどきバグを含んでいることが証明されています。(しかし、他のものに比べると、最も安全なシステム要素の一つに違いないことは確かです。)しかし、このロバストなセキュリティは解除されるかもしれません。通常Javaアプレットはローカルシステムへのアクセスを持ちませんが、もしこれが可能になればとても便利になるかもしれません。したがって"trust"の実装についてはハックされる危険性を高めることになるでしょう。

ActiveX は信頼モデルに基づきネイティブコードを実行するので、Javaよりもさらに危険でしょう。偶然ウィルスを含んでいたベンダーコードを知らないうち拾ってしまうこともあり得ます。

 

1.8.4 SMTP (SendMail) アタック


SendMailはとても複雑であると同時に広く使われているプログラムであるため、結果的にセキュリティホールの源ともなっています。かつては(1988年のMorris Worm事件) DEBUG コマンドにあったバグあるいはWIZ機能が利用されました。最近ではバッファ・オーバーランが利用されます。SMTP はまた、ユーザー名を探すためVRFYコマンドの使用など、偵察攻撃にも悪用されます。

1.8.5 アクセス


ログインへの失敗, ファイルアクセスへの失敗, パスワード・クラッキング, 管理者権限悪用

1.8.6 IMAP


ユーザは電子メールをIMAP プロトコルを用いて取り出します。(一方SMTPはサーバ間での電子メールの転送を行います。). ハッカー達はいくつかの主要なIMAPサーバ上に多くのバグを発見しています。

1.8.7 IPスプーフィング(IP spoofing)


あなたのIPアドレスを乗っ取っる(スプーフ)様々なアタックがあります。すべてのIPパケットには発信元のアドレスが一緒に送られますが、これはルーティングには使用されていません。これは侵入者があなたのふりをしてサーバと通信することができるということです。この場合侵入者は返答パケットを受け取りません。(あなたのマシンが受け取ったとしても、自分からの要求とはマッチしないので、これを破棄してしまいます。)侵入者はデータを受け取りはしませんが、あなたのふりをしてコマンドをサーバに送ることは可能なのです。

IP スプーフィングは他の攻撃の一部として良く利用されます。:

スマーフ(SMURF)
pingブロードキャストの送信元が上書きされた場合、大量のマシンがこれに返答し、アドレスが使用された犠牲になったマシンにオーバーロードが発生する可能性があります。
TCPシークエンス番号予測(TCP sequence number prediction)
TCP接続の最初の段階において、あなたはシークエンス番号を選択しなければなりません。サーバもまたシークエンス番号を選択します。古いTCPスタックでは単純な規則で推測可能なシークエンス番号を使用しているので侵入者は乗っ取ったIPアドレスを用いてセキュリティをバイパスすることが可能なTCP接続を確立することができます。(返答パケットを受け取ることはありません。)
シークエンス予測によるDNSポイゾニング(DNS poisoning through sequence prediction)
DNS サーバは"再帰的に(recursively)" DNSネームの解決を行います。クライアント要求を受けた、DNSサーバは、再帰的な連鎖によってそれ自身が次のサーバに対するクライアントになります。そこで使用されるシークエンス番号は予測可能なので、侵入者はDNSサーバに要求を送り、次に乗っ取った他のサーバのIPと予測したシークエンス番号とともに返答を送ります。これによって偽のDNS情報がそのサーバに記録されることになります。

1.8.8 バッファ・オーバフロー(Buffer Overflows)


この他バッファ・オーバフローとして以下のようなものがあります。:
DNSオーバフロー(DNS overflow)
長すぎるDNS ネームをサーバーに送ります。 DNS 名はサブコンポーネント毎に64バイト、全体で256バイトという制約があります。
statdオーバフロー(statd overflow)
長すぎるファイルネームが送られます。

1.8.9 DNSアタック(DNS attacks)


DNSは主な攻撃対象になります。なぜなら、もしDNSを落とすことができれば信用関係を利用することができるからです。
DNSキャッシュ・ポイゾニング(DNS cache poisoning)
全てのDNSパケットは"Question" セクションと"Answer"セクションを含んでいます。脆弱なサーバにおいてはQuestionとともに送信したAnswerを信用してしまいます。(そしてキャッシュする。)多くのDNSサーバーは1998年11月以降パッチが当てられています。
シークエンス予測によるDNSポイゾニング(DNS poisoning through sequence prediction)
上記参照
DNSオーバフロー(DNS overflow)
上記参照

1.9 典型的な偵察スキャンにはどのようなものがありますか?

1.9.1 ピングスィープ(Ping sweeps)


この単純なスキャンは、どういうマシンが稼動中かを調べるためにある範囲のIPアドレスに対してスキャンを行います。より洗練されたスキャナーは同じことをするのにも他のプロトコルを用います。(例:SNMPスィープ)

1.9.2 TCP スキャン(TCP scans)


侵入者が利用可能な開いている(listening) TCP ポートを探します。スキャンは通常のTCP接続かhalf-open接続を用いたステルス・スキャン(ログに残らない)あるいはFINスキャン(ポートは開かずに、聞いているかどうかをテストする。)などが用いられます。スキャンは連続でもランダムでもまた設定したリストにしたがったポートに対してでも可能です。

1.9.3 UDP スキャン(UDP scans)


UDPはコネクションレスなので、このスキャンは少し難しいものです。このテクニックは無意味なUDP パケットを目標のポートに送ります。 大抵のマシンはICMPの"destination port unreachable"のメッセージを送り返します。これによってそのポートでのサービスはないことがわかります。しかしながら、多くのマシンはこの反応をしないようになっているので、このスキャンを高速で行うことは難しいのです。

1.9.4 OS識別(OS identification)


規格外の (あるいは変な) ICMP か TCP パケットを送ることでオペレーションシステムを識別することが可能です。規格(Standards)は大抵マシンが規格に沿ったパケットに対してどう反応するかを定めています。したがってマシンは有効な入力に対しては同様の反応を行います。しかしながら、規格は(大抵意図的に)無効な入力に対する反応は定めていません。したがって、それぞれのオペレーティング・システムは無効な入力に対して固有の反応を行います。この反応の違いにより目的のマシンが何であるかを識別することができます。このタイプの活動はシステムがログを残さない低いレベル(ステルスTCPスキャンのように)で行われます。

1.9.5 アカウント・スキャン(Account scans)


アカウントによってログオンを試みます。

1.10 一般的なサービス妨害(Denial of Service:DoS)にはどのようなものがありますか?

1.10.1 Ping-of-Death


無効なデータをパケットの途中から送信しパケットの制限長を超えて継続させる。

1.10.2 SYN Flood


TCP SYN パケット(接続要求)を高速で送信し、目標となったマシンは大量の接続処理を行おうとして、リソースを使い果たし正当な接続も落としてしまう。 新しい防御法としては"SYN cookies"というものがある。どちらのサイドの接続にもそれぞれシークエンス番号を持っている。SYNに反応する際に攻撃されたマシンは"cookie"と呼ばれる特別なシークエンス番号を作りだし、その接続に関する全てを忘れる。次のパケットが正しい接続元から送られてきた場合に、その忘れた接続を再度作りなおすことができる。

1.10.3 Land/Latierra


送信元と送信先として同じアドレス/ポートを持つ偽造したSYNパケットを送ることにより、TCP接続を完了しようとするシステムを無限ループに陥らせます。

1.10.4 WinNuke


Windowsシステムをハングさせるため、OOB/URG データをポート139に対するTCP接続 (NetBIOS Session/SMB)として送信します。

1.11 侵入されることはどのぐらい危険なのでしょうか?


私はよく「だれも持っていきたいものなんてそのマシンには何もないよ。」と人々がいうのを良く聞きます。私は、もし、そのマシンを使ってクレジットカードで買い物をしていたり、銀行の記録や、ソーシャル・セキュリティー・ナンバーがマシンにのこっていたら、などのように様々なシナリオを説明します。

さらに重要なことに、法的責任の問題があります。あなたは潜在的に、ハッカーがあなたのマシンを用いて起こした損害に対する責任があります。あなたは、法廷において"妥当な"ハッカーからの防衛措置をとっていることを示せなければならないのです。 例えば、あなたが高速な回線の上にマシンを置き(cable modemあるいはDSL)administrator/root アカウントをパスワードを設定せずに放置しておいたとしましょう。もしハッカーがそのマシンに侵入し、銀行に入り込むのに使ったとします。あなたはマシンを保護するための最も明かな措置を行っていなかったことから責任を問われることがあり得ます。

非常によいペーパーがあります。http://www.cert.org/research/JHThesis/Start.html John D. Howard はインターネット上でどれだけのハッカーがいてどのぐらいあなたは危険な状態にいるかということを書いています。

1.12 最近の侵入に関する統計はどこで得ることができますか?

 
CyberNotes by NIPC (http://www.fbi.gov/nipc/welcome.htm)
CyberNotes 全米インフラ防護センター(National Infrastructure Protection Center :NIPC)によって2週間毎に発行されています. そのミッションはサイバーな脆弱性、スクリプトを利用したハッキング、ハッカーの傾向、ウィルス情報その他重要インフラ防護のための各種取り組みに関するタイムリーな情報を提供することによりセキュリティと情報システム専門家を支援することです。

NIPCはFBIによって1998中ごろに設置されその最初の主な活動はMelissaウィルス(W97M.Melissa)の発信源をつきとめるのを支援したことです。CyberNotesのアーカイブは1999年1月からになっています。

AusCERT 強化統計プロジェクト(Consolidated Statistics Project)
(http://www.auscert.org.au/Information/acsp/index.html)
Webまわりの侵入に関する統計とその強化を行うプロジェクト。広く参加と情報提供を呼びかけています。
1989年から1995年にかけてのインターネット上のセキュリティー事件の分析(An Analysis Of Security Incidents On The Internet 1989 - 1995) (http://www.cert.org/research/JHThesis/Start.html)
John D. Howard, Carnegie Mellon UniversityによるDissertation
CERT レポート, 論文とプレゼンテーション (http://www.cert.org/nav/reports.html)
CERT は多くの歴史的な侵入の統計を持っています。しかし、NIPCのものほどアップデートはされていません。

2. アーキテクチャ

2.1 侵入はどのようにして発見されるのでしょうか?


侵入を発見する2とおりの基本的な方法があります。

シグネチャ検出(Signature recognition) 入力と出力のトラフィックを良く知られたシグネチャ(signatures)と比較する最も一般的な方法。例えば、大量の広範囲のポートに対するTCP接続の失敗は誰かがTCPスキャンを行っていることを示します。

異常検出(Anomaly detection) 基本的な振る舞いからの変化を発見するために統計的分析を行う方法。 (トラフック、CPU利用、ディスク利用、ユーザログオン、ファイルアクセスなどの急激な増加など)このテクニックはシグネチャ検出よりは弱いがシグネチャ・データの存在しないアタックも検出できるという利点もある。異常検出は現在のところかなり理論的であり今後の研究が期待される分野でもある。(だれも、単純にシグネチャを収録するだけではPh.D.は取れない。したがって研究者はニューラルネットワーク、ファジー理論、あるいは他の人工的手法を取り入れる必要がある。)

発見には発生時に対処する"リアルタイム" な方法と、ログファイルの解析などのオフライン的手法が存在する。

2.2 NIDS は入力トラフィックからどうやってシグネチャを見つけるのですか?


トラフィックはネットワーク上を流れるIPデータグラムによって構成されます。NIDSはケーブル上を流れるパケットを監視することができます。NIDSはIP データグラムとTCPストリームに似た特別なTCP/IPスタックを持っていて、以下の手法を利用します。

プロトコル・スタック・ベリフィケーション "Ping-O-Death"や "TCP Stealth Scanning"などの多くの侵入手法は目標のマシンを攻撃するためにはIP, TCP, UDP,やICMPなどのプロトコルに違反しています。単純なベリフィケーションシステムは無効なパケットを検出することができます。これは極度に細分化されたIPパケットなど、有効なではあるけれども不審なものに対しても有効です。

アプリケーション・プロトコル・ベリフィケーション OOBデータを加えた無効なNetBIOSプロトコルを用いる"WinNuke"や有効だけれども異常なシグネチャを見せるDNSポイゾニングなど、多くの侵入は無効なプロトコル動作を行います。これらの侵入を発見するためには、疑わしいあるいは無効な振る舞いを検出するためにNIDSは多くのアプリケーションレイヤプロトコルを実装し直さなければなりません。

新しいログ保存可能なイベントの作成 NIDSはネットワーク管理ソフトの記録能力を拡張することにも使えるでしょう。例えばあるNIDSはあるマシン上で利用される全てのアプリケーション・レイヤ・プロトコルを記録することができるでしょう。これらの拡張イベントは一般のイベントログシステム(WinNT Event, UNIX syslog, SNMP TRAPS等)等のイベントと関連づけて調べることができるでしょう。

2.4 NIDSが攻撃を発見した後はどうなるのですか?

 
ファイアーウォールの再設定
侵入者のIPアドレスを遮断するためにファイアーウォールの設定を変更します。しかしながら、これでは侵入者は他のアドレスから攻撃を仕掛けることを許してしまいます。チェックポイント・ファイアーウォールは設定のための"OPSEC"標準の"Suspicious Activity Monitoring Protocol (SAMP)" というプロトコルをサポートしています
チャイム
.WAV ファイルを再生します。例えば、"攻撃を受けています。"というような音声をで注意喚起をします。
SNMP トラップ
SNMP トラップデータグラムをHP Open View, Tivoli, Cabletron Spectrumなどの管理コンソールに送信します。
NT イベント
WinNTのイベントログにイベントを送ります。
syslog
UNIX syslog イベントシステムにイベントを送ります。
e-mailの送信
システム管理者に攻撃を知らせるためのe-mailを送信します。
ポケベル
システム管理者のポケベルを鳴らします。
攻撃のログ記録
攻撃の情報(時刻、侵入者のIPアドレス、犠牲になったマシンのIPアドレス/ポート、プロトコル情報)
証拠の記録
生パケットのトレースファイルを後の分析のために保存します。
プログラムの起動
イベント対処のためのプログラムを起動します。
TCPセッションの終了
TCP FINパケットを上書きしてコネクションを強制終了します。

2.5 IDSのほかにどのような対抗手段がありますか?


ファイアーウォール

多くの人がファイアーウォールが第一線の防衛手段だと考えています。これは侵入者がそれをバイパスする方法を発見した場合にはネットワークの中を自由に動き回れるということを意味します。(多くの侵入はファイアーウォールの内側の社員等によって行われるのでこれは簡単です。)より良いアプローチはファイアーウォールを防御の最終手段と考えることです。マシンは正しく設定され、侵入検知が行われていることを確認した上で、ファイアーウォールをいたずらを回避するために設置するべきなのです。ほとんどのルーターはファイアーウォール・フィルタリングの機能を設定できるようになっています。ファイアーウォールは外部アクセスから防御をしますが、内部侵入に対しては無防備です。ハッカーによる損失の80%は内部からの攻撃によるものであることが見積もられています。

認証(authentication)

オープンアカウントを自動的に発見するスキャナを運用するべきでしょう。パスワードに関する厳密なポリシー(最低7文字、数字を含める、大文字小文字を混ぜる、記号を入れるなど)をcrackツールやビルトインのポリシーチェッカー(WinNTネイティブ、UNIXアドオン)などを使い自動的な方法で強制するべきです。UNIXやWinNT(ダイアルアップ形式のログイン)におけるRADIUS/TACACS 統合や UNIX WinNT 認証の統一(Windows 2000における新しいKerberosなど)などを考えるべきでしょう。このような認証はテルネットやFTP、IMAP、POPなどのプロトコルにおける"クリアテキスト"パスワードの利用をなくすことが可能です。

VPN(バーチャル・プライベート・ネットワーク:Virtual Private Network)

VPNはリモート・アクセスのためのインターネット上の安全な接続を可能にします。 (例: 在宅勤務のためのものなど). 例 1: Microsoft はPPTP (PPP over TCP) という技術を Windows上に実装しています。これはマシンに2つのIPアドレスを提供します。一つはインターネット上のものそしてもう一つは会社のネットワーク用のバーチャルなものです。例2: IPsec は従来のIPプロトコルのセキュリティを強化するものです。VPNベンダーが彼らの製品を"高いセキュリティー"と唱っていますが、現実には企業のセキュリティーを低下させています。パイプ自体は安全ですが(認証及び暗号化)パイプの片側は広く開かれているのです。自宅のマシンに管理者権限を攻略するバックドアをしかけられれば、ハッカーはVPNを無効にすることができ、ファイアーウォールの無効側に対する検出不可能な完全なアクセスを与えることになります。

暗号化

暗号化はますますポピュラーになりつつあります。暗号e-mail(PGP, SMIME), 暗号化ファイル(PGP again), あるいは暗号化ファイルシステム(BestCrypt, PGP again)などが利用できます。

2.6 IDSシステムはネットワークのどこに置けばよいのでしょう?

ネットワークの外縁

IDSはファイアーウォールダイアルアップサーバー、パートナー ネットワークへのリンクの両側などネットワークの外縁において最も効果的です。これらのリンクは狭い低い帯域幅(T1の速度)であることが多く、IDSがトラフィックに追いついていくことができるという利点があります。

WAN バックボーン

他に高い価値のあるポイントとしては企業のWANバックボーンが挙げられます。よくある問題に境界外からのメインネットワークへのハッキングがあります。WANリンクは狭い低い帯域幅であることが多いので、IDSはトラフィックを追随することが可能です。

サーバー

サーバーは自身のネットワークに設置され、スイッチに接続されることがあります。これらのサーバーが持つ問題はIDSシステムは大量のトラフックに追随することができないことです。極端に重要なサーバーについては、個々のサーバー接続についてそれぞれ専用のIDSシステムを設置しても良いかもしれません。また、アプリケーションサーバーはファイルサーバーに比べると少ないトラフィックを持つことが多いので、IDSの目標としては適しています。

LAN バックボーン

IDSシステムはその高いトラフィック要求のために、LANバックボーンに対してはあまり適していません。いくつかのベンダーはIDS検出をスイッチに組み込んでいます。完全なIDSシステムはパケットを再構成しなければならず、トラフィックに追随することは難しそうです。単純な攻撃を発見するようにスケールダウンしたシステムはより追随性が良く、より適した選択といえるでしょう。

2.7 IDSは他のセキュリティーフレームワークとどのようにフィットさせることができますか?

  1. ファイアーウォールを異なるセキュリティ要求を持つネットワーク間に設置しましょう。 (例:インターネットとローカルネットワークの間, ユーザー・サーバー間, 企業・パートナー間など).
  2. ファイアーウォールをダブルチェックし侵入者が利用可能なセキュリティーホールを発見するためネットワーク脆弱性スキャナーを使用しましょう。
  3. ポリシーの徹底のためにホストポリシースキャナを使用しましょう。 (例:最新のパッチなど).
  4. 実際に発生している状況を監視するため ネットワーク・イントリュージョン・デテクションシステムやパケット・スニッファリングシステムを利用しましょう。
  5. 侵入の成功を検出するためホストベース・イントリュージョン・デテクション・システム やウィルススキャナを使用しましょう。 and virus scanners to flag successful intrusions.
  6. 侵入に対する対応をはっきりと述べた、従いやすいポリシーを作成しましょう。

2.8 誰かがNIDSを走らせているのをどのようにして見つ けることができますか?


NIDSは基本的にスニッファーなので標準的なスニッファー検出テクニックを 使うことができます。このようなテクニックについてはhttp://www.robertgraham.com/pubs/sniffing-faq.html#detectに説明されています。

一例としてはターゲットにtracerouteを行なうことです。これはIDSに低レベルの イベントを発生させます。tracerouteは無害でネットワーク上で頻繁に使用され るので攻撃を意味するものではありません。しかしながら、攻撃の前に tracerouteが行われることがよくありますのでおそらくIDSこれをログに記録する でしょう。ログの処理の一環として通常DNSの逆引きを行います。したがってあな たのDNSサーバに対して逆引きが行われればIDSが使用されているということが考 えられます。

3. ポリシー

3.1 WinNTにおいて、どのようにして侵入の検出や防止を行うことができますか?


以下のリストアイテムは発見や防止によってWinNTをより安全にします。これらは重要なものの順に並んでいます。
  1. 最新のサービスパックと"ホットフィックス"をインストールしましょう。これらに関する情報はhttp://www.microsoft.com/security/で得ることができます。 もしWinNT 4.0を使っていて、Service Pack #3 (SP3)をインストールしていなかったら、そのシステムは侵入される危険性があります。
  2. インストール: FATではなくNTFSを使用するようにしましょう。NTFSはファイル/ディレクトリ毎のアクセス許可が設定可能です。また、NTFSはファイル/ディレクトリ毎のアクセス記録が可能です。多くの人がブートドライブとしてFATを使用し他のドライブにNTFSを使用することを薦めています。(DOSによるFATドライブの修正のしやすさから。)しかしながら、NTFSの全てのドライブへの使用は絶対により安全です。
  3. USRMGR: "administrator"アカウントの名前を変更しましょう。一般的な攻撃は"administrator"アカウントに対して辞書を使ったものかかブルート・フォース攻撃です。通常のアカウントは自動的に何回かのパスワードの失敗によって自動的に(そして一時的に)"ロックアウト"するように設定が可能です。しかしながらこの機能はサービス妨害(DoS)攻撃を可能とするために"administrator"に対しては使用不可能です。(例:administratorアカウントをロックアウトすることでマシンの管理を不可能にする。)
  4. USRMGR: 侵入の試みを検出するために"administrator" という新しいアカウントをつくりましょう。
  5. USRMGR: "guest" アカウントを使用不可にしましょう。このアカウント名を変更してもかまいません。("administrator"アカウントと同様に). "guest" アカウント名を変更した後に侵入検知のための"guest" というアカウントを新たに作るのも良いでしょう。
  6. NTFS: %systemroot%/system32ディレクトリに対する"Everyone"からの"write"アクセスを不可にしましょう。
  7. REGEDT32: リモートからのレジストリ・アクセスを検知するため"HKEY_LOCAL_MACHINE\Security"をONにしておきましょう。
  8. インストール: "C:\WINNT" ディレクトリへのインストールは避けましょう。侵入者はファイルネームを知っているファイルにアクセスすることが可能になる場合があるので、違うディレクトリにシステムをインストールすることで事前にファイル名を知られることを防ぐことができます。さらに、一旦C:\WINNTにインストールし、他のディレクトリに再インストールした後、アクセス記録(auditing)をONにすることで誰かが、それら古い方のファイルにアクセスしたことを検出することが可能になります。
  9. インストール: ブートパーティションはシステムのブートのためだけに使用しましょう。データとアプリケーションは異なるパーティションに置いておきましょう。アプリケーションをデータから隔離しておくのも良いでしょう。
  10. コントロールパネル: スクリーンセーバーの"パスワードによる保護"をONにしましょう。最も有効なスクリーンセーバーは"Blank Screen"です。スクリーンセーバーはコンピュータが使用されていないときに動作すると考えられがちですが、いつもそうであるとは限りません。ブラックスクリーンをしようすることでサーバーのパフォーマンスを向上することが可能です。また、これは消費電力を低く押さえることが可能です。特にブラックスクリーンを検出し自動的に表示をOFFにする機能を持ったモニタに有効です。最後にいくつかのスクリーンセーバー(例:PointCast)はハックすることが可能です。
  11. REGEDT32: レジストリADMIN$, C$, D$, などの"AutoShare"パラメータにより自動共有設定をOFFにしましょう。 このパラメータは"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters"の下にあり,WinNT Serverにおいては"AutoShareServer"、WinNT Workstation においては"AutoShareWks" です。'1' でenabled (デフォルト)か'0' で disabledの値をとるDWORDです。これはあらかじめレジストリ内には値がないので、自分でこれらの値を入力する必要があります。
  12. REGEDT32: アノニマスアクセスによる アカウント/共有 情報をOFFにします。レジストリキー "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA""RestrictAnonymous" DWORD の値を "1"として追加します。 もしドメインの信頼関係の設定の最中に"Could not find domain controller for this domain."というエラーが出た場合,この設定を戻さなければならないかもしれません。
  13. USRMGR: (ワークグループではなく)ドメインを使用している場合"Access this computer from the network" のユーザ設定を"Everyone"ではなくて"Authenticated Users" に設定しましょう。これはあなたのマシンに対するローカルアカウントによるリモートアクセスを禁止し、ドメインアカウントでのアクセスを許可します。
  14. PASSPROP:"administrator"のリモートアクセスのロックアウトを有効にしましょう。これはリモートからの侵入者が3回以上パスワードの入力に失敗した時にアカウントをロックアウトするものです。ロックアウト後は "administrator" はローカルでのみログインできるようになります。USRMGRでリモートでの"administrator"アクセスを完全に禁止することもできます。これには"Administrators"の中の項目"Access this computer from the network" を削除します。

ネットワークへの侵入への物理的な防御を考えることも必要でしょう。John Kozubik はログインスクリプトを使用してビルトインのパスワード付スクリーンセーバーを強制するということを提案しています。これはログインスクリプトに以下を含めることで可能です。

regedit /s \\MY_PDC\netlogon\scrn.reg

"scrn.reg"というファイルに以下を書いておきます。

REGEDIT4
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveTimeOut"="1800"
"ScreenSaveActive"="1"
"SCRNSAVE.EXE"="c:\winnt\system32\logon.scr"
"ScreenSaverIsSecure"="1"

これによって、30分間操作のなかった場合、パスワード付のスクリーンセーバーを起動しするというものです。(再度操作を継続するためにはパスワードの再入力を要求する。)

3.2 Win95/Win98において、どのようにして侵入の検出や防止を行うことができますか?


このセクションではWin95/Win98を使用してインターネットに接続するホームユーザを想定しています。 Win95/Win98 はログの記録やログインの機能がないので、重要な用途を持つシステムについてはWinNTを使用するべきでしょう。

以下は一般的なユーザーのためのテクニックです。

  1. 最新のパッチをインストールしましょう。(当然ですが)
  2. プリンタの共有をOFFにしましょう。プリンタの共有がONになっている場合、リモートシステからローカルのsystem32ディレクトリにあるプリンタ・ドライバへのアクセスを可能とするPRINTER$ shareがシステムによって作成されます。 残念ながら、これはリモートシステムからプリンタ・ドライバ以外のWin95 passwordなどのファイルへのアクセスを可能とします。(他のWin95のバグを併用)
  3. ファイルの共有をOFFにしましょう。ホームユーザの場合、おそらくこれは必要ないでしょう。もしファイルを共有しなくてはならない場合は、強力なパスワードを使用していることを確認し、必要な時だけできるだけ短時間共有をONにし、使用後はただちに設定をOFFにするようにしましょう。
  4. (さらに追加の予定)

John Kozubiは企業ユーザに対し以下の提案を行っています。サーバからのログインスクリプトを実行しているWin95/Win98非常にセキュリティが弱いので、そこから他の企業行ネットワークに侵入されることがあります。Win95は読みやすい形でパスワードをキャッシュするので、それらをとりのぞいた方が良いでしょう。

del c:\windows\*.pwl
パスワード・キャッシュファイルは侵入者が最初に探す目標になるものでしょう。これはユーザ名を同じ名前を持ち、非常に簡易な暗号化しか行われていないパスワードをキャッシュするものです。これはダイアルアップのパスワードについても同様ですので、ノートブックを会社に持ち運ぶユーザは自宅のダイアルアップパスワードが削除されていることに気がつくでしょう。

パスワードの内部キャッシュを無効にする。

次のコマンドを実行します。
REGEDIT /s \\MY_PDC\netlogon\nocache.reg

"nocache.reg" を以下のように設定します。

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Network]
"DisablePwdCaching"=dword:00000001

3.3 UNIXにおいて、どのようにして侵入の検出や防止を行うことができますか?


  1. 必要以上のサービスをインストールすることのないようにしましょう。私はRedHat Linux上で何もかもインストールしてポートスキャンをされたときにはクリスマスツリーのようにライトアップされていました。私はすでにそのマシン上にある侵入に使用可能ないくつかのホールに気付いていました。
  2. 'netstat',TCP/UDPスキャナの使用あるいは'rpcinfo'を使ったマシン上のサービスの調査。再度、不用なサービスが動作していないことを確認しましょう。
  3. (さらに追加予定、正直なところわたしはWinNT管理者をする機会が増えているのでわたしのスキルはどんどん落ちてきているのです。)
  4. 参照 ftp://ftp.auscert.org.au/pub/auscert/papers/unix_security_checklist.

もちろん、あなたはシステムを更新することを考えるのも良いでしょう。実際、Sunが何年も前に公式にサポートすることを止めているにも関わらず、世の中には大量のSunOS 4.x システムが存在します。

3.4 Macintoshにおいて、どのようにして侵入の検出や防止を行うことができますか?


Macintosheはエンドユーザシステムでありハックされるようなサービスはあまりありません。一方、Windowsマシンはより数多く存在しており、UNIXマシンは(ハックの対象として)興味深いサービスを実行していることが多くあります。したがってマッキントッシュは侵入の対象となることはあまりありません。

それ以上に、わたしはそれについて知っていることが無いということもあります。

3.5 企業において、どのようにして侵入の検出や防止を行うことができますか?


まず第一にセキュリティ・ポリシーを作ることです。あなたは夜遅くにネットワークを監視していて、侵入が行われているのを発見したとしましょう。あなたは何をしますか?侵入をさせておいて証拠を集めますか?そうだとしたら、イントラネットとエクストラネットの間にあるファイアーウォールのプラグを抜きますか?それとも、インターネット接続の全体を(ユーザがあなたのウェブサイトにアクセスするのを妨げてまで)ダウンさせますか?誰がプラグを抜く権限を持っていますか?

優先順位については会社のCEOによって設定される必要があります。 あなたのシステムが攻撃され、あなたがプラグを抜いたというシナリオを想定しましょう。 ユーザは腕を抱えて不満を言うことでしょう。そして、あなたが間違っていたということが判明すれば、あなたは首になることでしょう。あからさまな攻撃があったときでさえ、とばっちりを恐れるあまりにプラグを抜く人は少ないことでしょう。 データの盗用は目に見えず非現実的であり、機嫌の悪いユーザは非常に現実的に感じられることでしょう。 したがって、侵入の疑いがある場合に際して手順について、最上層部からの明示的なポリシが必要なのです。 [著者: どなたか私に送ってもらうことのできるポリシーのサンプルをお持ちでしょうか?]

一環した方針が定まったなら、次の項で説明する必要な技術について調査をする必要があります。

3.6 私の企業においてどのように侵入検知を実装することができますか?

侵入を検知するために以下のシステムをどのようにして構築できるかを考えてみてみましょう。
  1. オペレーティング・システム WinNT や UNIX が持つような、統合されたログイン及びログ記録の機能はセキュリティの重要な情報源として使用することが可能です。次のセクションではWindowsやUNIXにおいて侵入検知を可能とするいくつかの方法を紹介します。
  2. サービスWebサーバ, e-mailサーバ,及びデータベースあるいはログインやログ記録機能など。さらに、侵入のシグネチャを検出する多くのこれらのファイルを解析するためのツールがあります。
  3. Network Intrusion Detection Systems は侵入のための試みを発見するためにネットワークトラフィックを監視します。以下のセクションではこのようないくつかの製品を紹介しています。
  4. ファイアーウォール(Firewalls) は大抵いくらかのネットワーク侵入検知機能をを持っています。結局は侵入をブロックすることが最終的な目的なのですが、同時に侵入を検知することも大抵可能です。
  5. ネットワーク管理プラット・フォーム (OpenViewなど)は疑いのある活動などを警報し、ネットワーク管理者を支援する機能を持っています。少なくとも全てのSNMPデバイスは"認証失敗(Authentication Failure)" の信号を送るべきであり、管理コンソールはこれを受けて管理者に警報を発するべきです。

3.7 ハックを受けた場合どのように対処するべきですか?

CERTによるイントルージョン・デテクションチェックリストを読みましょう。ftp://ftp.cert.org/pub/tech_tips/intruder_detection_checklist.

多くの場合、事前に良い防御手段を講じておくことが良い対処になります。これは以下を含みます。:

コンピュータネットワークは非常に早く成長し、侵入に対処する能力を身につけた人材は不足しています。さらに、急速なネットワークの発展のためにログ保存や監査の体制はかなりでたらめになっています。これらの状態によって人々は攻撃を受けている場合に何をすべきかを知らず、攻撃からうまく復帰するのに十分ロバストにはできていません。

3.8 誰かから自分のサイトからハックされたと連絡を受けた場合どのように対応するべきですか?


IDSメーリングリストにおいて、以下の電子メールにどのように対応するべきかという質問がありました。
以下はあなたのドメインからテルネット接続を示しているログです。この接続先のマシ
ンは一般にサービスを提供しているものではなく、弱点のあるマシンを探すIP空間探索
であることが考えられます。
我々はこの事態を深刻に捉え、あなたもおなじように真剣に考えていただけることを望
んでいます。この事態に対し適切な対処をとりご連絡いただけるようお願いします。

Nov  6 07:13:13 pbreton in.telnetd[31565]: refused connect from  xx.xx.xx.xx

このログ・エントリーはUNIX上のサービスについてのログとアクセス・コントロール機能を持つtcpwrapperによって生成されたもののようです。電子メールメッセージにあるようにこれは何らかの自動スィープのようです。もっともポピュラーなスィープ対象となるプロトコルはICMP, FTP, SMTP, NNTP, 及び Telnetです。

大抵の場合、これは攻撃ではなく探査(probe)の証拠であることが考えられます。また、その他の確認する証拠はありません。Greg Drew <gdrew at computer dot org>によって指摘されるようにいくつかの良心的な理由も考えられます。 there could be a number of benign reasons:

しかし、またいくらかの悪意の可能性もまたあります。

<vick at macdoon dot lerc dot nasa dot gov> はこれはソーシャル・エンジニアリング攻撃かもしれないと他の可能性を指摘しています。このメッセージはあなたに、どのようなアクションをとったかを尋ねて(要求して)います。もしあなたがそうすればあなたは自分のネットワークのことを多く説明することになるでしょう。:

スパムに対処するように、このメールに対する返答はあまり良い結果が得られないかもしれません。(あなたがあなたのネットワークを踏み台として使っていたということを発見した場合を除いて。)質問のあった日時におけるあなたのシステムのログを確認をした方が良いでしょう。もしあなたがログをとっていなかったとするならログを取りはじめる良い機会でしょう。

事件は良心的なものであることが判明しました このターゲット・ネットワークは再構築され、その"unauthorized"ユーザはこのことを知らず、正しくログインしていなかったというものです。

3.9 ハッカーに関する十分な証拠をどのようにして集めることができますか?


IDSの興味深い領域としてハッカーを特定するための十分な情報の収集というものがあります。優れたハッカーは通常侵入に成功している他のシステムを踏み台に使用するため、これはかなり難しいと考えられます。またハッカーはIPアドレスのスプーフィング(盗用)を行うこともあり、電源さえ入っていないマシンからの侵入のように見せかけることもあります。

私に言えることは、できるだけ多くの情報を集めるということです。例えば、私はT-1ライン上のパケットを記録するスニッファを設置し16ギガバイトのディスクにファイルとして記録を行ったことがあります。(ほとんどのスニッファ・プログラムはこのようなことができます。)それはあまりいい考えとは思われないかも知れませんが、私はこれらのファイルを活用しています。どれだけ多くのTCP/UDPスキャンが日々行われているかを見ると大変驚かされます。

さらに、全てのマシンの全てのログ記録と監査機能が動作することを確認しておくべきでしょう。これらはあなたがハックされている時に何が起こっているかを明かにする手がかりになることでしょう。

4. 製品


このセクションでは入手可能な製品について紹介します。

4.1 どのようなフリーウェア/シェアウェアの侵入検知システムが入手可能ですか?


最も充実したネットワーク上の製品リストはCOAST Intrusion Detection System Resources page http://www.cs.purdue.edu/coast/ids

いくらかのフリーウェアについては4.4 及び4.5にて解説をしています。

4.2 どのような商用の侵入検知システムが入手可能ですか?


以下は私が様々なソースから集めた情報をまとめた表です。
ベンダー 製品 初期バージョン 更新頻度 更新方法 プロトコル アプリケーション モード ハードウェア OS レイヤー2 router/firewallとの通信 通報 インテグレーション
Network ICE BlackICE 1999年7月 約2週間毎 認証を伴う自動更新 TCP/IP, ARP SMB+Windows, NFS, DNS, HTTP, FTP, Telnet/rlogin, SNMP, SMTP, Sun RPC, MS RPC, Finger, ICQ, IRC, ident/auth, IMAP, POP, NNTP, PCAnywhere, SQL, TFTP, Back Orifice Promiscuous (Sentry), non-promiscuous (Pro) single- or dual-CPU WinNT, Win95, Win98, Win2k 10/100 Ethernet, Token Ring yes paging, e-mail, icon change, HTTP post SDK, SQL
Network Associates, Inc. CyberCop Monitor 1999年6月 4半期毎 製品のアップデート TCP/IP SMB+Windows,DNS, HTTP, FTP, Telnet, rlogin, SMTP, IRC, identd, POP, TFTP, ICMP, NetBIOS Non-Promiscuous, Promiscuous? x86 WinNT 10/100 Ethernet, ? no E-mail, Event Log, custom message, DCOM SQL, Crystal Reports
Cisco NetRanger 1996年8月 4ヶ月毎 CD TCP/IP SMB, NFS, DNS, HTTP, FTP, Telnet, SNMP, SMTP, RPC Promiscuous デュアルCPU Solaris x86 Solaris x86 10/100 Ethernet, FDDI, Token Ring yes paging, e-mail, icon change ?
ISS RealSecure 1996年12月 毎月 暗号化されたWebあるいはメールから手動により実施Manually via encrypted web or via encrypted e-mail TCP/IP SMB, NFS, DNS, HTTP, FTP, Telnet, SNMP, SMTP, RPC Promiscuous many NT and UNIX 10/100 Ethernet, FDDI, Token Ring yes ポップアップウィンドウ, e-mail, SNMP trap CheckPoint, Lucent Mgmt. Server?
NFR Network Flight Recorder 1997年12月 サードパーティーより随時 ソースコードより手動コンパイル TCP/IP DNS, HTTP, FTP, Telnet, SMTP, RSH Promiscuous x86 Most UNIXes (including many x86 variants) 10/100 Ethernet, FDDI no paging, e-mail, fax, pop-up window ?
NSW Dragon 1999年4月 約2週間 手動ダウンロード, メーリングリスト TCP/IP スイート   Promiscuous sparc, x86 Linux, BSD, Solaris 10/100/gig Ethernet no syslog, SNMP trap ログファイルおよびDB解析部のルーチンの記述が容易
AXENT Omniguard Intruder Alert 1992 1から2週間毎 暗号化されたWEBより手動 N/A ログ, ファイル更新, Cisco ルーターイベント, su, ファイアーウォール・イベント End-node End-node NT, NetWare, AIX, Digital UNIX, HP-UX, Solaris) N/A no paging, e-mail, pop-up window Tivoli TME 10, BMC PATROL, HP OV

4.2.0 BlackICE (Network ICE)


BlackICE はネットワーク上の全てのトラフィックを監視する従来よりあるタイプの"sentry(番兵)" として動作します。しかし、この製品はWin95/Win98/WinNT/Win2k上のホストで動作するネットワーク・ベース・IDSという点に新規性があります。これによって企業の内部の広い範囲にわたりIDSを設置することが可能になります。これはあなたのCEOのノートブック(企業の中で最も重要なデータを持ちながら最も防御の薄いコンピュータ)に搭載するのにも適当な唯一のIDSです。

また、この製品は他のシステムと同様にUNIXへの攻撃の検出のほか、Windowsに対する一連の攻撃も検出することができます。検出可能な侵入のリストは次のアドレスで見ることができます。http://www.networkice.com/advICE/Intrusions

BlackICE は148,800 フレーム/秒 (100-Mbps Fast Ethernetの最大値)のトラフィックを扱うことができ、IDSをインストールするにはセンシティブなUNIX環境やサーバーに対する"sentry(番兵)"としても適当です。

BlackICE は "intrusion countermeasures(侵入対策)" というコンセプトに基づいています。この製品は侵入者を検出するだけではなく、ビルトインされたミニ・ファイアーウォールによってアクセスを遮断します。また、証拠をつかむための逆探知(追跡)を行います。ミニ・ファイアーウォールはファイーアウォールの設定できない末端のユーザや、通常のファイアーウォールでは干渉が多すぎると感じる人にとって有効です。

BlackICE はカスタム侵入検知、カスタム反撃、カスタム・イベント・レポート、カスタム表示などの機能を追加するためのSDKが付属しています。

The ICEcap 管理コンソールは何千ものBlackICEエージェントに対応可能なスケーラブルな報告機能、プッシュ型インストール、侵入に関する情報の自動更新の機能を提供します。

Goto http://www.networkice.com for more information.

4.2.1 CyberCop by Network Associates, Inc.


多くの人がCyberCopについて誤った情報を得ています。CyberCop IDS はもともとNetwork General(the Sniffer folks) の製品で、intrusion detection 機能に web/Java フロントエンドを備え WheelGroup よりライセンスを受けたものでした。Network Associates が Network General を買収し Cisco が WheelGroup を買収しました。理由はわかりませんが Cisco はそのライセンス合意を更新することを取りやめました。したがって、 Network Associates もはやオリジナルの製品を販売することはないと思われます。

しかしながら、Network Associates は "CyberCop" という名称が気に入っていたため現在も製品の名称として使用しています。 同社は Ballista (Secure Networks社製)というSATANタイプの vulnerability scanner を購入し "CyberCop Scanner" と名前を改めました。

同社はさらに"CyberCop Server"と呼ばれる製品を提供しています。これはネットワークの機能はなくSun あるいは NTサーバ上での不正なログインやファイルの更新を監視するものです。これは最近NAI社によって買収されたHaystack社によって開発されたものであったと思われます。

参照 http://www.nai.com

4.2.2 RealSecure (Internet Security Systems (ISS), Inc.)


現在(1999-06-01)において, ISS RealSecure is the market leader in network-based intrusion detection. こ れは Windows と U NIX 環 境の両方で動作する唯一の製品です。参照 http://www.iss.com 彼らはホストベースの製品も持っています。彼らが公表するシグネチャにはネットワークベースだけでなくホストベースのシグネチャ(ログファイル解析)も含まれています。

RealSecure は最初のメジャーな商用ネットワーク・イントルージョン・デテクション・システムであり、技術的にはやや遅れているのですが現在のマーケットにおいても主導的な位置付けにあります。かつては強みであった検出シグネチャ数やトラフィック容量も他にくらべると少ないものになっています。スイッチングネットワークへの未対応は大きな欠点となっています。

RealSecure は多くのOEM契約をしていますのでODS switchesなど他の製品の中に含まれていることもあります。

4.2.3 NetRanger (WheelGroup/Cisco)


CyberCopやRealSecureと異なり、これはトラフィックを無差別にモニタします。またNetRangerは通過するトラフィックを監視するルータとしても使用することが可能です。WheelGroupはCiscoによって買収されたのでこの製品は主要なルータに搭載されることが予想されます。 参照 http://www.wheelgroup.com.

4.2.4 SessionWall-3 (AbirNet/Memco)


参照 http://www.abirnet.com

4.2.5 ID-Trak (Internet Tools, Inc.)


参照 http://www.internettools.com.

4.2.6 SecureNet Pro (MimeStart)


参照 http://www.mimestar.com.

4.2.8 Kane Security Monitor (KSM) (Security Dynamics)


1996年リリース

4.2.9 Network Flight Recorder


NFR は様々な形態で入手が可能です。: フリーウェア/研究バージョン(下記参照) ブータブルCD-ROMとして配布される"NFR Intrusion Detection Appliance", サードパーティー・リセーラーよりバンドルされて独自の改良を加えた(例 Anzen)ものなどがあります。

NFRの評判のある特徴としてはIDSに関して特化した "N-code" とよばれるプログラミング言語があります。 N-codeで書かれた完全なSMTP解析ツールもあります。他の多くのシステムは単純にシグネチャを追加するかCプログラムを書くことが必要です。数多くのN-codeスクリプトがインターネット上のL0phtなどのサイトからダウンロード可能です。

NFR は他のシステムよりもより統計的な処理を行います。N-code システムによりこの統計機能を拡張することも容易です。

より詳しい情報は以下のアドレスにて見ることができます。http://www.nfr.net/forum/publications/LISA-97.htm

4.2.10 Dragon


この商用製品は私の知る同種の製品に比較して、最も充実したシグネチャ情報を搭載しています。1999年4月15日の時点で400以上のシグネチャがあります。これは、ネットワークトラフィックの再構成も行い"network grep"システム(後述)の中では最も優れた製品と思われます。 http://www.network-defense.com

4.2.11 SessionWall

SessionWallは侵入検知システムというよりはコンテンツ検査デバイスを備えたファイアーウォールということができるでしょう。これは現存するワイアーをモニタするというよりは通信の間に割って入って機能します。 これは明らかに利点とそのためのコストがあります。

SessionWallはPlatinumによって買収された AbirNetによって開発されました。PlatinumはComputer Associatesによって買収されました。より詳しい情報は http://www.abirnet.comにあります。

4.3 "network grep"システムとは何ですか?


"network grep" システムは"正規表現"パーサーによりネットワークトラフィックから指定したパターンを抽出する生パケット・キャプチャを基礎としたものです。参照http://www.packetfactory.net/ngrep/

"Regexp" (正規表現) はUNIX環境における一般的なパターンマッチング言語です。これまで、一般的に正規表現はテキストファイルを検索するのに用いられてきましたが、バイナリデータについて使用することも可能です。事実、そのようなシステムはより柔軟なポート番号やTCPフラグなどのマッチングの基準に用いることも可能です。

"libpcap" (library for packet capture) はワイヤ上のパケットを"sniffs"  するUNIXシステムにおいて使用可能な一般的なライブラリです。ほとんどの UNIX-ベースの侵入検知システム(どんな種類でも) が特定のプラットフォームに最適化したドライバを使用していたとしても、libpcapも使用しています。

どちらのモジュールについてもソースコードが公開されています。多くの侵入検知システムが単純にlibcapの出力を正規表現を記したファイルを読み込んで処理する正規表現のパーサーに送っているだけです。いくらかのシンプルなシステムは正規表現すら使用せずにパケットをよく知られたバイトパターンと比較しているだけです。

この種の侵入検知システムは一つの利点があります。それはアップデートが最も容易であることです。この種の製品は一環して最多の"signatures" を備え新たな侵入"scripts" に対して最も早く対応します。

しかしながら、そのようなシステムは多くの"signatures"を用意しながらも、重大な侵入を発見できることはあまり無いようです。例えば、"CE63D1D2 16E713CF"という8バイトがUDP data の最初に存在した場合は Back Orifice へのデフォルト・パスワードでのトラフィックを意味します。80% of Back Orifice の攻撃がデフォルトパスワードを使用しますが、残りの20%は異なるパスワードを使用しているので、このようなシステムでそれを発見することは困難でしょう。例えば、Back Orificeのパスワードを "evade" に変更したとするとパターンは"8E42A52C 0666BC4A", となり、"network grep" システムで発見することはできなくなってしまいます。

このようなシステムのいくらかはIPデータグラムやTCPストリームを再構築していません。したがってハッカーは単純にマシンのMTUサイズを調整することでこのようなシステムに発見されることを回避することができます。

このようなシステムは多くのfalse positiveを生む結果となります。上記のBackOrificeの例では64-bitのパターンはあまり一般的ではありません。これによってBack Orificeが存在しないにも関わらず警報を発してしまうことがあります。

プロトコル解析を行うシステムの場合このような問題はありません。それらは、全ての攻撃のインスタンスをキャッチし、少ない誤警報(false positives)に押さえることができるでしょう。そしてまた、プロトコル解析はフレームを探す必要がないので実行速度も速くすることができます。さらにこれらはより完全な問題の診断が可能になります。例えば、"Back Orifice PING" (無害) と"Back Orifice compromise" (極端な例ですが。)の区別などが可能になります。また一方で、あらたなプロトコル解析のシグネチャはデザインやテストが必要になるため一週間以上かかることもあります。また、極端に精力的な攻撃に対しては誤警報(false positive)を現象させ実際の攻撃を見失うことがあります。

しかしながら、"network grep"はプロトコル解析システムに勝る利点があります。それらはあらかじめどのようにネットワークトラフィックが見えるべきかという前提なしで動作するために他のシステムでは見落とされてしまう攻撃を発見することができます。例えば、もしある会社がPOP3サーバーを通常とは異なるポートで運用していた場合、プロトコルを解析システムはPOP3プロトコルとは認識しないかもしれません。したがって、そのポートに対する攻撃は発見されずに終わってしまいます。一方、network-grep スタイルのシステムではポート番号等を考慮せずに同じシグネチャをチェックします。

4.3.1 Dragon

上記参照.

4.3.2 Bro


Vern Paxson氏の Bro 侵入検知システム。Vern Paxson 氏は他の多くのIDS(NFRやDragonなど)の基礎となっているlibpcapの多くの部分を実装した人物です。私は実際に誰かがBroを使用しているということを聞いたことはありません。以下のペーパーを参照http://ftp.ee.lbl.gov/papers/bro-usenix98-revised.ps.Z

4.3.3 Snort


フリーウェア、オープンソース、とても素朴なシステム http://www.clark.net/~roesch/security.html

4.3.4 Argus


Argus自身は侵入検知システムではありませんが、パケットをワイアから離れてモニタしイベントログを 生成します。その後ログエントリを侵入を検出するために、処理にかけたり読んだりすることができます。

参照ftp://coast.cs.purdue.edu/pub/tools/unix/argus ftp://ftp.sei.cmu.edu/pub/argus-1.5

4.4 侵入者はどのようなツールを使用しますか?

4.4.1 UNIX ユティリティ


UNIX プラットフォームに付属あるいはフリーソフトウェアのユティリティ
ping
ホストの存在を確認する。
traceroute
ホストへのルートを確認する。
nslookup/dig
DNS登録情報を確認する。
whois
Internicへの登録情報を確認する。
finger
ログインしているユーザあるいはユーザの情報を確認する。
rpcinfo
どのようなRPCサービスが提供されているかを確認する。
showmount
シェアされているリソースを確認する。
SAMBA
WinNT SMB のシェア情報を確認する。
telnet
テキストベースプロトコル(HTTP, FTP, SMTP, 等)での接続を実現する。

4.4.2 WinNT ユティリティ


上記のUNIXユティリティはWinNTでも利用可能です。またWinNT独自のものもいくつか存在しています。
nbtstat
リモートのNetBIOS情報を確認する。
net view
リモートのWinNTの共有を見ることのできるLANMANプログラム。

4.4.3 ハッキング専用のユティリティ


侵入に用いられる標準的なツールキット
netcat
"TCP/IP" のスイス・アーミー・ナイフと呼ばれ、侵入者はテキストベースのプロトコル操作のスクリプトを作成することができます。
crack / NTcrack / L0phtCrack / 等
ネットワークパスワードのクラックに用いる(辞書及びブルートフォース攻撃) これらはパスワードをダンプするユティリティも含んでおり、ケーブル上をスニッフするのに用いることもできる。
スニッファ・ユティリティ
ネットワーク・トラフィックを盗聴するのに用いる。 Gobbler, tcpdump, Network Associates Sniffer© Network Analyzer
TCP/UDP ポートスキャナ
どのTCPポートが使用可能かスキャニング/探査/精査する。いくらかのTCPポートスキャナはログに記録されないステルスモードで使用することも可能である。
Pingスィーパー
使用されているIPを調べるためにpingを大量のマシンに対して発信する。
侵入用パック(Exploit packs)
システム上の穴から侵入するためのソフトウェアをセットにしたもの。(通常ログイン後に使用するもの。)
リモート・セキュリティ・監査システム
SATANのようにネットワーク越しによく知られているセキュリティ・ホールを調査するもの。
War dialers
ダイアル・イン用の回線を探すために大量の電話をかけるもの。
NAT
SAMBA コードに基づきNetBIOS/SMB情報をWindows及びSAMBAサーバーから得るのに用いる。
スキャナ
システムの弱点を調査するプログラム。(例:SATAN, ISS, CyberCop Scanner) 簡単に大量の潜在的な弱点を調査することができる。

4.5 他に知っておくべきフリー/シェアウェアにはどのようなものがありますか?

4.5.0 NFR, リサーチ・バージョン


"NFR リサーチ・バージョン" は研究及び非商用に限りインターネット上より入手できる、組み立て可能なツールキットです。これは "as is"(訳注:ありのままの)ソフトウェアでありエンドユーザがインストールしたり設定するにもある程度の専門的な知識を必要とします。これは "プラグ&プレイ" 侵入検知システムではありません。(NFRよりの引用)

商用バージョンについては上記を参照のこと。

4.5.1 tcpwrapper


TcpwrapperはUNIXのアドインであり、inetdと各サービス(ftp, telnet等)の間に入ります。inetdはまずアクセス管理(IPアドレスによる)を行うtcpwrapperを呼びログを取ります。次にtcpwrapperが実際のサービスを実行します。

4.5.2 IDS for Checkpoint Firewalls


ファイアーウォールのログ解析はネットワーク解析と同様の効果があります。参照http://www.enteract.com/~lspitz/intrusion.html

4.5.3 Shadow


これは海軍において使用された侵入を追跡し、報告を作成するシステムのプロジェクトであったと思います。彼らはこのシステムを用いて発見した、連携した低速な攻撃に関する興味深い報告書を出しています。http://www.nswc.navy.mil/ISSEC/CID/co-ordinated_analysis.txt  

4.5.4 AAFID


Purdue大学の COAST 分散エージェントのアイデア。 このうちどれだけがプロポーザルでどれだけが現実のものかは定かではありません。

6. リソース

6.1 新しいセキュリティー・ホールの情報は何処で手に入れることができますか?


6.1.1 CERT (Computer Emergency Response Team)

セキュリティーの問題はCERT advisoryで報告されることがあります。 CERT (コンピュータ緊急対応チーム) 1988年のモーリス・ワーム事件を受けて、いくつかの大学とDARPAによって設立されました。参照 http://www.cert.org.

6.1.2 AUSCERT (AUStralian Computer Emergency Response Team)


AUSCERTはオーストラリアのコンピュータ緊急対応チームです。登録に関する情報は次のWebサイトを参照してください。

http://www.auscert.org.au/

AUSCERTへのコンタクト auscert@auscert.org.au.

6.1.3 CIAC (Computer Incident Advisory Capability) by US Department of Energy


は多くの有用なアドバイザリーを持っています。参照http://www.ciac.org/.

6.2 他のセキュリティ及び侵入検知のためのリソースにはどのようなものがありますか?

6.2.1 Purdue大学 COAST アーカイブ


ここはIDSとセキュリティ全般について学ぶには最適なサイトです。 参照 http://www.cs.purdue.edu/coast, http://www.cs.purdue.edu/coast/intrusion-detection, and http://www.cs.purdue.edu/coast/ids.

6.2.2 SANS Institute


ここはハッカーではない人々のためのセキュリティ情報には最適なサイトと思われます。彼らの対象は彼らのネットワークを守るMIS(情報システム管理)プロフェッショナルです。 参照 http://www.sans.org/

6.2.3 L0pht Heavy Industries


Windowsをターゲットとしたツールやアラート情報などハッキングの情報があります。 Goto http://www.l0pht.com

6.2.4 Technical Incursion Countermeasures


私のお気にいりのサイトです。システム侵入に関するよく整理された豊富な情報があります。 参照 http://www.ticm.com

6.2.5 IDS メーリングリスト


本文に"subscribe ids"と書いたメールを majordomo@uow.edu.auに送ってください。
質問については ids-owner@uow.edu.au まで。
これは時折興味深い議論が寄せられる比較的流量の少ない良いメーリングリストです。

6.2.6 Michael SobireyのIntrusion Detection Systems ページ


http://www-rnks.informatik.tu-cottbus.de/~sobirey/ids.html

6.2.7 advICE データベース


http://www.networkice.com/advice/Countermeasures/Intrusion%20Detection/default.htm

6.3 有用なサイトにはどのようなものがありますか?

以下は他のサイトから集めた情報を掲載しているものです。一見の価値があるかもしれません。

6.3.1 NIH セキュリティ・サイト


参照 http://www.alw.nih.gov/Security/

6.3.2 NTSecurity.net


参照 http://www.ntsecurity.net/.

7. IDS と Firewall

7.2 ファイアー・ウォールを備えているのになぜIDSが必要なのですか?


よくある誤解として、ファイアーウォールは攻撃を認識してブロックするというのがあります。    これはまったくの間違いです。    

ファイアーウォールは単純に全てをシャットアウトしておいて、いくつかの選択された通信だ    けを通過させるようにしたものです。完璧な世界においては、システムはすでに"ロックされ"    安全になっているはずなので、ファイアーウォールは必要ないでしょう。我々がファイアーウォールを    必要とする理由は偶発的にセキュリティーホールが残されていたりするためです。

したがって、ファイアーウォールをインストールする場合、最初に行われるのは全ての通信を停止    することです。次に、ファイアーウォールの管理者は特定のタイプのトラフィックがファイアー・   ウォールを通過することを許可する"ルール(rule)"を注意深く設定します。例えば、一般的な企業におけるインターネットに接続されたファイアーウォールは、全てのUDPとICMPデータグラムトラフィックを停止し、内向きのTCP接続を停止し、外向きTCP接続は許可しています。これはインターネット上のハッカーからの内向きの接続を停止しますが、内部ユーザによる外向きの接続を許してしまいます。

ファイアーウォールはあなたのネットワークを囲み、いくつかのゲートを選択して用意した単純なフェンスのようなものです。フェンスは(例えばその下に穴を掘っているとか、無許可の人物がゲートを通過しているなど)誰かが侵入を試みていることを発見するような能力も能力は備えていません。それは単純に指定されたポイントへのアクセスを制限するにすぎません。

要するに、ファイアーウォールはユーザーが想像するような動的な防御システムではありません。これに対し、IDS より動的なシステムです。IDSはファイアーウォールが捉えることのできないネットワークに対する攻撃を認識します。

例えば、1999年4月にはColdFusionのバグによって多くのサイトがハックされました。これらのサイトはポート80のWebサーバのみにアクセスするよう全てファイアーウォールが設定されていました。しかしながら、ハックされたのはWebサーバだったのです。したがってファイアウォールは何の防御も提供しなかったのです。一方侵入検知システムなら、システムに設定されたシグネチャと一致することで、この攻撃を発見することができたでしょう。

ファイアウォールに関する他の問題点としては彼らはあなたのネットワークの境界部のみにおいて機能するということです。ハッキングによる経済的損失のおよそ80%がネットワーク内部からによるものと言われています。ネットワークの周囲にあるファイアウォールはインターネットと内部ネットワークの間のやりとりを監視するだけで、内部に起こることに関しては一切感知していません。

あなたのファイアーウォールにIDSを追加する理由としては以下のものが挙げられます。

"周到な防御と、執拗なこだわりはあなたの味方です。" (Bennett Todd <bet at mordor dot net>からの引用). ハッカーはあなたが想像する以上の能力を持っています。あなたはできる限りの防御を行った方が良いでしょう。それでもなお、真剣なハッカーには十分とはいえません。しかしながら、そのような防御によってハッカーの意欲を喪失させる効果はあるのです。

7.2.1 どのようにしてハッカーはファイアーウォールを突破するのですか?


Editors Note: これは上記のポイントを明らかにするだけのものです。

歴史上の橋の建設というものを考えてみましょう。時がたつにつれて技術は向上し、橋はどんどん広くて長い距離をつなぐことができるようになってきました。(数キロにもわたるサンフランシスコのゴールデンゲートブリッジなど)橋の建設者達は橋が失敗する(人命に関わらないとしても)ことをとても恐れるために、とても保守的です。したがって、彼らは必要以上に素材(木、石、鉄)を使用します。また決して可能な限りの幅を持つような橋を作ることはありません。しかしながら、時が経つにつれて橋自身の実績ができてくると、技術者達は橋が失敗するまで、よりリスクを選択するようになってきます。そしてまたさらに多くの技術者が保守的になっていく。As has been quoted "落ちない橋を作ることは容易である。問題なのはかろうじて落ちない橋をつくることである。"

これと同様に、多くのファイアーウォール管理者は保守的な方法を取っています。過剰に保守的にこだわり、絶対に必要な以外のサービスを全て停止することでハックされないファイアーウォールを構築することは容易です。

しかしながら現実の世界において、技術者は十分神経質になることは許されてはいません。橋の建設者が橋を広くして豪華に見せたいのと同様に、企業はインターネットに対するサービスを広く持ちたいと考えるものです。これはファイアーウォールの管理者に対して防御を緩めさせる大変なプレッシャーになります。このプロセスはシステムがハックされるまで続きます。その結果企業はより保守的になるでしょう。このような観点から、企業のダイナミクスによって管理者はハックされることを余儀なくされているとも言えるでしょう。

全てのファイアーウォール管理者が知るようにシステムはインターネットからの攻撃に常にさらされています。世界中のハッカーが常にシステムの弱点を探しつづけています。さらに、毎月一般的な製品の新たな弱点が発見されハッカーはその弱点を探してインターネット全体にスキャンをかけます。そのようなセキュリティーホールの例にColdFusionのcfmdocsバグと呼ばれるものやMicrosoftの.htrバッファーオーバーフローなどがあります。

7.3 IDSを使用した場合にファイアーウォールは必要ですか?


もちろん。多くの企業が良く管理された、単一の接続口を用意しています。世の中には常に自動ツール(SATANのようなもの)を走らせてインターネット上のセキュリティーホールを探している、大量の"スクリプト・キディーズ"と呼ばれる人達がいます。ファイアーウォールがなければ、このような自動プログラムはあっというまにセキュリティーホールを発見することでしょう。インターネットを週に数時間しか使用しないダイアルアップユーザといえども常にスキャンを受けていると考えた方が良いでしょう。著名な企業の場合はさらに頻繁にスキャンを受けることでしょう。

7.4 IDSはどこから情報を得るのでしょうか? ファイアーウォールですか?


いいえ。いくつかのファイル分析プログラムはファイアーウォールログを侵入のシグネチャを探すためにスキャンしますが、多くのIDSは他のところから情報を得ています。

ファイアーウォールは単純に通過を許可するかしないかのルールベースシステムであることに注意してください。 "内容検査" スタイルのファイアーウォールでさえ、彼らのルールに合致するかどうかを調べるだけで、トラフィックの内容がアタックかどうかを判断する能力を持っていません。

例えば、ウェブサーバの前にあるファイアーウォールの場合、TCPポート80以外の全てのトラフィックをブロックします。ファイアーウォールは全てのポート80への接続を有効なアクセスとして扱います。一方IDSは同じトラフィックの中の攻撃パターンを探し出します。IDSは管理者がポート80を許可していようがいまいが感知していません。IDSに関しては全てのトラフィックが怪しいものとして扱います。

これはIDSはファイアウォールと同じデータソースすなわち生のネットワークトラフィックを見なければならないということを意味しています。もし、IDSがファイアーウォールと対等の位置になく、付随的な機能であった場合、ファイアーウォールが侵入とみなしたものに対する機能しか提供できないことになってしまいます。上の例でいうとファイアーウォールはポート80のトラフィックを決してIDSに送らないことになってしまいます。

                               +-+                             .
                               |F|  +-----+                    .
                               |I+--+IDS#1|                    .
/============\                 |R|  +-----+    /============\  .
H            H                 |E|             H  corporate H  .
H  internet  H--------+--------+ +------+------H   network  H  .
H            H        |        |W|      |      H         +-----+
\============/     +--v--+     |A|   +--v--+   \=========+IDS#4|
                   |IDS#3|     |L|   |IDS#2|             +-----+
                   +-----+     |L|   +-----+                   .
                               +-+                             .
IDS #1
この方法をとるIDSはわずかです。ファイアーウォールは侵入を効果的に検出するのに十分な情報を提供しません。
IDS #2
この良く用いられる配置ではIDSはファイアーウォールを通り抜けることのできた攻撃を発見します
IDS #3
この配置ではファイアーウォールに対する攻撃の試みを発見することができます。
IDS #4
企業のネットワーク中にIDSを配置することで内部からの攻撃を発見することができます。

8. インプリメンテーション・ガイド(実装の手引き)

8.1 IDSベンダーに対してどのような質問をするべきですか?


CSI (Computer Security Institute)はこれについての非常に有意義なページを開設しています。ここにはIDSベンダーに対する質問と、ベンダーにとって難しい質問などがあります。参照http://www.gocsi.com/intrusion.htm.

最も大切な質問は:

シグネチャの更新と維持コストは?
イントルージョン・デテクションはウィルス対策に似ていて1年も更新を怠ると新たな攻撃へ対応できなくなります。
実際どの程度のトラフィック(パケット/秒)によって製品が対応できなくなるか?
Network Worldは1998年8月にIDS systemsの評価を行い50,000パケット/秒において全ての製品が対応できなくなるとしている。従って高負荷なT3ラインや100Mbpsのネットワークやギガビットネットワークでは、これらのシステムは侵入を発見することはできない。多くのベンダーは100Mbpsの性能を主張していますが、これは(最大パケットサイズなど)実際の状況を想定していません。ハッカーはシステムを盲目にするために簡単に小さなパケットを作り出すことができる(smurf等を用いて) のでこれはあまり良いテスト方法ではありません。
そのシステムはいくつのシグネチャをサポートしているか?
大半のイントルージョン・デテクション・システムはログ情報に基づくものです。これらは接続を追跡し後で解析するためあるいは証拠として使用するためにファイルにダンプしますが、これは侵入検知のシグネチャにより起動されるわけではありません。次のレベルのシステムでは20以下のシグネチャを追跡します。これは大抵シンプルなシグネチャで、ポートスキャンやpingスィープのようなものです。商用のイントルージョン・デテクション・システムは少なくとも200のシグネチャを追跡します。いくつかのベンダはシグネチャを(検出の必要がないにも関わらず)その製品のヘルプデータベースの数として数えていたり、製品シリーズ全体の数(ネットワーク上のシグネチャでないものも含む)として数えたり、ユーザによって登録可能な数(よく管理されたネットワークはイントルージョン・デテクション・システムは必要ないのに対して、ベンダーはあまりに多くの管理を必要としているシステムに対しても尻込みをしています。)として数えていることに注意が必要です。
製品にはどのような侵入に対する対応機能がありますか?
多くのベンダーはハッキングを防止する機能を宣伝していますが、実際には誤警報に基づく動作が多いため、またハッカーがIDSサービス妨害に使用することを防止するために、ほとんどのユーザはこの機能をOFFにしています。この疑問に対する良い回答の一つはハッカーを特定するための技術と証拠の収集(トラフィックの分析による)でしょう。
IDSのシステム全体としてのスケーラビリティーは?
いくつのセンサーをサポートすることができるか? データベースの大きさはどの程度か? 情報を管理コンソールに送るときのトラフィック・レベルはどの程度か? 管理コンソールが過負荷になった場合にどうなるのか?       実際、ほとんどのIDSシステムは一つの管理コンソールに対して少数のセンサーしかサポートしていません。
データを使用して何が可能か?
レポート・システムはどの程度すぐれているか? 誤警報をどの程度容易に処理できるか? 警報を分析し状況を確認するのにどの程度の時間を必要とするか? その製品を使用するために何名程度の要員が必要か?
費用はどの程度必要か?
 

8.2 どのようにしてシステムを使用を継続しながらメンテナンスすることができますか?


この質問について私は自信がないので皆さんからのフィードバックを期待しています。

イントルージョン・デテクション・システムをインストールすれば、常に侵入のための行為が行われていることがわかるでしょう。SOHOの環境では週に一度はハッカーからのスキャンを受けることが予想されます。有名なWebサイトではハッカーは1日に何度も弱点がないかスキャンを試みることでしょう。大規模な企業内ネットワークでは内部ユーザの定常的な不穏な行動を発見することでしょう。

最初に遭遇しそうな問題としては内部ユーザがWebのポルノサイトを見ていることが考えられます。この問題はNetwork General (Sniffer Network Analyzer tmの開発企業) において"web expert analyzer"の開発途中に多くの社員がそのようなサイトを見ていることをこのシステムが検出したことにより明かになりました。当時のCTO(Greg Gilliom)は、この会社が公式なポリシーは持っていないが、世界で最も進んだネットワーク・モニタリング機器が彼らの行動を監視している、ということを述べた電子メールを社員に向けて書かなければなりませんでした。結局それは会社のビジネスにつながったのです。

多くの他の保守的な企業がそのようなブラジングについての明かな制限を設けていないのは興味深いところです。これは、しばしばエグゼクティブ自らそのようなことをしているからではないでしょうか。立場の低いエンジニアはそのような行動が発見することに対する恐れから、このような議題が上らないと思われます。

次の問題はエンジニアの人事問題です。 ユーザが不正な行為を行っているのを発見した場合に、そのユーザを注意するために多くの時間を人事と相談しなければならないでしょう。

最後の問題はシステムに侵入したハッカー達をどうするかという問題です。 大抵はISPに問い合わせの電話をしたり"abuse@"というアドレスにメールを出したりします。時にはISPは自分達のシステムも侵入されていることが分かるので感謝をしてくれるでしょう。

実際、極めてひどいハックに遭遇したとしても、落ち着いて、威厳と敬意を忘れずに他人と接するようにしましょう。

8.4 不適切なWebサーフィンを防止するにはどうすれば良いですか?


今日の企業のネットワークにおける大きな悩みの一つに従業員による"不適切"なWebサイトの閲覧があります。ある程度、企業は従業員がインターネットのために就労時間を無駄に過ごすことを心配しています。そしてまた、従業員がポルノサイトを閲覧していることについて性的ハラスメントの法的問題が発生することも恐れています。

しかしながら、企業は自ら"ビッグ・ブラザー"になることを望んではいません。不適切なネットサーフィンに関するルールがグレーエリアになってしまうのはやむを得ません。(例えば: Playboy.com では最近コンピュータ・セキュリティーに関する記事を掲載していましたので、従業員は正統にWebをサーチしているだけで問題に引っかかってしまう可能性があります。)

IDS、ファイアーウォール、プロキシサーバ、スニッファ・プログラムは全てのWebサーフィンをどのサイトにアクセスしたかを含め、ログファイルに記録することができます。多くの企業はそのようなログを持っていますが、この情報を利用しているところは少ないようです。ネットワーク技術者は人事部のような仕事をしたり、人を責めるような仕事はしたくありません。(多くの場合犯人は経営陣であり、彼らを責めることは自分のキャリアを狭める結果になります。)

一つの解決法は、そのような情報を内部用Webサイトに公開することです。これは不適切なWebサーフィンに関して劇的な効果があることで知られています。これは中央で適切かどうかを判断するのではなく、そういった判断を個人にゆだねることになります。

8.5 どのようにして自分のIDSを開発(プログラム)することができますか?


単純なIDSを作ることはとても簡単です。単純に入力(ログファイルやネットワークトラフィック)を取りこみこれをパターンマッチ(正規表現)にかけます。同時に、(SETI@Homeがラジオのノイズを繰り返しパターンを探してフーリエ解析にかけるように、)このデータを統計的な分析にかけます。

例えば、上のセクション 4.3 ではネットワーク・トラフィックをパターンマッチシステムにかける "network grep" システムを紹介しました。このようなシステムはある程度のC言語とUNIXシステムの知識があれば作成できます。

同様にセクション 4.5.2 ではファイアーウォールのログファイルを解析するPERLによるシステムを紹介しました。

8.7 NIDSの法的な妥当性はどうなっていますか?(盗聴の形態を取るため)


国や州によって法律は異なります。あなたの所有するネットワークのトラフィックについて侵入を検出するためにモニターすることは一般的に合法です。

心配の一つは、NIDSを企業のネットワークで運用するということは、ネットワーク管理者が従業員のネットサーフィンの活動をを見ているということになります。(時にはネットワーク管理者は企業のトップがポルノサイトを見ているのを発見することもあります。)ネットワーク機器やユーザのワークステーションがが会社に属する限り、法的にはそれらの機器の使用にあたってはモニタされることは同意しているとみなされます。しかしながら、企業は明示的に従業員のハンドブックに彼らのネットワーク上での活動はモニタされるであろうことを記しておくべきです。少なくとも、これによって不要な問題の発生を回避することができるでしょう。

8.8 どのようにすればログファイルを安全な方法で保存することができますか?


まず最初にハッカーがするであろうことは、侵入の証拠を隠すために、ログファイルを削除したり変更したりすることです。したがって一般的なニーズとしては、一度データを書きこんだら変更することはできない"write-once" 記憶システムが挙げられます。

WORM (Write-Once-Read-Many)ドライブは従来よりこのような目的に利用されてきましたが、それらはとても高くあまり一般的ではありません。おそらくはあなたのシステム用のそういったドライバは無いかもしれません。そしてまた、あなたのソフトウェアには互換性がないかもしれません。 (例:いくつかのシステムは書きこんだファイルを後で少し書き換えたりしますが、これはWORM上では機能しません。

エントロピセットインという方法は、システムに意図的な制約を与えることで、混乱した状況を回避します。システムを安全に監視する一つの方法はシステムログをTCP/IPの届かないところに設置し、TCPDUMPを使用して生のパケットをファイルに書き出していくことです(おそらくシスログの生成は後日行うことになります。)が、このようなシステムが誤ってTCP/IPに接続されないという保証はありません。

そのような混乱に対抗するためには、"snipped-wire" アプローチというものを使用します。このモデルでは、データを生成するマシンにイーサーアダプタを追加し、受信 ワイヤをカットします。もし、この追加のアダプタが安全でないネットワークに接続されたような場合にも、わずかの問題の発生に押さえることができます。同様に、受信システムは一つだけのイーサーアダプタを持つべきでしょう、そしてその送信ワイアをカットするのです。これはパケットスニッファを使用する場合にTCP/IPスタックを無効にする最も有効な方法でしょう。(もちろん、反応が無かったとしてもシステムを攻撃する方法もあります。)

通常のTCP/IPはこのシナリオの中では機能しません。トラフィックを一方通行で送信するにはルーティングとARPテーブルをハードコードしなければなりません。同様に、受信マシンについては受信パケットを利用可能な形に再構成するユティリティーが必要になるでしょう。

syslogやSNMP TrapのようなUDPベースの通信はこのような状況ではもっとも有用な通信手段になります。ビルトインの環境があるので出力用のマシンにおいてこれらを利用することはとても容易です。UDPでは反応を待たないので、アプリケーションの運用を妨げることがありません。また、SNMPメッセージやsyslogは受信側で最終的に解析する際容易ですし、少なくとも、TCP/IPスタック上でこれらのポートのみを受信するように固めることも容易です。一方、最小限TFTPかNFSがTCP/IP上でファイルを転送するために設定することも可能です。

このデータ管理方法の問題点として、データリポジトリをネットワークに接続することができないのでシステムをバックアップするのに必要なものは全てそのマシン自身にインストールされていなくてはならないということです。

個人的に私が使用しているのは古いPentium-90のコンピュータに6GのドライブとCD-ROM Writerを接続し、全てのネットワークトラフィックをディスクに記録するスニッフィング・ユティリティーを使用しています。(416-kbps DSL環境)単純なフィルタが多くの不要なものを削除するので最新のRedHatのディストリビューションをダウンロードしたとしてもディスクを埋めることはありません。私は、この方法では絶対的にネットワーク上で起こっていることの多く、いわゆるステルス手法なども含めて記録できるので、この解決法をログファイルを記録するよりも好んでいます。

9. NIDSの限界は?

ネットワーク侵入検知システムは十分信頼に足るものではありませんので、他のセキュリティ機構を補完するものとして考えるべきです。ファイアウォールや暗号技術、認証システムなど他のセキュリティ機構の基本的なコンセプトは”固く””確実”なのですが、時折バグや設定ミスなどによって問題が発生することもあります。一方NIDSの基本コンセプトは絶対に確実というものではありません。侵入検知システムは通常のトラフィックに対して誤警報を発してしまう2つの問題があります。そのため利口なハッカーは侵入検知システムを無効化することもできます。実際、侵入検知システムがいかに正確ではないかということが明らかにされています。

これは侵入検知システムが役にたたないということを意味するわけではありません。ハッキングが非常に普及している今日のネットワークでは、(ファイアウォールの内側でも外側でも)そのようなシステムをインストールするとすぐに驚かされることでしょう。良い侵入検知システムは劇的にサイトのセキュリティを改善することができます。侵入検知システムは補完的な手段にすぎないことを自覚しておかなければなりません。"proveably accurate"(おそらく正確)なシステムは大抵(ヒューマンエラーによって)失敗し"proveably incorrect"(おそらく不正確)なシステムは大抵うまく動作します。

9.1 スィッチを用いたネットワーク(本質的な限界)


スィッチネットワーク(100MbpsやギガビットEthernetスイッチのような)はネットワーク侵入システムに対して重大な問題を抱えています。全てのトラフィックを監視するための適切な接続口が存在しないからです。

例えば、CEOと同じスィッチ内のネットワークに接続しているユーザはCEOのマシンのファイルやプリンタ共有の機能に対して一日中自由に攻撃をしかけることができます。

この問題にはいくつかの解決法が存在しますが、十分なものではありません。これには以下のようなものがあります。

スゥイッチに組み込みのIDS

いくつかの製品はスィッチ自体に組み込まれています。しかしながら、私の知る限りこれらのIDSシステムは従来型のNIDSのような広い機能は備えていません。
モニタ(monitor)・ポート,スパン(span)・ポート

多くのスィッチはネットワークアナライザを接続する"モニタ・ポート"を備えています。NIDSはこのポートに簡単に接続することができます。明かな問題点としてこのポートはスィッチ内部よりも低速で動作するということです。したがってNIDSは負荷の高いスィッチの全てのトラフィックを監視することはできないのです。
ケーブルからのタッピング(スィッチ間またはスィッチノード間)

トラフィックを監視するためにモニタを直接スィッチ間のケーブルやスィッチからホストへのケーブルに接続することができます。他のテクニックとしては以下のようなものがあります。

ライン・タップ

ラインタップは直接、通信線の中に挿入して通信を複製するものです。代表的なものには100Mbps全二重の線に接続でき一つのコンピュータから2つのチャンネルを読み取ることを可能とするShomiti Century Tap(http://www.shomiti.com/productsf/tapfamilyf.html)というものがあります。

バンパイア・タップ

かつてバンパイア・タップは太い同軸Ethernetケーブルの支柱でありネットワークの終端を接続する好ましい方法とされていました。

インダクタンス・タップ(Inductance taps)

多くのタップはTDR(Time Domain Reflectometer)装置によって発見することができます。インダクタンス・タップはケーブルはケーブルに直接つなぐことなくケーブルの周囲に発生する電磁ノイズを拾います。これはスパイによってのみ利用されます。

スィッチ間におけるケーブルのタッピングの問題としては大量のトラフィックが発生することである。しかしながら、ほとんどのNIDSは限られた帯域幅しか処理することができないのでこのような場合飽和してしまうことが予想されます。

Thanks to Christopher Zarcone < czarcone at acm dot org > for this info.

ホストベースのセンサー

コンセプトという点からは、スィッチネットワークのリソースの限界を克服する方法はホストベースの侵入検知システムを配置することです。BlackICEやCyberCop Monitorのようないくつかのホストベース・エージェントはそのホストのトラフィックのみを監視するネットワークベースのコンポーネントを備えています。他のものは従来のようなログファイルと監査分析を行います。

9.2 リソースの限界


ネットワーク侵入システムはネットワークの中心的な場所に位置する必要があります。また何千にものぼるかもしれないマシンによって生成される情報を分析し格納する能力が必要とされます。また、そのセグメントからトラフィックを送信している全てのマシンの働きをエミュレートすることも必要です。明らかにこれら全てをこなすことは不可能なのでなんらかのトリックを使うことが必要です。

このセクションではいくらかの典型的なリソースの問題をリストアップします。


9.2.1 ネットワークトラフィックの負荷


現在のNIDSはセグメントの最大負荷を処理することはできません。平均的なWebサイトでは100MbpsのEthernetにおいて50,000パケット/秒に相当する180byteのフレームサイズを持っています。大抵のIDSユニットはこのスピードについて行くことはできません。ほとんどのユーザはこれよりも少ないトラフィックを使用していることでしょう。しかしこれは考えておくべきことです。
IDSを購入する際にはそのシステムは毎秒何パケットを処理することができるのかを聞いておきましょう。多くのベンダが何ビット毎秒という値を答えようとするでしょう。しかし毎秒のパケット数が本当のボトルネックになるのです。事実上すべてのベンダーの製品はは1500バイトのパケットを用いて100Mbpsのトラフィックを処理することができますが、60バイトのパケットで100Mbpsのトラフィックを処理できるものはあまりありません。

 

9.2.2 TCP 接続


IDSは多数のTCP接続の状態を保持しなければなりません。これは大量のメモリを必要とします。 この問題はクライアント/サーバの接続が終了した後も接続情報をIDSが保つようにする侵入者の意図的な回避テクニックによってさらにひどいものとなります。

IDSを購入する場合、ベンダーに対してどれだけの同時TCP接続を処理できるかを聞くと良いでしょう。

9.2.3 他の状態についての情報


TCPはIDSがメモリ内に状態の情報を保持しなければならないもっともシンプルな例です。他の例としてはIPのフラグメント化、TCPスキャンの情報、ARPテーブルなどがあります。

 

9.2.4 長期的な状態


古い問題としては侵入者がスキャンをとても低速で行う”スロースキャン”があります。IDSはあまり長い期間情報を保持することができないので、スキャンのデータの相関を見つけることができません。
 

9.3 NIDSに対する攻撃

以下の方法によって侵入検知システム自身が攻撃を受けることがあります。

9.3.1 センサの盲目化


ネットワーク侵入検知システムは一般にCOTS (commercial-off-the-shelf)製品のコンピュータ上で動く受動的なモニタとして設計されています。このモニタはネットワークの流れの中ではなく「そば」に設置されます。これはつまりシステムがトラフィックの速度についていけなくなったとしても、トラフィックを絞ったりすることはできないということを意味しています。そして、パケットを落としはじめるに違いありません。これは消防ホースから水を飲もうとしているようなものです。今日のNIDSで100Mbpsの詰まったトラフィックについていくことができるものはあまりありません。(ここでは”詰まった”とはパケットの平均サイズが180バイトでおよそ50,000パケット/秒を意味しています。)

高いトラフィックはセンサーに処理できなかったパケットを落とさせるだけではなく、センサー自体を完全にシャットダウンすることも可能です。例えば、最大20,000フレーム/秒の処理を行うことのできるセンサーを考えましょう。40,000フレーム/秒の負荷が与えられた場合、実際の処理速度は10,000フレーム/秒か5,000フレーム/秒あるいは0になってしまうかもしれません。これはフレームの受信とフレームの分析は2つの異なる処理だからです。多くのアーキテクチャは処理するのが難しい場合でも、パケットを受信しさらにパケットの処理時間を奪います。

したがって、侵入者はネットワークを飽和させることでセンサを攻撃することが可能です。もし侵入者がローカルにいるのであれば、単にパケット送信プログラムを使用すれば良いでしょう。400Mhzのマシンは60byteのパケットを用いてそのシステムに接続されたIDSシステムを破壊することができるでしょう。

リモートからの侵入者の場合、攻撃者自身がこの方法で攻撃する十分に高速なネットワークを持っているとは考えにくいので(100Mpbsということはあまりないでしょう)ネットワークを飽和させるのにsmurf か fraggle 攻撃ができるでしょう。

 

 

9.3.2 イベント容量の盲目化 (低速ブラインド)


'nmap'ポートスキャンツールは”デコイ”スキャンという機能を持っています。これは攻撃者の実際のIPアドレスと同時に何百もの偽のソースアドレスをしようしてスキャンするものです。したがって、管理者がこのうちどれが本当のアドレスかということを発見するのはとても大変になります。

どのような攻撃も同様のテクニックで行うことができます。偽のアドレスによる大量のアタックは、その中にまぎれている本当のアドレスからの攻撃をみつけにくくします。管理者はノイズにまぎれた本当の攻撃を見つけるのに苦労を強いられます。

しかしながら、これら2つのシナリオにも問題があります。攻撃者が疑うにはそこに見つけるべきデータが必要です。他の攻撃はこのデータ容量を埋め尽くしてしまおうというものです。データベースが埋められてしまえば過去のアタックの記録は削除されて発見することはできません。

9.3.3 サービス妨害(DoS :Denial of Service)


NIDSは様々なサービスを提供しているTCP/IPスタック全体にも相当するとても複雑なシステムです。これはNIDSはSYN floodやsmurfのような攻撃に影響されやすいということを意味しています。

それどころか、NIDSが処理する様々なプロトコルは予期せぬトラフィックに対してシステムがクラッシュさせられる可能性を残しています。攻撃者はターゲットが使用しているのと同じ侵入検知システムを購入し、そのIDSを破壊するためのパケットを探したりします。そして侵入者は攻撃の間IDSを殺しておいて発見されないようにします。

9.4 単純な回避

このセクションでは基本的な侵入検知システムをだますための単純な回避テクニックを紹介します。 次のセクションでより高度な手法について述べます。

9.4.1 フラグメント化(Fragmentation)


多くの単純な侵入検知システムは丈夫なフラグメントシステムを持っていません。これはファイアウォールに対して使用されていたもので、TCPヘッダー内のパケットを細分化しファイアーウォールがデスティネーションポートを調べることを妨げ、トラフィックがフィルタをすりぬけるようにするものでした。

したがって製品レベルのNIDSはトラフィックの再構成を行います。またいくらかのファイアウォールはトラフィックが通過する前に再構成を行うことでトラフィックの”正規化”を行います。

 

9.4.2 デフォルトの回避

ディスティネーションポートはユニークにプロトコルを規定するという仮定に基づいて、ファイアウォールを簡易なNIDSとして使用する人々もいます。バックドアをうまくバックドアをインストールすることのできたハッカーはデフォルトポート以外で標準的なプロトコルを走らせることができます。例えば、ハッカーは例えばBack Orificeが仕込まれたプログラムをポート番号をデフォルトの31337から変更して他のユーザに送ることができます。(わずかなものを除いて)大抵の侵入検知システムはトラフィックを適切に識別することはできないでしょう。

9.4.3 低速スキャン


ケーブル上の大量のトラフィックのためにNIDSは長期のログを維持することに問題があります。従って、1時間に一つのポートあるいはアドレスをスキャンするような"低速スキャン(slow scan)"を検出することは困難です。(ping sweeps あるいは port-scans)

9.4.4 連携した低帯域攻撃


時折、ハッカーは協力して複数のIPアドレスから低速スキャンを行うことがあります。これはイントルージョン・デテクション・システムによる発見を困難なものにします。

 

9.4.5 アドレスのスプーフィング/プロキシ


侵入検知の一つのゴールは誰が攻撃しているかを明らかにすることです。これはいくつかの理由により困難であることが考えられます。例えば'Smurf'攻撃においては送信されていないパケットに対する何千もの返答パケットを受けることになります。NIDSはこの返答パケットを検知しますが誰が最初の偽造されたパケットを送信したかを検出することはできません。TCPシークエンス番号予測では偽造されたパケットが使用されるのでNIDSは侵入者がどこからアクセスしているかを正確に知ることはできません。また多くの侵入者は攻撃の際、FTPやWebプロキシを使用したり、一旦侵入に成功した他のサイトからのアクセスを行うので誰が攻撃をしかけているかを特定することは難しく、ファイアウォール上にIPアドレスフィルタを設けたとしても役に立たないかもしれないのです。
 

9.4.6 パターンの変更による回避


シンプルなネットワーク侵入検知システムの多くは”パターンマッチング”に頼っています。攻撃スクリプトは良く知られたパターンを持っていますので、この出力から単純にデータベースを作成すればかなり良い結果が得られます。しかし、これは単純にスクリプトを変更することで回避できてしまいます。

例えば、いくつかのPOP3サーバは長いパスワードを入力するバッファーオーバフローに対して脆弱です。この弱点に対する攻撃スクリプトがいくつか存在しています。ある侵入検知システムは10個の最も一般的なスクリプトに対する10個のパターンを持っているとしましょう。同時に他の侵入検知システムはパスワードフィールドを調べて100byte以上入力された場合に警報を発するとします。後者がこの弱点に対するあらゆる攻撃をキャッチすることができるのに対して、前者はスクリプトを変更することで簡単に回避できてしまいます。

9.5 複雑な回避方法


優れたハッカーは侵入検知システムを回避する方法で攻撃を行うことができます。Vern Paxsonが彼の"Bro"というNIDSについて書いたペーパではこれらの問題について触れられています。オリジナルのポストスクリプトバージョンはftp://ftp.ee.lbl.gov/papers/bro-usenix98-revised.ps.Zにあります。

ネットワーク侵入検知の回避について書かれたセミナーペーパーが Thomas H. Ptacek と Timothy N. Newsham によって書かれています。オリジナルのポストスクリプトバージョンは http://www.aciri.org/vern/Ptacek-Newsham-Evasion-98.psにあります。またHTMLミラーはhttp://www.robertgraham.com/mirror/Ptacek-Newsham-Evasion-98.htmlにあります。 Thomas H. Ptacek は多くのあるいはほとんどの商用IDSはまだ(1999年10月)重大な問題があるとしています。このセクションの多くはこの2つのペーパーのサマリから構成しました。

これらのペーパーはネットワーク侵入検知システムが用いているネットワークモデルは現実世界のものとは異なっているという考えを述べています。

例えば、侵入者は目標となるホストは見ないが、NIDSは見るようなTCP FINパケットを送るかもしれません。これによってNIDSは接続が終了したと信じるけれども、実際には終了していないということがおこり得ます。TCP接続は"keep-alive"という信号を送らないので侵入者は何時間でも何日でも終了を延ばすことができます。実際には、多くの重要なサービスは一定時間活動がなければ切断するように設計されていますが、数分間は保持することができます。

まず考えられるのはNIDSは通過できるがその後のルータでパケットが落とされるようなパケットを利用する方法です。これはルータの設定によりますがが、低いTTLフィールドやフラグメンテーション、ソースルーティングや他のIPオプションなどを用いて行うことができます。もしIDSに接続された接続が低速であった場合、ハッカーはこの接続を高いプライオリティのIPパケットによって飽和させTCP FINを低いプライオリティのパケットとして送信することによりルータにこのパケットを落とさせることができるかもしれません。

他のアプローチとしては何をホストが受け入れ何を受け入れないかを考えることです。例えば異なるTCPスタックは微妙に無効な入力に対して異なった動作をします('nmap'や'queso'などOSを識別するプログラムなどはこれを利用しています)。この性質を利用して受け入れられたりリジェクトされたりするトラフィックを発生させる典型的な方法としてはTCPオプションを送信しIPフラグメントやTCPセグメントについてタイムアウトを発生させる方法や、フラグメントやセグメントをオーバラップさせる、TCPフラグかシークエンス番号に微妙に誤った値をいれて送るなどがあります。

Ptacek/NewshamのペーパーではIDSのバグを明らかにするためにIPフラグメンテーションとTCPセグメンテーションの問題に焦点をあてています。例えば異なるデータを持つオーバラップしたフラグメントが送信されると、あるシステムは最初のフラグメントを選択し(WinNT, Solaris)、あるものは後の方のフラグメントを選択します。(Linux, BSD)IDSは終端においてどちらが選択されるか知る由もなく間違った予測をしてしまうかもしれません。

彼らのTCP接続の分析はより深いものです。我々の予想以上に脆弱なTCP接続の非同期化という方法が知られています。IDSは全てのTCP/IPスタックの振る舞いをモデル化することは不可能であり、終端が何をデータとして受け取るかということを知ることはできません。TCPもまたIPのフラグメント化と同様オーバーラップの問題を持っています。例えば、終端のホストが後のセグメントを受け取るような場合に、侵入検知システムは最初のセグメントを受け取り後のセグメントを無視するかもしれないのです。

彼らは侵入検知システムを回避できるかどうかを明らかにするために様々な侵入検知システムに対してテストを実施しており、その結果は悲惨でした。あるメジャーな侵入検出システムはパケットをフラグメント化するだけで回避されてしまい、他のものも終端ホストが受け取るデータと”非同期化”させることによって無効化されてしまいました。

9.9 ツール


以下のツールはこのような問題に対してIDSを評価するのに役立つかもしれません。
RFP Whisker
http://www.wiretrip.net/rfp.
脆弱なCGIを探してWebサイトをスキャンします。スキャンするURLを変更するあるいはHTTPプロトコル自体を変更することによる10以上のIDS回避テクニックを備えています。
http://www.anzen.com/research/nidsbench/.
すべてのトラフィックをフラグメント化しいかにハッカー/クラッカーが侵入検知を回避することができるかを示す"fragrouter"を含んでいます。これは様々なルール(様々なサイズやオーバーラップによるIPのフラグメント化、接続の非同期化のためのTCP挿入など)に基づくフラグメント処理を入力トラフィックに対して行います。
また、NIDSが対応できるかどうかを確認するためEthernetセグメントに対して高い負荷をかける"tcpreplay" プログラムも含まれています。
Anzen NIDSbench
http://www.anzen.com/research/nidsbench/.
すべてのトラフィックをフラグメント化しいかにハッカー/クラッカーが侵入検知を回避することができるかを示す"fragrouter"を含んでいる。これは様々なルール(様々なサイズやオーバーラップによるIPのフラグメント化、接続の非同期化のためのTCP挿入など)に基づくフラグメント処理を入力トラフィックに対して行う。
また、NIDSが対応できるかどうかを確認するためEthernetセグメントに対して高い負荷をかける"tcpreplay" プログラムも含んでいる。
CASL
NAIのCyberCopスキャナーは CASL を装備している。これは上のInsertion/Evasionペーパーにおいて有効性のテストを行うのに使用された。これはlow-levelのTCP/IPパケットをスクリプト化するのに使用されている。
参照:

 

10. その他

10.1 標準化/相互運用のための活動にはどのようなものがありますか?

10.1.1 COAST audit trails format(COAST監査フォーマット)


特定の問題を解決するための限られた範囲での活動です。またプロポーザルも出されていません。 参照 http://www.cs.purdue.edu/coast/projects/audit-trails-format.html

10.1.2 ログ・メッセージ統一フォーマット(Universal Format for Logger Messages)


1997年よりあまり進捗がありません。 参照 http://www.myass.com/nic/drafts/draft-abela-ulm-02.txt.html

10.1.3 IETF Intrusion Detection Working Group


主旨: http://www.ietf.org/html.charters/idwg-charter.html
アーカイブ: http://www.semper.org/idwg-public/
Subscribe: idwg-public-request@zurich.ibm.com

10.1.4 CIDF (Common Intrusion Detection Framework)


"Event Generators", "Event Analyzers", "Event Databases", 及び "Response Units"間のメッセージのためのlisp風のフォーマットを規定しています。現状では産業的なインプットが少なく非常に理論的になっています。

10.1.5 SAF (Security Advisory Format)


CERTやFBIから出されるセキュリティ・アドバイザリを標準化しようとする動き http://www.ietf.org/internet-drafts/draft-debeaupuis-saf-00.txt

10.1.6 Mitreの CVEエフォー ト


"Common Vulnerabilities and Exposures (CVE)" は一般に知られているvulnerabilitieと security exposureについての名称を標準化しようという活動です。これは主にアカデミックな活動ですが、主要な vulnerability assessmentとIDSに関するベンダーからのインプットを持っています。

CVEの活動は様々なアドバイザリやIDS/スキャナーチェックなどの間で共通に使える用語辞書のようなものと考えれば良いでしょう。 これによって異なる製品が同じ事象を違う見方をするような問題を解決します。 例えば、ある侵入検知システムがあるフィールドの長さを見てバッファーオーバ ーフローを発見したとします。つぎにこれを複数のCVEエントリーとアドバイザリ に照合し同じフィールドにバッファーオーバーフローを持つ複数の製品について 調べることができます。同様に、他のIDSシステムは単独のvulnerabilityに対す る特定の攻略法についての(公開されたスクリプトから作成された)シグネチャを調べることもできます。

したがって、1対多、多対1あるいは多対多の製品及びアドバイザリのマッピン グを行うことができます。CVEは様々なシステムの間での共通辞書を提供するもの です。

http://www.cve.mitre.org/

11. ハニーポットとデセプション(欺瞞)システム

厳密には異なるにしろ、スニッファーベースの侵入検知システムとハニーポットが同じ方法で働いていると考えられるので、このFAQにこのセクションを設けることにしました。
 

11.1 What is ハニーポット?

ハニーポット(honeypot) とは侵入者がハック可能な何かに見せるよう設計されたシステムです。例としては以下のようなものがあります。

11.2 ハニーポットを使う利点はなんですか?

11.3 ハニーポットの欠点は何ですか?

11.4 どのようにしてハニーポットを設置することができますか?

ハニーポットを設置することは非常に簡単です。 ハニーポット製品は格好はいいのですが、こういったものを使わなくともあらゆるハードウェアやソフトウェアがハニーポットのために使用することができます。

以下のステップによって作戦を立てるとよいでしょう。

ドキュメンテーション、ドキュメンテーション、ドキュメンテーション
ネットワーク管理の第一歩です。(実際、最初にこれを行っていなかったための痛みに気づくのは最後の段階なのですが。)
メンテナンスプラン
どのようにメンテナンスをしますか?
アラームレポート
このシステムからアラームを受けた場合にあなたはどうしますか?
リアクションプラン
アラームがなくなった場合にあなたはどうしますか?

11.5 ハニーポットにはどのような種類がありますか?

ポートモニター
もっとも単純なハニーポットはリスニングポートを開いて ソケット-ベースのプログラムです。代表的なプログラムにはハッカーがスキャンするようなポートを聞く NukeNabber (for Windows) などがあります。これは、スキャンされていることをユーザに対して知らせるものです。この種のプログラムの不利点としては、以下のようなものがあげられます。
  • このようなものが使用される多くの場合、攻撃者からのアクセスをブロックするためにパーソナルファイアウォールを設置した方が良い。ポートモニターはファイアウォールよりも優れたログ機能を持つわけではありません。
  • このようなシステムは一旦接続を許したあと、切断するために、ハッカーに対して警告を与えることになる。
デセプションシステム (欺瞞システム:Deception System)
ポートモニターの次のステップとしては、ハッカーとインタラクションをとるようなシステムです。例えば、単純にPOP3のためのポートへのアクセスを110許し、切断するだけではなく、欺瞞システムはあたかもPOP3サーバのように振る舞い反応を返します。 セキュリティの問題がありハックできることが知られているバージョンナンバーを示すようなバナーを返す場合もあります。POP3に対するアタックの99%はユーザー名やパスワードに対するバッファーオーバーランであるため、多くの欺瞞システムはこのプロトコルの該当する部分だけを実装しています。同様に多くの欺瞞システムはそれぞれのプロトコルに対する攻撃の90%をカバーするのに必要なだけ実装されています。
マルチプロトコルデセプションシステム
Specterや Fred Cohen's デセプションツールキット(Deception Toolkit)のようなパッケージは単体のツールキットによって一般的にハッキングに使用される大半のプロトコルをカバーしています。同様にこれらのシステムはことなるオペレーティングシステムを演じるための複数のバナーを含んでいます。
フルシステム
デセプションシステムよりもさらに進んで、完全なシステムを使用することも可能です。多くのシステムは例外的な状況に対して警報を発する機能を持っています。このようなもともと備わっているログや監査機能を使用することができます。
フルシステムとNIDS
上で述べたフルシステムに加えて内部のログ機能を保管するために侵入検知システムを併用してもよいでしょう。
 

11.6 ハックされるようなシステムをセットアップすることに対してどのような意見がありますか?

 
ネットワーク上でハックされる最も一般的なサーバはパッチをあてていない古いバージョンのLinux(RedHat 5.0など), Solaris 2.6, そしてMicrosoft IIS4.0です。したがってハニーポットのプランとしてはこのようなシステムをセットアップするのも良いでしょう。
 
注意:もしこのようなシステムをインターネット上に設置したならば一ヶ月のうちに発見されてハックされるでしょう。
 

賛成:

インシデントレスポンスについて学ぶことができる。

多くの人は「自分には起こりえない’と信じており、必要な備えをしていません。。ハッカーが侵入可能なシステムをセットアップすることはどのようにしてハッカーの侵入を検知するのかまたその後どうクリーンアップするのかを学ぶことができるでしょう。

ハッキングのテクニックについて学ぶことができる。
ハッカーがあなたのシステムに侵入するのを観察することはハッキングに関して多くのことを学ぶことができます。
 
もしあなたが社内にセキュアーなシステム(例えば財務情報を扱うもの)が必要なら、ダミーの情報を収めたにたようなしシステムを社外に設置しましょう。もしこれがハックされたならばあなたは、社内に設置したシステムを同様の攻撃からどのように防御すればよいかを学ぶことができるでしょう。
 

早期警戒システム

あなたの社内に容易にハック可能なシステムをセットアップすることによって実際のシステムがハックされるよりもずっと前に警報を発することができるでしょう。

ハッカーはシステムに侵入するための難しい方法を試す前に、まず単純な手口から試すものです。したがって、簡単にハックできるシステムをセットアップすることは何者かによる明らかな敵対的な意思を示しています。

 

反対:

踏み台
最も危険なのは何者かがこのシステムをあなたあるいは他人を攻撃するためのシステムとして使用することです。特にあなたの管理するシステムが第三者を攻撃した場合、法的な問題が発生する可能性も否定できません。
 

11.7 ハニーポットを使用している人たちの例はありますか?

クリフォード ストール(Clifford Stoll)の本「カッコウはコンピュータに卵を産む(The Cuckoo's Egg) 」は大学のコンピュータシステムに不正を働いたハッカーをある研究者がいかに追跡したかを描いたストーリーである。この研究者はハッカーの活動を追跡するためにシステムを基本的にオープンで脆弱なままにしておきました。
 
サンディエゴ・スーパーコンピュータセンターは、ハック可能なマシンを設置しています。http://security.sdsc.edu/incidents/worm.2000.01.18.shtml

11.8 どのようなハニーポット製品が存在しますか?

私の知るものには以下のようなものがあります。
 
Fred Cohen's Deception Toolkit
http://www.all.net/dtk/

Specter

http://www.specter.ch/
 
NAI CyberCop Sting
 
http://www.nai.com/
 
netcat
netcatツールは偽ったバナーの反応を返すために使用することができます。

 

11.9 デセプション・カウンターメジャー(欺瞞による対策)とは何ですか?

ハニーポットよりもさらに進んだものとして、デセプションカウンターメジャーというものをセットアップすることも考えられます。あなたのネットワークは、ハッカーがあなたのネットワークに侵入するのに用いることのできる多くの情報を漏洩しています。 したがってもしあなたが自分のネットワークに関する偽の情報を流すことで攻撃者に攻撃先を誤らせ、うまくすれば警報を発することもできるでしょう。
 
E-mail ヘッダー

web上でのシステムの従来からの問題としてe-mailのシステムがメッセージを送信しているシステムのIPアドレスを付けてしまうというものがありました。もしあなたが社内にいて外部にe-mailを送信すれば内部のe-mailサーバのアドレスを公開していることになります。もしあなたがyahoo mailやHotmailのような無料e-mailシステムを使用している場合、あなたが使用しているマシンのIPアドレスがヘッダーの中に含まれています。これは社内のシステムのさまざまなレベルの深さにまで通ずる場合があり、ゲートウェイ、ファイアウォール、アンチウィルスコンテンツスキャナを何段階もとおりぬけることができる場合があります。簡単ではありませんが、ヘッダーに含まれるIPアドレスを偽るようなプログラムを書くことも不可能ではありません。

DNS情報

ハッカーが最初に行う行動のひとつがDNSゾーン転送です。多くの管理者がこれを禁止するために(他のDNSサービスの妨げになるとしても)TCPのポート53へのアクセスを禁止しています。偽のマシンや偽のサブドメインを挿入しておくことでハッカーの判断を誤らせることができます。例えば"bogus.robertgraham.com"というマシンを192.0.2.132というIPアドレスとともにセットアップし、IDSにこのアドレスに対するアクセスがあれば警報をを発するようにセットアップすることができます。私のIDSはゾーン転送に対して警報を発するようになっているので、これは誰かが真剣に私のネットワークを探ろうとしているのを発見することができるでしょう。

アンチ・スニッファー

あなたのISPがあなたをスニッフしていないと確信できますか?これを確かめるためにはインターネット上のどこかに、クリアテキストで接続可能なマシンをセットアップするのです。そして誰かがこのパスワードを使用した場合に警報を発するようにIDSをセットアップします。これは実際にサービスを提供していないハニーポットとともに用いると良いでしょう。例えば、私は他のマシンにログインするように見せかける仮想的なテルネットデーモン作成したことがあります。そしてIDSにそのアカウント名を使用してログインするユーザを検知するように設定しました。彼らがログインするとまもなく、それは本物のアカウントではないことに気づくでしょう。

アンチ・スニッファーその2

上とにていますが、簡単にクラックできるようなパスワードファイルをネットワーク上で転送し、誰かログインを試みていることを検知するようにIDSを設定します。例えば、FTPで/etc/passwdを定期的に転送するようなバッチファイルを設定します。これによりこのファイルを誰かがスニッフしているのを発見することができます。

 

11.10 ハニーポットの法的妥当性は?

11.10.1 ハニーポットはおとり捜査(Entrapment)になるのですか?

いいえ。これはハニーポットに関して最も一般的な質問であり、その答えはあきらかにNOです。おとり捜査には法執行機関(警察)が意図的に誰かがが犯罪を犯すように仕向けるという明確な法的な定義があります。これは、
 
  • もしあなたが法執行官(警察官)でなければ、おとり捜査にはなりません。
  • だれかが犯罪を犯す手段を残しておくことは、犯罪を仕向けることにはなりません。FBIはおとり捜査のリスクをなしにハニーポットをしかけることができます。
  • もしFBIがalt2600の誰かと接触し、あるシステムのクラックについて賞金を提供すると投稿したならばこれは、おとり捜査になるでしょう。

 

11.10.2 私は犯罪を助けたり扇動したりしていることになるのでしょうか?

おそらく. あなたのシステムに侵入するように扇動していることにはならないでしょう。しかしながら、侵入者があなたのシステムを他のシステムを攻撃するために用いたのならば、この行為の部分的な責任はあなたのものになるかもしれません。
http://www.nylj.com/stories/00/03/030200a5.htm
[fin]