hereこの記事は第2シリーズである。Enemy)では、スクリプトキディのツール及び手口について言及した。どのように脆弱性を発見し、攻撃するかをである。第3シリーズではスクリプトキディが管理者権限を奪取した際、何をするか、特にどのような痕跡を残し、次に何をするのかを言及する。ここ(第2シリーズ)では、彼らの動作をどのように記録するかを言及する。軍隊と同じように、あなたは悪い人間を記録し、何をしているか知りたいであろう。われわれはログで記録することができること、できないことについて言及する。あなたは侵入され、改ざんされ、どのツールが使われたか、そして侵入者の成功を知ることができる。ここではLinuxを例に取るが、たいていのUNIXシステムでも同じことが言える。それでももし心配なら、どうしようもない。この記事はスタートするのに適している。Logsこの記事は素晴しいソースを持ったIDSの話ではない。Recorderやsnortを参照することを勧める。この記事は効率よく情報を集めることに焦点を置く。あなたはログの中にいかに多くの情報があることに驚くであろう。ログを語る前に、システムログを保護することについて議論しなければならない。内容を信用しないのであれば、ログも価値の無いものになる。クラッカーが最初にすることは、侵入したシステムを改ざんすることである。ログから痕跡を消すルートキットは様々なものがあり(cloakのように)、また、ログを改ざんするものもある(トロイの木馬のようなもの)。したがって、最初のステップとしてログを見直すことがログを保護することになるのである。これは、リモートログサーバが必要なことを意味する。あなたのシステムがどのようなセキュリティを施しているかにかかわらず、侵入されたあとのログを信じてはいけない。して、ハードディスクをフォーマットしてしまうこともできる。なったらログを元に戻すことはいささか難しくなる。なると、システム中のあらゆる(ローカル、ネットワーク問わず)ログサーバのログが必要になる。ログ専用のマシンを用意し、他のシステムのログ収集を専門とすることを推奨する。金を出せば、簡単にLinuxベースのログサーバと立てることができる。ポート514のUDPアクセスをブロックするかファイアウオールで制御し、インターネットの接続を制限する。このようにすればインターネットからのログ改竄等を防ぐことができる。/var/tmp/.confのように、syslogの設定を変えて異なる設定ファイルを読み込ませるようにする。このようにすれば、クラッカーはどの設定ファイルが正規なのかが分からなくなる。簡単な方法は、/etc/syslog.confを書き換えることである。ローカルとリモートのログサーバの新しい設定ファイルを作る((例参照)。普通(すべてローカルにログと取る設定)の/etc/syslog.confのコピーを作る。セキュアなログ方法を使う。一つのオプションに、syslogdを完全なチェック後に移動する。そのオプションとは、http://www.balabit.hu/products/syslog_ng/にある、syslog-ngである。我々が使うログのほとんどはリモートログサーバのものになるだろう。クラッカーがシステムに侵入する前にログを収集する。単純な方法でログを収集しているうちは、解析も簡単である。ローカルシステムのログとリモートのそれを比べることもできる。それによって、ローカルのものが改竄されていることが分かるであろう。Matchingログの中身を見ることによって、たいていはポートスキャンにあっていることが分かる。ほとんどのスクリプトキディは、単独の脆弱性を探るためにネットワークをスキャンする。あなたのログを見ることで同じネットワーク内の別な端末から接続された記録及びポートスキャンの記録があれば、侵入されたと見ることができる。基本的に、敵は単独の脆弱性を発見し、見つければそのネットワーク内をスキャンする。脆弱性が見つかれば侵入する。Wrapperがインストールされている。それで、接続のほとんどが/var/log/secureで発見することができる。他のUNIX系では、ログをinetdに-tをつけることにより、デーモン化して起動することができる。典型的なスキャンは以下に示すとおりである。これは、wu-ftpdの脆弱性を付いたスキャンである。192.168.11.200ここで192.168.11.200がネットワークをスキャンしていることが分かる。いつもこのパターンとは限らないが、それぞれのIPが順次スキャンされていることが分かる。ころえがログサーバを持つ利点であり、すべてのログが結合されてからはネットワークでのパターンが容易に分かるようになる。ポート21番であるftpに何度も接続があったということは、彼らはwu-ftpdから侵入しようとしていたということだ。これでクラッカーは何を探していたのかが分かる。スキャンは段階的に行われる。誰かがimapの脆弱性を示せば、あなたはログの中でimapへのスキャンを直ちに探さなければならない。次の月にはftpから侵入されていることだろう。ときどき、ツールは同時にさまざまな侵入を試みることがある。その時は、いくつかのポートへの単純な接続を見るとよい。覚えておいてもらいたいのは、ログを取らなければ、スキャンされても知ることはできないということである。ほとんどのrpc接続はログに残らない。Wrapperによってログを取るように単純に設定されている。あなたはNetBusをinetd.confに追加することができる。Wrapperで安全に接続拒否をするとともに、接続に対するログを取るように設定することができる。侵入検知の欄にさらなる情報がある。Tool?ときどき、あなたはネットワークをスキャンするのにツールが使われたことを知る。侵入するのにごく基本なツールとしてftp-scan.cがある。1箇所のポートまたは脆弱箇所から侵入するとすれば、彼らはたいていシングルミッションのツールを使用する。jsbachによるsscanとFyodorによるnmapがある。我々はこれらの2つのツールを選んだ。この2つがちょうどよい分類となるからである。これらのツールをネットワークに適用し、結果に驚くことを勧める(自己診断する)。(注)sscanは古いツールであるため、例としてだけ記載する。自己診断するのであれば、Nessusを勧める。sscanはスクリプトキディのスキャンツールのすべての目的を果たす。これはネットワークの一連の脆弱性を突く。カスタマイズもでき、新しい攻撃も加えられる。ネットワークまたはネットマスクに適用することにより、安心感を得ることができる。管理者権限で使用しなければならない。出力も分かりやすいものである。これで多くの脆弱性を簡潔に分かりやすく知ることができる。jourを立ち上げさえすればよい。以下にシステムmozart(172.17.6.30)に対して行ったsscanの結果を示す。*Nmapはツールセットに生のデータとして表示する。それでは、あなたはどこに脆弱性があるかが分からず、むしろ、どのポートがオープンなのかを示し、あなたはどこのセキュリティに重点を置くかを考える。Nmapは即座にポートスキャンをかけ、適切な結果を返す。これは最良のポートスキャナであり、OSでの防御を含め、UDPもTCPもスキャン視、実用的なポートスキャナである。あなたはこのツールを使いこなし、データを解析する技量が必要である。以下にNmapでの(先と)同じシステムにスキャンをかけた結果を示す。secondsログを見て、どのツールが使われたかが分かる。そのことにより、ツールがどのように作用したのかが分かる。最初に、sscanによるログを示す。(これは、設定ファイルともにデフォルトである。closedsscanはまた、cgi-binの脆弱性もスキャンする。これらはsyslogでは残されないので、access\_logで見つける。SYN,SYN-ACK,ACKのすべてのポートに完璧に接続されたことが分かるであろう。これは、sscanはアプリケーション層で動くからである。sscanはftpポートが開いていることを探すだけではなく、どのftpデーモンが立ち上がっているかをも探すのである。このことは、imap,popも同じことがいえる。パスワードを捜し当てるありふれたツールであるsniffitを使ったsniffトレースでもこのことが分かる。ready.あなたが上で見たように、実行されていたwu-ftpdのバージョンを判別するため完全な接続が行われる。あなたがログで完全な接続が行われたことを確認したら、上で見られたように、あなたはエクスプロイトツールによってスキャンを受けた可能性がある。あなたが実行しているものが何かは気にせず、あなたが特定のサービスを実行しているかどうかを調査する。含めて判断することが可能である。これらのオプションについてのより詳細な解説は、http://www.insecure.org/nmap/nmap_doc.htmlをチェックすること。これらのオプションのために、あなたのログはリモートのユーザによって選択されたオプションに基づいて異なるだろう。非常に似たものになるだろう。多くのポートをスキャンする。192.168.11.200-Dオプションを付けることを忘れてはいけない。Nmapのオプションは送信元アドレスをだます。あなたは同時に15の異なる送信元からスキャンを受けるが、その中の一つしか本物ではない。ポートスキャンに-sSフラグを付ける。これはバレにくいオプションで、SYNパケットのみを送る。遠隔のシステムが応答すれば、接続はRSTとともに破棄される。/var/log/secureおっと!なにも表示されない!これは、システムログにはフルコネクションしか記録されないからだ。Nmapに-sSオプションを付けたがために、完全なTCP接続は成立せず、ログに残らなかったのだ。これがバレないようにスキャンする理由であり、ログにはスキャンが記録されない。古いLinuxカーネル、特に2.0.xでは、不完全なTCP接続でもログに残ったが、それは破棄されたものとしてであった。古いカーネルでの-sSフラグを付けたスキャンの結果は以下のとおりである。最初の3エントリーのみ)。unknown接続のすべてがエラーとなっていることが分かるであろう。接続が完了する前にSYN-ACKシーケンスが崩壊するため、デーモンが送信元のシステムを突き止められないでいる。このログによって、あなたはずっとスキャンされていたことが分かり、不運にもその送信元が誰なのかは分からない。これは、Linuxカーネル2.0.xにだけ出る表示である。peer'というエラーメッセージが表示される。Linuxカーネル2.0.xxと、2.2以降を含むその他では表示されない。このバグ(accept()が3-wayハンドシェイクが完了する前に返ってしまう)は解消された。スキャンを拾うのを好むように見える。/var/log/secureもう一度見ると、ログに何も現れない。恐ろしいことに、あなたはスキャンされてもそれすら知らない。3つのタイプのスキャンでは、-sSオプションのようなものがあるため、どれもログに残されない。これらのバレないスキャンを防ぐには、tcplogdやipplのようなログ用のアプリケーションが必要だ。IPFilter,SunScreen,FireWall-1のようなほとんどのファイアウオールもスキャンを防止し、ログを取ってくれる。Access?一度スキャンされたことに気づき、何を探すべきかが分かれば、次に来る大きな疑問は、侵入されたかということである。現在のリモートクラックでは、たいていバッファオーバーフローに基づいたものである。他にはスタック攻撃がある。簡単に説明すると、バッファオーバーフローは必要以上の入力をするプログラム(たいていはデーモン)で、メモリ内の危険領域に上書きする。実際の正しいコードはたいてい管理者権限で実行される。Profitを参照すること。/var/log/messagesや/var/adm/messages(UNIX)で知ることができる。imapdに対する似たようなログをメールログで見ることができる。バッファオーバーフロー攻撃は以下のようなものである。H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^E^H(-^Eもし上記のような記録をログファイル上に見たならば、誰かがあなたのシステムに侵入を企てたことになる。侵入が成功したかを見極めるのは難しい。見極める一つの方法は、リモートから接続があるかを確かめることである。誰からリモートからログインに成功したならば、彼らはアクセスしたことになる。一つの手がかりは/etc/passwdファイル内にmoof,rewt,crak0,w0rmが加わっているかである。アカウントの追加はありふれたスクリプトで実行される。syslogdにトロイの木馬を仕掛けるであろう。なっては(侵入されては)いかなるログ情報も得られない。なる前に、http://www.cert.org/nav/recovering.htmlをチェックすることを勧める。ログファイル内で異常を発見する助けとして、特別な用語をシグネチャとして検出するシェルスクリプトを使うことが挙げられる。Ranumの情報からさらなる検索方法を知ることができる。scriptConclusionあなたのシステムログは敵に関して多くの情報を与えてくれる。最初にログの完全性を保証しなければならない。最良の手段の一例として、リモートログサーバを構築し、すべてのシステムのログを一括して収集することである。一度セキュリティを施せば、ログファイルからパターンを見つけることができる。これらのパターンとログ内容に基づいて、クラッカーが何を探し、潜在的にどのようなツールを使っているのかが分かる。この知識に基づき、あなたはシステムをよりよい方法で保護することができるのである。