Passive Fingerprinting Identifying remote hosts, without them knowing Honeynet Project ネットワークセキュリティの挑戦の一つとして,悪いやつらを学ぶことがある.彼らに対するより良い防護やあなたの脅威を理解するために,あなたはあなたの敵を知らなければならない Know Your Enemy. Passive Fingerprinting (受動的指紋採取法) は敵に知られることなく,敵に関してさらに知る方法である.特に,スニファーによる追跡をすることなくリモートホストの OS やその他の特性を判定することができる.100% 正確ではないけれど,驚くべき良い結果得られる.siphonはサブレテインクリュー (subterrain crew) プロジェクトにより開発され,受動的にネットワークやシステムをマッピングしたり,OS の指紋採取をするツールだ.Michael Zalewski (有能なポーランド人) と Bill Stearns は p0f のメンテナンスをしている.これらの両方のツールは我々が議論する機能を実証する. Fingerprinting 受動的指紋採取法はいくつかのコンセプトに従うが,異る実装がある.受動的指紋採取法はリモートシステムからのスニッファによる手がかりに基づく.リモートホストに積極的に要求を出すのではなく,あなたが必要なことはリモートホストから送信されるパケットを捕獲することだ.これらのパケットのスニッファによる手がかりを基に,リモートホストのオペレーティングシステムの判定ができる.積極的指紋採取法に似て,受動的指紋採取法はすべてのオペレーティングシステムの IP スタックには独自の特異性があるという原則に基づいている.スニッファによる足跡を解析したり,違いを識別することで,リモートホストのオペレーティングシステムを判定することができるだろう. The Signatures
パケットのこれらの要素を解析することで,リモートオペレーティングシステムを判定することができるだろう.このシステムは 100% 正確というわけではない,そして,あるオペレーティングシステムでは他よりうまくいく.一つのシグネチャによる判定は信頼できない.しかし,いくつかのシグネチャを見て,情報を結合することでリモートホスト識別の正確さが増す.簡単な例で説明する.以下は送信パケットのスニッファ結果だ.このシステムは我々に対してエクスプロイトを行なって来た,だから彼らについてさらに学びたいのだ.我々の正体がばれるから,nmap や finger はしたくない.むしろ,我々は受動的に学習したい.このシグネチャは受動的な武器であるsnortにより捕獲されたものだ. 04/20-21:41:48.129662 129.142.224.3:659 -> 172.16.1.107:604 この4つの基準から,以下を識別する.
次のステップは,ウインドウサイズを比較することだ.ウインドウサイズは他の効果的なツールにより,どのウインドウサイズが使われ,またどれぐらいしばしば サイズが変更されるかを見つけることができる.上記のシグネチャでは,0x7D78 に設定されていることが解る.Linux, FreeBSD, Solarisではデフォルトのウインドウ サイズがセッションを通じて維持される傾向がある.しかし,シスコルーター (少くとも私の 2514) とマイクロソフト Windows/NT のウインドウサイズは連続的に 変更する.ウインドウサイズは初期の 3 ウエイハンドシェークの後で計測するならより正確である (TCPの スロースタートによる).ウインドウサイズの更なる情報は Stevens, "TCP/IP Illustrated, Volume 1 chapter 20" を見よう. 多くのシステムでは DF ビットを設定しているので,これは制限された価値がある.しかし,DF フラグを使用しない少数のシステムの識別を容易にする (SCO や OpenBSD). さらなるテストのあと,TOS はさらに制限された価値であると感じるだろう.これはオペレーティングシステムをさらにセッションベースに見て判定する.他の言葉では,TOS で判定できるオペレーティングシステムは多くないが,プロトコルが使われている.TOS はさらにいくつかのテストが要求される.だから,上記の情報では,TTL とウインドウサイズによりシグネチャのデータベースと結果を比較して,OS の信頼の度合いから判定できる (このばあいでは,linux カーネル2.2.x). 憶えておいてもらいたいのは,積極的指紋採取法のように,受動的指紋採取法ではいくつかの制限があるということだ.始めに,独自のパケットを生成するアプリケーション (nmap, hunt, nemesis) ではオペレーティングシステムと同じシグネチャは使わないことである.第二は,リモートホストが TTL,ウインドウサイズ,DF,TOS を修正するのは比較的容易であることだ.例えば,TTL は以下で変更する. Solaris: ndd -set /dev/ip ip_def_ttl 'number' しかしながら,たくさんの異るパケットやシグネチャを結合させることで,この場合は TTL とウインドウサイズ,リモートホストの信頼できる近似ができる. Other Signatures and Uses また,ICMP パケットも利用できる.ハニーネットのメンバーである Ofi Arkin は ICMP を用いた拡張をし, ICMP Usage in Scanning という論文にしている.例えば,Microsoft の ICMP REQUEST ペイロードはアルファベットを含み,Linux や Solaris などのおおくの UNIX は数字やシンボルが使われる. 受動的指紋採取法は他の目的でも使われる.悪い男に 'ステルス' フィンガープリンティングに使われる.例えば,犠牲者であるの可能性のあるオペレーティングシステムを判定するためである.ウエブサーバでは,サーバからウエブぺ-ジにリクエストをして,その後スニッファデータを解析するだけでよい.これは IDS などに検知される積極的なツールの使用の必要性をバイパスする.また,受動的指紋採取法はリモートプロクシファイアウォールの識別にも使われる.プロクシファイアウォールはクライアントの接続を再構築するので,いままでに議論した方法でプロクシファイアウォールを識別することは可能だ.組織は受動的指紋採取法をネットワークの悪戯なシステムの識別にも使える.これらはネットワークに繋ぐことを許可されていないシステムだ.例えば,microsoft や Sun は Linux や FreeBSD を直ちにとめることができる,これらはなぜか表われた奇妙なシステムだ.受動的指紋採取法は,ネットワークパフォ-マンスに影響を与えることなく速やかに一覧できる.多くの組織が自分達のネットワークに接続しているシステムを知らないことに驚くだろう.個人のセキュリティ監査から受動的指紋採取法はまた,重要なシステムを識別する (Unisys メインフレームなど).この方法はまた組織の無許可のシステムや OS を判定し,Blackhat 活動の可能性を指摘する. このプロジェクトは受動的指紋採取法のコンセプトの検証をする test databaseを開発している.このデータベースは Telnet, FTP,HTTP, SSH プロトコルを用いて様々なテストをされている.このデータベースはもはや開発されてなく,検証目的のみで提供されている.もし,受動的指紋識別法の開発に貢献したいなら,これまで議論した積極的に維持する解決法を推薦する. Conclusion Craig Smith |