
一般的なAndroidバンカーマルウェアの静的アンパッキング。
Kavanoz(トルコ語で瓶)は、一般的なAndroidバンキングマルウェアを静的にアンパックするためのツールです。 Androidエミュレータを実行せずに、パックされたマルウェアからペイロードを取得したいと思ったことはありますか?私もありません :) でも、とにかくここにツールがあります。

pip install kavanoz
ソースからインストールするには、リポジトリをクローンして -e 付きの編集可能インストールを行います。つまり、プロジェクトのプラグインを編集または追加した場合、再インストールしなくてもそれが使用されます。
git clone https://github.com/eybisi/kavanoz.git
cd kavanoz
pip install -e .
コマンドラインから
kavanoz /tmp/filepath
-vvv パラメータを使用すると、詳細なログを出力できます。(プラグインのデバッグに便利です)
Pythonライブラリとして
from kavanoz.core import Kavanoz
from kavanoz import utils
utils.set_log("DEBUG")
k = Kavanoz(apk_path="tests/test_apk/coper.apk")
for plugin_result in k.get_plugin_results():
if plugin_result["status"] == "success":
print("Unpacked")
print(plugin_result)
break
kavanoz を編集可能インストール(-e 付き)でインストールしてください。新しいプラグインを追加するには、loaderフォルダに新しいファイルを作成するだけです。unpack_plugin.py ファイルの Unpacker クラスを拡張し、start_decrypt 関数を独自の実装で定義します。
def start_decrypt(self, apk_object: APK, dexes: "list[DEX]"):
プラグインから早期終了するには、次の関数を追加します。
def lazy_check(self,apk_object:APK, dexes: "list[DEX]"):
抽出が成功した場合は、self.decrypted_payload_path に抽出したファイルパスを代入します。 unpacker クラスのヘルパー関数を使用できます:
PRを開く前に python -m unittest を実行してください。テスト用APKファイルを取得するには、git lfs pull コマンドを使用します。
dex.get_class(smali_annotation_of_class) でクラスを取得できます。self.apk_object.get_files() でファイルを取得できます。application = self.apk_object.get_attribute_value("application", "name") を使用して、マニフェストファイルで定義されたApplicationクラスを取得します。作業用のユニークなサンプルを提供してくれた apkdetect.com に感謝します。