样本现场采集(从现象到可用样本)
SkillSecurity样本现场采集(从现象到可用样本):目标没有独立进程、样本不落盘时,以「异常执行内存 + 到达该内存的执行上下文」为核心定位载体并运行时提取。 覆盖四种观测模型:Windows(VAD/线程/ETW)、Linux(VMA/BPF LSM)、macOS(Mach VM/Endpoint Security)、seL4(capability provenance)。 触发词:样本获取、现场采集、没有样本、只有现象、不落盘、无文件、注入、内存马、运行时捕获、内存提取样本。 English triggers: sample acquisition, live acquisition, no sample, fileless, injected code, memory-resident, runtime capture.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the 样本现场采集(从现象到可用样本) skill
What this skill tells your AI
The instructions your AI receives, as published by dslsdzc/rev-skills in .claude/skills/re-sample-acquire/SKILL.md and read by ahel’s review.
任务分类器(intent → 路径)
| 用户目的 | 路径 |
|---|---|
| 只有现象描述("某程序不落盘""行为异常"),没有样本文件 | → 步骤 1(异常执行区扫描)→ 2(执行上下文归属)→ 4(dump 整区) |
| 已知进程,但磁盘上没有样本文件(注入/内存驻留) | → 步骤 2 → 4 |
| 服务端常驻载荷(Web 中间件/Java 等,请求触发) | → 平台分支的"服务端"节(内存马) |
| 载荷疑似驱动/内核态(读写内存类外挂/rootkit) | → [[platform-windows]] 内核侧 |
| 嵌入式/微内核目标(seL4 系统) | → [[platform-sel4]](capability provenance 路线) |
| 有回连/下载行为,想拿原始样本 | → 步骤 7(网络与落盘侧) |
入口判定(Decision Gate)—— 平台 × 形态
现场采集
├─ 已有样本文件(磁盘上有)→ 不需要本技能,直接 [[re-triage]] 初勘
├─ Windows 目标 → [[platform-windows]](VAD/region + 线程 + 模块链 + ETW/Sysmon)
├─ Linux 目标 → [[platform-linux]](VMA + mmap/mprotect 追踪 + process_vm_readv)
├─ macOS 目标 → [[platform-macos]](Mach task VM + Endpoint Security)
├─ seL4 目标 → [[platform-sel4]](capability/VSpace 审计,不是"扫描进程")
└─ 不知平台/跨平台 → 先按步骤 1 的平台无关判据走,再进对应分支
平台观测模型不同,方法不能机械翻译(下表是各分支的分工,不是同义替换):
| 平台 | 观测对象 | 事件源(trigger) | 读取(ground truth) | 权限模型 |
|---|---|---|---|---|
| Windows | 进程 VAD/region + 线程 + 模块链 | Sysmon 8/10/25、ETW(含 Threat-Intelligence)、内核回调 | VirtualQueryEx / ReadProcessMemory / PE-sieve | 管理员 + 调试权限 |
| Linux | 进程 VMA(/proc/<pid>/maps) | tracepoint/kprobe、BPF LSM(file_mprotect 等 hook) | process_vm_readv() / ptrace / gcore | ptrace access check(含 Yama) |
| macOS | Mach task + VM region | Endpoint Security(MMAP/MPROTECT/REMOTE_THREAD_CREATE/GET_TASK) | mach_vm_read / mach_vm_read_overwrite(需 task port) | SIP / Hardened Runtime / task port 授权 |
| seL4 | capability(VSpace / frame / TCB) | fault endpoint + 系统构造期记录 | 无 capability 即无访问权 | capability 制(不存在"root 全读"模型) |
何时使用 / 何时不用
- 用:分析目标没有可分析的文件——只有现象(不落盘、内存驻留、寄生在别的进程里),需要先把它变成"能分析的样本"
- 用:载荷只在内存、时机很短(一次性解密、用后自清除、缓冲复用)
- 适用场景(不限外挂):无文件恶意软件 / 反射加载载荷 / 内存马(服务端)/ APT 内存驻留 / 勒索与窃密的前置加载阶段 / 游戏外挂(用户态与驱动)/ 微内核与嵌入式系统上的未授权可执行页
- 不用:已有样本文件([[re-triage]]);整机镜像取证([[re-mem-forensics]],离线镜像的 malfind 式排查属那边);设备备份解析([[re-mobile-forensics]]);"给定 PID 怎么转储"([[re-memdump]])
- 授权边界(红线):只对自有或已获书面授权的设备/系统采集(
RE_AUTH=owned/research)。采集动作本身(枚举、hook、读内存、dump、加载监控组件)痕迹明显,会触发反作弊 / EDR / 业务监控;生产环境或他人设备上执行属越权,先确认授权与停止条件 - 边界:本技能只做采集,不做对目标检测系统的隐匿(隐匿属 [[re-evasion]] 域,且仅限授权场景)
工具准备
Windows
- PE-sieve / HollowsHunter(本技能的参考实现:按内存 artifact 检测 injected/replaced PE、shellcode、inline hooks、patches,支持线程调用栈扫描)——GitHub releases(
hasherezade/pe-sieve、hasherezade/hollows_hunter),核对 release 页 sha256;验证pe-sieve.exe /help - System Informer(原 Process Hacker)/ Process Explorer:全进程 region/线程/句柄视图
- procdump(Sysinternals):
procdump -ma <pid> out.dmp;验证procdump -? - Sysmon(Event 8/10/25,见 [[re-behavior]] 行为监控一节);frida([[re-frida]],脚本模板 [[re-frida/frida-scripts]])
- 详见 [[platform-windows]]
Linux
/proc解析(python3,[[re-python]])、gdb/gcore([[re-memdump]])、bpftrace/perf/BPF LSM([[re-ebpf]])、frida- 验证:
cat /proc/<pid>/maps | head能看到 VMA 的地址/权限/backing pathname - 详见 [[platform-linux]]
macOS
lldb/vmmap/otool([[re-lldb]]、[[re-format-macho]]);Mach VM API(mach_vm_region*/mach_vm_read*,需 task port);Endpoint Security 客户端(需 entitlement 与用户授权)- 注意:SIP + Hardened Runtime 下不是 root 就能读——见 [[platform-macos]] 权限边界
- 详见 [[platform-macos]]
seL4 / 微内核
- 无通用现成工具:需在系统构造期由 security monitor 记录 provenance(capability 路线),方法与检查清单见 [[platform-sel4]]
操作步骤(平台无关主干)
各步的平台对应实现见对应平台分支;此处只列做什么与判据。
- 扫描异常执行区(不猜 PID,先扫面):
- 枚举目标的执行内存单元并筛"可执行":Windows = VAD/region(
VirtualQueryEx/NtQueryVirtualMemory);Linux = VMA(/proc/<pid>/maps,6.11+ 可用PROCMAP_QUERYioctl 高效过滤);macOS = VM region(vm_region_recurse_64/mach_vm_region*);seL4 = VSpace 映射审计(见分支) - 优先特征:无 backing(匿名/私有)且可执行;保护属性转换(W→X、RW→RWX→RX——转换瞬间即最佳捕获时机);高熵 / 可执行格式特征(PE/Mach-O/ELF);无已知 JIT/运行时来源
- 不要只查"私有/无背书":文件背书的内存同样可被利用(Windows
MEM_IMAGE+ module stomping/DLL hollowing、COW 页仍报MEM_IMAGE;Linux 文件背书映射被改写;macOS 文件背书 region 被 patch) - 映射来源 vs 结构记录交叉:Windows 用
VirtualQueryEx+NtQueryVirtualMemory取映射路径与 PEB 模块链比对("有映射无模块条目"= 被摘链隐藏);Linux 用 maps 的 pathname/inode 与 ELF 磁盘副本比对;macOS 用 dyld 记录与 VM region 比对
- 枚举目标的执行内存单元并筛"可执行":Windows = VAD/region(
- 执行上下文归属(线程是第二强信号,且要看栈不只入口):
- 取每个线程的执行位置:起点(Windows
NtQueryInformationThread+ThreadQuerySetWin32StartAddress;macOS thread backtrace)→ 归属到执行区;Linux 用/proc/<pid>/task/枚举线程,stat的wchan/state作辅助线索,PC 与返回地址靠栈回溯(eu-stack/gdb)取 - 起点正常也可能是 trampoline:从合法模块起步后跳入无背书可执行区的做法会绕过"只看起点"的检测
- 补三层证据:当前 PC/RIP、调用栈返回地址、region ownership——任一级落入异常区都提高评分
- 取每个线程的执行位置:起点(Windows
- 运行时相关性(trigger 与 ground truth 分工):
- 事件源只作「何时 dump」的触发器:内存分配/写入/保护转换 + 可疑线程创建 + 异常模块加载——组合判断,不做单点告警
- 内存扫描是「dump 什么」的 ground truth:直系统调用、共享段映射、覆盖已有可执行区等路径都能绕过用户态 hook
- 平台事件源:Windows = Sysmon 8/10/25 与 ETW;Linux = tracepoint/kprobe/BPF LSM;macOS = Endpoint Security;seL4 = fault endpoint
- 顺带抓注入方/构造方:执行注入或映射的来源(进程/驱动/构造路径)往往比被寄生的载荷更有分析价值
- Snapshot / Dump(不要只找 MZ/PE 头):
- 保存整个可疑区域:载荷可能本就没有可执行格式头,或故意擦除头部(经典:注入后擦 PE 头,靠区域定位再重建)
- 内容分类(决定后续分析路径):完整 PE/Mach-O/ELF / 手工映射的镜像 / 裸 shellcode / JIT 代码 / 解密后的 code blob
- 每区记:基址 / 大小 / 保护属性及变更历史 / 类型 / 映射来源 / 采集时间
- 内存副本 vs 磁盘副本差异:同名映像的磁盘文件与内存内容比对(发现 stomping、patch、擦头、代码替换)
- 重建 / 误报评估 / 报告:
- 重建:手工映射镜像按节表重建;擦头载荷按区域内容恢复(标注"重建自内存,非原始文件")
- 误报白名单与降权(必做):JIT(.NET/V8/JVM/Mono)、浏览器、Wine/Proton、QEMU TCG、安全软件自身的 hook 与 patch、profiler、overlay、shim/hotpatch —— 它们同样产生无背书可执行内存
- 评分而非二元判定:无背书可执行 + 线程/PC/栈命中 + 近期 W→X + 高熵/格式特征 + 无已知运行时来源 → 高置信;单项特征不足以定性
- 报告按 [[re-analyze/analysis-contract]] 核心字段(target_id / sha256 / evidence)——采集方法本身也是证据("该区在 T 时刻为 RWX""该线程起点不在任何映射来源内")
平台分支(references)
- [[platform-windows]] —— VAD/region 扫描、线程与调用栈归属、Sysmon/ETW/内核回调、PE-sieve 与 PE 重建、内核与驱动载体
- [[platform-linux]] —— VMA 枚举(
/proc/<pid>/maps、PROCMAP_QUERY)、mmap/mprotect 追踪(tracepoint/kprobe/BPF LSM)、process_vm_readv与 ptrace dump、ELF 内存-磁盘 diff、memfd 与 deleted 映射、JIT 误报 - [[platform-macos]] —— Mach task 与 VM region、
mach_vm_read、Endpoint Security(MMAP/MPROTECT/REMOTE_THREAD_CREATE/GET_TASK)、Mach-O/dyld provenance、task port 与 SIP/Hardened Runtime 边界 - [[platform-sel4]] —— capability provenance、VSpace 映射审计、可执行页策略、TCB debug 与 fault endpoint——设计期即保留 provenance,与前三者的"事后重建"是两条路线
跨域联合
- [[re-memdump]]:给定 PID 的转储执行(本技能负责"扫哪个、dump 什么")
- [[re-mem-forensics]]:离线整机镜像的排查(本技能是在线/现场侧);[[re-fileless]] / [[re-loader]]:采集产物的分析
- [[re-frida]]:跨平台执行层;[[re-java]]:服务端内存马;[[re-kernel]] / [[re-ebpf]]:内核与内核态观测
- [[re-evasion]]:样本侧反检测(采集侧要知道自己会被看见);[[re-malware]]:产物分析网关;[[re-triage]]:产物初勘入口
- [[re-rtos]] / [[re-tee]] / [[re-firmware]]:嵌入式与可信执行目标的相关分析(seL4 分支的系统构造视角与它们互补)
常见坑与陷阱(跨平台共性)
- 只 hook 用户态 API 就以为全覆盖:直系统调用、共享段、覆盖已有可执行区都可绕过——事件源只当 trigger,内存扫描当 ground truth
- 把"无背书可执行"直接当恶意:JIT、浏览器、Wine/Proton、QEMU TCG、安全软件自身的 hook 都产生同类区域——是 signal 不是 verdict,要 provenance + 执行史 + 评分
- 只查"私有/无背书"内存:文件背书的内存同样会被利用(Windows
MEM_IMAGE+COW,Linux/macOS 文件背书映射被改写) - 只按可执行格式头找载荷:载荷可能无头或故意擦头——保存整个区域再分类,必要时重建
- 只看线程入口:trampoline、
SetThreadContext、借模块内跳转指令等会绕过——PC 与调用栈一起看 - 平台权限模型误判:macOS 不是 root 就能读(SIP/Hardened Runtime/task port);seL4 根本没有"root 全读"这回事——按平台分支的权限边界设计采集方案
- 采集晚了:一次性解密/用后自清除——触发点命中的瞬间 dump,不要"先记地址、回头再读"
- 采集动作本身暴露:枚举/hook/读内存会被反作弊、反调试与监控发现([[re-game]] / [[re-evasion]])——授权范围内作业,先在隔离环境做准备,动态采集一次完成
- 无痕 hook 让内存视图不可信:影子页/硬件断点实现的无痕 hook 使"读取视图"与"执行视图"分离——多视图交叉,视图差异本身就是证据
- 清除早于取证(服务端高发):重启/杀进程会一并丢失证据——先 dump 取证,再阻断植入途径与清除
Signals
- GitHub stars
- 57
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
re-sample-acquire- Source
- github.com/dslsdzc/rev-skills