esrever gnireenigne tfosorcim seiranib
|
|
|
- Lindsay Cooper
- 10 years ago
- Views:
Transcription
1 esrever gnireenigne tfosorcim seiranib Alexander Sotirov CanSecWest / core06
2 Reverse Engineering Microsoft Binaries Alexander Sotirov CanSecWest / core06
3 Overview In the next one hour, we will cover: Setting up a scalable reverse engineering environment getting binaries and symbols reverse engineering tools Common features of Microsoft binaries compiler optimizations hotpatching exception handling Improving your tools IDA autoanalysis problems loading debugging symbols improving the analysis with IDA plugins
4 Why Reverse Engineering? Reverse engineering plays an important role in security research. It is most often used for the following: Binary patch analysis Binary code auditing Exploit development Interoperability Recent developments: In the last five years reverse engineering tools have matured New tools designed specifically for the security community have been developed (SABRE BinDiff) More complicated exploitation techniques (heap overflows, uninitialized variables) require the use of reverse engineering
5 Why Microsoft Binaries? Most reverse engineering talks focus on reversing malware, but Microsoft binaries present a very different challenge: Bigger than most malware No code obfuscation (with the exception of licensing, DRM and PatchGuard code) Debugging symbols are usually available Compiled with the Microsoft Visual C++ compiler Most of the code is written in object oriented C++ Heavy use of COM and RPC
6 Why Me? The security research team at Determina reverse engineers most Microsoft patches, especially when vulnerability details are not publicly available. I have been reversing patches every month for the last 9 months, including a lot of patches for older vulnerabilities. The main challenge we've encountered is how to deal with the large volume of the patches and produce results quickly with limited resources.
7 Part I Scalable Reverse Engineering
8 Patch Statistics Microsoft has released almost 400 security bulletins since 1998, often addressing multiple vulnerabilities with a single bulletin. The record for most CVE numbers is 14, in MS Even bulletins with one CVE number often contain fixes for more than one bug. MS describes a single WMF vulnerability, but the patch fixes more than 30 different integer overflows. In addition to that, Microsoft often silently fixes undisclosed vulnerabilities and adds additional security enhancements not directly related to a specific vulnerability. Microsoft's advance notification gives out the number of bulletins they are going to release, but this number in no way corresponds to the actual number of vulnerabilities fixed each month, or their complexity.
9 Scalable Reverse Engineering Reverse engineering patches at Determina turned out to be very different than my previous reversing experience. In the past I could easily spend more than a month reversing a single interesting vulnerability to write an exploit for it. Now we have to analyze a lot more vulnerabilities in a shorter amount of time, while still producing accurate results. This is an interesting challenge. We have developed internal processes and tools with the following goals in mind: Automate as much as possible Get accurate results with minimal human intervention Scale the reversing process to deal with the volume of Microsoft patches
10 Getting the Binaries Most Microsoft software, including older versions and service packs, is available for download from MSDN. We download these manually. To download security updates automatically, we use the information in mssecure.xml, which is automatically downloaded by MBSA The XML file contains a list of security bulletins for Windows, Office, Exchange, SQL Server and other products. It also provides direct download links to the patch files. Unfortunately MBSA was retired at the end of March The XML schema used by MBSA 2.0 is different, and our scripts don't support it yet. Once you have all old security updates, downloading the new ones every month can be done manually.
11 Extracting the Binaries CAB and most EXE files can be unpacked with cabextract MSI and MSP files are difficult to unpack. Usually they contain CAB archives that can be extracted, but the files in them have mangled names. Still working on a solution. An administrative installation is our temporary solution for dealing with Microsoft Office. Some IIS files are renamed during the installation. For example smtpsvc.dll is distributed as smtp_smtpsvc.dll in IMS.CAB on the Windows 2000 installation CD. Recent patches use intra-package delta compression (US patent application ). Unpacking them with cabextract gives you files with names like _sfx_0000._p. To unpack these patches, you have to run them with the /x command line option.
12 Binary Database We have an internal database of binaries indexed by the name and SHA1 hash of the file. We store the following file metadata: name size modification date SHA1 hash DBG and PDB path source of the file product version security update build comment ntdll.dll bytes May 01, 2003, 3:56:12 PM 9c3102ea1d30c8533dbf5d9da2a47 Sym/ntdll.pdb/3E7B64D65/ntdll.pdb Windows XP SP1 MS qfe
13 Binary Database Current size of our database, including all service packs and security updates for Windows 2000, XP and 2003: 30GB of files 7GB of symbols 7500 different file names files total and growing
14 Binary Database
15 Getting Symbols Microsoft provides symbols for most Windows binaries. They can be downloaded from their public symbol server by including it in your symbol path. See the Debugging Tools for Windows help for more information. Use symchk.exe to download symbols for a binary and store them in a local symbol store. We have scripts that automatically run symchk.exe for all new files that are added to the binary database. Most Windows binaries have symbols, with the exception of some older Windows patches. In this case BinDiff can be used to compare the binaries and port the function names from another version that has symbols. Unfortunately symbols are not available for Office and most versions of Exchange.
16 Any Vendors Reading This? This is my advice to vendors who want to help 3-rd party security researchers: provide researchers with an accurate list of all security updates, hotfixes and other patches (preferably in XML format) make older releases of your software available don't combine security patches with other updates have a consistent naming and versioning system do not update software without updating its version or build number provide debugging symbols for all binaries Microsoft does almost all of the above.
17 Reverse Engineering Tools IDA Pro its plugin API is turning IDA into a reverse engineering platform that other tools depend on BinDiff invaluable for binary patch analysis WinDbg good support for debugging symbols, command line interface, frequent updates SoftICE great for debugging code between userspace and the kernel VMWare Workstation 5 supports multiple snapshots GSX and Server provide a scripting API Workstation 5.5 can be controlled with a command line tool
18 Ideas I would like to automate the following tasks: Disassemble and run BinDiff on all files updated in a patch Compare patches for the same vulnerability in multiple versions of Windows: XP and 2003, IE 5 and IE 6, etc. Follow the code changes in a single function by diffing all versions of the file
19 BinDiff Demo MS Plug and Play Buffer Overflow
20 Part II Common Features of Microsoft Binaries
21 Common Features of Microsoft Binaries Visual C++ compiler optimizations function chunking reuse of stack frame slots sbb comparison optimization switch optimization Hotpatching Exception handling
22 Function Chunking Function chunking is a compiler optimization for improving code locality. Profiling information is used to move rarely executed code outside of the main function body. This allows pages with rarely executed code to be swapped out. It completely breaks tools that assume that a function is a contiguous block of code. IDA has supported chunked functions since version 4.7, but its function detection algorithm still has problems in some cases. This optimization leaks profiling information into the binary. We know that the code in the main function body is executed more often than the function chunks. For code auditing purposes, we can focus on the function chunks, since they are more likely to contain rarely executed and insufficiently tested code.
23 Reuse of Stack Frame Slots In non-optimized code, there is a one-to-one correspondence between local variables and the stack slots where they are stored. In optimized code, the stack slots are reused if there are multiple variables with non-overlapping live ranges. For example: int foo(object* obj) { int a = obj->bar(); return a; } used for both obj and a saved ebp return addr arg_0 The live ranges of obj and a don't overlap, so they can be stored in same slot on the stack. The argument slot for obj is used for storing both variables.
24 SBB Comparison Optimization The SBB instruction adds the second operand and the carry flag, and subtracts the result from the first operand. sbb eax, ebx eax = eax - (ebx + CF) sbb eax, eax eax = eax - (eax + CF) eax = - CF
25 SBB Comparison Optimization The SBB instruction can be used to avoid branching in an if statement. in assembly: cmp ebx, ecx sbb eax, eax inc eax ebx < ecx CF = 1 eax = -1 eax = 0 ebx >= ecx CF = 0 eax = 0 eax = 1 in C: if (ebx >= ecx) eax = 1; else eax = 0;
26 SBB Comparison Optimization An example: 77D74796 loc_77d74796: 77D74796 mov eax, [esi+file_mapping.ptr] 77D74799 cmp [esi+file_mapping.end], eax 77D7479C sbb eax, eax 77D7479E inc eax 77D7479F 77D7479F return: 77D7479F pop edi 77D747A0 pop esi 77D747A1 retn 0Ch 77D747A1 endp in C: // have we reached the end of the file? return (file_mapping.ptr <= file_mapping.end);
27 Non-optimized code : Switch Optimization switch (arg_0) { case 1:... case 2:... case 3:... case 8001:... case 8002:... } cmp [ebp+arg_0], jz short case_ cmp [ebp+arg_0], A jz short case_ C cmp [ebp+arg_0], jz short case_3
28 Optimized code: Switch Optimization 767AFDA1 proc near 767AFDA1 767AFDA1 arg_0 = dword ptr 4 767AFDA1 767AFDA1 mov eax, [esp+arg_0] 767AFDA5 mov ecx, 8001h 767AFDAA cmp eax, ecx 767AFDAC ja short greater_than_ AFDAE jz short case_ AFDB0 dec eax 767AFDB1 jz short case_1 ; after 1 dec 767AFDB3 dec eax 767AFDB4 jz short case_2 ; after 2 decs 767AFDB6 dec eax 767AFDB7 jz short case_3 ; after 3 decs
29 Microsoft Hotpatching The Microsoft hotpatching implementation is described in US patent application It is currently supported only on Windows 2003 SP1, but we'll probably see more of it in Vista. The hotpatches are generated by an automated tool that compares the original and patched binaries. The functions that have changed are included in a file with a.hp.dll extension. When the hotpatch DLL is loaded in a running process, the first instruction of the vulnerable function is replaced with a jump to the hotpatch. The /hotpatch compiler option ensures that the first instruction of every function is a mov edi, edi instruction that can be safely overwritten by the hotpatch. Older versions of Windows are not compiled with this option and cannot be hotpatched.
30 Exception Handling This is better than anything I could have said about it: Reversing Microsoft Visual C++ Part I: Exception Handling by Igor Skochinsky:
31 Part III Improving Your Tools
32 Improving Your Tools IDA autoanalysis Overview of the autoanalysis algorithm Problems with the disassembly Improving the analysis with IDA plugins Symbol loading plugin
33 Autoanalysis Algorithm The autoanalysis algorithm is not documented, but it can be roughly described as follows: 1. Load the file in the database and create segments 2. Add the entry point and all DLL exports to the analysis queue 3. Find all typical code sequences and mark them as code. Add their addresses to the analysis queue 4. Get an address from the queue and disassemble the code at that address, adding all code references to the queue 5. If the queue is not empty, go to 4 6. Make a final analysis pass, converting all unexplored bytes in the text section to code or data
34 Autoanalysis Problems There are a number of situations where the autoanalysis heuristics lead to incorrect disassembly. Some of these problems create serious difficulties for automatic analysis tools like BinDiff. The three main problems that I've seen are: Data disassembled as code Function detection problems Incorrectly identified local variables due to stack pointer tracking problems
35 Autoanalysis Problems Code outside of a function is an indication of incorrectly disassembled data or a function detection problem: should be a string should be a function
36 Data Disassembled as Code 771B7650 ; const CHAR _vszsyncmode 771B7650 _vszsyncmode: 771B7650 push ebx 771B7651 jns short near ptr loc_771b76bf+2 771B7653 arpl [ebp+6fh], cx 771B B7656 loc_771b7656: 771B7656 db 64h, 65h 771B7656 xor eax, h 771B765D imul esi, [ebx+74h], 2E79726Fh 771B7664 dec ecx 771B7665 inc ebp Instead of: 771B7650 ; const CHAR _vszsyncmode 771B7650 _vszsyncmode db 'SyncMode5',0
37 Data Disassembled as Code Solutions: use PDB plugin from IDA 4.9 SP or later disable "Make final analysis pass" The PDB plugin in IDA 4.9 SP automatically creates strings for string variables, which partially solves this problem. This only works for binaries with debugging symbols. The final analysis pass runs after the initial autoanalysis is complete and converts all unexplored bytes in the text segment to data or code. It is often too aggressive and disassembles data as code. Disabling the option ensures that only real code is disassembled, but might leave some functions unexplored. If it is disabled, only the first element in a vtable is analyzed, leaving the rest of the member functions unexplored.
38 Function Detection Problems If foo is a wrapper around bar, the compiler can put the two functions next to each other and let foo fall through to bar. foo bar void foo(a) { if (a == 0) return; else bar(a); } Functions chunks inside another function foo bar If the function foo is analyzed first, it will include the bar chunk. If bar is analyzed first, foo will be split in two chunks.
39 Stack Pointer Tracking Problems IDA uses a stack pointer propagation algorithm to convert esp relative data references to local variable references. If a function is called using the stdcall calling convention, but IDA assumes cdecl, the stack pointer after the call will be incorrect mov eax, [esp+4+var_4] D E 008 push eax call func mov [esp+8+var_8], eax The second variable reference is actually to var_4: mov eax, [esp+4+var_4] D E 008 push eax call func mov [esp+4+var_4], eax
40 Improving the Analysis with IDA Plugins Ideas: Show code outside of functions Detect incorrect stack pointer values at branch merge points or at the end of the function Improve the symbol loading plugin with name and type based heuristics
41 IDA PDB Plugin Source code included in the IDA SDK Uses the DbgHelp API Supports DBG and PDB symbols through dbghelp.dll Algorithm: create names for all symbols if the symbol name is `string', create a C or UNICODE string if the demangled name is not of type MANGLED_DATA, create a function at that address
42 Determina PDB Plugin Uses FPO records to detect functions Does not create functions for demangled names of an unknown type reduces the instances of data disassembled as code Special handling for imports, floats, doubles and strings Creates vtables as arrays of function pointers The symbols are applied to the database starting from the end of the file and going up significantly improves function chunking Much better GUI Available under a BSD license from:
43 Determina PDB Plugin Demo
44 Questions?
Reverse Engineering and Computer Security
Reverse Engineering and Computer Security Alexander Sotirov [email protected] Introduction Security researcher at Determina, working on our LiveShield product Responsible for vulnerability analysis and
Hotpatching and the Rise of Third-Party Patches
Hotpatching and the Rise of Third-Party Patches Alexander Sotirov [email protected] BlackHat USA 2006 Overview In the next one hour, we will cover: Third-party security patches _ recent developments
Software Fingerprinting for Automated Malicious Code Analysis
Software Fingerprinting for Automated Malicious Code Analysis Philippe Charland Mission Critical Cyber Security Section October 25, 2012 Terms of Release: This document is approved for release to Defence
Introduction. Figure 1 Schema of DarunGrim2
Reversing Microsoft patches to reveal vulnerable code Harsimran Walia Computer Security Enthusiast 2011 Abstract The paper would try to reveal the vulnerable code for a particular disclosed vulnerability,
Hacking Techniques & Intrusion Detection. Ali Al-Shemery arabnix [at] gmail
Hacking Techniques & Intrusion Detection Ali Al-Shemery arabnix [at] gmail All materials is licensed under a Creative Commons Share Alike license http://creativecommonsorg/licenses/by-sa/30/ # whoami Ali
風 水. Heap Feng Shui in JavaScript. Alexander Sotirov. [email protected]
風 水 Heap Feng Shui in JavaScript Alexander Sotirov [email protected] Black Hat Europe 2007 Introduction What is Heap Feng Shui? the ancient art of arranging heap blocks in order to redirect the program
Return-oriented programming without returns
Faculty of Computer Science Institute for System Architecture, Operating Systems Group Return-oriented programming without urns S. Checkoway, L. Davi, A. Dmitrienko, A. Sadeghi, H. Shacham, M. Winandy
Abysssec Research. 1) Advisory information. 2) Vulnerable version
Abysssec Research 1) Advisory information Title Version Discovery Vendor Impact Contact Twitter CVE : Apple QuickTime FlashPix NumberOfTiles Remote Code Execution Vulnerability : QuickTime player 7.6.5
Bruh! Do you even diff? Diffing Microsoft Patches to Find Vulnerabilities
SESSION ID: HT-T10 Bruh! Do you even diff? Diffing Microsoft Patches to Find Vulnerabilities Stephen Sims Security Researcher SANS Institute @Steph3nSims Part I Binary Diffing Binary Diffing Security patches
CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code
Inside a killer IMBot. Wei Ming Khoo University of Cambridge 19 Nov 2010
Do you? or Inside a killer IMBot Wei Ming Khoo University of Cambridge 19 Nov 2010 Background Tracking a botnet propagating over Skype & Yahoo IM. Bait is Foto Exploits social connectivity (friend
Bypassing Memory Protections: The Future of Exploitation
Bypassing Memory Protections: The Future of Exploitation Alexander Sotirov [email protected] About me Exploit development since 1999 Research into reliable exploitation techniques: Heap Feng Shui in JavaScript
Buffer Overflows. Security 2011
Buffer Overflows Security 2011 Memory Organiza;on Topics Kernel organizes memory in pages Typically 4k bytes Processes operate in a Virtual Memory Space Mapped to real 4k pages Could live in RAM or be
Introduction to Reverse Engineering
Introduction to Reverse Engineering Inbar Raz Malware Research Lab Manager December 2011 What is Reverse Engineering? Reverse engineering is the process of discovering the technological principles of a
Format string exploitation on windows Using Immunity Debugger / Python. By Abysssec Inc WwW.Abysssec.Com
Format string exploitation on windows Using Immunity Debugger / Python By Abysssec Inc WwW.Abysssec.Com For real beneficiary this post you should have few assembly knowledge and you should know about classic
A Tiny Guide to Programming in 32-bit x86 Assembly Language
CS308, Spring 1999 A Tiny Guide to Programming in 32-bit x86 Assembly Language by Adam Ferrari, [email protected] (with changes by Alan Batson, [email protected] and Mike Lack, [email protected])
Bug hunting. Vulnerability finding methods in Windows 32 environments compared. FX of Phenoelit
Bug hunting Vulnerability finding methods in Windows 32 environments compared FX of Phenoelit The goal: 0day What we are looking for: Handles network side input Runs on a remote system Is complex enough
Title: Bugger The Debugger - Pre Interaction Debugger Code Execution
White Paper Title: Bugger The Debugger Pre Interaction Debugger Code Execution Prepared by: Brett Moore Network Intrusion Specialist, CTO SecurityAssessment.com Date: April 2005 Abstract The use of debuggers
Software Vulnerabilities
Software Vulnerabilities -- stack overflow Code based security Code based security discusses typical vulnerabilities made by programmers that can be exploited by miscreants Implementing safe software in
64-Bit NASM Notes. Invoking 64-Bit NASM
64-Bit NASM Notes The transition from 32- to 64-bit architectures is no joke, as anyone who has wrestled with 32/64 bit incompatibilities will attest We note here some key differences between 32- and 64-bit
Attacking x86 Windows Binaries by Jump Oriented Programming
Attacking x86 Windows Binaries by Jump Oriented Programming L. Erdődi * * Faculty of John von Neumann, Óbuda University, Budapest, Hungary [email protected] Abstract Jump oriented programming
Reversing C++ Paul Vincent Sabanal. Mark Vincent Yason
As recent as a couple of years ago, reverse engineers can get by with just knowledge of C and assembly to reverse most applications. Now, due to the increasing use of C++ in malware as well as most moderns
TitanMist: Your First Step to Reversing Nirvana TitanMist. mist.reversinglabs.com
TitanMist: Your First Step to Reversing Nirvana TitanMist mist.reversinglabs.com Contents Introduction to TitanEngine.. 3 Introduction to TitanMist 4 Creating an unpacker for TitanMist.. 5 References and
Fighting malware on your own
Fighting malware on your own Vitaliy Kamlyuk Senior Virus Analyst Kaspersky Lab [email protected] Why fight malware on your own? 5 reasons: 1. Touch 100% of protection yourself 2. Be prepared
Assembly Language: Function Calls" Jennifer Rexford!
Assembly Language: Function Calls" Jennifer Rexford! 1 Goals of this Lecture" Function call problems:! Calling and returning! Passing parameters! Storing local variables! Handling registers without interference!
Introduction. Application Security. Reasons For Reverse Engineering. This lecture. Java Byte Code
Introduction Application Security Tom Chothia Computer Security, Lecture 16 Compiled code is really just data which can be edit and inspected. By examining low level code protections can be removed and
Microsoft Patch Analysis
Microsoft Patch Analysis Patch Tuesday - Exploit Wednesday Yaniv Miron aka Lament 1 / About Me Yaniv Miron aka Lament Security Researcher and Consultant Found security vulnerabilities in IBM, Oracle, Microsoft
Skeletons in Microsoft s Closet - Silently Fixed Vulnerabilities. Andre Protas Steve Manzuik
Skeletons in Microsoft s Closet - Silently Fixed Vulnerabilities Andre Protas Steve Manzuik Presentation Outline - Introductions / Outline - That s this slide so we are done with that. - Non-Disclosure
Windows XP SP3 Registry Handling Buffer Overflow
Windows XP SP3 Registry Handling Buffer Overflow by Matthew j00ru Jurczyk and Gynvael Coldwind Hispasec 1. Basic Information Name Windows XP SP3 Registry Handling Buffer Overflow Class Design Error Impact
Off-by-One exploitation tutorial
Off-by-One exploitation tutorial By Saif El-Sherei www.elsherei.com Introduction: I decided to get a bit more into Linux exploitation, so I thought it would be nice if I document this as a good friend
Bypassing Browser Memory Protections in Windows Vista
Bypassing Browser Memory Protections in Windows Vista Mark Dowd & Alexander Sotirov [email protected] [email protected] Setting back browser security by 10 years Part I: Introduction Thesis Introduction
Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com
CSCI-UA.0201-003 Computer Systems Organization Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com Some slides adapted (and slightly modified)
Stack Overflows. Mitchell Adair
Stack Overflows Mitchell Adair Outline Why? What? There once was a VM Virtual Memory Registers Stack stack1, stack2, stack3 Resources Why? Real problem Real money Real recognition Still prevalent Very
CS61: Systems Programing and Machine Organization
CS61: Systems Programing and Machine Organization Fall 2009 Section Notes for Week 2 (September 14 th - 18 th ) Topics to be covered: I. Binary Basics II. Signed Numbers III. Architecture Overview IV.
INTRODUCTION TO MALWARE & MALWARE ANALYSIS
INTRODUCTION TO MALWARE & MALWARE ANALYSIS by Quick Heal R&D lab Security Simplified INTRODUCTION Very often people call everything that corrupts their system a virus without being aware about what it
http://www.nologin.org Bypassing Windows Hardware-enforced Data Execution Prevention
http://www.nologin.org Bypassing Windows Hardware-enforced Data Execution Prevention Oct 2, 2005 skape [email protected] Skywing [email protected] One of the big changes that Microsoft introduced
What Happens In Windows 7 Stays In Windows 7
What Happens In Windows 7 Stays In Windows 7 Moti Joseph & Marion Marschalek Troopers Conference 2014 About Us Joseph Moti Security Researcher Marion Marschalek Malware Analyst 8 7 3 1-7 3 6 4-1 9 3 2-9
How To Hack The Steam Voip On Pc Orchesterian Moonstone 2.5 (Windows) On Pc/Robert Kruber (Windows 2) On Linux 2.2.2 (Windows 3.5) On A Pc
ReVuln Ltd. http://revuln.com @revuln [email protected] Revision 3 STEAM VOIP SECURITY BY LUIGI AURIEMMA Overview and details about the security issues found in the Steam voice framework. TABLE OF CONTENTS
X86-64 Architecture Guide
X86-64 Architecture Guide For the code-generation project, we shall expose you to a simplified version of the x86-64 platform. Example Consider the following Decaf program: class Program { int foo(int
Analysis of Win32.Scream
Analysis of Win32.Scream 1. Introduction Scream is a very interesting virus as it combines a lot of techniques written inside of it. In this paper I ll cover all of its features and internals. I ll dissect
For a 64-bit system. I - Presentation Of The Shellcode
#How To Create Your Own Shellcode On Arch Linux? #Author : N3td3v!l #Contact-mail : [email protected] #Website : Nopotm.ir #Spcial tnx to : C0nn3ct0r And All Honest Hackerz and Security Managers I - Presentation
WLSI Windows Local Shellcode Injection. Cesar Cerrudo Argeniss (www.argeniss.com)
WLSI Windows Local Shellcode Injection Cesar Cerrudo Argeniss (www.argeniss.com) Overview _ Introduction _ Establishing a LPC connection _ Creating a shared section _ The technique _ Building an exploit
Lecture 26: Obfuscation
Lecture 26: Obfuscation 15411: Compiler Design Robbie Harwood and Maxime Serrano 21 November 2013 1 Introduction We have previously (lecture 20) considered the problem of doing compilation backwards (i.e.,
Violating Database - Enforced Security Mechanisms
Violating Database - Enforced Security Mechanisms Runtime Patching Exploits in SQL Server 2000: a case study Chris Anley [[email protected]] 18/06/2002 An NGSSoftware Insight Security Research (NISR)
Unpacked BCD Arithmetic. BCD (ASCII) Arithmetic. Where and Why is BCD used? From the SQL Server Manual. Packed BCD, ASCII, Unpacked BCD
BCD (ASCII) Arithmetic The Intel Instruction set can handle both packed (two digits per byte) and unpacked BCD (one decimal digit per byte) We will first look at unpacked BCD Unpacked BCD can be either
Harnessing Intelligence from Malware Repositories
Harnessing Intelligence from Malware Repositories Arun Lakhotia and Vivek Notani Software Research Lab University of Louisiana at Lafayette [email protected], [email protected] 7/22/2015 (C) 2015
Heap-based Buffer Overflow Vulnerability in Adobe Flash Player
Analysis of Zero-Day Exploit_Issue 03 Heap-based Buffer Overflow Vulnerability in Adobe Flash Player CVE-2014-0556 20 December 2014 Table of Content Overview... 3 1. CVE-2014-0556 Vulnerability... 3 2.
Application-Specific Attacks: Leveraging the ActionScript Virtual Machine
IBM Global Technology Services April 2008 Application-Specific Attacks: Leveraging the ActionScript Virtual Machine By Mark Dowd X-Force Researcher IBM Internet Security Systems ([email protected])
REpsych. : psycholigical warfare in reverse engineering. def con 2015 // domas
REpsych : psycholigical warfare in reverse engineering { def con 2015 // domas Warning This serves no purpose Taking something apart to figure out how it works With software Interfacing Documentation Obsolescence
Static detection of C++ vtable escape vulnerabilities in binary code
Static detection of C++ vtable escape vulnerabilities in binary code David Dewey Jonathon Giffin School of Computer Science, Georgia Institute of Technology {ddewey, giffin}@gatech.edu Abstract Static
Attacking Obfuscated Code with IDA Pro. Chris Eagle
Attacking Obfuscated Code with IDA Pro Chris Eagle Outline Introduction Operation Demos Summary 2 First Order Of Business MOVE UP AND IN! There is plenty of room up front I can't increase the font size
The Advantages of Block-Based Protocol Analysis for Security Testing
The Advantages of Block-Based Protocol Analysis for Security Testing Dave Aitel Immunity,Inc. 111 E. 7 th St. Suite 64, NY NY 10009, USA [email protected] February, 4 2002 Abstract. This paper describes
Identification and Removal of
RIVERSIDE RESEARCH INSTITUTE Deobfuscator: An Automated Approach to the Identification and Removal of Code Obfuscation Ei Eric Laspe, Reverse Engineer Jason Raber, Lead Reverse Engineer Overview The Problem:
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering
Cryptography and Network Security Prof. D. Mukhopadhyay Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Module No. # 01 Lecture No. # 39 System Security Welcome
Custom Penetration Testing
Custom Penetration Testing Compromising a Vulnerability through Discovery and Custom Exploitation Stephen Sims Advanced Penetration Testing - 2009 SANS 1 Objectives Penetration Testing Precompiled Tools
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
MSc Computer Science Dissertation
University of Oxford Computing Laboratory MSc Computer Science Dissertation Automatic Generation of Control Flow Hijacking Exploits for Software Vulnerabilities Author: Sean Heelan Supervisor: Dr. Daniel
Persist It Using and Abusing Microsoft s Fix It Patches
Persist It Using and Abusing Microsoft s Fix It Patches Jon Erickson : isight Partners : [email protected] Abstract: Microsoft has often used Fix it patches, which are a subset of Application
Sandy. The Malicious Exploit Analysis. http://exploit-analysis.com/ Static Analysis and Dynamic exploit analysis. Garage4Hackers
Sandy The Malicious Exploit Analysis. http://exploit-analysis.com/ Static Analysis and Dynamic exploit analysis About Me! I work as a Researcher for a Global Threat Research firm.! Spoke at the few security
Binary Code Extraction and Interface Identification for Security Applications
Binary Code Extraction and Interface Identification for Security Applications Juan Caballero Noah M. Johnson Stephen McCamant Dawn Song UC Berkeley Carnegie Mellon University Abstract Binary code reuse
Systems Design & Programming Data Movement Instructions. Intel Assembly
Intel Assembly Data Movement Instruction: mov (covered already) push, pop lea (mov and offset) lds, les, lfs, lgs, lss movs, lods, stos ins, outs xchg, xlat lahf, sahf (not covered) in, out movsx, movzx
Dynamic Behavior Analysis Using Binary Instrumentation
Dynamic Behavior Analysis Using Binary Instrumentation Jonathan Salwan [email protected] St'Hack Bordeaux France March 27 2015 Keywords: program analysis, DBI, DBA, Pin, concrete execution, symbolic
Defense in Depth: Protecting Against Zero-Day Attacks
Defense in Depth: Protecting Against Zero-Day Attacks Chris McNab FIRST 16, Budapest 2004 Agenda Exploits through the ages Discussion of stack and heap overflows Common attack behavior Defense in depth
Removing Sentinel SuperPro dongle from Applications and details on dongle way of cracking Shub-Nigurrath of ARTeam Version 1.
Removing Sentinel SuperPro dongle from Applications Shub-Nigurrath of ARTeam Version 1.0 September 2006 1. Abstract... 2 2. Possible approaches: emulations vs simulation... 3 2.1. How a dongle works...
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
A Simpler Way of Finding 0day
A Simpler Way of Finding 0day Robert Graham David Maynor Errata Security Abstract: Instead of reverse engineering vulnerabilities to find 0day, hackers can now reverse security products. More and more
Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection
USENIX Security Symposium 2014, San Diego, CA, USA Stitching the Gadgets On the Ineffectiveness of Coarse-Grained Control-Flow Integrity Protection Lucas Davi Intel Collaborative Research Institute for
Overview of IA-32 assembly programming. Lars Ailo Bongo University of Tromsø
Overview of IA-32 assembly programming Lars Ailo Bongo University of Tromsø Contents 1 Introduction... 2 2 IA-32 assembly programming... 3 2.1 Assembly Language Statements... 3 2.1 Modes...4 2.2 Registers...4
Raima Database Manager Version 14.0 In-memory Database Engine
+ Raima Database Manager Version 14.0 In-memory Database Engine By Jeffrey R. Parsons, Senior Engineer January 2016 Abstract Raima Database Manager (RDM) v14.0 contains an all new data storage engine optimized
ASL IT SECURITY XTREME XPLOIT DEVELOPMENT
ASL IT SECURITY XTREME XPLOIT DEVELOPMENT V 2.0 A S L I T S e c u r i t y P v t L t d. Page 1 Overview: The most dangerous threat is the one which do not have a CVE. Until now developing reliable exploits
Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture
Last Class: OS and Computer Architecture System bus Network card CPU, memory, I/O devices, network card, system bus Lecture 3, page 1 Last Class: OS and Computer Architecture OS Service Protection Interrupts
x64 Cheat Sheet Fall 2015
CS 33 Intro Computer Systems Doeppner x64 Cheat Sheet Fall 2015 1 x64 Registers x64 assembly code uses sixteen 64-bit registers. Additionally, the lower bytes of some of these registers may be accessed
Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers
CS 4 Introduction to Compilers ndrew Myers Cornell University dministration Prelim tomorrow evening No class Wednesday P due in days Optional reading: Muchnick 7 Lecture : Instruction scheduling pr 0 Modern
5. Calling conventions for different C++ compilers and operating systems
5. Calling conventions for different C++ compilers and operating systems By Agner Fog. Technical University of Denmark. Copyright 2004-2014. Last updated 2014-08-07. Contents 1 Introduction... 3 2 The
The V8 JavaScript Engine
The V8 JavaScript Engine Design, Implementation, Testing and Benchmarking Mads Ager, Software Engineer Agenda Part 1: What is JavaScript? Part 2: V8 internals Part 3: V8 testing and benchmarking What is
Attacking Host Intrusion Prevention Systems. Eugene Tsyrklevich [email protected]
Attacking Host Intrusion Prevention Systems Eugene Tsyrklevich [email protected] Agenda Introduction to HIPS Buffer Overflow Protection Operating System Protection Conclusions Demonstration
MWR InfoSecurity Advisory. Interwoven Worksite ActiveX Control Remote Code Execution. 10 th March 2008. Contents
Contents MWR InfoSecurity Advisory Interwoven Worksite ActiveX Control Remote Code Execution 10 th March 2008 2008-03-10 Page 1 of 9 Contents Contents 1 Detailed Vulnerability Description...5 1.1 Introduction...5
The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation Techniques To appear at USENIX Security & BlackHat USA, 2014
Intelligent Things, Vehicles and Factories: Intel Workshop on Cyberphysical and Mobile Security 2014, Darmstadt, June 11 The Beast is Resting in Your Memory On Return-Oriented Programming Attacks and Mitigation
Diving into a Silverlight Exploit and Shellcode - Analysis and Techniques
Diving into a Silverlight Exploit and Shellcode - Analysis and Techniques By Omri Herscovici & Liran Englender January 04, 2015 Preface In recent years, exploit-kits are one of the most common platforms
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
Melde- und Analysestelle Informationssicherung MELANI Torpig/Mebroot Reverse Code Engineering (RCE)
Melde- und Analysestelle Informationssicherung MELANI Torpig/Mebroot Reverse Code Engineering (RCE) Andreas Greulich, MELANI Swiss Cyber Storm, 18 April 2009 Agenda Part 1: Introduction (~5 ) Infection
HP Server Automation Enterprise Edition
HP Server Automation Enterprise Edition Software Version: 10.0 User Guide: Server Patching Document Release Date: June 13, 2013 Software Release Date: June 2013 Legal Notices Warranty The only warranties
Syscall Proxying - Simulating remote execution Maximiliano Caceres <[email protected]> Copyright 2002 CORE SECURITY TECHNOLOGIES
Syscall Proxying - Simulating remote execution Maximiliano Caceres Copyright 2002 CORE SECURITY TECHNOLOGIES Table of Contents Abstract.........................................................................................
Practical taint analysis for protecting buggy binaries
Practical taint analysis for protecting buggy binaries So your exploit beats ASLR/DEP? I don't care Erik Bosman Traditional Stack Smashing buf[16] GET / HTTP/1.100baseretnarg1arg2 Traditional
Debugging Windows Applications with IDA WinDbg Plugin Copyright 2011 Hex-Rays SA
Debugging Windows Applications with IDA WinDbg Plugin Copyright 2011 Hex-Rays SA Quick overview: The Windbg debugger plugin is an IDA Pro debugger plugin that uses Microsoft's debugging engine (dbgeng)
Vigilante: End-to-End Containment of Internet Worms
Vigilante: End-to-End Containment of Internet Worms Manuel Costa 1,2, Jon Crowcroft 1, Miguel Castro 2, Antony Rowstron 2, Lidong Zhou 3, Lintao Zhang 3 and Paul Barham 2 1 University of Cambridge, Computer
Release Bulletin EDI Products 5.2.1
Release Bulletin EDI Products 5.2.1 Document ID: DC00191-01-0521-01 Last revised: June, 2010 Copyright 2010 by Sybase, Inc. All rights reserved. Sybase trademarks can be viewed at the Sybase trademarks
DiskPulse DISK CHANGE MONITOR
DiskPulse DISK CHANGE MONITOR User Manual Version 7.9 Oct 2015 www.diskpulse.com [email protected] 1 1 DiskPulse Overview...3 2 DiskPulse Product Versions...5 3 Using Desktop Product Version...6 3.1 Product
A Museum of API Obfuscation on Win32
A Museum of API Obfuscation on Win32 Masaki Suenaga Senior Software Engineer Contents Abstract... 1 File Image vs. Memory Image... 2 API Analysis... 4 Generating Memory Dumps... 5 Runtime API Address Resolution...
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
WHITE PAPER. Permabit Albireo Data Optimization Software. Benefits of Albireo for Virtual Servers. January 2012. Permabit Technology Corporation
WHITE PAPER Permabit Albireo Data Optimization Software Benefits of Albireo for Virtual Servers January 2012 Permabit Technology Corporation Ten Canal Park Cambridge, MA 02141 USA Phone: 617.252.9600 FAX:
C++ Wrapper Library for Firebird Embedded SQL
C++ Wrapper Library for Firebird Embedded SQL Written by: Eugene Wineblat, Software Developer of Network Security Team, ApriorIT Inc. www.apriorit.com 1. Introduction 2. Embedded Firebird 2.1. Limitations
1. General function and functionality of the malware
1. General function and functionality of the malware The malware executes in a command shell, it begins by checking to see if the executing file contains the MZP file extension, and then continues to access
BlackBerry Enterprise Server Express System Requirements
BlackBerry Enterprise Server Express System s For information about calculating hardware requirements, visit www.blackberry.com/go/serverdocs to see the BlackBerry Enterprise Server Capacity Calculator
Using fuzzing to detect security vulnerabilities
Using fuzzing to detect security vulnerabilities INFIGO-TD-01-04-2006 25-04-2006 Leon Juranić [email protected] Infigo IS. All rights reserved. This document contains information, which is protected
