
APKファイルに対する偵察プロセスを自動化するツールです。
Slicerは、抽出されたAPKファイルへのパスを受け取り、エクスポートされており、権限がnullで外部から呼び出し可能なすべてのアクティビティ、レシーバー、サービスを返します。
注意: APKはjadxまたはapktoolで抽出されている必要があります。
なぜ?
私は約3週間前(2020年6月)にバグバウンティを始め、Androidアプリに全力を注いできました。しかし、すべてのアプリに共通して、深く掘り下げる前にやらなければならない特定の作業があることに気づきました。そこで、単純なツールでそのプロセスを自動化するのが良いと考えました。
なぜdrozerではないのか?
drozerは別格のツールです。アクセス可能なコンポーネントをすべて見つけてくれますが、同じコマンドを何度も実行するのにうんざりしていました。
なぜdrozerで自動化しないのか?
私は実際に特定のdrozerコマンドを実行するためのbashスクリプトを作成し、手動で実行する手間を省きましたが、それでもやらなければならない退屈な作業がいくつかありました。例えば、strings.xml内のさまざまなAPIキーのチェック、Firebase DBが公開アクセス可能かどうかのテスト、Google APIキーに使用量制限などが設定されているかどうかの確認、その他多くの作業です。
なぜすべてのファイルを検索しないのか?
grepやripgrepのようなツールの方が、すべてのファイルを検索するのにずっと速いと思います。そのため、特定のものを検索したい場合は、それらのツールを使用する方が良いでしょう。しかし、すべてのAndroidファイルでチェックすべきものがあると思われる場合は、遠慮なくIssueを開いてください。
android:allowbackupをtrueに設定しているかどうかを確認します。android:debuggableをtrueに設定しているかどうかを確認します。android:exported=trueが存在し、権限が設定されていない場合。Intent-filterが定義されているかどうかを確認し、定義されていればそのコンポーネントはデフォルトでエクスポートされているとみなします(これはAndroidドキュメントに記載されているルールです)。.jsonトリックでテストします。
myapp.firebaseio.comの場合、https://myapp.firebaseio.com/.jsonが何かを返すか、許可拒否されるかを確認します。strings.xmlとAndroidManifest.xmlに存在するその他のAPIキーを返します。git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -h非常に簡単に使用できます。以下のオプションが利用可能です:
APKのManifestとstringsから情報を抽出します
使い方:
slicer [オプション] [抽出したAPKディレクトリ]
オプション:
-d, --dir jadxの出力ディレクトリへのパス
-o, --output 出力ファイルの名前(未実装)
outputフラグはまだ実装していません。slicerの出力をyamlファイルにリダイレクトすれば適切な形式になると思うからです。
python3 slicer.py -d path/to/extract/apk -c config.json
URLとパスの抽出に使用されている抽出モジュールは、@ndelphitによる apkurlgrep から取得しました。
ここで実装されているすべての機能は、私がここ数週間で学んだことです。APKでチェックすべきその他の事柄があると思われる場合は、その機能についてIssueを開いてください。喜んで実装します :)
もしよろしければ、コーヒーをおごっていただけます:
/res/rawおよびres/xmlディレクトリに存在するすべてのファイル名をリストアップします。