Software Reversing Engineering (a.k.a. Reversing) Spiros Mancoridis. What is Reverse Engineering? Software Reverse Engineering: Reversing



Similar documents
Qiong Liu, Reihaneh Safavi Naini and Nicholas Paul Sheppard Australasian Information Security Workshop Presented by An In seok

Lecture 12: Software protection techniques. Software piracy protection Protection against reverse engineering of software

SECURE IMPLEMENTATIONS OF CONTENT PROTECTION (DRM) SCHEMES ON CONSUMER ELECTRONIC DEVICES

Parasitics: The Next Generation. Vitaly Zaytsev Abhishek Karnik Joshua Phillips

SkyRecon Cryptographic Module (SCM)

A Survey of Reverse Engineering Tools for the 32-Bit Microsoft Windows Environment

Fine-grained covert debugging using hypervisors and analysis via visualization

Systems Software. Introduction to Information System Components. Chapter 1 Part 2 of 4 CA M S Mehta, FCA

LASTLINE WHITEPAPER. In-Depth Analysis of Malware

Introduction to Reverse Engineering

10- Assume you open your credit card bill and see several large unauthorized charges unfortunately you may have been the victim of (identity theft)

Digital Rights Management. Introduction

Virtual Machines. Virtual Machines

Software Reverse Engineering

DIGITAL RIGHTS MANAGEMENT SYSTEM FOR MULTIMEDIA FILES

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Assessing the Security of Hardware-Based vs. Software-Based Encryption on USB Flash Drives

Building Applications Using Micro Focus COBOL

Content Teaching Academy at James Madison University

Three short case studies

Introduction. Application Security. Reasons For Reverse Engineering. This lecture. Java Byte Code

Sandy. The Malicious Exploit Analysis. Static Analysis and Dynamic exploit analysis. Garage4Hackers


Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

PE Explorer. Heaventools. Malware Code Analysis Made Easy

Attacking Obfuscated Code with IDA Pro. Chris Eagle

Custom Penetration Testing

Software: Systems and Application Software

The programming language C. sws1 1

System Structures. Services Interface Structure

(General purpose) Program security. What does it mean for a pgm to be secure? Depends whom you ask. Takes a long time to break its security controls.

Software License Management using the Polymorphic Encryption Algorithm White Paper

Validating Tools for Cell Phone Forensics

CS3600 SYSTEMS AND NETWORKS

SAS Data Set Encryption Options

CS 3530 Operating Systems. L02 OS Intro Part 1 Dr. Ken Hoganson

Phire Architect Hardware and Software Requirements

Storing Encrypted Plain Text Files Using Google Android

best practices for encryption in android

Windows Server Performance Monitoring

CSCA0101 Computing Basics CSCA0101 COMPUTING BASICS. Chapter 7 Software

Adi Hayon Tomer Teller

Building A Secure Microsoft Exchange Continuity Appliance

Messing with the Android Runtime

CompTIA Mobile App Security+ Certification Exam (ios Edition) Live exam IOS-001 Beta Exam IO1-001

Protecting Virtual Servers with Acronis True Image

Using WMI Scripts with BitDefender Client Security

Counter Expertise Review on the TNO Security Analysis of the Dutch OV-Chipkaart. OV-Chipkaart Security Issues Tutorial for Non-Expert Readers

Copyright Sagicor Life Insurance Company. All rights reserved.

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

Operating System Structures

Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. CIV 112 Computer Programming Lecture Notes (1)

ETRAC Presentation ECCN 4E001.c intrusion software technology. Jim O Gorman, President October 15, 2015

SOFTWARE TECHNOLOGIES

Example of Standard API

1/20/2016 INTRODUCTION

IQware's Approach to Software and IT security Issues

Enhancing McAfee Endpoint Encryption * Software With Intel AES-NI Hardware- Based Acceleration

Patch management with WinReporter and RemoteExec

Lecture 26: Obfuscation

InsightCloud. Hosted Desktop Service. What is InsightCloud? What is SaaS? What are the benefits of SaaS?

Securing Host Operations with a Dedicated Cryptographic IC - CryptoCompanion

C# and Other Languages

Loophole+ with Ethical Hacking and Penetration Testing

Computer Layers. Hardware BOOT. Operating System. Applications

Software Piracy Overview of Anti-Tampering Technologies. Scott Baeder Sr. Architect Cadence Design Systems

Common Pitfalls in Cryptography for Software Developers. OWASP AppSec Israel July The OWASP Foundation

USB Portable Storage Device: Security Problem Definition Summary

Chapter 13: Program Development and Programming Languages

Chapter 3: Operating-System Structures. Common System Components

