IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ファウンデーション オブ スンシル ユニヴァーシティ インダストリー コーポレーションの特許一覧

特表2025-504939難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法
<>
  • 特表-難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法 図1
  • 特表-難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法 図2
  • 特表-難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法 図3
  • 特表-難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法 図4
  • 特表-難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-19
(54)【発明の名称】難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法
(51)【国際特許分類】
   G06F 21/14 20130101AFI20250212BHJP
【FI】
G06F21/14
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024544774
(86)(22)【出願日】2022-06-23
(85)【翻訳文提出日】2024-07-26
(86)【国際出願番号】 KR2022008971
(87)【国際公開番号】W WO2023177020
(87)【国際公開日】2023-09-21
(31)【優先権主張番号】10-2022-0034088
(32)【優先日】2022-03-18
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ANDROID
2.DEXGUARD
(71)【出願人】
【識別番号】516262480
【氏名又は名称】ファウンデーション オブ スンシル ユニヴァーシティ インダストリー コーポレーション
(74)【代理人】
【識別番号】100083138
【弁理士】
【氏名又は名称】相田 伸二
(74)【代理人】
【識別番号】100189625
【弁理士】
【氏名又は名称】鄭 元基
(74)【代理人】
【識別番号】100196139
【弁理士】
【氏名又は名称】相田 京子
(74)【代理人】
【識別番号】100199004
【弁理士】
【氏名又は名称】服部 洋
(72)【発明者】
【氏名】イ ジョンヒョン
(72)【発明者】
【氏名】チョ ヘヒョン
(72)【発明者】
【氏名】イ トンホ
(57)【要約】
本発明は、難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法に関する。
本発明による難読化されたアプリケーションのデータフロー分析のための逆難読化装置は、難読化されたAPKファイルを実行し、実行された命令語を抽出する命令語抽出部と、抽出された命令語を用いて、難読化されたAPKファイルの逆難読化を行う逆難読化部と、難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、逆難読化されたAPKファイルのコードをダミーコード形式で挿入するコード挿入部と、ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する呼び出しフロー生成部と、生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDEXファイルを生成するDEXファイル生成部と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
難読化されたAndroidアプリケーションパッケージ(APK)ファイルを実行し、実行された命令語を抽出する命令語抽出部と、
前記抽出された命令語を用いて、前記難読化されたAPKファイルの逆難読化を行う逆難読化部と、
前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、前記逆難読化されたAPKファイルのコードをダミーコード形式で挿入するコード挿入部と、
ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する呼び出しフロー生成部と、
前記生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX)ファイルを生成するDEXファイル生成部と、
を備える、難読化されたアプリケーションのデータフロー分析のための逆難読化装置。
【請求項2】
前記生成されたDEXファイルを用いて静的汚染分析を行う静的汚染分析実行部をさらに備える、請求項1に記載の難読化されたアプリケーションのデータフロー分析のための逆難読化装置。
【請求項3】
前記コード挿入部は、
前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定し、
判定の結果、逆難読化された情報が存在する場合、前記逆難読化されたAPKファイルのコードを既存のコードの後にダミーコード形式で挿入する、請求項1に記載の難読化されたアプリケーションのデータフロー分析のための逆難読化装置。
【請求項4】
前記呼び出しフロー生成部は、
ダミーコード形式の逆難読化されたAPKファイルのコードと前記難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する、請求項1に記載の難読化されたアプリケーションのデータフロー分析のための逆難読化装置。
【請求項5】
前記DEXファイル生成部は、
難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成する、請求項1に記載の難読化されたアプリケーションのデータフロー分析のための逆難読化装置。
【請求項6】
難読化されたアプリケーションのデータフロー分析のための逆難読化装置を用いた逆難読化方法において、
難読化されたAndroidアプリケーションパッケージ(APK)ファイルを実行し、実行された命令語を抽出するステップと、
前記抽出された命令語を用いて、前記難読化されたAPKファイルの逆難読化を行うステップと、
前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、前記逆難読化されたAPKファイルのコードをダミーコード形式で挿入するステップと、
ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成するステップと、
前記生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX)ファイルを生成するステップと、
を含む、逆難読化方法。
【請求項7】
前記生成されたDEXファイルを用いて静的汚染分析を行うステップをさらに含む、請求項6に記載の逆難読化方法。
【請求項8】
前記ダミーコード形式で挿入するステップでは、
前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定し、
判定の結果、逆難読化された情報が存在する場合、前記逆難読化されたAPKファイルのコードを既存コードの後にダミーコード形式で挿入する、請求項6に記載の逆難読化方法。
【請求項9】
前記新たな呼び出しフローを生成するステップでは、
ダミーコード形式の逆難読化されたAPKファイルのコードと前記難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する、請求項6に記載の逆難読化方法。
【請求項10】
前記DEXファイルを生成するステップでは、
難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成する、請求項6に記載の逆難読化方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法に関し、より詳細には、難読化されたAndroidアプリケーションパッケージ(APK:Android application package)が実行される呼び出し命令語を用いて、より多くの敏感なデータフロー分析を可能にする、難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法に関する。
【背景技術】
【0002】
ユーザーの敏感な情報を流出させるマルウェアからユーザーを保護するためには、マルウェアの悪意のある動作をできるだけ早く見つけて検出することが重要である。しかし、攻撃者が様々な難読化技法を使用してマルウェアの検出を回避するため、マルウェアの寿命を長引かせる可能性があり、マルウェアをタイムリーに分析することはますます困難になっている。
【0003】
一般に、逆難読化技法は、ソフトウェアの知的財産権を保護するために、難読化技法を無効化し、システムを攻撃したり、システムを用いるユーザーから重要な情報を盗んだりする悪意のある動作をより迅速に検出するために使用される。
【0004】
しかし、従来の逆難読化ソリューションは、難読化されたAndroidアプリケーションを逆難読化しても、難読化された情報を識別することはできるが、静的分析ツールを使用して分析した場合、敏感なデータ情報を正確に見つけられないソリューションがほとんどである。難読化が適用されたアプリケーションは、データの呼び出しフローが静的分析ツールには識別されない形態に変形され、必要な部分だけを探しながら検索しなければならない形態で存在する。つまり、静的分析は可能であるが、静的分析のフローを正確につなげないため、静的分析ツールが識別できない問題が多く存在する。
【0005】
そこで、従来技法とは異なる、逆難読化し、静的汚染分析をより広範囲に行うことができる、逆難読化された情報呼び出しフローを既存の呼び出しフローにつなげる技法が求められている。
【0006】
本発明の背景となる技術は、韓国登録特許第10-1861341号公報(2018年5月28日公告)に開示されている。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする技術的課題は、難読化されたAndroidアプリケーションパッケージ(APK)が実行される呼び出し命令語を用いて、難読化情報及び隠蔽コードを逆難読化することにより、より多くの敏感なデータフロー分析を可能にする、難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法を提供することである。
【課題を解決するための手段】
【0008】
上記の技術的課題を達成するための本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置は、難読化されたAndroidアプリケーションパッケージ(APK:Android application package)ファイルを実行し、実行された命令語を抽出する命令語抽出部と、前記抽出された命令語を用いて、前記難読化されたAPKファイルの逆難読化を行う逆難読化部と、前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、前記逆難読化されたAPKファイルのコードをダミーコード形式で挿入するコード挿入部と、ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する呼び出しフロー生成部と、前記生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX:Dalvik Executable)ファイルを生成するDEXファイル生成部と、を備える。
【0009】
また、前記生成されたDEXファイルを用いて静的汚染分析を行う静的汚染分析実行部をさらに備えてもよい。
【0010】
また、前記コード挿入部は、前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定し、判定の結果、逆難読化された情報が存在する場合、前記逆難読化されたAPKファイルのコードを既存のコードの後にダミーコード形式で挿入してもよい。
【0011】
また、前記呼び出しフロー生成部は、ダミーコード形式の逆難読化されたAPKファイルのコードと前記難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成してもよい。
【0012】
また、前記DEXファイル生成部は、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成してもよい。
【0013】
また、本発明の他の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置を用いた逆難読化方法は、難読化されたAndroidアプリケーションパッケージ(APK:Android application package)ファイルを実行し、実行された命令語を抽出するステップと、前記抽出された命令語を用いて、前記難読化されたAPKファイルの逆難読化を行うステップと、前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、前記逆難読化されたAPKファイルのコードをダミーコード形式で挿入するステップと、ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成するステップと、前記生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX:Dalvik Executable)ファイルを生成するステップと、を含む。
【0014】
また、前記生成されたDEXファイルを用いて静的汚染分析を行うステップをさらに含んでもよい。
【0015】
また、前記ダミーコード形式で挿入するステップでは、前記難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定し、判定の結果、逆難読化された情報が存在する場合、前記逆難読化されたAPKファイルのコードを既存コードの後にダミーコード形式で挿入してもよい。
【0016】
また、前記新たな呼び出しフローを生成するステップでは、ダミーコード形式の逆難読化されたAPKファイルのコードと前記難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成してもよい。
【0017】
また、前記DEXファイルを生成するステップでは、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成してもよい。
【発明の効果】
【0018】
このように、本発明によれば、難読化されたAPKが実行される呼び出し命令語を用いて、難読化情報及び隠蔽コードを逆難読化して、より多くの敏感なデータフロー分析を可能にすることにより、単に逆難読化だけを行うのではなく、元の呼び出しフローを有し得る逆難読化呼び出しフローをも有することができるという効果がある。
【0019】
また、本発明によれば、難読化されたAPKが従来の逆難読化技術では対応できない呼び出しフローを再作成することで、元のフローを有し得る呼び出しフローを見つけることができるため、静的汚染分析にも活用できる優れた分析技法を提供することができる。
【0020】
また、本発明によれば、いかなる難読化ツールを使って難読化されたとしても、逆難読化プロセスを行うことで、難読化された場合よりも多くの情報漏洩を検出することに貢献できると期待され、マルウェアアナリストは、悪意のあるモバイルアプリケーションのロジックを分析するための時間と労力を短縮することができ、効果的な対応及び分析に貢献することができる。
【図面の簡単な説明】
【0021】
図1】本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置を示すブロック構成図である。
図2】本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置の逆難読化プロセスを示す全体構成図である。
図3】本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化方法の動作フローを示すフローチャートである。
図4】本発明の実施形態による逆難読化方法におけるクラス逆難読化の再作成プロセスを例示的に示す図である。
図5】本発明の実施形態による逆難読化方法におけるAPI隠蔽逆難読化の再作成プロセスを例示的に示す図である。
【発明を実施するための形態】
【0022】
以下、本発明の好適な実施形態について、添付図面に基づいて説明する。この過程で、図面に示す線の厚さや構成要素の大きさなどは、説明の明瞭性及び便宜のために誇張して示すこともある。
【0023】
また、後術する用語は、本発明における機能を考慮して定義された用語であり、これは使用者、運用者の意図又は慣例によって異なることもある。したがって、このような用語は、本明細書全般の内容に基づいて定義されるべきである。
【0024】
以下、本発明の好適な実施形態について、添付図面に基づいてより詳細に説明する。
【0025】
まず、図1及び図2を参照して、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置について説明する。
【0026】
図1は、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置を示すブロック構成図であり、図2は、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置の逆難読化プロセスを示す全体構成図である。
【0027】
図1及び図2に示すように、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置100は、命令語抽出部110と、逆難読化部120と、コード挿入部130と、呼び出しフロー生成部140と、DEXファイル生成部150と、静的汚染分析実行部160とを含む。
【0028】
まず、命令語抽出部110は、難読化されたAndroidアプリケーションパッケージ(APK:Android application package)ファイルを実行し、実行された命令語を抽出する。
【0029】
具体的には、図2に示す逆難読化プロセス(Deobfuscation process)のAndroidプロセス(Android Process)を通じて難読化されたAPKファイルを動的に実行することで命令語を抽出する。
【0030】
また、逆難読化部120は、命令語抽出部110によって抽出された命令語を用いて、難読化されたAPKファイルの逆難読化を行う。
【0031】
すなわち、命令語抽出部110によって抽出された命令語を監視して、逆難読化された情報として用いる。
【0032】
また、コード挿入部130は、難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較し、比較結果に応じて、逆難読化されたAPKファイルのコードをダミーコード形式で挿入する。
【0033】
具体的には、コード挿入部130は、難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定し、逆難読化された情報が存在する場合、逆難読化されたAPKファイルのコードを既存のコードの後にダミーコード形式で挿入する。
【0034】
すなわち、命令語抽出部110によって抽出された命令語は、アプリケーションの動作を通じて動的にロードされて抽出されるが、命令語のうち、既存のコードと比較して逆難読化されたコードは、既存のコードの後にダミーコード形式で追加される。これにより、難読化された情報を識別し、逆難読化された情報を識別することができる。
【0035】
また、呼び出しフロー生成部140は、ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する。
【0036】
このとき、呼び出しフロー生成部140は、ダミーコード形式の逆難読化されたAPKファイルのコードと難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する。
【0037】
すなわち、ダミーコードとして存在する逆難読化コードを難読化されたコードと比較し、既存の呼び出しフローに一致するように呼び出しを追加する。
【0038】
また、DEXファイル生成部150は、呼び出しフロー生成部140によって生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX:Dalvik Executable)ファイルを生成する。
【0039】
このとき、DEXファイル生成部150は、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成する。
【0040】
具体的には、呼び出しフローが難読化されて呼び出しフローを正確に識別できないため、元のAPKファイルを分析することができない。そのため、本発明の実施形態では、逆難読化データフロー(Deobfuscated Data Flow)というモジュールによって抽出された逆難読化情報をダミーコードの形式ではなく、難読化されて途切れた呼び出しフローを新たにつなぐ呼び出しを元のAPKファイルのコードに追加してフローを連結する。
【0041】
このとき、新しく作成された逆難読化されたAPKファイルは、既存のAPKファイルのClasses.dexファイルと、逆難読化されたAPKファイルのClasses.dexファイルとを有する。
【0042】
新しく追加されたClasses.dexファイルでは、既存のdexファイルより難読化されて不明な情報が、逆難読化されてダミーコード形式に復元されており、難読化により途切れた呼び出しフローが再び連結される。
【0043】
すなわち、本発明の実施形態で作成されたAPKファイルは、難読化された情報及び逆難読化された情報をClasses.dexファイルに追加作成して格納する。これにより、難読化されて呼び出しフローが隠されて静的汚染分析が不可能であった問題を解決することができる。
【0044】
静的汚染分析実行部160は、DEXファイル生成部150で生成されたDEXファイルを用いて静的汚染分析を行う。
【0045】
本発明の実施形態では、保護対象コード又はデータを逆難読化し、Classes.dexファイルに元のコードを挿入する。図2に示す静的汚染分析(Static Taint Analysis)部分が静的汚染分析実行部160であり、図2に示すように静的分析を行う際にClasses.dexファイル内部の呼び出しフローを利用するため、静的分析ツールは、既存の難読化された呼び出しフローではなく、新たに指定された逆難読化された呼び出しフローを有する。
【0046】
すなわち、本発明の実施形態によれば、難読化されたAndroidアプリケーションを逆難読化した後、静的汚染分析が不可能なソリューションを、逆難読化された情報を見つけて既存の呼び出しフローを新たに指定することで、静的汚染分析が可能になる。Androidアプリケーションに含まれる難読化情報を逆難読化し、難読化された呼び出しフローを把握し、逆難読化された呼び出しフローとして新たに指定することで、逆難読化された情報もまた元のフローと同じフローを有し得る。
【0047】
以下、図3図5を参照して、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化方法について説明する。
【0048】
図3は、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化方法の動作フローを示すフローチャートであり、これを参照して本発明の具体的な動作について説明する。
【0049】
本発明の実施形態によれば、まず、命令語抽出部110は、難読化されたAPKファイルを実行し、実行された命令語を抽出する(S10)。
【0050】
このとき、ステップS10では、難読化されたAPKファイルを動的に実行することにより命令語を抽出する。
【0051】
また、逆難読化部120は、ステップS10で抽出された命令語を用いて、難読化されたAPKファイルの逆難読化を行う(S20)。
【0052】
すなわち、ステップS10で抽出されたコードを監視して、逆難読化された情報として用いる。
【0053】
また、コード挿入部130は、難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較する(S30)。
【0054】
このとき、コード挿入部130は、難読化されたAPKファイルのコードと逆難読化されたAPKファイルのコードとを比較して、逆難読化された情報が存在するか否かを判定する(S40)。
【0055】
ステップS40における判定の結果、逆難読化された情報が存在する場合には、逆難読化されたAPKファイルのコードを、既存のコードの後にダミーコード形式で挿入する(S50)。
【0056】
また、呼び出しフロー生成部140は、ダミーコード形式の逆難読化されたAPKファイルのコード及び既存の難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する(S60)。
【0057】
このとき、ステップS60では、ダミーコード形式の逆難読化されたAPKファイルのコードと難読化されたAPKファイルのコードとを比較し、既存の呼び出しフローに一致するように難読化呼び出しフローを再び組み合わせることにより、新たな呼び出しフローを生成する。
【0058】
また、DEXファイル生成部150は、ステップS60で生成された新たな呼び出しフローを用いて、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローが追加されたDalvik実行可能(DEX:Dalvik Executable)ファイルを生成する(S70)。
【0059】
具体的には、難読化で途切れた呼び出しフローを新たにつなぐ呼び出しフローを元のAPKファイルのコードに追加してClasses.dexファイルを生成する。
【0060】
すなわち、オプション別に逆難読化された結果を用いて、逆難読化された情報をdexファイルのsmaliコード(smali code)に再作成することで、元のデータフローを有する.dex Fileを生成する。
【0061】
このとき、静的汚染分析実行部160が、ステップS70で生成されたDEXファイルを用いて静的汚染分析を行うこともできる。
【0062】
具体的には、静的分析プロセスでは、逆難読化プロセスの結果に基づいて、元のデータフローに類似したデータフローを有する.dex Fileを用いて静的汚染分析を行う。ソースからシンク(Sink)へのフロー及びエントリーポイント(Entry-point)を検知し、Android Manifest.xmlファイル、Classes.dexファイル、layout.xmlファイルから情報を抽出して分析を行う。難読化されたデータフローは静的汚染分析では見つけることができないが、逆難読化された.dexファイルは元のデータフローに類似した結果を出すことができる。
【0063】
本発明の実施形態によれば、難読化のために検出できなかったソース及びシンクデータの漏洩をも見つけることができる。
【0064】
図4は、本発明の実施形態による逆難読化方法におけるクラス逆難読化の再作成プロセスを例示的に示す図であり、図5は、本発明の実施形態による逆難読化方法におけるAPI隠蔽逆難読化の再作成プロセスを例示的に示す図である。
【0065】
本発明を評価するために、アプリケーションを実現し、DexGuard、DexProtectorを用いて3つの難読化技術を適用する実験を行った。
【0066】
図4及び図5では、元のアプリケーションsmaliコード部分をそれぞれaで表示し、難読化されたアプリケーションのsmaliコード部分をそれぞれbで表示し、逆難読化されたsmaliコードの結果をそれぞれcで表示する。図4では、クラス難読化が適用されて情報漏洩を発見できなかったアプリケーションを、逆難読化プロセスを経て隠蔽クラスを明らかにして.dexファイルに再作成することで、情報漏洩を検出した。
【0067】
また、図5では、Hide Accessオプションが適用されてAPIが隠されて情報漏洩を発見できなかったアプリケーションを、逆難読化プロセスを経てv0テーブルで管理されている隠蔽情報の流れを把握してsmaliコードに再作成することで、逆難読化された.dexファイルを生成して情報漏洩を検出した。
【0068】
上述したように、本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化方法によれば、難読化されたAPKが実行される呼び出し命令語を用いて、難読化情報及び隠蔽コードを逆難読化して、より多くの敏感なデータフロー分析を可能にすることにより、単に逆難読化だけを行うのではなく、元の呼び出しフローを有し得る逆難読化呼び出しフローをも有することができる。
【0069】
また、本発明の実施形態によれば、難読化されたAPKが従来の逆難読化技術では対応できない呼び出しフローを再作成することで、元のフローを有し得る呼び出しフローを見つけることができるため、静的汚染分析にも活用できる優れた分析技法を提供することができる。
【0070】
また、本発明の実施形態によれば、いかなる難読化ツールを使って難読化されたとしても、逆難読化プロセスを行うことで、難読化された場合よりも多くの情報漏洩を検出することに貢献できると期待され、マルウェアアナリストは、悪意のあるモバイルアプリケーションのロジックを分析するための時間と労力を短縮することができ、効果的な対応及び分析に貢献することができる。
【0071】
本発明の実施形態による難読化されたアプリケーションのデータフロー分析のための逆難読化装置及びその方法は、様々なコンピュータ構成要素によって実行され得るプログラム命令語の形態で実現され、コンピュータ読み取り可能な記録媒体に記録され得る。前記コンピュータ読み取り可能な記録媒体は、プログラム命令語、データファイル、データ構造などを、単独でまたは組み合わせて含み得る。
【0072】
前記コンピュータ読み取り可能な記録媒体に記録されるプログラム命令語は、本発明のために特別に設計され構成されたものであってもよいし、コンピュータソフトウェア分野の当業者に公知で使用可能なものであってもよい。
【0073】
コンピュータ読み取り可能な記録媒体の例には、ハードディスク、フロッピーディスク、磁気テープなどの磁気媒体、CD-ROM、DVDなどの光記録媒体、フロプティカルディスク(floptical disk)などの磁気-光媒体(magneto-optical media)、及びROM、RAM、フラッシュメモリなどの、プログラム命令語を格納し実行するように特別に構成されたハードウェア装置が含まれる。
【0074】
プログラム命令語の例には、コンパイラにより作られるもののような機械語コードだけでなく、インタプリタなどを使用してコンピュータによって実行され得る高級言語コードも含まれる。ハードウェア装置は、本発明による処理を実行するために、1つ以上のソフトウェアモジュールとして作動するように構成され得る。
【0075】
本発明は、図面に示された実施形態を参照して説明されたが、これは例示的なものに過ぎず、当業者であれば、当該技術が属する分野における通常の知識を有する者であれば、これから種々の変形及び均等な他の実施形態が可能であるということが理解できる筈である。よって、本発明の真の技術的な保護範囲は、特許請求の範囲の技術的な思想によって定められるべきである。
【符号の説明】
【0076】
100 逆難読化装置
110 命令語抽出部
120 逆難読化部
130 コード挿入部
140 呼び出しフロー生成部
150 DEXファイル生成部
160 静的汚染分析実行部
図1
図2
図3
図4
図5
【国際調査報告】