Northwestern University, IL, US,

Slides:



Advertisements
Similar presentations
Thomas S. Messerges, Ezzat A. Dabbish Motorola Labs Shin Seung Uk.
Advertisements

COS 461 Fall 1997 Network Objects u first good implementation: DEC SRC Network Objects for Modula-3 u recent implementation: Java RMI (Remote Method Invocation)
Aurasium: Practical Policy Enforcement for Android Applications By Yaoqi USENIX Security Symposium 2012.
Vaibhav Rastogi, Yan Chen, and Xuxian Jiang
Policy Weaving for Mobile Devices Drew Davidson. Smartphone security is critical – 1200 to 1400 US Army troops to be equipped with Android smartphones.
Aurasium: Practical Policy Enforcement for Android Applications R. Xu, H. Saidi and R. Anderson Presented By: Rajat Khandelwal – 2009CS10209 Parikshit.
DECOMPILING ANDROID Godfrey Nolan 1DevDay 11/5/11.
Aurasium: Practical Policy Enforcement for Android Applications R. Xu, H. Saidi and R. Anderson.
Wangjun Hong, Zhengyang Qu, Northwestern University, IL, US,
Obfuscation and Hardening tool for Android Apps Instrumenting Android apps for runtime/dynamic analysis. Raman Goyal B.Tech - IT (Undergraduate) IIIT Allahabad,
Protection of Agent Teamwork By Jeremy Hall. Agent Teamwork Overview ● Mobile agent framework  AgentTeamwork 2 is a mobile-agent based middleware system.
Mobile App Monetization: Understanding the Advertising Ecosystem Vaibhav Rastogi.
Page 1 Sandboxing & Signed Software Paul Krzyzanowski Distributed Systems Except as otherwise noted, the content of this presentation.
Java Security Updated May Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security.
IOS & Android Security, Hacking and Tweaking Workshop D.Papamartzivanos University Of the Aegean – Info Sec Lab Android Security – Cydia Substrate Dimitris.
Presentation By Deepak Katta
Reverse Engineering Obfuscated Android Applications
Android Introduction Platform Overview.
Introduction to Mobile Malware
Extending Cocos2D-x Mobile 2D Framework Rony Xu Happy Elements.
VMM Based Rootkit Detection on Android Class Presentation Pete Bohman, Adam Kunk, Erik Shaw.
DroidKungFu and AnserverBot
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
Introduction to Android Swapnil Pathak Advanced Malware Analysis Training Series.
Authors: William Enck The Pennsylvania State University Peter Gilbert Duke University Byung-Gon Chun Intel Labs Landon P. Cox Duke University Jaeyeon Jung.
Presented by: Kushal Mehta University of Central Florida Michael Spreitzenbarth, Felix Freiling Friedrich-Alexander- University Erlangen, Germany michael.spreitzenbart,
APKInspector -Static Analysis of Android Applications Student: Yuan Tian Mentor: Cong Zheng Backup Mentor: Anthony Kara Jianwei 08/22/2012.
Is Your Mobile App Secure. DEF CON 23 Wall of Sheep Sat
Security.  is one of the most widely used and regarded network services  currently message contents are not secure may be inspected either.
The Terminator to Android Hardening Services
EECS 354 Network Security Reverse Engineering. Introduction Preventing Reverse Engineering Reversing High Level Languages Reversing an ELF Executable.
AppShield: A Virtual File System in Enterprise Mobility Management Zhengyang Qu 1 Northwestern University, IL, US,
Android Security Auditing Slides and projects at samsclass.info.
Christopher Kruegel University of California Engin Kirda Institute Eurecom Clemens Kolbitsch Thorsten Holz Secure Systems Lab Vienna University of Technology.
VMM Based Rootkit Detection on Android Class Presentation Pete Bohman, Adam Kunk, Erik Shaw.
1 Java applications reverse engineering Antoni Bertel AUGUST 4, 2015.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
Slides and projects at samsclass.info. Adding Trojans to Apps Slides and projects at samsclass.info.
Title of Presentation DD/MM/YYYY © 2015 Skycure Why Are Hackers Winning the Mobile Malware Battle.
Dilip Dwarakanath.  The topic I’m about to present was taken from a paper titled “Apple iOS 4 Security Evaluation” written by Dino A Dai Zovi.  Dino.
Canh Le My  Motivation  Android app packing  How android execute your application  Available tools  Demonstration 2.
Dynamic Vetting Android Applications for Privilege-escalation Risks Jiaojiao Fu 1.
Classes, Interfaces and Packages
VMM Based Rootkit Detection on Android
Java & The Android Stack: A Security Analysis Pragati Ogal Rai Mobile Technology Evangelist PayPal, eBay Java.
2014 When Android Apps Go Evil Jing Xie Lookout Inc #GHC
 Group 6 Project Presentation. Application Overview  The idea of the Android application is to use the Gale–Shapley algorithm that will match Medical.
