memory-forensics

安装量: 3.2K
排名: #682

安装

npx skills add https://github.com/wshobson/agents --skill memory-forensics

Memory Forensics

Comprehensive techniques for acquiring, analyzing, and extracting artifacts from memory dumps for incident response and malware analysis.

Memory Acquisition Live Acquisition Tools Windows

WinPmem (Recommended)

winpmem_mini_x64.exe memory.raw

DumpIt

DumpIt.exe

Belkasoft RAM Capturer

GUI-based, outputs raw format

Magnet RAM Capture

GUI-based, outputs raw format

Linux

LiME (Linux Memory Extractor)

sudo insmod lime.ko "path=/tmp/memory.lime format=lime"

/dev/mem (limited, requires permissions)

sudo dd if=/dev/mem of=memory.raw bs=1M

/proc/kcore (ELF format)

sudo cp /proc/kcore memory.elf

macOS

osxpmem

sudo ./osxpmem -o memory.raw

MacQuisition (commercial)

Virtual Machine Memory

VMware: .vmem file is raw memory

cp vm.vmem memory.raw

VirtualBox: Use debug console

vboxmanage debugvm "VMName" dumpvmcore --filename memory.elf

QEMU

virsh dump memory.raw --memory-only

Hyper-V

Checkpoint contains memory state

Volatility 3 Framework Installation and Setup

Install Volatility 3

pip install volatility3

Install symbol tables (Windows)

Download from https://downloads.volatilityfoundation.org/volatility3/symbols/

Basic usage

vol -f memory.raw

With symbol path

vol -f memory.raw -s /path/to/symbols windows.pslist

Essential Plugins Process Analysis

List processes

vol -f memory.raw windows.pslist

Process tree (parent-child relationships)

vol -f memory.raw windows.pstree

Hidden process detection

vol -f memory.raw windows.psscan

Process memory dumps

vol -f memory.raw windows.memmap --pid --dump

Process environment variables

vol -f memory.raw windows.envars --pid

Command line arguments

vol -f memory.raw windows.cmdline

Network Analysis

Network connections

vol -f memory.raw windows.netscan

Network connection state

vol -f memory.raw windows.netstat

DLL and Module Analysis

Loaded DLLs per process

vol -f memory.raw windows.dlllist --pid

Find hidden/injected DLLs

vol -f memory.raw windows.ldrmodules

Kernel modules

vol -f memory.raw windows.modules

Module dumps

vol -f memory.raw windows.moddump --pid

Memory Injection Detection

Detect code injection

vol -f memory.raw windows.malfind

VAD (Virtual Address Descriptor) analysis

vol -f memory.raw windows.vadinfo --pid

Dump suspicious memory regions

vol -f memory.raw windows.vadyarascan --yara-rules rules.yar

Registry Analysis

List registry hives

vol -f memory.raw windows.registry.hivelist

Print registry key

vol -f memory.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"

Dump registry hive

vol -f memory.raw windows.registry.hivescan --dump

File System Artifacts

Scan for file objects

vol -f memory.raw windows.filescan

Dump files from memory

vol -f memory.raw windows.dumpfiles --pid

MFT analysis

vol -f memory.raw windows.mftscan

Linux Analysis

Process listing

vol -f memory.raw linux.pslist

Process tree

vol -f memory.raw linux.pstree

Bash history

vol -f memory.raw linux.bash

Network connections

vol -f memory.raw linux.sockstat

Loaded kernel modules

vol -f memory.raw linux.lsmod

Mount points

vol -f memory.raw linux.mount

Environment variables

vol -f memory.raw linux.envars

macOS Analysis

Process listing

vol -f memory.raw mac.pslist

Process tree

vol -f memory.raw mac.pstree

Network connections

vol -f memory.raw mac.netstat

Kernel extensions

vol -f memory.raw mac.lsmod

Analysis Workflows Malware Analysis Workflow

1. Initial process survey

vol -f memory.raw windows.pstree > processes.txt vol -f memory.raw windows.pslist > pslist.txt

2. Network connections

vol -f memory.raw windows.netscan > network.txt

3. Detect injection

vol -f memory.raw windows.malfind > malfind.txt

4. Analyze suspicious processes

vol -f memory.raw windows.dlllist --pid vol -f memory.raw windows.handles --pid

5. Dump suspicious executables

vol -f memory.raw windows.pslist --pid --dump

6. Extract strings from dumps

strings -a pid..exe > strings.txt

7. YARA scanning

vol -f memory.raw windows.yarascan --yara-rules malware.yar

Incident Response Workflow

1. Timeline of events

vol -f memory.raw windows.timeliner > timeline.csv

2. User activity

vol -f memory.raw windows.cmdline vol -f memory.raw windows.consoles

3. Persistence mechanisms

vol -f memory.raw windows.registry.printkey \ --key "Software\Microsoft\Windows\CurrentVersion\Run"

4. Services

vol -f memory.raw windows.svcscan

5. Scheduled tasks

vol -f memory.raw windows.scheduled_tasks

6. Recent files

vol -f memory.raw windows.filescan | grep -i "recent"

