アプリは一つのパッケージでリリースします。そのため、完全に暗号化されており、機密データも安全に扱われていると考えてしまいがちです。実際にはそんなことはなく、さまざまな情報が読み取れます。 今回紹介するapkLeaksはAndroidのAPKファイルを読み込み、そこに書かれたURLやエンドポイント、シークレット情報があるかチェックします。

apkLeaksの使い方

とあるAPKファイルで実行した結果です。

$ python apkleaks.py -f "Example.apk" 

     _    ____  _  ___               _        
    / \  |  _ \| |/ / |    ___  __ _| | _____ 
   / _ \ | |_) | ' /| |   / _ \/ _` | |/ / __|
  / ___ \|  __/| . \| |__|  __/ (_| |   <\__ \
 /_/   \_\_|   |_|\_\_____\___|\__,_|_|\_\___/
 # v1.0.2
 --
 Scanning APK file for URIs, endpoints & secrets
 (c) 2020, dwisiswant0

Can't find jadx binary. Downloading...

** Decompiling APK...
INFO  - loading ...
INFO  - processing ...
ERROR - finished with errors, count: 9

** Scanning against 'com.example.com'

[LinkFinder]
- "/--sanitized--"
  :
- "state.txt"

[IP Address]
- 192.0.2.1
- 203.0.100.100
- 100.0.0.1

** Results saved into '/var/folders/vq/8b5hnfxs2s156flj8kpycw440000gp/T/apkleaks-2UHAvi.txt'

機密に触れるような情報は出ませんでしたが、それでもIPアドレスなどが書かれているのは分かりました。自分のアプリであらかじめチェックしておくと、万一の漏洩に備えられるかも知れません。

apkLeaksはPython製のオープンソース・ソフトウェア(Apache Licnese 2.0)です。

dwisiswant0/apkleaks: Scanning APK file for URIs, endpoints & secrets.