Pac Sec 2006 Conference The fourth annual Pac

  • Slides: 38
Download presentation
 • Pac. Sec 2006 Conference The fourth annual Pac. Sec conference November 27

• Pac. Sec 2006 Conference The fourth annual Pac. Sec conference November 27 -30 2006, at the Aoyama Diamond Hall in Tokyo, Japan. • Yuji Ukai, Senior Software Engineer Ryan Permeh, Founding Software Engineer • Ryoji Kanai, Software Engineer Retina Development Core Team Network Security Scanner

5 IPv 6 Host Discovery

5 IPv 6 Host Discovery

13 Ethernet ベンダーID • • • IPv 6アドレスの下位64ビットは、多くの場合、Interface IDとなっている Interface IDは、イレヤー 2アドレスのEUI-64表記となっている。 このInterface IDの一部は推測できる(Layer-2

13 Ethernet ベンダーID • • • IPv 6アドレスの下位64ビットは、多くの場合、Interface IDとなっている Interface IDは、イレヤー 2アドレスのEUI-64表記となっている。 このInterface IDの一部は推測できる(Layer-2 ベンダーID) 検索スペースを削減できる EUI-64 : http: //standards. ieee. org/regauth/oui/tutorials/EUI 64. html ベンダーID : http: //standards. ieee. org/regauth/oui. txt 00 -01 -02 00 -05 -B 5 00 -07 -E 9 00 -E 0 -4 C

14 DHCPv 6 ステートテーブル • DHCPv 6は、IPアドレスの付与状態を保持する必要がある • メモリ、あるいはファイルに保持されている付与状態をチェックする事で、 生存しているIPアドレスを抽出できる • ログ、SQLデータベース、アプリケーションAPI、あるいは、サーバプロセ スのフック •

14 DHCPv 6 ステートテーブル • DHCPv 6は、IPアドレスの付与状態を保持する必要がある • メモリ、あるいはファイルに保持されている付与状態をチェックする事で、 生存しているIPアドレスを抽出できる • ログ、SQLデータベース、アプリケーションAPI、あるいは、サーバプロセ スのフック • サーバへのアクセスと権限が必要 MSDN: DWORD DHCP_API_FUNCTION Dhcp. Enum. Subnet. Clients( DHCP_CONST WCHAR* Server. Ip. Address, DHCP_IP_ADDRESS Subnet. Address, DHCP_RESUME_HANDLE* Resume. Handle, DWORD Preferred. Maximum, LPDHCP_CLIENT_INFO_ARRAY* Client. Info, DWORD* Clients. Read, DWORD* Clients. Total ); DWORD DHCP_API_FUNCTION Dhcp. Enum. Subnets( DHCP_CONST WCHAR* Server. Ip. Address, DHCP_RESUME_HANDLE* Resume. Handle, DWORD Preferred. Maximum, LPDHCP_IP_ARRAY* Enum. Info, DWORD* Elements. Read, DWORD* Elements. Total );

Neighbor Cache • • IPv 6ルーターとホストは、 Neighbor Cacheを保持している 生きているIPアドレスをいくつか得ることができる IPv 4のARPキャッシュに相当 生存しているIPアドレスと、対応したレイヤー 2アドレスが含まれる SNMPや、OS、アプリケーション独自のAPIでアクセス可能

Neighbor Cache • • IPv 6ルーターとホストは、 Neighbor Cacheを保持している 生きているIPアドレスをいくつか得ることができる IPv 4のARPキャッシュに相当 生存しているIPアドレスと、対応したレイヤー 2アドレスが含まれる SNMPや、OS、アプリケーション独自のAPIでアクセス可能 SNMP OID –. 1. 3. 6. 1. 2. 1. 55. 1. 12 Windows – C: research>netsh interface ipv 6 show neighbors Interface 6: Local Area Connection Internet Address Physical Address Type fe 80: : 210: a 4 ff: feb 6: b 972 00 -10 -a 4 -b 6 -b 9 -72 Stale fe 80: : 211: 25 ff: fe 5 a: cd 63 00 -11 -25 -5 a-cd-63 Permanent Linux – # ip -6 neigh show fe 80: : 201: 23 ff: fe 45: 6789 dev eth 0 lladdr 00: 01: 23: 45: 67: 89 router nud reachable 15

18 IPv 6 OS Detection

18 IPv 6 OS Detection

ICMPv 4 OS検出技術 21 テストパケット • UDP Unreachable Port • ICMP Echo Request •

ICMPv 4 OS検出技術 21 テストパケット • UDP Unreachable Port • ICMP Echo Request • ICMP Timestamp Request • ICMP Information Request • ICMP Netmask Request チェックする項目 • レスポンスの有無 • IP Length • IP Identification • IP TOS • IP Flags • IP Fragment Offset • IP TTL • Checksum X remote ICMP based OS fingerprinting techniques Ofir Arkin and Fyodor Yarochikin http: //www. sys-security. com/

ICMPv 6 OS検出技術 - テストパケットと実験対象 テストパケット • • • ICMPv 6 Echo Request (Invalid

ICMPv 6 OS検出技術 - テストパケットと実験対象 テストパケット • • • ICMPv 6 Echo Request (Invalid Code) UDP Unreachable Port ICMPv 6 Multicast Listener Discovery ICMPv 6 Neighbor Solicitation テスト対象OS • Windows XP SP 2 • Windows Vista Beta 2 Build 5384 • Solaris 10 • Linux Fedora 2. 6. 15 • Free. BSD 6. 0 22

ICMPv 6 Echo request / Hop. Limit - Probe&Response ・ Probe - ICMPv 6

ICMPv 6 Echo request / Hop. Limit - Probe&Response ・ Probe - ICMPv 6 Echo Request Type = 128 ICMPv 6 Echo Request Code = 0 Identifier Check sum Sequence Number Data. . . ・ Response - ICMPv 6 Echo Reply IPv 6 Version Traffic Class Payload Length Type = 129 ICMPv 6 Echo Reply Code = 0 Identifier Data. . . Flow Label Next Header Hop Limit Check sum Sequence Number 23

24 ICMPv 6 Echo request / Hop. Limit - Characteristics ・ Responseパケット Hop. Limit値の比較

24 ICMPv 6 Echo request / Hop. Limit - Characteristics ・ Responseパケット Hop. Limit値の比較 OS Hop. Limit Windows XP 128 Windows Vista 128 Solaris 255 Linux 64 Free. BSD 64 ICMPv 6 Echo Reply Hop. Limit 128 Windows XP Windows Vista 64 Linux Free. BSD 255 Solaris

ICMPv 6 Echo request / Invalid Code - Probe&Response ・ Probe - ICMPv 6

ICMPv 6 Echo request / Invalid Code - Probe&Response ・ Probe - ICMPv 6 Echo Request (不正なCode値) Type = 128 ICMPv 6 Echo Request Code = 1 Identifier Check sum Sequence Number Data. . . ICMPv 6 Echo Request の Code値は 0 と指定されている(RFC 2463) しかし実際には、多くの実装は Code値をチェックしていない 25

26 ICMPv 6 Echo request / Invalid Code - Characteristics ・ Responseパケットの有無 ICMPv 6

26 ICMPv 6 Echo request / Invalid Code - Characteristics ・ Responseパケットの有無 ICMPv 6 Echo Reply Hop. Limit OS Response Windows XP Yes Windows Vista Yes Solaris Yes Linux Yes Free. BSD No 128 64 255 Solaris Windows XP Windows Vista ICMPv 6 Echo Reply Invalid Code Yes Free. BSD No Linux

27 UDP Port Unreachable / Probe&Response ・ Probe - クローズしているポートに対してUDPパケット(Over IPv 6)を送信 IPv 6

27 UDP Port Unreachable / Probe&Response ・ Probe - クローズしているポートに対してUDPパケット(Over IPv 6)を送信 IPv 6 UDP Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source Port Destination Port UDP Data Length UDP Check Sum Data. . . Closed Port を指定 ・ Response -通常、ICMPv 6 Destination Unreachable Message が帰ってくる。 Port Unreachable Type = 1 ICMPv 6 Destination Unreachable Check sum Code = 4 Unused 最小IPv 6 MTUを超えない範囲での送信パケット

28 UDP Port Unreachable / Characteristics RFC 2463 "A destination node SHOULD send a

28 UDP Port Unreachable / Characteristics RFC 2463 "A destination node SHOULD send a Destination Unreachable message with Code 4 in response to a packet for which the transport protocol (e. g. , UDP) has no listener, if that transport protocol has no alternative means to inform the sender. " → MUSTではない ICMPv 6 Echo Reply Hop. Limit ・ Responseパケットの有無 OS Response Windows XP Yes Windows Vista No Solaris Yes Linux Yes Free. BSD No 128 64 255 Solaris UDP Port Unreachable Yes Windows XP No Windows Vista ICMPv 6 Echo Reply Invalid Code Yes Free. BSD No Linux

ICMPv 6 Multicast Listener Discovery / Probe&Response 29 ルーターが、ローカルのリンクにマルチキャストのメンバーが存在するかを調べるプロトコル ・ Probe - 以下のMulticast Listener

ICMPv 6 Multicast Listener Discovery / Probe&Response 29 ルーターが、ローカルのリンクにマルチキャストのメンバーが存在するかを調べるプロトコル ・ Probe - 以下のMulticast Listener Discovery (MLDv 1)パケットを対象に送信 Type = 130 ICMPv 6 Multicast Listener Discovery Code = 0 Maximum Response Delay (0 x 0000) Check sum Reserved Multicast Address (全て 0 x 00) ・ Response -通常、Multicast Listener Reportが帰ってくる。 Type = 131 or 143 ICMPv 6 Multicast Listener Discovery Code = 0 Check sum Multicast Listener Report (Typeフィールドに依存)

30 MLDv 1 vs MLDv 2 ・ MLDv 2 - MLDv 1に送信者情報(ソースアドレス)指定機能を追加したもの ・ MLDv

30 MLDv 1 vs MLDv 2 ・ MLDv 2 - MLDv 1に送信者情報(ソースアドレス)指定機能を追加したもの ・ MLDv 1 QueryとMLDv 2 Queryは同じICMPv 6 Type(130)。端末はパケット長により両者を識別。 ・ 一部実装では、 MLDv 1 Queryに対して MLDv 2 Reportで応答。一部実装では応答を返さない。 Type = 131 ICMPv 6 MLDv 1 Multicast Listener Report Maximum Response Delay Reserved Multicast Address Type = 143 Check sum Code = 0 Reserved ICMPv 6 MLDv 2 Multicast Listener Report Check sum Code = 0 Multicast Address Recordの数 Multicast Address Record [1] Multicast Address Record [n]

31 ICMPv 6 Multicast Listener Report / Characteristics ・ Responseパケット ICMPv 6 Echo Reply

31 ICMPv 6 Multicast Listener Report / Characteristics ・ Responseパケット ICMPv 6 Echo Reply Hop. Limit OS Response Windows XP MLDv 1 Report Windows Vista No Response Solaris No Response Linux MLDv 2 Report Free. BSD MLDv 1 Report 128 64 255 Solaris MLD Query v 1 Windows XP None Windows Vista MLD Query v 1 Free. BSD v 2 Linux

ICMPv 6 Multicast Listener Report / IPv 6 Hop-By-Hop Option 32 ・ MLD Report

ICMPv 6 Multicast Listener Report / IPv 6 Hop-By-Hop Option 32 ・ MLD Report パケットには、IPv 6 Hop-By-Hop Optionが付随される ・ オプションの並びが実装によって異なる IPv 6 Hop-by-Hop Option Version Traffic Class Flow Label Payload Length Next Header = 0 Next Header = 58 ICMPv 6 Type = 131 ICMPv 6 Multicast Listener Discovery Hop Limit Header Ext Len Hop-by-Hop Option Code = 0 Check sum Multicast Listener Report (Typeフィールドに依存) Hop-by-Hop Option

ICMPv 6 Neighbor Solicitation / Probe&Response 同一リンク内の他ノードに対し、リンクレイヤアドレスの通知を要求するメッセージ ・ Probe - Neighbor Solicitation(近隣要請)パケットを対象に送信 Type =

ICMPv 6 Neighbor Solicitation / Probe&Response 同一リンク内の他ノードに対し、リンクレイヤアドレスの通知を要求するメッセージ ・ Probe - Neighbor Solicitation(近隣要請)パケットを対象に送信 Type = 135 ICMPv 6 Neighbor Solicitation Check sum Code = 0 Reserved Target Address = Source IPv 6 Address Option ・ Response - Neighbor Advertisement(近隣通知)が帰ってくる ICMPv 6 Neighbor Advertisement ルーターフラグ 要請フラグ 上書きフラグ (キャッシュされたアドレス更新) Type = 136 R S O Check sum Code = 0 Reserved Target Address Option 34

ICMPv 6 Neighbor Solicitation / Characteristics ・ Overrideフラグ OS Response Windows XP Enable Windows

ICMPv 6 Neighbor Solicitation / Characteristics ・ Overrideフラグ OS Response Windows XP Enable Windows Vista Enable Solaris Enable Linux Disable Free. BSD Disable 35

36 Fingerprint Bit位置 パラメータ 値 Bit 7, 8 Hop Limit 00=その他、01=64, 10=128, 11=255 Bit

36 Fingerprint Bit位置 パラメータ 値 Bit 7, 8 Hop Limit 00=その他、01=64, 10=128, 11=255 Bit 6 Invalid Code 0=応答無し, 1=応答有り Bit 5 UDP Unreachable 0=応答無し, 1=応答有り Bit 4, 3 MDL Query 00=応答無し、01=MLDv 1, 10=MLDv 2, 11=その他 Bit 2, 1 Hop-by-Hop Option 00=応答無し、01= 01→ 05, 10= 05→ 01, 11=その他 Bit 0 Neighbor Solicitation 0=無効, 1=有効 OS Fingerprint Windows XP 10 1 1 01 10 1 0 x 16 D Windows Vista 10 1 0 00 00 1 0 x 141 Solaris 11 1 1 00 00 1 0 x 1 E 1 Linux 01 1 1 10 10 0 0 x 0 F 4 Free. BSD 01 0 0 01 01 0 0 x 08 A

38 Thank you for your attention ! Question ? Contact : Yuji Ukai <yukai@eeye.

38 Thank you for your attention ! Question ? Contact : Yuji Ukai <yukai@eeye. com>