Snortアラートの効率的な監視方法


ACIDなどでSnortのアラートを監視していると、あまりに多くの種類のアラートが報告されるために、いったいどれが重要で、どれがそうでないのか判断することがとても難しく感じますし、なんといっても時間がかかります。これをもっと効率化できると良いのですが、今のところ規模の大きなネットワークでSnortを運用した場合にACIDくらいしかアラートマネージャが存在しません。新しくアラートマネージャを開発するのも大変ですから、他に上手い方法で効率化できないかと考えてみました。

ちなみにこのドキュメントは、研修用の資料としてまとめたものをWeb用に編集しなおしたものです。

classificationによるアラートの監視

Snortのルールすべてに割り当てられているclassificationを有効に活用すると、かなりアラートの監視を効率化することができます。そこで各classificationについて解説とコメントをつけてみました。

ACIDでは過去のアラートを集計して一覧表示することができますが、このときに見出しの<classification>の矢印をクリックすることでclassificationがソートされます。おおまかにアラートの重要度をこのドキュメントを参考に判断してから、個々のアラートを調べることで、多少は監視作業の効率化が図れるでしょう。

これらはSnort-2.0.0に含まれるclassificationで、ルールが登録されていないclassificationは除外します。

可能であれば実際にSnortを運用しつつ各ルールのclassificationを調整してゆくことをお勧めします。misc系のclassificationに重要なルールが含まれていたり、逆にattack系に誤検知しやすいclassificationが含まれていたりします。

ポートスキャン・サービススキャン
classification: attempted-recon
classification: network-scan

対象のコンピュータに対して、各種スキャン行為が検出された。
対応:
対象とする計算機・サービスに対する攻撃が予想される。対象とする計算機・サービスに脆弱性が無ければ無視してよい。計算機において脆弱性が確認された場合には、直ちに適切な処置を施す。
コメント:
スキャニング行為が検出され、対象の計算機で脆弱性が確認された場合は、比較的短時間内に攻撃行為が発生するので、対象の計算機の監視を強化する必要がある。

スキャニング行為において誤検知が発生するので注意すること。一部のアプリケーション、ネットワーク機器はスキャニング行為に似たパケット構成で計算機の生存確認を行なう。(例.KaZaa、eDonkyなどのP2Pソフト)特定の計算機の特定のポートに集中的にスキャンが検出された場合は、たいていこれに該当する場合が多い。

複数の計算機の特定ポートに対するアラート、特定の計算機の複数ポートに対するアラートは正しく検知している傾向が強い。

 
攻撃コードの実行
classification: attempted-user
classification: attempted-admin
classification: shellcode-detect
classification: misc-attack(一部)

対象の計算機に対して、攻撃コードの実行が検出された。
対応:
  1. ペイロードのデータにshell起動か同等の記述が認められるか確認する。
  2. 該当する計算機に対するすべてのアラートを調査し、攻撃成功を示すアラートが検出されてないか確認。(例:ATTACK RESPONSES アラート)攻撃が成功した可能性があれば直ちに計算機をネットワークから切り離す。
  3. 成功したか不明の場合は、該当する計算機に対して該当する脆弱性が存在するか調査。脆弱性を持つ計算機の場合は、ログなどで不正アクセスが発生しているか確認する。
コメント:
shellcode-detectは誤検知を示す傾向が強い。このルールは無効にしても良いだろう。misc-attack、atempted-userの一部のルールは比較的正確に検知する。いづれにせよこれらのアラートが検出された場合はペイロードのデータに注意を払う必要がある。

ATTACK RESPONSES のアラートと組み合わせることにより正確な侵入検知が可能となる。

上記いづれの条件にも該当しない場合は、攻撃は失敗に終わっている。おそらく他のコンピュータが攻撃の対象になるだろうから、該当ソースIPアドレスの監視を強化すると良い。


アクセス権の獲得を示すトラヒックの検出
classification: bad-unknown(一部)
classification: successful-admin

