Improving Mobile Malware Investigations with Static and Dynamic Code Analysis Techniques
Similar to the PC world, the abundance of mobile malware has become a serious threat to smartphone users. Thousands of new apps or app versions are uploaded to popular app stores every day. All of them need to be analyzed against violations of the app store's content policy. In particular, one wishes to detect whether an application contains malicious behavior. Similarly, antivirus companies check thousands of apps every day to determine whether or not they are malicious. Both app store operators and antivirus vendors face the same problem: it is generally challenging to tell apart malware from benign applications. This is because malware developers aim to hide their applications' malicious behavior as long as possible from being detected by applying different obfuscation techniques. The raising sophistication with which such measures are implemented pose a serious problem not just to automated malware detection approaches but also to the manual analysis of potential malware by human experts. In this dissertation, we propose a novel reverse engineering framework that includes different approaches for automatically extracting insights of the behavior of an Android application. In particular, we propose a novel approach, based on machine learning, to automatically identify sensitive source and sink API methods. Furthermore, we propose an approach to automatically extract concrete runtime values, such as SMS messages or URLs, at any code location. The approach combines static and dynamic code analysis techniques in such a way that it is resistant against common obfuscation techniques. A further contribution is an approach that extracts concrete environment conditions that need to be fulfilled in order to reach a certain code location. This approach is based on code fuzzing that gets supported by static and dynamic code analysis techniques. All these approaches provide different insights into the analyzed application, in particular how and under which circumstances the application communicates with its environment. The reliable extraction of these insights requires novel solutions that address fundamental limitations of current static and dynamic code analysis approaches. We, therefore, also contribute new code analysis techniques that reduce well known limitations of code analysis, such as reflective method calls or inter component communications, resulting in incomplete callgraphs, or complex path conditions that result in reachability problems. All the insights that are extracted by our proposed approaches help human experts in speeding up their malware investigations. Manual malware investigations benefit from the automatic extraction of precise insights of the behavior of an application, which otherwise requires a time consuming, manual analysis. On the other hand, existing automated code analysis approaches that are used during malware investigations benefit from our new techniques by reducing well known limitations. This improves the detection rate of these approaches.