On the Effectiveness of API-Level Access Control Using Bytecode Rewriting in Android Presenter: Lu Gong.

Slides:



Advertisements
Similar presentations
Operating Systems Components of OS
Advertisements

New Security Issues Raised by Open Cards Pierre GirardJean-Louis Lanet GERMPLUS R&D.
Operating System Structures
Syracuse University, New York, USA
DroidScope: Seamlessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android Malware Analysis Lok Kwong Yan, and Heng Yin Syracuse University.
Wenliang Du Syracuse University Vicky Singh Syracuse University Hao Syracuse University.
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Policy Weaving for Mobile Devices Drew Davidson. Smartphone security is critical – 1200 to 1400 US Army troops to be equipped with Android smartphones.
1 Detection of Injected, Dynamically Generated, and Obfuscated Malicious Code (DOME) Subha Ramanathan & Arun Krishnamurthy Nov 15, 2005.
Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong.
New Direction for Software Protection in Embedded Systems Department of EECS University of Michigan Feb 22, 2007 Kang G. Shin.
Remote Method Invocation Chin-Chih Chang. Java Remote Object Invocation In Java, the object is serialized before being passed as a parameter to an RMI.
Contiki A Lightweight and Flexible Operating System for Tiny Networked Sensors Presented by: Jeremy Schiff.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
CS 206 Introduction to Computer Science II 01 / 23 / 2009 Instructor: Michael Eckmann.
R ETRO S KELETON : R ETROFITTING A NDROID A PPS Benjamin Davis, Hao Chen University of California, Davis MobiSys 2013.
CS 153 Design of Operating Systems Spring 2015 Lecture 24: Android OS.
Presentation By Deepak Katta
Efficient Privilege De-Escalation for Ad Libraries in Mobile Apps Bin Liu (SRA), Bin Liu (CMU), Hongxia Jin (SRA), Ramesh Govindan (USC)
Jarhead Analysis and Detection of Malicious Java Applets Johannes Schlumberger, Christopher Kruegel, Giovanni Vigna University of California Annual Computer.
1 Integrating a Network IDS into an Open Source Cloud Computing Environment 1st International Workshop on Security and Performance in Emerging Distributed.
A METHODOLOGY FOR EMPIRICAL ANALYSIS OF PERMISSION-BASED SECURITY MODELS AND ITS APPLICATION TO ANDROID.
DroidKungFu and AnserverBot
Lei Wu, Michael Grace, Yajin Zhou, Chiachih Wu, Xuxian Jiang Department of Computer Science North Carolina State University CCS 2013.
Vulnerability-Specific Execution Filtering (VSEF) for Exploit Prevention on Commodity Software Authors: James Newsome, James Newsome, David Brumley, David.
Previous Next 06/18/2000Shanghai Jiaotong Univ. Computer Science & Engineering Dept. C+J Software Architecture Shanghai Jiaotong University Author: Lu,
All Your Droid Are Belong To Us: A Survey of Current Android Attacks 단국대학교 컴퓨터 보안 및 OS 연구실 김낙영
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
Presenter: Hung-Fu Li HPDS Lab. NKUAS vCUDA: GPU Accelerated High Performance Computing in Virtual Machines Lin Shi, Hao Chen and Jianhua.
Java Virtual Machine Java Virtual Machine A Java Virtual Machine (JVM) is a set of computer software programs and data structures that use.
Behavior-based Spyware Detection By Engin Kirda and Christopher Kruegel Secure Systems Lab Technical University Vienna Greg Banks, Giovanni Vigna, and.
DeepDroid: Dynamically Enforcing Enterprise Policy on Android Devices Fall 2015 Instructor: Kun Sun, Ph.D.
Crossing The Line: Distributed Computing Across Network and Filesystem Boundaries.
Processes and OS basics. RHS – SOC 2 OS Basics An Operating System (OS) is essentially an abstraction of a computer As a user or programmer, I do not.
AppShield: A Virtual File System in Enterprise Mobility Management Zhengyang Qu 1 Northwestern University, IL, US,
Branch Regulation: Low-Overhead Protection from Code Reuse Attacks.
The Grid System Design Liu Xiangrui Beijing Institute of Technology.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Java™ How to Program, 9/e Presented by: Dr. José M. Reyes Álamo © Copyright by Pearson Education, Inc. All Rights Reserved.
Operating Systems David Goldschmidt, Ph.D. Computer Science The College of Saint Rose CIS 432.
2011/12/20 1 Tongbo Luo, Hao Hao, Wenliang Du, Yifei Wang, and Heng Yin Syracuse University ACSAC 2011.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Android Security Model that Provide a Base Operating System Presented: Hayder Abdulhameed.
RootKit By Parrag Mehta OUTLINE What is a RootKit ? Installation Types How do RootKits work ? Detection Removal Prevention Conclusion References.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
nd Joint Workshop between Security Research Labs in JAPAN and KOREA Polymorphic Worm Detection by Instruction Distribution Kihun Lee HPC Lab., Postech.
Android Permissions Demystified
Dynamic Vetting Android Applications for Privilege-escalation Risks Jiaojiao Fu 1.
Jun 14, 2004RAM-SE'04 Workshop, Oslo, Norway 1 Negligent Class Loaders for Software Evolution Yoshiki Sato, Shigeru Chiba (Tokyo Institute of Technology.
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
DeepDroid Dynamically Enforcing Enterprise Policy Manwoong (Andy) Choi
Java & The Android Stack: A Security Analysis Pragati Ogal Rai Mobile Technology Evangelist PayPal, eBay Java.
RealTimeSystems Lab Jong-Koo, Lim
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
Software, IEE Proceedings, Vol.152, Num.3, June 2005,Page(s): Prasanthi.S March, Java-based component framework for dynamic reconfiguration.
Java for android Development Nasrullah Khan. Using instanceof in Android Development the classes such as Button, TextView, and CheckBox, which represent.
1.3 Operating system services An operating system provide services to programs and to the users of the program. It provides an environment for the execution.
CopperDroid Logan Horton. Android - Background Android is complicated to analyse due to having 2 places to check for code execution Normally, code is.
Computer System Structures
Virtualization.
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Security and Programming Language Work on SmartPhones
TriggerScope: Towards Detecting Logic Bombs in Android Applications
AUDACIOUS: USER DRIVEN ACCESS CONTROL WITH UNMODIFIED OPERATING SYSTEM
TaintART: A Practical Multi-level Information-Flow Tracking System for Android RunTime Sadiq Basha.
2.1. Compilers and Interpreters
Presentation on Object Oriented programming Topic
Suwen Zhu, Long Lu, Kapil Singh
Presentation transcript:

