SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
2016.11.26
Machine Learning 15minutes! #6
Presented by Isao Takaesu
機械学習を使ったハッキング手法
About the speaker
• 職業 : Webセキュリティエンジニア
• 所属 : 三井物産セキュアディレクション
• 趣味 : 脆弱性スキャナ作り、機械学習
• ブログ: http://www.mbsd.jp/blog/
• Black Hat Asia Arsenal, CODE BLUE / 2016
• AISECjpを主催
高江洲 勲
MBSD
タカエス イサオ
Machine Learning 15 minutes!
今回の対象
MBSD
Reflected Cross-Site Scripting
(RXSS)
Machine Learning 15 minutes!
RXSSの例:超脆弱なアプリ
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 3 - RXSS</title>
</head>
<body>
<input type="text" value="testData">
</body>
</html>
http://xxx/case3/?input=testData
入力値がINPUTタグのVALUE属性内に出力
Machine Learning 15 minutes!
RXSSの例: 攻撃された様子
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 3 - RXSS</title>
</head>
<body>
<input type="text"
value=""/><script>alert('XSS');</script>">
</body>
</html>
http://xxx/case3/?input="/><script>alert(‘XSS');</script>
HTML内へのスクリプト埋め込み
Machine Learning 15 minutes!
RXSSの発現例
MBSD
<textarea>xxx</textarea>
<textarea>xxx</textarea><img src=x onerror=alert(0);></textarea>
・・・
<!-- xxx -->
<!-- xxx --><script>alert(0);</script>-->
・・・
<input value=“xxx” />
<input value=“xxx”><script>alert(0);</script>” />
・・・
var hoge = [‘log’,’xxx’,’red’];
var hoge = [‘log’,’xxx’]; alert(0);//’,’red’];
HTMLやJavaScript上の様々な場所で発現
構文の理解が重要
Machine Learning 15 minutes!
MBSD
機械によるHTML/JavaScript構文の理解
LSTMを使う
Machine Learning 15 minutes!
LSTMの学習データ(HTML)
MBSD
<abbr class="" data-utime="" title=""></abbr>
<abbr class='' title=''></abbr>
<abbr data-utime='' title=''></abbr>
・・・
<input name="" type="" value=""/>
<input alt="" id="" onclick="" src="" type=""/>
<input alt='' id="" src='' type=''/>
<input alt='' name='' src='' type=''/>
・・・
<video autoplay="" loop="" muted=""></video>
<video class="" height="" id="" width=""></video>
<video src='' tabindex=''></video>
<video src=''></video>
2万ページ分のHTML構文 (約12,000種類)
Machine Learning 15 minutes!
MBSD
_satellite.pageBottom();']
(function(window) {
var _gaq = _gaq || [];
var methods = ['log', 'dir', 'trace'];
if (typeof window.console === 'undefined') {
window.console = {};
}
for (var i in methods) {
if (!(methods[i] in window.console)) {
window.console[methods[i]] = function() {};
}
}
}(window));
LSTMの学習データ(JavaScript)
1万ページ分のJavaScript構文
Machine Learning 15 minutes!
学習済みLSTMが生成した構文(一例)
MBSD
シード 生成構文
<textarea cols="60">xxx </textarea>
<!-- mbsdtest xxx -->
<input type="" value=“xxx ">
var hoge = ['log', ‘xxx red’];¥r¥n
/* mbsdtest xxx */
function(){ xxx }¥r¥n
シードに対応した構文生成が可能
Machine Learning 15 minutes!
RXSSの例:ちょっとセキュアなアプリ
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 4 - RXSS</title>
</head>
<body>
<input type="text" value=""/> alert('XSS');">
</body>
</html>
SCRIPTタグのサニタイズ
http://xxx/case4/?input="/><script>alert(‘XSS');</script>
Machine Learning 15 minutes!
RXSSの例:攻撃された様子
MBSD
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Case 4 - RXSS</title>
</head>
<body>
<input type="text" value=""onmouseout=alert('XSS')"">
</body>
</html>
サニタイズを回避してスクリプト埋め込み
http://xxx/case4/?input=“onmouseout=alert(‘XSS')”
Machine Learning 15 minutes!
サニタイズの例
MBSD
<script>alert(0);</script>
<block>alert(0);</block>
・・・
<script>alert(0);</script>
(delete)alert(0);</script>
・・・
“><script>alert(0);</script>
&quot;&gt;&lt;script&gt;alert(0);&lt;/script&gt;
・・・
<script>alert(0);</script>
<script>alert(0);</script>
多種多様なサニタイズパターンが存在
サニタイズの回避テクニックの習得が必要
Machine Learning 15 minutes!
機械によるサニタイズの回避
MBSD
多層パーセプトロン(MLP)、Q学習を使う
Machine Learning 15 minutes!
MBSD
・
・
・
・
・
・
属性値
JS内
・・・
出力箇所
MLP
タグの外
“sCriPt”
他のタグ
URL
encode
攻撃パターン
Event
handler
・
・
・
Q学習
状態観測
サニタイズ回避を実現するモデル
・
・
・
評価
重み更新
“ ⇒ &quot;
< ⇒ &lt;
・・・
サニタイズ
> ⇒ &gt;
攻撃試行を繰り返しながらサニタイズ回避パターンを学習
Machine Learning 15 minutes!
RXSS検出のデモ
MBSD
Target:webseclab
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
Machine Learning 15 minutes!
RXSS検出のデモ
MBSD
Target:webseclab
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<p>
<FORM>
<textarea name="in" rows="5" cols="60">saivs12345
</textarea>
<p>
http://xxx/reflect/textarea1?in=saivs12345
出力箇所 :TEXTAREAタグ内
サニタイズ:なし
Case1:正常リクエスト送信時
Machine Learning 15 minutes!
MBSD
<!doctype html><html><head><title>Reflected XSS in
textarea (textarea1)</title></head><body>
<H2>Textarea injection test</H2>
<p>
<FORM>
<textarea name="in" rows="5" cols="60"></textarea>7Q7p
N"MBPcc'PA6tz<script>alert(3122);WKr8J</script>fowCP</
textarea>
<p>
http://xxx/reflect/textarea1?in=%3C/textarea%3E7Q7pN%22MBPcc'
PA6tz%3Cscript%3Ealert(3122);WKr8J%3C/script%3EfowCP
試行回数:1回
Case1:攻撃リクエスト送信時
Machine Learning 15 minutes!
MBSD
Case1:攻撃の様子
Machine Learning 15 minutes!
https://www.youtube.com/watch?v=6UHbMGdqr_0
RXSS検出のデモ
MBSD
Target:webseclab
Case
サニタ
イズ
出力箇所/サニタイズ
/reflect/textarea1 × TEXTAREA タグ内
/reflect/onmouseover 〇
INPUTタグの属性値
入力値からタグ閉じが削除
Machine Learning 15 minutes!
MBSD
<!doctype html><html>
<head><title>Reflected XSS - attribute injection in ta
gs (dq.2)</title></head><body>
<H2>Update Your Preferences</H2><p>
<FORM>
Homepage: <input value=""><script>alert()" name="in" s
ize="40"><BR>
http://xxx/xss/reflect/onmouseover?in=”><script>alert()</script>
出力箇所 :INPUTタグ内
サニタイズ:タグ閉じの削除
Case2:正常リクエスト送信時
Machine Learning 15 minutes!
MBSD
<!doctype html><html>
<head><title>Reflected XSS - attribute injection in
tags (dq.2)</title></head><body>
<H2>Update Your Preferences</H2><p>
<FORM>
Homepage: <input value=""> <option s onmouseover=alert
(3122);//" name="in" size="40"><BR>
http://xxx/xss/reflect/onmouseover?in=%22%3E%3C/option%3E%3
Coption%20s%20onmouseover=alert(3122);//
試行回数:3回
Case2:攻撃リクエスト送信時
Machine Learning 15 minutes!
MBSD
Case2:攻撃の様子
Machine Learning 15 minutes!
https://www.youtube.com/watch?v=-r3C1moUVqU
Download “.PDF” version of this document:
≫ https://machine-learning15minutes.connpass.com/event/43004/

