Skip to main content
QUICK REVIEW

[論文レビュー] Translingual Obfuscation

Pei Wang, Shuai Wang|arXiv (Cornell University)|Jan 5, 2016
Advanced Malware Detection Techniques参考文献 67被引用数 4
ひとこと要約

本稿では、CプログラムをPrologに翻訳することで、Prologの独自機能—統合とバックトラック—を活用し、データレイアウトと制御フローを隠蔽する新規なソフトウェア保護技術「トランスリンギアスなオブスカレーション」を紹介する。著者らはこの技術をBabelと呼ばれるツールに実装し、商業的ツールと比較して僅かなパフォーマンスオーヘッドで、効果的かつステルス性の高いオブスカレーションを実現した。

ABSTRACT

Program obfuscation is an important software protection technique that prevents attackers from revealing the programming logic and design of the software. We introduce translingual obfuscation, a new software obfuscation scheme which makes programs obscure by "misusing" the unique features of certain programming languages. Translingual obfuscation translates part of a program from its original language to another language which has a different programming paradigm and execution model, thus increasing program complexity and impeding reverse engineering. In this paper, we investigate the feasibility and effectiveness of translingual obfuscation with Prolog, a logic programming language. We implement translingual obfuscation in a tool called BABEL, which can selectively translate C functions into Prolog predicates. By leveraging two important features of the Prolog language, i.e., unification and backtracking, BABEL obfuscates both the data layout and control flow of C programs, making them much more difficult to reverse engineer. Our experiments show that BABEL provides effective and stealthy software obfuscation, while the cost is only modest compared to one of the most popular commercial obfuscators on the market. With BABEL, we verified the feasibility of translingual obfuscation, which we consider to be a promising new direction for software obfuscation.

研究の動機と目的

  • リバースエンジニアリングや脱オブスカレーション攻撃に耐性を持つ強固なソフトウェアオブスカレーション技術の需要が高まっているのに対応すること。
  • あるプログラミングパラダイムの固有の言語機能を活用して、別の言語で記述されたプログラムをオブスカレーションする可能性を探ること。
  • 仮想化や複雑な暗号化に依存せずに、言語翻訳と意味的オブスカレーション効果を組み合わせた実用的なオブスカレーション手法を開発すること。
  • トランスリンギアスなオブスカレーションの、最先端のリバースエンジニアリングおよびバイナリ差分ツールに対する耐性を評価すること。
  • クロスパラダイム翻訳によるオブスカレーションが、最小限のパフォーマンスコストで強力なセキュリティを実現できることを示すこと。

提案手法

  • C関数の一部をPrologの述語に翻訳することで、Prologの論理プログラミングパラダイムと実行モデルを活用すること。
  • Prologの統合とバックトラックメカニズムを活用し、静的・動的両方の解析が困難になるように、制御フローとデータレイアウトを隠蔽すること。
  • Cのメモリモデルの一部を保持しつつ、Prolog固有の意味論を導入する「オブスカレーティング翻訳」スキームを設計し、ハイブリッド実行モデルを構築すること。
  • Babelと呼ばれるツールにこのアプローチを実装し、プログラムの意味論を保持したままCコードをPrologに選択的に翻訳すること。
  • シンボリック実行とバイナリ差分ツール(BinDiff、CoP)を用いて、リバースエンジニアリングおよび類似性検出に対する耐性を評価すること。
  • 実行時間とバイナリサイズの観点から、Babelの出力結果を先端的な商業的オブスカレーターと比較することで、パフォーマンスコストを評価すること。

実験結果

リサーチクエスチョン

  • RQ1命令型のCコードをPrologのような論理プログラミング言語に翻訳することで、リバースエンジニアリングの難易度を顕著に向上させることができるか?
  • RQ2トランスリンギアスなオブスカレーションは、インサイドアウトおよびアウトサイドイン解析といった現代の脱オブスカレーション技術に対して、どの程度耐性を示すか?
  • RQ3BinDiff や CoP といったバイナリ差分ツールからの検出を回避する能力は、トランスリンギアスなオブスカレーションにおいてどの程度効果的か?
  • RQ4既存の商業的オブスカレーターと比較して、トランスリンギアスなオブスカレーションのパフォーマンスオーヘッドはどの程度か?
  • RQ5言語翻訳と言語固有の機能を組み合わせることで、従来の手法よりも強力なオブスカレーションが達成できるか?

主な発見

  • Babelは、Prologの統合とバックトラックを活用して制御フローとデータレイアウトを変換することで、Cプログラムを効果的にオブスカレーションし、リバースエンジニアリングの複雑さを顕著に向上させた。
  • Babelが生成するオブスカレートドバイナリは、BinDiff や CoP といった最先端のバイナリ差分ツールによって検出されにくく、高いステルス性と耐性を示している。
  • 仮想化ベースのオブスカレーションを標的とする脱オブスカレーション技術(例:デコードアンドディスpatch解析)は、Babelのトランスリンギアスなアプローチに対して効果を発揮しない。これは根本的なパラダイムシフトに起因する。
  • Babelが引き起こすパフォーマンスオーヘッドは僅かであり、先端的な商業的オブスカレーターと同等の水準であり、実世界での利用に実用的である。
  • CのメモリセマンティクスとPrologの論理実行モデルを融合させたハイブリッド実行モデルは、単独で使用されるいずれの言語よりも強力なオブスカレーション効果を実現した。
  • トランスリンギアスなオブスカレーションは、独自の言語機能をオブスカレーションに活用する方法が、ソフトウェア保護分野における実用的で有望な新方向性であることを示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。