A zero-day(or zero-hour or day zero) attack or threat is an attack that exploits a
previously unknown vulnerability in a computer application.
An exploit is a piece of software, a chunk of data, or sequence of commands that takes
advantage of a bug
A shellcode is a small piece of code used as the payload in the exploitation of a software
A rootkit is a stealthy type of software, often malicious, designed to hide the existence
of certain processes or programs from normal methods of detection and enable
continued privileged access to a computer.
Find the vulnerability, and developing weaponized-exploits.
Zero-day attack uses advanced-exploitationtechnique
Understanding undocumented system functions
malware authors; Rootkit, worm, keylogger, spyware etc.
Patch and Vulnerability Analysis
Developing signatures against zero-day threats for IDS/IPS appliance
Binary Code Analysis
Finding new zero-day vulnerabilities to take advantage on defensive
Advanced Exploit Development
Penetration Test and Vulnerability assesment.
Anti-Virus, Anti-Spyware and Digital Forensics companies
Real-World Crime Example
May 2008 in New York for the Dave & Busters case
May 2008 in Massachusetts for the TJ Maxx case
August 2009 in New Jersey in connection with the Heartland
State-Sponsored Attack Example
The group obtained a sponsor who paid them 2000 RMB ($325)
Their sponsor is likely the People's Liberation Army (PLA)
Tan Dailin attacks on US Department of Defense in May and
GinWui Rootkit (Manipulate Service, Start and Kill Process etc.)
iDefense says,35 zero-day Microsoft Office Exploit
What is Reverse Engineering ?
Static Analysis or Reversing
Static program analysis is the analysis of computer software that is
performed without actually executing programs
Dynamic Analysis or Reversing
Dynamic program analysis is the analysis of computer softwarethat is
performed by executing programs on a real or virtual processor.
call function ; store return addr on the stack
; and jump to function!
push esi ; save esi
pop esi ; restore esi
ret ; read return addr from the stack
; and jump to it.
Low-level Intermediate representation
Binary Reverse Engineering
How the compiler works and to translate it into machine code
Understanding operating system structures
Understanding executable (PE/ELF) file formats
We need to think like the compiler, but in reverse!
Reverser Toolbag (1)
IDA Disassembler from Hex-Rays
IDA is a disassembler for computer software which generates assembly
language source code from machine-executable code
OllyDbg is Free Debugger
OllyDbg is an x86 debugger that emphasizes binary code
analysis, which is useful when source code is not available
Windbg from Microsoft
It can be used to debug user mode applications, drivers, and the
operating system itself in kernel mode.
Reverser Toolbag (2)
Virtual Machines (Virtualbox, VMWare, Hyper-V)
A virtual machine (VM) is a software implemented abstraction of the
underlying hardware, which is presented to the application layer of the
Packet Sniffers (Wireshark, tcpdump)
The sniffer captures packets, if needed, decodes the packet's raw
data, showing the values of various fields in the packet
technical resources and utilities to manage, diagnose, troubleshoot, and monitor
a Microsoft Windows environment.
Anti-Debugging, the implementation of one or more techniques within
computer code that ‘’hinders attempts’’ at reverse engineering or debugging a
Anti-Dumping, describes the process of taking an executable that has been
protected and after the executable has been decrypted into memory
Code obfuscation is the deliberate act of creating obfuscated code, i.e. source
or machine code that is difficult for humans to understand.
Executable compression is any means of compressing an executable
file and combining the compressed data with decompression code into
a single executable
Android is a Linux-based operating system, runs on custom Linux.
Google I/O statshot, 900 million Android devices activated
Google play hits 600.000 application, 20 billion total installs.
Manufacturers; Samsung, HTC, Asus, Amazon, Sony, Toshiba, Acer…
The ProGuard tool shrinks, optimizes, and obfuscates your code by removing
unused code and renaming classes, fields, and methods with semantically obscure
DexGuardis our specialized optimizer and obfuscator for Android. Create apps that
are faster, more compact, and more difficult to crack.