{"id": "trtp-04ec8552ab19", "instruction": "Describe Virtual Memory and its purpose.", "output": "Virtual memory is an abstraction that provides each process with its own isolated address space, mapping virtual addresses to physical memory through page tables. The CPU's Memory Management Unit (MMU) translates virtual addresses to physical addresses, enabling memory isolation between processes and allowing the OS to use disk as extended memory (paging/swapping).", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-memory-basics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547623Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547663Z", "updated_at": "2025-12-17T17:38:43.547663Z"} {"id": "trtp-f4dcc50bb70b", "instruction": "How does Virtual Memory relate to security?", "output": "Virtual memory isolation is fundamental to process security. Attackers who can manipulate page tables or bypass virtual memory isolation can read/write arbitrary process memory, escalate privileges, or escape sandboxes.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-memory-basics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547623Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547685Z", "updated_at": "2025-12-17T17:38:43.547685Z"} {"id": "trtp-8bd89f54063e", "instruction": "What elements make up Virtual Memory?", "output": "Key components of Virtual Memory:\n\n- Virtual Address Space (VAS) - isolated per-process memory view\n- Page Tables - hierarchical structures mapping virtual to physical\n- Page Table Entries (PTEs) - contain physical frame and permission bits\n- Translation Lookaside Buffer (TLB) - CPU cache for page translations\n- Memory Management Unit (MMU) - hardware performing translations", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-memory-basics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547623Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547707Z", "updated_at": "2025-12-17T17:38:43.547707Z"} {"id": "trtp-5f28574d73be", "instruction": "How do attackers abuse Virtual Memory?", "output": "Attack vectors involving Virtual Memory:\n\n- Kernel exploits targeting page table manipulation\n- Rowhammer attacks causing bit flips in page tables\n- Spectre/Meltdown exploiting speculative execution to leak memory\n- Page table entry corruption for privilege escalation", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-memory-basics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547623Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547721Z", "updated_at": "2025-12-17T17:38:43.547721Z"} {"id": "trtp-1990dfb85c49", "instruction": "What evidence can be found from Virtual Memory activity?", "output": "Forensic artifacts for Virtual Memory:\n\n- Page table structures in kernel memory\n- CR3 register values per process\n- Memory access patterns in crash dumps", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-memory-basics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547623Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547733Z", "updated_at": "2025-12-17T17:38:43.547733Z"} {"id": "trtp-591f27288c49", "instruction": "What is Process Address Space Layout?", "output": "A process's virtual address space is divided into regions: code (.text) containing executable instructions, initialized data (.data), uninitialized data (.bss), heap growing upward for dynamic allocations, memory-mapped regions for shared libraries and files, and stack growing downward for function calls. Understanding this layout is critical for exploitation and forensics.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-address-space-layout", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547749Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547768Z", "updated_at": "2025-12-17T17:38:43.547768Z"} {"id": "trtp-f4e63ab3b41b", "instruction": "From a security perspective, why is understanding Process Address Space Layout important?", "output": "Attackers exploit predictable memory layouts to craft reliable exploits. Understanding layout enables buffer overflow exploitation, ROP chain construction, and heap spraying attacks.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-address-space-layout", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547749Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547780Z", "updated_at": "2025-12-17T17:38:43.547780Z"} {"id": "trtp-92e967df1809", "instruction": "What elements make up Process Address Space Layout?", "output": "Key components of Process Address Space Layout:\n\n- .text section - executable code (read/execute)\n- .data section - initialized global/static variables\n- .bss section - uninitialized globals (zeroed)\n- Heap - dynamic allocations (malloc/new)\n- Memory-mapped regions - shared libraries, mmap'd files\n- Stack - function call frames, local variables\n- Kernel space - upper portion of address space", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-address-space-layout", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547749Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547795Z", "updated_at": "2025-12-17T17:38:43.547795Z"} {"id": "trtp-775f216f2e74", "instruction": "How do attackers abuse Process Address Space Layout?", "output": "Attack vectors involving Process Address Space Layout:\n\n- Buffer overflows targeting stack or heap\n- Return-oriented programming (ROP) using known code locations\n- Heap spraying to place shellcode at predictable addresses\n- Format string attacks to leak or write arbitrary addresses", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-address-space-layout", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547749Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547807Z", "updated_at": "2025-12-17T17:38:43.547807Z"} {"id": "trtp-c84bf078a602", "instruction": "What forensic artifacts does Process Address Space Layout leave?", "output": "Forensic artifacts for Process Address Space Layout:\n\n- Process memory maps (/proc/pid/maps, VADs)\n- Section headers in PE/ELF files\n- Heap metadata structures", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-address-space-layout", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547749Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547818Z", "updated_at": "2025-12-17T17:38:43.547818Z"} {"id": "trtp-9bdcd9b00fef", "instruction": "How does Address Space Layout Randomization (ASLR) work?", "output": "ASLR is a security mechanism that randomizes the base addresses of executable, libraries, heap, and stack in memory. By making addresses unpredictable, ASLR defeats exploits that rely on hardcoded addresses. Full ASLR randomizes all regions; partial ASLR may leave some regions fixed.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-aslr", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547828Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547844Z", "updated_at": "2025-12-17T17:38:43.547844Z"} {"id": "trtp-76e21528268d", "instruction": "How does Address Space Layout Randomization (ASLR) relate to security?", "output": "ASLR is a critical exploit mitigation. Bypassing ASLR is often the first step in modern exploitation, requiring information leaks to discover randomized addresses.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-aslr", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547828Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547855Z", "updated_at": "2025-12-17T17:38:43.547855Z"} {"id": "trtp-0d35c857296c", "instruction": "What are the components of Address Space Layout Randomization (ASLR)?", "output": "Key components of Address Space Layout Randomization (ASLR):\n\n- Executable base randomization (PIE/ASLR)\n- Library load address randomization\n- Stack base randomization\n- Heap base randomization\n- Entropy bits - amount of randomness (typically 8-28 bits)", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-aslr", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547828Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547869Z", "updated_at": "2025-12-17T17:38:43.547869Z"} {"id": "trtp-699f961d850b", "instruction": "What attack vectors use Address Space Layout Randomization (ASLR)?", "output": "Attack vectors involving Address Space Layout Randomization (ASLR):\n\n- Information leaks to disclose randomized addresses\n- Partial overwrites exploiting low entropy\n- Brute forcing on 32-bit systems with limited entropy\n- JIT spraying to place code at known offsets\n- Return-to-PLT/GOT attacks using fixed addresses", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-aslr", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547828Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547881Z", "updated_at": "2025-12-17T17:38:43.547881Z"} {"id": "trtp-0635381844f8", "instruction": "What indicators of Address Space Layout Randomization (ASLR) can forensic analysts look for?", "output": "Forensic artifacts for Address Space Layout Randomization (ASLR):\n\n- /proc/sys/kernel/randomize_va_space (Linux)\n- DYNAMICBASE flag in PE headers (Windows)\n- Position Independent Executable (PIE) flag", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-aslr", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547828Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547892Z", "updated_at": "2025-12-17T17:38:43.547892Z"} {"id": "trtp-2069b68d9457", "instruction": "What is Data Execution Prevention (DEP/NX)?", "output": "DEP (Windows) / NX bit (Linux) is a hardware-enforced security feature that marks memory pages as non-executable. When enabled, the CPU will fault if code attempts to execute from pages marked as data (heap, stack). This prevents classic shellcode injection attacks where attackers write and execute code in data regions.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-dep-nx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547901Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547916Z", "updated_at": "2025-12-17T17:38:43.547916Z"} {"id": "trtp-c37e3195fbe2", "instruction": "How does Data Execution Prevention (DEP/NX) relate to security?", "output": "DEP/NX is fundamental mitigation against code injection. Modern exploits must use code reuse techniques (ROP, JOP) since injected shellcode cannot execute directly.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-dep-nx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547901Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547925Z", "updated_at": "2025-12-17T17:38:43.547925Z"} {"id": "trtp-4063b4ee4860", "instruction": "Describe the structure of Data Execution Prevention (DEP/NX).", "output": "Key components of Data Execution Prevention (DEP/NX):\n\n- NX bit in page table entries\n- Hardware enforcement via CPU (Intel XD, AMD NX)\n- Software DEP (SafeSEH, SEHOP on Windows)\n- Per-process and per-region settings", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-dep-nx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547901Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547939Z", "updated_at": "2025-12-17T17:38:43.547939Z"} {"id": "trtp-54e3e005f2e3", "instruction": "How do attackers abuse Data Execution Prevention (DEP/NX)?", "output": "Attack vectors involving Data Execution Prevention (DEP/NX):\n\n- Return-Oriented Programming (ROP) - chain existing code gadgets\n- Jump-Oriented Programming (JOP)\n- Return-to-libc attacks\n- JIT spraying in browsers\n- VirtualProtect/mprotect to change page permissions", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-dep-nx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547901Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547951Z", "updated_at": "2025-12-17T17:38:43.547951Z"} {"id": "trtp-aa78554530ed", "instruction": "What forensic artifacts does Data Execution Prevention (DEP/NX) leave?", "output": "Forensic artifacts for Data Execution Prevention (DEP/NX):\n\n- Page permissions in memory dumps\n- NXCOMPAT flag in PE headers\n- Memory protection flags in VADs/VMAs", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-dep-nx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547901Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547962Z", "updated_at": "2025-12-17T17:38:43.547962Z"} {"id": "trtp-70238762a18d", "instruction": "How does Windows Heap Internals work?", "output": "The Windows heap manager provides dynamic memory allocation via HeapAlloc/HeapFree (or malloc/free which wrap them). The NT heap uses a frontend (Low Fragmentation Heap - LFH) for small allocations and backend for larger ones. Understanding heap metadata structures (HEAP, HEAP_ENTRY, free lists) is essential for heap exploitation and forensics.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-windows", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547970Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547984Z", "updated_at": "2025-12-17T17:38:43.547984Z"} {"id": "trtp-02c96c6c903f", "instruction": "Why is Windows Heap Internals security-relevant?", "output": "Heap exploitation techniques abuse heap metadata to achieve arbitrary writes or code execution. Modern Windows heaps include extensive mitigations but remain targets.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-windows", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547970Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.547994Z", "updated_at": "2025-12-17T17:38:43.547994Z"} {"id": "trtp-0b3262e3c62f", "instruction": "What are the components of Windows Heap Internals?", "output": "Key components of Windows Heap Internals:\n\n- HEAP structure - main heap descriptor\n- HEAP_ENTRY - 8/16 byte header per allocation\n- Low Fragmentation Heap (LFH) - frontend for small allocs\n- Segment heap (Windows 10+) - modern heap implementation\n- Free lists and lookaside lists\n- Heap encoding/XOR cookies for integrity", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-windows", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547970Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548009Z", "updated_at": "2025-12-17T17:38:43.548009Z"} {"id": "trtp-7f60823b9b41", "instruction": "What attack vectors use Windows Heap Internals?", "output": "Attack vectors involving Windows Heap Internals:\n\n- Heap overflow corrupting adjacent metadata\n- Use-after-free exploiting dangling pointers\n- Double-free corrupting free lists\n- Heap spraying for predictable allocation placement\n- Type confusion in heap objects", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-windows", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547970Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548020Z", "updated_at": "2025-12-17T17:38:43.548020Z"} {"id": "trtp-329e1d97e1de", "instruction": "What evidence can be found from Windows Heap Internals activity?", "output": "Forensic artifacts for Windows Heap Internals:\n\n- HEAP structures in process memory\n- Allocation patterns and sizes\n- Freed chunk metadata\n- LFH bucket structures", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-windows", "license": "original", "retrieved_at": "2025-12-17T17:38:43.547970Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548032Z", "updated_at": "2025-12-17T17:38:43.548032Z"} {"id": "trtp-6aa1d54d301d", "instruction": "What is glibc malloc Internals?", "output": "glibc's malloc implementation (ptmalloc2) manages dynamic memory using arenas, bins, and chunks. Each allocation has a chunk header with size and flags. Free chunks are organized into bins (fast bins, small bins, large bins, unsorted bin) for efficient reuse. Understanding chunk metadata is critical for Linux heap exploitation.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-linux", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548041Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548055Z", "updated_at": "2025-12-17T17:38:43.548055Z"} {"id": "trtp-fa7b2456ee6c", "instruction": "Why is glibc malloc Internals security-relevant?", "output": "glibc heap has been heavily targeted. Techniques like unsafe unlink, fastbin dup, tcache poisoning, and house of techniques enable powerful exploitation primitives.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-linux", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548041Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548064Z", "updated_at": "2025-12-17T17:38:43.548064Z"} {"id": "trtp-b87524f346f3", "instruction": "What are the components of glibc malloc Internals?", "output": "Key components of glibc malloc Internals:\n\n- malloc_chunk structure (prev_size, size, fd, bk pointers)\n- Arenas - per-thread heap regions\n- Fast bins - LIFO lists for small chunks\n- Unsorted bin - recently freed chunks\n- Small/Large bins - sorted by size\n- Top chunk (wilderness) - expandable end of heap\n- tcache (thread cache) - per-thread fast allocation", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-linux", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548041Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548079Z", "updated_at": "2025-12-17T17:38:43.548079Z"} {"id": "trtp-d7cc72e78cbb", "instruction": "How can glibc malloc Internals be exploited?", "output": "Attack vectors involving glibc malloc Internals:\n\n- Unsafe unlink - corrupting fd/bk for arbitrary write\n- Fastbin dup - double-free in fastbins\n- Tcache poisoning - corrupting tcache next pointers\n- House of Force - corrupting top chunk size\n- House of Spirit - faking free chunks\n- Overlapping chunks via size corruption", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-linux", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548041Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548090Z", "updated_at": "2025-12-17T17:38:43.548090Z"} {"id": "trtp-c7104150e971", "instruction": "What evidence can be found from glibc malloc Internals activity?", "output": "Forensic artifacts for glibc malloc Internals:\n\n- Heap chunks and metadata\n- Bin structures in main_arena\n- Tcache entries per thread\n- Allocation/free patterns", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-heap-internals-linux", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548041Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548101Z", "updated_at": "2025-12-17T17:38:43.548101Z"} {"id": "trtp-3437d4270950", "instruction": "How does Stack Mechanics and Calling Conventions work?", "output": "The stack is a LIFO data structure used for function calls, storing return addresses, saved registers, and local variables. Calling conventions (cdecl, stdcall, fastcall, System V AMD64) define how arguments are passed and who cleans up the stack. Understanding stack frames is essential for exploitation and debugging.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548110Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548131Z", "updated_at": "2025-12-17T17:38:43.548131Z"} {"id": "trtp-2e63339190be", "instruction": "How does Stack Mechanics and Calling Conventions relate to security?", "output": "Stack-based buffer overflows remain common. Overwriting return addresses enables control flow hijacking. Stack canaries, SafeSEH, and shadow stacks provide mitigations.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548110Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548141Z", "updated_at": "2025-12-17T17:38:43.548141Z"} {"id": "trtp-d64d0b15a39c", "instruction": "Describe the structure of Stack Mechanics and Calling Conventions.", "output": "Key components of Stack Mechanics and Calling Conventions:\n\n- Stack pointer (ESP/RSP) - top of stack\n- Base pointer (EBP/RBP) - frame reference\n- Return address - saved EIP/RIP for function return\n- Saved registers - callee/caller saved\n- Local variables - function-local storage\n- Function arguments - passed via stack or registers", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548110Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548155Z", "updated_at": "2025-12-17T17:38:43.548155Z"} {"id": "trtp-451d3b667ec8", "instruction": "What are common attacks involving Stack Mechanics and Calling Conventions?", "output": "Attack vectors involving Stack Mechanics and Calling Conventions:\n\n- Stack buffer overflow overwriting return address\n- SEH (Structured Exception Handler) overwrites\n- Stack pivoting to attacker-controlled memory\n- Format string attacks reading/writing stack\n- ROP chains using gadgets ending in ret", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548110Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548167Z", "updated_at": "2025-12-17T17:38:43.548167Z"} {"id": "trtp-aa767d63376c", "instruction": "What forensic artifacts does Stack Mechanics and Calling Conventions leave?", "output": "Forensic artifacts for Stack Mechanics and Calling Conventions:\n\n- Stack frames in crash dumps\n- Return address patterns\n- Stack cookies/canaries\n- Call stack reconstruction", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548110Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548179Z", "updated_at": "2025-12-17T17:38:43.548179Z"} {"id": "trtp-7ee3821bcd10", "instruction": "Describe Stack Canaries (Stack Cookies) and its purpose.", "output": "Stack canaries are random values placed between local variables and the return address on the stack. Before a function returns, the canary is checked against the original value. If corrupted by a buffer overflow, the program terminates. This prevents simple return address overwrites but can be bypassed with information leaks.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-canaries", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548193Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548208Z", "updated_at": "2025-12-17T17:38:43.548208Z"} {"id": "trtp-5992fd0d96c2", "instruction": "Why is Stack Canaries (Stack Cookies) security-relevant?", "output": "Canaries are effective against naive stack overflows but can be bypassed by leaking the canary value, overwriting other targets (SEH, function pointers), or using non-contiguous overwrites.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-canaries", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548193Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548222Z", "updated_at": "2025-12-17T17:38:43.548222Z"} {"id": "trtp-559d2ed43d5b", "instruction": "What are the components of Stack Canaries (Stack Cookies)?", "output": "Key components of Stack Canaries (Stack Cookies):\n\n- Canary value - random per-process or per-function\n- Terminator canaries - include null, newline, EOF to stop string functions\n- XOR canaries - XOR'd with return address for added protection\n- Master canary - stored securely, checked against stack copy", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-canaries", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548193Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548237Z", "updated_at": "2025-12-17T17:38:43.548237Z"} {"id": "trtp-6efc9f7b75c0", "instruction": "What are common attacks involving Stack Canaries (Stack Cookies)?", "output": "Attack vectors involving Stack Canaries (Stack Cookies):\n\n- Information leak to disclose canary value\n- Byte-by-byte brute force (fork-based servers)\n- Overwriting data before canary check\n- Targeting exception handlers (pre-canary-check)\n- Format string to read canary from stack", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-canaries", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548193Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548252Z", "updated_at": "2025-12-17T17:38:43.548252Z"} {"id": "trtp-ad5f3c889d19", "instruction": "What forensic artifacts does Stack Canaries (Stack Cookies) leave?", "output": "Forensic artifacts for Stack Canaries (Stack Cookies):\n\n- Stack cookie values in dumps\n- __security_cookie in PE files\n- GS cookie check routines", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-stack-canaries", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548193Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548263Z", "updated_at": "2025-12-17T17:38:43.548263Z"} {"id": "trtp-6b4972e1d948", "instruction": "What is Memory-Mapped Files?", "output": "Memory-mapped files allow mapping file contents directly into a process's address space using mmap (Linux) or CreateFileMapping/MapViewOfFile (Windows). Changes to the mapped region can be written back to the file. This enables efficient file I/O, shared memory between processes, and is used for loading executables and libraries.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-mapped-files", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548273Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548286Z", "updated_at": "2025-12-17T17:38:43.548286Z"} {"id": "trtp-a1295b613d5d", "instruction": "Why is Memory-Mapped Files security-relevant?", "output": "Memory-mapped files are used to load malicious code, create shared memory for IPC, and in exploitation to place controlled data at known addresses.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-mapped-files", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548273Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548296Z", "updated_at": "2025-12-17T17:38:43.548296Z"} {"id": "trtp-a3f167e55bac", "instruction": "What elements make up Memory-Mapped Files?", "output": "Key components of Memory-Mapped Files:\n\n- mmap/munmap syscalls (Linux)\n- CreateFileMapping/MapViewOfFile/UnmapViewOfFile (Windows)\n- Mapping types: private (copy-on-write) vs shared\n- Protection flags: read, write, execute\n- File-backed vs anonymous mappings", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-mapped-files", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548273Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548310Z", "updated_at": "2025-12-17T17:38:43.548310Z"} {"id": "trtp-3195c256807e", "instruction": "How do attackers abuse Memory-Mapped Files?", "output": "Attack vectors involving Memory-Mapped Files:\n\n- Mapping shellcode from file into memory\n- Shared memory injection between processes\n- DLL/SO loading via memory mapping\n- Exploiting file mapping permission misconfigurations", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-mapped-files", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548273Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548321Z", "updated_at": "2025-12-17T17:38:43.548321Z"} {"id": "trtp-183a4876a3ba", "instruction": "What indicators of Memory-Mapped Files can forensic analysts look for?", "output": "Forensic artifacts for Memory-Mapped Files:\n\n- VADs (Windows) / VMAs (Linux) showing mapped files\n- Memory regions backed by files\n- Shared memory sections", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-mapped-files", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548273Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548332Z", "updated_at": "2025-12-17T17:38:43.548332Z"} {"id": "trtp-f102bd7b0bed", "instruction": "Describe Copy-on-Write (COW) and its purpose.", "output": "Copy-on-Write is a memory optimization where forked processes initially share the same physical pages as the parent. Pages are only duplicated when one process writes to them, triggering a page fault that creates a private copy. This makes fork() efficient and is used in process creation and memory deduplication.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-copy-on-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548341Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548354Z", "updated_at": "2025-12-17T17:38:43.548354Z"} {"id": "trtp-b323f86634a6", "instruction": "From a security perspective, why is understanding Copy-on-Write (COW) important?", "output": "COW has security implications: Dirty COW (CVE-2016-5195) exploited race conditions in COW handling for privilege escalation. COW behavior affects process isolation and memory forensics.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-copy-on-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548341Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548364Z", "updated_at": "2025-12-17T17:38:43.548364Z"} {"id": "trtp-b11fea7c5e7f", "instruction": "What elements make up Copy-on-Write (COW)?", "output": "Key components of Copy-on-Write (COW):\n\n- Shared page table entries after fork\n- Write-protect bit on shared pages\n- Page fault handler for COW\n- Private vs shared mapping flags", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-copy-on-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548341Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548382Z", "updated_at": "2025-12-17T17:38:43.548382Z"} {"id": "trtp-181b04ebad39", "instruction": "What are common attacks involving Copy-on-Write (COW)?", "output": "Attack vectors involving Copy-on-Write (COW):\n\n- Dirty COW - race condition writing to read-only mappings\n- COW-based side channels\n- Memory deduplication attacks\n\n**MITRE ATT&CK**: T1068", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-copy-on-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548341Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548397Z", "updated_at": "2025-12-17T17:38:43.548397Z"} {"id": "trtp-cbae7c0f3552", "instruction": "What indicators of Copy-on-Write (COW) can forensic analysts look for?", "output": "Forensic artifacts for Copy-on-Write (COW):\n\n- Page sharing statistics\n- COW fault counts in /proc\n- Private vs shared memory accounting", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-copy-on-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548341Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548409Z", "updated_at": "2025-12-17T17:38:43.548409Z"} {"id": "trtp-d0ec5ac81351", "instruction": "How does Working Set and Page Faults work?", "output": "A process's working set is the subset of virtual pages currently resident in physical memory. When accessing a page not in the working set, a page fault occurs. Hard faults require reading from disk (slow); soft faults resolve from standby/modified lists (fast). Working set management affects performance and can be manipulated for attacks.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-working-set-page-faults", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548419Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548432Z", "updated_at": "2025-12-17T17:38:43.548432Z"} {"id": "trtp-90c59ae4480f", "instruction": "How does Working Set and Page Faults relate to security?", "output": "Page fault patterns can leak information (side channels). Forced paging can cause denial of service. Memory pressure affects exploit reliability.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-working-set-page-faults", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548419Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548442Z", "updated_at": "2025-12-17T17:38:43.548442Z"} {"id": "trtp-fa7ee04ea1d5", "instruction": "Describe the structure of Working Set and Page Faults.", "output": "Key components of Working Set and Page Faults:\n\n- Working set - resident pages in physical memory\n- Page fault - access to non-resident page\n- Hard fault - page must be read from disk\n- Soft fault - page found in memory caches\n- Working set trimming - OS reclaiming pages\n- Page file (swap) - disk backing for paged-out pages", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-working-set-page-faults", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548419Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548457Z", "updated_at": "2025-12-17T17:38:43.548457Z"} {"id": "trtp-c33b72dd8935", "instruction": "How can Working Set and Page Faults be exploited?", "output": "Attack vectors involving Working Set and Page Faults:\n\n- Page fault side channels leaking access patterns\n- Denial of service via memory exhaustion\n- Timing attacks based on page fault latency\n- Manipulating working set for deterministic heap state", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-working-set-page-faults", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548419Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548479Z", "updated_at": "2025-12-17T17:38:43.548479Z"} {"id": "trtp-36c31b7b66d7", "instruction": "What indicators of Working Set and Page Faults can forensic analysts look for?", "output": "Forensic artifacts for Working Set and Page Faults:\n\n- Page fault counters in performance data\n- Working set information in process statistics\n- Pagefile usage patterns", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-working-set-page-faults", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548419Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548493Z", "updated_at": "2025-12-17T17:38:43.548493Z"} {"id": "trtp-71412bfb8f18", "instruction": "Describe Memory Region Permissions (RWX) and its purpose.", "output": "Memory regions have permissions controlling read (R), write (W), and execute (X) access. The combination RWX (read-write-execute) is dangerous as it allows writing and executing shellcode. Modern security requires W^X (write XOR execute) - pages should never be simultaneously writable and executable.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-permissions-rwx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548502Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548516Z", "updated_at": "2025-12-17T17:38:43.548516Z"} {"id": "trtp-65c9aa26d20d", "instruction": "Why is Memory Region Permissions (RWX) security-relevant?", "output": "RWX memory enables classic shellcode attacks. Finding or creating RWX regions is a common exploit primitive. JIT compilers require careful permission management.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-permissions-rwx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548502Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548526Z", "updated_at": "2025-12-17T17:38:43.548526Z"} {"id": "trtp-24c9a32b9c23", "instruction": "What are the components of Memory Region Permissions (RWX)?", "output": "Key components of Memory Region Permissions (RWX):\n\n- Read permission - can read contents\n- Write permission - can modify contents\n- Execute permission - can execute as code\n- PAGE_EXECUTE_READWRITE - dangerous RWX permission\n- W^X policy - writable or executable, never both", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-permissions-rwx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548502Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548544Z", "updated_at": "2025-12-17T17:38:43.548544Z"} {"id": "trtp-e58f1c23979a", "instruction": "What are common attacks involving Memory Region Permissions (RWX)?", "output": "Attack vectors involving Memory Region Permissions (RWX):\n\n- Writing shellcode to RWX regions\n- Finding existing RWX regions (JIT, etc.)\n- VirtualProtect/mprotect to create RWX\n- Return-to-mprotect to enable execution", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-permissions-rwx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548502Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548559Z", "updated_at": "2025-12-17T17:38:43.548559Z"} {"id": "trtp-0032fe80334f", "instruction": "What evidence can be found from Memory Region Permissions (RWX) activity?", "output": "Forensic artifacts for Memory Region Permissions (RWX):\n\n- Memory protection flags in VADs/VMAs\n- !address output in WinDbg\n- /proc/pid/maps permissions", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-memory-permissions-rwx", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548502Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548571Z", "updated_at": "2025-12-17T17:38:43.548571Z"} {"id": "trtp-57e287ce6993", "instruction": "Explain VirtualAlloc and Memory Allocation APIs in the context of cross-platform.", "output": "VirtualAlloc (Windows) and mmap (Linux) are the primary low-level APIs for allocating virtual memory regions. They allow specifying base address (or letting OS choose), size, allocation type (reserve/commit), and protection. Understanding these APIs is essential for both exploitation and detection.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-alloc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548586Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548600Z", "updated_at": "2025-12-17T17:38:43.548600Z"} {"id": "trtp-ab6f90991f83", "instruction": "How does VirtualAlloc and Memory Allocation APIs relate to security?", "output": "These APIs are used in every injection technique. Monitoring them reveals malicious memory operations. Remote variants (VirtualAllocEx) are especially suspicious.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-alloc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548586Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548611Z", "updated_at": "2025-12-17T17:38:43.548611Z"} {"id": "trtp-fc83a9547ce8", "instruction": "What elements make up VirtualAlloc and Memory Allocation APIs?", "output": "Key components of VirtualAlloc and Memory Allocation APIs:\n\n- VirtualAlloc/VirtualAllocEx (Windows) - local/remote allocation\n- VirtualFree - deallocation\n- VirtualProtect - change page permissions\n- mmap/munmap (Linux) - memory mapping\n- mprotect (Linux) - change permissions\n- MEM_COMMIT vs MEM_RESERVE", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-alloc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548586Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548625Z", "updated_at": "2025-12-17T17:38:43.548625Z"} {"id": "trtp-dc71e400f7f4", "instruction": "How do attackers abuse VirtualAlloc and Memory Allocation APIs?", "output": "Attack vectors involving VirtualAlloc and Memory Allocation APIs:\n\n- Allocating memory in remote processes for injection\n- Creating executable regions for shellcode\n- Reserving memory at predictable addresses\n- Changing permissions to bypass DEP", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-alloc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548586Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548637Z", "updated_at": "2025-12-17T17:38:43.548637Z"} {"id": "trtp-38c3ea773958", "instruction": "What evidence can be found from VirtualAlloc and Memory Allocation APIs activity?", "output": "Forensic artifacts for VirtualAlloc and Memory Allocation APIs:\n\n- Allocated regions in VAD tree\n- Memory allocation patterns\n- Permission change history", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-virtual-alloc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548586Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548647Z", "updated_at": "2025-12-17T17:38:43.548647Z"} {"id": "trtp-ace796f12ee0", "instruction": "Describe Guard Pages and its purpose.", "output": "Guard pages are memory pages marked with special protection that trigger an exception when accessed. They're used for stack growth detection, heap debugging, and security monitoring. When accessed, a STATUS_GUARD_PAGE_VIOLATION exception occurs, allowing handling before normal access.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-guard-pages", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548657Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548670Z", "updated_at": "2025-12-17T17:38:43.548670Z"} {"id": "trtp-c599a38e142b", "instruction": "What are the security implications of Guard Pages?", "output": "Guard pages help detect stack overflows and buffer overruns. Attackers may try to bypass guard pages or use them to detect debugging/analysis.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-guard-pages", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548657Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548685Z", "updated_at": "2025-12-17T17:38:43.548685Z"} {"id": "trtp-d06de29bc476", "instruction": "What are the components of Guard Pages?", "output": "Key components of Guard Pages:\n\n- PAGE_GUARD protection flag\n- Stack guard pages - detect stack overflow\n- VirtualAlloc with PAGE_GUARD\n- Guard page exceptions\n- One-shot behavior - guard removed after first access", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-guard-pages", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548657Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548699Z", "updated_at": "2025-12-17T17:38:43.548699Z"} {"id": "trtp-e3d087d37a53", "instruction": "How can Guard Pages be exploited?", "output": "Attack vectors involving Guard Pages:\n\n- Probing for guard pages to detect analysis\n- Bypassing guard pages via non-contiguous writes\n- Stack clash attacks jumping over guard pages", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-guard-pages", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548657Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548710Z", "updated_at": "2025-12-17T17:38:43.548710Z"} {"id": "trtp-c6a6b789638b", "instruction": "What forensic artifacts does Guard Pages leave?", "output": "Forensic artifacts for Guard Pages:\n\n- Guard page regions in memory maps\n- Stack overflow exceptions\n- Guard page violation events", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-guard-pages", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548657Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548721Z", "updated_at": "2025-12-17T17:38:43.548721Z"} {"id": "trtp-b30eb5861c3c", "instruction": "Explain Reserved vs Committed Memory in the context of cross-platform.", "output": "Virtual memory can be reserved (address space claimed but no physical storage) or committed (backed by physical memory or pagefile). Reserving without committing saves resources while preventing other allocations. Committing actually allocates storage. Understanding this distinction is important for memory analysis.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-committed-vs-reserved", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548730Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548744Z", "updated_at": "2025-12-17T17:38:43.548744Z"} {"id": "trtp-ea888c0a234c", "instruction": "From a security perspective, why is understanding Reserved vs Committed Memory important?", "output": "Large reservations can indicate heap spraying or exploit preparation. Commit patterns reveal allocation behavior. Over-commitment can cause stability issues.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-committed-vs-reserved", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548730Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548754Z", "updated_at": "2025-12-17T17:38:43.548754Z"} {"id": "trtp-de0a8289e74b", "instruction": "Describe the structure of Reserved vs Committed Memory.", "output": "Key components of Reserved vs Committed Memory:\n\n- MEM_RESERVE - reserve address space only\n- MEM_COMMIT - allocate physical storage\n- MEM_RESERVE | MEM_COMMIT - both in one call\n- Commit charge - total committed memory\n- Virtual memory vs physical memory accounting", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-committed-vs-reserved", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548730Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548768Z", "updated_at": "2025-12-17T17:38:43.548768Z"} {"id": "trtp-9f7de65a47af", "instruction": "What are common attacks involving Reserved vs Committed Memory?", "output": "Attack vectors involving Reserved vs Committed Memory:\n\n- Heap spraying with large reservations then commits\n- Memory exhaustion via excessive reservation\n- Predictable address targeting with specific reservations", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-committed-vs-reserved", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548730Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548783Z", "updated_at": "2025-12-17T17:38:43.548783Z"} {"id": "trtp-454c3856ea7a", "instruction": "What forensic artifacts does Reserved vs Committed Memory leave?", "output": "Forensic artifacts for Reserved vs Committed Memory:\n\n- Reserved vs committed in VAD entries\n- Process memory statistics\n- System commit limit and usage", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-committed-vs-reserved", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548730Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548794Z", "updated_at": "2025-12-17T17:38:43.548794Z"} {"id": "trtp-607c720cfde2", "instruction": "Explain NUMA Memory Architecture in the context of cross-platform.", "output": "Non-Uniform Memory Access (NUMA) architectures have memory physically distributed across nodes, with faster access to local memory than remote memory. Understanding NUMA is relevant for performance optimization and can affect exploit reliability across different system configurations.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-numa-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548803Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548816Z", "updated_at": "2025-12-17T17:38:43.548816Z"} {"id": "trtp-e09dd7644639", "instruction": "How does NUMA Memory Architecture relate to security?", "output": "NUMA awareness affects exploit timing and reliability. Side channel attacks may exploit NUMA timing differences. Memory forensics must account for NUMA topology.", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-numa-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548803Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548826Z", "updated_at": "2025-12-17T17:38:43.548826Z"} {"id": "trtp-8c430ab4b8a2", "instruction": "Describe the structure of NUMA Memory Architecture.", "output": "Key components of NUMA Memory Architecture:\n\n- NUMA nodes - groups of CPUs with local memory\n- Local vs remote memory access latency\n- Memory affinity - preferring local allocations\n- NUMA-aware allocators\n- Cross-node memory access penalties", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-numa-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548803Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548840Z", "updated_at": "2025-12-17T17:38:43.548840Z"} {"id": "trtp-f9a6e53313f4", "instruction": "What attack vectors use NUMA Memory Architecture?", "output": "Attack vectors involving NUMA Memory Architecture:\n\n- NUMA-based timing side channels\n- Cross-NUMA memory access fingerprinting\n- Exploiting NUMA-unaware code for DoS", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-numa-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548803Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548854Z", "updated_at": "2025-12-17T17:38:43.548854Z"} {"id": "trtp-f8e15f8459bf", "instruction": "What indicators of NUMA Memory Architecture can forensic analysts look for?", "output": "Forensic artifacts for NUMA Memory Architecture:\n\n- NUMA node information in system data\n- Memory allocation node affinity\n- Cross-node access statistics", "category": "memory_management", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-memory-numa-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548803Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548877Z", "updated_at": "2025-12-17T17:38:43.548877Z"} {"id": "trtp-8f477b2fef0c", "instruction": "How does Windows API Layers work?", "output": "Windows provides multiple API layers: Win32 (kernel32.dll, user32.dll, advapi32.dll) wraps the NT API (ntdll.dll), which makes syscalls into the kernel. Understanding these layers is crucial for security research, as attackers use lower layers to evade monitoring and defenders need to hook at appropriate levels.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-api-layers", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548890Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548905Z", "updated_at": "2025-12-17T17:38:43.548905Z"} {"id": "trtp-357f768e749f", "instruction": "What are the security implications of Windows API Layers?", "output": "EDRs typically hook Win32 or ntdll. Attackers use direct syscalls or unhooking to bypass these hooks. Understanding the layers enables effective evasion and detection strategies.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-api-layers", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548890Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548915Z", "updated_at": "2025-12-17T17:38:43.548915Z"} {"id": "trtp-f25c669f040c", "instruction": "What are the components of Windows API Layers?", "output": "Key components of Windows API Layers:\n\n- Win32 API - documented, high-level (CreateFile, CreateProcess)\n- kernel32.dll - core Win32 functions\n- ntdll.dll - user-mode NT API (NtCreateFile, NtCreateProcess)\n- Syscall stubs - transition to kernel mode\n- Win32k.sys - kernel-mode graphics/windowing", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-api-layers", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548890Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548929Z", "updated_at": "2025-12-17T17:38:43.548929Z"} {"id": "trtp-04927840fb6e", "instruction": "What attack vectors use Windows API Layers?", "output": "Attack vectors involving Windows API Layers:\n\n- Direct syscalls bypassing ntdll hooks\n- Unhooking ntdll to remove EDR hooks\n- Calling Nt* functions directly to avoid Win32 logging\n- Syscall number enumeration for version-independent attacks", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-api-layers", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548890Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548940Z", "updated_at": "2025-12-17T17:38:43.548940Z"} {"id": "trtp-7ec06cb7a6cf", "instruction": "What indicators of Windows API Layers can forensic analysts look for?", "output": "Forensic artifacts for Windows API Layers:\n\n- Syscall numbers in ntdll\n- Hook presence/absence in ntdll\n- API call patterns in ETW traces", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-api-layers", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548890Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548955Z", "updated_at": "2025-12-17T17:38:43.548955Z"} {"id": "trtp-64b135f983d7", "instruction": "Explain NT Native API in the context of Windows.", "output": "The NT API (Nt*/Zw* functions in ntdll.dll) provides the true interface to the Windows kernel. Many functions are undocumented but heavily used by attackers for their lower-level capabilities and reduced logging. Zw* versions run in kernel mode context; Nt* versions respect user/kernel mode of caller.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548965Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548979Z", "updated_at": "2025-12-17T17:38:43.548979Z"} {"id": "trtp-293c357a1f8f", "instruction": "How does NT Native API relate to security?", "output": "Direct NT API usage often indicates advanced techniques bypassing Win32 logging. Malware commonly uses these functions for process injection, memory manipulation, and enumeration.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548965Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.548989Z", "updated_at": "2025-12-17T17:38:43.548989Z"} {"id": "trtp-778d56de6d53", "instruction": "What are the components of NT Native API?", "output": "Key components of NT Native API:\n\n- NtCreateFile, NtReadFile, NtWriteFile - file operations\n- NtCreateProcess, NtCreateThread - process/thread creation\n- NtAllocateVirtualMemory - memory allocation\n- NtProtectVirtualMemory - change protections\n- NtMapViewOfSection - memory mapping\n- NtQuerySystemInformation - system enumeration", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548965Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549003Z", "updated_at": "2025-12-17T17:38:43.549003Z"} {"id": "trtp-c8edcb115359", "instruction": "How do attackers abuse NT Native API?", "output": "Attack vectors involving NT Native API:\n\n- NtMapViewOfSection for process hollowing\n- NtCreateThreadEx for thread injection\n- NtQuerySystemInformation to enumerate processes\n- NtUnmapViewOfSection for hollowing target process", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548965Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549018Z", "updated_at": "2025-12-17T17:38:43.549018Z"} {"id": "trtp-aa8734601381", "instruction": "What evidence can be found from NT Native API activity?", "output": "Forensic artifacts for NT Native API:\n\n- NT API call traces\n- System information query results\n- Memory mapping events", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.548965Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549030Z", "updated_at": "2025-12-17T17:38:43.549030Z"} {"id": "trtp-f1e8f4ef0fed", "instruction": "What is Windows Handle System?", "output": "Handles are opaque references to kernel objects (files, processes, threads, registry keys, etc.). Each process has a handle table mapping handle values to object pointers. Handles have associated access rights determining permitted operations. Handle inheritance and duplication allow sharing objects between processes.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-handle-system", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549039Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549052Z", "updated_at": "2025-12-17T17:38:43.549052Z"} {"id": "trtp-5b80d64ba2ab", "instruction": "From a security perspective, why is understanding Windows Handle System important?", "output": "Handle manipulation is central to process injection and privilege escalation. Leaked or inherited handles can provide unauthorized access. Handle duplication enables cross-process attacks.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-handle-system", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549039Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549066Z", "updated_at": "2025-12-17T17:38:43.549066Z"} {"id": "trtp-cb9ca7abb70e", "instruction": "What are the components of Windows Handle System?", "output": "Key components of Windows Handle System:\n\n- HANDLE - opaque pointer value\n- Handle table - per-process kernel structure\n- Access rights - bitmask of permitted operations\n- Handle inheritance - child processes inherit handles\n- DuplicateHandle - copy handles between processes\n- Pseudo-handles - special values like GetCurrentProcess()", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-handle-system", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549039Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549081Z", "updated_at": "2025-12-17T17:38:43.549081Z"} {"id": "trtp-dfe27eed1524", "instruction": "How do attackers abuse Windows Handle System?", "output": "Attack vectors involving Windows Handle System:\n\n- Handle inheritance to access parent process objects\n- DuplicateHandle for cross-process token theft\n- Handle leaking from privileged processes\n- Enumerating handles to find targets\n\n**MITRE ATT&CK**: T1134", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-handle-system", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549039Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549092Z", "updated_at": "2025-12-17T17:38:43.549092Z"} {"id": "trtp-553d36af4388", "instruction": "What forensic artifacts does Windows Handle System leave?", "output": "Forensic artifacts for Windows Handle System:\n\n- Handle table dumps\n- Handle access rights\n- Object reference counts", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-handle-system", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549039Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549107Z", "updated_at": "2025-12-17T17:38:43.549107Z"} {"id": "trtp-ed6fc1968360", "instruction": "How does Windows Object Manager work?", "output": "The Object Manager is the kernel executive component managing all named objects in a hierarchical namespace. Objects include files, devices, registry keys, events, mutexes, and sections. The namespace starts at \\ with directories like \\Device, \\BaseNamedObjects, \\Sessions. Understanding object names is crucial for IPC and persistence analysis.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-object-manager", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549117Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549131Z", "updated_at": "2025-12-17T17:38:43.549131Z"} {"id": "trtp-3096ca94f619", "instruction": "What are the security implications of Windows Object Manager?", "output": "Named objects enable IPC and can be abused for synchronization attacks. Object namespace hijacking can redirect operations to attacker-controlled objects.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-object-manager", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549117Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549141Z", "updated_at": "2025-12-17T17:38:43.549141Z"} {"id": "trtp-7f4162d31aaa", "instruction": "What elements make up Windows Object Manager?", "output": "Key components of Windows Object Manager:\n\n- Object namespace - hierarchical object directory\n- \\BaseNamedObjects - global named objects\n- \\Sessions\\X\\BaseNamedObjects - per-session objects\n- \\Device - device objects\n- \\Registry - registry namespace\n- OBJECT_ATTRIBUTES - structure specifying object name/attributes", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-object-manager", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549117Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549156Z", "updated_at": "2025-12-17T17:38:43.549156Z"} {"id": "trtp-61bc249b67c8", "instruction": "How can Windows Object Manager be exploited?", "output": "Attack vectors involving Windows Object Manager:\n\n- Named object squatting/hijacking\n- Symbolic link redirection attacks\n- Device namespace manipulation\n- Cross-session object access", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-object-manager", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549117Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549171Z", "updated_at": "2025-12-17T17:38:43.549171Z"} {"id": "trtp-2b08ad400f27", "instruction": "What indicators of Windows Object Manager can forensic analysts look for?", "output": "Forensic artifacts for Windows Object Manager:\n\n- Object directory structure\n- Named object security descriptors\n- Symbolic links in namespace", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-object-manager", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549117Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549182Z", "updated_at": "2025-12-17T17:38:43.549182Z"} {"id": "trtp-e22a0e421f4c", "instruction": "How does Registry API work?", "output": "The Windows Registry is a hierarchical database storing configuration. The API (RegOpenKey, RegSetValue, RegQueryValue, etc.) provides access. Registry is heavily used for persistence, configuration storage, and system settings. Native API equivalents (NtOpenKey, etc.) exist for lower-level access.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-registry-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549192Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549206Z", "updated_at": "2025-12-17T17:38:43.549206Z"} {"id": "trtp-b1eeaddf34a2", "instruction": "How does Registry API relate to security?", "output": "Registry is the primary persistence mechanism on Windows. Understanding registry operations is essential for detecting malware persistence and configuration tampering.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-registry-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549192Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549216Z", "updated_at": "2025-12-17T17:38:43.549216Z"} {"id": "trtp-3acad834aa34", "instruction": "What elements make up Registry API?", "output": "Key components of Registry API:\n\n- RegOpenKeyEx/RegCreateKeyEx - open/create keys\n- RegSetValueEx/RegQueryValueEx - set/get values\n- RegEnumKeyEx/RegEnumValue - enumerate contents\n- RegNotifyChangeKeyValue - monitor changes\n- HKEY predefined keys (HKLM, HKCU, HKU, etc.)", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-registry-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549192Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549234Z", "updated_at": "2025-12-17T17:38:43.549234Z"} {"id": "trtp-97bb0d8d18ea", "instruction": "How can Registry API be exploited?", "output": "Attack vectors involving Registry API:\n\n- Run/RunOnce keys for persistence\n- Services registry manipulation\n- COM object hijacking via registry\n- AppInit_DLLs injection\n- Image File Execution Options debugger persistence\n\n**MITRE ATT&CK**: T1547.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-registry-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549192Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549246Z", "updated_at": "2025-12-17T17:38:43.549246Z"} {"id": "trtp-bc654ea995ed", "instruction": "What forensic artifacts does Registry API leave?", "output": "Forensic artifacts for Registry API:\n\n- Registry hive files (NTUSER.DAT, SYSTEM, SOFTWARE)\n- Registry timestamps (LastWriteTime)\n- Registry transaction logs", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-registry-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549192Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549261Z", "updated_at": "2025-12-17T17:38:43.549261Z"} {"id": "trtp-f1ff25575e7d", "instruction": "Explain Service Control Manager API in the context of Windows.", "output": "The Service Control Manager (SCM) API (OpenSCManager, CreateService, StartService, etc.) manages Windows services. Services run as background processes with configurable accounts, start types, and dependencies. SCM API is used for legitimate service management and malicious persistence.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-scm-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549270Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549285Z", "updated_at": "2025-12-17T17:38:43.549285Z"} {"id": "trtp-b87add23c710", "instruction": "How does Service Control Manager API relate to security?", "output": "Services provide powerful persistence running at boot with SYSTEM privileges. Attackers create malicious services or modify existing ones. Service binary hijacking is common.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-scm-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549270Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549295Z", "updated_at": "2025-12-17T17:38:43.549295Z"} {"id": "trtp-13800b53fc7c", "instruction": "What elements make up Service Control Manager API?", "output": "Key components of Service Control Manager API:\n\n- OpenSCManager - connect to SCM\n- CreateService - install new service\n- OpenService - open existing service\n- StartService/ControlService - control service state\n- ChangeServiceConfig - modify service properties\n- QueryServiceStatus - check service state", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-scm-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549270Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549309Z", "updated_at": "2025-12-17T17:38:43.549309Z"} {"id": "trtp-34a832da629a", "instruction": "How do attackers abuse Service Control Manager API?", "output": "Attack vectors involving Service Control Manager API:\n\n- Creating malicious services for persistence\n- Service binary path manipulation\n- DLL hijacking in service load paths\n- Modifying existing service configurations\n- Service account privilege abuse\n\n**MITRE ATT&CK**: T1543.003", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-scm-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549270Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549320Z", "updated_at": "2025-12-17T17:38:43.549320Z"} {"id": "trtp-dbf153026d6d", "instruction": "What indicators of Service Control Manager API can forensic analysts look for?", "output": "Forensic artifacts for Service Control Manager API:\n\n- Services registry key (HKLM\\SYSTEM\\CurrentControlSet\\Services)\n- Service binaries on disk\n- Service creation/modification events", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-scm-api", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549270Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549331Z", "updated_at": "2025-12-17T17:38:43.549331Z"} {"id": "trtp-09840c478851", "instruction": "How does Security Descriptors and ACLs work?", "output": "Security Descriptors define access control for securable objects (files, registry keys, processes, etc.). They contain an owner SID, group SID, DACL (Discretionary Access Control List) specifying permissions, and SACL (System ACL) for auditing. Understanding security descriptors is essential for privilege analysis.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-security-descriptors", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549340Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549353Z", "updated_at": "2025-12-17T17:38:43.549353Z"} {"id": "trtp-0ea8c096a5c6", "instruction": "What are the security implications of Security Descriptors and ACLs?", "output": "Weak DACLs enable privilege escalation. Misconfigured permissions on services, registry keys, or files are common attack vectors. SACL manipulation can disable auditing.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-security-descriptors", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549340Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549363Z", "updated_at": "2025-12-17T17:38:43.549363Z"} {"id": "trtp-1fb5a9a78e52", "instruction": "What elements make up Security Descriptors and ACLs?", "output": "Key components of Security Descriptors and ACLs:\n\n- Owner SID - object owner\n- Group SID - primary group (compatibility)\n- DACL - list of ACEs specifying access rights\n- SACL - audit ACEs for logging access\n- ACE (Access Control Entry) - individual permission rule\n- Inheritance flags - propagation to child objects", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-security-descriptors", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549340Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549380Z", "updated_at": "2025-12-17T17:38:43.549380Z"} {"id": "trtp-f81bb73b90e2", "instruction": "How can Security Descriptors and ACLs be exploited?", "output": "Attack vectors involving Security Descriptors and ACLs:\n\n- Exploiting weak DACLs on services for escalation\n- File permission abuse (writable service binaries)\n- Registry key permission exploitation\n- Token manipulation affecting security context\n- SACL modification to evade auditing", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-security-descriptors", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549340Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549393Z", "updated_at": "2025-12-17T17:38:43.549393Z"} {"id": "trtp-67fedc236248", "instruction": "What forensic artifacts does Security Descriptors and ACLs leave?", "output": "Forensic artifacts for Security Descriptors and ACLs:\n\n- Security descriptors on objects\n- ACL inheritance patterns\n- Audit logs from SACLs", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-security-descriptors", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549340Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549407Z", "updated_at": "2025-12-17T17:38:43.549407Z"} {"id": "trtp-f3e07dec5a9f", "instruction": "Describe Token Manipulation APIs and its purpose.", "output": "Access tokens contain the security context of processes/threads: user SID, group SIDs, privileges, and integrity level. Token APIs (OpenProcessToken, DuplicateToken, AdjustTokenPrivileges, SetThreadToken) allow examining and modifying tokens for privilege escalation and impersonation.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-token-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549416Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549430Z", "updated_at": "2025-12-17T17:38:43.549430Z"} {"id": "trtp-45168d52ead8", "instruction": "Why is Token Manipulation APIs security-relevant?", "output": "Token manipulation is central to privilege escalation and lateral movement. Stealing and impersonating tokens allows assuming another user's identity. Enabling privileges like SeDebugPrivilege unlocks powerful capabilities.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-token-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549416Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549440Z", "updated_at": "2025-12-17T17:38:43.549440Z"} {"id": "trtp-5747ccf776fa", "instruction": "What elements make up Token Manipulation APIs?", "output": "Key components of Token Manipulation APIs:\n\n- OpenProcessToken/OpenThreadToken - get token handle\n- DuplicateToken/DuplicateTokenEx - copy token\n- AdjustTokenPrivileges - enable/disable privileges\n- SetThreadToken - impersonate via thread token\n- ImpersonateLoggedOnUser - impersonate user\n- CreateProcessWithTokenW - spawn process with token", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-token-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549416Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549460Z", "updated_at": "2025-12-17T17:38:43.549460Z"} {"id": "trtp-c75e71d0e170", "instruction": "How do attackers abuse Token Manipulation APIs?", "output": "Attack vectors involving Token Manipulation APIs:\n\n- Token theft and impersonation\n- Privilege escalation via SeDebugPrivilege\n- Incognito-style token manipulation\n- Pass-the-token attacks\n- Primary token replacement\n\n**MITRE ATT&CK**: T1134.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-token-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549416Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549492Z", "updated_at": "2025-12-17T17:38:43.549492Z"} {"id": "trtp-9d0f5ae5eb79", "instruction": "What evidence can be found from Token Manipulation APIs activity?", "output": "Forensic artifacts for Token Manipulation APIs:\n\n- Token contents (user, groups, privileges)\n- Impersonation level\n- Token source and statistics", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-token-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549416Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549505Z", "updated_at": "2025-12-17T17:38:43.549505Z"} {"id": "trtp-a322ba932007", "instruction": "How does Windows Privileges work?", "output": "Privileges are rights allowing specific system operations. Key privileges include SeDebugPrivilege (debug any process), SeBackupPrivilege (bypass file ACLs for reading), SeRestorePrivilege (bypass ACLs for writing), SeTakeOwnershipPrivilege, and SeImpersonatePrivilege. Privileges must be enabled in the token before use.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-process-token-privileges", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549515Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549529Z", "updated_at": "2025-12-17T17:38:43.549529Z"} {"id": "trtp-8e11e6c1a423", "instruction": "How does Windows Privileges relate to security?", "output": "Privileges enable powerful operations. SeDebugPrivilege allows reading LSASS memory. SeBackupPrivilege bypasses file permissions. Privilege abuse is key for escalation.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-process-token-privileges", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549515Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549538Z", "updated_at": "2025-12-17T17:38:43.549538Z"} {"id": "trtp-13dd3c0fbeb1", "instruction": "What elements make up Windows Privileges?", "output": "Key components of Windows Privileges:\n\n- SeDebugPrivilege - debug any process\n- SeBackupPrivilege - read any file (backup semantics)\n- SeRestorePrivilege - write any file (restore semantics)\n- SeTakeOwnershipPrivilege - take ownership of objects\n- SeImpersonatePrivilege - impersonate clients\n- SeLoadDriverPrivilege - load kernel drivers\n- SeAssignPrimaryTokenPrivilege - assign process tokens", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-process-token-privileges", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549515Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549553Z", "updated_at": "2025-12-17T17:38:43.549553Z"} {"id": "trtp-4025d5a5d72e", "instruction": "How do attackers abuse Windows Privileges?", "output": "Attack vectors involving Windows Privileges:\n\n- SeDebugPrivilege for credential dumping from LSASS\n- SeBackupPrivilege for reading SAM/SYSTEM hives\n- SeLoadDriverPrivilege for vulnerable driver loading\n- SeImpersonatePrivilege for potato attacks\n- SeTcbPrivilege for token manipulation\n\n**MITRE ATT&CK**: T1134.002", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-process-token-privileges", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549515Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549565Z", "updated_at": "2025-12-17T17:38:43.549565Z"} {"id": "trtp-aec36f06da1d", "instruction": "What forensic artifacts does Windows Privileges leave?", "output": "Forensic artifacts for Windows Privileges:\n\n- Token privilege list\n- Privilege enabled/disabled state\n- Audit logs for privilege usage", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-process-token-privileges", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549515Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549580Z", "updated_at": "2025-12-17T17:38:43.549580Z"} {"id": "trtp-2c815ec7ef48", "instruction": "How does OpenProcess API work?", "output": "OpenProcess obtains a handle to another process with specified access rights. Access rights like PROCESS_ALL_ACCESS, PROCESS_VM_READ, PROCESS_VM_WRITE, and PROCESS_CREATE_THREAD determine what operations are permitted. It's the entry point for most cross-process attacks.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-open-process", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549590Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549603Z", "updated_at": "2025-12-17T17:38:43.549603Z"} {"id": "trtp-7fcbd0ce69cb", "instruction": "Why is OpenProcess API security-relevant?", "output": "OpenProcess is required for process injection, credential theft, and process manipulation. Monitoring OpenProcess calls reveals targeting patterns.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-open-process", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549590Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549613Z", "updated_at": "2025-12-17T17:38:43.549613Z"} {"id": "trtp-72f344eff6a2", "instruction": "What are the components of OpenProcess API?", "output": "Key components of OpenProcess API:\n\n- PROCESS_ALL_ACCESS - full control\n- PROCESS_VM_READ - read memory\n- PROCESS_VM_WRITE - write memory\n- PROCESS_VM_OPERATION - change memory protections\n- PROCESS_CREATE_THREAD - create threads\n- PROCESS_QUERY_INFORMATION - query process info", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-open-process", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549590Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549627Z", "updated_at": "2025-12-17T17:38:43.549627Z"} {"id": "trtp-b83883e99e7d", "instruction": "What attack vectors use OpenProcess API?", "output": "Attack vectors involving OpenProcess API:\n\n- Opening LSASS for credential dumping\n- Opening target processes for injection\n- Process memory reading for secrets\n- Process handle inheritance abuse\n\n**MITRE ATT&CK**: T1003.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-open-process", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549590Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549642Z", "updated_at": "2025-12-17T17:38:43.549642Z"} {"id": "trtp-dc084f267595", "instruction": "What evidence can be found from OpenProcess API activity?", "output": "Forensic artifacts for OpenProcess API:\n\n- Process handle grants in security logs\n- Handle access masks\n- Cross-process relationships", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-open-process", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549590Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549656Z", "updated_at": "2025-12-17T17:38:43.549656Z"} {"id": "trtp-00b03a0debb4", "instruction": "How does CreateRemoteThread API work?", "output": "CreateRemoteThread creates a thread in another process's address space. Combined with VirtualAllocEx and WriteProcessMemory, it enables classic DLL injection by starting a thread at LoadLibrary with a DLL path argument. CreateRemoteThreadEx provides additional options.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-remote-thread", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549666Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549680Z", "updated_at": "2025-12-17T17:38:43.549680Z"} {"id": "trtp-17bd47824e77", "instruction": "How does CreateRemoteThread API relate to security?", "output": "CreateRemoteThread is the classic injection API. Nearly all injection techniques eventually create a remote thread. It's heavily monitored by security products.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-remote-thread", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549666Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549690Z", "updated_at": "2025-12-17T17:38:43.549690Z"} {"id": "trtp-12605366a167", "instruction": "What elements make up CreateRemoteThread API?", "output": "Key components of CreateRemoteThread API:\n\n- CreateRemoteThread - create thread in remote process\n- CreateRemoteThreadEx - extended version with attributes\n- Thread start address - where thread begins execution\n- lpParameter - argument passed to thread function\n- NtCreateThreadEx - native API equivalent", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-remote-thread", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549666Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549704Z", "updated_at": "2025-12-17T17:38:43.549704Z"} {"id": "trtp-212558074476", "instruction": "How can CreateRemoteThread API be exploited?", "output": "Attack vectors involving CreateRemoteThread API:\n\n- Classic DLL injection (LoadLibrary thread)\n- Shellcode injection (direct execution)\n- Reflective DLL loading\n- Thread hijacking combined with CreateRemoteThread\n\n**MITRE ATT&CK**: T1055.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-remote-thread", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549666Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549715Z", "updated_at": "2025-12-17T17:38:43.549715Z"} {"id": "trtp-2eb159400827", "instruction": "What evidence can be found from CreateRemoteThread API activity?", "output": "Forensic artifacts for CreateRemoteThread API:\n\n- Remote thread creation events\n- Thread start address analysis\n- Cross-process relationships", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-remote-thread", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549666Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549725Z", "updated_at": "2025-12-17T17:38:43.549725Z"} {"id": "trtp-58953021fd00", "instruction": "Describe WriteProcessMemory API and its purpose.", "output": "WriteProcessMemory writes data to another process's address space. It requires a process handle with PROCESS_VM_WRITE and PROCESS_VM_OPERATION access. Used legitimately by debuggers, it's also essential for injection attacks to write shellcode or DLL paths.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-write-process-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549734Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549747Z", "updated_at": "2025-12-17T17:38:43.549747Z"} {"id": "trtp-b13986ca4297", "instruction": "From a security perspective, why is understanding WriteProcessMemory API important?", "output": "Cross-process memory writing is a key injection primitive. Legitimate uses are rare outside debugging. Monitoring reveals injection attempts.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-write-process-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549734Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549761Z", "updated_at": "2025-12-17T17:38:43.549761Z"} {"id": "trtp-c04a293ae7cb", "instruction": "What elements make up WriteProcessMemory API?", "output": "Key components of WriteProcessMemory API:\n\n- WriteProcessMemory - write to remote process\n- ReadProcessMemory - read from remote process\n- NtWriteVirtualMemory - native API equivalent\n- Required access: PROCESS_VM_WRITE | PROCESS_VM_OPERATION", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-write-process-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549734Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549779Z", "updated_at": "2025-12-17T17:38:43.549779Z"} {"id": "trtp-32eba5ee9fc7", "instruction": "What attack vectors use WriteProcessMemory API?", "output": "Attack vectors involving WriteProcessMemory API:\n\n- Writing shellcode for injection\n- Writing DLL paths for LoadLibrary injection\n- Modifying remote process code/data\n- Process hollowing payload placement\n\n**MITRE ATT&CK**: T1055", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-write-process-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549734Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549791Z", "updated_at": "2025-12-17T17:38:43.549791Z"} {"id": "trtp-1c9818925e4a", "instruction": "What forensic artifacts does WriteProcessMemory API leave?", "output": "Forensic artifacts for WriteProcessMemory API:\n\n- Memory write events\n- Written data patterns\n- Target region analysis", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-write-process-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549734Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549801Z", "updated_at": "2025-12-17T17:38:43.549801Z"} {"id": "trtp-6bd8a094d699", "instruction": "How does NtQuerySystemInformation work?", "output": "NtQuerySystemInformation queries various system information classes: running processes, loaded modules, handles, firmware tables, and more. It's the backbone of many enumeration tools but also used by malware for reconnaissance and anti-analysis checks.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-query-system-information", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549810Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549823Z", "updated_at": "2025-12-17T17:38:43.549823Z"} {"id": "trtp-0ed6be09595b", "instruction": "How does NtQuerySystemInformation relate to security?", "output": "This API enables comprehensive system enumeration. Attackers use it for process discovery, handle enumeration (finding injection targets), and anti-analysis checks.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-query-system-information", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549810Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549837Z", "updated_at": "2025-12-17T17:38:43.549837Z"} {"id": "trtp-f0afa4220557", "instruction": "What elements make up NtQuerySystemInformation?", "output": "Key components of NtQuerySystemInformation:\n\n- SystemProcessInformation - enumerate processes\n- SystemModuleInformation - kernel modules\n- SystemHandleInformation - all system handles\n- SystemKernelDebuggerInformation - debugger detection\n- SystemFirmwareTableInformation - hardware info\n- SystemCodeIntegrityInformation - CI status", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-query-system-information", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549810Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549851Z", "updated_at": "2025-12-17T17:38:43.549851Z"} {"id": "trtp-93e8c684e32f", "instruction": "How do attackers abuse NtQuerySystemInformation?", "output": "Attack vectors involving NtQuerySystemInformation:\n\n- Process enumeration for targeting\n- Handle enumeration for token theft\n- Debugger detection for anti-analysis\n- Driver enumeration for vulnerability finding", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-query-system-information", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549810Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549862Z", "updated_at": "2025-12-17T17:38:43.549862Z"} {"id": "trtp-b62c098a6f9f", "instruction": "What evidence can be found from NtQuerySystemInformation activity?", "output": "Forensic artifacts for NtQuerySystemInformation:\n\n- System information query results\n- Process/handle enumeration data\n- Anti-debug check patterns", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-nt-query-system-information", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549810Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549873Z", "updated_at": "2025-12-17T17:38:43.549873Z"} {"id": "trtp-a0d9f710f69d", "instruction": "Describe Process Creation Internals and its purpose.", "output": "CreateProcess (and NtCreateProcess/NtCreateUserProcess) creates new processes. The process involves creating the process object, allocating address space, mapping the executable, creating the initial thread, and notifying subsystems. Understanding internals enables detection of process creation manipulation.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-process-internal", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549883Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549897Z", "updated_at": "2025-12-17T17:38:43.549897Z"} {"id": "trtp-972bacc09546", "instruction": "Why is Process Creation Internals security-relevant?", "output": "Process creation is heavily logged and monitored. Attackers manipulate creation parameters, use suspended creation, or abuse parent PID spoofing to evade detection.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-process-internal", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549883Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549910Z", "updated_at": "2025-12-17T17:38:43.549910Z"} {"id": "trtp-1a51706bd31b", "instruction": "Describe the structure of Process Creation Internals.", "output": "Key components of Process Creation Internals:\n\n- CreateProcessW/A - Win32 process creation\n- NtCreateUserProcess - modern NT API\n- Process object creation in kernel\n- Address space initialization\n- PEB (Process Environment Block) setup\n- Initial thread creation\n- Image load callbacks", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-process-internal", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549883Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549925Z", "updated_at": "2025-12-17T17:38:43.549925Z"} {"id": "trtp-198285331362", "instruction": "How do attackers abuse Process Creation Internals?", "output": "Attack vectors involving Process Creation Internals:\n\n- Parent PID spoofing\n- Process hollowing via CREATE_SUSPENDED\n- Command line manipulation\n- Environment variable injection\n- Desktop/station attacks\n\n**MITRE ATT&CK**: T1055.012", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-process-internal", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549883Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549940Z", "updated_at": "2025-12-17T17:38:43.549940Z"} {"id": "trtp-9246138ad9ed", "instruction": "What indicators of Process Creation Internals can forensic analysts look for?", "output": "Forensic artifacts for Process Creation Internals:\n\n- Process creation events\n- Parent PID relationships\n- Command line arguments\n- Creation flags used", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-create-process-internal", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549883Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549952Z", "updated_at": "2025-12-17T17:38:43.549952Z"} {"id": "trtp-931897ecc995", "instruction": "Explain SetWindowsHookEx API in the context of Windows.", "output": "SetWindowsHookEx installs hook procedures that intercept Windows messages, keyboard input, mouse events, and more. Hooks can be system-wide (requiring a DLL) or thread-specific. Used legitimately for accessibility and automation, but abused for keylogging and DLL injection.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-set-windows-hook", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549960Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549974Z", "updated_at": "2025-12-17T17:38:43.549974Z"} {"id": "trtp-e64c0511490c", "instruction": "How does SetWindowsHookEx API relate to security?", "output": "SetWindowsHookEx enables keylogging and automatic DLL injection into GUI processes. Low-level keyboard hooks (WH_KEYBOARD_LL) are especially dangerous for credential theft.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-set-windows-hook", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549960Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.549984Z", "updated_at": "2025-12-17T17:38:43.549984Z"} {"id": "trtp-506fb663aa98", "instruction": "What are the components of SetWindowsHookEx API?", "output": "Key components of SetWindowsHookEx API:\n\n- WH_KEYBOARD/WH_KEYBOARD_LL - keyboard hooks\n- WH_MOUSE/WH_MOUSE_LL - mouse hooks\n- WH_CBT - computer-based training events\n- WH_GETMESSAGE - message hooks\n- Hook DLL - injected into hooked processes\n- Hook chain - multiple hooks called in sequence", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-set-windows-hook", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549960Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550001Z", "updated_at": "2025-12-17T17:38:43.550001Z"} {"id": "trtp-d7859a2a9ad5", "instruction": "What are common attacks involving SetWindowsHookEx API?", "output": "Attack vectors involving SetWindowsHookEx API:\n\n- Keylogging via keyboard hooks\n- DLL injection via hook DLL loading\n- Mouse tracking for activity monitoring\n- Message interception and manipulation\n\n**MITRE ATT&CK**: T1056.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-set-windows-hook", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549960Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550014Z", "updated_at": "2025-12-17T17:38:43.550014Z"} {"id": "trtp-0973c76145e9", "instruction": "What evidence can be found from SetWindowsHookEx API activity?", "output": "Forensic artifacts for SetWindowsHookEx API:\n\n- Hook chain in USER32 data\n- Hook DLLs loaded in multiple processes\n- Keyboard hook API calls", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-set-windows-hook", "license": "original", "retrieved_at": "2025-12-17T17:38:43.549960Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550028Z", "updated_at": "2025-12-17T17:38:43.550028Z"} {"id": "trtp-3e3a24c3eeb8", "instruction": "What is MiniDumpWriteDump API?", "output": "MiniDumpWriteDump (dbghelp.dll) creates process memory dumps. It's the API behind tools like procdump and is commonly used by attackers to dump LSASS memory for credential extraction. Various dump types control what's included (full memory, handles, threads, etc.).", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-minidump-write-dump", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550038Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550051Z", "updated_at": "2025-12-17T17:38:43.550051Z"} {"id": "trtp-c4b252012bf2", "instruction": "Why is MiniDumpWriteDump API security-relevant?", "output": "MiniDumpWriteDump on LSASS is the most common credential dumping technique. Detecting and preventing LSASS dumps is critical for credential protection.", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-minidump-write-dump", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550038Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550061Z", "updated_at": "2025-12-17T17:38:43.550061Z"} {"id": "trtp-de926862580d", "instruction": "Describe the structure of MiniDumpWriteDump API.", "output": "Key components of MiniDumpWriteDump API:\n\n- MiniDumpWriteDump - create crash dump\n- MINIDUMP_TYPE flags - control dump contents\n- MiniDumpWithFullMemory - complete memory dump\n- MiniDumpWithHandleData - include handles\n- dbghelp.dll / dbgcore.dll - dump libraries", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-minidump-write-dump", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550038Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550074Z", "updated_at": "2025-12-17T17:38:43.550074Z"} {"id": "trtp-a06e2c291419", "instruction": "What are common attacks involving MiniDumpWriteDump API?", "output": "Attack vectors involving MiniDumpWriteDump API:\n\n- LSASS memory dumping for credentials\n- Dumping other processes for secrets\n- Offline analysis of sensitive process memory\n\n**MITRE ATT&CK**: T1003.001", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-minidump-write-dump", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550038Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550085Z", "updated_at": "2025-12-17T17:38:43.550085Z"} {"id": "trtp-9f06c1709847", "instruction": "What forensic artifacts does MiniDumpWriteDump API leave?", "output": "Forensic artifacts for MiniDumpWriteDump API:\n\n- Dump files (.dmp, .mdmp)\n- LSASS access events\n- dbghelp.dll usage patterns", "category": "windows_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-windows_api-minidump-write-dump", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550038Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550096Z", "updated_at": "2025-12-17T17:38:43.550096Z"} {"id": "trtp-d0c18308795d", "instruction": "How does Linux Syscall Mechanics work?", "output": "Syscalls are the interface between user space and kernel. On x86, int 0x80 was used historically; modern x86_64 uses the syscall instruction. The syscall number goes in RAX, arguments in RDI, RSI, RDX, R10, R8, R9. The kernel's syscall table dispatches to handlers. VDSO optimizes some syscalls to avoid kernel transitions.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-syscall-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550107Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550134Z", "updated_at": "2025-12-17T17:38:43.550134Z"} {"id": "trtp-1c60db08c149", "instruction": "Why is Linux Syscall Mechanics security-relevant?", "output": "Understanding syscall mechanics enables exploit development, syscall filtering (seccomp), and security monitoring. Direct syscalls bypass library hooks.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-syscall-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550107Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550144Z", "updated_at": "2025-12-17T17:38:43.550144Z"} {"id": "trtp-f5596c9b101b", "instruction": "What elements make up Linux Syscall Mechanics?", "output": "Key components of Linux Syscall Mechanics:\n\n- syscall instruction (x86_64) - fast syscall entry\n- int 0x80 (x86) - legacy syscall method\n- RAX - syscall number\n- RDI, RSI, RDX, R10, R8, R9 - arguments\n- syscall table - kernel dispatch table\n- VDSO - virtual dynamic shared object for fast syscalls\n- vsyscall page - legacy fast syscall mechanism", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-syscall-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550107Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550158Z", "updated_at": "2025-12-17T17:38:43.550158Z"} {"id": "trtp-25523e04e659", "instruction": "What attack vectors use Linux Syscall Mechanics?", "output": "Attack vectors involving Linux Syscall Mechanics:\n\n- Direct syscalls bypassing library monitoring\n- Syscall number manipulation\n- VDSO exploitation for code execution\n- Syscall table hooking (rootkits)", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-syscall-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550107Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550170Z", "updated_at": "2025-12-17T17:38:43.550170Z"} {"id": "trtp-31e1faa94695", "instruction": "What indicators of Linux Syscall Mechanics can forensic analysts look for?", "output": "Forensic artifacts for Linux Syscall Mechanics:\n\n- Syscall traces in strace output\n- Audit logs with syscall numbers\n- /proc/pid/syscall - current syscall", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-syscall-mechanics", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550107Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550180Z", "updated_at": "2025-12-17T17:38:43.550180Z"} {"id": "trtp-de99376116ae", "instruction": "How does fork, clone, and execve work?", "output": "fork() creates a child process by duplicating the parent. clone() is more flexible, allowing shared resources (memory, file descriptors) and is used for threads. execve() replaces the current process image with a new program. Together, fork+execve is the standard process creation pattern.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-fork-clone-exec", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550189Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550204Z", "updated_at": "2025-12-17T17:38:43.550204Z"} {"id": "trtp-b60930278ff0", "instruction": "How does fork, clone, and execve relate to security?", "output": "Process creation is fundamental for malware execution. Understanding fork/exec enables detection and containment. clone flags affect isolation.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-fork-clone-exec", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550189Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550214Z", "updated_at": "2025-12-17T17:38:43.550214Z"} {"id": "trtp-ab5920144fc8", "instruction": "Describe the structure of fork, clone, and execve.", "output": "Key components of fork, clone, and execve:\n\n- fork() - duplicate process (copy-on-write)\n- vfork() - optimized fork (shared memory until exec)\n- clone() - configurable process/thread creation\n- clone flags - CLONE_VM, CLONE_FILES, CLONE_THREAD, etc.\n- execve() - execute new program\n- exec family - execl, execv, execvp wrappers", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-fork-clone-exec", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550189Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550232Z", "updated_at": "2025-12-17T17:38:43.550232Z"} {"id": "trtp-01cb5e53d502", "instruction": "How do attackers abuse fork, clone, and execve?", "output": "Attack vectors involving fork, clone, and execve:\n\n- Fork bombs (denial of service)\n- execve for payload execution\n- Clone flag manipulation for sandbox escape\n- Fork timing attacks\n\n**MITRE ATT&CK**: T1059", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-fork-clone-exec", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550189Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550248Z", "updated_at": "2025-12-17T17:38:43.550248Z"} {"id": "trtp-6a63989b9b6c", "instruction": "What evidence can be found from fork, clone, and execve activity?", "output": "Forensic artifacts for fork, clone, and execve:\n\n- Process creation events in audit log\n- Parent-child relationships\n- execve arguments and environment", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-fork-clone-exec", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550189Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550264Z", "updated_at": "2025-12-17T17:38:43.550264Z"} {"id": "trtp-3beea0d69c3b", "instruction": "Explain ptrace Syscall in the context of Linux.", "output": "ptrace() enables one process to observe and control another. It's used by debuggers, strace, and injection techniques. Operations include PTRACE_ATTACH (attach to process), PTRACE_PEEKDATA/POKEDATA (read/write memory), PTRACE_GETREGS/SETREGS (manipulate registers), and PTRACE_SYSCALL (trace syscalls).", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ptrace-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550275Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550289Z", "updated_at": "2025-12-17T17:38:43.550289Z"} {"id": "trtp-191b40fc4b28", "instruction": "What are the security implications of ptrace Syscall?", "output": "ptrace enables debugging but also process injection and anti-debugging. Yama LSM provides ptrace_scope to restrict ptrace between processes.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ptrace-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550275Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550299Z", "updated_at": "2025-12-17T17:38:43.550299Z"} {"id": "trtp-0fea480a7f71", "instruction": "What elements make up ptrace Syscall?", "output": "Key components of ptrace Syscall:\n\n- PTRACE_ATTACH - attach to running process\n- PTRACE_PEEKDATA/POKEDATA - memory read/write\n- PTRACE_GETREGS/SETREGS - register manipulation\n- PTRACE_SYSCALL - stop at syscall entry/exit\n- PTRACE_CONT - continue execution\n- PTRACE_DETACH - detach from process", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ptrace-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550275Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550314Z", "updated_at": "2025-12-17T17:38:43.550314Z"} {"id": "trtp-0631bc90c59e", "instruction": "What are common attacks involving ptrace Syscall?", "output": "Attack vectors involving ptrace Syscall:\n\n- Process injection via ptrace memory writes\n- Credential harvesting from process memory\n- Anti-debugging (detect ptrace attachment)\n- Syscall manipulation via register modification\n\n**MITRE ATT&CK**: T1055.008", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ptrace-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550275Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550329Z", "updated_at": "2025-12-17T17:38:43.550329Z"} {"id": "trtp-c3cfd16d88bb", "instruction": "What indicators of ptrace Syscall can forensic analysts look for?", "output": "Forensic artifacts for ptrace Syscall:\n\n- TracerPid in /proc/pid/status\n- ptrace syscall audit events\n- Yama configuration", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ptrace-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550275Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550340Z", "updated_at": "2025-12-17T17:38:43.550340Z"} {"id": "trtp-e8cb82ade45a", "instruction": "Describe mmap and mprotect and its purpose.", "output": "mmap() creates memory mappings - either anonymous (not backed by file) or file-backed. It's used for shared libraries, memory allocation, and shared memory. mprotect() changes memory protection (read/write/execute). These are fundamental for memory management and exploitation.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-mmap-mprotect", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550349Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550367Z", "updated_at": "2025-12-17T17:38:43.550367Z"} {"id": "trtp-986431494db6", "instruction": "Why is mmap and mprotect security-relevant?", "output": "mmap with PROT_EXEC enables code execution. mprotect changing to executable is suspicious. Anonymous executable mappings indicate shellcode.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-mmap-mprotect", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550349Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550377Z", "updated_at": "2025-12-17T17:38:43.550377Z"} {"id": "trtp-95222b59cc5f", "instruction": "What are the components of mmap and mprotect?", "output": "Key components of mmap and mprotect:\n\n- mmap() - create memory mapping\n- munmap() - remove mapping\n- mprotect() - change page protections\n- MAP_PRIVATE - copy-on-write mapping\n- MAP_SHARED - shared mapping\n- MAP_ANONYMOUS - not backed by file\n- PROT_READ, PROT_WRITE, PROT_EXEC - protection flags", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-mmap-mprotect", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550349Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550391Z", "updated_at": "2025-12-17T17:38:43.550391Z"} {"id": "trtp-b5acd200d77a", "instruction": "How can mmap and mprotect be exploited?", "output": "Attack vectors involving mmap and mprotect:\n\n- Allocating executable memory for shellcode\n- mprotect to enable execution (bypass DEP)\n- File mapping for code loading\n- Shared memory for IPC attacks", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-mmap-mprotect", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550349Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550403Z", "updated_at": "2025-12-17T17:38:43.550403Z"} {"id": "trtp-aecd7796b1f8", "instruction": "What forensic artifacts does mmap and mprotect leave?", "output": "Forensic artifacts for mmap and mprotect:\n\n- /proc/pid/maps showing memory regions\n- mmap/mprotect audit events\n- Executable memory patterns", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-mmap-mprotect", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550349Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550413Z", "updated_at": "2025-12-17T17:38:43.550413Z"} {"id": "trtp-241c7662c2f7", "instruction": "How does File Syscalls (open, read, write) work?", "output": "open() (or openat()) opens files returning a file descriptor. read() and write() transfer data. close() releases descriptors. Understanding these syscalls is essential for file access monitoring, detecting exfiltration, and analyzing malware file operations.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-open-read-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550426Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550440Z", "updated_at": "2025-12-17T17:38:43.550440Z"} {"id": "trtp-4bb158c560d7", "instruction": "Why is File Syscalls (open, read, write) security-relevant?", "output": "File access patterns reveal malware behavior: reading credentials, writing payloads, accessing sensitive files. Monitoring these syscalls enables detection.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-open-read-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550426Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550450Z", "updated_at": "2025-12-17T17:38:43.550450Z"} {"id": "trtp-cd90ba4d71c1", "instruction": "What elements make up File Syscalls (open, read, write)?", "output": "Key components of File Syscalls (open, read, write):\n\n- open/openat - open file, return fd\n- read/pread - read data from fd\n- write/pwrite - write data to fd\n- close - release file descriptor\n- O_RDONLY, O_WRONLY, O_RDWR - access modes\n- O_CREAT, O_TRUNC, O_APPEND - creation flags", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-open-read-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550426Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550464Z", "updated_at": "2025-12-17T17:38:43.550464Z"} {"id": "trtp-bb8407a8c4ec", "instruction": "How can File Syscalls (open, read, write) be exploited?", "output": "Attack vectors involving File Syscalls (open, read, write):\n\n- Reading credential files (/etc/shadow)\n- Writing persistent backdoors\n- Accessing process memory via /proc/pid/mem\n- Log tampering via truncation/overwrite", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-open-read-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550426Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550493Z", "updated_at": "2025-12-17T17:38:43.550493Z"} {"id": "trtp-0e96115db041", "instruction": "What evidence can be found from File Syscalls (open, read, write) activity?", "output": "Forensic artifacts for File Syscalls (open, read, write):\n\n- File access audit logs\n- File timestamps (atime, mtime)\n- Process file descriptor table (/proc/pid/fd)", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-open-read-write", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550426Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550505Z", "updated_at": "2025-12-17T17:38:43.550505Z"} {"id": "trtp-45857b0bba5b", "instruction": "Describe ioctl Syscall and its purpose.", "output": "ioctl() performs device-specific operations on file descriptors. It's a catch-all for operations not fitting read/write semantics. Common uses include terminal control, disk operations, and network configuration. Many kernel vulnerabilities exist in ioctl handlers.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ioctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550514Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550528Z", "updated_at": "2025-12-17T17:38:43.550528Z"} {"id": "trtp-6cdb3b122fa0", "instruction": "Why is ioctl Syscall security-relevant?", "output": "ioctl handlers are common vulnerability targets due to complex parsing of user input. Kernel exploits often target driver ioctls for privilege escalation.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ioctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550514Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550542Z", "updated_at": "2025-12-17T17:38:43.550542Z"} {"id": "trtp-2db59ec0c317", "instruction": "What elements make up ioctl Syscall?", "output": "Key components of ioctl Syscall:\n\n- ioctl(fd, request, arg) - device control\n- Request codes - device-specific commands\n- TIOCGWINSZ, TCGETS - terminal ioctls\n- FIONREAD, SIOCGIFADDR - socket ioctls\n- Custom driver ioctls - device-specific", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ioctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550514Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550556Z", "updated_at": "2025-12-17T17:38:43.550556Z"} {"id": "trtp-ad716361d655", "instruction": "What attack vectors use ioctl Syscall?", "output": "Attack vectors involving ioctl Syscall:\n\n- Kernel driver ioctl vulnerabilities\n- Race conditions in ioctl handlers\n- Information leaks via ioctl\n- Container escape via device ioctls\n\n**MITRE ATT&CK**: T1068", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ioctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550514Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550567Z", "updated_at": "2025-12-17T17:38:43.550567Z"} {"id": "trtp-e80452ac6416", "instruction": "What forensic artifacts does ioctl Syscall leave?", "output": "Forensic artifacts for ioctl Syscall:\n\n- ioctl audit events\n- Device access patterns\n- Kernel driver interactions", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ioctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550514Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550582Z", "updated_at": "2025-12-17T17:38:43.550582Z"} {"id": "trtp-eb09c0c0f55d", "instruction": "How does Signal Handling work?", "output": "Signals are asynchronous notifications to processes. sigaction() sets signal handlers. Key signals include SIGTERM, SIGKILL, SIGSEGV, SIGSTOP, and real-time signals. Signal handlers run in user context and can be exploited for control flow manipulation.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-signal-handling", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550591Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550605Z", "updated_at": "2025-12-17T17:38:43.550605Z"} {"id": "trtp-938b3b8293b4", "instruction": "How does Signal Handling relate to security?", "output": "Signal handlers can be exploited for code execution if they have vulnerabilities. Signal injection can disrupt or manipulate target processes.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-signal-handling", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550591Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550614Z", "updated_at": "2025-12-17T17:38:43.550614Z"} {"id": "trtp-3a0653236e2b", "instruction": "Describe the structure of Signal Handling.", "output": "Key components of Signal Handling:\n\n- sigaction() - set signal handler\n- signal() - legacy handler setup\n- kill() - send signal to process\n- sigqueue() - send signal with data\n- SIGTERM, SIGKILL - termination signals\n- SIGSEGV, SIGBUS - fault signals\n- SIGSTOP, SIGCONT - process control", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-signal-handling", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550591Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550632Z", "updated_at": "2025-12-17T17:38:43.550632Z"} {"id": "trtp-638e3f1c4c13", "instruction": "What are common attacks involving Signal Handling?", "output": "Attack vectors involving Signal Handling:\n\n- Signal handler exploitation\n- SIGSTOP for process freezing\n- Signal race conditions\n- Signal-based injection techniques", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-signal-handling", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550591Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550644Z", "updated_at": "2025-12-17T17:38:43.550644Z"} {"id": "trtp-a5411620831f", "instruction": "What indicators of Signal Handling can forensic analysts look for?", "output": "Forensic artifacts for Signal Handling:\n\n- Signal delivery audit events\n- Process signal masks (/proc/pid/status)\n- Core dumps from fault signals", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-signal-handling", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550591Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550655Z", "updated_at": "2025-12-17T17:38:43.550655Z"} {"id": "trtp-ff94da8ebac3", "instruction": "Explain Linux Namespace Syscalls in the context of Linux.", "output": "Namespaces provide isolation for various system resources. unshare() creates new namespaces. setns() joins existing namespaces. clone() with namespace flags creates processes in new namespaces. Types include PID, network, mount, user, UTS, IPC, and cgroup namespaces.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-namespace-syscalls", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550664Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550678Z", "updated_at": "2025-12-17T17:38:43.550678Z"} {"id": "trtp-c4c68ce37a5f", "instruction": "How does Linux Namespace Syscalls relate to security?", "output": "Namespaces are containers' isolation foundation. User namespaces enable unprivileged container creation. Namespace escapes compromise container security.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-namespace-syscalls", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550664Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550687Z", "updated_at": "2025-12-17T17:38:43.550687Z"} {"id": "trtp-b623cead1c8e", "instruction": "What are the components of Linux Namespace Syscalls?", "output": "Key components of Linux Namespace Syscalls:\n\n- unshare() - create new namespaces\n- setns() - join existing namespace\n- CLONE_NEWPID - new PID namespace\n- CLONE_NEWNET - new network namespace\n- CLONE_NEWNS - new mount namespace\n- CLONE_NEWUSER - new user namespace\n- CLONE_NEWUTS - new UTS namespace\n- CLONE_NEWIPC - new IPC namespace", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-namespace-syscalls", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550664Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550702Z", "updated_at": "2025-12-17T17:38:43.550702Z"} {"id": "trtp-feabdf6c0a94", "instruction": "What are common attacks involving Linux Namespace Syscalls?", "output": "Attack vectors involving Linux Namespace Syscalls:\n\n- Container escape via namespace manipulation\n- User namespace for privilege escalation\n- Mount namespace escapes\n- Network namespace pivoting\n\n**MITRE ATT&CK**: T1611", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-namespace-syscalls", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550664Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550713Z", "updated_at": "2025-12-17T17:38:43.550713Z"} {"id": "trtp-b684af60e696", "instruction": "What indicators of Linux Namespace Syscalls can forensic analysts look for?", "output": "Forensic artifacts for Linux Namespace Syscalls:\n\n- /proc/pid/ns/* namespace files\n- Namespace hierarchy\n- Container configuration", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-namespace-syscalls", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550664Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550728Z", "updated_at": "2025-12-17T17:38:43.550728Z"} {"id": "trtp-b28cbbd4f673", "instruction": "What is seccomp (Secure Computing)?", "output": "seccomp filters syscalls a process can make. Strict mode allows only read, write, exit, sigreturn. Filter mode (seccomp-bpf) uses BPF programs to make per-syscall decisions: allow, kill, errno, trace, or log. It's a fundamental sandbox mechanism.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-seccomp", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550738Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550751Z", "updated_at": "2025-12-17T17:38:43.550751Z"} {"id": "trtp-4a7ce82a075b", "instruction": "From a security perspective, why is understanding seccomp (Secure Computing) important?", "output": "seccomp significantly reduces attack surface by limiting available syscalls. Container runtimes and sandboxes rely on seccomp for isolation.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-seccomp", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550738Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550761Z", "updated_at": "2025-12-17T17:38:43.550761Z"} {"id": "trtp-890dd41751f2", "instruction": "What elements make up seccomp (Secure Computing)?", "output": "Key components of seccomp (Secure Computing):\n\n- seccomp() syscall - enable seccomp\n- SECCOMP_MODE_STRICT - minimal syscalls only\n- SECCOMP_MODE_FILTER - BPF-based filtering\n- BPF program - filter logic\n- SECCOMP_RET_ALLOW, KILL, ERRNO, TRACE - actions\n- Secure computing state - inherited by children", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-seccomp", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550738Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550775Z", "updated_at": "2025-12-17T17:38:43.550775Z"} {"id": "trtp-0646f7a2ae3a", "instruction": "How do attackers abuse seccomp (Secure Computing)?", "output": "Attack vectors involving seccomp (Secure Computing):\n\n- seccomp bypass via allowed syscalls\n- Kernel vulnerability in allowed syscall\n- Time-of-check time-of-use in filters\n- Filter weaknesses allowing escalation", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-seccomp", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550738Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550786Z", "updated_at": "2025-12-17T17:38:43.550786Z"} {"id": "trtp-95324b992ff2", "instruction": "What indicators of seccomp (Secure Computing) can forensic analysts look for?", "output": "Forensic artifacts for seccomp (Secure Computing):\n\n- Seccomp field in /proc/pid/status\n- seccomp audit events\n- BPF filter programs", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-seccomp", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550738Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550797Z", "updated_at": "2025-12-17T17:38:43.550797Z"} {"id": "trtp-31361c22a36f", "instruction": "Explain eBPF for Security Monitoring in the context of Linux.", "output": "eBPF (extended Berkeley Packet Filter) allows running sandboxed programs in the kernel. It's used for networking, tracing, and security monitoring. Programs attach to tracepoints, kprobes, uprobes, and other hook points. eBPF enables powerful syscall and event monitoring.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ebpf-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550810Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550904Z", "updated_at": "2025-12-17T17:38:43.550904Z"} {"id": "trtp-177fb4f75d16", "instruction": "What are the security implications of eBPF for Security Monitoring?", "output": "eBPF powers modern security tools (Falco, Cilium, bpftrace). It provides deep visibility without kernel modification. However, eBPF itself can be abused for rootkit-like capabilities.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ebpf-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550810Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550916Z", "updated_at": "2025-12-17T17:38:43.550916Z"} {"id": "trtp-06403ef31500", "instruction": "What elements make up eBPF for Security Monitoring?", "output": "Key components of eBPF for Security Monitoring:\n\n- bpf() syscall - load/manage eBPF programs\n- Tracepoints - stable kernel trace points\n- Kprobes/Kretprobes - kernel function tracing\n- Uprobes - user-space function tracing\n- eBPF maps - data structures shared with userspace\n- BPF Type Format (BTF) - type information\n- BPF CO-RE - compile once, run everywhere", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ebpf-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550810Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550931Z", "updated_at": "2025-12-17T17:38:43.550931Z"} {"id": "trtp-3345df354c2a", "instruction": "How can eBPF for Security Monitoring be exploited?", "output": "Attack vectors involving eBPF for Security Monitoring:\n\n- eBPF for hiding processes/files (rootkit)\n- Network manipulation via eBPF\n- Credential harvesting from eBPF hooks\n- eBPF verifier bypass vulnerabilities", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ebpf-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550810Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550942Z", "updated_at": "2025-12-17T17:38:43.550942Z"} {"id": "trtp-8c294b144a35", "instruction": "What indicators of eBPF for Security Monitoring can forensic analysts look for?", "output": "Forensic artifacts for eBPF for Security Monitoring:\n\n- Loaded eBPF programs (bpftool prog list)\n- eBPF maps\n- Kernel tracing output", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-ebpf-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550810Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550957Z", "updated_at": "2025-12-17T17:38:43.550957Z"} {"id": "trtp-6edca4ca3475", "instruction": "Explain /proc/pid/mem Access in the context of Linux.", "output": "/proc/pid/mem provides direct access to a process's virtual memory. With appropriate permissions (same user or CAP_SYS_PTRACE), it allows reading and writing process memory without ptrace. This enables process inspection and injection.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-proc-mem-access", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550968Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550983Z", "updated_at": "2025-12-17T17:38:43.550983Z"} {"id": "trtp-56dcf7371ea3", "instruction": "What are the security implications of /proc/pid/mem Access?", "output": "/proc/pid/mem enables process memory access for debugging, analysis, and injection. It's an alternative to ptrace for memory operations.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-proc-mem-access", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550968Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.550993Z", "updated_at": "2025-12-17T17:38:43.550993Z"} {"id": "trtp-484879700d78", "instruction": "Describe the structure of /proc/pid/mem Access.", "output": "Key components of /proc/pid/mem Access:\n\n- /proc/pid/mem - memory pseudofile\n- /proc/pid/maps - memory layout\n- lseek + read/write - memory access\n- process_vm_readv/writev - efficient cross-process I/O\n- Permission requirements - ptrace capability needed", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-proc-mem-access", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550968Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551014Z", "updated_at": "2025-12-17T17:38:43.551014Z"} {"id": "trtp-95a89f2f3b7d", "instruction": "How can /proc/pid/mem Access be exploited?", "output": "Attack vectors involving /proc/pid/mem Access:\n\n- Process injection via /proc/pid/mem\n- Credential extraction from process memory\n- Code modification in running processes\n- Bypass library hooks via direct memory access\n\n**MITRE ATT&CK**: T1055.009", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-proc-mem-access", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550968Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551026Z", "updated_at": "2025-12-17T17:38:43.551026Z"} {"id": "trtp-30bf7a2afe5d", "instruction": "What forensic artifacts does /proc/pid/mem Access leave?", "output": "Forensic artifacts for /proc/pid/mem Access:\n\n- File access audit logs for /proc/*/mem\n- Memory modifications\n- Cross-process memory operations", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-proc-mem-access", "license": "original", "retrieved_at": "2025-12-17T17:38:43.550968Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551036Z", "updated_at": "2025-12-17T17:38:43.551036Z"} {"id": "trtp-18cad671155d", "instruction": "How does memfd create Syscall work?", "output": "memfd_create() creates anonymous memory-backed file descriptors. The resulting fd can be used with mmap, passed to other processes, and executed with fexecve() or execveat(). It enables fileless execution without touching the filesystem.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-memfd-create", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551045Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551059Z", "updated_at": "2025-12-17T17:38:43.551059Z"} {"id": "trtp-443fa2f3f07c", "instruction": "Why is memfd create Syscall security-relevant?", "output": "memfd_create enables fileless malware execution. Combined with execveat(AT_EMPTY_PATH), code can run without ever touching disk, evading file-based detection.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-memfd-create", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551045Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551069Z", "updated_at": "2025-12-17T17:38:43.551069Z"} {"id": "trtp-29793b552ef1", "instruction": "Describe the structure of memfd create Syscall.", "output": "Key components of memfd create Syscall:\n\n- memfd_create() - create anonymous fd\n- MFD_CLOEXEC - close on exec flag\n- MFD_ALLOW_SEALING - enable sealing\n- fexecve()/execveat() - execute from fd\n- Memory-backed execution - no file on disk", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-memfd-create", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551045Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551083Z", "updated_at": "2025-12-17T17:38:43.551083Z"} {"id": "trtp-59813edbf021", "instruction": "What are common attacks involving memfd create Syscall?", "output": "Attack vectors involving memfd create Syscall:\n\n- Fileless malware execution\n- Memory-only payload deployment\n- Bypassing file monitoring\n- Anonymous shared memory creation\n\n**MITRE ATT&CK**: T1620", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-memfd-create", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551045Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551099Z", "updated_at": "2025-12-17T17:38:43.551099Z"} {"id": "trtp-c27513ea54cb", "instruction": "What indicators of memfd create Syscall can forensic analysts look for?", "output": "Forensic artifacts for memfd create Syscall:\n\n- /proc/pid/fd entries showing 'memfd:'\n- memfd_create audit events\n- execveat syscalls with AT_EMPTY_PATH", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-memfd-create", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551045Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551110Z", "updated_at": "2025-12-17T17:38:43.551110Z"} {"id": "trtp-ec01ac2e55fb", "instruction": "What is prctl Syscall?", "output": "prctl() performs various process control operations: setting process name, controlling signal behavior, managing capabilities, enabling/disabling features like core dumps, and security-related operations like enabling seccomp or setting no_new_privs.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-prctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551119Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551132Z", "updated_at": "2025-12-17T17:38:43.551132Z"} {"id": "trtp-39a24c6e40c4", "instruction": "What are the security implications of prctl Syscall?", "output": "prctl sets important security properties. no_new_privs is required for unprivileged seccomp. Process name changes can aid evasion.", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-prctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551119Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551142Z", "updated_at": "2025-12-17T17:38:43.551142Z"} {"id": "trtp-47ddaad04256", "instruction": "What are the components of prctl Syscall?", "output": "Key components of prctl Syscall:\n\n- PR_SET_NAME - set process name\n- PR_SET_SECCOMP - enable seccomp\n- PR_SET_NO_NEW_PRIVS - prevent privilege gains\n- PR_SET_DUMPABLE - control core dump behavior\n- PR_CAP_AMBIENT - ambient capabilities\n- PR_SET_MM - modify memory map parameters", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-prctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551119Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551160Z", "updated_at": "2025-12-17T17:38:43.551160Z"} {"id": "trtp-af6f957be5a0", "instruction": "What attack vectors use prctl Syscall?", "output": "Attack vectors involving prctl Syscall:\n\n- Process name spoofing for evasion\n- Disabling core dumps to hide crashes\n- Manipulating capabilities\n- Memory descriptor modification", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-prctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551119Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551172Z", "updated_at": "2025-12-17T17:38:43.551172Z"} {"id": "trtp-26b5c39d7c0d", "instruction": "What evidence can be found from prctl Syscall activity?", "output": "Forensic artifacts for prctl Syscall:\n\n- Process name in /proc/pid/comm\n- prctl audit events\n- Process capabilities", "category": "linux_internals", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-linux_syscalls-prctl-syscall", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551119Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551187Z", "updated_at": "2025-12-17T17:38:43.551187Z"} {"id": "trtp-7b870ab3dc87", "instruction": "How does Classic DLL Injection work?", "output": "Classic DLL injection allocates memory in a target process using VirtualAllocEx, writes a DLL path using WriteProcessMemory, then creates a remote thread with CreateRemoteThread pointing to LoadLibraryA to load the malicious DLL. This is the foundational injection technique.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-classic-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551199Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551212Z", "updated_at": "2025-12-17T17:38:43.551212Z"} {"id": "trtp-5b87469b5482", "instruction": "Why is Classic DLL Injection security-relevant?", "output": "This technique allows executing arbitrary code in another process's context, inheriting its privileges and trust level. It's heavily monitored but still commonly used.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-classic-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551199Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551222Z", "updated_at": "2025-12-17T17:38:43.551222Z"} {"id": "trtp-abd40df99426", "instruction": "Describe the structure of Classic DLL Injection.", "output": "Key components of Classic DLL Injection:\n\n- OpenProcess with PROCESS_ALL_ACCESS\n- VirtualAllocEx to allocate memory for DLL path\n- WriteProcessMemory to write DLL path string\n- GetProcAddress to resolve LoadLibraryA address\n- CreateRemoteThread targeting LoadLibraryA with DLL path as argument", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-classic-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551199Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551236Z", "updated_at": "2025-12-17T17:38:43.551236Z"} {"id": "trtp-d9f2ef3b2294", "instruction": "How can Classic DLL Injection be exploited?", "output": "Attack vectors involving Classic DLL Injection:\n\n- Injecting into trusted processes (explorer.exe, svchost.exe)\n- Credential theft by injecting into lsass.exe\n- Bypassing per-process security controls\n- Keylogging via injection into target applications\n\n**MITRE ATT&CK**: T1055.001", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-classic-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551199Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551247Z", "updated_at": "2025-12-17T17:38:43.551247Z"} {"id": "trtp-7d97ad3731fd", "instruction": "What indicators of Classic DLL Injection can forensic analysts look for?", "output": "Forensic artifacts for Classic DLL Injection:\n\n- Loaded DLL in target's module list\n- Remote thread creation events\n- DLL file on disk (unless deleted)\n- Memory allocation in target process", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-classic-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551199Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551258Z", "updated_at": "2025-12-17T17:38:43.551258Z"} {"id": "trtp-ac704e182b2f", "instruction": "What is Reflective DLL Injection?", "output": "Reflective DLL injection uses a DLL containing its own loader that manually maps the DLL into memory without using LoadLibrary. The reflective loader parses PE headers, allocates memory, maps sections, resolves imports, and executes TLS callbacks. This bypasses DLL load monitoring.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-reflective-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551267Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551287Z", "updated_at": "2025-12-17T17:38:43.551287Z"} {"id": "trtp-678269e1347f", "instruction": "From a security perspective, why is understanding Reflective DLL Injection important?", "output": "Reflective injection is stealthier than classic injection as LoadLibrary is never called. The DLL doesn't appear in standard module lists and may never touch disk.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-reflective-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551267Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551298Z", "updated_at": "2025-12-17T17:38:43.551298Z"} {"id": "trtp-2d7078bca498", "instruction": "Describe the structure of Reflective DLL Injection.", "output": "Key components of Reflective DLL Injection:\n\n- Reflective loader stub in DLL\n- Manual PE header parsing\n- Section mapping with correct permissions\n- Import Address Table (IAT) resolution\n- Relocation processing for base address\n- TLS callback execution\n- Entry point invocation", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-reflective-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551267Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551312Z", "updated_at": "2025-12-17T17:38:43.551312Z"} {"id": "trtp-776592ea2351", "instruction": "What attack vectors use Reflective DLL Injection?", "output": "Attack vectors involving Reflective DLL Injection:\n\n- Memory-only malware execution\n- EDR evasion (no LoadLibrary hooks)\n- Cobalt Strike, Metasploit payloads\n- APT toolkits using reflective loading\n\n**MITRE ATT&CK**: T1620", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-reflective-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551267Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551327Z", "updated_at": "2025-12-17T17:38:43.551327Z"} {"id": "trtp-e36a55481fce", "instruction": "What forensic artifacts does Reflective DLL Injection leave?", "output": "Forensic artifacts for Reflective DLL Injection:\n\n- PE structure in unbacked memory\n- Missing entry in PEB->Ldr module list\n- Reflective loader stub patterns\n- RWX memory allocations", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-reflective-dll-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551267Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551343Z", "updated_at": "2025-12-17T17:38:43.551343Z"} {"id": "trtp-887ab6cc90ef", "instruction": "How does Process Hollowing work?", "output": "Process hollowing creates a legitimate process in suspended state, unmaps its memory using ZwUnmapViewOfSection, writes malicious code to the hollowed process, adjusts the thread context to point to the new entry point, and resumes execution. The process masquerades as legitimate.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-hollowing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551352Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551366Z", "updated_at": "2025-12-17T17:38:43.551366Z"} {"id": "trtp-ba2180ded008", "instruction": "How does Process Hollowing relate to security?", "output": "Process hollowing allows malware to masquerade as a legitimate process, inheriting its name, path, and trust level while executing entirely different code.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-hollowing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551352Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551376Z", "updated_at": "2025-12-17T17:38:43.551376Z"} {"id": "trtp-0d13e4da258c", "instruction": "What are the components of Process Hollowing?", "output": "Key components of Process Hollowing:\n\n- CreateProcess with CREATE_SUSPENDED flag\n- ZwUnmapViewOfSection to hollow the process image\n- VirtualAllocEx to allocate space for payload\n- WriteProcessMemory to write malicious PE\n- SetThreadContext to update entry point (RIP/EIP)\n- ResumeThread to begin execution", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-hollowing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551352Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551394Z", "updated_at": "2025-12-17T17:38:43.551394Z"} {"id": "trtp-d5586675526d", "instruction": "How can Process Hollowing be exploited?", "output": "Attack vectors involving Process Hollowing:\n\n- Masquerading as svchost.exe or other system processes\n- Evading process-name-based allowlisting\n- Bypassing parent-child process analysis\n- Running malware under legitimate process identity\n\n**MITRE ATT&CK**: T1055.012", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-hollowing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551352Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551406Z", "updated_at": "2025-12-17T17:38:43.551406Z"} {"id": "trtp-2f638679cf23", "instruction": "What indicators of Process Hollowing can forensic analysts look for?", "output": "Forensic artifacts for Process Hollowing:\n\n- Suspended process followed by resume\n- Unmapped original executable sections\n- Mismatched disk and memory images\n- Modified thread context", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-hollowing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551352Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551417Z", "updated_at": "2025-12-17T17:38:43.551417Z"} {"id": "trtp-e62741449858", "instruction": "Describe Thread Hijacking and its purpose.", "output": "Thread hijacking suspends an existing thread in a target process, saves its context, modifies the instruction pointer to point to malicious code, and resumes the thread. After execution, the original context can be restored. This avoids creating new threads.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-thread-hijacking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551426Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551439Z", "updated_at": "2025-12-17T17:38:43.551439Z"} {"id": "trtp-2ac62bd01c50", "instruction": "How does Thread Hijacking relate to security?", "output": "Thread hijacking doesn't create new threads, potentially evading CreateRemoteThread monitoring. It's stealthier but more complex to implement reliably.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-thread-hijacking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551426Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551449Z", "updated_at": "2025-12-17T17:38:43.551449Z"} {"id": "trtp-4b6ecd145204", "instruction": "What elements make up Thread Hijacking?", "output": "Key components of Thread Hijacking:\n\n- OpenThread with THREAD_ALL_ACCESS\n- SuspendThread to pause target thread\n- GetThreadContext to save original context\n- VirtualAllocEx/WriteProcessMemory for payload\n- SetThreadContext to redirect execution\n- ResumeThread to execute payload\n- Restore original context after execution", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-thread-hijacking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551426Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551467Z", "updated_at": "2025-12-17T17:38:43.551467Z"} {"id": "trtp-885ec1565400", "instruction": "How can Thread Hijacking be exploited?", "output": "Attack vectors involving Thread Hijacking:\n\n- Evading CreateRemoteThread detection\n- Hijacking system threads for execution\n- Stealth code execution in existing threads\n- Combining with other injection techniques\n\n**MITRE ATT&CK**: T1055.003", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-thread-hijacking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551426Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551493Z", "updated_at": "2025-12-17T17:38:43.551493Z"} {"id": "trtp-30d13d978cd7", "instruction": "What indicators of Thread Hijacking can forensic analysts look for?", "output": "Forensic artifacts for Thread Hijacking:\n\n- Thread context modification events\n- Suspended thread states\n- Instruction pointer changes\n- Memory allocations near hijack time", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-thread-hijacking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551426Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551509Z", "updated_at": "2025-12-17T17:38:43.551509Z"} {"id": "trtp-c2d0a316e996", "instruction": "What is APC Injection?", "output": "Asynchronous Procedure Call (APC) injection queues a user-mode APC to a thread using QueueUserAPC. When the thread enters an alertable wait state, the APC executes. Early bird injection combines this with suspended process creation for reliable execution.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-apc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551519Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551533Z", "updated_at": "2025-12-17T17:38:43.551533Z"} {"id": "trtp-47ec32e7176f", "instruction": "Why is APC Injection security-relevant?", "output": "APC injection is relatively simple but requires the target thread to enter alertable state. Combined with suspended process creation (early bird), it's more reliable.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-apc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551519Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551543Z", "updated_at": "2025-12-17T17:38:43.551543Z"} {"id": "trtp-d82c4f2916d1", "instruction": "Describe the structure of APC Injection.", "output": "Key components of APC Injection:\n\n- QueueUserAPC - queue APC to thread\n- NtQueueApcThread - native API variant\n- Alertable wait states - when APCs execute\n- APC routine - function pointer to execute\n- Thread must be in alertable state", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-apc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551519Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551557Z", "updated_at": "2025-12-17T17:38:43.551557Z"} {"id": "trtp-feeb0e63e549", "instruction": "How do attackers abuse APC Injection?", "output": "Attack vectors involving APC Injection:\n\n- Inject into processes with alertable threads\n- Early bird: inject before process initialization\n- Target system processes with known alertable waits\n- Combine with process hollowing\n\n**MITRE ATT&CK**: T1055.004", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-apc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551519Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551569Z", "updated_at": "2025-12-17T17:38:43.551569Z"} {"id": "trtp-dd3eb8847105", "instruction": "What indicators of APC Injection can forensic analysts look for?", "output": "Forensic artifacts for APC Injection:\n\n- APC queue events\n- Alertable thread states\n- Memory allocations for APC routines", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-apc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551519Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551591Z", "updated_at": "2025-12-17T17:38:43.551591Z"} {"id": "trtp-6b4763da5675", "instruction": "Describe Early Bird Injection and its purpose.", "output": "Early bird injection creates a process in suspended state, queues an APC to the main thread, then resumes the process. The APC executes before the process's main code, during NtTestAlert in ntdll initialization. This achieves reliable execution timing.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-early-bird-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551601Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551614Z", "updated_at": "2025-12-17T17:38:43.551614Z"} {"id": "trtp-ec970a078121", "instruction": "Why is Early Bird Injection security-relevant?", "output": "Early bird injection executes code very early in process initialization, before most security products establish hooks. It's effective against user-mode security tools.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-early-bird-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551601Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551624Z", "updated_at": "2025-12-17T17:38:43.551624Z"} {"id": "trtp-48eb68582c22", "instruction": "What are the components of Early Bird Injection?", "output": "Key components of Early Bird Injection:\n\n- CreateProcess with CREATE_SUSPENDED\n- VirtualAllocEx/WriteProcessMemory for payload\n- QueueUserAPC targeting main thread\n- ResumeThread to start process\n- APC executes during ntdll initialization", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-early-bird-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551601Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551638Z", "updated_at": "2025-12-17T17:38:43.551638Z"} {"id": "trtp-8dc912f5cf8f", "instruction": "How do attackers abuse Early Bird Injection?", "output": "Attack vectors involving Early Bird Injection:\n\n- Executing before EDR hooks are established\n- Bypassing user-mode security products\n- Reliable execution timing\n- Combining with masquerading as legitimate process\n\n**MITRE ATT&CK**: T1055.004", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-early-bird-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551601Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551649Z", "updated_at": "2025-12-17T17:38:43.551649Z"} {"id": "trtp-02b4ed221372", "instruction": "What forensic artifacts does Early Bird Injection leave?", "output": "Forensic artifacts for Early Bird Injection:\n\n- CREATE_SUSPENDED process creation\n- APC queued to suspended thread\n- Memory allocation before resume", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-early-bird-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551601Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551659Z", "updated_at": "2025-12-17T17:38:43.551659Z"} {"id": "trtp-eeb1bc8d13a3", "instruction": "How does Atom Bombing work?", "output": "Atom bombing abuses the Windows global atom table to write data into target process memory. It adds a string to the atom table (GlobalAddAtom), then uses APC to trigger GlobalGetAtomName in the target, copying the string to a specified buffer. This bypasses some memory write detection.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-atom-bombing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551672Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551690Z", "updated_at": "2025-12-17T17:38:43.551690Z"} {"id": "trtp-5040ad21d47a", "instruction": "From a security perspective, why is understanding Atom Bombing important?", "output": "Atom bombing uses legitimate Windows mechanisms for cross-process data transfer, potentially evading detection focused on WriteProcessMemory.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-atom-bombing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551672Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551701Z", "updated_at": "2025-12-17T17:38:43.551701Z"} {"id": "trtp-c466f6695beb", "instruction": "What are the components of Atom Bombing?", "output": "Key components of Atom Bombing:\n\n- GlobalAddAtom - add string to global atom table\n- QueueUserAPC with GlobalGetAtomName\n- Target buffer specification via APC parameter\n- Atom table as shared data transport\n- ROP chain for code execution after write", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-atom-bombing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551672Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551715Z", "updated_at": "2025-12-17T17:38:43.551715Z"} {"id": "trtp-54eb82f5213f", "instruction": "How do attackers abuse Atom Bombing?", "output": "Attack vectors involving Atom Bombing:\n\n- Bypassing WriteProcessMemory monitoring\n- Injecting into processes without direct memory write\n- Using legitimate APIs for malicious purposes\n- Combining with code execution primitives\n\n**MITRE ATT&CK**: T1055", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-atom-bombing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551672Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551725Z", "updated_at": "2025-12-17T17:38:43.551725Z"} {"id": "trtp-e2cdd43bd041", "instruction": "What evidence can be found from Atom Bombing activity?", "output": "Forensic artifacts for Atom Bombing:\n\n- Atom table entries\n- APC execution events\n- Memory changes from atom retrieval", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-atom-bombing", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551672Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551737Z", "updated_at": "2025-12-17T17:38:43.551737Z"} {"id": "trtp-bc34e2d17c4d", "instruction": "What is Process Doppelg\u00e4nging?", "output": "Process doppelg\u00e4nging abuses Windows transactional NTFS (TxF). It creates a transaction, writes malicious content to a file within the transaction, creates a process from the transacted file, then rolls back the transaction. The process runs but the malicious file never persists on disk.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-doppelganging", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551746Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551765Z", "updated_at": "2025-12-17T17:38:43.551765Z"} {"id": "trtp-6d6452eb12b5", "instruction": "Why is Process Doppelg\u00e4nging security-relevant?", "output": "Process doppelg\u00e4nging creates processes from files that never exist outside the transaction, evading file-based scanning and monitoring.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-doppelganging", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551746Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551775Z", "updated_at": "2025-12-17T17:38:43.551775Z"} {"id": "trtp-95250b755080", "instruction": "What are the components of Process Doppelg\u00e4nging?", "output": "Key components of Process Doppelg\u00e4nging:\n\n- CreateTransaction - begin NTFS transaction\n- CreateFileTransacted - open file in transaction\n- Write malicious PE to transacted file\n- NtCreateSection from transacted file\n- NtCreateProcessEx from section\n- RollbackTransaction - undo file changes\n- Process runs from rolled-back (non-existent) file", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-doppelganging", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551746Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551791Z", "updated_at": "2025-12-17T17:38:43.551791Z"} {"id": "trtp-8b102c272637", "instruction": "How can Process Doppelg\u00e4nging be exploited?", "output": "Attack vectors involving Process Doppelg\u00e4nging:\n\n- Fileless process execution\n- Evading antivirus file scanning\n- Bypassing file integrity monitoring\n- Running malware without disk artifacts\n\n**MITRE ATT&CK**: T1055.013", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-doppelganging", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551746Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551803Z", "updated_at": "2025-12-17T17:38:43.551803Z"} {"id": "trtp-d741533af7d5", "instruction": "What forensic artifacts does Process Doppelg\u00e4nging leave?", "output": "Forensic artifacts for Process Doppelg\u00e4nging:\n\n- Transaction creation/rollback events\n- Process with no corresponding disk file\n- Transacted file operations", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-doppelganging", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551746Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551814Z", "updated_at": "2025-12-17T17:38:43.551814Z"} {"id": "trtp-dd2f5aa16b45", "instruction": "What is Process Herpaderping?", "output": "Process herpaderping writes malicious content to a file, creates a process section from it, modifies the file content to appear benign, then creates the process. Security products scanning the file see benign content while the process runs malicious code from the original section.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-herpaderping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551823Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551837Z", "updated_at": "2025-12-17T17:38:43.551837Z"} {"id": "trtp-f6b899e2a19f", "instruction": "What are the security implications of Process Herpaderping?", "output": "Herpaderping exploits the timing gap between file writes and security product scans. The file appears benign when scanned but the process runs the original malicious content.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-herpaderping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551823Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551846Z", "updated_at": "2025-12-17T17:38:43.551846Z"} {"id": "trtp-ae87517fb33d", "instruction": "Describe the structure of Process Herpaderping.", "output": "Key components of Process Herpaderping:\n\n- CreateFile - create new file\n- Write malicious PE content\n- NtCreateSection - create section from malicious content\n- Overwrite file with benign content\n- NtCreateProcessEx from section\n- File content doesn't match running process", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-herpaderping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551823Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551865Z", "updated_at": "2025-12-17T17:38:43.551865Z"} {"id": "trtp-6da1cdd5e8c9", "instruction": "How can Process Herpaderping be exploited?", "output": "Attack vectors involving Process Herpaderping:\n\n- Evading real-time file scanning\n- Bypassing signature-based detection\n- Mismatching file and process content\n- Exploiting scan timing windows\n\n**MITRE ATT&CK**: T1055", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-herpaderping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551823Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551876Z", "updated_at": "2025-12-17T17:38:43.551876Z"} {"id": "trtp-53657805b5d8", "instruction": "What indicators of Process Herpaderping can forensic analysts look for?", "output": "Forensic artifacts for Process Herpaderping:\n\n- Mismatched file and memory contents\n- File modification timestamps\n- Section creation events", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-process-herpaderping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551823Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551887Z", "updated_at": "2025-12-17T17:38:43.551887Z"} {"id": "trtp-14c2b9c5fd27", "instruction": "What is Module Stomping?", "output": "Module stomping loads a legitimate DLL into the target process, then overwrites its memory with malicious code. The malicious code appears to belong to a legitimate, signed module, evading detection based on module reputation.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-module-stomping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551896Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551909Z", "updated_at": "2025-12-17T17:38:43.551909Z"} {"id": "trtp-7a14f070b3a6", "instruction": "What are the security implications of Module Stomping?", "output": "Module stomping hides malicious code within legitimate modules. Memory scanning sees code in a signed, trusted DLL, potentially bypassing allowlisting.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-module-stomping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551896Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551919Z", "updated_at": "2025-12-17T17:38:43.551919Z"} {"id": "trtp-7b817bcd8526", "instruction": "What are the components of Module Stomping?", "output": "Key components of Module Stomping:\n\n- Load legitimate DLL into target process\n- VirtualProtect to make DLL memory writable\n- Overwrite DLL .text section with shellcode\n- Execute from apparently legitimate module\n- DLL remains in loaded module list", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-module-stomping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551896Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551936Z", "updated_at": "2025-12-17T17:38:43.551936Z"} {"id": "trtp-05ba5924ba08", "instruction": "What are common attacks involving Module Stomping?", "output": "Attack vectors involving Module Stomping:\n\n- Hiding in signed Microsoft DLLs\n- Evading module reputation systems\n- Bypassing allowlisting based on module signatures\n- Masquerading shellcode as legitimate code\n\n**MITRE ATT&CK**: T1055", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-module-stomping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551896Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551948Z", "updated_at": "2025-12-17T17:38:43.551948Z"} {"id": "trtp-7daf934c4fdb", "instruction": "What indicators of Module Stomping can forensic analysts look for?", "output": "Forensic artifacts for Module Stomping:\n\n- Modified module memory\n- VirtualProtect calls on DLLs\n- Mismatched disk/memory module content", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-module-stomping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551896Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551959Z", "updated_at": "2025-12-17T17:38:43.551959Z"} {"id": "trtp-1b8e0cfebbbb", "instruction": "Describe Ghostwriting Injection and its purpose.", "output": "Ghostwriting uses ROP (Return-Oriented Programming) to write to memory without directly calling WriteProcessMemory. By chaining gadgets in the target process, an attacker can copy data from shared memory or other sources, evading WriteProcessMemory monitoring.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ghostwriting", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551968Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551982Z", "updated_at": "2025-12-17T17:38:43.551982Z"} {"id": "trtp-66f6f01e40f3", "instruction": "Why is Ghostwriting Injection security-relevant?", "output": "Ghostwriting avoids the most monitored injection APIs by using code reuse techniques. It's complex but can evade user-mode API hooks.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ghostwriting", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551968Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.551992Z", "updated_at": "2025-12-17T17:38:43.551992Z"} {"id": "trtp-246fdeeaee5a", "instruction": "What are the components of Ghostwriting Injection?", "output": "Key components of Ghostwriting Injection:\n\n- Create shared memory section\n- Map section into both attacker and target\n- Build ROP chain using gadgets in target\n- Trigger ROP via thread hijacking or APC\n- ROP copies data from shared section to target memory", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ghostwriting", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551968Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552009Z", "updated_at": "2025-12-17T17:38:43.552009Z"} {"id": "trtp-592ae2b3fb73", "instruction": "What are common attacks involving Ghostwriting Injection?", "output": "Attack vectors involving Ghostwriting Injection:\n\n- Bypassing WriteProcessMemory hooks\n- Evasion of user-mode API monitoring\n- Leveraging ROP for memory writes\n- Combining with shared memory sections\n\n**MITRE ATT&CK**: T1055", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ghostwriting", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551968Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552022Z", "updated_at": "2025-12-17T17:38:43.552022Z"} {"id": "trtp-5d3d7f085d3b", "instruction": "What evidence can be found from Ghostwriting Injection activity?", "output": "Forensic artifacts for Ghostwriting Injection:\n\n- Shared memory sections\n- ROP gadget execution patterns\n- Thread context modifications", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ghostwriting", "license": "original", "retrieved_at": "2025-12-17T17:38:43.551968Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552039Z", "updated_at": "2025-12-17T17:38:43.552039Z"} {"id": "trtp-53178c707f4e", "instruction": "How does Linux ptrace Injection work?", "output": "On Linux, ptrace enables process injection by attaching to a target, using PTRACE_POKEDATA to write shellcode, modifying registers to redirect execution, and resuming the process. It's the primary Linux injection mechanism.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-linux-ptrace-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552049Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552063Z", "updated_at": "2025-12-17T17:38:43.552063Z"} {"id": "trtp-c01f92c43812", "instruction": "Why is Linux ptrace Injection security-relevant?", "output": "ptrace is the standard Linux debugging interface but enables powerful injection capabilities. Yama LSM can restrict ptrace to mitigate this.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-linux-ptrace-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552049Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552072Z", "updated_at": "2025-12-17T17:38:43.552072Z"} {"id": "trtp-727458ef6992", "instruction": "Describe the structure of Linux ptrace Injection.", "output": "Key components of Linux ptrace Injection:\n\n- PTRACE_ATTACH to target process\n- Wait for process to stop\n- PTRACE_POKEDATA to write shellcode\n- PTRACE_GETREGS/SETREGS to modify instruction pointer\n- PTRACE_CONT to resume execution\n- PTRACE_DETACH to release process", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-linux-ptrace-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552049Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552102Z", "updated_at": "2025-12-17T17:38:43.552102Z"} {"id": "trtp-0705aef41a79", "instruction": "What are common attacks involving Linux ptrace Injection?", "output": "Attack vectors involving Linux ptrace Injection:\n\n- Shellcode injection into running processes\n- Credential theft from process memory\n- Backdooring running services\n- Post-exploitation persistence\n\n**MITRE ATT&CK**: T1055.008", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-linux-ptrace-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552049Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552115Z", "updated_at": "2025-12-17T17:38:43.552115Z"} {"id": "trtp-0c6ea94d19f3", "instruction": "What forensic artifacts does Linux ptrace Injection leave?", "output": "Forensic artifacts for Linux ptrace Injection:\n\n- TracerPid field in /proc/pid/status\n- ptrace syscall audit events\n- Memory modifications in target", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-linux-ptrace-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552049Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552126Z", "updated_at": "2025-12-17T17:38:43.552126Z"} {"id": "trtp-df6888fd4042", "instruction": "Explain LD PRELOAD Injection in the context of cross-platform.", "output": "LD_PRELOAD is an environment variable that specifies shared libraries to load before all others. Setting LD_PRELOAD to a malicious library causes it to be loaded into any new process, allowing function interception and code injection.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ld-preload-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552135Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552153Z", "updated_at": "2025-12-17T17:38:43.552153Z"} {"id": "trtp-e18073d4016a", "instruction": "How does LD PRELOAD Injection relate to security?", "output": "LD_PRELOAD provides a simple injection method for new processes. It's blocked by secure execution (setuid binaries) but effective otherwise.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ld-preload-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552135Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552164Z", "updated_at": "2025-12-17T17:38:43.552164Z"} {"id": "trtp-f1d3d67119f4", "instruction": "Describe the structure of LD PRELOAD Injection.", "output": "Key components of LD PRELOAD Injection:\n\n- LD_PRELOAD environment variable\n- Malicious shared object (.so) file\n- Function hooking via symbol interposition\n- Library loaded before other dependencies\n- /etc/ld.so.preload for system-wide preload", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ld-preload-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552135Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552181Z", "updated_at": "2025-12-17T17:38:43.552181Z"} {"id": "trtp-72ce3b0b36d4", "instruction": "How do attackers abuse LD PRELOAD Injection?", "output": "Attack vectors involving LD PRELOAD Injection:\n\n- Injecting into all new user processes\n- Hooking libc functions (authentication, crypto)\n- Backdooring specific applications\n- Credential interception via function hooks\n\n**MITRE ATT&CK**: T1574.006", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ld-preload-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552135Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552194Z", "updated_at": "2025-12-17T17:38:43.552194Z"} {"id": "trtp-b891a48712d0", "instruction": "What indicators of LD PRELOAD Injection can forensic analysts look for?", "output": "Forensic artifacts for LD PRELOAD Injection:\n\n- LD_PRELOAD in process environment\n- /etc/ld.so.preload file\n- Unexpected libraries in process maps", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-ld-preload-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552135Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552205Z", "updated_at": "2025-12-17T17:38:43.552205Z"} {"id": "trtp-7f60d456d464", "instruction": "What is /proc/pid/mem Injection?", "output": "The /proc/pid/mem pseudofile provides direct access to process memory. With appropriate permissions, an attacker can open this file, seek to the target address, and write shellcode directly. This is an alternative to ptrace for memory modification.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-proc-mem-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552213Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552227Z", "updated_at": "2025-12-17T17:38:43.552227Z"} {"id": "trtp-724a87b8e0b7", "instruction": "What are the security implications of /proc/pid/mem Injection?", "output": "/proc/pid/mem provides direct memory access without ptrace's complexity. It's subject to the same permission checks but may evade ptrace-specific monitoring.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-proc-mem-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552213Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552240Z", "updated_at": "2025-12-17T17:38:43.552240Z"} {"id": "trtp-6553cddc9eac", "instruction": "What elements make up /proc/pid/mem Injection?", "output": "Key components of /proc/pid/mem Injection:\n\n- Open /proc/target_pid/mem\n- Read /proc/target_pid/maps for memory layout\n- lseek to target address\n- write() to inject shellcode\n- Requires same user or CAP_SYS_PTRACE", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-proc-mem-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552213Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552254Z", "updated_at": "2025-12-17T17:38:43.552254Z"} {"id": "trtp-347d048692b1", "instruction": "What attack vectors use /proc/pid/mem Injection?", "output": "Attack vectors involving /proc/pid/mem Injection:\n\n- Direct shellcode injection\n- Modifying process code or data\n- Alternative to ptrace injection\n- Credential extraction from memory\n\n**MITRE ATT&CK**: T1055.009", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-proc-mem-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552213Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552265Z", "updated_at": "2025-12-17T17:38:43.552265Z"} {"id": "trtp-3ea7fa1a0519", "instruction": "What forensic artifacts does /proc/pid/mem Injection leave?", "output": "Forensic artifacts for /proc/pid/mem Injection:\n\n- /proc/pid/mem access logs\n- Memory modification events\n- File descriptor access to mem files", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-proc-mem-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552213Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552276Z", "updated_at": "2025-12-17T17:38:43.552276Z"} {"id": "trtp-9a0f9a8fd7f7", "instruction": "Explain Shared Library Injection via dlopen in the context of cross-platform.", "output": "If an attacker can execute code in a target process (via any method), calling dlopen() with a path to a malicious shared library loads and initializes it. Constructor functions (__attribute__((constructor))) execute automatically upon load.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-shared-library-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552285Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552299Z", "updated_at": "2025-12-17T17:38:43.552299Z"} {"id": "trtp-94f97c5d473d", "instruction": "Why is Shared Library Injection via dlopen security-relevant?", "output": "dlopen injection is useful when you have code execution but want to load additional functionality. Library constructors provide automatic execution.", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-shared-library-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552285Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552308Z", "updated_at": "2025-12-17T17:38:43.552308Z"} {"id": "trtp-9de19ab07373", "instruction": "What are the components of Shared Library Injection via dlopen?", "output": "Key components of Shared Library Injection via dlopen:\n\n- dlopen() - dynamic library loading\n- Constructor functions - execute on load\n- Destructor functions - execute on unload\n- Symbol resolution via dlsym()\n- Library search paths (LD_LIBRARY_PATH, RPATH)", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-shared-library-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552285Z", "transform_template": "components_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552322Z", "updated_at": "2025-12-17T17:38:43.552322Z"} {"id": "trtp-18cdc5a2de14", "instruction": "What attack vectors use Shared Library Injection via dlopen?", "output": "Attack vectors involving Shared Library Injection via dlopen:\n\n- Loading malicious functionality via dlopen\n- Persistent backdoor via library with constructor\n- Extending capabilities of injected code\n- Plugin-based malware architecture\n\n**MITRE ATT&CK**: T1055", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-shared-library-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552285Z", "transform_template": "attack_vectors_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552341Z", "updated_at": "2025-12-17T17:38:43.552341Z"} {"id": "trtp-76926fb85334", "instruction": "What forensic artifacts does Shared Library Injection via dlopen leave?", "output": "Forensic artifacts for Shared Library Injection via dlopen:\n\n- Loaded libraries in process maps\n- dlopen call traces\n- Library files and their paths", "category": "process_injection", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-process_injection-shared-library-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552285Z", "transform_template": "artifacts_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552353Z", "updated_at": "2025-12-17T17:38:43.552353Z"} {"id": "trtp-dcdcde10cf4b", "instruction": "How does IAT hooking work and what are its limitations?", "output": "IAT hooking works by modifying the Import Address Table entries in a PE module. The IAT contains resolved addresses of imported functions that the Windows loader populates when the module loads. By overwriting these addresses (after changing memory protection with VirtualProtect), calls through the IAT are redirected to hook functions. Key limitations: (1) Only intercepts calls made through the IAT - functions resolved via GetProcAddress or direct syscalls bypass it, (2) Must be applied per-module since each has its own IAT, (3) Easily detected by comparing IAT entries against actual export addresses from target DLLs.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552376Z", "updated_at": "2025-12-17T17:38:43.552376Z"} {"id": "trtp-5589cf51585a", "instruction": "Why might malware implement IAT hooking in a target process?", "output": "Malware implements IAT hooking to intercept and monitor API calls for various purposes: (1) Credential theft by hooking authentication APIs to capture passwords, (2) Network traffic interception by hooking socket functions, (3) File access monitoring to identify sensitive documents, (4) Hiding malicious activity by filtering results from enumeration APIs (process/file listing), (5) Injecting malicious content into legitimate operations, (6) Bypassing security checks by modifying API return values. IAT hooking is attractive because it's relatively simple to implement and provides comprehensive coverage of imports.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552383Z", "updated_at": "2025-12-17T17:38:43.552383Z"} {"id": "trtp-c77cdf096fb4", "instruction": "Explain Import Address Table Hooking in the context of Windows.", "output": "Import Address Table (IAT) hooking intercepts API calls by modifying\n the IAT entries in a PE file's import directory. When a module is loaded, the loader\n resolves imported functions and writes their addresses to the IAT. By overwriting\n these addresses with pointers to hook functions, all calls through the IAT are\n redirected. This technique is relatively easy to implement but only catches calls\n made through the IAT - direct calls or dynamically resolved functions bypass it.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552404Z", "updated_at": "2025-12-17T17:38:43.552404Z"} {"id": "trtp-35788e6fcf07", "instruction": "From a security perspective, why is understanding Import Address Table Hooking important?", "output": "Used by both malware (API monitoring, credential theft) and security tools (behavior monitoring, sandboxing)", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552415Z", "updated_at": "2025-12-17T17:38:43.552415Z"} {"id": "trtp-06a2bc7f104c", "instruction": "Summarize the essential points about Import Address Table Hooking.", "output": "Key points about Import Address Table Hooking:\n\n- IAT contains resolved addresses of imported functions\n- Hook by overwriting IAT entries with hook function addresses\n- Requires making IAT memory writable (VirtualProtect)\n- Only intercepts calls through IAT, not GetProcAddress calls\n- Per-module - must hook each module's IAT separately\n- Easy to detect by comparing IAT to actual export addresses", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552430Z", "updated_at": "2025-12-17T17:38:43.552430Z"} {"id": "trtp-6517a5164ee5", "instruction": "What are the detection strategies for Import Address Table Hooking?", "output": "Detection indicators for Import Address Table Hooking:\n\n- IAT entries pointing outside expected module ranges\n- Discrepancy between IAT and GetProcAddress results\n- Memory protection changes on IAT regions", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-iat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552365Z", "transform_template": "detection_indicators_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552442Z", "updated_at": "2025-12-17T17:38:43.552442Z"} {"id": "trtp-6a3787b567d3", "instruction": "What advantages does EAT hooking have over IAT hooking?", "output": "EAT hooking has several advantages over IAT hooking: (1) Global effect - modifying a DLL's export table affects ALL callers, not just one module's imports, (2) Catches dynamic resolution - intercepts GetProcAddress calls that IAT hooking misses, (3) Single point of modification - only need to hook the export once rather than every importing module, (4) Affects future loads - new modules loading after the hook is installed will also be affected. The tradeoff is increased complexity: must correctly handle forwarded exports, requires modifying system DLLs in memory, and some functions may be called before the hook can be installed.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552465Z", "updated_at": "2025-12-17T17:38:43.552465Z"} {"id": "trtp-c9060f25f44a", "instruction": "How would a security tool detect EAT hooking in a running process?", "output": "Detection approaches for EAT hooking: (1) Compare in-memory EAT entries against the on-disk DLL exports - any discrepancy indicates modification, (2) Verify export addresses point within the module's legitimate code sections, not to external memory, (3) Check for memory protection changes on the export directory region, (4) Use code integrity verification to hash export table regions, (5) Monitor for WriteProcessMemory calls targeting system DLL export sections, (6) Cross-reference with GetProcAddress results from a known-clean module load. EDR tools often maintain baseline hashes of critical DLL export sections.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552478Z", "updated_at": "2025-12-17T17:38:43.552478Z"} {"id": "trtp-902f11d6d958", "instruction": "Describe Export Address Table Hooking and its purpose.", "output": "Export Address Table (EAT) hooking modifies the export directory of a\n DLL to redirect function resolution. When GetProcAddress looks up a function, it\n reads the address from the EAT. By modifying EAT entries, all future GetProcAddress\n calls for that function return the hook address. This is more powerful than IAT\n hooking because it affects all callers, but requires modifying system DLLs in\n memory and is more complex to implement correctly.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552490Z", "updated_at": "2025-12-17T17:38:43.552490Z"} {"id": "trtp-cd3c87d19890", "instruction": "From a security perspective, why is understanding Export Address Table Hooking important?", "output": "Advanced hooking technique for comprehensive API interception; harder to implement but more thorough coverage", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552500Z", "updated_at": "2025-12-17T17:38:43.552500Z"} {"id": "trtp-5e33219d320a", "instruction": "What are the key technical details of Export Address Table Hooking?", "output": "Key points about Export Address Table Hooking:\n\n- Modifies export directory in target DLL\n- Affects all GetProcAddress resolutions globally\n- Requires finding and modifying loaded DLL in memory\n- Must handle forwarded exports correctly\n- More powerful than IAT hooks - catches dynamic resolution\n- Changes persist until module unloaded or address restored", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552512Z", "updated_at": "2025-12-17T17:38:43.552512Z"} {"id": "trtp-46e9993d27cb", "instruction": "What indicators reveal Export Address Table Hooking activity?", "output": "Detection indicators for Export Address Table Hooking:\n\n- EAT entries pointing outside module's code section\n- Hash/checksum changes in DLL export section\n- Export addresses in unexpected memory regions", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-eat-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552455Z", "transform_template": "detection_indicators_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552527Z", "updated_at": "2025-12-17T17:38:43.552527Z"} {"id": "trtp-c96c99e5d9ae", "instruction": "Explain inline hooking and the role of the trampoline in preserving original functionality.", "output": "Inline hooking works by overwriting the first bytes of a target function with a jump instruction redirecting to a hook function. For x86, this is typically a 5-byte 'JMP rel32'; for x64, it requires 12-14 bytes for absolute addressing. The trampoline is a small code stub that preserves original functionality: it contains (1) the original overwritten bytes from the function prologue, and (2) a jump back to the instruction following the hook in the original function. When the hook function wants to call the original, it calls the trampoline, which executes the saved prologue bytes then continues into the original function body. This allows the hook to inspect/modify arguments, call the original, then inspect/modify return values.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552550Z", "updated_at": "2025-12-17T17:38:43.552550Z"} {"id": "trtp-9e8872769a1f", "instruction": "What challenges exist when implementing inline hooks in a multi-threaded environment?", "output": "Multi-threaded inline hooking challenges: (1) Race conditions - a thread might execute the function while bytes are being modified, causing crashes, (2) Instruction tearing - partial overwrites can create invalid instructions, (3) Suspended threads - threads might be suspended mid-function, and hook installation could corrupt their execution state, (4) Cache coherency - instruction cache may contain old bytes after modification. Mitigations: suspend all threads during installation, use atomic operations where possible (Windows hot-patch points start with 'mov edi, edi' allowing 2-byte short JMP), flush instruction cache (FlushInstructionCache), or use hardware breakpoints for initial redirect. Some frameworks use page guard exceptions for thread-safe transitions.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552557Z", "updated_at": "2025-12-17T17:38:43.552557Z"} {"id": "trtp-15f15cb9573d", "instruction": "How do EDR products use inline hooking for security monitoring?", "output": "EDR products install inline hooks on security-sensitive functions to monitor process behavior: (1) NTDLL hooks - NtCreateProcess, NtWriteVirtualMemory, NtMapViewOfSection for process injection detection, (2) Network APIs - connect, send, recv for C2 communication monitoring, (3) File APIs - NtCreateFile, NtWriteFile for ransomware detection, (4) Registry APIs for persistence mechanism detection, (5) Crypto APIs to capture encryption keys. The hooks log parameters, check against behavioral rules, and can block suspicious operations. Modern EDR hooks are typically installed in userland (ntdll.dll) rather than kernel to avoid PatchGuard. This creates the cat-and-mouse game where malware attempts to unhook these functions to operate undetected.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552564Z", "updated_at": "2025-12-17T17:38:43.552564Z"} {"id": "trtp-8e221e80fa94", "instruction": "How does Inline/Detour Hooking work?", "output": "Inline hooking (also called detour or trampoline hooking) modifies\n the actual code bytes at the start of a function to redirect execution. Typically,\n the first few bytes are overwritten with a JMP instruction to the hook function.\n The original bytes are saved to a 'trampoline' that allows calling the original\n function. This technique works regardless of how the function is called but requires\n careful handling of instruction boundaries and concurrent execution.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552578Z", "updated_at": "2025-12-17T17:38:43.552578Z"} {"id": "trtp-7aafc9c9464d", "instruction": "From a security perspective, why is understanding Inline/Detour Hooking important?", "output": "Primary hooking method for security products (AV, EDR) and also used by malware; detection evasion often involves unhooking these", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552589Z", "updated_at": "2025-12-17T17:38:43.552589Z"} {"id": "trtp-3972e3463d0d", "instruction": "What are the key technical details of Inline/Detour Hooking?", "output": "Key points about Inline/Detour Hooking:\n\n- Overwrites function prologue with JMP to hook\n- Original bytes saved to trampoline for calling original\n- Must respect instruction boundaries (disassembly required)\n- Thread-safety concerns during hook installation\n- Works for any call mechanism (IAT, GetProcAddress, direct)\n- Hot-patching requires atomic operations or thread suspension", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552608Z", "updated_at": "2025-12-17T17:38:43.552608Z"} {"id": "trtp-7f29cf5c0b11", "instruction": "How do security tools detect Inline/Detour Hooking?", "output": "Detection indicators for Inline/Detour Hooking:\n\n- JMP/CALL instructions at function entry points\n- Function prologues not matching expected patterns\n- Executable memory allocations near hooked functions\n- Code bytes differing from on-disk image", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "detection_indicators_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552620Z", "updated_at": "2025-12-17T17:38:43.552620Z"} {"id": "trtp-13e894b4d9dc", "instruction": "How is Inline/Detour Hooking implemented?", "output": "Implementation details for Inline/Detour Hooking:\n\n**X86**: 5-byte JMP rel32 or 6-byte push+ret\n**X64**: 14-byte mov rax, addr; jmp rax or 12-byte with RIP-relative\n**Trampoline**: Original bytes + JMP back to function+N", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-inline-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552540Z", "transform_template": "implementation_details_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552639Z", "updated_at": "2025-12-17T17:38:43.552639Z"} {"id": "trtp-1f8d54133bcb", "instruction": "How do direct syscalls bypass EDR monitoring and what defenses exist?", "output": "Direct syscalls bypass EDR monitoring by avoiding hooked ntdll.dll functions entirely. Instead of calling NtWriteVirtualMemory in ntdll, malware manually executes 'mov eax, syscall_number; syscall' to directly invoke the kernel. This bypasses userland hooks since the code never passes through ntdll. Defenses: (1) Kernel-level ETW telemetry captures syscall activity regardless of invocation method, (2) Stack trace analysis - direct syscalls have unusual call stacks not originating from ntdll, (3) Kernel callbacks (process/thread/image callbacks) catch operations regardless of syscall origin, (4) Hardware breakpoints on syscall instruction, (5) Behavioral analysis detecting patterns of suspicious syscalls. The most effective defense combines multiple telemetry sources.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552663Z", "updated_at": "2025-12-17T17:38:43.552663Z"} {"id": "trtp-a65e6392f6f9", "instruction": "What is Heaven's Gate and why is it security-relevant?", "output": "Heaven's Gate is a technique allowing 32-bit (WoW64) processes to execute 64-bit code by switching the CPU's code segment from 32-bit (0x23) to 64-bit (0x33) mode. On 64-bit Windows, WoW64 processes have both 32-bit and 64-bit ntdll loaded. Security relevance: (1) Bypasses 32-bit hooks - if security tools only hook the 32-bit ntdll, 64-bit syscalls evade monitoring, (2) Confuses debuggers and analysis tools expecting consistent bitness, (3) Can access 64-bit memory regions invisible to 32-bit view, (4) Some EDR products historically only instrumented one bitness. Modern security tools must monitor both WoW64 layers and be aware of segment switching to detect Heaven's Gate usage.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552670Z", "updated_at": "2025-12-17T17:38:43.552670Z"} {"id": "trtp-9c93fe6078f2", "instruction": "Explain SSDT hooking and why it's no longer viable on modern Windows.", "output": "SSDT (System Service Descriptor Table) hooking was a kernel-level technique that replaced function pointers in the table the kernel uses to dispatch syscalls. When a syscall arrived, the kernel would index into SSDT using the syscall number - by replacing entries, all syscalls could be intercepted regardless of userland path. This was used by both rootkits (hiding files/processes) and security tools (behavior monitoring). Microsoft's PatchGuard (Kernel Patch Protection), introduced with x64 Windows, made SSDT hooking non-viable: it periodically checks kernel structures including SSDT and triggers a bugcheck (BSOD) if modifications are detected. Security vendors now use supported mechanisms: filter drivers, kernel callbacks, and ETW. Some attackers have developed PatchGuard bypasses, but these are fragile and version-specific.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552676Z", "updated_at": "2025-12-17T17:38:43.552676Z"} {"id": "trtp-e76a0240cfe3", "instruction": "Describe Syscall Hooking and Direct Syscalls and its purpose.", "output": "Syscall hooking intercepts the transition from user mode to kernel mode.\n On Windows, this traditionally meant hooking the System Service Dispatch Table (SSDT)\n in the kernel. With PatchGuard (KPP), kernel hooking is restricted, so monitoring\n shifted to userland ntdll.dll hooks. Attackers counter by making direct syscalls,\n bypassing ntdll entirely. This arms race drives innovation in both offense and\n defense, with techniques like syscall number resolution and heaven's gate.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552693Z", "updated_at": "2025-12-17T17:38:43.552693Z"} {"id": "trtp-269b328cef41", "instruction": "Why is Syscall Hooking and Direct Syscalls security-relevant?", "output": "Critical offensive/defensive battleground; direct syscalls are primary EDR bypass technique", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552709Z", "updated_at": "2025-12-17T17:38:43.552709Z"} {"id": "trtp-54efbf8b4312", "instruction": "Summarize the essential points about Syscall Hooking and Direct Syscalls.", "output": "Key points about Syscall Hooking and Direct Syscalls:\n\n- SSDT hooking replaced function pointers in kernel dispatch table\n- PatchGuard (KPP) prevents kernel modifications on x64 Windows\n- Modern monitoring uses ntdll userland hooks instead\n- Direct syscalls bypass userland hooks entirely\n- Syscall numbers vary between Windows versions\n- Heaven's Gate: 32-bit process making 64-bit syscalls", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-syscall-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552652Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552722Z", "updated_at": "2025-12-17T17:38:43.552722Z"} {"id": "trtp-80995df4f2dc", "instruction": "Describe techniques for unhooking ntdll.dll to bypass EDR monitoring.", "output": "NTDLL unhooking techniques: (1) Full DLL remap - read ntdll.dll from disk or KnownDlls (\\KnownDlls\\ntdll.dll), map it into memory, and overwrite the hooked .text section with the clean version. (2) Selective function restoration - identify specific hooked functions, read their original bytes from the on-disk file, and patch just those functions. (3) Suspended process technique - create a suspended process (inherits clean ntdll), read its ntdll memory, use those bytes. (4) Manual syscall stub reconstruction - the syscall stub pattern is consistent (mov r10, rcx; mov eax, syscall_num; syscall; ret), so stubs can be rebuilt if syscall numbers are known. Each technique has tradeoffs in stealth and complexity.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552750Z", "updated_at": "2025-12-17T17:38:43.552750Z"} {"id": "trtp-451c4481377c", "instruction": "How can security products detect and prevent NTDLL unhooking attempts?", "output": "Detection and prevention strategies: (1) Monitor file operations on ntdll.dll - CreateFile/ReadFile on System32\\ntdll.dll is suspicious, (2) Watch NtMapViewOfSection for KnownDlls section access, (3) Implement hook integrity checking - periodically verify hooks are still installed, re-hook if removed, (4) Use kernel callbacks rather than userland hooks - these can't be unhooked from usermode, (5) ETW-based monitoring captures syscalls regardless of userland state, (6) Detect the unhooking pattern itself - consecutive reads/writes to .text section, (7) Memory watchpoints on hook locations, (8) Consider ntdll load address randomization. The most resilient approach combines userland hooks with kernel telemetry that doesn't depend on those hooks.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552757Z", "updated_at": "2025-12-17T17:38:43.552757Z"} {"id": "trtp-14b613676eca", "instruction": "Describe NTDLL Unhooking Techniques and its purpose.", "output": "NTDLL unhooking removes security product hooks from ntdll.dll to enable\n unmonitored syscalls. Techniques include: reading clean ntdll from disk and remapping,\n reading from KnownDlls, reading from suspended process, or manually restoring original\n bytes. This is a fundamental EDR bypass technique that restores the original syscall\n stubs, allowing malware to call NT APIs without triggering hooks.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552768Z", "updated_at": "2025-12-17T17:38:43.552768Z"} {"id": "trtp-4d1553337861", "instruction": "Why is NTDLL Unhooking Techniques security-relevant?", "output": "Primary EDR bypass; detection of unhooking attempts is critical for security products", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552777Z", "updated_at": "2025-12-17T17:38:43.552777Z"} {"id": "trtp-7a10b85f2812", "instruction": "Summarize the essential points about NTDLL Unhooking Techniques.", "output": "Key points about NTDLL Unhooking Techniques:\n\n- Read clean ntdll.dll from disk (System32 or KnownDlls)\n- Map fresh copy and overwrite .text section\n- Or restore individual function prologues\n- Can read from suspended sacrificial process\n- Syscall stub restoration enables clean API calls\n- Some EDR re-hook periodically or detect unhooking", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552792Z", "updated_at": "2025-12-17T17:38:43.552792Z"} {"id": "trtp-87c3faf458a6", "instruction": "How can NTDLL Unhooking Techniques be detected?", "output": "Detection indicators for NTDLL Unhooking Techniques:\n\n- Reading ntdll.dll from disk or KnownDlls\n- NtMapViewOfSection calls for ntdll\n- WriteProcessMemory targeting ntdll .text section\n- Hook integrity checks failing\n- Memory protection changes on ntdll", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "detection_indicators_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552804Z", "updated_at": "2025-12-17T17:38:43.552804Z"} {"id": "trtp-49cd21e8f189", "instruction": "What techniques are used for NTDLL Unhooking Techniques?", "output": "Techniques for NTDLL Unhooking Techniques:\n\n**Full Remap**: Map fresh ntdll.dll, copy .text over hooked version\n\n**Function Restore**: Read original bytes from disk, patch specific functions\n\n**Knowndlls**: Open \\KnownDlls\\ntdll.dll section for clean copy\n\n**Suspended Process**: Spawn suspended process, read its clean ntdll\n\n**Manual Mapping**: Parse PE, manually load without using LdrLoadDll", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-ntdll-unhooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552739Z", "transform_template": "techniques_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552820Z", "updated_at": "2025-12-17T17:38:43.552820Z"} {"id": "trtp-c9641ac834f2", "instruction": "How can code detect whether functions in ntdll.dll have been hooked?", "output": "Hook detection for ntdll.dll: (1) Byte comparison - read ntdll.dll from disk, parse PE headers to find .text section, compare against in-memory bytes at each exported function. Any differences indicate modification. (2) Prologue analysis - examine first bytes of each function; syscall stubs should start with 'mov r10, rcx; mov eax, NUM' - presence of JMP (0xE9) or other control flow indicates hooks. (3) Syscall number verification - legitimate stubs have consistent patterns; hooks often have different structures. (4) Check for executable memory allocations near ntdll's address range (trampolines need to be within JMP range). (5) Use GetProcAddress and compare result to actual function address - EAT hooks would show discrepancy.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552846Z", "updated_at": "2025-12-17T17:38:43.552846Z"} {"id": "trtp-1aace2c7b717", "instruction": "What are the security implications of both attackers and defenders using hook detection?", "output": "The dual-use nature of hook detection creates an arms race: Attackers detect security hooks to: unhook monitored functions, identify which security products are present (fingerprinting), avoid triggering specific monitored APIs, or find gaps in coverage. Defenders detect malware hooks to: identify rootkit-style hiding (hooked enumeration functions), find credential stealers (hooked auth APIs), detect banking trojans (hooked browser functions), or identify tampering with security software. This leads to: security tools trying to hide their hooks (anti-detection), malware trying to hide its hooks (anti-analysis), both sides implementing hook integrity monitoring, and escalation to kernel-level monitoring where userland unhooking doesn't help.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552853Z", "updated_at": "2025-12-17T17:38:43.552853Z"} {"id": "trtp-cad45003e4cb", "instruction": "What is Hook Detection Methods?", "output": "Hook detection identifies whether functions have been modified by\n security tools or malware. Techniques include comparing in-memory code against\n on-disk copies, analyzing function prologues for unexpected jumps, checking\n IAT/EAT entries against expected addresses, and examining memory regions for\n executable allocations near system DLLs. Both attackers and defenders use\n hook detection - attackers to find and remove security hooks, defenders to\n find malware hooks.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552866Z", "updated_at": "2025-12-17T17:38:43.552866Z"} {"id": "trtp-ffe6dddb56bc", "instruction": "How does Hook Detection Methods relate to security?", "output": "Malware uses this to detect/evade security tools; security tools use it to detect malware hooks", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552880Z", "updated_at": "2025-12-17T17:38:43.552880Z"} {"id": "trtp-07ee31f7920e", "instruction": "What are the key technical details of Hook Detection Methods?", "output": "Key points about Hook Detection Methods:\n\n- Compare in-memory code with on-disk original\n- Check function prologues for JMP/CALL instructions\n- Verify IAT entries point to expected modules\n- Look for executable memory near system DLLs (trampolines)\n- GetProcAddress vs IAT comparison reveals IAT hooks\n- Stack walking can identify hook presence", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552892Z", "updated_at": "2025-12-17T17:38:43.552892Z"} {"id": "trtp-1474ddb97a09", "instruction": "How can Hook Detection Methods be detected?", "output": "Detection techniques for Hook Detection Methods:\n\n**Byte Comparison**: Read function bytes from disk, compare to memory\n\n**Prologue Analysis**: Check for JMP/CALL at function start\n\n**Iat Verification**: Compare IAT to GetProcAddress results\n\n**Eat Verification**: Compare EAT to expected in-module addresses\n\n**Memory Scanning**: Find RWX regions near DLLs (trampolines)\n\n**Stack Analysis**: Examine return addresses for unexpected modules", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hook-detection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552835Z", "transform_template": "detection_techniques_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552910Z", "updated_at": "2025-12-17T17:38:43.552910Z"} {"id": "trtp-6ec5641bf642", "instruction": "How does ETW provide security monitoring that survives ntdll unhooking?", "output": "ETW generates events at the kernel level, making it immune to userland unhooking techniques. When code calls NtAllocateVirtualMemory, even via direct syscall bypassing ntdll, the kernel still generates ETW events through instrumentation points in kernel code. The Microsoft-Windows-Threat-Intelligence provider specifically captures: VirtualAlloc/Protect operations (detecting RWX allocations), SetThreadContext (detecting thread hijacking), MapViewOfFile (detecting injection techniques), and direct syscall patterns. Since events generate in kernel space, removing ntdll hooks has no effect. EDR agents subscribing to ETW (often protected by PPL) receive telemetry regardless of userland evasion attempts.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-etw-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552922Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552933Z", "updated_at": "2025-12-17T17:38:43.552933Z"} {"id": "trtp-90b43d41718c", "instruction": "What techniques exist for evading ETW-based monitoring?", "output": "ETW evasion techniques target the ETW infrastructure itself: (1) Provider patching - modify the EtwEventWrite function in ntdll to return without logging, (2) Session tampering - use NtTraceControl to disable or modify ETW sessions, (3) Provider GUID removal - remove security providers from active sessions, (4) Consumer termination - kill or crash the process consuming ETW events, (5) Event filtering/flooding - generate noise to obscure malicious events or exploit filter vulnerabilities, (6) Kernel driver - load a driver to intercept/filter ETW at kernel level, (7) Time-of-check-time-of-use - perform actions before ETW consumer processes events. Mitigations include PPL protection for ETW consumers, integrity monitoring of ETW configuration, and kernel-level tamper detection.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-etw-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552922Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552939Z", "updated_at": "2025-12-17T17:38:43.552939Z"} {"id": "trtp-73f23e78ff49", "instruction": "How does ETW-Based Security Monitoring work?", "output": "Event Tracing for Windows (ETW) provides kernel-level telemetry that\n cannot be bypassed by userland unhooking. Security-relevant providers include\n Microsoft-Windows-Threat-Intelligence (kernel syscall data), Microsoft-Windows-Kernel-Process,\n and Microsoft-Windows-Security-Auditing. ETW is increasingly important for EDR as\n it provides visibility that survives ntdll unhooking, though attackers have developed\n ETW evasion techniques.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-etw-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552922Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552951Z", "updated_at": "2025-12-17T17:38:43.552951Z"} {"id": "trtp-cc845ebd82d3", "instruction": "Why is ETW-Based Security Monitoring security-relevant?", "output": "Critical telemetry source for EDR that survives userland evasion; attackers increasingly target ETW itself", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-etw-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552922Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552964Z", "updated_at": "2025-12-17T17:38:43.552964Z"} {"id": "trtp-5a09139952ef", "instruction": "What should I know about ETW-Based Security Monitoring?", "output": "Key points about ETW-Based Security Monitoring:\n\n- Kernel-generated events bypass userland bypass techniques\n- Threat Intelligence provider captures syscalls directly\n- Process/thread/image load events available\n- Can be tampered with via NtTraceControl or provider patching\n- Protected Process Light (PPL) can protect ETW consumers\n- Some telemetry requires admin privileges to consume", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-etw-monitoring", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552922Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552976Z", "updated_at": "2025-12-17T17:38:43.552976Z"} {"id": "trtp-ee8307e04a54", "instruction": "How do kernel callbacks provide security monitoring that survives userland attacks?", "output": "Kernel callbacks are registered directly with the Windows kernel and execute in kernel context, making them immune to userland attacks: (1) Code runs at kernel privilege level - usermode code cannot modify kernel memory without a vulnerability, (2) Callbacks fire for all operations regardless of how they're invoked (direct syscall, ntdll, etc.), (3) ObRegisterCallbacks specifically monitors handle operations - even direct syscalls to NtOpenProcess trigger the callback, (4) No userland unhooking affects them since they don't rely on userland hooks, (5) PsSetLoadImageNotifyRoutine catches all image loads including those via manual mapping. To bypass these, attackers need kernel access (vulnerable driver, exploit) to locate and remove callback registrations from kernel data structures.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-kernel-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552989Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.552999Z", "updated_at": "2025-12-17T17:38:43.552999Z"} {"id": "trtp-e5fae4351795", "instruction": "What techniques do attackers use to disable kernel callbacks?", "output": "Disabling kernel callbacks requires kernel-level access, typically via: (1) Vulnerable driver exploitation - load a legitimate but vulnerable signed driver (BYOVD), use vulnerability to gain kernel read/write, locate callback arrays (PspCreateProcessNotifyRoutine, etc.), zero out or unlink EDR entries. (2) Direct kernel object manipulation (DKOM) - if kernel access is obtained, directly modify callback data structures. (3) Callback routine patching - instead of removing, patch the callback routine to return immediately. (4) Driver unload - if the security driver can be stopped/unloaded, callbacks are removed automatically. Mitigations: Microsoft implemented more callback protections in recent Windows versions, DSE makes loading unsigned drivers difficult, and some callbacks are protected by additional kernel integrity checks.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-kernel-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552989Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553006Z", "updated_at": "2025-12-17T17:38:43.553006Z"} {"id": "trtp-ed87b4d9c62c", "instruction": "How does Kernel Callback Mechanisms work?", "output": "Windows kernel provides official callback mechanisms for monitoring\n system events without patching kernel structures. These include process/thread callbacks\n (PsSetCreateProcessNotifyRoutine), image load callbacks (PsSetLoadImageNotifyRoutine),\n registry callbacks (CmRegisterCallback), and object callbacks (ObRegisterCallbacks).\n Security products use these for tamper-resistant monitoring that cannot be bypassed\n from usermode.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-kernel-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552989Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553020Z", "updated_at": "2025-12-17T17:38:43.553020Z"} {"id": "trtp-bd41b96fad3a", "instruction": "How does Kernel Callback Mechanisms relate to security?", "output": "Foundation of modern EDR kernel components; callback removal is advanced evasion", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-kernel-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552989Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553030Z", "updated_at": "2025-12-17T17:38:43.553030Z"} {"id": "trtp-21088eba3391", "instruction": "What are the important aspects of Kernel Callback Mechanisms?", "output": "Key points about Kernel Callback Mechanisms:\n\n- Official Microsoft-supported monitoring mechanisms\n- PatchGuard-compliant - won't trigger BSOD\n- Process/thread/image load notifications\n- Registry and object access callbacks\n- Filter drivers for file/network monitoring\n- Cannot be removed from usermode\n- Attackers may use vulnerable drivers to remove callbacks", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-kernel-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.552989Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553050Z", "updated_at": "2025-12-17T17:38:43.553050Z"} {"id": "trtp-6c8e16326820", "instruction": "Compare LD_PRELOAD hooking to Windows IAT hooking.", "output": "Both intercept library function calls but through different mechanisms: LD_PRELOAD sets an environment variable causing the dynamic linker to load a specified library first, so any functions it exports override standard library functions for that process. Like IAT hooking, it only affects calls through the dynamic linker - direct syscalls bypass it. Key differences: (1) LD_PRELOAD is per-process via environment, IAT hooking modifies memory after load, (2) LD_PRELOAD is trivially detected via /proc/pid/environ, IAT hooks require memory comparison, (3) LD_PRELOAD can be blocked by secure_getenv and ignored for setuid binaries, (4) Both are bypassed by static linking or direct syscalls, (5) IAT hooking can be applied post-load, LD_PRELOAD only affects process start.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553077Z", "updated_at": "2025-12-17T17:38:43.553077Z"} {"id": "trtp-5da7b6418c70", "instruction": "How is eBPF used for security monitoring and what advantages does it provide?", "output": "eBPF provides kernel-level programmable monitoring with key advantages: (1) Safety - eBPF programs are verified by the kernel before execution, preventing crashes or exploits, (2) Performance - JIT-compiled and runs in kernel context with minimal overhead, (3) Flexibility - can attach to syscalls, kprobes, tracepoints, network stack, and more, (4) No kernel modules - doesn't require loading custom kernel code, (5) Cannot be bypassed from userland - like kernel callbacks on Windows, (6) Rich data access - can inspect function arguments, return values, and kernel structures. Security tools use eBPF for: syscall monitoring, network traffic analysis, file access tracking, process behavior monitoring. Major EDR vendors now use eBPF-based agents on Linux for tamper-resistant telemetry.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553084Z", "updated_at": "2025-12-17T17:38:43.553084Z"} {"id": "trtp-fffea5fdbbc4", "instruction": "Explain Linux Hooking Techniques in the context of Linux.", "output": "Linux hooking operates through different mechanisms than Windows: LD_PRELOAD\n for library function interception, ptrace for process debugging/modification, kprobes/uprobes\n for kernel/userspace tracing, eBPF for programmable kernel instrumentation, and syscall table\n modification (on older kernels). Security tools and attackers both leverage these\n mechanisms for monitoring and evasion.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553095Z", "updated_at": "2025-12-17T17:38:43.553095Z"} {"id": "trtp-449620e695e5", "instruction": "Why is Linux Hooking Techniques security-relevant?", "output": "Critical for Linux security monitoring and evasion; eBPF increasingly important", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553104Z", "updated_at": "2025-12-17T17:38:43.553104Z"} {"id": "trtp-7c019c1396db", "instruction": "What should I know about Linux Hooking Techniques?", "output": "Key points about Linux Hooking Techniques:\n\n- LD_PRELOAD intercepts dynamic library calls\n- ptrace allows process inspection and modification\n- eBPF enables safe kernel programmability\n- kprobes/uprobes for kernel/user tracing\n- SECCOMP-BPF filters syscalls\n- GOT/PLT hooking similar to IAT hooking", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553115Z", "updated_at": "2025-12-17T17:38:43.553115Z"} {"id": "trtp-2718956852b7", "instruction": "What techniques are used for Linux Hooking Techniques?", "output": "Techniques for Linux Hooking Techniques:\n\n**Ld Preload**: Library interposition via environment variable\n\n**Ptrace**: Debug interface for process manipulation\n\n**Ebpf**: Kernel-verified programs for tracing/filtering\n\n**Kprobes**: Dynamic kernel instrumentation\n\n**Uprobes**: Dynamic userspace instrumentation\n\n**Seccomp**: Syscall filtering/restriction\n\n**Got Plt**: Global Offset Table patching", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-linux-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553067Z", "transform_template": "techniques_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553132Z", "updated_at": "2025-12-17T17:38:43.553132Z"} {"id": "trtp-9e6f987aa4e6", "instruction": "How does vtable hooking work for intercepting COM interface methods?", "output": "COM interfaces in Windows are implemented as C++ objects with virtual function tables. When you call a COM method like IUnknown::QueryInterface, the code looks up the function pointer at a fixed offset in the vtable. To hook: (1) Obtain a pointer to the target COM object, (2) Read the vtable pointer from the object (first pointer in the object), (3) Read the target method address from the vtable, (4) Either modify the vtable entry directly (affects all instances), or create a copy of the vtable with modified entry and swap the object's vtable pointer (per-instance). This allows intercepting any COM method including security-relevant interfaces like IWbemServices (WMI), IBackgroundCopyManager (BITS), or browser COM interfaces.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-vtable-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553147Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553157Z", "updated_at": "2025-12-17T17:38:43.553157Z"} {"id": "trtp-9f750df1190a", "instruction": "What are the security implications of vtable hooking on Windows?", "output": "Security implications of vtable hooking: Offensive uses: (1) COM-based API hooking to intercept WMI queries, BITS transfers, or shell operations, (2) Browser COM hooking for credential theft or traffic interception, (3) DirectX hooking for screen capture or overlay injection, (4) Persistence via hooked COM objects in running processes. Defensive challenges: (1) Harder to detect than function hooking - no code modification, just pointer changes, (2) Object-specific hooks may only affect certain instances, (3) COM objects are pervasive in Windows making monitoring complex. Detection: watch for vtable pointer modifications, compare vtable entries against expected addresses, monitor memory protection changes on vtable regions.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-vtable-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553147Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553164Z", "updated_at": "2025-12-17T17:38:43.553164Z"} {"id": "trtp-6f9f455bc318", "instruction": "Describe Virtual Table (vtable) Hooking and its purpose.", "output": "Vtable hooking targets C++ virtual function tables to intercept method\n calls on objects. When C++ code calls a virtual method, it looks up the function\n pointer in the object's vtable. By replacing vtable entries or swapping the vtable\n pointer itself, virtual method calls can be redirected. This is used to hook COM\n objects, DirectX interfaces, and other C++ object systems.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-vtable-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553147Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553177Z", "updated_at": "2025-12-17T17:38:43.553177Z"} {"id": "trtp-987f67a60c48", "instruction": "How does Virtual Table (vtable) Hooking relate to security?", "output": "Used for hooking COM-based Windows APIs, game hacking, and browser manipulation", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-vtable-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553147Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553187Z", "updated_at": "2025-12-17T17:38:43.553187Z"} {"id": "trtp-1a19073043aa", "instruction": "Summarize the essential points about Virtual Table (vtable) Hooking.", "output": "Key points about Virtual Table (vtable) Hooking:\n\n- Targets C++ virtual function dispatch mechanism\n- Modify vtable entries or swap vtable pointer\n- Commonly used for COM interface hooking\n- DirectX hooks for game cheats and graphics injection\n- Object-specific - affects instances with modified vtable\n- Can be per-object or global (modifying class vtable)", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-vtable-hooking", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553147Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553198Z", "updated_at": "2025-12-17T17:38:43.553198Z"} {"id": "trtp-55d5c858d698", "instruction": "How can hardware breakpoints be used for stealthy function hooking?", "output": "Hardware breakpoints enable hooking without code modification: (1) Set DR0-DR3 to the target function address, (2) Configure DR7 for execute breakpoint, (3) Register a vectored exception handler (VEH) or structured exception handler, (4) When the function executes, a SINGLE_STEP or BREAKPOINT exception triggers, (5) The exception handler inspects/modifies context, potentially redirects execution, then continues. Advantages: no code bytes modified (harder to detect via integrity checks), works on read-only memory, doesn't require memory protection changes. Limitations: only 4 breakpoints per thread, must propagate to new threads, can be detected via GetThreadContext, some security tools monitor debug register access.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hardware-breakpoints", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553211Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553221Z", "updated_at": "2025-12-17T17:38:43.553221Z"} {"id": "trtp-12b9680f6265", "instruction": "How do anti-debugging techniques abuse and detect hardware breakpoints?", "output": "Anti-debugging with hardware breakpoints: (1) Detection - call GetThreadContext and check if DR0-DR7 contain unexpected values (debugger breakpoints), (2) Clearing - SetThreadContext to zero debug registers, removing debugger breakpoints, (3) Exhaustion - set all 4 debug registers to innocuous addresses, leaving none for debuggers, (4) Exception-based anti-analysis - set breakpoints on common analysis points, detect when they trigger unexpectedly. Detection of hardware breakpoint hooks: check debug registers for unexpected values, monitor for SetThreadContext calls modifying debug registers, look for vectored exception handlers (suspicious in normal applications), compare DR values across threads for consistency. Both attackers and defenders use these techniques.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hardware-breakpoints", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553211Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553228Z", "updated_at": "2025-12-17T17:38:43.553228Z"} {"id": "trtp-a55897c65857", "instruction": "Explain Hardware Breakpoint Hooks in the context of Windows and Linux.", "output": "Hardware breakpoints use CPU debug registers (DR0-DR3) to trigger\n exceptions when specified addresses are accessed. Unlike software breakpoints (INT 3),\n they don't modify code bytes, making them stealthier. Security tools use them for\n monitoring; attackers use them for anti-debugging evasion and stealthy hooking.\n Each thread has its own debug register context.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hardware-breakpoints", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553211Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553244Z", "updated_at": "2025-12-17T17:38:43.553244Z"} {"id": "trtp-807827719f09", "instruction": "From a security perspective, why is understanding Hardware Breakpoint Hooks important?", "output": "Stealthy hooking mechanism; anti-debug technique; used by both offense and defense", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hardware-breakpoints", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553211Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553255Z", "updated_at": "2025-12-17T17:38:43.553255Z"} {"id": "trtp-0b344e365c3c", "instruction": "What are the important aspects of Hardware Breakpoint Hooks?", "output": "Key points about Hardware Breakpoint Hooks:\n\n- Uses CPU debug registers (DR0-DR3)\n- Four breakpoints available per thread\n- Triggers exception without modifying code\n- Can break on execute, read, or write\n- Per-thread context - must set for each thread\n- DR7 controls breakpoint configuration\n- Detected via GetThreadContext or direct register access", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-hardware-breakpoints", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553211Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553271Z", "updated_at": "2025-12-17T17:38:43.553271Z"} {"id": "trtp-23abba003dd0", "instruction": "Describe the standard patterns for implementing a function hook that can modify both arguments and return values.", "output": "A comprehensive hook implementation: (1) Save original function bytes/address for trampoline, (2) Hook function entry receives control with original arguments, (3) Pre-processing phase: inspect arguments, log them, potentially modify them or decide to skip original, (4) Call original via trampoline - saved bytes + jump back to original+N, (5) Post-processing phase: inspect return value, log it, potentially modify it, (6) Return to caller with (potentially modified) result. Implementation requirements: preserve all registers/flags not part of calling convention, handle stack properly for the calling convention (cdecl, stdcall, fastcall, x64), ensure thread safety if hook state is accessed, provide clean unhook capability. This pattern enables full control while maintaining original functionality access.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-function-interception-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553284Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553294Z", "updated_at": "2025-12-17T17:38:43.553294Z"} {"id": "trtp-d70e72ff2dc7", "instruction": "What security considerations apply when implementing or detecting function hooks?", "output": "Security considerations for hooks: Implementation: (1) Atomicity - hook installation must not create race conditions where partial hooks cause crashes, (2) Register preservation - must not corrupt caller's CPU state, (3) Stack balance - calling convention violations cause crashes or corruption, (4) Recursion handling - if hook calls functions that trigger the same hook, must prevent infinite recursion, (5) Unhook safety - removal must not corrupt threads currently executing in hook. Detection: (1) Code integrity - compare function bytes against known-good, (2) Address validation - hook targets should point to expected modules, (3) Behavioral indicators - hooked functions may have different timing, side effects, (4) Call stack analysis - unexpected return addresses indicate interposition, (5) Anti-tamper - verify hook implementations aren't themselves hooked.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-function-interception-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553284Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553301Z", "updated_at": "2025-12-17T17:38:43.553301Z"} {"id": "trtp-101bb93eacef", "instruction": "What is Common Function Interception Patterns?", "output": "Function interception generally follows patterns: pre-call (inspect/modify\n arguments), post-call (inspect/modify return value), or full substitution (replace\n entirely). Proper hook implementation must preserve registers, handle calling conventions,\n manage thread safety, and provide a clean way to call the original. Understanding\n these patterns is essential for both implementing and detecting hooks.", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-function-interception-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553284Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553313Z", "updated_at": "2025-12-17T17:38:43.553313Z"} {"id": "trtp-196d65711795", "instruction": "Why is Common Function Interception Patterns security-relevant?", "output": "Understanding patterns helps in both implementing security monitoring and detecting malicious hooks", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-function-interception-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553284Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553326Z", "updated_at": "2025-12-17T17:38:43.553326Z"} {"id": "trtp-e695ec711977", "instruction": "What should I know about Common Function Interception Patterns?", "output": "Key points about Common Function Interception Patterns:\n\n- Pre-call: inspect/modify arguments before original\n- Post-call: inspect/modify return value after original\n- Replacement: completely substitute functionality\n- Must preserve CPU state (registers, flags)\n- Calling convention compliance essential\n- Thread safety during hook install/remove\n- Clean original call mechanism (trampoline)", "category": "api_hooking", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-api_hooking-function-interception-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553284Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553338Z", "updated_at": "2025-12-17T17:38:43.553338Z"} {"id": "trtp-1bb57eaf4f22", "instruction": "Describe the Windows DLL loading process from LoadLibrary to DllMain execution.", "output": "The Windows DLL loading process: (1) LoadLibrary (kernel32) calls LdrLoadDll (ntdll), (2) The loader searches for the DLL using the DLL search order, (3) CreateFile opens the DLL, NtCreateSection creates a section object, (4) NtMapViewOfSection maps the DLL into process address space, (5) The loader parses PE headers to locate sections, imports, exports, relocations, (6) Import Address Table is resolved - each imported DLL is recursively loaded, and import entries are filled with resolved addresses, (7) If the DLL couldn't load at its preferred base address, base relocations are applied to fix absolute addresses, (8) TLS (Thread Local Storage) callbacks are executed if present, (9) Finally, DllMain is called with fdwReason=DLL_PROCESS_ATTACH. The PEB's Ldr structure is updated to include the new module.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-windows-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553353Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553367Z", "updated_at": "2025-12-17T17:38:43.553367Z"} {"id": "trtp-29ddafc49a1e", "instruction": "What security monitoring opportunities exist during the DLL loading process?", "output": "DLL loading monitoring opportunities: (1) Image load callbacks (PsSetLoadImageNotifyRoutine) - kernel notification for every image load with path and base address, (2) LoadLibrary API hooks - intercept calls with DLL name before loading, (3) Section creation monitoring - detect NtCreateSection for executables, (4) Memory mapping events - NtMapViewOfSection reveals injection of executable content, (5) Import resolution - monitor for unusual import patterns or API usage, (6) DllMain execution - breakpoint or hook DllMain entry points, (7) PEB traversal monitoring - detect PEB->Ldr manipulation attempts. These monitoring points can detect: DLL injection, DLL hijacking, reflective loading (unusual memory sources), and malicious DLL execution.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-windows-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553353Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553388Z", "updated_at": "2025-12-17T17:38:43.553388Z"} {"id": "trtp-dd6aaa51b2d0", "instruction": "What is Windows DLL Loading Process?", "output": "Windows loads DLLs through the loader (ntdll!LdrLoadDll and related\n functions). The process involves: searching for the DLL using the search order,\n mapping the file into memory, processing the PE headers, resolving imports,\n applying relocations, executing TLS callbacks, and calling DllMain. Understanding\n this process is essential for both defensive monitoring and understanding\n loading-based attacks.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-windows-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553353Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553399Z", "updated_at": "2025-12-17T17:38:43.553399Z"} {"id": "trtp-10c868cf0867", "instruction": "What are the security implications of Windows DLL Loading Process?", "output": "Foundation for understanding DLL injection, hijacking, and reflective loading attacks", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-windows-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553353Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553409Z", "updated_at": "2025-12-17T17:38:43.553409Z"} {"id": "trtp-6ed2e8cce585", "instruction": "What should I know about Windows DLL Loading Process?", "output": "Key points about Windows DLL Loading Process:\n\n- LdrLoadDll is the core loading function in ntdll\n- PE parsing: DOS header, NT headers, sections\n- Import resolution links to dependency DLLs\n- Relocations adjust for non-preferred base address\n- TLS callbacks execute before DllMain\n- DllMain called with DLL_PROCESS_ATTACH\n- PEB->Ldr maintains loaded module list", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-windows-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553353Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553424Z", "updated_at": "2025-12-17T17:38:43.553424Z"} {"id": "trtp-5863cdec0f8f", "instruction": "Explain DLL search order hijacking and how it enables persistence or privilege escalation.", "output": "DLL search order hijacking exploits Windows' DLL resolution logic: when an application loads a DLL by name (not full path), Windows searches directories in a specific order. If an attacker can place a malicious DLL earlier in the search order than the legitimate one, their DLL loads instead. Common vectors: (1) Side-loading - place malicious DLL in the application's directory, which is searched first, (2) Phantom DLLs - applications may try to load DLLs that don't exist on the system; providing them executes attacker code, (3) Writable PATH directories - if any PATH directory is writable, placing DLLs there affects many applications. Privilege escalation occurs when a higher-privileged process (installer, service, scheduled task) is vulnerable to hijacking. Persistence is achieved when the hijacked application runs at startup.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-search-order", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553441Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553451Z", "updated_at": "2025-12-17T17:38:43.553451Z"} {"id": "trtp-040df8a41ced", "instruction": "What mitigations exist for DLL search order attacks?", "output": "DLL search order mitigations: (1) SafeDllSearchMode (default ON) - moves current directory later in search order, reducing current-directory attacks, (2) Fully qualified paths - LoadLibrary with absolute paths skips search entirely, (3) SetDefaultDllDirectories/AddDllDirectory - explicitly control search locations, (4) LoadLibraryEx flags - LOAD_LIBRARY_SEARCH_* flags restrict search to specific locations, (5) KnownDLLs registry - system DLLs in this list are always loaded from System32, (6) Application manifests - SxS manifests can specify exact DLL versions/locations, (7) Code signing verification - validate DLL signatures before loading, (8) Protected directories - install applications in protected locations not writable by standard users. Defenders should audit applications for vulnerable loading patterns and monitor for DLLs appearing in unusual locations.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-search-order", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553441Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553459Z", "updated_at": "2025-12-17T17:38:43.553459Z"} {"id": "trtp-d2d2f0cd5190", "instruction": "Describe DLL Search Order and Hijacking and its purpose.", "output": "Windows searches for DLLs in a specific order when a relative path\n is provided. The default order has evolved over Windows versions but generally\n includes: application directory, system directories, current directory, and PATH.\n DLL hijacking exploits this by placing malicious DLLs earlier in the search order\n than legitimate ones. SafeDllSearchMode and other mitigations affect the order.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-search-order", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553441Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553470Z", "updated_at": "2025-12-17T17:38:43.553470Z"} {"id": "trtp-8f0703c0a1a3", "instruction": "From a security perspective, why is understanding DLL Search Order and Hijacking important?", "output": "DLL hijacking is a common persistence and privilege escalation technique", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-search-order", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553441Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553493Z", "updated_at": "2025-12-17T17:38:43.553493Z"} {"id": "trtp-2ff91355ce30", "instruction": "What are the key technical details of DLL Search Order and Hijacking?", "output": "Key points about DLL Search Order and Hijacking:\n\n- Application directory searched first (most hijackable)\n- KnownDlls bypass most of search order\n- SafeDllSearchMode affects current directory position\n- Manifest/SxS can override search order\n- SetDllDirectory modifies search order\n- LoadLibraryEx flags can restrict search\n- PATH environment variable checked last", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-search-order", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553441Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553505Z", "updated_at": "2025-12-17T17:38:43.553505Z"} {"id": "trtp-6c274b960fea", "instruction": "How does reflective DLL loading work and what are its advantages for malware?", "output": "Reflective DLL loading implements a custom loader to execute a DLL from memory: (1) Receive DLL as raw bytes (downloaded, embedded, decrypted), (2) Allocate memory for the image size (VirtualAlloc RW), (3) Copy PE headers to start of allocation, (4) Parse section headers, copy each section to its virtual address, (5) Walk import directory, use LoadLibrary/GetProcAddress to resolve each import, fill IAT, (6) If loaded at different base than preferred, apply base relocations, (7) Set correct memory protections per section (RX for .text, RW for .data), (8) Execute TLS callbacks if present, (9) Call DllMain with DLL_PROCESS_ATTACH. Advantages: no file on disk (evades file-based scanning), not in normal module lists (evades some memory scanning), memory-only existence is harder to forensically recover, can load into remote processes for injection.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553591Z", "updated_at": "2025-12-17T17:38:43.553591Z"} {"id": "trtp-1f04e86d8b90", "instruction": "How can security tools detect reflective DLL loading?", "output": "Detection approaches for reflective DLLs: (1) Unbacked executable memory - legitimate code is backed by files on disk; memory regions that are executable but MEM_PRIVATE (not MEM_IMAGE) are suspicious, (2) PE header scanning - scan memory for MZ/PE signatures in non-module regions, (3) PEB mismatch - compare memory containing PE structures against PEB->Ldr module list; reflectively loaded DLLs typically aren't listed, (4) Memory allocation patterns - VirtualAlloc for image-sized regions followed by section-like memory protection changes, (5) Import resolution behavior - GetProcAddress calls for many APIs from unusual memory locations, (6) Thread start addresses - threads starting from unbacked memory indicate injected/reflective code. ETW and kernel callbacks help: image load callbacks won't fire (no normal load), but memory allocation and thread creation events still occur.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553605Z", "updated_at": "2025-12-17T17:38:43.553605Z"} {"id": "trtp-97b233ffd474", "instruction": "Explain Reflective DLL Loading in the context of Windows.", "output": "Reflective DLL loading maps a DLL from memory rather than disk,\n bypassing normal loading mechanisms and leaving no disk artifacts. The technique\n implements a custom loader that parses PE headers, allocates memory, copies sections,\n resolves imports, applies relocations, and calls DllMain - all from a memory buffer.\n This is a fundamental malware technique for fileless execution.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553618Z", "updated_at": "2025-12-17T17:38:43.553618Z"} {"id": "trtp-16efd88a22dc", "instruction": "Why is Reflective DLL Loading security-relevant?", "output": "Primary technique for fileless malware and in-memory execution", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553627Z", "updated_at": "2025-12-17T17:38:43.553627Z"} {"id": "trtp-d5a63c9369a7", "instruction": "What should I know about Reflective DLL Loading?", "output": "Key points about Reflective DLL Loading:\n\n- DLL loaded from memory buffer, not disk\n- No file on disk - fileless execution\n- Implements custom PE loader logic\n- Must handle imports, relocations, TLS\n- Not in PEB module list (unless added)\n- Commonly injected then self-loads\n- Detection focuses on unbacked executable memory", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553643Z", "updated_at": "2025-12-17T17:38:43.553643Z"} {"id": "trtp-031507af207e", "instruction": "How can Reflective DLL Loading be detected?", "output": "Detection indicators for Reflective DLL Loading:\n\n- Executable memory not backed by file (MEM_PRIVATE)\n- PE signatures in non-module memory\n- Missing from PEB module list despite PE structure\n- VirtualAlloc followed by suspicious memory operations", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "detection_indicators_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553655Z", "updated_at": "2025-12-17T17:38:43.553655Z"} {"id": "trtp-9a28945023ae", "instruction": "How is Reflective DLL Loading implemented?", "output": "Implementation steps for Reflective DLL Loading:\n\n1. Allocate RW memory for image\n2. Copy PE headers\n3. Copy sections to correct virtual addresses\n4. Process import directory - load dependencies\n5. Apply base relocations\n6. Fix section memory protections (RX for code)\n7. Execute TLS callbacks\n8. Call DllMain(DLL_PROCESS_ATTACH)", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-reflective-dll-loading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553530Z", "transform_template": "implementation_steps_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553672Z", "updated_at": "2025-12-17T17:38:43.553672Z"} {"id": "trtp-4191662a8908", "instruction": "Explain DLL side-loading and why it's effective for defense evasion.", "output": "DLL side-loading pairs a legitimate, signed application with a malicious DLL: (1) Attacker identifies a signed application that loads a DLL by name (not full path), (2) They create a malicious DLL with the expected name and exports, (3) The signed EXE and malicious DLL are deployed together, (4) When the signed EXE runs, it loads the attacker's DLL. Defense evasion effectiveness: process appears to be legitimate signed software, some application whitelisting only checks the EXE signature not loaded DLLs, parent-child process relationships look normal, behavioral detection may have exceptions for known legitimate software, and the process runs with the privileges and access of the legitimate application. This is documented in numerous APT campaigns and is a favorite technique of sophisticated actors.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-sideloading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553684Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553695Z", "updated_at": "2025-12-17T17:38:43.553695Z"} {"id": "trtp-14cfbb49ed54", "instruction": "How can organizations defend against DLL side-loading attacks?", "output": "Defenses against DLL side-loading: (1) Application directory monitoring - alert on new DLLs appearing next to signed executables, especially in user-writable locations, (2) DLL integrity verification - beyond EXE signing, verify loaded DLL signatures or hashes, (3) Strict installation policies - applications should only run from protected directories (Program Files), not user-writable locations, (4) Module load monitoring - detect when signed applications load unsigned DLLs, (5) Behavioral analysis - even with legitimate process names, detect suspicious behaviors (network connections, child processes, file access), (6) DLL search order hardening - use LoadLibraryEx with restricted search paths, (7) Application manifests - use SxS to specify exact DLL dependencies, (8) Catalog files - include DLL hashes in signed catalogs. Monitor for known side-loading pairs from threat intelligence.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-sideloading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553684Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553702Z", "updated_at": "2025-12-17T17:38:43.553702Z"} {"id": "trtp-7303f206d114", "instruction": "Describe DLL Side-Loading and its purpose.", "output": "DLL side-loading exploits legitimate signed applications that load\n DLLs by name without verification. An attacker pairs a signed executable with a\n malicious DLL, achieving code execution that appears to come from a trusted application.\n The signed binary provides legitimacy while the DLL provides functionality. This\n is extensively used by APT groups and crimeware for defense evasion.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-sideloading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553684Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553712Z", "updated_at": "2025-12-17T17:38:43.553712Z"} {"id": "trtp-32546d8740c9", "instruction": "How does DLL Side-Loading relate to security?", "output": "Major defense evasion technique used by sophisticated threat actors", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-sideloading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553684Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553722Z", "updated_at": "2025-12-17T17:38:43.553722Z"} {"id": "trtp-a46bcf6a846d", "instruction": "What are the important aspects of DLL Side-Loading?", "output": "Key points about DLL Side-Loading:\n\n- Pairs legitimate signed EXE with malicious DLL\n- Signed binary provides process legitimacy\n- Bypasses some application whitelisting\n- Parent process appears legitimate\n- Common APT technique (documented in many campaigns)\n- Usually requires application directory access\n- May use DLL proxying to maintain functionality", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-sideloading", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553684Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553738Z", "updated_at": "2025-12-17T17:38:43.553738Z"} {"id": "trtp-6b82571f205b", "instruction": "How does DLL proxying enhance side-loading attacks?", "output": "DLL proxying enhances side-loading by maintaining full application functionality: (1) Create a proxy DLL with the same exports as the target, (2) Rename the original DLL (e.g., original.dll to original_real.dll), (3) Proxy DLL loads the renamed original and forwards all function calls to it, (4) Proxy executes malicious code during DllMain or specific intercepted functions, (5) Application continues working normally because all API calls succeed. Without proxying, side-loaded DLLs often cause application crashes (missing exports, wrong behavior), making the attack obvious. With proxying: the application functions normally (no crash = no investigation), the malware can intercept specific operations of interest, persistence survives because users continue running the 'working' application, and multiple infection opportunities exist (each DLL load, specific function calls).", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-proxying", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553752Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553762Z", "updated_at": "2025-12-17T17:38:43.553762Z"} {"id": "trtp-e502ad609380", "instruction": "What techniques are used to implement export forwarding in a proxy DLL?", "output": "Export forwarding techniques: (1) Linker pragma (compile-time): '#pragma comment(linker, \"/export:MessageBoxA=user32_orig.MessageBoxA\")' - creates PE export directory entry that directly forwards to another DLL, most elegant but requires knowing all exports at compile time. (2) DEF file forwarding: 'EXPORTS MessageBoxA=user32_orig.MessageBoxA' - same result as pragma. (3) Runtime forwarding: load original DLL with LoadLibrary, resolve each export with GetProcAddress, store function pointers, export functions that call through pointers - more flexible, allows intercepting specific calls. (4) Direct jump: export functions containing just 'jmp [original_addr]' - minimal overhead. (5) Wrapper functions: fully wrap each function call, allowing inspection/modification of arguments/returns. Each method has tradeoffs in complexity, stealth, and capability.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-proxying", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553752Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553773Z", "updated_at": "2025-12-17T17:38:43.553773Z"} {"id": "trtp-68b2151ab437", "instruction": "How does DLL Proxying/Forwarding work?", "output": "DLL proxying maintains application functionality while injecting\n malicious code. A proxy DLL exports the same functions as the legitimate DLL but\n forwards calls to the original. This allows side-loading without breaking the\n application. The proxy intercepts execution, runs malicious code, then delegates\n to the real DLL for expected functionality.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-proxying", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553752Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553794Z", "updated_at": "2025-12-17T17:38:43.553794Z"} {"id": "trtp-1bacdd164015", "instruction": "From a security perspective, why is understanding DLL Proxying/Forwarding important?", "output": "Enables stealthy DLL side-loading while maintaining application functionality", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-proxying", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553752Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553804Z", "updated_at": "2025-12-17T17:38:43.553804Z"} {"id": "trtp-46bbb81b7d82", "instruction": "What should I know about DLL Proxying/Forwarding?", "output": "Key points about DLL Proxying/Forwarding:\n\n- Proxy DLL exports same functions as original\n- Calls forward to renamed original DLL\n- Maintains application functionality\n- Enables side-loading without breaking features\n- Export forwarding can be done via linker pragma\n- Or runtime forwarding via GetProcAddress", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-dll-proxying", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553752Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553816Z", "updated_at": "2025-12-17T17:38:43.553816Z"} {"id": "trtp-49d7659b9c9d", "instruction": "Compare Linux shared object loading to Windows DLL loading.", "output": "Comparing SO and DLL loading: Format: Linux uses ELF with PT_DYNAMIC segment; Windows uses PE with import/export tables. Linker: Linux uses ld-linux.so (separate program); Windows loader is in ntdll.dll. Search order: Linux uses RPATH\u2192LD_LIBRARY_PATH\u2192RUNPATH\u2192cache\u2192defaults; Windows uses application dir\u2192system\u2192PATH. Preloading: Linux has LD_PRELOAD for library interposition; Windows equivalent is less standardized (AppInit_DLLs, shim engine). Initialization: Linux calls constructors (__attribute__((constructor))); Windows calls DllMain. Symbol resolution: Linux uses symbol tables with ELF hash; Windows uses export names/ordinals. Security: both have analogous attacks (LD_PRELOAD vs IAT hooks, library path hijacking), but implementation details differ significantly.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-linux-shared-objects", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553830Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553839Z", "updated_at": "2025-12-17T17:38:43.553839Z"} {"id": "trtp-c852ea99bb00", "instruction": "What security risks exist in the Linux shared library loading process?", "output": "Linux shared library security risks: (1) LD_PRELOAD injection - environment variable causes arbitrary library loading; mitigated for setuid but risky for regular processes. (2) Library path hijacking - if LD_LIBRARY_PATH or RPATH/RUNPATH includes writable directories, attackers can inject libraries. (3) ld.so.cache poisoning - if attacker can modify /etc/ld.so.cache (requires root), all applications can be affected. (4) Relative RPATH exploitation - binaries with relative RPATH like '$ORIGIN/../lib' may load from attacker-controlled directories. (5) Symbol interposition - libraries loaded earlier can override symbols in later ones. (6) Constructor exploitation - library constructors execute during load, before main(), providing early code execution. Mitigations: drop privileges before loading untrusted libraries, use absolute paths, set RUNPATH instead of RPATH, ignore LD_PRELOAD for privileged binaries.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-linux-shared-objects", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553830Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553846Z", "updated_at": "2025-12-17T17:38:43.553846Z"} {"id": "trtp-c383203fb6b8", "instruction": "Explain Linux Shared Object Loading in the context of Linux.", "output": "Linux loads shared objects (.so files) through the dynamic linker\n (ld-linux.so). The process involves: resolving library paths (rpath, LD_LIBRARY_PATH,\n /etc/ld.so.cache), mapping the ELF file, processing dynamic section, resolving\n symbols, applying relocations, and calling initialization functions. Understanding\n this process is important for Linux security and attack techniques like LD_PRELOAD.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-linux-shared-objects", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553830Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553857Z", "updated_at": "2025-12-17T17:38:43.553857Z"} {"id": "trtp-62adeae33565", "instruction": "Why is Linux Shared Object Loading security-relevant?", "output": "Foundation for understanding LD_PRELOAD attacks, library hijacking, and ELF security", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-linux-shared-objects", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553830Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553872Z", "updated_at": "2025-12-17T17:38:43.553872Z"} {"id": "trtp-e39933372eca", "instruction": "What are the key technical details of Linux Shared Object Loading?", "output": "Key points about Linux Shared Object Loading:\n\n- ld-linux.so (dynamic linker) handles loading\n- ELF format with PT_DYNAMIC segment\n- Library search: RPATH, LD_LIBRARY_PATH, ld.so.cache, defaults\n- Symbol resolution and relocation\n- Constructor functions (_init, __attribute__((constructor)))\n- LD_PRELOAD allows loading before other libraries\n- /proc/pid/maps shows loaded libraries", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-linux-shared-objects", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553830Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553884Z", "updated_at": "2025-12-17T17:38:43.553884Z"} {"id": "trtp-4329d02f18b1", "instruction": "What advantages does manual mapping provide over reflective loading?", "output": "Manual mapping advantages over standard reflective loading: (1) File reading control - can read the file using direct syscalls (NtReadFile), avoiding file operation monitoring that reflective loading (which works from memory) doesn't address, (2) Syscall-level evasion - entire loading process can use direct syscalls, bypassing ntdll hooks at every step, (3) Import resolution control - can use hash-based API resolution instead of GetProcAddress, avoiding API monitoring, (4) Memory allocation stealth - can allocate memory with syscalls, controlling flags and avoiding VirtualAlloc hooks, (5) No file handle requirements - once read, file can be closed immediately, reducing forensic traces. Manual mapping is essentially 'reflective loading from disk with full syscall evasion' - it combines the benefits of disk access (reading legitimate files) with syscall-level control.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-manual-mapping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553897Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553907Z", "updated_at": "2025-12-17T17:38:43.553907Z"} {"id": "trtp-d3c2f0f4dbb5", "instruction": "What are the challenges and detection opportunities for manual mapping?", "output": "Manual mapping challenges: (1) Complexity - must correctly implement PE/ELF parsing, import resolution, relocations, TLS, constructors, (2) Edge cases - handling forwarded exports, delay-load imports, bound imports, unusual section layouts, (3) Dependencies - manually loaded modules may need other modules, requiring recursive handling, (4) Compatibility - different OS versions may have different structures or behaviors, (5) Debugging - errors in manual loader cause hard-to-diagnose crashes. Detection opportunities: (1) Memory anomalies - executable private memory not backed by files, (2) Syscall patterns - sequences of NtAllocateVirtualMemory, NtProtectVirtualMemory, memory writes, (3) Missing from PEB - PE structures exist but no PEB->Ldr entry, (4) ETW/kernel telemetry - syscalls generate kernel events even if made directly, (5) Import resolution patterns - even hash-based resolution must call GetProcAddress eventually or access export tables.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-manual-mapping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553897Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553914Z", "updated_at": "2025-12-17T17:38:43.553914Z"} {"id": "trtp-f7494aa3a782", "instruction": "Describe Manual PE/ELF Mapping and its purpose.", "output": "Manual mapping loads executables without using the operating system's\n loader. On Windows, this means implementing PE loading without LoadLibrary; on Linux,\n loading ELF without dlopen. This provides complete control over the loading process\n and avoids loader-based monitoring. Often combined with syscall-based file reading\n to avoid all standard API monitoring.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-manual-mapping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553897Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553927Z", "updated_at": "2025-12-17T17:38:43.553927Z"} {"id": "trtp-d825b46f68ec", "instruction": "How does Manual PE/ELF Mapping relate to security?", "output": "Advanced evasion technique bypassing loader-based monitoring", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-manual-mapping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553897Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553936Z", "updated_at": "2025-12-17T17:38:43.553936Z"} {"id": "trtp-0e6e3315c506", "instruction": "What are the important aspects of Manual PE/ELF Mapping?", "output": "Key points about Manual PE/ELF Mapping:\n\n- Complete loader implementation in user code\n- Bypasses LoadLibrary/dlopen monitoring\n- Image doesn't appear in normal module lists\n- Must handle all PE/ELF structures\n- Can read file with direct syscalls\n- Often used with reflective loading\n- Complex to implement correctly", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-manual-mapping", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553897Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553956Z", "updated_at": "2025-12-17T17:38:43.553956Z"} {"id": "trtp-118e7aa39ed2", "instruction": "How does PEB module list unlinking hide loaded DLLs?", "output": "PEB module list unlinking hides DLLs from standard enumeration: (1) Locate PEB via NtCurrentPeb() or TEB->ProcessEnvironmentBlock, (2) Access PEB->Ldr->InLoadOrderModuleList (and other lists), (3) Find the LDR_DATA_TABLE_ENTRY for the module to hide, (4) Unlink from all three lists: update previous->Flink to point to next, update next->Blink to point to previous, (5) The module remains loaded and functional but is invisible to EnumProcessModules, CreateToolhelp32Snapshot, Process Explorer, etc. These APIs walk the PEB lists, so unlinking a module removes it from their view. The DLL code continues to execute normally since the unlink doesn't affect the memory mapping or functionality - it only affects the bookkeeping.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-peb-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553969Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553980Z", "updated_at": "2025-12-17T17:38:43.553980Z"} {"id": "trtp-1de871bddef9", "instruction": "How can security tools detect PEB module list manipulation?", "output": "Detecting PEB manipulation: (1) Memory scanning - scan process memory for MZ/PE signatures, compare found modules against PEB list; unlisted PE structures are suspicious, (2) VAD comparison - the kernel's Virtual Address Descriptor tree reflects all mappings regardless of PEB; compare VAD entries to PEB list, (3) Thread analysis - examine all thread start addresses; threads starting in memory not listed in PEB indicate hidden modules, (4) List integrity - verify list connectivity (all Flink->Blink should equal current entry), detect corruption from improper unlinking, (5) Import analysis - loaded modules' import tables reference other modules; verify all referenced modules are listed, (6) Kernel query - NtQueryVirtualMemory or kernel drivers can enumerate mappings independently of PEB. Sophisticated detection combines multiple approaches to find discrepancies.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-peb-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553969Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553986Z", "updated_at": "2025-12-17T17:38:43.553986Z"} {"id": "trtp-900827fdc599", "instruction": "Describe PEB Module List Manipulation and its purpose.", "output": "The Process Environment Block (PEB) contains a linked list of loaded\n modules (PEB->Ldr). Attackers manipulate this list to hide loaded modules from\n enumeration APIs (EnumProcessModules, toolhelp). Techniques include unlinking\n modules from the list or adding entries for reflectively loaded DLLs to appear\n legitimate. This is a form of DKOM (Direct Kernel Object Manipulation) in userland.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-peb-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553969Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.553997Z", "updated_at": "2025-12-17T17:38:43.553997Z"} {"id": "trtp-ec7820671e6d", "instruction": "What are the security implications of PEB Module List Manipulation?", "output": "Module hiding technique for rootkit-like behavior; detection of manipulation indicates compromise", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-peb-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553969Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554006Z", "updated_at": "2025-12-17T17:38:43.554006Z"} {"id": "trtp-803caaee2cb0", "instruction": "What should I know about PEB Module List Manipulation?", "output": "Key points about PEB Module List Manipulation:\n\n- PEB->Ldr contains InLoadOrderModuleList\n- Also InMemoryOrderModuleList and InInitializationOrderModuleList\n- EnumProcessModules walks these lists\n- Unlinking module hides it from enumeration\n- Can add entries for reflective DLLs\n- Lists are doubly linked - must update both directions\n- Does not affect functionality, only visibility", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-peb-manipulation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.553969Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554022Z", "updated_at": "2025-12-17T17:38:43.554022Z"} {"id": "trtp-229adff1c6f5", "instruction": "Why do malware authors use TLS callbacks and how can analysts handle them?", "output": "Malware uses TLS callbacks for: (1) Anti-debugging - callbacks execute before debugger's initial breakpoint, allowing detection/evasion code to run first, (2) Early execution - decrypt or unpack main payload before entry point analysis begins, (3) Multiple execution points - callbacks run on every thread creation, providing persistent hooks, (4) Obscurity - analysts focusing on DllMain/main miss TLS callback code. Analyst techniques: (1) Check PE for IMAGE_DIRECTORY_ENTRY_TLS - if present, examine callback array, (2) Set breakpoint on callback address before running, (3) x64dbg/IDA identify TLS callbacks automatically, (4) For anti-debug, use kernel debugger or modify callback code, (5) Dump and analyze callback functions separately, (6) Be aware callbacks can create threads, hook APIs, or modify memory before 'normal' analysis begins.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-tls-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554036Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554046Z", "updated_at": "2025-12-17T17:38:43.554046Z"} {"id": "trtp-6c4368ec9173", "instruction": "How do TLS callbacks integrate with the PE loading process?", "output": "TLS callback integration with PE loading: (1) Loader parses IMAGE_DIRECTORY_ENTRY_TLS (index 9 in data directory), (2) IMAGE_TLS_DIRECTORY structure contains AddressOfCallBacks pointer, (3) This points to a null-terminated array of callback function addresses, (4) During LdrpInitializeTls, the loader walks this array, (5) Each callback is invoked with (PVOID DllHandle, DWORD Reason, PVOID Reserved), (6) Callbacks execute BEFORE DllMain for PROCESS_ATTACH, (7) For threads, callbacks execute on each thread attach/detach, (8) TLS data (accessed via TlsGetValue equivalents) is initialized before callbacks run. The key security insight: callbacks provide code execution earlier than most analysts expect, before standard debugging breakpoints trigger, and they can completely change the process state before 'normal' execution begins.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-tls-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554036Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554059Z", "updated_at": "2025-12-17T17:38:43.554059Z"} {"id": "trtp-2178661bb822", "instruction": "How does TLS Callbacks in DLL Loading work?", "output": "Thread Local Storage (TLS) callbacks are functions executed before\n a DLL's entry point (DllMain). When a DLL with TLS callbacks is loaded or when\n new threads start in a process with such DLLs, the callbacks execute. Malware\n uses TLS callbacks for anti-debugging, early execution, and initialization.\n Legitimate uses include per-thread state initialization.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-tls-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554036Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554070Z", "updated_at": "2025-12-17T17:38:43.554070Z"} {"id": "trtp-eaf562e53524", "instruction": "Why is TLS Callbacks in DLL Loading security-relevant?", "output": "Anti-debugging technique; early execution before debugger control; must be monitored during malware analysis", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-tls-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554036Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554080Z", "updated_at": "2025-12-17T17:38:43.554080Z"} {"id": "trtp-e25f60392c30", "instruction": "Summarize the essential points about TLS Callbacks in DLL Loading.", "output": "Key points about TLS Callbacks in DLL Loading:\n\n- Execute before DllMain/main entry point\n- Called for DLL_PROCESS_ATTACH/DETACH, DLL_THREAD_ATTACH/DETACH\n- Can run code before debugger gains control\n- Located via IMAGE_TLS_DIRECTORY in PE\n- Array of function pointers terminated by NULL\n- Commonly used for anti-debugging\n- Execute in same context as DllMain", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-tls-callbacks", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554036Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554096Z", "updated_at": "2025-12-17T17:38:43.554096Z"} {"id": "trtp-f0bc188af7ad", "instruction": "How do delay-load DLLs work and what security implications do they have?", "output": "Delay-load DLL mechanism: (1) At compile time, imports are marked for delay loading, (2) The delay-load IAT initially contains stubs pointing to __delayLoadHelper2, (3) On first call to a delayed import, the stub calls the helper, (4) Helper uses LoadLibrary/GetProcAddress to load DLL and resolve the function, (5) IAT entry is updated to point directly to the resolved function, (6) Subsequent calls go directly to the function (no helper overhead). Security implications: (1) DLL load timing - malware can use delay-load to defer loading suspicious DLLs until needed, (2) Helper hooking - hooking __delayLoadHelper2 intercepts all delayed import resolution, (3) DLL hijacking window - delay-loading expands the window for DLL placement attacks, (4) Anti-analysis - delayed loading means some imports aren't visible until runtime, (5) Error handling - applications may handle missing delay-load DLLs gracefully, enabling optional malicious functionality.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-delay-load", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554113Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554123Z", "updated_at": "2025-12-17T17:38:43.554123Z"} {"id": "trtp-b6e4f71dc035", "instruction": "What is Delay-Load DLLs?", "output": "Delay-load DLLs are loaded on first use rather than at process startup.\n The PE delay-load directory contains information for deferred loading, and a helper\n function (typically provided by the CRT) handles loading and resolution when the\n imported function is first called. This has performance benefits and enables optional\n dependencies, but also security implications.", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-delay-load", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554113Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554134Z", "updated_at": "2025-12-17T17:38:43.554134Z"} {"id": "trtp-cedd3335c1d6", "instruction": "What are the security implications of Delay-Load DLLs?", "output": "Can be abused for delayed payload loading; helper function hooking enables persistent interception", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-delay-load", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554113Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554144Z", "updated_at": "2025-12-17T17:38:43.554144Z"} {"id": "trtp-ef4667f49884", "instruction": "Summarize the essential points about Delay-Load DLLs.", "output": "Key points about Delay-Load DLLs:\n\n- DLL loaded on first use of its exports\n- Implemented via delay-load import directory\n- Helper function resolves imports on demand\n- __delayLoadHelper2 in Microsoft CRT\n- Failed resolution can be handled gracefully\n- Reduces initial load time\n- Can be exploited if helper is hooked", "category": "dll_loading", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-dll_loading-delay-load", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554113Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554159Z", "updated_at": "2025-12-17T17:38:43.554159Z"} {"id": "trtp-9c1549219036", "instruction": "Explain named pipe security and the risks of impersonation.", "output": "Named pipe security concerns: (1) Impersonation - when a client connects, the server can call ImpersonateNamedPipeClient to assume the client's security context, executing code with the client's privileges. This enables privilege escalation if a higher-privileged process connects to a malicious pipe server. (2) DACL configuration - pipes have security descriptors; weak DACLs (everyone: read/write) allow unauthorized clients, potentially leaking sensitive data or accepting malicious input. (3) Pipe squatting - if an attacker creates a named pipe before the legitimate service, clients connect to the attacker who can steal credentials or data. (4) Network exposure - pipes over SMB extend trust boundaries, and connections may carry NTLM credentials. Defense: use strong DACLs, verify pipe server identity before connecting, never impersonate without validation, use PIPE_REJECT_REMOTE_CLIENTS flag.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-named-pipes", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554175Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554185Z", "updated_at": "2025-12-17T17:38:43.554185Z"} {"id": "trtp-6662dd280d2e", "instruction": "How are named pipes used in attack scenarios like token impersonation?", "output": "Named pipe token impersonation attacks: (1) Malicious pipe server - attacker creates a named pipe with an attractive or expected name, (2) Victim process connects - legitimate service or user process connects to the pipe (sometimes via path traversal, symbolic links, or social engineering), (3) Impersonation - attacker calls ImpersonateNamedPipeClient, gaining a token representing the victim's identity, (4) Privilege escalation - if victim is SYSTEM or admin, attacker gains those privileges. Common scenarios: (a) 'Potato' exploits - abuse Windows services that connect to arbitrary named pipes, (b) Abusing backup operators or other privileged service accounts, (c) PrintSpoofer/SpoolFool - coerce print spooler to connect. Mitigations: restrict which processes can impersonate, avoid connecting to untrusted pipes, implement pipe name validation.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-named-pipes", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554175Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554192Z", "updated_at": "2025-12-17T17:38:43.554192Z"} {"id": "trtp-c6192db2ab8c", "instruction": "What is Windows Named Pipes?", "output": "Named pipes are Windows IPC mechanisms that allow communication between\n processes on the same machine or over a network. They provide bidirectional, reliable,\n byte-stream or message-mode communication. Named pipes support security descriptors\n for access control and impersonation capabilities that are security-critical.\n Many Windows services and applications use named pipes for local and remote IPC.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-named-pipes", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554175Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554203Z", "updated_at": "2025-12-17T17:38:43.554203Z"} {"id": "trtp-8d4a1de7b764", "instruction": "How does Windows Named Pipes relate to security?", "output": "Common IPC for services; impersonation enables privilege escalation; hijacking enables data theft", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-named-pipes", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554175Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554212Z", "updated_at": "2025-12-17T17:38:43.554212Z"} {"id": "trtp-2f2aa6846b2a", "instruction": "What are the key technical details of Windows Named Pipes?", "output": "Key points about Windows Named Pipes:\n\n- Bidirectional reliable communication\n- Accessible via \\\\.\\pipe\\\n- Network accessible via \\\\server\\pipe\\\n- Support security descriptors (ACLs)\n- Server can impersonate client identity\n- CreateNamedPipe creates server end\n- CreateFile/CallNamedPipe for client connection", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-named-pipes", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554175Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554227Z", "updated_at": "2025-12-17T17:38:43.554227Z"} {"id": "trtp-e3cd02dbaad5", "instruction": "Describe Windows RPC security and common vulnerability patterns.", "output": "Windows RPC security model: RPC interfaces can define security via RpcServerRegisterIf2/3, including security callbacks that validate callers. Authentication uses NTLM/Kerberos via RPC_C_AUTHN_* constants. Common vulnerability patterns: (1) Missing authentication - interfaces with RPC_IF_ALLOW_UNKNOWN_AUTHORITY allow unauthenticated access, (2) Insufficient authorization - checking authentication but not specific caller identity, (3) Type confusion - IDL mismatches between client and server cause memory corruption, (4) Integer overflows - NDR marshaling handles complex structures where size calculations can overflow, (5) NULL pointer dereferences - servers not validating input pointers, (6) Path traversal - file path parameters not sanitized. Famous vulnerabilities: MS03-026 (DCOM/RPC buffer overflow), MS08-067 (Server service), MS17-010 (EternalBlue, SMB but RPC-related), PetitPotam (EFS RPC coercion).", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-rpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554244Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554258Z", "updated_at": "2025-12-17T17:38:43.554258Z"} {"id": "trtp-65bfd0c29f13", "instruction": "How do attackers enumerate and interact with RPC interfaces for reconnaissance?", "output": "RPC reconnaissance techniques: (1) Endpoint enumeration - query EPM (endpoint mapper) on port 135 using rpcdump, impacket, or RpcMgmtInqIfIds to list registered interfaces, (2) Interface identification - UUIDs identify known interfaces; compare against databases of known Windows RPC interfaces, (3) Binding enumeration - find which transports/ports each interface is available on, (4) Method discovery - IDL files or decompilation reveals available methods, (5) Authentication testing - attempt anonymous and authenticated connections to each interface, (6) Fuzzing - send malformed RPC requests to discover vulnerabilities. Tools: rpcclient, rpcdump.py, RpcView, WireShark RPC dissector. Attackers identify: unauthenticated interfaces, coercible interfaces (PetitPotam-style), interfaces with known vulnerabilities, and custom application interfaces that may have implementation flaws.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-rpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554244Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554265Z", "updated_at": "2025-12-17T17:38:43.554265Z"} {"id": "trtp-6a1c8cbddd52", "instruction": "How does Windows RPC/DCOM work?", "output": "Remote Procedure Call (RPC) and DCOM (Distributed COM) enable inter-process\n and inter-machine communication in Windows. RPC provides the transport layer for many\n Windows services and protocols. DCOM extends COM across network boundaries. Both have\n complex security models involving authentication, authorization, and impersonation,\n and have been sources of critical vulnerabilities.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-rpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554244Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554277Z", "updated_at": "2025-12-17T17:38:43.554277Z"} {"id": "trtp-5a0f30c59eed", "instruction": "How does Windows RPC/DCOM relate to security?", "output": "Core Windows IPC with history of vulnerabilities; impersonation and authentication critical", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-rpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554244Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554287Z", "updated_at": "2025-12-17T17:38:43.554287Z"} {"id": "trtp-fa563e313167", "instruction": "What are the important aspects of Windows RPC/DCOM?", "output": "Key points about Windows RPC/DCOM:\n\n- RPC enables remote procedure invocation\n- MSRPC is Microsoft's implementation\n- Uses NDR (Network Data Representation)\n- Endpoint mapper (EPM) on port 135\n- Authentication via NTLM/Kerberos\n- DCOM extends COM over network\n- IDL defines interface contracts", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-rpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554244Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554298Z", "updated_at": "2025-12-17T17:38:43.554298Z"} {"id": "trtp-b80df79c2f3e", "instruction": "What is ALPC and why is it security-relevant?", "output": "ALPC (Advanced Local Procedure Call) is Windows' modern kernel IPC mechanism, succeeding LPC starting in Vista. Security relevance: (1) Ubiquity - nearly all Windows IPC ultimately uses ALPC (RPC ncalrpc, COM local servers, CSRSS communication, Winlogon, etc.), (2) Kernel mediation - ALPC bugs are kernel vulnerabilities; many Windows LPE exploits target ALPC (CVE-2018-8120, CVE-2019-0863), (3) Impersonation - like named pipes, ALPC supports client impersonation, enabling privilege escalation attacks, (4) Complex semantics - views, handles, message attributes create attack surface, (5) Undocumented - no official API makes secure use difficult and bugs easy. Researchers have found vulnerabilities in: port security descriptors, handle passing, view mapping, and callback handling.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-alpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554311Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554320Z", "updated_at": "2025-12-17T17:38:43.554320Z"} {"id": "trtp-237bc6e75b46", "instruction": "How does ALPC relate to RPC and COM local communication?", "output": "ALPC underlies RPC and COM local transport: (1) RPC ncalrpc - 'local RPC' transport uses ALPC for message passing between client and server on the same machine. When you call an RPC interface with ncalrpc binding, the actual data exchange occurs via ALPC ports. (2) COM local servers - COM apartment activation, marshaling between processes, and object method invocation use ALPC when both processes are local. The COM runtime manages ALPC ports for inter-apartment calls. (3) System services - many Windows services (LSASS, Service Control Manager, User Profile Service) expose ALPC ports for communication. This layering means: ALPC security affects all higher layers, ALPC bugs impact RPC and COM, performance of ALPC affects all local IPC, and monitoring/debugging ALPC reveals RPC/COM activity at the lowest level.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-alpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554311Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554327Z", "updated_at": "2025-12-17T17:38:43.554327Z"} {"id": "trtp-16f9620365de", "instruction": "How does Advanced Local Procedure Call (ALPC) work?", "output": "ALPC (Advanced Local Procedure Call) is the modern Windows IPC mechanism\n that replaced LPC. It provides fast, kernel-facilitated message passing between processes\n on the same machine. ALPC is used by many Windows components including RPC (ncalrpc),\n COM, and system services. It supports synchronous and asynchronous messaging, views\n for zero-copy data transfer, and has a complex security model.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-alpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554311Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554341Z", "updated_at": "2025-12-17T17:38:43.554341Z"} {"id": "trtp-a27987b3b3bc", "instruction": "What are the security implications of Advanced Local Procedure Call (ALPC)?", "output": "Core kernel IPC; vulnerabilities are high-impact; understanding needed for Windows internals", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-alpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554311Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554351Z", "updated_at": "2025-12-17T17:38:43.554351Z"} {"id": "trtp-2fda95e6a384", "instruction": "Summarize the essential points about Advanced Local Procedure Call (ALPC).", "output": "Key points about Advanced Local Procedure Call (ALPC):\n\n- Kernel-mediated message passing\n- Replaced legacy LPC (Local Procedure Call)\n- Used by ncalrpc RPC transport\n- Supports views for shared memory regions\n- Connection and communication ports\n- Complex security and impersonation model\n- Not directly exposed in documented APIs", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-alpc", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554311Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554363Z", "updated_at": "2025-12-17T17:38:43.554363Z"} {"id": "trtp-a76558ffbc9a", "instruction": "What security risks exist with Windows shared memory sections?", "output": "Windows shared memory security risks: (1) Weak DACLs - sections created with NULL security descriptor or Everyone:Full access allow any process to read/write, potentially exposing sensitive data or allowing corruption. (2) Session isolation - objects in session-0 (services) vs user sessions have different namespaces; using Global\\ prefix crosses this boundary, expanding exposure. (3) Race conditions - shared memory without proper synchronization leads to TOCTOU vulnerabilities. (4) Residual data - pagefile-backed sections may persist sensitive data in the pagefile. (5) Name squatting - if attacker creates a named section before the legitimate creator, they control the content. (6) Enumeration - tools can list all named sections in the system namespace, identifying targets. Mitigations: use explicit security descriptors, prefer unnamed sections with handle inheritance, implement proper synchronization, clear sensitive data before unmapping.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554376Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554386Z", "updated_at": "2025-12-17T17:38:43.554386Z"} {"id": "trtp-8e6028d143e8", "instruction": "Describe Windows Shared Memory and its purpose.", "output": "Windows shared memory is implemented through file mappings (section objects).\n CreateFileMapping creates a pagefile-backed or file-backed section, and MapViewOfFile\n maps it into process address space. Multiple processes can map the same section for\n IPC. Section objects have security descriptors controlling access. Shared memory is\n fast but requires careful synchronization and security.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554376Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554401Z", "updated_at": "2025-12-17T17:38:43.554401Z"} {"id": "trtp-685349fa8900", "instruction": "What are the security implications of Windows Shared Memory?", "output": "Shared memory enables fast IPC but also data exposure if ACLs are weak", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554376Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554412Z", "updated_at": "2025-12-17T17:38:43.554412Z"} {"id": "trtp-895b6ab5bafa", "instruction": "What are the important aspects of Windows Shared Memory?", "output": "Key points about Windows Shared Memory:\n\n- Implemented via section objects\n- CreateFileMapping creates sections\n- MapViewOfFile maps into address space\n- Can be pagefile-backed or file-backed\n- Named sections accessible across processes\n- Global\\ prefix for session-0 visibility\n- Security descriptors control access", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554376Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554436Z", "updated_at": "2025-12-17T17:38:43.554436Z"} {"id": "trtp-a19b8337b769", "instruction": "How do Unix domain sockets provide security through credential verification?", "output": "Unix domain socket credential verification: (1) SO_PEERCRED - after connection, getsockopt with SO_PEERCRED retrieves struct ucred containing pid, uid, and gid of the connected peer. The kernel populates this, preventing forgery. (2) SCM_CREDENTIALS - ancillary message type for explicit credential passing; can be verified against SO_PEERCRED for consistency. (3) Filesystem permissions - the socket path has regular Unix permissions; only processes with appropriate access can connect. Security benefits: server can verify client identity before processing requests (authorization), credential passing is kernel-validated (authentication), filesystem permissions provide coarse access control. Example: systemd uses Unix sockets with SO_PEERCRED to verify that control messages come from authorized users/processes.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-unix-sockets", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554450Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554464Z", "updated_at": "2025-12-17T17:38:43.554464Z"} {"id": "trtp-c07de0d33e84", "instruction": "Explain file descriptor passing over Unix sockets and its security implications.", "output": "File descriptor passing via SCM_RIGHTS: (1) Mechanism - sendmsg with ancillary data of type SCM_RIGHTS carries file descriptors to the receiver; recvmsg retrieves them as new fds in the receiving process. (2) Kernel involvement - the kernel translates fds during transfer, so descriptors remain valid across process boundaries. Security implications: (1) Privilege delegation - a privileged process can open a protected file and pass the fd to an unprivileged process, granting access without exposing credentials, (2) Capability-based security - passing fds implements capability patterns; access is through possession of fd, not identity checks, (3) Race-free file access - opener verifies path, receiver uses exact opened file (no TOCTOU), (4) Sandbox escape risk - if a sandboxed process can receive fds, it may gain access to resources outside its sandbox. Used by: systemd socket activation, X11, Wayland, container runtimes.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-unix-sockets", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554450Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554477Z", "updated_at": "2025-12-17T17:38:43.554477Z"} {"id": "trtp-9b510a0e5850", "instruction": "How does Unix Domain Sockets work?", "output": "Unix domain sockets provide IPC on Unix-like systems using the socket\n API but without network overhead. They use filesystem paths (or abstract namespace on\n Linux) as addresses and support stream (SOCK_STREAM) and datagram (SOCK_DGRAM) modes.\n Unix sockets can pass file descriptors between processes (SCM_RIGHTS) and obtain peer\n credentials (SO_PEERCRED), providing unique security capabilities.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-unix-sockets", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554450Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554492Z", "updated_at": "2025-12-17T17:38:43.554492Z"} {"id": "trtp-7b03a3c3607a", "instruction": "How does Unix Domain Sockets relate to security?", "output": "Common IPC mechanism; file permissions for access control; credential verification capability", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-unix-sockets", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554450Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554502Z", "updated_at": "2025-12-17T17:38:43.554502Z"} {"id": "trtp-c1f29b8daf2b", "instruction": "What are the important aspects of Unix Domain Sockets?", "output": "Key points about Unix Domain Sockets:\n\n- Socket API without network overhead\n- Address is filesystem path or abstract (Linux)\n- Permissions via filesystem (path-based)\n- Can pass file descriptors (SCM_RIGHTS)\n- Can get peer credentials (SO_PEERCRED)\n- SOCK_STREAM for connection-oriented\n- SOCK_DGRAM for connectionless", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-unix-sockets", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554450Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554513Z", "updated_at": "2025-12-17T17:38:43.554513Z"} {"id": "trtp-77ff2a5da7de", "instruction": "Compare Linux shared memory mechanisms from a security perspective.", "output": "Linux shared memory security comparison: (1) POSIX shm (shm_open) - creates files in /dev/shm with standard Unix permissions; names are visible via filesystem; entries persist until explicitly unlinked; access controlled by file permissions. (2) System V (shmget) - uses numeric keys, not paths; permissions set at creation; persists across process lifetime until explicit removal; ipcs command lists all segments (visibility risk). (3) memfd (memfd_create) - no filesystem path, accessed only via fd; can be passed via Unix sockets or inherited; can be sealed (F_SEAL_*) to prevent modifications; MFD_CLOEXEC prevents inheritance. Security notes: memfd is most secure for sensitive data (no filesystem exposure), but is also used by malware for fileless execution (anonymous executable memory). System V segments often have weak default permissions. All require proper synchronization to prevent race conditions.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-linux-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554527Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554541Z", "updated_at": "2025-12-17T17:38:43.554541Z"} {"id": "trtp-821d7ec17feb", "instruction": "How is memfd_create used maliciously for fileless execution?", "output": "memfd_create fileless execution technique: (1) Create anonymous memory file: fd = memfd_create('', MFD_CLOEXEC), (2) Write executable content: write(fd, elf_payload, size), (3) Execute from /proc/self/fd: use fexecve(fd, argv, envp) or execve('/proc/self/fd/N', ...), (4) The executable runs from memory with no file on disk. Advantages for malware: evades file-based scanning (no file to scan), no disk artifacts for forensics, works in read-only or monitored filesystems, the fd can be passed between processes. Detection: monitor memfd_create syscalls (especially followed by fexecve), check /proc/*/fd/ for memfd entries (symlink shows 'memfd:'), track executable memory mappings without backing files, behavioral detection of the create\u2192write\u2192exec pattern. This technique is used by various Linux malware and penetration testing tools.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-linux-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554527Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554549Z", "updated_at": "2025-12-17T17:38:43.554549Z"} {"id": "trtp-bac3f2bd774b", "instruction": "Explain Linux Shared Memory in the context of Linux.", "output": "Linux provides multiple shared memory mechanisms: POSIX shared memory\n (shm_open/mmap), System V shared memory (shmget/shmat), and memfd (memfd_create/mmap).\n Each has different characteristics for naming, persistence, and security. Shared memory\n provides the fastest IPC but requires careful synchronization and access control.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-linux-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554527Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554560Z", "updated_at": "2025-12-17T17:38:43.554560Z"} {"id": "trtp-faebf0c54775", "instruction": "From a security perspective, why is understanding Linux Shared Memory important?", "output": "Fast IPC but exposes data if permissions wrong; memfd used by malware for fileless execution", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-linux-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554527Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554569Z", "updated_at": "2025-12-17T17:38:43.554569Z"} {"id": "trtp-a7b9f326147d", "instruction": "What are the key technical details of Linux Shared Memory?", "output": "Key points about Linux Shared Memory:\n\n- POSIX shm: shm_open creates /dev/shm/\n- System V: shmget/shmat with numeric keys\n- memfd: anonymous memory-only file descriptor\n- All ultimately use mmap for access\n- Persistence varies by mechanism\n- Access control via permissions/owner", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-linux-shared-memory", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554527Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554581Z", "updated_at": "2025-12-17T17:38:43.554581Z"} {"id": "trtp-d080c1b0638c", "instruction": "How can D-Bus policy misconfigurations lead to privilege escalation?", "output": "D-Bus privilege escalation via misconfiguration: (1) Overly permissive bus policies - if /etc/dbus-1/system.d/ policies allow 'any user' to call privileged methods, unprivileged users can invoke them, (2) Missing Polkit checks - methods that should require authorization but call without polkit_authority_check_authorization, (3) Exposed debug interfaces - development/debug methods accidentally left accessible, (4) Path traversal in handlers - methods accepting file paths without sanitization, (5) Type confusion - D-Bus type system mismatches causing memory corruption. Example attack: (a) Enumerate system bus services: dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames, (b) Introspect interesting services for methods, (c) Find methods callable without authentication, (d) Exploit functionality (file read/write, command execution). Tools: D-Feet, busctl, dbus-send.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-dbus", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554593Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554602Z", "updated_at": "2025-12-17T17:38:43.554602Z"} {"id": "trtp-c0365dd8aca9", "instruction": "How does D-Bus integrate with systemd and what security considerations apply?", "output": "D-Bus and systemd integration: (1) Socket activation - systemd can start services on-demand when D-Bus messages arrive, (2) systemd1 interface - systemd itself is controlled via D-Bus (org.freedesktop.systemd1), enabling unit management, (3) Journal access - journal entries accessible via D-Bus, (4) Login session management - systemd-logind exposes session control via D-Bus. Security considerations: (a) systemd1 interface is highly privileged - policy must restrict who can start/stop units, (b) Polkit policies control operations like Shutdown, Suspend - misconfiguration allows unprivileged users to invoke, (c) User units can register D-Bus services visible to session bus, (d) Container escapes may target D-Bus forwarding configurations. Hardening: review /etc/dbus-1/system.d/ policies, verify Polkit rules in /etc/polkit-1/, monitor system bus for unusual connections, restrict network access to D-Bus daemon.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-dbus", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554593Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554609Z", "updated_at": "2025-12-17T17:38:43.554609Z"} {"id": "trtp-19b56da79375", "instruction": "Describe D-Bus Inter-Process Communication and its purpose.", "output": "D-Bus is a message bus system for IPC on Linux desktops and systemd.\n It provides a system bus (system-wide services) and session bus (per-user). D-Bus\n enables service activation, signal broadcasting, and method invocation between\n applications. Security is handled through policy files that define which connections\n can access which interfaces and methods.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-dbus", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554593Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554624Z", "updated_at": "2025-12-17T17:38:43.554624Z"} {"id": "trtp-d0ec6f4cbfec", "instruction": "How does D-Bus Inter-Process Communication relate to security?", "output": "System bus exposes privileged operations; policy misconfigurations enable privilege escalation", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-dbus", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554593Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554633Z", "updated_at": "2025-12-17T17:38:43.554633Z"} {"id": "trtp-2416d1df9a68", "instruction": "Summarize the essential points about D-Bus Inter-Process Communication.", "output": "Key points about D-Bus Inter-Process Communication:\n\n- Message bus for desktop and systemd IPC\n- System bus: system-wide services (as root)\n- Session bus: per-user applications\n- Bus names (e.g., org.freedesktop.NetworkManager)\n- Object paths, interfaces, methods, signals\n- Policy files control access (/etc/dbus-1/)\n- Polkit integration for privilege checks", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-dbus", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554593Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554645Z", "updated_at": "2025-12-17T17:38:43.554645Z"} {"id": "trtp-39e5896ed543", "instruction": "What are the security implications of Windows mailslots?", "output": "Windows mailslot security implications: (1) Broadcast enumeration - mailslots support domain-wide broadcast via \\\\*\\mailslot\\name; any domain machine can send, potentially used for network discovery or as covert channel, (2) No authentication - mailslots don't verify sender identity; server must treat all messages as untrusted, (3) Denial of service - flooding mailslots is trivial due to no rate limiting, (4) Information disclosure - messages are sent in clear; no built-in encryption, (5) Limited attack surface - unreliability and one-way nature limit usefulness for complex attacks, (6) Legacy vector - old malware like Conficker used mailslots for peer communication. Modern use is minimal; named pipes or sockets are preferred. Security teams should monitor for unexpected mailslot creation or network mailslot traffic as it may indicate legacy malware or covert communication.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-mailslots", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554658Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554668Z", "updated_at": "2025-12-17T17:38:43.554668Z"} {"id": "trtp-47efa94e6b0a", "instruction": "How does Windows Mailslots work?", "output": "Mailslots are Windows IPC mechanisms providing one-way, unreliable\n message passing. A server creates a mailslot and clients send messages to it.\n Messages may be lost and delivery is not guaranteed, making mailslots suitable\n only for broadcast/notification patterns. They're simpler than named pipes but\n with significant limitations.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-mailslots", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554658Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554683Z", "updated_at": "2025-12-17T17:38:43.554683Z"} {"id": "trtp-93a72118f47f", "instruction": "Why is Windows Mailslots security-relevant?", "output": "Limited use in modern Windows; broadcast capability can be abused for information disclosure", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-mailslots", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554658Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554693Z", "updated_at": "2025-12-17T17:38:43.554693Z"} {"id": "trtp-3d73799690f6", "instruction": "What are the key technical details of Windows Mailslots?", "output": "Key points about Windows Mailslots:\n\n- One-way communication (client to server)\n- Unreliable - messages may be lost\n- Broadcast capable (domain-wide)\n- Maximum message size limitations\n- Simpler than named pipes\n- Path: \\\\.\\mailslot\\\n- Used by some legacy Windows services", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-windows-mailslots", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554658Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554705Z", "updated_at": "2025-12-17T17:38:43.554705Z"} {"id": "trtp-672b2ac243b0", "instruction": "Explain the Potato-family of exploits and how they abuse IPC impersonation.", "output": "Potato exploits abuse Windows IPC impersonation for privilege escalation: (1) Core concept - SYSTEM-level processes (services) often connect to local IPC servers; if attacker controls the server, they can impersonate the client. (2) Hot Potato (2016) - NBNS spoofing + WPAD + NTLM relay to local named pipe. (3) Rotten Potato - abused COM unmarshaling; SYSTEM COM process connects to attacker's pipe. (4) Juicy Potato - DCOM activation with controlled CLSID; various SYSTEM services connect to attacker. (5) Sweet Potato - combines multiple vectors (PrintSpoofer, EfsPotato). (6) PrintSpoofer - abuses print spooler pipe impersonation. Pattern: (a) Attacker runs with SeImpersonatePrivilege (e.g., service account), (b) Creates named pipe or COM server, (c) Triggers SYSTEM process to connect, (d) Calls ImpersonateNamedPipeClient, (e) Now running as SYSTEM. Mitigations: remove SeImpersonatePrivilege where not needed, patch vulnerable coercion paths, monitor for suspicious pipe creation.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-impersonation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554724Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554738Z", "updated_at": "2025-12-17T17:38:43.554738Z"} {"id": "trtp-8689b289f688", "instruction": "What defenses exist against IPC impersonation attacks?", "output": "Defenses against IPC impersonation attacks: (1) Privilege removal - remove SeImpersonatePrivilege and SeAssignPrimaryTokenPrivilege from service accounts that don't need them; this blocks the impersonation call itself. (2) Pipe security - when connecting to pipes, use SECURITY_ANONYMOUS or SECURITY_IDENTIFICATION impersonation levels to prevent full impersonation. (3) Coercion blocking - patch or disable coercible services (print spooler, EFS, etc.) on systems where they're not needed. (4) Network segmentation - coercion attacks often require SMB or RPC access; restrict network access to reduce attack paths. (5) Credential Guard - reduces value of impersonated tokens by protecting secrets. (6) Monitoring - detect pipe creation by suspicious processes, monitor for impersonation API calls (ImpersonateNamedPipeClient, NtSetInformationToken), alert on SYSTEM token appearing in non-SYSTEM processes. (7) Application hardening - applications connecting to pipes should specify minimum impersonation levels.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-impersonation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554724Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554745Z", "updated_at": "2025-12-17T17:38:43.554745Z"} {"id": "trtp-237fb01ba37f", "instruction": "How does IPC Impersonation Attacks work?", "output": "Many Windows IPC mechanisms support impersonation, where a server can\n assume the client's security context. This is designed for delegation but can be\n abused for privilege escalation. If a privileged process connects to a malicious\n server, the server can impersonate its privileges. 'Potato' exploits and similar\n attacks abuse these IPC impersonation capabilities.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-impersonation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554724Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554760Z", "updated_at": "2025-12-17T17:38:43.554760Z"} {"id": "trtp-6b6169fcc17c", "instruction": "What are the security implications of IPC Impersonation Attacks?", "output": "Fundamental privilege escalation technique on Windows; understanding needed for defense", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-impersonation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554724Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554770Z", "updated_at": "2025-12-17T17:38:43.554770Z"} {"id": "trtp-88ea6d018a69", "instruction": "What are the important aspects of IPC Impersonation Attacks?", "output": "Key points about IPC Impersonation Attacks:\n\n- Named pipes: ImpersonateNamedPipeClient\n- RPC: RpcImpersonateClient\n- COM: CoImpersonateClient\n- ALPC: NtAlpcImpersonateClientOfPort\n- Token obtained has client's privileges\n- SeImpersonatePrivilege required\n- SYSTEM processes often have this privilege", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-impersonation", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554724Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554781Z", "updated_at": "2025-12-17T17:38:43.554781Z"} {"id": "trtp-60d437e8a16e", "instruction": "How can COM be abused for process injection without traditional memory manipulation?", "output": "COM-based injection techniques: (1) In-process COM - CoCreateInstance with CLSCTX_INPROC_SERVER in target process loads a DLL; if attacker can influence COM registration (registry), they control the loaded code. (2) Custom marshaling - COM objects with IMarshal can execute custom code during unmarshaling in the receiving process. (3) Out-of-proc server coercion - activate COM server that loads in target process context. (4) DLL side-loading via COM - register malicious DLL as COM server for class expected by legitimate application. Detection challenges: appears as normal COM activity (CoCreateInstance), no VirtualAllocEx/WriteProcessMemory patterns, legitimate processes often use COM extensively creating noise. Defense: monitor COM registration changes (registry), verify COM DLL signatures, detect unusual COM class instantiation patterns, use DCOM hardening settings.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554804Z", "updated_at": "2025-12-17T17:38:43.554804Z"} {"id": "trtp-805924dd96bf", "instruction": "What role does WMI play in IPC-based attacks?", "output": "WMI in IPC-based attacks: (1) Remote execution - wmic or Invoke-WmiMethod can execute commands on remote systems via RPC/DCOM; commonly used for lateral movement. (2) Provider loading - WMI providers are DLLs loaded into WMI service (WmiPrvSE.exe); registering malicious providers achieves code execution in a privileged process. (3) Event subscription persistence - WMI EventConsumer can execute code when events occur; CommandLineEventConsumer runs arbitrary commands. (4) Process creation - Win32_Process.Create() spawns processes remotely. Security implications: WMI runs as SYSTEM, accepts remote connections, has persistent storage (repository), and is often trusted by security tools. Detection: monitor WMI process creation events (4688 with WmiPrvSE parent), check for unusual provider registration, audit event subscriptions (stored in OBJECTS.DATA), monitor network WMI traffic. Hardening: restrict remote WMI access, disable unnecessary providers, monitor subscription creation.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554814Z", "updated_at": "2025-12-17T17:38:43.554814Z"} {"id": "trtp-0f643a5af90f", "instruction": "Explain IPC-Based Process Injection in the context of Windows and Linux.", "output": "IPC mechanisms can be leveraged for process injection beyond traditional\n memory allocation techniques. This includes injecting through named pipes,\n COM object activation, D-Bus activation, and other IPC that triggers code\n execution in target processes. These techniques may evade detection focused\n on VirtualAllocEx/WriteProcessMemory patterns.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554827Z", "updated_at": "2025-12-17T17:38:43.554827Z"} {"id": "trtp-5402aff66c1c", "instruction": "From a security perspective, why is understanding IPC-Based Process Injection important?", "output": "Alternative injection vectors that may bypass traditional detection", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554838Z", "updated_at": "2025-12-17T17:38:43.554838Z"} {"id": "trtp-d33dccfa3c5d", "instruction": "What are the important aspects of IPC-Based Process Injection?", "output": "Key points about IPC-Based Process Injection:\n\n- IPC triggers code execution in target\n- Avoids direct memory manipulation APIs\n- COM object instantiation creates remote threads\n- Named pipes can transport and trigger payloads\n- D-Bus activation starts processes with parameters\n- Less common means less detection coverage", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554849Z", "updated_at": "2025-12-17T17:38:43.554849Z"} {"id": "trtp-396342f0071a", "instruction": "What techniques are used for IPC-Based Process Injection?", "output": "Techniques for IPC-Based Process Injection:\n\n**Com Injection**: Instantiate COM object in target, method execution\n\n**Dcom Lateral**: Remote COM activation on network target\n\n**Dbus Activation**: Start applications with controlled arguments\n\n**Wmi Provider**: WMI provider loading in target process", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-ipc-injection", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554794Z", "transform_template": "techniques_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554864Z", "updated_at": "2025-12-17T17:38:43.554864Z"} {"id": "trtp-a16c5d2d3a73", "instruction": "What are the key security principles for designing IPC servers?", "output": "IPC server security principles: (1) Authentication - verify client identity; on Windows use GetNamedPipeClientProcessId, on Linux use SO_PEERCRED; don't trust client-supplied identity claims. (2) Authorization - after authenticating, verify the client is allowed to perform the requested operation; implement per-method ACLs if needed. (3) Minimal permissions - create IPC endpoints with restrictive DACLs/permissions; only grant access to intended clients. (4) Input validation - treat all IPC input as untrusted; validate types, lengths, ranges before use; assume clients are malicious. (5) Impersonation caution - avoid impersonating clients unless absolutely necessary; if required, drop to minimum needed level. (6) Resource limits - protect against DoS by limiting per-client message rates, connection counts, memory allocation. (7) Secure error handling - don't leak information in error messages; log failures for monitoring.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-secure-ipc-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554875Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554886Z", "updated_at": "2025-12-17T17:38:43.554886Z"} {"id": "trtp-b99a27df4720", "instruction": "How should IPC clients protect against malicious servers?", "output": "IPC client security practices: (1) Server verification - before connecting, verify server identity if possible (process path, signature); on named pipes, beware of pipe squatting where attacker creates pipe first. (2) Impersonation level - on Windows, specify lowest acceptable level (SECURITY_ANONYMOUS or SECURITY_IDENTIFICATION) when connecting to prevent server impersonation of your identity. (3) Input validation - validate all data received from server; never trust server responses to be well-formed or honest. (4) Connection handling - implement timeouts; don't block forever waiting for malicious server; handle connection failures without crashes. (5) Sensitive data - minimize what you send; consider encryption for sensitive payloads; don't send credentials unless server is verified. (6) Race conditions - be aware of TOCTOU; server identity verified at connect time may change. (7) Fail securely - if any verification fails, disconnect and don't retry to same endpoint.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-secure-ipc-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554875Z", "transform_template": "embedded_qa_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554893Z", "updated_at": "2025-12-17T17:38:43.554893Z"} {"id": "trtp-d626fd08b12b", "instruction": "What is Secure IPC Design Patterns?", "output": "Secure IPC requires proper authentication, authorization, and data\n protection. Patterns include: verifying peer identity before processing, using\n minimal permissions, encrypting sensitive data, handling errors safely, and\n avoiding common vulnerabilities like TOCTOU races. Both server and client roles\n have security responsibilities.", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-secure-ipc-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554875Z", "transform_template": "explain_concept_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554909Z", "updated_at": "2025-12-17T17:38:43.554909Z"} {"id": "trtp-4c238b0c2cf9", "instruction": "How does Secure IPC Design Patterns relate to security?", "output": "Foundational patterns for building secure inter-process communication", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-secure-ipc-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554875Z", "transform_template": "security_relevance_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554920Z", "updated_at": "2025-12-17T17:38:43.554920Z"} {"id": "trtp-8a8574570a3b", "instruction": "Summarize the essential points about Secure IPC Design Patterns.", "output": "Key points about Secure IPC Design Patterns:\n\n- Verify peer identity before processing\n- Apply principle of least privilege\n- Use secure defaults (deny by default)\n- Validate all input from IPC\n- Encrypt sensitive data in transit\n- Handle errors without information leak\n- Consider authentication and authorization separately", "category": "inter_process_communication", "team": "foundation", "phase": "2b", "provenance": {"source_type": "documentation", "source_id": "systems-programming-ipc-secure-ipc-patterns", "license": "original", "retrieved_at": "2025-12-17T17:38:43.554875Z", "transform_template": "key_points_v1", "transform_version": "1.0.0"}, "quality": {"auto_score": null, "human_reviewed": false, "human_decision": null, "flags": []}, "created_at": "2025-12-17T17:38:43.554936Z", "updated_at": "2025-12-17T17:38:43.554936Z"}