
Course introduction, topics and learning goals.
Virtual environment configuration and tools of the trade.
Dynamic analysis, network traffic and Windows registry activity monitoring.
Reverse the binding of a decoy document with a malicious payload.
Automate deobfuscation: identification and removal of junk code, and code cleanup.
Automate deobfuscation: code cleanup using regular expressions and lambda functions.
Extract and explore an AutoIt implementation of symmetric encryption.
Identify and explore an image-base simple steganography technique.
Identify an encryption flaw in the key-generation malware code.
Extract and decrypt the next stage payload.
Generate a downloader payload using MSFvenom and perfom high-level static analysis on it.
Identify and reverse assembly level code obfuscations: junk code, code flow obfuscations, function calling tricks.
Dynamic function resolution by hash (Debugging)
Dynamic function resolution by hash (Static analysis)
Learn how breakpoints work under the hood.
Understand and work with exceptions in IDA Pro and x64dbg.
Metasploit downloader payload - code analysis and functionality wrap up.
Simple tricks to wrap your shellcode and bypass Defender Antivirus.
RunPE process injection technique - AutoIt implementation and testing.
Run arbitrary GUI applications using RunPE implementation and bypass AVs.
A different implementation of process hallowing technique, with an interesting twist.
Bypass Defender AV with window events, process hollowing and payload encryption.
How to detect injected processes using 3rd party tools and libraries.
Extract the shellcode responsible to kickstart the process hollowing.
Prepare a wrapper for dynamic analysis of extracted shellcode.
Fix memory permissions errors in shellcode testing wrapper.
High-level analysis of the injector shellcode.
Port the dynamic function resolution algorithm from assembly to Python and generate C header files.
Functional programming implementation of the Find-by-hash function resolution algorithm.
Wrap-up the shellcode analysis and clarify all the code thoroughly.
Tricks to debug the process injector shellcode.
This course is logically designed to guide students gradually through some of the complicated parts of static and dynamic analysis of real-world malware. Instead of covering the topic broadly on the surface, we will take all the ramifications presented to us by the sample and use them as opportunities to deep dive and learn.
During our investigations we will cover a lot of adjacent topics. We will write Python deobfuscation scripts, embed assembly algorithms into C++ libraries, analyse steganography tricks and encryption flaws and many many more.
The course is very practical and exercises have been designed and tested for an updated Windows 8.1 operating system. There are no pre-requisites for this class other that a Windows virtual machine and the will to learn. All the 3rd party tools discussed are freely available online. Familiarity with Python and C/C++ is beneficial because these two are heavily used throughout the modules.
Assessments:
To get the most out of this course, I recommend doing all the assignments.
All the 6 practical assignments can be solved using information from the course.
There are no solutions provided, because I believe we learn best by doing.
I'm asking each student to send in their solutions to all the exercises at the end of the course.
If you stumble or have any questions, I'm more than happy to help anytime. Reach out directly or via the Q&A section.
Feel free to discuss the assignments with other students in the Q&A section, but please don't post the solutions or answers online.