機械学習を用いた
異常検知入門
セキュリティキャンプ2015全国大会終了生
伊東 道明
自己紹介
• 伊東 道明
• 法政大学 理工学部 3年
• Cpaw 代表
• ICTSC 運営
• セキュリティキャンプ2015修了生
• 某社でお仕事のお手伝い中
2
自己紹介
• 分野:ML/インフラ/セキュリティなど
• エディタ:emacs/sublimetext
• 言語:python
• 最近やってること:SDN/Webサーバー開発
• 趣味:自転車始めました
3
セキュリティキャンプの紹介
• IPAが主催しているセキュリティ合宿
• タダでご飯が食べられる!
• 業界の有名人に会える!
• もちろん楽しい講義もたくさん!
• 22歳以下の学生は是非!
4
Cpawの紹介
• IT団体
• 面白そうなことをお金の限りやる
• LT大会、CTF、競プロなども
• 主に工学院大学、法政大学で活動
• 202教室で「走るIoT自動販売機」や
「CpawCTFサイト」などを展示中
5
アジェンダ
1. 機械学習について
2. セキュリティについて
3. K-meansを使った異常検知
4. Spectral clusteringの提案
5. Deep learningの提案
6. まとめ
6
7
機械学習について
機械学習とは
• 人間が自然に行っている学習能力を、コ
ンピュータで実現しようとする技術。
• 様々なデータをコンピュータに反復学習
させ、データに潜在的なパターンを見つ
け出す。
8
機械学習の主な目的
• 未来予測
• クラス分類
• クラスタリング
• などなど…
9
1.未来予測
• 今までのデータから、未来のデータの値
を予測する。
• 線形回帰やランダムフォレストなど。
10
未来予測の例
• 来客者数の予測
• 機械故障率の予測
• 売上高や株価の予測
11
2.クラス分類
• データを幾つかの結果に分類する。
• SVM、ニューラルネットワークなど。
12
クラス分類の例
• 手書き文字認識
• 植物病害診断
• Webページのジャンル分類
13
3.クラスタリング
• 大量のデータを、任意のクラスタに分け
る。
• K-means法、Ward法など。
14
クラスタリングの例
• 広告のクリック数情報によるユーザの
傾向分析
− アドテクに応用可能
• レコメンドシステム
15
16
異常検知について
異常検知とは
• データの中で異常なデータを検出する。
17
異常検知例
• 外れ値検出
• 変化検知
18
異常検知の既存手法例
• K-meansによる異常検知
− IDSなど
• 単純ベイズ法による異常検知
− 迷惑メールフィルタなど
19
20
セキュリティについて
セキュリティの重要性
• 近年、IoT化などが進み、セキュリティの
重要性が高まっている。
• 攻撃手法が日々進化してきており、防御
が難しくなりつつある。
21
機械学習を用いた防御手法
• シグネチャによるパターンマッチングな
どの対策では対策が追いつかず不十分な
ときも…
• 機械学習を用いた対策が有効?
22
機械学習を用いる利点(例)
• ICMPパケットに長い文字列をくっつけて
送るとシェルを奪える脆弱性が見つかっ
たとする。
23
機械学習を用いる利点(例)
• シグネチャ型などの防御手法では異常を
検知できず、攻撃を受けてしまう。
• 機械学習を用いた防御手法なら、未知の
攻撃でも異常と判断し、防ぐことができ
る可能性がある。
24
ここまでのまとめ
• 機械学習が様々な分野で活躍している。
• サイバー攻撃の攻撃力が年々増している。
• セキュリティに機械学習を活用すること
で、防御力が上がる可能性がある。
25
26
ここから具体例
27
K-meansを用いて
異常を検知する
28
K-meansについて
K-means
• とても単純なクラスタリング手法
• 日本語ではK平均法と呼ぶ
29
K-means
• 以下のようにデータがある
30特徴x
特徴y
K-means
• クラスタの中心点をランダムに決める
31特徴x
特徴y
K-means
• 各点を一番近い中心点のクラスタに所属させる
32特徴x
特徴y
K-means
• クラスタの中心点(重心)を更新する
33特徴x
特徴y
K-means
• 各点を一番近い中心点のクラスタに所属させる
34特徴x
特徴y
K-means
• これを繰り返し、変化がなくなればクラスタリング終了
35特徴x
特徴y
K-meansで異常検知
36特徴x
特徴y
異常なクラスタ
とする
K-meansで異常検知
37特徴x
特徴y
新しいデータ
K-meansで異常検知
38特徴x
特徴y
距離が一番近い
クラスタ
K-meansで異常検知
39特徴x
特徴y
異常なデータ!
40
実際にやってみた
K-meansによる攻撃検知
• K-meansによる異常検知で攻撃パケット
を検知してみた。
• 使用したデータセット:
kddcup99 dataset
− 22種類の攻撃パケット+通常パケットのデータセット
− データ数は約50万
41
K-meansによる攻撃検知
1. パケットデータに前処理をかける。
2. K-meansによりクラスタリングする。
3. 精度を求める。
42
学習データの前処理
• それぞれの特徴は0か1の2値であったり、
4桁以上の大きな値である場合もある。
− ポート番号やフラグの値など
• そのまま学習した場合、K-meansをかけ
るときに各次元の距離尺度が異なる。
43
イメージ図
44
10
0 100
イメージ図
45
10
0 100
縦軸でデータがばらついていても
無視されてしまう
学習データの前処理
• 距離尺度を一定にするため、学習データ
への前処理が必要不可欠。
• 正規化、Normalizing
• 今回は、各特徴の偏差値を出した。
46
Normalization手順①
• 特徴xの平均μを以下の式で求める。
47
Normalization手順②
• 特徴xの標準偏差σを以下の式で求める。
48
Normalization手順③
• 特徴xの各データの偏差値Tを以下の式で
求める。
49
学習データの前処理
• 標準偏差が0の特徴が2つ現れた。
• すべての要素が0であったため、学習デー
タから外した。
50
データの学習
• Pythonにて実装。
• 前処理のコードと学習時のコードは以下
に置いてあります。
https://github.com/palloc/Clustering-samples
51
学習結果
前処理を行わずにK-meansによる攻撃
パケットの検知をした結果:
• Accuracy(精度) = 71.059%
• False-positive(誤検知) = 6.021%
• False-negative(見逃し) = 22.92%
52
学習結果
前処理を行い、K-meansによる攻撃パケッ
トの検知をした結果:
• Accuracy(精度) = 80.295%
• False-positive(誤検知) = 19.364%
• False-negative(見逃し) = 0.34%
53
精度について
• Accuracy
− 全体の精度。高いほど良い。
• False positive
− 正常なパケットを異常とする。
− 低いほど実運用しやすい。
• Flase negative
− 異常な(攻撃)パケットを正常とする。
− 低くないと使い物にならない。
54
学習結果
• 攻撃パケットの見逃し率が0.34%ととても
良い結果を得られた。
• だが、実運用で用いるには誤検知率が
19%とやや高く、改善したい。
55
なぜ誤検知率が高いのか
• K-meansは、線形分離可能な問題に対し
ては強いが、線形分離不可能なものに関
してはあまり強くない。
56
線形分離可能とは
57
異常デー
タ
特徴x
特徴y
通常デー
タ
線形分離可能とは
58特徴x
特徴y
1直線で分けられる
実際のデータ例
59特徴x
特徴y
実際のデータ例
60特徴x
特徴y
線形分離不可能なので、
誤検知が多くなってしまう。
線形分離不可能なら?
• 線形分離可能な空間に写像する。
• K-means以外の手法を考える。
61
実際のデータ例
62
X
Y
S
T
元の空間 写像後の空間
実際のデータ例
63
X
Y
S
T
元の空間 写像後の空間
線形分離可能に!
今回写像に用いる手法
• Spectral Clustering
64
Spectral Clustering
• トポロジ的アプローチを取るクラスタ
リング手法。
• 今回は最もベースとなるアルゴリズム
のみを紹介。
※数学要素が強いので、意味については省略
65
Spectral Clustering
1. 各データをn次元の空間の点と見立てる。
例)2次元の場合
66
データ1
データ2
データ3
Spectral Clustering
2. 各データのユークリッド距離を行列W
とする。
67
Spectral Clustering
3. Wの行ごとの和を求め、対角成分にした
行列(他の要素は0)をDとする。
68
Spectral Clustering
4. graph-Laplacianと呼ばれる行列Lを、
以下のように求める。
69
Spectral Clustering
5. Lの固有ベクトルViをクラスタ数mだけ
求める。(固有ベクトルの求め方は省略)
70
…
Spectral Clustering
6. Viを連結する。
71
…
Spectral Clustering
7. 行ごとに一つのデータの特徴とみなし、
クラスタリングを行う。
72
これがデータ1
の特徴
Spectral Clustering
• 特徴として、次元数がクラスタ数mに圧縮
されていることが分かる。
• 精度あがりそうじゃない?
73
線形分離不可能なら?
• 線形分離可能な空間に写像する。
• クラスタリング以外の手法を考える。
74
クラスタリング以外の手法
ディープラーニング流行ってるし
ディープラーニングやろうぜ!
by某友人
75
Deep learningの検討
• 日本語では深層学習。
• 「ニューラルネットワーク」と呼ばれる
人間の脳の仕組みをコンピュータで再現
するモデルを用いた機械学習のこと。
76
Deep learningの検討
77特徴x
特徴y
K-means
Deep learningの検討
78特徴x
特徴y
Deep
Learning
※イメージ
Deep learningの検討
• 時間がないので詳しいアルゴリズムの
説明は省略。
• Pythonによる深層学習入門記事を書いて
いるので参考にしてください。
http://palloc.hateblo.jp/entry/2016/08/02/213847
79
Deep learningの検討
• 異常検知に用いる際の懸念点
− 精度がでても、処理がブラックボックスなため結果
の意味を持たせることが難しい。
− 環境ごとに最適なモデルを作るのにとても時間が掛
かるため、ハードルが高め。
− 過学習などが懸念される
80
他の手法
• サポートベクターマシン
• 近傍法
• などなど多数…
81
まとめ
• K-meansで割と実用的な精度が出た。
• Spectral Clusteringを用いると別空間へ
写像するのでさらに精度が上がりそう。
• Deep learningを使うには越えるべき壁が
いくつかある。
• 他にもたくさん異常検知手法がある。
82
参考文献(面白いです)
• A Tutorial on Spectral Clustering
http://www.cs.cmu.edu/~aarti/Class/10701/readings/Luxburg06_TR.pdf
• Anomary Detection in Deep Learning
http://www.slideshare.net/agibsonccc/anomaly-detection-in-deep-learning-
62473913
83

機械学習を用いた異常検知入門

Editor's Notes

  • #37 本当はLabel スプレッディングなどの手法がありますがとりあえず決め打ちということで