Data Structures Windows Process Structures // EPROCESS (Executive Process) typedef struct _EPROCESS { KPROCESS Pcb; // Kernel process block EX_PUSH_LOCK ProcessLock; LARGE_INTEGER CreateTime; LARGE_INTEGER ExitTime; // ... LIST_ENTRY ActiveProcessLinks; // Doubly-linked list ULONG_PTR UniqueProcessId; // PID // ... PEB* Peb; // Process Environment Block // ... } EPROCESS;

// PEB (Process Environment Block) typedef struct _PEB { BOOLEAN InheritedAddressSpace; BOOLEAN ReadImageFileExecOptions; BOOLEAN BeingDebugged; // Anti-debug check // ... PVOID ImageBaseAddress; // Base address of executable PPEB_LDR_DATA Ldr; // Loader data (DLL list) PRTL_USER_PROCESS_PARAMETERS ProcessParameters; // ... } PEB;

VAD (Virtual Address Descriptor) typedef struct _MMVAD { MMVAD_SHORT Core; union { ULONG LongFlags; MMVAD_FLAGS VadFlags; } u; // ... PVOID FirstPrototypePte; PVOID LastContiguousPte; // ... PFILE_OBJECT FileObject; } MMVAD;

// Memory protection flags

define PAGE_EXECUTE 0x10

define PAGE_EXECUTE_READ 0x20

define PAGE_EXECUTE_READWRITE 0x40

define PAGE_EXECUTE_WRITECOPY 0x80

Detection Patterns Process Injection Indicators

Malfind indicators

- PAGE_EXECUTE_READWRITE protection (suspicious)

- MZ header in non-image VAD region

- Shellcode patterns at allocation start

Common injection techniques

1. Classic DLL Injection

- VirtualAllocEx + WriteProcessMemory + CreateRemoteThread

2. Process Hollowing

- CreateProcess (SUSPENDED) + NtUnmapViewOfSection + WriteProcessMemory

3. APC Injection

- QueueUserAPC targeting alertable threads

4. Thread Execution Hijacking

- SuspendThread + SetThreadContext + ResumeThread

Rootkit Detection

Compare process lists

vol -f memory.raw windows.pslist > pslist.txt vol -f memory.raw windows.psscan > psscan.txt diff pslist.txt psscan.txt # Hidden processes

Check for DKOM (Direct Kernel Object Manipulation)

vol -f memory.raw windows.callbacks

Detect hooked functions

vol -f memory.raw windows.ssdt # System Service Descriptor Table

Driver analysis

vol -f memory.raw windows.driverscan vol -f memory.raw windows.driverirp

Credential Extraction

Dump hashes (requires hivelist first)

vol -f memory.raw windows.hashdump

LSA secrets

vol -f memory.raw windows.lsadump

Cached domain credentials

vol -f memory.raw windows.cachedump

Mimikatz-style extraction

Requires specific plugins/tools

YARA Integration Writing Memory YARA Rules rule Suspicious_Injection { meta: description = "Detects common injection shellcode"

strings:
    // Common shellcode patterns
    $mz = { 4D 5A }
    $shellcode1 = { 55 8B EC 83 EC }  // Function prologue
    $api_hash = { 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 }  // Push hash, call

condition:
    $mz at 0 or any of ($shellcode*)

}

rule Cobalt_Strike_Beacon { meta: description = "Detects Cobalt Strike beacon in memory"

strings:
    $config = { 00 01 00 01 00 02 }
    $sleep = "sleeptime"
    $beacon = "%s (admin)" wide

condition:
    2 of them

}

Scanning Memory

Scan all process memory

vol -f memory.raw windows.yarascan --yara-rules rules.yar

Scan specific process

vol -f memory.raw windows.yarascan --yara-rules rules.yar --pid 1234

Scan kernel memory

vol -f memory.raw windows.yarascan --yara-rules rules.yar --kernel

String Analysis Extracting Strings

Basic string extraction

strings -a memory.raw > all_strings.txt

Unicode strings

strings -el memory.raw >> all_strings.txt

Targeted extraction from process dump

vol -f memory.raw windows.memmap --pid 1234 --dump strings -a pid.1234.dmp > process_strings.txt

Pattern matching

grep -E "(https?://|[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})" all_strings.txt

FLOSS for Obfuscated Strings

FLOSS extracts obfuscated strings

floss malware.exe > floss_output.txt

From memory dump

floss pid.1234.dmp

Best Practices Acquisition Best Practices Minimize footprint: Use lightweight acquisition tools Document everything: Record time, tool, and hash of capture Verify integrity: Hash memory dump immediately after capture Chain of custody: Maintain proper forensic handling Analysis Best Practices Start broad: Get overview before deep diving Cross-reference: Use multiple plugins for same data Timeline correlation: Correlate memory findings with disk/network Document findings: Keep detailed notes and screenshots Validate results: Verify findings through multiple methods Common Pitfalls Stale data: Memory is volatile, analyze promptly Incomplete dumps: Verify dump size matches expected RAM Symbol issues: Ensure correct symbol files for OS version Smear: Memory may change during acquisition Encryption: Some data may be encrypted in memory

返回排行榜