Detecting Code Reflection in Android Apps

While looking for more features to detect Android malware (what is basically part of my master thesis) I visited https://www.virustotal.com, which is by the way, a very nice service for analyzing suspicious files. After uploading an arbitrary Andorid-App I found under the section „Code-related observations“ four points. From those one was new: „code reflection“ and I asked myself how to detect this.

After a little bit of googling and reading the API I remembered that there is the method-invocation stuff form JavaSE. So I tried, to find the feature

Ljava/lang/reflect/Method;.invoke:

from the „dexdump -d“ dump and was lucky. This seems to be a very good feature to detect method invocation and is furthermore explainable because the class „Method“ in the Java-API has only the method „invoke(…)“ and no other ways to use method reflection. For detecting invocation of objects  one could also use the „newInstance(…)“-method in the class „Constructor“.

Additionally the use of „Method.invoke(…)“ is often together with the „getMethod“-method in the class „Class“ and therefore

Ljava/lang/Class;.getMethod:

is a good feature too.

 

App-Checker Desktop: A Java Static Feature Generator for APK-Files

Dieses Tool mit dem Namen „App-Checker Desktop“ ist in der Lage aus einer *.apk-Datei – also einer Android-App – die unten genannten Merkmale zu extrahieren.

Hintergrund: Dieses Tool, was kurzfristig den Namen „App-Checker Desktop“ erhalten hat, entstand während der Projektphase zu meiner Masterarbeit und ist die Desktop-Version der im Rahmen dieses Projektes entwickelten App (dem App-Checker).

Motivation: Damit der App-Checker mittels der Methode  „Drebin“ Vorhersagen über die Bös- oder Gutartigkeit dritter Apps – auf dem Android-Gerät – machen kann, muss er in der Lage sein aus einer *.apk-Datei die gleichen Merkmale zu extrahieren, wie es der Webservice Mobile Sandbox tut. Mit der hier vorgestellten Desktop-Version kann man nun unabhängig von Android-Gerät oder der Mobile Sandbox die folgenden Merkmale auf dem Rechner generieren:

Aus dem Android-Manifest:

1. Angeforderte Rechte der App
2. Angeforderte Hard- und Software
3. Intents
4. Activities
5. Services
6. ContentProvider
7. Broadcast Reciever

Aus dem dexdump -d – Auszug (Assambler der App):
1. Benutzte Rechte
2. Benutzte API-Aufrufe, die Rechte benötigen
3. Benutzte gefährliche API-Aufrufe (können selbst festgelegt werden)
4. Benutzte „Networks“
5. Gefundene URLs und IPs

Ist man nicht wie ich an Java als Programmiersprache gebunden empfehle ich für diesen Anwendungsfall androguard.

 

AppChecker Desktop
AppChecker Desktop
AppChecker Desktop.zip
Version: 1.0
3.8 MiB
113 Downloads
Details