X remote ICMP based OS fingerprinting techniques by Ofir Arkin

Slides:



Advertisements
Similar presentations
Iptables の設定と 動作確認方法 野口 哲. 1. はじめに 近年では、ウイルスなどでネットワーク 上の 近年では、ウイルスなどでネットワーク 上の 危険が非常に多くなっている。また、個人 情報 などを入手するために不正に他人のパソコ ンに 侵入する人なども増えている。本研究では、 このような被害を受けないようにするため.
Advertisements

N チャンネル通信のための 経路制御 小川 真人 木下研究室. Nチャンネル通信 N本の経路を用いて、ファイルを分散させて通信を行う方式である。 分散されたファイルが、すべて違う経路を通り相手に届くことが理想である。
IP over DVB-RCS の設計と実装 研究背景 DVB-RCS 衛星回線を用いて受信局から送信局への狭帯域な戻り回線を提供 Forward Link Return Link HUB Terminal.
IIS 4.0で開発をするコツ Webアプリケーション構築.
Step.5 パケットダンプ Wiresharkでパケットをキャプチャする PC 1 PC 2 PC 3 PC 4 ネットワーク
Ibaraki Univ. Dept of Electrical & Electronic Eng.
前回の授業への質問 質問:プロトコルアナライザで測定できる範囲はどこまでか?
揮発性情報 2003/05/25 伊原 秀明(Port139).
ファイルキャッシュを考慮したディスク監視のオフロード
情報実験:ネットワークコンピューティング入門
第1回.
クラスタ分析手法を用いた新しい 侵入検知システムの構築
前回の課題 IPv6アドレス IP ARP ICMP NAT インターネット層 2003年12月4日 情報ネットワーク論 新村太郎.
第4章 Internet Address.
セッション追跡によるプロトコルアノーマリの検知と対処
ネットワーク層.
IPネットワークを経由した データの流れ とむさんによるいけてる説明. IPネットワークを経由した データの流れ とむさんによるいけてる説明.
ネットワーク構成法 スケール 第6回 11月19日.
TCP (Transmission Control Protocol)
ネットワーク検知技術の最適化への ハイブリッド・アプローチ
ネットワーク コミュニケーション トランスポート層 TCP/UDP 6/28/07.
i-Pathルータのフロー情報を用いたDoS攻撃検知法
輪講: 詳解TCP/IP ACE B3 suzuk.
HTTPプロトコルとJSP (1) データベース論 第3回.
トランスポート層.
Telnet, rlogin などの仮想端末 ftp などのファイル転送 rpc, nfs
コンテンツ配信 エンコード (符号化) CBR (Constant Bit Rate) VBR (Variable Bit Rate)
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
慶應義塾大学 武藤研究室 セキュリティグループINAS 直江健介
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
不正アクセス       ーrootkitについてー              環境情報学部              3年 櫻井美帆.
Linux リテラシ 2006 第4回 ネットワーク CIS RAT.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
IPv6 ネットワークにおける エニーキャスト通信実現のための プロトコル設計と実装
第17章 ドメインネームシステム.
第11章 UDPユーザ・データグラム・プロトコル
TCP/UDP プロセス間の通信のためのプロトコル TCP:信頼性高、処理時間大 UDP:信頼性低、処理時間小 ftp SMTP HTTP
第11回ネットワークプログラミング 中村 修.
DNS に関する質問 授業の後に寄せられた質問に答えます
7. セキュリティネットワーク (ファイアウォール)
第9章 Error and Control Messages (ICMP)
2009年度卒業論文発表 CDNコンテンツサーバの動的負荷分散
ネットワーク技術II 第9.1課 TCP/IPプロトコルスイート
インターネットにおける真に プライベートなネットワークの構築
セキュリティ(2) 05A2013 大川内 斉.
第16章 BOOTP:ブートストラップ・プロトコル
ネットワークプランニング 5月22日 大竹由美子.
A18 スパムサーバの調査 ~ボットを見抜けるか?~
DNSクエリーパターンを用いたOSの推定
TCP制御フラグの解析による ネットワーク負荷の推測
C11: 不正アクセスパケットの可視化 シャボン
DNS に関する質問 授業の後に寄せられた質問に答えます
最低限インターネット ネットワークにつなぎましょ!
仮想環境を用いた 侵入検知システムの安全な構成法
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
トラフィックプロファイラAGURIの設計と実装
高齢者支援アプリケーション Term Projectの最終発表 Bull:ECN Takatoshi:親
アドホックルーティングにおける 省電力フラッディング手法の提案
ネットワークプロトコル.
ウィルスの感染先探索活動を可視化するツール“PacketViewer”の開発
卒業論文に向けて(3) 学部4年生 島本 大輔 2004年11月11日.
4.3 IPとルーティングテーブル 国際産業情報学科 2年 大竹 雅子.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
データの改竄を防ぐ仕組み 2002/9/12 牧之内研究室「インターネット実習」Webページ
牧野ゼミ 2年 産業情報 学科 韓 憲浩(カン ケンコウ)
情報ネットワーク 岡村耕二.
TCP/IPの通信手順 (tcpdump)
UDPデータグラムヘッダ 牧之内研究室 修士1年 久保正明.
プロトコル番号 長野 英彦.
Presentation transcript:

