TCP フィンガープリントによる悪意のある通信の分析 早稲田大学大学院基幹理工学研究科 後藤研究室修士 2 年 5108B034-7 木佐森幸太 1
研究の背景 ボットの脅威の拡大 検出の難しさ カーネルマルウェアの増加 カーネルモードで動作するマルウェア すべての動作をカーネルモードで実行できるマルウェアをフルカーネルマルウェア (FKM) と呼ぶ FKM は既存 OS の TCP/IP 実装とは異なる独自のネットワークドライバを実装 cf. Srizbi.trojan カーネルモード :CPU の動作モードの中で最も高いレベル 一般に OS のカーネルはカーネルモードで動作する 2
研究の目的 カーネルマルウェアの可能性がある通信を TCP フィンガープリントによって識別する手法を提案する ハニーポットの通信データの分析を行い 既存の OS とは異なるシグネチャで攻撃などの悪意のある通信が行われていることを示す 上記分析により得られたシグネチャを実ネットワーク上の通信データに適用し その有効性を示す 3
Passive TCP fingerprinting TCP/IP の仕様は RFC で定義されているが,OS 毎にその実装は異なる fingerprinting とは 通信を分析することで対象システムの OS を推定する技術 active: 対象システムに対して通信を行い 得られたデータから OS を推定する (nmap が有名 ) passive: 対象システムに対して通信を行わず 取得済みの通信データを分析して OS を推定する 今回は p0f というツールを用い Passive fingerprinting を行った 4
p0f p0f にはいくつかのモードがあるが 今回用いたのは SYN パケットを分析対象とするモード 判定に用いるのは以下のデータ ウィンドウサイズ TTL の初期値 Don t Fragment ビット SYN パケット全体のサイズ TCP オプション (NOP EOL ウィンドウスケール 最大セグメントサイズ SACK タイムスタンプ等 ) その他特徴的な点など これらを集約し シグネチャとしてデータベース化している 5
CCC DATAset の分析 サイバークリーンセンターが運用するハニーポットのデータから作成された マルウェア研究用のデータセット CCC DATAset 2008,2009 の 2 年分が存在 そのうち 2 台のハニーポットの通信を 2 日間フルキャプチャしたものを使用 p0f を適用した結果 既存の OS ではないと判定されたシグネチャが多数得られた TTL を 2 の累乗の値に切り上げ 初期値として推定 集約 アウトバウンド 1 種 インバウンド 43 種のシグネチャが得られた このシグネチャを総称して MWS シグネチャと呼ぶことにする 以後 インバウンドの通信のみを分析対象とする 6
MWS シグネチャの例 60352:64:0:52:M1240,N,W2,N,N,S:.:MWS:60352_1 ウィンドウサイズが 60352 バイト TTL の初期値が 64 Don t Fragment ビットが 0 SYN パケット全体のサイズが 52 バイト 以下の TCP オプションが設定されている 最大セグメントサイズ NOP オプション ウィンドウスケールオプション SACK その他の特徴はなし OS の名称 詳細 ( バージョン等 ) 今回は ウィンドウサイズの値により分類し 名称を付けた 7
CCC DATAset の分析 : 全体 (1) 既存シグネチャ MWS シグネチャの SYN パケット数の比較 2009 年度は 2008 年度に比べ全体的に通信量が減少している 両年度とも SYN パケットの半分以上が MWS シグネチャによるもの 8
CCC DATAset の分析 : 全体 (2) シグネチャ毎の送信元 IP アドレス数 SYN パケット数ほどではないが全体的に減少している 送信元ホストの半分以上が MWS シグネチャによる通信をしている 9
CCC DATAset の分析 : シグネチャ別 SYN パケット数 シグネチャ毎の SYN パケット数 (2009) 10
CCC DATAset の分析 : シグネチャ別送信元 IP 数 シグネチャ毎の送信元 IP 数 (2009) 11
CCC DATAset の分析 : MWS シグネチャの送信先ポート (2009) (1) 両年度を通じて登場頻度の高いシグネチャについて 2009 年のデータにおける送信先ポートを分析 左 : 16384_1 右 : 53760_4 12
CCC DATAset の分析 : MWS シグネチャの送信先ポート (2009) (2) 左 : 60352_3 右 : 60352_6 135 139 445 1433 2967 の各ポートは いずれもポートスキャンの対象 ( 脆弱性があるもの ) として著名なもの 13
CCC DATAset の分析 : 頻度の高い通信パターンの分析 (1) ホスト A は MWS 60352_6 シグネチャで通信 以下 SYN パケットのみ 21:26:41 ホストA:9109 -> ハニーポットA:135 (scan) 21:26:41 ホストA:9110 -> ハニーポットA:135 (rpc) 21:26:43 ホストA:9197 -> ハニーポットA:135 (rpc) 21:26:43 ホストA:9203 -> ハニーポットA:1013 ( シェルコード送信 ) 21:26:43 ハニーポットA:1028 -> ホストA:3450 (malware 要求 ) 21:26:43 ハニーポットA:1028 -> ホストA:3450 (malware 要求 ) 各行冒頭はタイムスタンプ 14
CCC DATAset の分析 : 頻度の高い通信パターンの分析 (2) ホスト B は MWS 53760_4 シグネチャで通信 00:35:11 ホスト B:56101 -> ハニーポット B:135 (rpc) 00:35:13 ハニーポット B:1027 -> ホスト B:47602 (malware 要求 ) 00:35:13 ハニーポット B:1027 -> ホスト B:47602 (malware 要求 ) CCC DATAset の攻撃元データ ( マルウェアのダウンロード記録 ) に ダウンロードが成功した記録が残されている 2009-03-13 00:35:13, ハニーポット B,1027, ホスト B,47602, TCP,c925531e659206849bf7********************, PE_VIRUT.AV,C: WINNT system32 csrs.exe 15
CCC DATAset の分析 : 頻度の高い通信パターンの分析 (3) ホスト C は 最初の SYN パケットのみ MWS 16384_1 シグネチャで通信 2 つ目 3 つ目の SYN パケットは Windows のシグネチャであった 00:57:09 ホスト C:6000 -> ハニーポット B:135 (scan) 00:57:13 ホスト C:3197 -> ハニーポット B:135 (rpc) 00:57:15 ホスト C:4139 -> ハニーポット B:135 (rpc) 16
CCC DATAset の分析 : シグネチャ毎の通信内容 一度以上通信が成立したシグネチャについてまとめた表 MWS シグネチャでは ftp と shell コード送信が多く 他はほとんどないことがわかる シグネチャ ftp http irc shell smb sql MWS 60352_6 232 0 0 558 0 0 MWS 53760_4 50 1 0 307 0 0 MWS 60352_3 38 0 0 66 0 0 MWS 65535_7 12 0 0 21 0 0 MWS 60352_2 0 0 0 18 0 0 MWS 60352_1 0 0 0 6 0 0 すべての通信 694 563 202 1660 9234 723 17
MWS シグネチャの拡張 DF ビット CCC DATAset におけるインバウンド通信は すべて DF ビットが 0 だった DF ビットは通信環境により削除されることがある MWS シグネチャの DF ビットを 1 にした MWS+DF シグネチャを作成 最大セグメントサイズオプション 最大セグメントサイズの値は通信環境により左右されることが多い 最大セグメントサイズの値のみが異なるシグネチャについて これをワイルドカードとして 6 種に集約し MWS_Gen シグネチャを作成 以降 MWS シグネチャ MWS+DF シグネチャ MWS_Gen シグネチャの順に優先度を付けて分析を行った 18
他のネットワーク通信データの分析 : 早稲田大学 (1) 早稲田大学の対外接続回線におけるすべての通信データ (SYN パケットのみ 09/12/25~09/12/31) を分析 シグネチャ種別ごとの統計 SYN パケット数では合計 8.5% 送信元 IP 数では合計 5.5% 程度 SYN パケット数 送信元 IP 数 MWS 5.140% 0.007% MWS+DF 0.904% 0.770% MWS Gen 2.569% 4.656% UNKNOWN 20.180% 6.444% 既存 OS 71.207% 90.272% 19
他のネットワーク通信データの分析 : 早稲田大学 (2) 各種 MWS シグネチャ別に集計を行ったところ MWS 16384_1 シグネチャによる SYN パケット数が圧倒的に多かった 送信元 IP 数は少数 他に上位にきているシグネチャ 4 種の送信先ポート番号を集計したところ 445 番ポートが最も多かった 135 番 139 番 2967 番 1433 番も多い 他に HTTP (80 番 8080 番 ) HTTPS(443 番 ) SMTP (25 番 ) bittorent(6886 番 6889 番 ) など ターゲット不明のポート番号も 20
他のネットワーク通信データの分析 : 企業の smtp 通信データ (1) ある企業網の電子メールサーバに接続したネットワークセグメントで収集した TCP ヘッダデータ (SYN パケットのみ 09/3/1~09/3/31) を分析 シグネチャ種別ごとの統計 SYN パケット数では合計 3% 送信元 IP 数では 4% 程度 SYN パケット数 送信元 IP 数 MWS 0.004% 0.004% MWS+DF 0.794% 0.240% MWS_Gen 2.107% 3.500% UNKNOWN 13.398% 9.728% 既存 OS 83.697% 87.758% 21
他のネットワーク通信データの分析 : 企業の smtp 通信データ (2) 各種 MWS シグネチャ別に集計を行ったところ 他の通信データと異なり MWS 16384_1 シグネチャによる SYN パケット送信が一切なかった MWS シグネチャによる SYN パケット送信があった IP アドレスについて発信したメールの内容を判別したところスパムメールであった マルウェアの構成によってはスパム送信モジュールを搭載するものもあると推定できる 22
他のネットワーク通信データの分析 : MAWI データセット WIDE Project によるインターネット定点観測において取得されている通信データ 本研究ではその中でも太平洋を横断するネットワーク回線で毎日取得されているもの (2006 年 11 月 ~2009 年 11 月 ) を分析 月別で集計した シグネチャ別に集計したところ 多い月では SYN パケット全体の 10% 以上が MWS 16384_1 シグネチャによるものだった 多くの月において MWS+DF シグネチャ MWS_Gen シグネチャによる SYN パケットが全体のおよそ 1.5% 以上存在していた 23
他のネットワーク通信データの分析 : MWS 16384_1 シグネチャ MWS 16384_1 シグネチャについて 早稲田大学のデータと MAWI データセット (2009 年 11 月分のみ ) を分析した 少数の送信元 IP から大量の SYN パケットが送信されていた 通信データ SYN パケット数送信元 IP 数 早稲田大学 12,058,445 166 MAWI (2009 年 11 月 ) 2,030,839 106 スキャン行為と思われる通信が確認できた SYN パケットのうち 95% 程度は 送信元ポートが 6000 番であった MWS 16384_1 シグネチャによる SYN パケット送信の後 既存 OS による SYN パケット送信がある場合もあった 24
まとめ ハニーポットの通信データからカーネルマルウェアの可能性がある ( 既存 OS の TCP/IP スタックと異なる実装である ) シグネチャを抽出 通信の分析を行った これらのシグネチャによる攻撃通信が多数見られた 他のネットワーク上でもこれらのシグネチャが見られることが確認できた 今後の課題 さらに通信内容に踏み込んだ分析 MWSシグネチャによるSYNパケットの送信元ホストの分析 シグネチャのアップデート 25
ご清聴ありがとうございました 26
補足資料 27
p0f (1) p0f のシグネチャにおける TCP オプションリスト N NOP オプション E EOL オプション ( オプションリストの終了 ) Wnnn ウィンドウスケールオプション (nnn は値を表す ) Mnnn 最大セグメントサイズオプション (nnn は値を表す ) S Selective ACK オプション T タイムスタンプオプション T0 タイムスタンプオプション ( タイムスタンプ値が0)?n 上記以外のオプション (n はオプションを表す番号 ) 28
p0f (2) p0f のシグネチャにおけるその他の特徴リスト E Z I U X A T F D EOL オプションの後にオプションがある IP パケットにおける ID フィールドが 0 である IP パケットでオプションが設定されている 緊急ポインタフィールドが 0 でない 未使用領域が 0 でない ACK 番号が 0 でない タイムスタンプ エコー応答の値が 0 でない 通常設定されないフラグ (URG PSH など ) が設定されている TCP ヘッダの後にデータが存在する! TCP オプション部分が正常に読めない. 上記すべてに該当しない 29
CCC DATAset の分析 : シグネチャ別 SYN パケット数 シグネチャ毎の SYN パケット数 (2008) 30
CCC DATAset の分析 : シグネチャ別送信元 IP 数 シグネチャ毎の送信元 IP 数 (2008) 31
MWS_Gen シグネチャリスト 53760:64:1:64:M*,N,W3,N,N,T0,N,N,S:.:MWS_Gen:53760 5808:64:1:60:M*,S,T,N,W0:.:MWS_Gen:5808 60352:64:1:52:M*,N,W2,N,N,S:.:MWS_Gen:60352 65535:64:1:52:M*,N,W2,N,N,S:.:MWS_Gen:65535_1 65535:64:1:64:M*,N,W3,N,N,T0,N,N,S:.:MWS_Gen:65535_2 8192:64:1:64:M*,N,W0,N,N,T0,N,N,S:.:MWS_Gen:8192 32
企業の smtp データにおける MWS シグネチャの送信メール内訳 シグネチャ名スパム通常メール送信元 IPアドレス数 65535_8 290 0 9 65535_5 252 0 8 65535_3 90 0 4 65535_7 64 0 6 16384_3 25 0 3 65535_4 16 0 7 53760_4 16 0 2 65535_12 9 0 1 33
各種 MWS シグネチャごとの SYN パケット数 ( 早稲田大学 ) シグネチャ SYN パケット数 MWS 16384_1 12,058,445 MWS_Gen 65535_1 2,088,113 MWS_Gen 53760 1,398,351 MWS_Gen 60352 1,335,506 MWS_Gen 65535_2 1,101,716 MWS+DF 8192_1 952,104 MWS+DF 60352_6 244,401 MWS+DF 65535_13 241,613 MWS+DF 53760_4 194,928 MWS_Gen 8192 136,019 その他合計 576,091 34
シグネチャごとの送信先ポート番号 ( 早稲田大学 ) (1) MWS_Gen 65535_1 ポート番号 SYNパケット数 445 1,827,882 80 120,384 6889 48,207 21053 11,828 8080 10,566 25 10,119 6649 9,778 28582 5,822 443 4,069 6886 3,009 その他 36,449 MWS_Gen 65535_2 ポート番号 SYNパケット数 445 533,677 80 378,072 6889 75,996 21053 20,479 6649 12,757 28582 10,356 443 7,436 8088 6,930 14229 6,648 25 5,000 その他 44,365 35
シグネチャごとの送信先ポート番号 ( 早稲田大学 ) (2) MWS_Gen 53760 ポート番号 SYNパケット数 445 1,322,036 1433 7,660 80 1,843 25 925 139 368 135 302 2967 134 6649 54 21053 51 6889 41 その他 2,092 MWS_Gen 60352 ポート番号 SYNパケット数 445 1,322,036 1433 7,660 80 1,843 25 925 139 368 135 302 2967 134 6649 54 21053 51 6889 41 その他 2,092 36
各種 MWS シグネチャごとの SYN パケット数 (SMTP データ ) シグネチャ SYN パケット数 MWS_Gen 65535_1 65,108 MWS+DF 8192_1 46,206 MWS_Gen 65535_2 40,396 MWS_Gen 60352 24,131 MWS_Gen 53760 13,004 MWS_Gen 8192 3,726 MWS+DF 65535_3 1,624 MWS+DF 60352_3 1,306 MWS+DF 65535_4 1,163 MWS+DF 65535_7 1,016 その他合計 4,126 37
各種 MWS シグネチャによる SYN パケット割合の推移 (MAWI) 1 38
各種 MWS シグネチャによる SYN パケット割合の推移 (MAWI) 2 39
MWS 16384 1 シグネチャによる SYN パケット割合の推移 (MAWI) 1 40
MWS 16384 1 シグネチャによる SYN パケット割合の推移 (MAWI) 2 41
MWS 16384 1 シグネチャ以外の各種 MWS シグネチャによる SYN パケット割合の推移 (MAWI) 1 42
MWS 16384 1 シグネチャ以外の各種 MWS シグネチャによる SYN パケット割合の推移 (MAWI) 2 43
MWS Gen シグネチャ 4 種による SYN パケット割合の推移 (MAWI) 1 44
MWS Gen シグネチャ 4 種による SYN パケット割合の推移 (MAWI) 2 45
各種 MWS シグネチャによる送信元 IP アドレス数の推移 (MAWI) 1 46
各種 MWS シグネチャによる送信元 IP アドレス数の推移 (MAWI) 2 47
各種 MWS シグネチャごとの SYN パケット数 (MAWI) シグネチャ SYN パケット数 MWS 16384_1 46,226,393 MWS_Gen 65535_2 3,977,229 MWS_Gen 53760 3,709,951 MWS_Gen 65535_1 2,844,464 MWS_Gen 8192 2,286,077 MWS+DF 8192_1 1,267,833 MWS_Gen 60352 751,435 MWS+DF 53760_4 463,724 MWS+DF 65535_12 254,946 MWS+DF 65535_7 209,522 その他合計 1,121,401 48
MWS 16384 1 シグネチャによる SYN パケットの送信先ポート番号 早稲田大学 ポート番号 SYNパケット数 2967 5,827,791 1433 2,968,309 135 1,460,904 3306 344,411 1521 223,939 8088 201,510 8080 196,786 445 84,127 その他合計 750,668 MAWI(2009 年 11 月 ) ポート番号 SYNパケット数 1521 521,196 1433 502,537 2967 312,409 135 275,083 445 227,608 3306 70,647 8080 36,319 3128 32,218 その他合計 52,822 1521 番は Oracle データベース 3306 番は MySQL で用いられるポート番号 49