Mais conteúdo relacionado

Mais procurados

HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
Yosuke HASEGAWA
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
Hiroshi Tokumaru
 
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
CODE BLUE
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
Hiroshi Tokumaru
 

Mais procurados (20)

XSS再入門
XSS再入門XSS再入門
XSS再入門
 
ハニーポッター技術交流会
ハニーポッター技術交流会ハニーポッター技術交流会
ハニーポッター技術交流会
 
(A7)cross site scripting
(A7)cross site scripting(A7)cross site scripting
(A7)cross site scripting
 
いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方いまさら聞けないパスワードの取り扱い方
いまさら聞けないパスワードの取り扱い方
 
次世代プラットフォームのセキュリティモデル考察(前編)
次世代プラットフォームのセキュリティモデル考察(前編)次世代プラットフォームのセキュリティモデル考察(前編)
次世代プラットフォームのセキュリティモデル考察(前編)
 
ブラウザとWebサーバとXSSの話@Shibuya.xss
ブラウザとWebサーバとXSSの話@Shibuya.xssブラウザとWebサーバとXSSの話@Shibuya.xss
ブラウザとWebサーバとXSSの話@Shibuya.xss
 
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript APIHTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
HTML5のセキュリティ もうちょい詳しく- HTML5セキュリティその3 : JavaScript API
 
