dwisiswant0

Apkleaks

Scanning APK file for URIs, endpoints & secrets.
Under Apache License 2.0
By dwisiswant0

reverse-engineering bugbounty static-analysis apk apk-parser android-security mobile-security scanning-apk

APKLeaks



Scanning APK file for URIs, endpoints & secrets.



Installation

It's fairly simple to install APKLeaks:


from PyPi

bash
$ pip3 install apkleaks


from Source

Clone repository and install requirements:


bash
$ git clone https://github.com/dwisiswant0/apkleaks
$ cd apkleaks/
$ pip3 install -r requirements.txt


from Docker

Pull the Docker image by running:


bash
$ docker pull dwisiswant0/apkleaks:latest


Dependencies

APKLeaks using jadx disassembler to decompile APK file. If it doesn't exist in your environment, it'll ask you to download.


Usage

Simply,


```bash
$ apkleaks -f ~/path/to/file.apk


from Source

$ python3 apkleaks.py -f ~/path/to/file.apk


or with Docker

$ docker run -it --rm -v /tmp:/tmp dwisiswant0/apkleaks:latest -f /tmp/file.apk
```


Options

Here are all the options it supports.


| Argument | Description | Example |
|--------------- |--------------------------------------------- |------------------------------------------------------------- |
| -f, --file | APK file to scanning | apkleaks -f file.apk |
| -o, --output | Write to file results (random if not set) | apkleaks -f file.apk -o results.txt |
| -p, --pattern | Path to custom patterns JSON | apkleaks -f file.apk -p custom-rules.json |
| -a, --args | Disassembler arguments | apkleaks -f file.apk --args="--deobf --log-level DEBUG" |
| --json | Save as JSON format | apkleaks -f file.apk -o results.json --json |


Output

In general, if you don't provide -o argument, then it will generate results file automatically.


NOTE: By default it will also save the results in text format, use --json argument if you want JSON output format.


Pattern

Custom patterns can be added with the following argument to provide sensitive search rules in the JSON file format: --pattern /path/to/custom-rules.json. If not set, it'll use default patterns from regexes.json file.


Example patterns file:


json
// custom-rules.json
{
"Amazon AWS Access Key ID": "AKIA[0-9A-Z]{16}",
...
}


$ apkleaks -f /path/to/file.apk -p rules.json -o ~/Documents/apkleaks-results.txt


Arguments (disassembler)

We give user complete discretion to pass the disassembler arguments. For example, if you want to activate threads in jadx decompilation process, you can add it with -a/--args argument, example: --args="--threads-count 5".


$ apkleaks -f /path/to/file.apk -a "--deobf --log-level DEBUG"


NOTE: Please pay attention to the default disassembler arguments we use to prevent collisions.


License

apkleaks is distributed under Apache 2.


Acknowledments

Since this tool includes some contributions, and I'm not an asshole, I'll publically thank the following users for their helps and resources: