Download presentation
Presentation is loading. Please wait.
1
Nick Guo, Ulysses Wang JavaScript 難読化解析エンジン – JDOE JavaScript の難読化解読を自動化する新しいアプローチ
2
難読化とは アンチ難読化解除 ブラウザに関する知識 一般的な難読化解読手法 JDOE デモ 課題と改善点 内容
3
Phase I Review 難読化とは
4
コードを複雑にすることで、人間によるコードの分析と検知 からコードの意図を隠蔽 著作権保護 情報の秘匿 ( 例えばメールアドレス ) 検知からの回避 難読化
5
3種類の難読化 インジェクション型の難読化 パブリックなパッカーによる難読化 Exploit Kit による難読化 難読化の種類
6
“2007年の時点で、検出された悪意あるコードの80%が難 読化” ほとんどの難読化コードは単純 インジェクション : 83%, exploit kit: <1% 複雑な難読化コードの割合は少ない 難読化の手法はより複雑化 難読化 の種類
7
JDOE Prototype アンチ難読化解除
8
重要なコードをJavaScriptコード、HTML、外部スクリプ トのなかに分割して挿入 文字列の連結 – Var temp=“get”+”Elem”+”ent”+”ById” タグの連結 –,, の中に配置 – オープンソースの Exploit kit 断片化
9
ファイルの連結 – 重要な関数やデータを他のファイルに配置 – Phoenix Exploit Kit 2.5 転送による連結 – サーバにデータを保存し、クライアントはリクエストを発行 断片化
10
外部アクセスのフェッチと接続状態の確認 Ajaxで日付をフェッチ – ツイッタートレンド 接続状態の確認 – Neosploit exploit kit 外部へのアクセス
11
ブラウザの検出 uas=navigator.userAgent; while(uai<uas.length) {xor+=uas.charCodeAt(uai++);} IE6 Firefox コンディションの確認
12
時間のチェック getUTCFullYear() getUTCMonth() getUTCDate() プラグインのチェック new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); (IE) navigator.plugins を確認 (IE 以外 ) コンディションの確認
13
指定秒後に関数を呼び出す setTimeout("alert(Hello!')",3000) setInterval("clock()",1000) イベントにより関数を呼び出す <button id="j_id" onclick="j_function2();" window.attachEvent または addEventListener プラグインから関数を呼び出す JavaScript の関数を Actionscript から呼び出す 関数の呼び出し
14
特殊なタグの使い方 CSS 内にコンテンツを保存 改ざんのチェック var hybxs = arguments.callee;hybxs = hybxs.toString(); 難読化解除ツールのバイパス
15
JDOE Prototype ブラウザに関する知識
16
ブラウザのコンポーネント
17
Webkit
18
DOM ツリー
19
Phase I Review 一般的な難読化解除手法
20
Jsunpack 軽量 Spidermonkey と Python JavaScript ファイルのフック DOM エミュレーション環境 検知モジュール (Yara) PDF と SWF のパーサ 侵入検知 (libnids) http://jsunpack.jeek.org/
21
Fireshark Firefox プラグイン メインウィンドウと子フレームのソースコード メインウィンドウと子フレームの DOM Tree Http リクエストとレスポンスのログ 悪意ある URL のチェック URL リダイレクトのグラフ http://fireshark.org/
22
Malzilla リサーチ用ツール Spidermonkey シェルコード解析 限定的な DOM サポート http://malzilla.sourceforge.net/
23
制約 Firefox ベース 限定的な DOM サポート 難読化の解除には制約 パフォーマンス
24
Phase I Review JDOE (JavaScript De-Obfuscation Engine)
25
我々に必要なエンジンは ? ハイパフォーマンス 優れた適用範囲 適切な出力とログのフォーマット 分析のためのプラットフォーム JDOE
26
JDOE は Google Chrome ベース 描画エンジン : Webkit スマートフォンブラウザでのシェア 85% デスクトップブラウザでのシェア 21% DOM ツリーとパーサを含む JavaScript エンジン : V8 JDOE
27
JDOE は Chrome 向けのテストプロジェクトがベース サーバサイドアプリケーションとして移植可能なコマン ドラインツール ブラウザの基本機能をシミュレート可能 全 DOM 機能をサポート HTML フォーマットに対する適切なフォールトトレランス HTML フォーマットの出力 プロトタイプ
28
JDOE アーキテクチャ HTMLパーサ ネットワークI/O
29
Chrome と Webkit がベース 強力なパーサ Full DOM サポート js の高速な実行速度 高い適用範囲 優れた拡張性 JDOE アドバンテージ
30
JDOE 難読化解除の手法 eval() のフック – JavaScript の内部状態を取得 最終的な DOM ツリーの表示 – 最終的な状態の取得 – Document.write はノードを DOM ツリーに追加 する 難読化解除の手法
31
Exploit kits のサンプル – exploit kits プロジェクトのトッ プ 10 からのサンプル – サンプル合計 : 22 JDOE での成功 : 20 – 適用可能率 : 90.9% Exploit kit 型への適用率
32
インジェクション型のサンプル – 難読化の ThreatID でマッチするも のからのサンプル – サンプル合計 : 9,544 JDOE での成功 : 8,450 – 適用可能率 : 88.5% インジェクション型への適用率
33
Demo デモ
34
Status and Next Step 課題と改善点
35
セキュリティ JDOE サーバをどのようにセキュアに保つか ? – アップグレードプラン – Sandbox – Javascript 監査 パフォーマンス 外部アクセスの無効化 適用範囲 特殊なサンプルには未対応 特殊なサンプルは出力フォーマットに問題がある 課題
36
PDF および SWF のパーサ シェルコードの検出 Javascript の監査 Cloud ベースでの統合 http://aceinsight.websense.com/ 自動解析プラットフォーム 改善点
37
Questions? 37 JDOE
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.