1 The Project of this year Mariano Ceccato FBK - Fondazione Bruno Kessler

Slides:



Advertisements
Similar presentations
Security Issues of Peer-to-Peer Systems February 14, 2001 OReilly Peer-to-Peer Conference Nelson Minar, CTO POPULAR POWER.
Advertisements

1 Final remarks Mariano Ceccato FBK - Fondazione Bruno Kessler
1 Web Applications development and testing Alessandro Marchetto Fondazione Bruno Kessler-IRST,
Laptop Security in the current IT world W3 group.
Information System Security AABFS-Jordan Summer 2006 Mobile Code Security Prepared by: Mossab Al Hunaity Supervised by: Dr. Loai Tawalbeh.
By Olga Gelbart Mobile Agents By Olga Gelbart
Tree Recursion Traditional Approach. Tree Recursion Consider the Fibonacci Number Sequence: Time: , 1, 1, 2, 3, 5, 8, 13, 21,... /
§3 Dynamic Programming Use a table instead of recursion 1. Fibonacci Numbers: F(N) = F(N – 1) + F(N – 2) int Fib( int N ) { if ( N
Cloakware Corporation, 260 Hearst Way, Suite 311, Kanata, Ontario, Canada K2L 3H1 Spencer Cheng Trusting DRM Software Presentation.
The Mobile Code Paradigm and Its Security Issues Anthony Chan and Michael Lyu September 27, 1999.
Tamper Resistant Software An Implementation By David Aucsmith, IAL “This paper describes a technology for the construction of tamper resistant software.”
Mobile Code Security Aviel D. Rubin, Daniel E. Geer, Jr. MOBILE CODE SECURITY, IEEE Internet Computing, 1998 Minkyu Lee
H Apr-01 Clark Thomborson Software Security CompSci 725 Handout 28: Report Writing #2 (Sample Titles & Abstracts) Clark Thomborson University of.
Guanjong High School Group 2. Physical Network Access Security Getting into a network closet could easily allow someone to disable computers and connect.
Java Code Obfuscation Neerja Bhatnagar. Reverse Engineering Figuring out source code corresponding to a given byte code Source code intellectual property,
Mobile Agents with Aglets By Shane Lunceford. Objectives By the end of this presentation you should be able to: Describe what a mobile agent is Explain.
The development of Internet A cow was lost in Jan 14th If you know where it is, please contact with me. My QQ number is QQ is one of the.
1 Topic 1 – Lesson 3 Network Attacks Summary. 2 Questions ► Compare passive attacks and active attacks ► How do packet sniffers work? How to mitigate?
18/03/2007Obfuscation 1 Software protection Mariano Ceccato FBK - Fondazione Bruno Kessler
Presented by Justin Bode CS 450 – Computer Security February 17, 2010.
Computer Viruses and Worms By Rafael Albuernes What is a Virus? What is a Virus? What is a Worm? What is a Worm? Types of Infections Types of Infections.
ACTIVE X By Ethan Huang. OUTLINE What is ActiveX? Component of ActiveX Why ActiveX? ActiveX and Java Security Issue.
Copyright © 2002 Pearson Education, Inc. Slide 5-1 PERTEMUAN 8.
Polymorphism in Computer Viruses CS265 Security Engineering Term Project Puneet Mishra.
Mobile Code and Worms By Mitun Sinha Pandurang Kamat 04/16/2003.
Virtual Machine approach to Security Gautam Prasad and Sudeep Pradhan 10/05/2010 CS 239 UCLA.
Breaking Abstractions and Unstructuring Data Structures Christian Collberg Clark Thomborson Douglas Low “Mobile programs are distributed in forms that.
Jarhead Analysis and Detection of Malicious Java Applets Johannes Schlumberger, Christopher Kruegel, Giovanni Vigna University of California Annual Computer.
Introduction to Java CSIS 3701: Advanced Object Oriented Programming.
DroidKungFu and AnserverBot
EEL 5937 Mutable agents EEL 5937 Multi Agent Systems Lecture 21, March 23, 2003 Lotzi Bölöni.
Chapter 4.  Can technology alone provide the best security for your organization?
Presented by Amlan B Dey.  Access control is the traditional center of gravity of computer security.  It is where security engineering meets computer.
Self-Protecting Mobile Agents Lee Badger Brian Matt Larry Spector Doug Kilpatrick Funded by both OASIS and Active Networks Programs NAI Labs 14 Feb
Spyware and Viruses Group 6 Magen Price, Candice Fitzgerald, & Brittnee Breze.
3-Protecting Systems Dr. John P. Abraham Professor UTPA.
1 22 August 2001 The Security Architecture of the M&M Mobile Agent Framework P. Marques, N. Santos, L. Silva, J. Silva CISUC, University of Coimbra, Portugal.
Client Side Vulnerabilities Aka, The Perils of HTTP Lesson 14.
Computer project – computer virus 1D Christy Chan (9) Patricia Cheung (14)
ANTIVIRUS SOFTWARE.  Antivirus software is the most widespread mechanism for defending individual hosts against threats associated with malicious software,
Dimeji Ogunshola 10b  There are many threats to your computer system. The computer threats can be mainly transferred through unknown s or accidental.
Applying White-Box Cryptography SoBeNet user group meeting October 8, 2004 Brecht Wyseur.
Mathieu Castets October 17th,  What is a rootkit?  History  Uses  Types  Detection  Removal  References 2/11.
IT Essentials 1 Chapter 9 JEOPADY RouterModesWANEncapsulationWANServicesRouterBasicsRouterCommands RouterModesWANEncapsulationWANServicesRouterBasicsRouterCommands.
Android Mobile Security Krystal Salerno. Introductions.
2011/12/20 1 Tongbo Luo, Hao Hao, Wenliang Du, Yifei Wang, and Heng Yin Syracuse University ACSAC 2011.
1 Diversifying Sensors to Improve Network Resilience Wenliang (Kevin) Du Electrical Engineering & Computer Science Syracuse University.
November 19, 2008 CSC 682 Use of Virtualization to Thwart Malware Written by: Ryan Lehan Presented by: Ryan Lehan Directed By: Ryan Lehan Produced By:
Mobile Agent Security Presented By Sayuri Yonekawa October 17, 2000.
Antivirus software.
Computer Security By Duncan Hall.
Applying Software Obfuscation to Malicious Code Teigh Berg.
Tamper Resistant Software: An Implementation By David Aucsmith, IAL In Information Hiding Workshop, RJ Anderson (ed), LNCS, 1174, pp , “Integrity.
Code Obfuscation Tool for Software Protection. Outline  Why Code Obfuscation  Features of a code obfuscator Potency Resilience Cost  Classification.
Code Generation Scenario. Gent, 21 maart 2005 Code Generation Scenario Applied to Instant Messenger scenario  Illustrates use of different devices/platforms.
1 Xen and the Art of Binary Modification Lies, Damn Lies, and Page Frame Addresses Greg Cooksey and Nate Rosenblum, March 2007.
Secure Execution of Computations in Untrusted Hosts S. H. K. Narayanan 1, M.T. Kandemir 1, R.R. Brooks 2 and I. Kolcu 3 1 Embedded Mobile Computing Center.
Enabling Control over Adaptive Program Transformation for Dynamically Evolving Mobile Software Validation Mike Jochen, Anteneh Anteneh, Lori Pollock University.
Antivirus Software Troy Behmer. Outline Topics covered: – What is Antivirus software (AVS)? – What are the advantages and disadvantages of AVS? – What.
Week-14 (Lecture-1) Malicious software and antivirus: 1. Malware A user can be tricked or forced into downloading malware comes in many forms, Ex. viruses,
©2014 Check Point Software Technologies Ltd Security Report “Critical Security Trends and What You Need to Know Today” Nick Hampson Security Engineering.
Botnets A collection of compromised machines
Panda Cloud Antivirus Pedro Bustamante
POPULAR POWER Security Issues of Peer-to-Peer Systems
Botnets A collection of compromised machines
With so many major corporations and people falling victim to cybercrimes and with viruses and malware infecting several computers and networks around.
Get Rid of a Trojan Horse? Even with a competent anti-virus installed, PCs could still be susceptible to malicious programs such.
SoK: Automated Software Diversity
Introducing the .NET Framework
Introduction to Internet Worm
Presentation transcript:

1 The Project of this year Mariano Ceccato FBK - Fondazione Bruno Kessler

2 Traditional computer security Most computer security research: Protect the integrity of a benign host (and its data) from attacks by malicious client programs Basis of the Java security model Downloaded applet or virus infested application Restrict the actions that the client is allowed to perform Software isolation A program is not able to write outside of a designated area (sandbox)

3 More recent computer security Interest in mobile agents changed the view of computer security Benign client code being threatened by host on which it has downloaded/installed Defend a client is much more difficult than defend a host. To defend the host all is needed is to restrict the client Once the client code is in the host, the host can use any technique to violate its integrity. Software piracy Reverse Engineering Software tampering

4 Problem: Malicious Reverse Engineering Valuable piece of code is extracted from an application and incorporated into competitors code.

5 Obfuscation Obfuscation transforms a program into a new program which: Has the same semantics Is harder to reverse engineer

6 Example public class Fibonacci { public int fib ( int n ) { if ( n <= 2 ) return 1; else return fib( n - 1 ) + fib( n - 2 ); }

7 Example: Obfuscation public class x {public int x ( int x ) { return x <=2 ? 1 : x(x-1)+x(x-2); }}

8 What is obfuscation? It is a software protection technique. Transforms the application into one that is functionally identical to the original but is more difficult to reverse engineer. Can never completely protect an application from malicious reverse engineering. Given sufficient time and resources, an adversary can reverse engineer any obfuscated code.

9 Potential application domains Good ones … Obscure program logic. Hide ownership information (e.g. watermarks --- discussed by Mariano) Bad ones … Development of polymorphic virus or code that contains obfuscated malicious payload. Code Plagiarism!

10 Defining Obfuscation Let P P be a transformation from source program P to target program P. P P is an obfuscating transformation if P and P have the same observable behaviour; i.e. the following two conditions hold (Collberg and Thomborson): If P fails to terminate or terminates with an error, then P may or may not terminate. Otherwise, P must terminate and produce the same output as P. Two important conditions that need to be preserved: functionality – the obfuscated program should have the same input/output behaviour as the input program (semantics preserving transformation), and unintelligibility – the obfuscated program should be unintelligible to the adversary in some sense.

11 Goals of obfuscation … Ideal obfuscator (Ehud Barak, PhD, 2004):- Should simulate the black box property. Fails if there exists at least one program that cannot be obfuscated by this method; i.e. an adversary can learn something from an examination of the obfuscated version of this program that cannot be learned by merely executing the program repeatedly. Practical obfuscator (What we have now):- Use transforms such that the resources required for undoing them are too expensive for attackers.

12 Taxonomy of Obfuscations Layout obfuscation: Changes or removes useful information from the IL without affecting real instructions. E.g. comment stripping, identifier renaming. Data Obfuscation: Targets data and data structures in the program. E.g. changing data encoding, splitting/merging arrays. Control-flow obfuscation: Affects the control-flow within the code. E.g. Reordering statements, introducing dummy control-flow.

13 Layout Obfuscation Changes or removes useful information from the IL without affecting real instructions. E.g. comment stripping, identifier renaming. Used in commercial obfuscators like DashO for Java and Dotfuscator for MSIL … both from PreEmptive Corp.

14

15 Data Obfuscations Variable Encoding

16 Data Obfuscations Variable splitting and merging Arrays can be split into several sub-arrays, two or more arrays can be merged into one bigger array, folded so as to increase the number of dimensions, or flattened to decrease the number of dimensions.

17

18 Control-flow Obfuscations Aggregation/De-Aggregation: The original control-flow logic is disturbed by coalescing unrelated methods or splitting related methods. E.g. DOJ (Design Obfuscator for Java) Method inlining, outlining, cloning, and loop transformations are also fall in this class. Ordering: This category performs reordering operations on statements, loops, and expressions to disturb the locality of related information. Spurious Computations: This type of obfuscation is done by modifying the real control-flow by adding spurious computation blocks. E.g. Opaque predicates

19 Opaque Predicates An opaque predicate ( ): conditional expression thus called predicate value is known to the obfuscator, value difficult for the adversary to deduce (by statically analysing the code) thus called opaque The opacity property of predicates determines the resilience of control-flow transformations, i.e. opaque a predicate difficulty in determining its outcome by static analysis.

20 Opaque Predicates T / F – always evaluates to T/F (Opaquely T/F Predicate) ? – may sometimes evaluate to T and sometimes to F. (Opaquely Unknown Predicate)

21 Embedding of opaque predicates (Dummy Code insertion)

22 Embedding of opaque predicates (Loop condition extension) i = 1; while (i < 100){ … i++; } Can be transformed into: i = 1; j = 100; while ((i < 100) && (j*j*(j+1)*(j+1)%4 == 0) T ){ … i++; j = j*i+3; }

23 Opaque Predicates based on aliasing Aliasing occurs when two variables refer to the same memory location. In the presence of aliasing, inter-procedural static analysis is intractable. This intractability property of pointer aliasing can be used to construct opaque predicates. Construction based on the fact that it is impossible for approximate static analysers to detect all aliases all of the time. The basic idea: Construct a dynamic data structure and maintain a set of pointers on it. Make opaque predicates from these pointers. Insert code for manipulating these pointer locations, yet maintain the invariant condition.

24 Opaque Predicates based on aliasing

class A { int f1 ; int f2 ; void m ( ) { int tmp ; f1 = 1 ; f2 = f1 ++; tmp = f1 ; tmp = tmp - f1 ; f1 = f1 +f2 ; } class A { int f1 ; int f2 ; void m ( ) { int tmp ; if ( f ==g ) { f1 = 1 ; f2 = f1 ++; } else { } if ( g != h ) { tmp = f1 ; tmp = tmp - f1 ; f1 = f1 +f2 ; } else { } class A { int f1 ; int f2 ; void m ( ) { int tmp ; if ( f ==g ) { f1 = 1 ; f2 = f1 ++; } else { tmp = f1 +f2 / 5 ; f1 = f2 - tmp ; } if ( g != h ) { tmp = f1 ; tmp = tmp - f1 ; f1 = f1 +f2 ; } else { f1 = tmp / f2 ; tmp = f2%59+f2 ; } Aliases : f = = g g ! = h Update : g = g.left( ) f = g.left().move() class A { int f1 ; int f2 ; void m ( ) { f1 = 1 ; f2 = f1 ++; int tmp = f1 ; tmp = tmp - f1 ; f1 = f1 + f2 ; } class A { int f1 ; int f2 ; void m ( ) { int tmp ; if ( f ==g ) { f1 = 1 ; g = g.left( ) ; f2 = f1 ++; } else { g = g.left ( ) ; tmp = f1 +f2 / 5 ; f1 = f2 - tmp ; } if ( g != h ) { f = g.left().move() ; tmp = f1 ; tmp = tmp - f1 ; g = g.left( ) ; f1 = f1 +f2 ; } else { f1 = tmp / f2 ; tmp = f2%59+f2 ; f = g.left().move() ; } Alias based opaque predicates

26 JSnapScreen Open source java project (2k LoC) It takes snapshoot of the current screen

27 Resources Java grammar for Txl JSnapScreen code Separated sources All the sources in a single file (merged) JSnapScreen class diagram Pointer intensive data-structure List of update expression List of opaque predicates

28 Mandatory requirements Work on the merged file Break basic blocks into many sub-parts Add opaque predicates Add random code Add update statements Txl rules must be briefly commented Deliver a readme describing how to run the obfuscator

29 Optional requirements Work on separated source files Transformation is non-deterministic If applied twice, it gives different results The changed code compiles The changed code runs

30 Delivery The project must be delivered one week (7 days) before the date of the exam