The most trusted source for computer security training, certification and research.



select a course
Orlando, FL - March 6 - 15, 2010
Global Information Assurance Certification

The instructor changed the way I, a network engineer, thought about questions.
-Mike Dye, PTG

SECURITY 610

Reverse-Engineering Malware: Hands-On Analysis Tools and Techniques

Monday, March 8, 2010 - Thursday, March 11, 2010
Lenny Zeltser, SAVVIS
6 CPE Credits Per Day

Promo Trailer for the REM Course on YouTube

This popular malware analysis course has helped numerous IT administrators, forensics investigators, malware specialists, and other security professionals fight malicious code. The course teaches a practical approach to examining malicious software that runs natively on Microsoft Windows, and covers web-based malware such as JavaScript and Flash files. You will learn how to reverse-engineer malicious programs using a variety of system and network monitoring utilities, a disassembler, a debugger, and other tools for turning malware inside-out.

Security incident responders benefit from knowing how to reverse-engineer malware, because this process helps in assessing the event's scope, severity, and repercussions. It also assists in containing the incident and in planning recovery steps. Those who perform forensic investigations also benefit from the course, because they learn how to understand key characteristic of malware present on compromised systems.

This unique course provides a rounded approach to reverse-engineering by covering both behavioral and code analysis aspects of the analysis. As a result, the course makes the topic accessible even to individuals with a limited exposure to programming concepts. The materials do not assume that the students are familiar with malware analysis; however, the complexity of concepts and techniques increases as the course progresses.

The course begins by covering fundamental aspects of malware analysis. You will learn how to set up an inexpensive and flexible laboratory for understanding inner-workings of malicious software, and will understand how it can be used to explore characteristics of real-world specimens. You will then learn to examine the program's behavioral patterns and code. You will experiment with reverse-engineering compiled Windows executables and browser-based malware.

The course continues by discussing essential x86 assembly language concepts. You will learn to examine malicious code to understand the program's key components and execution flow. You will also learn to identify common malware characteristics by looking at Windows API use patterns, and will examine excerpts from bots, rootkits, key loggers, and downloaders. You will understand how to work with PE headers and handle DLL interactions. You will also learn tools and techniques for bypassing anti-analysis capabilities of armored malware, experimenting with packed executables and obfuscated browser scripts.

Hands-on workshop exercises are a critical aspect of this course, and allow you to apply reverse-engineering techniques by examining malware in a controlled environment. When performing the exercises, you will study the supplied specimen's behavioral patterns, and examine key portions of its code. You will examine malware on a Windows virtual machine that you will infect during the course, and will use the supplied Linux virtual machine that includes tools for examining and interacting with Windows and browser malware.

Complexity of the Course

While the field of reverse-engineering malware is in itself advanced, the course begins by covering this topic from introductory level and quickly progresses to discuss malware analysis tools and techniques of intermediate complexity.

Neither programming experience, nor the knowledge of assembly is required to benefit from the course. However, it helps to understand core programming concepts, such as variables, loops, and functions. The course spends some time discussing essential aspects of x86 assembly to allow malware analysts navigate through malicious executables using a debugger and a disassembler.

  • Prerequisites
    • Students should have a computer system that matches the stated laptop requirements. Some software needs to be installed before students come to class.
    • Students should be familiar with using Windows and Linux operating environments and be able to troubleshoot general connectivity and setup issues.
    • Students are recommended to have a high-level understanding of key programming concepts, such as variables, loops, and functions; however, no programming experience is necessary.
  • Who Should Attend
    • You will benefit from this course if you deal with incidents involving malware and would like to learn how to understand key aspects of malicious programs.
    • Individuals who found this course particularly useful often had responsibilities in the areas of incident response, forensic investigation, Windows security, and system administration.
    • The majority of course participants have a strong understanding of core systems and networking concepts, and have had a limited exposure to programming and assembly concepts.
  • You Will Learn to Analyze Malware Using Tools Such As
    • System Monitor, Process Explorer, CaptureBAT, Regshot, VMware
    • BinText, LordPE, QuickUnpack, Firebug
    • IDA Pro, OllyDbg, OllyDump, HideOD
    • Rhino, Malzilla, SpiderMonkey
    • Internet Explorer Developer Toolbar, cscript
    • Honeyd, NetCat, Wireshark, curl
    • SWFTools, Flare, and others
  • Topics Covered by the Course Include
    • Configuring the malware analysis lab
    • Assembling the malware analysis toolkit
    • Performing behavioral analysis of malicious Windows executables
    • Performing static and dynamic code analysis of Malicious Windows executables
    • Intercepting system and network-level activities in the analysis lab
    • Patching compiled malicious Windows executables
    • Shortcuts for speeding up malware analysis
    • Core concepts for reverse-engineering malware at the code level
    • x86 Intel assembly language primer
    • Identifying key x86 assembly logic structures with a disassembler
    • Patterns of common malware characteristics at the Windows API level
    • Working with PE headers of malicious Windows executables
    • Handling DLL interactions and API hooking
    • Manual unpacking of protected malicious Windows executables
    • Tips and tricks for bypassing anti-analysis mechanisms built into malware
    • Analyzing protected malicious browser scripts written in JavaScript and VBScript
    • Reverse-engineering malicious Flash programs

The instructor changed the way I, a network engineer, thought about questions.
-Mike Dye, PTG