G2 - Keit Team members: ●Siyang Piao ●Peter Huang ●Bojun Jin ●Ivy Wang ●Jing Wang.
CopperDroid Logan Horton. Android - Background Android is complicated to analyse due to having 2 places to check for code execution Normally, code is.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
1. Presentation Agenda  Identify Java Card Technology  Identify Elements of Java Card applications  Communicating with a Java Card Applet  Java Card.
Joshua Garcia Institute for Software Research
Mobile Hacking - Fundamentals
Android Mobile Application Development
Swords and shields: A study of mobile game hacks and existing defences
TriggerScope: Towards Detecting Logic Bombs in Android Applications
Unit 3 Section 6.4: Internet Security
Cash Me Presented By Group 8 Kartik Patel, Aaron Zhong, Wen-Kai Chen,
GC101 Introduction to computer and program
Zhengyang Qu, Shahid Alam. , Yan Chen, Xiaoyong Zhou
APK Downloader
Harvesting Runtime Values in Android Applications That Feature Anti-Analysis Techniques Presented by Vikraman Mohan.
TaintART: A Practical Multi-level Information-Flow Tracking System for Android RunTime Sadiq Basha.
Presented by Xiaohui (Amy) Lin
UoABuddyApp.
Un</br>able’s MySecretSecrets
.NET Framework: Backdoors
Android Platform, Android App Basic Components
When Machine Learning Meets Security – Secure ML or Use ML to Secure sth.? ECE 693.
Presentation transcript:

Northwestern University, IL, US, Measurement of Anti-reverse Engineering Techniques in Android Applications She worked on this project mainly during her summer internship at northwestern university. Northwestern University, IL, US,

Outline Introduction Reverse Engineering Techniques Design & Implementation Results Comparison

Android App compilation

Reverse engineering Android Apps Reverse Engineering Talk

What to benefit from reverse engineering? Inject ad-lib, repackage Steal the intelligence property Manipulate the execution of application User privacy collection, Financial loss… Cheat the game

What to benefit from reverse engineering? Inject ad-lib, repackage

What to benefit from reverse engineering? Inject ad-lib, repackage Steal the intelligence property Manipulate the execution of application User privacy collection, Financial loss… Cheat the game

Usage of Anti-reverse engineering techniques Developers: Protect their private property Harden the security of users Malware authors: Prevent the malware from being detected and analyzed

Outline Introduction Reverse Engineering Techniques Design & Implementation Results Comparison

Lexical Obfuscation Package, class, method, variable, parameter names kept in the bytecode Extracting lexical information helps human understand algorithm and recover the java code

