1 / 37

Nick Guo , Ulysses Wang

JavaScript 難読化解析エンジン – JDOE JavaScript の難読化解読を自動化する新しいアプローチ. Nick Guo , Ulysses Wang. 内容. 難読化とは アンチ難読化解除 ブラウザに関する知識 一般的な難読化解読手法 JDOE デモ 課題と改善点. 難読化とは. Phase I Review. 難読化. コードを複雑にすることで、人間によるコードの分析と検知からコードの意図を隠蔽 著作権保護 情報の秘匿 ( 例えばメールアドレス ) 検知からの回避. 難読化の種類. 3 種類の難読化

Download Presentation

Nick Guo , Ulysses Wang

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JavaScript 難読化解析エンジン – JDOE JavaScriptの難読化解読を自動化する新しいアプローチ Nick Guo, Ulysses Wang

  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” • タグの連結 • <div>,<p>,<textarea>の中に配置 • オープンソースの 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() • プラグインのチェック • newActiveXObject('ShockwaveFlash.ShockwaveFlash'); (IE) • navigator.plugins を確認(IE以外)

  13. 関数の呼び出し • 指定秒後に関数を呼び出す • setTimeout("alert(Hello!')",3000) • setInterval("clock()",1000) • イベントにより関数を呼び出す • <body onload="load()"> • <button id="j_id" onclick="j_function2();" • window.attachEventまたはaddEventListener • プラグインから関数を呼び出す • JavaScriptの関数をActionscriptから呼び出す

  14. 難読化解除ツールのバイパス • 特殊なタグの使い方 • CSS内にコンテンツを保存 • 改ざんのチェック • varhybxs = 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. JDOE(JavaScript De-Obfuscation Engine) Phase I Review

  25. JDOE • 我々に必要なエンジンは? • ハイパフォーマンス • 優れた適用範囲 • 適切な出力とログのフォーマット • 分析のためのプラットフォーム

  26. JDOE • JDOE はGoogle Chrome ベース • 描画エンジン: Webkit • スマートフォンブラウザでのシェア85% • デスクトップブラウザでのシェア 21% • DOM ツリーとパーサを含む • JavaScript エンジン: V8

  27. プロトタイプ • JDOE は Chrome向けのテストプロジェクトがベース • サーバサイドアプリケーションとして移植可能なコマンドラインツール • ブラウザの基本機能をシミュレート可能 • 全DOM機能をサポート • HTMLフォーマットに対する適切なフォールトトレランス • HTMLフォーマットの出力

  28. JDOE アーキテクチャ ネットワークI/O HTMLパーサ

  29. JDOE アドバンテージ • Chrome と Webkitがベース • 強力なパーサ • Full DOM サポート • jsの高速な実行速度 • 高い適用範囲 • 優れた拡張性

  30. 難読化解除の手法 • JDOE 難読化解除の手法 • eval()のフック • JavaScriptの内部状態を取得 • 最終的なDOM ツリーの表示 • 最終的な状態の取得 • Document.writeはノードをDOM ツリーに追加する

  31. Exploit kit 型への適用率 • Exploit kits のサンプル • exploit kits プロジェクトのトップ10からのサンプル • サンプル合計 : 22 JDOE での成功 : 20 • 適用可能率 : 90.9%

  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. JDOE Questions?

More Related