X remote ICMP based OS fingerprinting techniques by Ofir Arkin 武藤研究室 セキュリティグループINAS ポジション:スーパーサブ 直江健介

Table of Contents 1.Introduction 2.Remote Active Operating System Fingerprinting Methods Used By X 3.How Does X works? 4.The Future development of X and xprobe

1.Introduction – What is X? “ICMP Usage in Scanning”[1] ICMPを使った様々な手法を使ったActive OS Fingerprinting コンセプトは簡単で、高速で、効率的で、ホストを特定することに非常に強力である事。

1.1 Why X?(1/2) XprobeはTCP/IPの実装にかなり依存している他のツールとは対極にあるツールだ! 既存のツールは特にMicrosoft系を特定するときに大変 Win2K,NT4,MEや98/98SEのfingerprinting processに差異を見出すのが非常に困難 必要とするデータグラムの数(1~4パケット) 既存のツールと違いmalformedなpacketは使わないためIDSにも検出されにくい。(通常運用ではありえるデータグラムの形をしているため)

1.1 Why X?(2/2) 情報収集の形を変える!? 今まで 1.HostScanでAvailabilityをチェック 2.走ってるサービスを調べる 3.その下にあるOSを特定 ホストにknownなexploitがあるサービスがあればそこを突く  >めでたく管理者権限をゲット、無許可アクセス可能 Xprobeだと ・HostScanの時点で何のOSかが分かる ・最高でも4パケットでどの脆弱性があるシステムか分かってしまう

2. Remote Active Operating System Fingerprinting Methods Used By X Xは[1]で発見したいくつかのremote active operating system fingerprinting methodsを利用している

2.1 ICMP Error Message Quoting Size ICMPのエラーメッセージは最低でもIPヘッダとエラーの原因となったパケットの最初の8byteのデータバイトを含む。 ほとんどのOSはこのエラーメッセージを吐く じゃあ、どのOSが一番長いエラーメッセージを吐くの?

2.2 ICMP Error Message Echoing Integrity(1/3) 普通、値が変わるのは何処よ? IPのTTL値 ヘッダが読まれるたびに一つ減るから IPヘッダのチェックサム TTLが減るたびにチェックサムは再計算される XはUDPデータグラムを閉じられたUDPポートに送ることでICMP Port Unreachable error messageを得て利用する

2.2 ICMP Error Message Echoing Integrity(2/3) IP Total Length Field OSのIPスタックは Offending packetに対するエコーパケットのIP total lengthに 20byte足す Offending packetに対するエコーパケットと一緒にオリジナルのパケットのIP total lengthから20byte減らす 正しい値をエコーする IPID ICMP Error message のIPIDの値を正しく返さない ICMP Error message のIPIDの値を正しく返す

2.2 ICMP Error Message Echoing Integrity(3/3) 3Bits Flags and Offset Fields 正しく返さない 正しく返す IP Header Checksum Offendingパケットに対するエコーバックのIPヘッダのチェックサムの計算ミスをする 0を返す 正しい値を返す UDP Header Chekcsum Offendingパケットに対するエコーバックのUDPヘッダのチェックサムの計算ミスをする 結論:いくつかのOSスタックはある値に関して正常にエコーしないものがある

2.3 Precedence Bits Issues with ICMP Error Messages 各IPデータグラムには8byteの“TOS Byte”がある TOS(Type of Service) Byteには三つのfieldがある Procedence filed 3bit長、IPデータグラムの優先度(8段階) 優先度の高いものは優先度の低いものより先に送られる TOS 4bit長、throughput,delay,reliability,IPデータグラムのルーティングcostを表現する MBZ(Must Be Zero) 1bit長、使用しない、0でなくてはいけない ルータやホストはこの部分を無視する ICMP Source Quench error messageが送信されているのならば、IP Procedence fieldの値はそれを誘発したIP Procedence fieldと同じでなくてはいけない。

