17 th ACM CCS (October, 2010).  Introduction  Problem Statement  Approach  RG Design  Implementation  Related Work 2 A Seminar at Advanced Defense.

Slides:



Advertisements
Similar presentations
Credit hours: 4 Contact hours: 50 (30 Theory, 20 Lab) Prerequisite: TB143 Introduction to Personal Computers.
Advertisements

Goal: Write Programs in Assembly
1 Lecture 3: Instruction Set Architecture ISA types, register usage, memory addressing, endian and alignment, quantitative evaluation.
Integrity & Malware Dan Fleck CS469 Security Engineering Some of the slides are modified with permission from Quan Jia. Coming up: Integrity – Who Cares?
Instruction Set Architecture Classification According to the type of internal storage in a processor the basic types are Stack Accumulator General Purpose.
Joshua Mason, Sam Small Johns Hopkins University Fabian Monrose University of North Carolina Greg MacManus iSIGHT Partners 16th ACM CCS.
© Janice Regan Problem-Solving Process 1. State the Problem (Problem Specification) 2. Analyze the problem: outline solution requirements and design.
Modern Compiler Internal Representations Silvius Rus 1/23/2002.
Compiler Challenges, Introduction to Data Dependences Allen and Kennedy, Chapter 1, 2.
This set of slides is provided by the author of the textbook1 Introductory Topics l Computer Programming l Programming Life-Cycle Phases l Creating an.
The Analytical Engine Module 6 Program Translation.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. COMPSCI 125 Introduction to Computer Science I.
CSCE 121, Sec 200, 507, 508 Fall 2010 Prof. Jennifer L. Welch.
1 Key Concepts:  Why C?  Life Cycle Of a C program,  What is a computer program?  A program statement?  Basic parts of a C program,  Printf() function?
Data Structure and Algorithm 1 Yingcai Xiao. You Me The Course (
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. COMPSCI 125 Introduction to Computer Science I.
Programming A Historic Perspective on Code Reuse Yingcai Xiao.
@ NCSU Zhi NCSU Xuxian Microsoft Research Weidong Microsoft NCSU Peng NCSU ACM CCS’09.
Code Injection and Software Cracking’s Effect on Network Security Group 5 Jason Fritts Utsav Kanani Zener Bayudan ECE 4112 Fall 2007.
This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit
Computer Programming-1 CSC 111 Chapter 1 : Introduction.
Computer Programming I Hour 1-Getting Started. Word of Day —Chinese proverb A journey of a thousand miles is started by taking the first step. —Aristophanes.
A survey of Buffer overflow exploitation on HTC touch mobile phone Advanced Defense Lab CSIE NCU Chih-Wen Ou.
© Janice Regan, CMPT 128, Jan CMPT 128 Introduction to Computing Science for Engineering Students Creating a program.
Introduction to .NET Framework
Web Application Access to Databases. Logistics Test 2: May 1 st (24 hours) Extra office hours: Friday 2:30 – 4:00 pm Tuesday May 5 th – you can review.
CIS Computer Programming Logic
Java Virtual Machine Java Virtual Machine A Java Virtual Machine (JVM) is a set of computer software programs and data structures that use.
MIPS coding. SPIM Some links can be found such as:
CHAPTER 1 Overview of Programming and Problem Solving.
CISC105 General Computer Science Class 1 – 6/5/2006.
An Introduction to Computers August 12, 2008 Mrs. C. Furman.
Comp Sci 251 Intro 1 Computer organization and assembly language Wing Huen.
Introduction to Programming David Goldschmidt, Ph.D. Computer Science The College of Saint Rose Java Fundamentals (Comments, Variables, etc.)
Vasileios P. Kemerlis, Georgios Portokalidis, Angelos D. Keromytis Network Security Lab, Department of Computer Science, Columbia University, USA 21 st.
Java means Coffee Java Coffee Beans The name “JAVA” was taken from a cup of coffee.
EECS 354 Network Security Reverse Engineering. Introduction Preventing Reverse Engineering Reversing High Level Languages Reversing an ELF Executable.
Lecture #5 Introduction to C++
Computer Science in Medicine MDCS 134 Lecture 2. What is a Software? Its step by step instructions telling the computer how to process data, execute operations.
These notes were originally developed for CpSc 210 (C version) by Dr. Mike Westall in the Department of Computer Science at Clemson.
Programming language. Definition Programming language is a formal language designed to communicate instructions to a computer. Programming languages can.
Introduction 1 (Read Chap. 1) What is Programming? For some given problem: design a solution for it -- identify, organize & store the problem's data --
Programming in C++ Dale/Weems/Headington Chapter 1 Overview of Programming and Problem Solving.
nd Joint Workshop between Security Research Labs in JAPAN and KOREA Polymorphic Worm Detection by Instruction Distribution Kihun Lee HPC Lab., Postech.
Information Leaks Without Memory Disclosures: Remote Side Channel Attacks on Diversified Code Jeff Seibert, Hamed Okhravi, and Eric Söderström Presented.
By: Cheryl Mok & Sarah Tan. Java is partially interpreted. 1. Programmer writes a program in textual form 2. Runs the compiler, which converts the textual.
Exploiting Instruction Streams To Prevent Intrusion Milena Milenkovic.
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. CSC 110 – INTRO TO COMPUTING - PROGRAMMING Overview of Programming.
Lecture 7 Rootkits Hoglund/Butler (Chapter 5-6). Avoiding detection Two ways rootkits can avoid detection –Modify execution path of operating system to.
Data Representation. How is data stored on a computer? Registers, main memory, etc. consists of grids of transistors Transistors are in one of two states,
1 Overview of Programming Principles of Computers.
Security Attacks Tanenbaum & Bo, Modern Operating Systems:4th ed., (c) 2013 Prentice-Hall, Inc. All rights reserved.
Chapter 1: Introduction to Visual Basic.NET: Background and Perspective Visual Basic.NET Programming: From Problem Analysis to Program Design.
1 Introduction Read D&D Sec 1.8; Sec 1.13 THE Java tutorial -
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Programming Languages Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
A Framework For Trusted Instruction Execution Via Basic Block Signature Verification Milena Milenković, Aleksandar Milenković, and Emil Jovanov Electrical.
Basic Concepts: computer, program, programming …
Assembler, Compiler, MIPS simulator
The Machine Model Memory
CSCI206 - Computer Organization & Programming
GC101 Introduction to computer and program
Assembly Language Programming of 8085
BINARY CODE.
CSC 495/583 Topics of Software Security Stack Overflows (2)
CSCI206 - Computer Organization & Programming
Week 2: Buffer Overflow Part 2.
Computer Programming-1 CSC 111
Programming language translators
Principles of Computers 15th Lecture
Presentation transcript:

17 th ACM CCS (October, 2010)

 Introduction  Problem Statement  Approach  RG Design  Implementation  Related Work 2 A Seminar at Advanced Defense Lab

3

 A typical and often implicit security assumption is that a program is only semantically meaningful on one platform › Radically different instruction sets › Different program encodings  But, is it true? A Seminar at Advanced Defense Lab 4

 Automatically generate a single binary string that › is a valid program on some architectures › can have completely different desired runtime behaviors A Seminar at Advanced Defense Lab 5

 Steganography. › m 1 (b) = normal program › m 2 (b) = secret information  Rogue Updates › m1(b) = normal program › m update (b) = malware › Security measures, such as digitally signing the code, are insufficient since they only verify the code itself has not been tampered with, not the execution environment A Seminar at Advanced Defense Lab 6

 Exfiltration Protection › m 1 (b) = important program › m 2 (b) = delete itself  Viruses and Shellcode  New Architecture › A company switches from architecture A to B A Seminar at Advanced Defense Lab 7

 Notation › ∑ = {0, 1} › Bit string › m j (b i )  The execution of program b i on machine m j › (bi, mj)  b i is compiled for m j ›  b i is not a valid string on m j A Seminar at Advanced Defense Lab 8

 Platform-Independent Program ›  PIP generation challenge › Given (b i, m j ) list › A Seminar at Advanced Defense Lab 9

10

A Seminar at Advanced Defense Lab 11 A Gadget

A Seminar at Advanced Defense Lab 12

A Seminar at Advanced Defense Lab 13

A Seminar at Advanced Defense Lab 14

 Header-Init: Finding Gadget Headers › (nop)* (jmp) (.)*  Header generation algorithm › Enumeration all possible string  X  several days for 4-byte header › Make header templates › Computing the intersection of templates A Seminar at Advanced Defense Lab 15

 Disassemble, Gadget-Gen, and Merge A Seminar at Advanced Defense Lab 16

A Seminar at Advanced Defense Lab 17

A Seminar at Advanced Defense Lab 18

 RG is currently implemented in about 5,000 lines of a mixture of C++ and Ruby.  The gadget finder program finds all the possible 4-byte, 8-byte, and 12-byte gadget headers A Seminar at Advanced Defense Lab 19

 32-bit long › 90.12% for ARM › 68.46% for MIPS › 32.69% for x86 A Seminar at Advanced Defense Lab %

 Atomic NOPs › 326 for x86 › 241 for ARM › 14,709,948 for MIPS  Three-architecture gadget headers › 4×10 14 for 12-byte long › 0.07 sec for 4-byte, 16 secs for 8-byte, 7 hours for 12-byte A Seminar at Advanced Defense Lab 21

A Seminar at Advanced Defense Lab 22

 Hello world  Prime Checker  Shellcode  Vulnerabilities › Snort 2.4 › iPhone’s coreaudio library A Seminar at Advanced Defense Lab 23

A Seminar at Advanced Defense Lab 24 Using PI Translation

A Seminar at Advanced Defense Lab 25

 Muti-Platform Execution › Fat binary  two independent program images are combined with special meta-data that is used at run-time to select the appropriate image › Drew Dean in 2003 › Nemo in 2005 [link]link A Seminar at Advanced Defense Lab 26

 Steganography › Simmons in 1984  The prisoner’s problem A Seminar at Advanced Defense Lab 27

 PIP length  More Gadget Headers  Large Input Programs  Indirect Jumps and Self-Modifying Code  Generating Platform › m(b) = normal program › generate m’ › m’(b) = malware A Seminar at Advanced Defense Lab 28

A Seminar at Advanced Defense Lab 29