Malware Analysis Professional
Malware Analysis Professional
Malware Analysis Professional
VERSION 1
INTRODUCTION
COURSE DESCRIPTION
Malware Analysis Professional (MAP) is an online, self-paced training course that teaches
students the knowledge and skills necessary to dissect malicious software in order to
understand its mechanics and purpose.
MAP provides a holistic approach to dissecting malware. You will also learn more about
Reverse Engineering and add an additional skill to your arsenal, allowing you to dissect a
product to understand its blueprint, how it was made, and:
MAP is a self-paced course that comes with 36 labs so you can develop your knowledge
and test your skills through hands-on dissection and analysis of malicious software.
In the Reverse Engineering portion of MAP, there are 10 downloadable, offline labs
(executables) that provide practical reverse engineering experience. Additionally, this
content comes with videos that provide step-by-step guidelines, providing an in-depth
explanation of every technique.
p. 2
p. 3
p. 4
p. 5
2.1 Introduction
2.2 File Identification
2.2.1 ASCII Files
2.2.2 Structured Files
2.3 Hashes
2.4 Strings
2.4.1 ASCII Strings
2.4.2 Unicode Strings
2.5 Scanners and Sandboxes
2.5.1 Using a Sandbox
2.6 Analyzing File Format(s)
2.7 Identifying Obfuscation
2.8 Indicators of Compromise (IOCs)
2.9 Advanced Topics
p. 6
3.1 Introduction
3.1.1 Assembly Language - What is it?
3.1.2 Assembly Language - Why is it needed?
3.2 CPU Architecture
3.2.1 Overview
3.2.2 Registers
3.2.3 General Purpose Registers
3.2.4 Segment Registers
3.2.5 RFLAGS Register
3.2.6 Instruction Pointer Flag
3.2.7 Instruction Set
3.3 ASM - The Basics
3.3.1 Instructions
3.3.2 Fundamental Data Types
3.3.3 Signed Numeric Data
3.3.4 Floating-Point Data Type
3.3.5 Using Registers
3.3.6 Mathematical Operations
3.3.7 Logical Operations
3.3.8 Bitwise Operations
3.3.9 Control-Transfer Instructions
3.3.10 Accessing Memory
3.3.11 The Stack
3.3.12 x64 Calling Conventions
p. 7
4.1 Introduction
4.2 Dynamic Analysis
4.3 Windows Processes
4.4 Sysinternals Tools
4.5 System Processes and Services
4.6 Injection Techniques
4.7 Persistent Methods
4.8 Tools and Automation
4.9 Windows APIs
5.1 Introduction
5.2 Debugging and Debuggers
5.3 Disassembly and IDA Pro
5.4 Other Tools
p. 8
6.1 Introduction
6.2 Decoding Base64, XOR, etc.
6.3 Unpacking Packed Malware
6.4 Anti-Analysis Techniques
Debugger and Analysis Toolkit Detection
Misdirection Techniques
SEH and TLS Callbacks
6.5 Process Hollowing
p. 9
1.1 Introduction
1.2 What is Reverse Engineering
1.3 Do We Need Reverse Engineering?
1.4 The Basics Behind The Intel IA-32 CPU Architecture
1.4.1 General Purpose Registers
1.4.2 EFLAGS Register
1.4.3 Segment Registers
1.4.4 Instruction Pointer Register
1.4.5 Debug Registers
1.4.6 Machine Specific Registers (MSRs)
1.5 Conclusion
p. 10
2.1 Introduction
2.2 Functions
2.3 Process vs. Thread
2.4 Function Calling
2.5 Stack Frames
2.5.1 Setting Up The Stack Frame - A Graphical Example
2.6 Calling Conventions
2.7 Reading EIP - A Simple Trick
2.8 Conclusion
3.1 Introduction
3.2 Heaps
3.3 Handles
3.4 Exceptions
3.5 Basic Windows Ring3 Internal Structures
3.6 Windows APIs
3.7 Types of Reversing Tools
3.8 Conclusion
p. 11
4.1 Introduction
4.2 VA/RVA/OFFSET
4.2.1 Why Do We Need All This Information?
4.3 Overview of the Portable Executable File Format (PE)
4.3.1 MS-DOS Header
4.3.2 IMAGE_NT_HEADERS Structure (PE Header)
4.3.2.1 IMAGE_FILE_HEADER Structure
4.3.2.2 IMAGE_OPTIONAL_HEADER Structure
4.3.3 IMAGE_DATA_DIRECTORY Structure
4.3.4 The Section Table
4.4 Memory and File Alignment
4.5 Conclusion
p. 12
5.1 Introduction
5.2 String References
5.3 A Few Words Before Starting
5.4 Let’s Start . . .
5.4.1 Run the Target Executable and Observe its Functionality
5.4.2 Load the Executable in the Olly Debugger
5.4.3 Search for String References
5.4.4 Reversing the Logic
5.4.5 Basic Memory Patching
5.4.6 Executable Patching Through Olly
5.4.7 VA -> OFFSET Manual Calculation
5.4.8 Manual Byte Patching
5.5 Conclusion
p. 13
6.1 Introduction
6.2 A Few Words Before Starting
6.3 Let’s Start . . .
6.3.1 Run and Observe
6.3.2 Load to Olly and Search for Strings
6.3.3 How is this Possible?!
6.3.4 Exploring the Stack
6.3.5 Evaluating the MessageBox API Parameters
6.3.6 Reversing the Logic
6.3.7 Patching the Code
6.4 Conclusion
7.1 Introduction
7.2 A Few Words Before Starting
7.3 Let’s Start . . .
7.3.1 Two Important Algorithms
7.4 Conclusion
p. 14
8.1 Introduction
8.2 Windows Registry
8.3 A Few Words Before Starting
8.4 Let’s Start . . .
8.4.1 Retrieving Data From Windows Registry
8.4.2 Using Hardware Breakpoints
8.4.3 Algorithm Analysis
8.4.4 Reversing the Logic
8.5 Conclusion
9.1 Introduction
9.2 A Few Words Before Starting
9.3 Let’s Start . . .
9.3.1 Getting a Handle
9.3.2 What Do We Know By Now?
9.3.3 Reading the File Contents
9.3.4 Algorithm Analysis
9.4 Conclusion
p. 15
10.1 Introduction
10.2 Categories of Anti-Reversing Tricks
10.3 A Few Words Before Starting
10.4 Direct Debugger Detection
10.5 Indirect Debugger Detection
10.6 Window Debugger Detection
10.7 Conclusion
11.1 Introduction
11.2 Process Debugger Detection
11.3 Parent Process Detection
11.4 Module Debugger Detection
11.5 Code Execution Time Detection
11.5.1 RDTSC: Read Time-Stamp Counter
11.5.2 GetTickCount API
11.6 Conclusion
p. 16
12.1 Introduction
12.2 Software vs. Hardware Breakpoints
12.3 Software Breakpoint Detection
12.4 Hardware Breakpoint Detection
12.5 Ring0 Debuggers & System Monitoring Tools Detection
12.6 Structured Exception Handling (SEH)
12.7 Unhandled Exception Filter
12.8 VM Detection
12.9 Conclusion
13.1 Introduction
13.2 Logic Flow Obfuscation
13.3 ‘NOP’ Obfuscation
13.4 Anti-Disassembler Code Obfuscation
13.5 Trampolines
13.6 Instruction Permutations
13.7 Conclusion
p. 17
14.1 Introduction
14.2 Well-known Entry Points
14.3 Methods to Reach the OEP
14.4 Packers and Tools Used
14.5 Conclusion
15.1 Introduction
15.2 Multi-Threading in Practice
15.3 Creating a New Thread
15.4 Threads Synchronization
15.5 Threads Manipulation
15.6 Debugging Multi-Thread Applications
15.7 Conclusion
p. 18
MODULE 2
• Lab 2: File Identification
• Lab 3: Analyzing PE File Structures
• Lab 4: Packed Malware Identification And Basic Analysis
• Lab 5: From IOCs to YARA Rules
MODULE 3 LABS
• Lab 6: Writing and Debugging Assembly x64 Code
MODULE 4 LABS
• Lab 7: Working with Windows Processes
• Lab 8: Analyzing a Custom Downloader
• Lab 9: Working with DLLs and DLL Injection
• Lab 10: Dynamically Analyzing a Custom Backdoor
• Lab 11: Dynamically Analyzing a KeyLogger
MODULE 5 LABS
• Lab 12: Reverse Engineering a 64-bit Downloader Using x64dbg
• Lab 13: Debugging a 64-bit Downloader Using x64dbg
• Lab 14: Debugging a 64-bit Dropper
• Lab 15: Reverse Engineering a Keylogger using IDA Pro
• Lab 16: Reverse Engineering a Bot Using IDA Pro
• Lab 17: Analyzing the WannaCry Ransomware
• Lab 18: Reverse Engineering a Custom Backdoor using IDA Pro (64-bit)
p. 19
p. 20
eLearnSecurity was founded with the simple mission of revolutionizing the way IT
professionals develop their information security skills. Now based in Cary, North Carolina
with offices and employees around the United States and Europe, eLearnSecurity is a
worldwide leader in cyber security training.
Through a blend of in-depth content and real-world simulations, our detailed courses,
training paths, and certifications equip businesses and individuals with the skills needed
to take on the cyber security challenges of today and tomorrow.
eLearnSecurity’s Hera Labs is an industry-leading virtual lab that offers our clients
practical penetration testing and ethical hacking experience, changing the way students
and businesses take on the future of cyber security.
Contact details:
www.elearnsecurity.com
contactus@elearnsecurity.com