2.4 DF Bit Echoing with ICMP Error Messages DF(Dont Frag) bit set, 分割禁止 ICMP error messageを誘発するOffending packetと一緒にDF bitをたてたら、どうなるであろうか? ICMP error message IP HeaderのDF bitもたつの?

2.5 IP Identification Field Value with ICMP Query Messages with Linux Kernel 2.4.x based machines Linux Kernel 2.4.5以上では直されているが、2.4.0-2.4.4ではICMP query requestとreply messageと共にIP Identification fieldが0にセットされる。

2.6 The IP Time-To-Live Field Value with ICMP Messages IP Headerがプロセスされるたびに1づつ減らされる RFC791ではこの値は秒で計る 最高で255秒=4.25分 0であればデータは破棄される 実際のルータなどは1秒以上かかるのもあれば一秒以下でプロセス終了する 実際の使われ方は無限ループに陥ったいわゆるゴーストパケットの破棄方法としてある(ようなもの)。また、古いデータが新しいデータが届いた後に届くのを防ぐ IP TTL値にはICMP query messeageとICMP query replyと二つがある TTLベースのOS FingerprintingではあらかじめTTL距離(何ホップか)を知らなくてはいけない

2.7 Using Code Field Values Different Than Zero with ICMP Echo Requests ICMP code filedを0以外のICMP Echo requestを送ると Microsoft系はICMP Echo replyとして0を返す それ以外はICMP Echo requestで使った値を返す Microsoft系のOSはRFC792[2] guidelineとは対照的な振る舞いをする。

2.8 TOS Echoing RFC1349はICMP messagesのType-of-Service値を規定、以下の三つに区別する ICMP error message(Destination Unreachable,Source Quench,Redirect,Time Exceeded,Parameter Problem) ICMP query message(Echo,Router Solicitation,Timestamp,Information request,Address Mask request) ICMP reply messages(Echo reply,Router Advertisement,Timestamp reply,Information reply,AddressMask reply) いくつかのOSはRFC1349を無視して、ICMP reply messagesのTOS値をICMP request messagesのTOS値を返さないものがある。

2.9 DF Bit Echoing With ICMP Query Messages ICMP query request messagesと一緒にDF bitを立てたらどうなるだろう? DF bitはICMP query request messageと一緒に立てられるものなのか?

2.10 The ?Who Answer What?? Approach OSを特定するのにICMP Query message requestを使う ICMP Echo request ICMP Timestamp request ICMP Information request ICMP Address Mask request

3. How does X works? アイデアは最初に静的な決定木を作る どう似たOSを特定のOSとして差別化(判定)するか まずUDPパケットをclosedなUDP destinationポートに送信(default:3132byte) ICMP Destination Unreachable Port Unreachable error messageを利用してOSFingreprintの違いを得る 送信したホストからリプライが無ければlinsten状態 UDPパケットをブロックするフィルタ機器があれば空いたUDPポートの真似をする(従ってreplyは受け取らない)

3. How does X works? アタック1 UDPパケットを閉じたUDPポートに対して送るとICMP Port Unreachable error messageを受け取れるので1パケットを送る事で判別。 返ってくればホストは生きてるかトラフィックが許されてる かえってこなければフィルタリング機器が存在しているだろう どうやって閉ざされたUDPポートを探すか IANAのポートリストなど http://www.Isi.edu/in-notes/Iana/assignments/port-numbers

3. How does X works? UDPデータグラムにDF bitをたてたものを送ることで2.4のノウハウを使う UDP queryは70byteのデータを持つ 対象ホストが何バイト返すかを見る Errorを返せば対象ホストに対してこの手法が使える 返さなければフィルタリングされているかホストが落ちている この値が0xc0であればLinux Kernel 2.0.x/2.2.x/2.4.xベースマシン、CISCO based router(IOS 11.x-12.x)、Extreme Networks Switch

3. How does X works? 前述したIP Headerの先頭8byte以上をICMP error messageに含むOS群はLinux Kernel 2.0.x/2.2.x/2.4.xである ネットワークデバイスはPrecedence bitに0x0cを立てたものに対しては先頭8byteしか返さない これでLinuxKernelとCISCO routerとExtreme Network switchを差別化できる