Automating Linux Malware Analysis Using Limon Sandbox Monnappa K A monnappa22@gmail.com

The Hotspot Java Virtual Machine: Memory and Architecture

A White Paper from AccessData Group. Cerberus. Malware Triage and Analysis

Operating System Overview. Otto J. Anshus

introducing COMPUTER ANTI FORENSIC TECHNIQUES

Threat Model for Software Reconfigurable Communications Systems

Defending Behind The Device Mobile Application Risks

Hotpatching and the Rise of Third-Party Patches

EMC DATA DOMAIN ENCRYPTION A Detailed Review

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

SecureDoc Disk Encryption Cryptographic Engine

Appendix M INFORMATION TECHNOLOGY (IT) YOUTH APPRENTICESHIP

Patterns for Secure Boot and Secure Storage in Computer Systems

Obfuscation: know your enemy

Data Security Incident Response Plan. [Insert Organization Name]

ASSEMBLY PROGRAMMING ON A VIRTUAL COMPUTER

Objectives. Chapter 2: Operating-System Structures. Operating System Services (Cont.) Operating System Services. Operating System Services (Cont.

Effective Java Programming. efficient software development

Introduction to programming

Smart Card APDU Analysis

Plain English Guide To Common Criteria Requirements In The. Field Device Protection Profile Version 0.75

Understanding Virus Behavior in 32-bit Operating Environments

Embedded Software Development

FORBIDDEN - Ethical Hacking Workshop Duration

Transcription:

Software Reversing Engineering (a.k.a. Reversing) Spiros Mancoridis What is Reverse Engineering? Reverse engineering (RE) is the process of etracting the knowledge or design blueprints from anything man made. The difference between RE and scientific research is that with RE the artifact being investigated is man made. Goal of RE is to obtain missing knowledge, ideas,and design philosophy when such information is unavailable. Software Reverse Engineering: Reversing Reversing is about dissecting a program and eamining its internals. In most industries RE is used for developing competing products, but this is not the case for the software industry. RE of software is thought to be too comple to make sense financially. Common applications of RE in the software industry: Security Software development Distributed Objects 1

Security-related Reversing Malicious software Reversing cryptographic algorithms Digital Right Management (DMR) Auditing program binaries Security-related Reversing: Malicious Software (malware) Malicious software (e.g., viruses and worms) spread much faster now that computers are connected to the Internet. The infection process used to be slow (e.g., viruses spread by diskette sharing). Today s worms can spread automatically to computers without any human intervention. Developers of malware use RE to find vulnerabilities in OS and application software. Developers of ant-virus software use RE to develop tools to protect users from malware. Security-related Reversing: Reversing Crypto Algorithms Restricted algorithms, where the encryption is in the algorithm, (e.g.,caesar cipher) can be broken easily using RE. Key-based algorithms, where the algorithms are public but the key is secret, are more difficult to break. Vulnerabilities include obtaining the key (need luck) trying all possible combinations until you get the key (need quantum computer) Look for a flaw in the algorithm that eposes the key of the original message (need RE) Distributed Objects 2

Security-related Reversing: Digital Rights Management Media content providers have developed or use technologies (DRM) that control the distribution of digital content (e.g.,music, movies). DMR technologies determine if the content should be made available or not. Crackers use RE to attempt to defeat DRM technologies. RE can help to: reveal the secrets of DRM technology; discover simple modifications that can be made to DRM technologies to disable the protection they offer. Security-related Reversing: Auditing Program Binaries Open source software feels safer to run because it has been inspected and approved by thousands of impartial software engineers. RE is a viable (albeit limited) alternative for searching for security vulnerabilities when the source code of the program is not available. Software Development-Reversing Achieving Interoperability with proprietary software Developing competing software Evaluating software quality and robustness Distributed Objects 3

Software Development-Reversing: Achieving Interoperability with proprietary software Proprietary software libraries or OS APIs often have insufficient documentation. Solutions: Try to get things to work via brute force. Contact vendor for answers. Use RE to figure out how the code works. Software Development-Reversing: Developing competing software Even if the competitor has unpatented technology it is not cost-effective to RE the entire product. The eception may be highly comple or unique designs/algorithms that are very difficult or costly to develop. There are legal issues to consider when RE competing software. Software Development-Reversing: Evaluating software quality and robustness It is possible to audit software to get an estimate of the general quality of the coding practices used in the program. Microsoft announced that customers purchasing over 1,000 seats may obtain Windows source code for evaluation purposes. The rest have to either trust Microsoft or resort to RE. Access to source code is more desirable that binary reversing, however. Distributed Objects 4

System Software System software is a generic name for software infrastructure: Compilers Linkers Debuggers Operating systems Assembly languages An accomplished RE must develop an understanding of system software. RE tools (e.g., disassemblers, decompilers) just provide data, not the answers. System Software: Assembly Language Assembly language is a language that supports a specific computer platform. Machine code (a.k.a. binary code, object code) is a different representation of assembly language code. Machine code bits map directly to assembly language instructions and vice versa. Assembly programmers use assemblers. Reversers use disassemblers. Focus on the Intel IA-32 architecture, on which every 32-bit PC is based. System Software: Compilers and Interpreters Compilers translate high-level programming languages (e.g., C, C++) into machine code that can be eecuted by a computer s CPU. Some compilers (e.g., for Java and.net) generate bytecode instead of object code. Bytecode is interpreted by a program not the CPU. The greatest obstacle in deciphering compilergenerated code is the optimizations applied by most modern compilers. Optimized code is often unintuitive and difficult to read. E.g., loop unrolling, function in-lining. Distributed Objects 5

System Software: Operating Systems (OS) An OS is a program that manages the computer s hardware and software applications. A good reverser must understand what the OS does and how it does it. We will focus on the Microsoft Windows OS. The RE Process System-level reversing: Techniques that help determine the general structure of the program. Most of the information comes from the OS and, hence, OS monitoring utilities. Code-level reversing: Techniques provide detailed information on a selected code segment. Involves etracting design concepts and algorithms from from binary code. RE Tools System monitoring tools: Network activity, file access, register access. Disassemblers: Translate binary code to assembly language code. Debuggers: Reversers use debuggers in disassembly mode to set breakpoints and step through a program s eecution (with on-the-fly disassembly). Decompilers: Attempt to produce high-level code (e.g., C) from an eecutable binary file. A reverse compiler! Perfect decompilation impossible for most platforms. Distributed Objects 6

Is RE legal? What social and economic impact does RE have on society? Depends on what RE is used for Whether a RE scenario is legal or not depends on many factors. Legal Issues: Interoperability Eposing software interfaces facilitates the development of software that runs on top of the eposed platform. Good for increasing the sales of the platform. Bad if the competition offers a better product on the same platform. US court in legal case of Sega versus Accolade ruled in favor of Accolade. Accolade did not violate code copyright of Sega. Competition in the market benefited customers. Court essentially authorized RE for the purpose of interoperability. Legal Issues: Competition RE for interoperability has societal benefits, but when RE is used to develop competing products the situation is more complicated. Opponents of RE claim that reversing stifles innovation. Illegal (easy to prove): directly stealing code. Illegal (hard to prove):decompiling a program and recompiling it to generate a different binary with the same functionality. Legal: RE small parts of a product to gather information, not code. Then develop code independently. Distributed Objects 7

Legal Issues: Copyright Law A violation of copyright law is to directly copy protected code sequences from the competitor s product into you own product. Some have claimed that intermediate copies during RE decompilation violates copyright. These claims did not hold in court (e.g., Sega versus Accolade) because intermediate copies are created when a program is installed from a CD onto a hard disk. If the final product does not contain anything that was directly copied from the original product, copying is considered fair use. Legal Issues: Trade Secrets and Patents Patent: Owner controls the invention for up to 20 years. Details of the patent are publicly disclosed, hence RE of a patented technology does not make sense. Invention becomes public after patent epires. Patent protects owner from a competitor who independently invents the same technology. Trade secret: Granted automatically if product is kept a secret and significant effort was put into its development. Protects against rogue employee selling secrets to the competition. Does not protect product from RE. Legal Issues: The Digital Millennium Copyright Act (DMCA) DMCA legally protects copyright protection systems from circumvention. DMCA is considered anti-re legislation because such circumvention almost always involves reversing. DMCA only applies to copyright protection systems, so most RE applications are not affected by it. Two high-profile cases of DMCA violation: Felten versus RIAA (audio recordings protection) US versus Skylarov (Adobe ebook file format) Distributed Objects 8

Legal Issues: The Digital Millennium Copyright Act (DMCA) What is prohibited? 1. Circumvention of copyright protection systems. E.g., using a keygen program. 2. The development of circumvention technologies (DRM Digital Rights Management). E.g., developing a keygen program. A keygen program generates a serial number onthe-fly for programs that require a serial number during installation. Legal Issues: The Digital Millennium Copyright Act (DMCA) What is allowed? Interoperability Encryption research on encryption products Security testing Educational institutions and public libraries can violate DMCA in order to evaluate a copyrighted work prior to purchasing it. Government investigation Regulation Protection of privacy Legal Issues: License Agreement Considerations Other than DMCA, there are no laws that directly prohibit or restrict RE. DMCA only applies to DRM products. Vendors add anti-re clauses to software license agreements. In the US it is not clear that these clauses are enforceable. In the EU decompilation for the purposes of interoperability is permissible under the Directive of the Legal Protection of Computer Programs. Distributed Objects 9

A Survey of Tools used for the Reverse Engineering of Software Systems Topics 1. Basic background on assembly language 2. Types of reverse engineering tools and demonstrations of these tools: He editors: WinHe, Tsearch Decompilers: REC, DJ Disassemblers/Debuggers: IDAPro, OllyDbg, Win32Dasm, BORG 3. Types of reverse engineering prevention tools Code obfuscators: Y0da s Cryptor, NFO Program Abstractions Computers understand binary code Binary code can be written in headecimal Headecimal code can be encoded in assembly language Assembly language is human-readable but not as intuitive as source code Decompilers convert assembly into an easier-to-read source code 11001111 10101 == CD21 == int 21 Distributed Objects 10

Assembly language is an abstraction of headecimal code Reverse Engineering Tool Categories He Editors Decompilers Disassemblers/Debuggers Reverse Engineering Prevention Tools Code Obfuscators He Editors He editors read eecuting programs from RAM. Display their contents in headecimal code. Enable the editing of the running headecimal code. He editors WinHe Tsearch RAM editor Data recovery tools RAM Disassembler Distributed Objects 11

He Editors: WinHe Author: sf-soft Platform: Windows License: Shareware Website: http://www.sf-soft.de/ He Editors: WinHe Features Display and edit (in headecimal) any program running in memory. Recover data that has been deleted (but not overwritten) from the hard-drive. He editors WinHe Tsearch RAM editor Data recovery tools RAM Disassembler He Editors: WinHe Distributed Objects 12

Reverse Engineering Tool Categories He Editors Decompilers Disassemblers/Debuggers Reverse Engineering Prevention Tools Code Obfuscators Decompilers Decompile a binary programs into readable source code. Replace all binary code that could not be decompiled with assembly code. Eecutable Decompiler Source Code Decompilers: REC Author: Backer Street Software Platform: Windows/Linu License: Freeware Website: http://www.backerstreet.com/rec/rec.htm Distributed Objects 13

Decompilers: REC Features Decompiles a program from binary code to C pseudo-code. Translates any binary it cannot decompile into assembly code. Typically generates about 60-70% of the program source code. Decompilers: REC Reverse Engineering Tool Categories He Editors Decompilers Disassemblers/Debuggers Reverse Engineering Prevention Tools Code Obfuscators Distributed Objects 14

Disassemblers/Debuggers Convert binary code into its assembly equivalent. Etract ASCII strings and used libraries. View memory, stack and CPU registers. Run the program (with breakpoints). Edit the assembly code at runtime. Disassemblers/Debuggers Programs & Features chart Product Dis- Assembly Processor options Debugger String etraction Disk He editor Memory He editor Memory Dumper Library's used Decryptor IDAPro OllyDbg W32Dasm BORG Disassemblers/Debuggers: OllyDbg Author: Oleh Yuschuk Platform: Windows License: Freeware Website: http://home.t-online.de/home/ollydbg/ Distributed Objects 15

Disassemblers/Debuggers: OllyDbg Features Eecutes program in a controlled environment. Allows the flow of the program to be controlled. Uses a convenient layout showing headecimal, assembly, CPU registers and stack. Allows the program to be dumped from the memory onto the hard-disk. Highlights recently changed values in memory/stack/cpu registers. Disassemblers/Debuggers: OllyDbg Reverse Engineering Tool Categories He Editors Decompilers Disassemblers/Debuggers Reverse Engineering Prevention Tools Code Obfuscators Distributed Objects 16

Code Obfuscators Encrypts the code of a program so you cannot view it in assembly. Disallows the program to be run if it detects a known disassembler or debugger running. Obfuscators Obfuscation Antidebugging techniques GUI Y0da's Cryptor NFO Diagram of Code Obfuscators Eecutable INT 21 Code Obfuscator Eecutable (Encrypted) Code Obfuscators: Y0da s Cryptor Author: Y0da Platform: Windows License: Freeware Website: y0da.cjb.net Distributed Objects 17

Code Obfuscators: Y0da s Cryptor Features Encrypts the code of a program and inserts a decryption program in the main function of the code. (Obfuscation) Detects all major debuggers and disassemblers. (Anti-Debugging) Obfuscators Y0da's Cryptor Obfuscation Antidebugging techniques GUI NFO Code Obfuscators: Y0da s Cryptor Conclusions We are conducting an etensive survey of RE tools. Most of the tools we have surveyed fall into the categories of: He Editors Decompilers Code Obfuscators Disassemblers/Debuggers Distributed Objects 18