Source: Juni_2026_Exams/Advance_Forensics/notes/14-exam-day-open-notes-reference.md
Exam-Day Open-Notes Reference
Use This First
For every question:
- Identify what is being asked.
- Select the tool and evidence source.
- Preserve the original output before adding filters.
- Record exact paths, APIs, PID/TID values, and raw results.
- Take a readable screenshot.
- Answer directly, then explain why the evidence supports it.
Do not copy example PID/TID values into your answer. Use values from your run.
Safe Lab Setup
- Use only the university malware-analysis VM.
- Restore a clean snapshot before each new sample.
- Disable shared clipboard, drag-and-drop, shared folders, USB, and host mounts.
- Use internal/host-only networking and FakeNet unless instructed otherwise.
- Never execute a sample on the host.
- Save screenshots and reports before restoring the snapshot.
Fast Tool Selection
| Question asks about | Start with | Confirm with |
|---|---|---|
| File type/architecture | CFF Explorer | DiE, TrID, magic bytes |
| Packed/obfuscated | DiE entropy/detection | PEiD, sections, imports, strings |
| Imports/exports | CFF Explorer | Dependency Walker |
| Embedded files | Resource Hacker | Hash, magic bytes, CFF Explorer |
| Files created/deleted | ProcMon | Filesystem inspection |
| Registry changes | ProcMon, Regshot | Regedit, Autoruns |
| Processes/parents | Process Hacker | ProcMon Process Tree |
| Threads/TIDs | ProcMon | Process Hacker Threads tab |
| Runtime APIs | APIMiner | API Monitor, ProcMon behavior |
| Process injection | APIMiner | Process Hacker memory/modules |
| Persistence | Autoruns | ProcMon, registry, tasks/services |
| Network behavior | FakeNet, Wireshark | Strings/imports, ApateDNS |
| Memory layout | Process Hacker, VMMap | CFF Explorer PE fields |
Initial Sample Record
Sample:
Full path:
File size:
SHA-256:
VM snapshot:
Execution privilege:
Analysis start time:
Network mode:
PowerShell:
Get-FileHash C:\Temp\sample.exe -Algorithm SHA256
Get-Item C:\Temp\sample.exe | Select Name,Length,CreationTime,LastWriteTime
Search VirusTotal by hash before uploading. Do not upload confidential samples unless explicitly permitted.
Static PE Triage
CFF Explorer
Inspect:
DOS Header
e_magic -> MZ signature
e_lfanew -> offset to PE header
NT Headers / File Header
Machine -> x86/x64 architecture
NumberOfSections
TimeDateStamp -> can be forged
Characteristics -> EXE/DLL/32-bit flags
Optional Header
Magic -> 010B PE32, 020B PE32+
AddressOfEntryPoint
ImageBase
SectionAlignment
FileAlignment
SizeOfImage
Subsystem
Section Headers
Name
VirtualSize
SizeOfRawData
Characteristics/permissions
Import Directory
Export Directory
Resource Directory
Useful calculations:
VA = actual ImageBase + RVA
RVA = VA - actual ImageBase
Magic bytes:
MZ: 4D 5A
PE signature: 50 45 00 00
Packing Decision
Do not rely on one indicator.
| Indicator | Meaning |
|---|---|
| Entropy near 8 | Supports compression/encryption/packing |
| PEiD/DiE packer signature | Supports identified packer |
| UPX/custom section names | Possible packer |
| Large virtual/raw-size difference | Possible unpacking at runtime |
| Very few imports | APIs may be hidden/resolved dynamically |
| Few meaningful strings | Content may be compressed/encrypted |
| Entry point in unusual section | Possible unpacking stub |
Good conclusion:
The file is likely packed. DiE reports entropy of [value], the section
layout shows [indicator], and [PEiD/DiE] identifies [packer/signature].
High entropy alone would not prove maliciousness, but these indicators
together support packing.
Strings and Imports
Look for:
- paths and filenames
- URLs, domains, IP addresses, user agents
- commands and command-line arguments
- registry paths
- service/task names
- mutex names
- debug/evasion messages
- DLL and API names
Important API categories:
| Behavior | APIs/imports |
|---|---|
| Files | CreateFile, WriteFile, DeleteFile, MoveFile |
| Registry | RegCreateKey, RegSetValue, RegDeleteValue |
| Processes | CreateProcess, OpenProcess, TerminateProcess |
| Services | OpenSCManager, CreateService, StartService |
| Network sockets | socket, connect, send, recv |
| HTTP/download | InternetOpen, HttpSendRequest, URLDownloadToFile |
| Dynamic imports | LoadLibrary, GetProcAddress |
| Evasion | IsDebuggerPresent, CheckRemoteDebuggerPresent |
Static imports suggest capability, not confirmed runtime behavior.
ProcMon Quick Guide
Clean Capture
Ctrl+E -> stop/start capture
Ctrl+X -> clear existing events
Ctrl+L -> filters
Tools -> Process Tree
Options -> Select Columns
Recommended columns:
- Time of Day
- Process Name
- PID
- TID
- Operation
- Path
- Result
- Detail
- Command Line
- Parent PID
Basic workflow:
- Stop capture.
- Clear events.
- Add
Process Name is sample.exe→ Include. - Start capture.
- Execute the sample.
- Stop capture.
- Save the complete PML trace.
- Apply question-specific filters.
Useful Operations
| Activity | ProcMon operations |
|---|---|
| File create/open | CreateFile |
| File content written | WriteFile |
| Rename | SetRenameInformationFile |
| Delete | SetDispositionInformationFile |
| Registry key creation | RegCreateKey |
| Registry value set | RegSetValue |
| Process creation | Process Create |
| Thread activity | Operations containing Thread |
| DLL/EXE load | Load Image |
| Network | TCP Connect, TCP Send/Receive, UDP Send/Receive |
Useful filters:
Process Name is sample.exe Include
Path begins with C:\Temp Include
Operation is CreateFile Include
Operation is WriteFile Include
Operation contains Thread Include
Category is Write Include
Result is ACCESS DENIED Include
CreateFile can open an existing file. Check Detail, following WriteFile events, and whether the path existed before execution.
APIMiner and API Monitor
The 2025 VM answer used:
C:\Users\IEUser\Desktop\APIMiner.lnk --app C:\Temp\sample.exe
Preserve every generated trace. Search API names and inspect nearby calls and arguments. Do not prove injection from a single API.
Process-Injection Cheat Sheet
Four Exam Stages
| Stage | Purpose | Common APIs |
|---|---|---|
| 1. Find/open target | Select process and obtain handle | CreateToolhelp32Snapshot, Process32First/Next, OpenProcess |
| 2. Prepare memory | Allocate and make memory usable/executable | VirtualAllocEx, VirtualAlloc, VirtualProtect(Ex), NtAllocateVirtualMemory |
| 3. Write/map payload | Place DLL path, shellcode, or PE in target | WriteProcessMemory, NtCreateSection, NtMapViewOfSection, NtUnmapViewOfSection |
| 4. Execute | Start or redirect a target thread | CreateRemoteThread, NtCreateThreadEx, CreateThread, QueueUserAPC, SetThreadContext, ResumeThread |
Privilege-related APIs:
OpenProcessToken
LookupPrivilegeValueW
AdjustTokenPrivileges
Classic DLL Injection
CreateToolhelp32Snapshot / Process32First / Process32Next
-> OpenProcess
-> VirtualAllocEx
-> WriteProcessMemory (DLL path)
-> GetModuleHandle / GetProcAddress (LoadLibrary)
-> CreateRemoteThread
Shellcode Injection
OpenProcess
-> VirtualAllocEx
-> WriteProcessMemory (raw shellcode)
-> VirtualProtectEx if needed
-> CreateRemoteThread
Section Mapping / Hollowing Indicators
CreateProcess with CREATE_SUSPENDED
NtCreateSection
NtMapViewOfSection
NtUnmapViewOfSection
GetThreadContext
SetThreadContext
ResumeThread
Strong Explanation
The trace supports process injection because the sample first [found/opened]
the target using [APIs], then prepared target memory using [APIs], placed or
mapped the payload using [APIs], and finally initiated execution using [APIs].
The sequence and cross-process parameters are stronger evidence than any
single API call.
Process Hacker Quick Guide
Inspect:
- process name, PID, parent PID, integrity level
- executable path and command line
- Threads tab: TID, start address, state
- Modules tab: DLLs loaded into the process
- Memory tab: base address, size, permissions, mapped image/private memory
- strings in process memory
For injection:
- unexpected DLL in target Modules tab
- private executable memory (
RWXor changedRWtoRX) - thread start address in private/unbacked memory
- suspended/resumed target process
- memory containing injected strings/payload
PID and TID values change on every run.
Persistence Paths and Commands
Startup Folders
User:
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
All users:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
Shortcuts:
shell:startup
shell:common startup
Run/RunOnce Keys
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKU\<SID>\Software\Microsoft\Windows\CurrentVersion\Run
Commands:
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
wmic useraccount get name,SID
Services
Registry:
HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>
Important values:
ImagePath
Start
ServiceDll
ObjectName
Event logs:
System Event ID 7045
Security Event ID 4697
Commands:
sc query
sc qc <ServiceName>
reg query HKLM\SYSTEM\CurrentControlSet\Services\<ServiceName>
Scheduled Tasks
Files:
C:\Windows\System32\Tasks
Registry:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache
Commands:
schtasks /query /fo list /v
Other Persistence
BootExecute:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
Normal value commonly includes: autocheck autochk *
AppInit:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\LoadAppInit_DLLs
SilentProcessExit / IFEO:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
Persistence conclusion:
Persistence is supported by [artifact] at [exact path]. The value/task/service
[name] launches [executable and arguments] when [trigger]. Autoruns/ProcMon
confirmed [corroboration]. The referenced file [exists/does not exist] at
[path].
Network Analysis
FakeNet Workflow
- Restore snapshot.
- Start FakeNet before the sample.
- Start Wireshark on the isolated adapter.
- Execute the sample.
- Record DNS requests, HTTP requests, destination ports, timing, and payloads.
- Stop capture and save the PCAP.
Useful Indicators
| Observation | Possible meaning |
|---|---|
| Many high-entropy domains | DGA |
| Repeated periodic DNS requests | Beaconing/DGA |
| Many NXDOMAIN responses | Generated inactive domains |
%, =, query parameters in strings |
HTTP C2 formatting |
socket/connect/send/recv |
Socket communication capability |
InternetOpen/HttpSendRequest |
WinINet HTTP behavior |
Wireshark display filters:
dns
dns.flags.rcode == 3
http
tls
tcp.stream eq <number>
ip.addr == <address>
For TLS decryption:
Wireshark -> Edit -> Preferences -> Protocols -> TLS
Set (Pre)-Master-Secret log filename to the provided SSL key log.
Registry Hive Loading - Supplemental
If an offline-registry question appears:
- Export the hive with
.LOG1and.LOG2. - Load the working copy in Registry Explorer.
- Record whether transaction logs were replayed.
- For
SYSTEM, readSelect\Current. - If
Current = 1, useControlSet001; if2, useControlSet002. - Report both logical and offline paths.
Common hives:
C:\Windows\System32\config\SOFTWARE
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\config\SAM
C:\Users\<user>\NTUSER.DAT
C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.dat
Verified 2025 Example Answers
These are examples from the uploaded answer PDF. Verify all results in your own exam run.
Example 1: Type and Packing
The sample is a 32-bit Windows Portable Executable. CFF Explorer identifies
the PE32 structure. DiE reports entropy of 7.99488, close to the maximum of 8,
and [additional section/signature evidence]. These indicators support that the
file is packed.
Evidence: Figure 1 (CFF Explorer) and Figure 2 (DiE Entropy).
Example 2: Created Files
The 2025 answer reported:
C:\Temp\old_sample.exe
C:\Temp\ui\
C:\Temp\ui\SwDRM.dll
C:\Temp\ui\IPHLPAPI.DLL
C:\Temp\ui\WINNSI.DLL
C:\Temp\ui\powrprof.dll
C:\Temp\ui\config.json
Answer form:
ProcMon shows that sample.exe created [items] under C:\Temp. The artifacts
were short-lived and were later deleted, as shown by [delete operation].
Figure [X] shows the process-name and C:\Temp path filters with the relevant
operations.
Example 3: Injection
The API trace supports process injection:
1. Target discovery/opening: [APIs and target].
2. Memory/privilege preparation: [APIs and parameters].
3. Payload mapping/writing: [APIs and target addresses].
4. Thread execution/manipulation: [APIs and TID/target].
The ordered cross-process sequence confirms the behavior more strongly than
any individual API.
The verified 2025 answer used:
Stage 1: CreateToolhelp32Snapshot, OpenProcess
Stage 2: LookupPrivilegeValueW, AdjustTokenPrivileges,
VirtualAlloc, VirtualProtect
Stage 3: NtCreateSection, NtMapViewOfSection, NtUnmapViewOfSection
Stage 4: CreateThread, GetThreadContext, SetThreadContext
Example 4: Thread IDs
ProcMon, filtered with Operation contains Thread, shows [count] distinct
threads with IDs [your TIDs]. Figure [X] displays the filtered events and TID
column.
The old answer reported 3608, 3424, 1176, and 2684; do not reuse them.
Universal Answer Template
Question [number]: [short title]
Direct answer:
[One or two sentences answering exactly what was asked.]
Tool and method:
[Tool/version, command, filters, or navigation.]
Evidence:
- Source/path/API:
- Raw result:
- PID/TID/address where relevant:
- Screenshot: Figure [number]
Interpretation:
[Explain why the evidence supports the answer.]
Corroboration:
[Second tool/artifact, if available.]
Limitation:
[What this evidence does not prove or any uncertainty.]
Screenshot Checklist
Every screenshot should show:
- tool name/window
- sample/process name
- command or filter where possible
- relevant path/API/operation
- PID/TID/address if relevant
- enough context to understand the result
Use captions:
Figure 1. DiE identifies sample.exe as PE32 and reports entropy of [value].
Figure 2. ProcMon shows sample.exe creating [file] under C:\Temp.
Figure 3. APIMiner records [API] against target PID [PID].
Do not submit:
- unreadable full-screen screenshots
- screenshots without captions
- conclusions without visible evidence
- copied example values that do not match your run
Final Ten-Minute Review
- [ ] Every question has a direct answer.
- [ ] Tool, command, and filters are stated.
- [ ] Screenshots are readable and captioned.
- [ ] Paths, APIs, PID/TID, and values match screenshots.
- [ ] Packing uses multiple indicators.
- [ ] Injection is explained as a sequence.
- [ ] Example IDs were not reused.
- [ ] Observations and interpretations are separated.
- [ ] Required filename is correct.
- [ ] Final PDF opens and all pages/screenshots render.