Nowadays Android malware analysis becomes more and more common task during mobile forensic investigations. Thousands of new malware types are created every month, so it becomes critical for any digital forensic examiner to have at least basic understanding of maliсious application analysis.
In this article we’ll show you how to perform basic static and dynamic analysis of a malicious Android application with Apktool, dex2jar, JD-GUI and VirusTotal.
We’re going to start from basic static analysis. The first step is unpacking an APK-file with Apktool in order to get decoded AndroidManifest.xml file which contains the application’s permissions:
Now we have our AndroidManifest.xml decoded and ready to be analyzed. Our app requires the following permissons:
- android.permission.SEND_SMS
- android.permission.DISABLE_KEYGUARD
- android.permission.RECEIVE_BOOT_COMPLETED
- android.permission.INTERNET
- android.permission.VIBRATE
- android.permission.WRITE_SMS
- android.permission.ACCESS_WIFI_STATE
- android.permission.WAKE_LOCK
- android.permission.CALL_PHONE
- android.permission.ACCESS_NETWORK_STATE
- android.permission.READ_PHONE_STATE
- android.permission.READ_SMS
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.READ_CONTACTS
- android.permission.RECEIVE_SMS
As you can see, there are a lot of suspicious permissions: it can read contact data, send, read and delete SMS messages, has full Internet access, can directly call phone numbers, read phone state and identity, such as it’s phone number and serial number, also it can modify or delete SD card contents.
Let’s go further – extract the .class files from the APK with dex2jar. Now we have a JAR file ready to be decompiled.
To do it, open JD-GUI and click the corresponding icon, or go to File – Open File…, or simply push Ctrl + O and choose the JAR file:
Now you can walk through the .class files, analyze the codes and, for example, search for interesting strings like the IP-address on the illustration.
It’s time for basic dynamic analysis. We’ll use VirusTotal for it. Just upload your sample to it and wait for analysis to complete. Go to “Behavioural information” pane and check the results of dynamic analysis:
As you can see, we have a lot of useful information: the app calls APIs that provide access to information about the telephony services to collect subscriber’s info. Also it calls APIs that manage SMS operations and even sends with “balans” text to 900 – its Sberbank number for mobile banking.
Of course, advanced analysis isn’t as easy as basic. If you want to learn more about it we highly recommend Android Malware and Analysis by Ken Dunham and Shane Hartman. But if you need a professional to do it – use our contact form.
About the authors:
Interests: Computer, Cell Phone & Chip-Off Forensics
Interests: iOS forensics, Android forensics, Mac OS X forensics, Windows forensics, Linux forensics