Example package artificialDriving {public class Navigator{}} package connectionHandler {public class BluetoothHandler{}} package userInterface {public class {}} package a { public class a{ public void a(){} public void(int a){} } public class b{ public void a(int a){} Using the same identifier over and over again in all classes and for all parameters at least once makes differentiation very demanding for any human analyst. To increase the complexity, overloading is used to make the differentiation of the methods even harder.

Random/Non-alpha Identifier name public final class CcoCIcI{ private static final byte[] COcocOlo; private static boolean CcoCIcI; private static BluetoothAdapter IoOoOIOI; … } package 你{ public class 音{ public void 你() {} public void 你(int ){} Trojan mentioned earlier makes use of a different approach that names classes and static variables by only using permutations of the characters o, c, i and l.Hard to memorize and differentiate. The illegibility of non-alphabetical characters enhancing this technique. But not only analysts are affected. Any software unable to deal with foreign characters will most likely produce errors or crash.

Anti-debug Stop execution when find debugger connected if (android.os.Debug.isDebuggerConnected()){ android.os.Process.killProcess(android.os.Process.myPid()); } Stop execution when running in emulator Validate device identifer IMEI, Phone number, voice mail numer, SIM serial number, subscriber ID, brand, device, model… The application stops its execution if the presence of a debugger is detected. This can be checked at the start of the application or regularly for instance at the beginning of each important method. They explore their runtime environment before they start their actual application routines.

Tamper Detection Validate the size of certain files or the file modification time stamps Hash values/checksums of code blocks, classes or the whole program Verify the signature of the apk file In order to detect any manipulation of the application a mechanism that verifies the integrity of the application can be implemented. The check can be executed at the start of the application or before certain methods are called.

Anti-decompiling Java decompiling: dex2jar + JAD Damage the dex.class Goto not available in Java :label_1 goto :label_3 :label_2 goto :label_4 :label_3 goto :label_2 :label_4 To prevent the decompilation of Java/Dalvik bytecode to Java source code, language constructs only valid in bytecode can be used This gap between the different languages can be exploited by injecing different goto statements into the bytecode. In order for microprocessors to be able to execute statements of higher level programming languages, they need to be translated by using the unconditional jump instruction goto. Figure 4.1 shows a series of instructions that should never be executed. Because of the nested calls it is hard to detect the loop created with the goto statements. If the analyzer is not aware of such constructs it could either get stuck in the loop itself, crash or produce defective code.

Crack the apktool Android primary framework of APK Packaged with dirs: lib, res, assets Rename res -> R Change the structure of APK that could not be captured by apktool APKTool is a commonly used APK decompile tool, it can be said that 99% of the market can decompile APK out with it. XML style, configuration, page file will be fully decompiled out. How to prevent apktool? We should start with the APKTool origin, APKTool is provided by the GOOGLE APK compiler tools, so completely based on the construction of Android primary framework of APK are easily crack, anti compiled catalogues are including lib, res, assets. By changing the contents frame like this, can let the failure of APKTool, the latest QQ decompile fail. See through decompression, QQ software including lib, R, assets directory, META-INF and so on, the main difference is the directory name res became R, concrete is operated by what way.

Bytecode Encryption Data represented only in encrypted version within the code Have a paired function for the purpose decryption Very diverse, hard to find a general, automatic for detection Obfuscators achieve encryption by introducing new methods to decrypt data represented only in encrypted form within the code. This data can represent everything from an integer to a full-blown file archive 1 containing one or more class files. Also dictionaries are possible that contain most of the strings used in the application. We locate some fixed patterns for some commerial bytocode encryptions tools.

Dynamic Loading Dynamically load dex.class in the runtime Dex file stored as Additional file within the apk file Download from a remote source (not able to be handled by static analysis) Within the class, using a byte array A method can be used in Android by using a custom class loader. It needs to make use of the ”DexFile” [11] class that is part of the Android API. For the class loader to be able to load code, it needs to be in the form of a dex file.

Native Code Android Linux Kernel Native Development Kit (NDK), package parts of application written by C/C++ Invoked with Java Native Interface (JNI) Packaged in .so lib, hard to reverse engineering Might have purposes other than just obfuscation, such as performance With the Native Development Kit (NDK) parts of an application can be written in the programming languages C and C++. This is possible because of Androids architecture that is based on a Linux kernel. Using the Java Native Interface (JNI), native code can be called from within the JVM.

Reflection Inspection of classes, interfaces, fields, and methods at runtime Modify private members at runtime Hard for static analysis Crypto cryptModule = new Crypto(); privateKey = cryptModule.getPrivateKey(); Object reflectedClassInstance = Class.forName(“de.tum.secureApp.Crypto”).newInstance(); Method methodToReflect = reflectedClassInstance.getClass().getMethod(“getPrivateKey”); Object invokeResult = methodToReflect.invoke(reflectedClassINstance); Reflection is an obfuscation techniqe of the data obfuscation. It is a powerful feature, typically used to extend applications with external features, to browse classes, for debugging and in test tools. But it can also be used to obfuscate applications. https://www.youtube.com/watch?v=ciDjI5EXew0

Outline Introduction Reverse Engineering Techniques Design & Implementation Results Comparison

Framework

Lexical Obfuscation Detection Parse the class name, super class name, field name, method name, source name from smali files Construct a dictionary by db from wikiperdia Check if a identifier contains meaning words length larger than 1

Anti-debug Detection Run the application automatically on real device and emulator Check if the app only crashes on emulator

Tamper detection Repackage and sign the application with our signature Run the resigned version and original version in parallel Check if only the resigned version crash

Anti decompiling detection Check if the application could be decompiled to smali by using apktool Check if the application could be decompiled to java by using dex2jar + jdcore

Other detection Native code Dynamic Loading Java Reflection Packaged .so file Dynamic Loading “DexClassLoader” “DexFile” Java Reflection Ljava/lang/reflect/Method Bytecode encryption Check if dex.class is packaged Check the existence of Activities in AndroidManifest,xml

Results Techniques #Apps use (in 2400 top popularity apps on Google Play) Lexical Obfuscation 2398 Native Code 852 Dynamic Loading 1406 Reflection 2267 Anti-decompiling 41 Anti-debug 188 Tamper detection 300 Bytecode-encryption 5

Results(cont.) Techniques #Apps use (in 2400 top popularity apps on Chinese App Market) Lexical Obfuscation N/a Native Code 1046 Dynamic Loading 700 Reflection 1900 Anti-decompiling 30 Anti-debug 256 Tamper detection 105 Bytecode-encryption 54

Facts Social condition has great impact on Android Obfuscation Technique difficulty has great impact on the frequency of Android Obfuscation methods

Comparison Techniques Intention Ease of use Popularity Ease of reverse engineering Prevent injection Commerical/developer Lexical Pure Easy High Middle No Proguard Native Various developer Dynamic Loading Reflection Anti-decom Low Difficult Yes Dexguard Anti-debug Low, rarely Tamper detection Bytecode-encryption Ijiami, bangcle

Thank you! Questions? http://list.cs.northwestern.edu/mobile/