JPCERTコーディネーションセンター(JPCERT/CC: Japan Computer Emergency Response Team Coordination Center)は8月5日、「Androidマルウェアのsmaliガジェット挿入による動的分析手法 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ」において、Androidマルウェアの動的分析手法「smaliガジェット挿入手法」について解説した。これはAPKファイルに分析用ガジェットを挿入・再構成して分析を可能にする手法。

  • Androidマルウェアのsmaliガジェット挿入による動的分析手法 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ

    Androidマルウェアのsmaliガジェット挿入による動的分析手法 - JPCERT/CC Eyes|JPCERTコーディネーションセンター公式ブログ

smaliガジェット挿入手法の手順

smaliガジェット挿入手法の具体的な手順は次のとおり(カッコ内はコマンド例)。

  1. Androidマルウェアを「Apktool」を使用して展開する(apktool d mal.apk)
  2. マルウェアの機能を持つ分析したいsmaliファイルをJava逆コンパイラ「JADX」などで見つけ出す
  3. smaliファイルをテキストエディターで開き、分析用ガジェットを挿入する
  4. smaliファイルをアセンブルする
  5. APKファイルを構築する(apktool b mal)
  6. APKファイルに署名する(keytool -genkey -v -keystore test.store -alias example -keyalg RSA -validity 32767; apksigner sign --ks test.store -v --v2-signing-enabled true --ks-key-alias example mal.apk)
  7. 署名した分析用APKファイルを「Android Studio」などのサンドボックス環境で確認する
  • 分析用ガジェットの挿入例 - 引用:JPCERT/CC

    分析用ガジェットの挿入例 引用:JPCERT/CC

なお、再構築した分析用APKファイルをサンドボックス環境でテストする場合、サンドボックス環境をネットワークから切り離す必要がある。このテスト手法はマルウェアの動作を妨害しないため、マルウェアは通常通り仮想デバイスを侵害する点に注意が必要。

  • サンドボックスに分析用APKをインストールした例 - 引用:JPCERT/CC

    サンドボックスに分析用APKをインストールした例 引用:JPCERT/CC

サンドボックスにインストールされたマルウェアを起動すると、分析用ガジェットにより情報が記録される。この例ではAndroid Studioのログ出力(Logcat)から暗号化された文字列と、復号された文字列を確認できる。

  • ログ出力の例 - 引用:JPCERT/CC

    ログ出力の例 引用:JPCERT/CC

注意事項

この分析手法はあくまでもセキュリティ研究者向けの情報であり、セキュリティ研究者以外は試すべきではない。また、マルウェアは正当な理由なく所持すると法律に触れる可能性があるため、マルウェアの情報(今回はトロイの木馬「Cerberus」)が提供されていても入手しないことが望まれる。