SEC504: Hacker Tools, Techniques, and Incident Handling

Experience SANS training through course previews.
Learn MoreLet us help.
Contact usConnect, learn, and share with other cybersecurity professionals
Engage, challenge, and network with fellow CISOs in this exclusive community of security leaders
Become a member for instant access to our free resources.
Sign UpMission-focused cybersecurity training for government, defense, and education
Explore industry-specific programming and customized training solutions
Sponsor a SANS event or research paper
We're here to help.
Contact UsWe’ve created a ten-question self-assessment designed to gauge whether FOR610 or FOR710 is the best fit for you.
This blog is jointly authored by Anuj Soni and Lenny Zeltser.
Choosing between SANS FOR610TM: Reverse-Engineering Malware: Malware Analysis Tools and TechniquesTM and FOR710TM: Reverse-Engineering Malware: Advanced Code AnalysisTM can be challenging, especially if you’re eager to advance your malware analysis skills. To help you decide, we’ve created a ten-question self-assessment designed to gauge whether FOR610 or FOR710 is the best fit for you.
As you may have heard, we’ve been expanding the content in both FOR610 and FOR710, ensuring they remain at the cutting edge of malware analysis and reverse engineering. These courses are designed for professionals looking to deepen their expertise in dissecting complex malware, strengthening threat detection, and improving defense strategies.
Even if you’re not reverse-engineering malware every day, the skills covered in these courses are highly relevant for:
FOR610 provides a strong foundation in malware analysis, teaching students how to use a range of tools to examine the inner workings of malicious software. The course emphasizes static and dynamic analysis techniques to help analysts move beyond automated tools to gain deeper insights into real-world malware.
FOR710 is designed for advanced malware analysts with prior experience in the fundamentals covered in FOR610. It focuses on in-depth reverse engineering of sophisticated malware, including 32-bit and 64-bit Windows executables. A key component of FOR710 is analyzing obfuscation algorithms and developing automation to streamline malware analysis at scale.
As course authors, we frequently hear such questions as:
There is no one-size-fits-all answer to these of questions since everyone’s experience level varies. That’s why we recommend reading the course syllabus and prerequisite statements carefully. However, this quiz can help you assess your readiness from a malware analysis perspective.
This is a self-assessment quiz, so please don’t use a search engine, ask a peer, or look up answers. Instead, rely on your own knowledge and experience to see where you stand. After completing the quiz, you’ll find a separate link with answers and explanations to help you understand your results.
Ready? Let’s Go!
Grab a pen and paper, write down your answers, and when you’re done, review the answer key at the end of the blog to see how you did. We look forward to seeing you in FOR610 or FOR710—whichever course is the best fit for you!
Thanks and good luck!
Anuj Soni & Lenny Zeltser – Course Authors, FOR610 and FOR710
1. When analyzing a Windows executable, which static property provides insight into the libraries and functions the program depends on?
A. Threat Local Storage (TLS)
B. The file overlay
C. The program's imports
D. The program's exports
2. If a Windows executable contains no readable strings and exhibits suspicious behavior when executed, what might this suggest?
A. The binary is corrupted.
B. The binary is packed.
C. The binary is targeting Linux systems.
D. The binary is likely benign.
3. A Windows executable makes repeated DNS queries to a suspicious domain. What is the most likely reason?
A. To identify nearby network devices for lateral movement.
B. To resolve the domain name to an IP address for Command and Control (C2) communication.
C. To generate noise and distract defenders from other malicious activity.
D. To trigger DNS-based load balancing for performance optimization.
4. While debugging malware in x64dbg, you need to pause execution at a specific instruction even after restarting the session. Which type of breakpoint should you set?
A. A software breakpoint, as it modifies memory and is ideal for runtime monitoring.
B. A memory breakpoint, as it remembers where the breakpoint was set.
C. An INT3 breakpoint, as it injects a special instruction to pause execution.
D. A hardware breakpoint, as it remains active even if new code is unpacked dynamically.
5. A malware sample uses OpenProcess, VirtualAllocEx, WriteProcessMemory, and CreateRemoteThread. What is the malware attempting to do?
A. Inject code into another process.
B. Create a new thread for debugging purposes.
C. Allocate memory for shellcode execution within itself.
D. Read memory from a remote system for data exfiltration.
6. In a disassembler, you see the following instructions:
PUSH EBP
MOV EBP, ESP
SUB ESP, 40
What does this code indicate?
A. The program is making a system call.
B. The program is returning from a function call.
C. The function is setting up a stack frame.
D. The function is dynamically allocating memory.
7. While debugging a malicious executable, you suspect it uses the VirtualAlloc API to allocate memory for code injection. You set a breakpoint on the VirtualAlloc function. How should you analyze the API call?
A. Set a breakpoint after the VirtualAlloc call and inspect the instruction pointer (EIP/RIP) to assess the memory allocation details.
B. Examine parameters in registers or stack at the breakpoint to determine the allocation size and memory protection flags, then continue execution and observe the return value in EAX/RAX for the base address of the allocated memory.
C. Search memory for suspicious executable code near the expected allocation size instead of setting a breakpoint.
D. Focus on the ESP/RSP register at the breakpoint to understand the function's stack impact.
8. Which disassembly construct suggests the presence of a loop in the code?
A. A JMP instruction that jumps to a previous address
B. A CALL instruction
C. A RET instruction
D. A NOP instruction
9. When a CALL instruction is executed in x86/x64 assembly, what happens to the program's control flow and the stack?
A. The address of the current instruction is pushed onto the stack, and execution continues from the called function.
B. The stack is cleared, and execution continues from the called function.
C. The address of the called function is pushed onto the stack, and execution continues to the next instruction.
D. The address of the next instruction is pushed onto the stack, and execution jumps to the called function.
10. You see the following snippet:
CMP EAX, 5
JZ target_label
What does this code do?
A. Compares EAX to 5 and jumps to target_label if EAX is greater than 5.
B. Compares EAX to 5 and jumps to target_label if EAX equals 5.
C. Increments EAX by 5 and jumps to target_label.
D. Subtracts 5 from EAX and jumps to target_label.
1. C - The program's imports.
Explanation: The import table provides valuable insights into the libraries (DLLs) and functions (APIs) the executable relies on, offering insights into its capabilities and potential behavior.
2. B - The binary is packed.
Explanation: Most executables contain readable strings (e.g., error messages, function names, DLL names). Packing tools like UPX or custom packers typically compress or encrypt a binary's code and strings, making static analysis tools ineffective until the binary is unpacked.
3. B - To resolve the domain name to an IP address for Command and Control (C2) communication.
Explanation: Repeated DNS queries to a suspicious domain often indicate C2 communication, where malware contacts a remote server for instructions, updates, or data exfiltration.
4. D - A hardware breakpoint, as it remains active even if new code is unpacked dynamically.
Explanation: Hardware breakpoints do not modify memory and remain reliable even when malware extracts new code at runtime.
5. A - Inject code into another process.
Explanation: The API sequence OpenProcess, VirtualAllocEx, WriteProcessMemory, and CreateRemoteThread is characteristic of process injection, where malware writes and executes its code inside another process to evade detection.
6. C - The function is setting up a stack frame.
Explanation: This sequence forms a function prologue, which establishes a stack frame for managing local variables and function arguments.
7. B - Examine parameters in registers or stack at the breakpoint to determine the allocation size and memory protection flags, then continue execution and observe the return value in the EAX/RAX register for the base address of the allocated memory. You can then monitor memory beginning at the base address to see if code is eventually placed there.
Explanation: When the program pauses at the breakpoint, the function's input parameters (e.g., allocation size, memory protection flags) are found on the stack (x86) or in the registers (x64). After the function executes and returns, the base address of the allocated memory is stored in EAX (x86) or RAX (x64), which can be examined to determine where the allocation occurred.
8. A - A JMP instruction that jumps to a previous address.
Explanation: A loop occurs when execution jumps backward to repeat a section of code.
9. D - The address of the next instruction is pushed onto the stack, and execution jumps to the called function.
Explanation: When a CALL instruction executes, the address of the next instruction (the return address) is pushed onto the stack, allowing execution to resume at that location once the function completes.
10. B - Compares EAX to 5 and jumps to target_label if EAX equals 5.
Explanation: The CMP instruction compares EAX to 5, setting the zero flag (ZF) if they are equal. The JZ (Jump if Zero) instruction executes the jump if the zero flag is set.
Whether you're building a foundation in malware analysis or ready to tackle advanced reverse engineering, the SANS FOR610 and FOR710 courses offer the expertise you need. Take the next step in your journey—explore the course details and find the right fit for your skill level today!
Register FOR610: Reverse-Engineering Malware: Malware Analysis Tools and Techniques or FOR710: Reverse-Engineering Malware: Advanced Code Analysis today!
Anuj Soni, Principal Reverse Engineer at United Healthcare, has over 15 years of experience enhancing organizational security postures. His expertise has led to the identification, containment, and remediation of multiple threat actor groups.
Read more about Anuj Soni