smali
) injection within Android
applications.The initial ambition of this project was to automate stack trace injections within Android
applications in order to facilitate my master thesis work. Being able to log and display applications' runtime method calls along with their returned value greatly helps in reverse engineering complex applications by providing an insight into their logic and workflow.
Then, new features and payloads were progressively added in an attempt to create a framework fully capable of injecting any type of assembly code. Users familiar with Android
development can easily implement compatible payloads. SCI is in charge of automating low level operation such as registers allocation, dependancie, type, etc.
Tampering Android
applications has never been that easy!
Further information about Android
reverse engineering can be found at:
Code injections are performed at the assembly level (smali
files) making the differenciation process between legit and modified applications complicated and time consuming - it would require considerable forensic work such as network, permissions, signature and code analysis -.
A high level overview of the steps involved during code injection is:
Android
libraries are also injected in order to defeat obfuscation.To list the available options:
python3 sci.py -h
-a APP, --app APP Android application to trojanize
positional arguments:
search search command - identifies the main activity
payload payload command
To list search
options:
python3 sci.py -a APP search -h
-a APP, --app APP Android application to trojanize
To list payload
options:
python3 sci.py -a APP payload -h
-a APP, --app APP Android application to trojanize
-d DESTINATION, --dest DESTINATION
the destination file or directoy for injection
-k KEYWORDS, --keywords KEYWORDS
keywords (separated by ',') for injection filtering
positional arguments:
logger logger command
spyware spyware command
logger
options:python3 sci.py -a APP [-d DESTINATION] [-k KEYWORDS] logger -h
-a APP, --app APP Android application to trojanize
-d DESTINATION, --dest DESTINATION
the destination file or directoy for injection
-k KEYWORDS, --keywords KEYWORDS
keywords (separated by ',') for injection filtering
Launch the Android
debugger adb
using the following command to view application's runtime method calls:
adb logcat | grep "::trace"
spyware
options:python3 sci.py -a APP payload [-d DESTINATION] [-k KEYWORDS] spyware -h
-a APP, --app APP Android application to trojanize
-d DESTINATION, --dest DESTINATION
the destination file or directoy for injection
-k KEYWORDS, --keywords KEYWORDS
keywords (separated by ',') for injection filtering
-ppg PROPAGATE, --propagate PROPAGATE
spoofed SMS to send for the malware propagation
-rh RHOST, --rhost RHOST
attacker's host/ip for stolen data transmission, e.g.
http://192.168.0.24/handler.php
[!IMPORTANT] For optimal results, inject
Spyware
on theonCreate()
method of the application main activity.
Server-side scripts used to insert and store the stolen data sent into an attacker-controlled MySQL
database are available under scripts.
To enable spyware
debugging mode set DEV_MODE
to true
in payloads\smali\spyware at line 7. Then launch the Android
debugger adb
using the following command:
adb logcat | grep "::trace"
reverse shell
).This framework was developed in the context of my master thesis work in July 2015 and rewritten in 2017.
If you want to support this project and appreciate the time invested in developping, maintening and extending it; consider donating toward my next cup of coffee. ☕
It is easy, all you got to do is press the Sponsor
button at the top of this page or alternatively click this link. 💸
Found a bug? I would love to squash it! 🐛
Please report all issues on the GitHub issues tracker.
You would like to contribute to better this project? 🤩
Please submit all PRs
on the GitHub pull requests tracker.
See LICENSE.