ネットワーク監視による
不正アクセス発見手法
みっきーのネットワーク研究所渡辺@犬のみっきー
2004/02/25 09:02:23 (JST)この資料に関して
zこの資料は2004年02月22日に開催された
『Port139勉強会』の発表資料です。
z資料の最新版(PDF)は以下のURLから入手可
能です
z http://www.port139.co.jp/cakeoff.htmデジタルタイムスタンプに関して
z PDF版資料には、デジタルタイムスタンプが付与さ れています。 z PDFファイルのデジタルタイムスタンプを確認する には、AMANO が無償で公開している検証専用ソ フトを利用する必要があります。 z 検証専用ソフトには、Windows のエクスプローラ から利用するタイプのものと、Adobe Acrobat の プラグインとがあります。 z 以下の URL から検証専用ソフト(無償)をダウンロー ドしご確認ください。 z http://www.e-timing.ne.jp/download/index.html著作権に関して
z
この資料は著作権により保護されています。
著者(作成者)の許諾なく転載することを禁止
します。
自己紹介
犬のみっきー(わたなべかつひろ) 1965年生まれ z 原子力系の情報システム会社でネットワーク運用に携った 後に、独立行政法人理化学研究所にエンジニアとして勤務 する z 主にネットワークセキュリティをテーマとした研究、開発 等を行なう z 著作物として、Port139伊原氏と共著の「不正アクセス調 査ガイド(オライリジャパン)」がある z 日本Snortユーザ会(http://www.snort.gr.jp)代表 z HP:http://www.hawkeye.ac/micky/ z Mail:[email protected]はじめに
不正アクセスの監視は、本来ネットワーク
監視の一部であるが、まるでそれだけが独
立した技術のような扱いを受け、そして思
なぜ
不正アクセス
の発見手法な
のか?
インシデントに遭遇したなら
z 二次的な被害の拡大を防ぐ z 不正アクセスの証拠を押さえる z 不正アクセスの原因を知る z インシデントの発見直後なら復旧できる可能性 が高いなどの目的から、なるべく早期に不正ア
クセスの発生を知り、インシデントレス
ポンスに移行する必要がある
不正アクセスを
早期に発見するには?
z発見するための仕組みを、あらかじめ用意し
ておく必要がある
z 侵入検知システム(IDS)の導入 z ファイアーウォール、ネットワーク機器のログ監 視 z システム状態の監視 z CPUやメモリの状態 z ネットワーク通信の状態 z 利用者の行動等なにも準備がされていないなら
z 不正アクセスを発見するための準備がされていない 状況では、それらの発見は多くの場合偶然性に依存 する z 外部からの通報 z システム障害の発生 z しかも発見後には、たいてい最悪の結末が待つ z 踏み台になって他組織に被害が広がっている z データが破壊・盗難されている z HPが改ざんされた不正アクセスの発見は難しい
z 不正アクセス者はコンピュータの中に隠れる z 高度化する不正アクセス者の技術 z 隠れるためのツールの存在(RootKit) z 侵入検知システムの欠点 z 誤検知・ノイズ z 高コストを原因とする間違った運用 z 正しく運用されなければ信頼性が低い z 間違った認識 z 自分の所で不正アクセスが発生するわけがない z 知らない z 管理者のスキル不足どのようにして不正アクセスは
発見されるか
z 外部からの通報 z 貴社のHPが改ざんされている z 貴方の計算機から不正アクセスを受けている z データが漏れている z 内部での発見 z IDSによる通知 z 計算機の異常 z ディスクが溢れた、異常なCPU使用率、プロセ ス/システムの異常終了など z 偶然発見した z 不審なファイル、プロセスをたまたま発見した既存の不正アクセス発見手法
z
侵入検知システム
z
コンピュータ、ネットワーク機器のログ、ス
侵入検知システム(IDS)
zNIDS
z ネットワーク通信を傍受して不審な通信を監視す る zHIDS
z コンピュータ上のログなどを監視して不審な動作 を監視する不正アクセスを発見する手法として現時点
では最も利用されている.
NIDS
(Network Based IntrusionDetectionSystem) z現在、不正アクセスの発見に有効な手法であ
る
zしかしながらマイナス要因が多い
z 高い運用コスト z 導入、維持費 z 運用費用、人的リソース z 完全でない検知精度 z FalseNegative 見落としてしまう z FalsePositive 誤って検知してしまう z 暗号化通信に対応することは困難HIDS
(Host based Intrusion Detection System) z NIDSとならんで不正アクセスの発見に有効な手 法である z 監視対象となるすべてで実施しなければならな い z 監視対象が多い場合、すべてのコンピュータにHIDSを 導入するのは困難 z 反面、台数が少ないのであれば、もっとも効果的な手 法である z 正しく構成されていなければ無意味 z 完全でない検知精度 z FalseNegative、FalsePositive z 完璧では無いが、現時点では他の手法(NIDS) などに比べて優れているコンピュータ、ネットワーク機器
のログ、ステータス情報
z ログやステータス情報はコンピュータ、ネットワー クに何が発生しているのか知らせてくれる z CPU、メモリ、ディスクの利用率、プロセスやネッ トワークの通信状態などのステータス情報、またロ グを注意深く監視することにより、異常状態を検知 することができる z コンピュータ、ネットワークが適切に設定されてい れば、詳細な情報まで監視することが可能 z これらの情報を正しく分析できれば十分にインシデ ントを発見できる能力を持っている z HIDSはこれらの一部を自動化しているコンピュータ、ネットワーク機器
のログ、ステータス情報
z監視、分析が難しい
z 単なるログ、ステータス情報から異常を察知 するのは至難の技 z 情報は大量に発生する z 長期間の蓄積が困難 z 分析作業に多くの時間を必要とする z分析作業は人手に依存するので、担当者が
高いスキルを持っていなければならない
管理者は不正アクセスに気づか
ない傾向にある
z多くのシステム管理者は、コンピュータの不
調と不正アクセスを結び付けて考えない
z今は忙しい(いつもいそがしいらしい)
管理者A:「コンピュータの調子が悪いなぁ」
管理者B:「リブートすれば直るよ」
なぜ気がつかないか?
z自分のコンピュータは不正アクセスを受け
ないと思い込んでいる
zコンピュータの不調は、時折発生する不可
解な現象
z監視対象の選択や監視手法が間違えている
z発見するための手法が確立されてない
zそもそも不正アクセスの発見は難しい
不正アクセス発見の容易さは規模
にも依存する
z小さな規模のネットワーク、システムであれば
インシデントの発見は比較的容易
z 1∼3台のコンピュータなら、それなりの知識を持っ た担当者が監視を怠らなければいづれ気づくだろう z多くのコンピュータを運用する大規模な環境で
は、インシデントの発見はとても困難である
z 個々のコンピュータに注意を向けられない、向ける 余裕が無いありがちなネットワーク管理者
zネットワーク管理者がセキュリティ担当
z個々のコンピュータまで管理権限が及ばない
z コンピュータ、ネットワークの管理権が集中して ない z 管理権限の及ばないコンピュータの存在 z リソースが大量に存在する z管理者側の人的リソースが少ない
z予算に恵まれていない
現在、不正アクセス発見手法は
確立されていない
ネットワークベースでの監視が現時点では最良
z 現実的な解はNIDSの導入である z 有能な技術者を雇い自力で運用する z できるだけ有能な専門企業に委託すべき z ただしNIDSだけでは十分でない z 暗号化通信に対応できない z 未知の攻撃手法に対応できない z NIDSが導入できない場合はどうする?不正アクセス発見手法を考えて
みよう
zNIDSの欠点を補う、依存しない監視手法
z新たなソリューションに頼らない監視手法
zなるべく低コストに抑える
zただし人的コストはいとわない
zエッジのネットワークも監視する
不正アクセス発見手法を考えて
みよう
zある程度大規模のネットワークでは、監視す
る対象も多くなるので、それらを考慮しなけ
ればならない
z ネットワークの末端で発生する不正アクセスを検 知したい z インターネットワーム z コンピュータウィルス z 部内者による不正アクセス不正アクセス発見手法を考えて
みよう
従来の監視手法に工夫を加えて、
上手く不正アクセスを発見できないだろうか?
事象を分かりやすくする工夫と、ネットワー
ク、コンピュータ、IDSやファイアーウォー
ルなど、これまで個別に監視を行っていた
が、まとめてお互いの関連性を考慮に入れ
た監視を行うことにより、異常の発生を知
ることができないか?
不正アクセス発見手法を考えて
みよう
たとえば、以下のような振舞いを検知することで
不正アクセスを発見できないか?
例.Welchiaワーム インターネットワームとして自己増殖を繰り返すことが最終目標で あるが、その活動の際には大量のICMP Echo Requestパケットを発 生させる。 例.一部のバッファーオーバーフローコード 攻撃目標のプログラムを誤動作させ、プログラム自身とはまったく 関係の無い動作をさせるが、そのパケットは通常ではありえない長 さを持ったり、規定された手順に則らない事が多い。 ネットワークを流れるデータは、本来の通信目的以外にもさ まざまな情報を持っているインシデント時における
トラヒック流量の振舞い
z おなじみWelchiaワームがトラヒック流量に与えた 影響 Welchiaの発見された8月18日前後から突然インバウンドのトラ ヒックが増えている。Welchia、Blaster その他の現象
z トラヒックロガーで監視していれば、tcp/135への接続
やicmp echo requestが極端に増えていることに気付く
z NIDSにもIISの脆弱性を狙う通信が極端に増えている旨の兆 候が現れる z インターネットへ繋がる境界ルータのCPU使用率が上がる z 個々のコンピュータのCPU、メモリの使用率が上がる z 個々のコンピュータのプロセスリストに見知らぬプロセス が増えている z 大量のプロトコルアノマリが発生する
ネットワーク監視しています?
自分のネットワークで、平均してどれくらいト
ラフィックが発生しているかご存知ですか?
どのプロトコルが一番使われてます? どれくらいのエラーパケットが発生していますか? どのサービスが最も多くトラヒックを消費してますか? 誰がヘビーユーザですか? そのコンピュータはそのサービスを利用してますか? 等々ネットワーク監視で何がわかる?
z単にトラヒック流量を監視するだけでも、さ
まざまな現象を知ることができる
z ポートスキャン z P2P、トンネル、バックドア z 正規ユーザの不正行為、コンピュータへの不正侵入 z既存のネットワーク機器で対応可能
z SNMPによる監視 z 既存監視ツールの活用ネットワーク監視と不正アクセ
スの発見
zTCPのSynパケットの数をカウントしてみる
zDoS攻撃やポートスキャンを検知できるだろう zICMP全体のパケット数をカウントしてみる
zTCP、UDP、ICMP以外のIPデータグラムをカ
ウントしてみる
z暗号化・非暗号化されたトンネルやP2Pの利用な どを検知できるだろう その他のフラグや、UDP、ポート毎のパケットカウントでも不正アクセス の兆候を知ることができるシステム監視と不正アクセスの
発見
zCPUの負荷やプロセス数を監視
z 不正なプログラムが実行されたり、誤動作させら れたりしたことを検知することができる zディスク装置の容量を監視
z 不正なファイルの蓄積を検知できる z 不正アクセス者によるディスクの消費等 zシステムの設定ファイルを監視
z 不正アクセス者による改ざんなどを検出できるパケット、ログ、ステータスは
饒舌
zネットワークを流れるデータや、ログ、コン
ピュータのステータスはさまざまな情報を我々
にもたらそうとしている
zそれらが何を教えているのか知ることができ
れば、これまで以上に素早く、正確にネット
ワーク上で発生している異常事態を知ること
ができるのではないか?
パケット、ログ、ステータス情報
には個性がある
z ネットワークの振舞い、トラヒック流量の発生パター ンや、エラーパケット、コンピュータのプロセスの 走行状態やメモリ使用量には、それぞれに個性があ る z 時間など一見無関係そうなイベントに関連して、特徴ある 振舞いを見せることがある z それらが正常時にどのような挙動をみせるか把握す ることで、異常なパターンを知ることができ、イン シデント発見につながるこれは異常検知
(アノマリ・ディテクション)である
トラヒック・ステータス監視と
不正アクセス発見手法
z 観測すべき対象について定量化し、グラフ化(ビジュ アライズ)するだけでも異常を発見できる。そして不 正アクセスの発見に繋げることができる z むやみに自動化を追わず、人間の能力に依存する監視システムを構 築する z ビジュアライズすることで、人間の判断能力をより活用することが できるだろう z 今のところ、人間の感覚に匹敵する検知システムは存在しないかも しれない z 将来的には自動化することも可能だが、現時点ではもっとも現実的 な解であろうトラヒック・ステータス監視と
不正アクセス発見手法
充分な経験を持たない管理者のために
z インシデントの発生と、その際に観測された現象を関連 づけて、ナレッジベースとして蓄積する z 現在観測されている現象とナレッジベースに記録されて る現象とを比較することで不正アクセスの可能性につい て分析を行う z これらを繰り返すことでナレッジベースの蓄積・修正を 加え精度を向上させる z 将来的には統計学などの応用により分析の自動化が可能 になるかもしれない不正アクセス発見手法
たとえば、なんらかの手法によりコンピュータが侵
入を受けた場合に以下の現象が観測されたとする
zプロセス数が一時的に減り、しばらくした後に増
えた
z特定のポートのトラヒック流量が増えた
zシステム設定ファイルの行数が増えた
zファイルシステムの使用量が増えた
z変化量などについても監視対象とするこの組み合わせを不正アクセスと定義し、以後同様の
現象が観測されないか注意する
不正アクセス発見手法
大規模なネットワークシステムでは、全体を俯瞰的
に、点よりも面で監視する手法も考えられる
z監視対象となるエレメントをネットワークレンジ、
セグメント、機能などでグループ化して監視する
zあとはこれまで解説した手法と同じ
不正アクセス発見手法
z観測すべき対象(エレメント)について考えて
みる
z 例: z ネットワーク全体の送受信量 z コンピュータのプロセス総数 z コンピュータの通信ポート毎の通信量 z コンピュータの出力したログの総量 z IDS,FireWallのログの総量 z 設定ファイルの行数の総量 z ネットワーク上を流れる一定の文字列のカウント z プロトコルアノマリ異常の発生件数インシデント発見手法
zNIDSのアラートを単純にグラフ化してみる
zアラート毎、アラートの種別毎に単純にグラ
フ化するだけでも異常の発生を知ることがで
きる
zNIDSが発生させる誤検知のアラートにもパター
ンが存在するので、それらに該当しないパター
ンが発生しないか監視する
SNMPの応用
z情報収集手法としてSNMPを見直してみる
z 以前(現在でも)ネットワークを中心とした、システム の監視手法としてもてはやされたが、いまいち普及して いるカンジがしない z 理由 難しい 十分に実装されていない ネットワーク機器上でのMIBの実装 マネージメントソフトウェアの対応 コストが高い 商用マネージャは非常に高価SNMPは便利な技術である
手間はかかるが、さまざまな情報を比較的手軽に集め
るための手法として、もっとも有用である
z 探せばSNMP関連のツールも沢山ある z 例:MRTG、RRDTOOL+フロントエンドツール z MIBを理解できれば利用用途はさらに広がる z 思っているほど難しくない z 単に機器から得られる情報をリクエストするための番号 を定義しているだけに過ぎない自分の管理する機器のシステム情報をグラフ化して表示
できるだけでも、インシデント発見に役立つはず
インシデント発見手法の提案
zビジュアライズの手法いくつか
例:MRTG、RRDTOOLやGNUPLOTなどを利用してグラフ化 する MRTG http://www.mrtg.org/, http://www.mrtg.jp/ RRDTOOL http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ RRDTOOL-CACTI(RRDTOOLのフロントエンド) http://www.raxnet.net/products/cactiWindowsのSNMP
z WindowsNT3.51以降、2000/XP professional以上には SNMP Serverサービスを実装している。 z MIB-IIを実装 z CPU負荷、プロセスの情報等が取得可能 CPU負荷:host-resources-mib .1.3.6.1.2.1.25.3.3.1.2 但し一部の機能には標準で無効になってる z Microsoft独自の拡張がされている z 拡張MIBについては http://www.snmplink.org/ http://snmpboy.msft.net/pub/w2kmibs/ 等のサイトで入手可能WindowsのSNMP
z まずはMRTGで監視してみる z MRTG http://www.mrtg.org/, http://www.mrtg.jp/ http://www.mrtg.jp/doc/nt-guide.html Windows SNMP Server WindowsインストールCDに含まれる z ActivePerl http://www.activestate.com/ Windows上でMRTGを実行するこ とが可能。 参考: http://snmpboy.msft.net/default.aspxRRDTOOL+CACTI
RRDTOOL(Round Robin Database)と、 そのフロントエンド CACTI の組み合わせ でさまざまな情報を比較的簡単にグラフ 化できる。 外部のプログラム、スクリプトと組み合わ せて、さまざまなデータをグラフ化するこ とが可能。 RRDTOOLにはCACTI以外にも数多くのフ ロントエンドが存在するので、自分にあっ たツールを利用すると良い。 もちろん自力でRRDTOOLを操作するプロ グラムを書くのも良いでしょう。