SlideShare a Scribd company logo
1 of 44
Download to read offline
2017.11.25
ハニーポッター技術交流会 #2
Presented by Isao Takaesu
機械学習によるログ分析入門の入門
- キャプチャしたパケットから攻撃の兆候を探る -
About the speaker
• 職業 : セキュリティエンジニア
• 所属 : 三井物産セキュアディレクション
• 趣味 : 脆弱性スキャナ作り、機械学習
• ブログ: http://www.mbsd.jp/blog/
• Black Hat Asia Arsenal, CODE BLUE
情報セキュリティEXPO, PYCON JP …
• 勉強会「AISECjp」を主催
高江洲 勲
Takaesu Isao
ハニーポッター技術交流会
Twitter: @bbr_bbq
1
ハニーポッター技術交流会
概要
2
攻撃の痕跡を含む大量のパケットを
k-means(k平均法)でクラスタリングし、
通信(正常/攻撃)の種類を推定する。
ハニーポッター技術交流会
ログ分析の手順
3
1. ログの取得と前処理
2. k-meansのパラメータ決定
3. クラスタリングの実行
4. 攻撃の種類を推定
ハニーポッター技術交流会
ログ分析の手順
4
1. ログの取得と前処理
2. k-meansのパラメータ決定
3. クラスタリングの実行
4. 攻撃の種類を推定
ハニーポッター技術交流会
1. ログの取得と前処理
5
1.1. データセットの取得
1.2. 特徴選択
1.3. 正規化
ハニーポッター技術交流会
1. ログの取得と前処理
6
1.1. データセットの取得
1.2. 特徴選択
1.3. 正規化
ハニーポッター技術交流会
1.1. データセットの取得(1/5)
7
・使用するデータセット
http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html
ハニーポッター技術交流会
1.1. データセットの取得(2/5)
8
・特徴量(1/3)
http://kdd.ics.uci.edu/databases/kddcup99/task.html
ハニーポッター技術交流会
1.1. データセットの取得(3/5)
9
・特徴量(2/3)
ハニーポッター技術交流会
1.1. データセットの取得(4/5)
10
・特徴量(3/3)
ハニーポッター技術交流会
1.1. データセットの取得(5/5)
11
・kddcup.data_10_percent.gz
特徴数 :41
データ数:約50万件 ⇒ 計算時間の都合上「150件」に低減
ハニーポッター技術交流会
1. ログの取得と前処理
12
1.1. データセットの取得
1.2. 特徴選択
1.3. 正規化
ハニーポッター技術交流会
1.2. 特徴選択(Feature Selection)
13
分析に貢献すると推測される特徴量を選択。
次元削減の効果(精度向上、計算量の低減など)
・選択した特徴量
ハニーポッター技術交流会
1. ログの取得と前処理
14
1.1. データセットの取得
1.2. 特徴選択
1.3. 正規化
ハニーポッター技術交流会
1.3. 正規化(Normalization)
15
異なる種類のデータを単一の尺度に纏める。
学習速度の向上や精度向上などが見込める。
ハニーポッター技術交流会
ログ分析の手順
16
1. ログの取得と前処理
2. k-meansのパラメータ決定
3. クラスタリングの実行
4. 攻撃の種類を推定
ハニーポッター技術交流会
2. k-meansのパラメータ決定
17
2.1. k-meansとは?
2.2. エルボー法
2.3. シルエット分析
ハニーポッター技術交流会
2. k-meansのパラメータ決定
18
2.1. k-meansとは?
2.2. エルボー法
2.3. シルエット分析
ハニーポッター技術交流会
2.1. k-meansとは?(1/6)
19
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を求めて[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
ハニーポッター技術交流会
2.1. k-meansとは?(2/6)
20
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を求めて[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
重心点
重心点
重心点
ハニーポッター技術交流会
2.1. k-meansとは?(3/6)
21
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を求めて[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
ハニーポッター技術交流会
2.1. k-meansとは?(4/6)
22
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を更新して[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
ハニーポッター技術交流会
2.1. k-meansとは?(5/6)
23
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を更新して[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
ハニーポッター技術交流会
2.1. k-meansとは?(6/6)
24
予め決めたクラスタ数(K)に従い、近い属性のデータをグループ化。
1. 初期値となる重心点を(K個)ランダムに決定
2. 各データから最近傍の重心点を求めてクラスタを構成
3. クラスタ毎に重心点を更新して[2]を再度実行
※ [2]~[3]の処理を終了条件まで繰り返す
クラスタ1
クラスタ2
クラスタ3
ハニーポッター技術交流会
2. k-meansのパラメータ決定
25
2.1. k-meansとは?
2.2. エルボー法
2.3. シルエット分析
ハニーポッター技術交流会
2.2. エルボー法(Elbow method)
26
最適なクラスタ数(K)の目安を付ける方法。
・クラスタ毎のSSE(クラスタ内誤差平方和)値をプロットした図を基に、
・SSE値が「肘」のように曲がった点を最適なクラスタ数とする。
※特徴が似通ったクラスタの場合は曲線が緩やかになるため、目安が付け難い。
ハニーポッター技術交流会
2. k-meansのパラメータ決定
27
2.1. k-meansとは?
2.2. エルボー法
2.3. シルエット分析
ハニーポッター技術交流会
2.3. シルエット分析(Silhouette analysis)(1/3)
28
最適なクラスタ数(K)の目安を付ける方法。
・クラスタ内のサンプル密度(凝集度)を可視化し、
・クラスタ間の距離が離れている場合に最適なクラスタ数とする。
※silhouette coefficientが1に近いほど、他のクラスタと離れていることを示す。
ハニーポッター技術交流会
2.3. シルエット分析(Silhouette analysis)(2/3)
29
K=2 K=3
K=4 K=6K=5
ハニーポッター技術交流会
2.3. シルエット分析(Silhouette analysis)(3/3)
30
K=2 K=3
K=4 K=6K=5
ハニーポッター技術交流会
ログ分析の手順
31
1. ログの取得と前処理
2. k-meansのパラメータ決定
3. クラスタリングの実行
4. 攻撃の種類を推定
ハニーポッター技術交流会
3. クラスタリングの実行(1/2)
32
https://github.com/13o-bbr-bbq/machine_learning_security/tree/master/Analytics
ハニーポッター技術交流会
3. クラスタリングの実行(2/2)
33
・クラスタリング結果の可視化(matplotlib)
ハニーポッター技術交流会
ログ分析の手順
34
1. ログの取得と前処理
2. k-meansのパラメータ決定
3. クラスタリングの実行
4. 攻撃の種類を推定
ハニーポッター技術交流会
4. 攻撃の種類を推定(1/6)
35
root_shell
duration
“root_shell”, ”duration”が高い。
cluster1はバッファオーバーフロー?
ハニーポッター技術交流会
4. 攻撃の種類を推定(2/6)
36
serror_rate
same_src_port_rate
“serror_rate”, ”same_src_port_rate”が高い。
cluster2はNmap, SYN flood?
ハニーポッター技術交流会
4. 攻撃の種類を推定(3/6)
37
rerror_rate
num_failed_logins
“rerror_rate”, ”num_failed_logins”が高い。
cluster3はパスワード推測?
ハニーポッター技術交流会
4. 攻撃の種類を推定(4/6)
38
wrong_fragment
“wrong_fragment”が高い。
cluster4はTeardrop?
ハニーポッター技術交流会
4. 攻撃の種類を推定(5/6)
39
特に特徴に偏りがない。
cluster0は正常通信?
ハニーポッター技術交流会
4. 攻撃の種類を推定(6/6)
40
・cluster0: 正常通信
・cluster1: バッファオーバーフロー
・cluster2: Nmap, SYN Flood
・cluster3: パスワード推測
・cluster4: Teardrop
攻撃の当たりをつけ、他ログを含め更に詳細に分析。
対策の参考情報として活用。
ハニーポッター技術交流会
結論
41
K平均法を使用することで、攻撃の種類を推定可能。
・大量のログを短時間で分析可能(実装も容易)。
・クラスタ数の目安が重要。
* エルボー法、シルエット分析を活用。
・最後に攻撃の種類を推定するのは人間。
* 推定にはドメインの知識が必須。
ハニーポッター技術交流会
余談
42
・tcpdump2gureKDDCup99
pcapファイルをKDD Cup 1999フォーマットに変換。
Bro IDSのプラグイン。
・Scapy
Pythonパッケージ。
パケット解析を行うことが可能。
Download “.PDF” version of this document:
≫ https://www.slideshare.net/babaroa

More Related Content

What's hot

フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!zaki4649
 
「教養としてのサイバーセキュリティ」講座
「教養としてのサイバーセキュリティ」講座「教養としてのサイバーセキュリティ」講座
「教養としてのサイバーセキュリティ」講座Riotaro OKADA
 
Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)FFRI, Inc.
 
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADAビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADARiotaro OKADA
 
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-Asuka Nakajima
 
アプリケーションデリバリーのバリューチェイン
アプリケーションデリバリーのバリューチェインアプリケーションデリバリーのバリューチェイン
アプリケーションデリバリーのバリューチェインRiotaro OKADA
 
2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3min2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3minShinichiro Kawano
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよMasakazu Ikeda
 

What's hot (11)

フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!フリーでやろうぜ!セキュリティチェック!
フリーでやろうぜ!セキュリティチェック!
 
「教養としてのサイバーセキュリティ」講座
「教養としてのサイバーセキュリティ」講座「教養としてのサイバーセキュリティ」講座
「教養としてのサイバーセキュリティ」講座
 
Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)Fighting advanced malware using machine learning (Japanese)
Fighting advanced malware using machine learning (Japanese)
 
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADAビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
 
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
2014年10月江戸前セキュリティ勉強会資料 -セキュリティ技術者になるには-
 
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
 
Pycon mini20190511 pub
Pycon mini20190511 pubPycon mini20190511 pub
Pycon mini20190511 pub
 
アプリケーションデリバリーのバリューチェイン
アプリケーションデリバリーのバリューチェインアプリケーションデリバリーのバリューチェイン
アプリケーションデリバリーのバリューチェイン
 
~外注から内製へ~ なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
~外注から内製へ~ なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?~外注から内製へ~ なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
~外注から内製へ~ なぜ今、セキュリティ人材の育成がこんなにも叫ばれているのだろうか?
 
2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3min2019 0917 nw-jaws_f-secure3min
2019 0917 nw-jaws_f-secure3min
 
脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ脆弱性検査ツールってどうよ
脆弱性検査ツールってどうよ
 

More from Isao Takaesu

Deep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalDeep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalIsao Takaesu
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールIsao Takaesu
 
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -Isao Takaesu
 
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化Isao Takaesu
 
脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -Isao Takaesu
 
RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -Isao Takaesu
 
RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -Isao Takaesu
 
Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Isao Takaesu
 
Discussion AIの脆弱性について
Discussion AIの脆弱性についてDiscussion AIの脆弱性について
Discussion AIの脆弱性についてIsao Takaesu
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"Isao Takaesu
 
機械学習を使ったハッキング手法
機械学習を使ったハッキング手法機械学習を使ったハッキング手法
機械学習を使ったハッキング手法Isao Takaesu
 
ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章Isao Takaesu
 
CODE BLUE 2016 - Method of Detecting Vulnerability in Web Apps
CODE BLUE 2016 - Method of Detecting Vulnerability in Web AppsCODE BLUE 2016 - Method of Detecting Vulnerability in Web Apps
CODE BLUE 2016 - Method of Detecting Vulnerability in Web AppsIsao Takaesu
 
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法Isao Takaesu
 
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -Isao Takaesu
 
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)Isao Takaesu
 
Aiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるAiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるIsao Takaesu
 

More from Isao Takaesu (17)

Deep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 ArsenalDeep Exploit@Black Hat Europe 2018 Arsenal
Deep Exploit@Black Hat Europe 2018 Arsenal
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
 
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
 
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化
 
脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -脆弱性診断データの活用例 - Webアプリケーション診断編 -
脆弱性診断データの活用例 - Webアプリケーション診断編 -
 
RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -RECOMMENDER for Web security engineers - 中級編 -
RECOMMENDER for Web security engineers - 中級編 -
 
RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -RECOMMENDER for Web security engineers - 初級編 -
RECOMMENDER for Web security engineers - 初級編 -
 
Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法Convolutional Neural Networkに対する攻撃手法
Convolutional Neural Networkに対する攻撃手法
 
Discussion AIの脆弱性について
Discussion AIの脆弱性についてDiscussion AIの脆弱性について
Discussion AIの脆弱性について
 
introduce "Stealing Machine Learning Models via Prediction APIs"
introduce "Stealing Machine Learning Models  via Prediction APIs"introduce "Stealing Machine Learning Models  via Prediction APIs"
introduce "Stealing Machine Learning Models via Prediction APIs"
 
機械学習を使ったハッキング手法
機械学習を使ったハッキング手法機械学習を使ったハッキング手法
機械学習を使ったハッキング手法
 
ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章ITエンジニアのための機械学習理論入門 第5章
ITエンジニアのための機械学習理論入門 第5章
 
CODE BLUE 2016 - Method of Detecting Vulnerability in Web Apps
CODE BLUE 2016 - Method of Detecting Vulnerability in Web AppsCODE BLUE 2016 - Method of Detecting Vulnerability in Web Apps
CODE BLUE 2016 - Method of Detecting Vulnerability in Web Apps
 
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法
CODE BLUE 2016 - 機械学習でWebアプリケーションの脆弱性を見つける方法
 
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
機械学習でWebアプリの脆弱性を見つける - Reflected XSS 編 -
 
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)
AISECjp SAIVS(Spider Artificial Intelligence Vulnerability Scanner)
 
Aiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるAiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみる
 

ハニーポッター技術交流会