3. How does X works? Linux Kernel 2.0.xは初期IPTTL値を64にセットされる。Linux Kernel 2.2.x/2.4.xは初期IPTTL値を255にセット Linux Kernel 2.4.0-2.4.4のICMP queryのIP ID値は常に0 2.4.5から直された Kernel2.2x/2.4.5以上と2.4.0-2.4.4とに差別か出来る

3. How does X works? アタック2 ICMP Port Unreachable Error Messagesパケットにどのくらいのechoを返したかで判別 8byte返す 64byte返す 64byte以上返す 分かったことはfigure5の通り

3. How does X works? Sun Solaris 2.3-2.8,HPUX 11.x,MacOS 7.x-9.x ICMP Timestamp Requestを送信 リプライがあるもの>Sun Solaris 2.3-2.6 リプライの無いもの>HPUX 11.x,MacOS7.x-9.x アタック1で万が一Linux系が判別できなくてもここで判別が出来る

3. How does X works? アタック3 ICMP Error messageが返すIP total lengthの値で判別 正しく返す 正しい値より20byte少ない 正しい値より20byte多い OpenBSD 2.6-2.9,Apollo Domain/OS SR10.4,NFR IDS…..Figure7参照

3.正しい値より20byte少ない 返ってきたICMP error messageのUDPチェックサムで判別 Figure8を参照 正しい値 正しくない値 Figure8を参照

3.正しい値より20byte多い AIX,BSDI,NetBSD 1.x-1.2.xの判別 offendingUDPを送ったことでOSが返したICMP error messageの値で判別 まずIP Header checksumのインテグリティチェック AIXはechoされた値をmicalculateする、それ以外は正しく計算する 次にIP Identification field valueのインテグリティチェック BSDI 2.x,3.xとNetBSD1.x-1.2.xはlittle endianの問題で値を正しく返さない BSDI 4.x,NetBSD 1.x-1.2.xのbig endianとMacOS X 1.0-1.2は正しく返す

3. How does X works? 元のbranchに戻り話をするめる IP Total Length field value echoed coreectly 3bit flags(Unused,MF,DF)とoffset filedを使い判別 Figure10参照

3. How does X works? そしてWindowsファミリーを判別する どきどきしますねぇ~~

3. How does X works? Microsoft系列のOSを判別するには違うqueryを使う必要がある。 Code field value different than zero with ICMP Echo requests ICMP Echo Request with the Precedence Bits !=0, DF Bit Set,ICMP Code Field !=0 0が返るならMicrosoftWindowsFamily それ以外の値が返るなら、MSWindows系以外

3. How does X works? Windowの中でのバージョンの判別 TTL値での判別 Precedence Bitsでの判別 Windows95 TTLが128 Windows95以外 Precedence Bitsでの判別 !=0 98/98SE/ME/NTsp3-/NTsp4+ =0 Microsoft Windows 2000,SP1,SP2

3. How does X works? 98/98SE/ME/NTsp3-/NTsp4+の判別 ICMP Time Stamp Requestによる判別 Reply Windows98/98SE/ME No Reply Windows NT SP 3-,Windows NT SP 4+

3. How does X works? WIndows98/98SE/MEの判別 ICMP Address Mask Request Reply Windows98/98SE No Reply Windows ME Windows NT SP 3-/Windows NT SP 4+の判別 Windows NT SP 3- Windows NT SP 4+

3. How does X works? 残りは? DF Bit EchoingによるUltrix,Novell,BSD系の判別[with the request] 返す Ultrix,Novell 返さない それ以外のOS(BSD系) TTLが128のものがNovell TTLが255のものがUltrix

3. How does X works? OpenBSD2.1-2.3.x,2.4-2.5とNetBSD1.5,1.4.1,1.4の判別手法 Echoing Integrity CheckのUDP Checksum of the Offending Packet Echoed !=0 OpenBSD 2.4.x-2.5.x NetBSD 1.5,1.4.1,1.4 =0 OpentBSD 2.1.x-2.3.x

4. The Future development of X and xprobe AIとシグネチャベースのアプローチ Custom scenario Fail over mechanism 出来ないことから学ぶ Static logicである いくつかのOSと少ない数のネットワークデバイスしか判別できない ICMP/UDPベースであること Fingerprintのデータベースとの連携

4. The Future development of X and xprobe やりたいこと Fingerprintのデータベースとの連携 内部にAIを持たせて、Dynamicにロジックを構築 多くのネットワークデバイスの判別を可能にしたい 違うトポロジには違う手法を用いたい フィルタリングデバイスを使ったテストをしたい 実際のアプリケーションデータベースを使いUDPqueryと絡めたい もっと使えるNetwork mappingも含まれるべき

Demo