On the Effectiveness of API-Level Access Control Using Bytecode Rewriting in Android Presenter: Lu Gong

Authors Students: Hao Hao, Vicky Singh Professor: Wenliang (Kevin) Du Dept. of EE & CS, Syracuse University, New York 1

The Conference AsiaCCS: –ACM Symposium on Information, Computer and Communications Security Rank C in the CCF recommendation list –Network and Information Security 2

The paper The first systematic study on the effectiveness of using bytecode rewriting for API-level access control Cited by: –Structural detection of android malware using embedded call graphs (AISec ’13) –Compac: Enforce Component-Level Access Control in Android (ACM CodaSpy ’14) 3

Background (1/3) Bytecode rewriting –Use static analysis to identify sensitive API calls –Instrument bytecode to control access –Aim at implement fine-grained access control 4

Background (2/3) API-Level Access Control 5

Background (3/3) Method invocation instructions: –invoke-virtual: used to invoke a normal virtual method –invoke-direct: used to invoke either a private instance method or a constructor –invoke-static: used to invoke a static method –invoke-interface: used to invoke an interface method on an object whose concrete class is not known –invoke-super: used to invoke the closest superclass’ virtual method 6

Scoping (1/5) Two kinds of byte-code rewrite mechanisms: 1.Put the reference monitor in another service 2.Put the reference monitor within the application Only focus on the second approach –Because the first one is fail-safe 7

Scoping (2/5) Assumption –The application either do not have native code or their native code is blocked from being executed Reasons –Native code is running in the same process space as DVM –With native code, the app can easily tamper the DVM state, thus byte-code rewriting is useless 8

Scoping (3/5) Privileged resources –Hardware devices –Kernel data –Data from another process space Ways to access them –System calls –Inter-process communication 9

Scoping (4/5) 10

Scoping (5/5) Concealing API usage (the 4 th attack) is possible –Java reflection –Dynamic binding 11

Prelude (1/2) Byte-code rewriting for a non-final class 12

Prelude (2/2) Byte-code rewriting for a final class 13

Methodology 1.Study all possible attacks against bytecode rewriting 2.Give deeper insight into the attacks 3.Make recommendations on how to defend against these attacks 14

Exploit JNI Naming Convention 15

The JNI naming convention 16

Dynamic binding 17

The problem Java_MyClass_my_1Func MyClass.my.1Func() MyClass.my_Func() 18

Case study 19

Recommendations If any names starts with numbers, bytecode rewriter should remove the digit as it is illegal. 20

Exploit Java Class Reloading 21

Example 22

Case Study (1/2) 23

Case Study (2/2) 24

25

Recommendations Stop application’s Java code from reloading preloaded Android core classes –BaseDexClassLoader.findClass() –DexFile.loadClass() 26

Exploit Customized RPC stubs 27

Case Study (1/2) 28

Case Study (2/2) 29

30

Recommendation Apply API-level access control on android.os.ServiceManager.getService() Alternative: rewrite android.os.Binder 31

Conclusion Although all problems are fixable, more static analysis and dynamic checking should be performed while byte-code rewriting 32

Thank you