Owasp top10 HandsOn
Owasp top10 HandsOnOwasp top10 HandsOn
Owasp top10 HandsOn
 
CSP Lv.2の話
CSP Lv.2の話CSP Lv.2の話
CSP Lv.2の話
 
今日からはじめるCSP(Kernel/VM@Okinawa)
今日からはじめるCSP(Kernel/VM@Okinawa)今日からはじめるCSP(Kernel/VM@Okinawa)
今日からはじめるCSP(Kernel/VM@Okinawa)
 
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
20181117-一般的な脆弱性の概要・対策を知り、ZAPで見つけてみよう!
 
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
X-XSS-Nightmare: 1; mode=attack ~XSSフィルターを利用したXSS攻撃~
 
20190208 脆弱性と共生するには
20190208 脆弱性と共生するには20190208 脆弱性と共生するには
20190208 脆弱性と共生するには
 
安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014安全なPHPアプリケーションの作り方2014
安全なPHPアプリケーションの作り方2014
 
Proxy War EPISODEⅡ
Proxy War EPISODEⅡProxy War EPISODEⅡ
Proxy War EPISODEⅡ
 
SecurityCamp2015「バグハンティング入門」
SecurityCamp2015「バグハンティング入門」SecurityCamp2015「バグハンティング入門」
SecurityCamp2015「バグハンティング入門」
 
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
[CB16] 機械学習でWebアプリケーションの脆弱性を見つける方法 by 高江須 勲
 
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
 
Aiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみるAiにwebアプリ診断をやらせてみる
Aiにwebアプリ診断をやらせてみる
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
 

Semelhante a 機械学習を使ったハッキング手法

文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
純生 野田
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
堅牢性を高めるためのInfrastructure as Code
堅牢性を高めるためのInfrastructure as Code堅牢性を高めるためのInfrastructure as Code
堅牢性を高めるためのInfrastructure as Code
Toru Makabe
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
Genta Watanabe
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
Taku AMANO
 

Semelhante a 機械学習を使ったハッキング手法 (20)

シンプルな9つのサンプルで学ぶJava Script初心者のためのAngularJS超入門ハンズオン
シンプルな9つのサンプルで学ぶJava Script初心者のためのAngularJS超入門ハンズオンシンプルな9つのサンプルで学ぶJava Script初心者のためのAngularJS超入門ハンズオン
シンプルな9つのサンプルで学ぶJava Script初心者のためのAngularJS超入門ハンズオン
 
Do not use document.write
Do not use document.writeDo not use document.write
Do not use document.write
 
New Layers of Web Application Security
New Layers of Web Application SecurityNew Layers of Web Application Security
New Layers of Web Application Security
 
Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
 
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティングMTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
MTのダイナミック処理(PHP)を高速化する@サーバーサイドスクリプティング
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
堅牢性を高めるためのInfrastructure as Code
堅牢性を高めるためのInfrastructure as Code堅牢性を高めるためのInfrastructure as Code
堅牢性を高めるためのInfrastructure as Code
 
About GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginnersAbout GStreamer 1.0 application development for beginners
About GStreamer 1.0 application development for beginners
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
Building asp.net core blazor and elasticsearch elasticsearch using visual stu...
 
20141017 introduce razor
20141017 introduce razor20141017 introduce razor
20141017 introduce razor
 
TerraformでECS+ECRする話
TerraformでECS+ECRする話TerraformでECS+ECRする話
TerraformでECS+ECRする話
 
No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門No.2 超初心者向け セキュリティ入門
No.2 超初心者向け セキュリティ入門
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
WebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft AzureWebSocket Chat App Hands On on Microsoft Azure
WebSocket Chat App Hands On on Microsoft Azure
 
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
 

Mais de Isao Takaesu

Mais de Isao Takaesu (11)

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セキュリティの自動化
 
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アプリケーションの脆弱性を見つける方法
 

機械学習を使ったハッキング手法