ホーム » TensorFlow » TensorFlow でネットワーク侵入検知

TensorFlow でネットワーク侵入検知

TensorFlow でネットワーク侵入検知

IDS/IPS (侵入検知/侵入防御)

クラスキャットでは IDS/IPS (侵入検知/侵入防御)機能を装備したインターネットサーバ管理ソリューション「ClassCat® Cute Server Manager」を提供しており、ファイル改竄や Rookit を検知し、各種 brute force 攻撃や第三者中継など外部からの攻撃を防御することができます。

ネットワーク型の侵入検知については既に Spark ベースのネットワーク型 IDS ソリューション も提供しておりますが、本記事では軍用ネットワークを想定したパケットログをベースにニューラルネットワークによる可能性を探ってみました。(いずれ製品化するかもしれません。)モデルはシンプルな MLP で TensorFlow のみで実装しています。

題材: KDD Cup 1999 コンピュータ・ネットワーク侵入検知

題材にしたデータは KDD Cup (データマイニングの国際大会) 1999 の Computer network intrusion detection です。かなり古いデータですが軍用ネットワークを想定していて 700 MB 程度あり、ラベリングもされていますので有用です。

おそらく出題者は未知の攻撃への対策としてクラスタリング等によるアプローチを想定していると推測されますが、ここではニューラルネットワークの題材にしてみます。
トレーニングデータは約 500 万行あり、以下はデータの冒頭です :

0,tcp,http,SF,215,45076,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0,0,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,162,4528,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,1,1,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,236,1228,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,2,2,1.00,0.00,0.50,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,233,2032,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,2,0.00,0.00,0.00,0.00,1.00,0.00,0.00,3,3,1.00,0.00,0.33,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,239,486,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,3,0.00,0.00,0.00,0.00,1.00,0.00,0.00,4,4,1.00,0.00,0.25,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,238,1282,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,4,4,0.00,0.00,0.00,0.00,1.00,0.00,0.00,5,5,1.00,0.00,0.20,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,235,1337,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,5,5,0.00,0.00,0.00,0.00,1.00,0.00,0.00,6,6,1.00,0.00,0.17,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,234,1364,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,6,6,0.00,0.00,0.00,0.00,1.00,0.00,0.00,7,7,1.00,0.00,0.14,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,239,1295,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,7,7,0.00,0.00,0.00,0.00,1.00,0.00,0.00,8,8,1.00,0.00,0.12,0.00,0.00,0.00,0.00,0.00,normal.
0,tcp,http,SF,181,5450,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,9,9,1.00,0.00,0.11,0.00,0.00,0.00,0.00,0.00,normal.

各フィールドの意味は以下。タイムスタンプや IP アドレスがない点には違和感がありますが、攻撃のパケット記録としては十分なフィールドが揃っています :

duration, protocol_type, service, flag, src_bytes, dst_bytes, land, wrong_fragment, urgent, hot, num_failed_logins, logged_in, num_compromised, root_shell, su_attempted, num_root, num_file_creations, num_shells, num_access_files, num_outbound_cmds, is_host_login, is_guest_login, count, srv_count, serror_rate, srv_serror_rate, rerror_rate, srv_rerror_rate, same_srv_rate, diff_srv_rate, srv_diff_host_rate, dst_host_count, dst_host_srv_count, dst_host_same_srv_rate, dst_host_diff_srv_rate, dst_host_same_src_port_rate,   dst_host_srv_diff_host_rate, dst_host_serror_rate, dst_host_srv_serror_rate, dst_host_rerror_rate, dst_host_srv_rerror_rate

そして攻撃の種類は以下の 23 種類。1999 年という年代を考慮しても少な過ぎる印象ですので、実用上は自前のログを用意する必要があります :

back, buffer_overflow, ftp_write, guess_passwd, imap, ipsweep, land, loadmodule, multihop, neptune, 
nmap, normal, perl, phf, pod, portsweep, rootkit, satan, smurf, spy,
teardrop, warezclient, warezmaster

TensorFlow による実装、トレーニングと評価

kddcup_graph2モデルについては(複雑なものも考えていたのですが)シンプルな MLP で十分でした。パケットログは 40 程度の特徴量にしかならないので、その複雑さは CNN とは比較になりません。

下左図はトレーニング損失グラフ、下右図はテストデータによる検証精度です。
テストデータは複数用意されていますが、30 万行程度のラベル付きのデータを使用しました。 精度は約 97 % が上限でした。

kddcup_loss2b

kddcup_acc_val2b
 

以上

AI導入支援 #2 ウェビナー

スモールスタートを可能としたAI導入支援   Vol.2
[無料 WEB セミナー] [詳細]
「画像認識 AI PoC スターターパック」の紹介
既に AI 技術を実ビジネスで活用し、成果を上げている日本企業も多く存在しており、競争優位なビジネスを展開しております。
しかしながら AI を導入したくとも PoC (概念実証) だけでも高額な費用がかかり取組めていない企業も少なくないようです。A I導入時には欠かせない PoC を手軽にしかも短期間で認知度を確認可能とするサービの紹介と共に、AI 技術の特性と具体的な導入プロセスに加え運用時のポイントについても解説いたします。
日時:2021年10月13日(水)
会場:WEBセミナー
共催:クラスキャット、日本FLOW(株)
後援:働き方改革推進コンソーシアム
参加費: 無料 (事前登録制)
人工知能開発支援
◆ クラスキャットは 人工知能研究開発支援 サービスを提供しています :
  • テクニカルコンサルティングサービス
  • 実証実験 (プロトタイプ構築)
  • アプリケーションへの実装
  • 人工知能研修サービス
◆ お問合せ先 ◆
(株)クラスキャット
セールス・インフォメーション
E-Mail:sales-info@classcat.com