対象の計算機上で何者かがアクセス権を獲得することに成功した。
対応:
  1. 計算機に対して攻撃コードの実行、スキャニング行為が検出されてないか確認する。
  2. 計算機で、該当されるアクセスが認められているか確認する。
  3. 計算機上のログを確認する。
コメント:
bad-unknownはtelnet login incorrectやtftpアクセス、不正な構成のパケットなども含まれる。たいてい状態を正しく検出するが、利用者が意図したアクセスに対する反応であることも多いので、判断には注意を必要とする。

successful-admin 、ATTACK RESPONSES id check returned〜のアラートは比較的高精度に不正行為を検出する。ただし、SMTPやNEWS、POPなどで反応してしまうことがあるので、誤検知を減らすためのルールの調整を必要とする。
bad-unknownに含まれるINFO psyBNC accessも不正アクセスを受けた計算機上で良く検出される。

これらの重要なアラートのClassificationレベルを successful-admin に変更した方が管理しやすくなるだろう。


サービス妨害攻撃
classification: attempted-dos
classification: successful-dos
classification: denial-of-service

対象の計算機またはネットワークに対してサービス妨害攻撃が加えられた。または分散サービス妨害攻撃のためのトラヒックが検出された。
対応:
  1. 一定時間内に異常な数が発生していないかアラートの発生件数を調査する。
  2. 計算機、ネットワークに異常が発生していないか確認する。
コメント:
DoSの検出はたいてい誤検知である場合が多い。異常が発生していない限り無視して良い。ただし、本当にサービス妨害攻撃が発生している場合は、アラートが現象を確認するための重要な情報となるので、ルールを無効にしてはならない。

unclassified について
unclassifiedは、stream4 や portscan などの preprocessor のアラートに割り当てられます。これらは決まった classification を持っていませんので、このように「割り当てられてない」と扱われる。

また、snort rule でも classification を設定していない場合は unclassified として扱われる。新しく rule を作成する場合は、なるべく適切な classification を設定すべきである。


その他

classification: suspicious-filename-detect
/etc/passwd、/etc/shadowなどの不審なファイル名が含まれたトラヒックを検出した。


classification: successful-recon-limited
現在の所はRealSecureへの接続時に検出される。

classification: unsuccessful-user
rlogin や PC-Anywere などへのログイン失敗時に検出される。
 
classification: rpc-portmap-decode
rpc経由でなんらかの操作が行なわれた場合に検出される。

classification: suspicious-login
telnetでのrootログインや、SecurityScannerなどのログインチェックなどを検出する。

classification: system-call-detect
攻撃コードに含まれるシステムコールのコードを検出する。(誤検知しやすい)

classification: trojan-activity
Subsevenなどトロイ系バックドアを検出する。

classification: non-standard-protocol
予約されたIPアドレスでの通信などを検出する。

classification: protocol-command-decode
リモートからOracleSQLなどへのコマンド実行を検出する。

classification: web-application-activity
WebApplicationに対するアクセスを検出する。サービススキャン行為とみなしている。これはWebApplicationへの不正アクセスが発生した場合に、過去の履歴を確認することを目的としている。

classification: web-application-attack
WebApplicationに対する攻撃行為を検出する。一部に誤検知しやすいルールが含まれるので注意すること。

classification: misc-activity
その他注意すべきトラヒックを検出する。主としてウィルス・ワーム類を検出する。
p2pアプリケーションの検出もmisc-activityに含まれるが、policy-violationへ変更すべきだろう。

classification: misc-attack
侵入を目的とするさまざまなトラヒックを検出する。攻撃コードからSNMPへのアクセスまで含まれる。このclassificationに含まれるルールは、運用しながら適切なclassificationに調整すると良い。

classification: kickass-porn
ポルノ等に関するトラヒックを検出する。NEWS Groupや特定のWebサイトへのアクセスなど。

classification: policy-violation
Chatなどのトラヒックを検出する。

classification: default-login-attempt
既成のCGIやネットワーク機器にデフォルトアカウントでログインしようとするトラヒックを検出する。