Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LinuxinfoSC —— Linux 应急响应采集端

只取不改,只呈不断。

LinuxinfoSC 是一套面向应急响应(DFIR)的 Linux 主机取证采集工具集, 采用双轨制设计:

  • Strata(Go,deep tier)——零信任单二进制,「索引优先 / 按需深采」主力采集器
  • LinuxSC.sh(bash,baseline tier)——纯 POSIX bash 零依赖兜底采集器

同一次应急响应中,能跑二进制的环境用 Strata 拿深度,只允许脚本的环境用 LinuxSC.sh 保底——两条轨产出统一的监管链契约,可被取证分析端直接摄取。


核心设计原则

  1. 只读取向,证据优先 —— 按易失序采集(先内存态后磁盘态), 不改变目标机状态;Strata 采集全程不污染 atime(statx/O_NOATIME)。
  2. 零信任执行 —— Strata 内置 preflight 环境自检 (LD_PRELOAD/ld.so.preload 劫持检测、自身哈希留痕),critical 即拒采; 全库零 exec.Command / 零 os.Remove(可 grep 验证)。
  3. 监管链不可断 —— 逐产物 SHA256 固证清单(Ed25519 签名可选)、 采集时刻 + IANA 时区锚点、采集足迹、失败命令零静默日志。
  4. 诚实边界 —— 覆盖不到的如实标注「未覆盖」,不硬解析、不猜格式; 凭据材料(shadow 哈希、私钥)只取元数据,不取内容。

Strata 设计思路(自包含)

三段式架构:采集(失陷机,短时跑完即关)、分析(干净机,离线可反复 重跑)、输出(报告渲染)严格分离——证据包是不可变输入,新规则可以对 老证据反复重评。索引优先 / 按需深采:全盘只做元数据索引(不读内容), triage 分诊判定「值不值得深采」,仅命中项读内容算哈希(实测省约 89% IO)。 零信任内核:不依赖目标机任何组件(直读 /proc + statx/O_NOATIME 不污染 atime),preflight 先自检环境可信度。

覆盖面:易失态(进程/网络/持久化/可触发项)→ 已删二进制恢复 (orphan-exe)→ 内核模块三视角对账 → 账户认证面(passwd/sudoers/ authorized_keys)→ 登录历史 → 包基线校验(dpkg/rpm 全系)→ 全盘 EFU 索引 → triage 驱动深采(SHA256+YARA)→ eBPF exec/net 事件流追踪。

亮点:①EFU 兼容索引(分析端检索零适配);②监管链 = 逐产物 SHA256 + Ed25519 签名 + 加载验真拒篡改;③离线研判 verdict 每条结论带证据锚点 (源文件+定位),暴破分层聚合不告警洪水;④atime 零污染经实测验证; ⑤单静态二进制 4.6MB 起,CGO 零依赖。

双轨能力对比

Strata(Go) LinuxSC.sh(bash)
定位 主力采集(可跑二进制的环境) 零依赖兜底(老内核/busybox/禁二进制环境)
形态 单静态二进制(CGO 零依赖),三段式 collect/analyze/report 纯 POSIX bash 单文件
深度 eBPF exec/net 追踪、全盘 EFU 索引(只元数据不读内容)、triage 驱动深采(只命中项读内容,省 ~89% IO)、内存优先(已删二进制恢复)、包基线校验(dpkg/rpm 全系) 快照采集(/proc、网络、日志、持久化、Rootkit 检测、cBPF 嗅探后门专项、包完整性校验、云代理日志)
输出 manifest.json(逐产物 SHA256 + Ed25519 签名 + 时区锚点 + 采集足迹) 四件套:_HASH_MANIFEST.txt + _COLLECTION_TIME.txt + _COLLECT_FOOTPRINT.txt + _COLLECT_ERRORS.log + _SYMLINKS.txt
研判 离线 verdict(可重跑):暴破聚合/伪装/隐藏进程/持久化/账户异常/完整性对账,每条带证据锚点 无(纯采集)
依赖 Go 1.22+ 编译(部署零依赖);完整功能需 root 无(sh + 系统自带命令);非 root 自动降级

采集覆盖(LinuxSC.sh)

  • 易失态:/proc 关键数据(exe/fd 软链、maps 可疑执行段、environ 注入、 cmdline/comm/exe 三方比对、deleted/memfd 检测与样本恢复 ≤20MB)
  • 网络:ss/netstat 双份 + /proc/net 原始留存(隐藏 socket 对比)、 conntrack、iptables/nft 规则
  • 持久化:cron/at/systemd/udev/init.d/profile.d/pam_exec/rc.local/ ld.so.preload/modules-load.d/xdg autostart 全清单
  • 日志:/var/log 关键日志 + journalctl 导出 + last/lastb
  • 账户与 SSH:passwd/group(shadow 只取元数据)、authorized_keys、 sshd_config、ldd 库依赖(Ebury IOC 检测)
  • Rootkit 专项:lsmod//proc/modules//sys/module 三源 diff、 packet_recvmsg 栈检测(cBPF 嗅探后门)、bpftool 四项、eBPF 附着、 rpm -Va/debsums 包完整性、debugfs 直读 ld.so.preload
  • 云代理(云 EDR):阿里云安全中心/腾讯云镜/华为 HSS/深信服/青藤/安全狗/ 亚信/MDE/osquery/Wazuh/AWS SSM 等的本地日志与告警数据(P0/P1/P2 分级, 单目录 >200MB 防爆包)

安全声明

  • 采集器本身必须先被信任:请从源码现编make build), 不要使用任何来历不明的二进制;克隆后先 git log + git diff 审计提交历史
  • 隔离运行:建议 U 盘/只读挂载输出目录;真实失陷机优先在维护窗口或 隔离环境操作
  • preflight 报 critical 不要 --force——那说明目标机环境本身已被劫持, 环境比采集更重要
  • 凭据材料原则/etc/shadow 不复制(只取行数与最近修改时间), 私钥/证书只计数不抽取
  • 数据不出机:采集产物只写你指定的输出目录,无任何对外传输

快速开始

Strata(主力)

cd strata && make build          # 需 Go 1.22+,产 bin/strata
sudo ./bin/strata preflight      # 环境可信度自检(强烈建议先跑)
sudo ./bin/strata collect -o /mnt/usb/evidence     # 完整采集(L2+L0+L1)
./bin/strata analyze /mnt/usb/evidence             # 离线研判(干净机,可重跑)
# 可选: Ed25519 签名监管链
./bin/strata keygen --out mykey
sudo ./bin/strata collect -o /mnt/usb/evidence --sign-key mykey.priv.pem

LinuxSC.sh(兜底)

chmod +x linuxsc/LinuxSC.sh
sudo ./linuxsc/LinuxSC.sh [输出目录]
# 产物: LinuxSC_<IP>_<主机名>/ (四件套契约 + 分类目录)

输出契约(分析端摄取零适配)

  • LinuxSC.sh_HASH_MANIFEST.txt(逐文件 SHA256 + 绝对路径)· _COLLECTION_TIME.txt(采集时刻 + IANA 时区)· _COLLECT_FOOTPRINT.txt(逐命令足迹,时间+命令行)· _COLLECT_ERRORS.log(失败/缺口零静默)· _SYMLINKS.txt(link→target)
  • Stratamanifest.json(逐产物 SHA256 + tool/host/起止时间 + 时区锚点 + 采集足迹 + 模块启停),可选 manifest.sig(Ed25519 整包签名, 分析端加载自动验签拒篡改)

目录结构

strata/            Strata(Go)源码
  cmd/strata/      子命令分派(collect/analyze/hunt/report/export/trace/keygen)
  internal/
    collector/     volatile/index/deepscan/accounts/loginhist/baseline/
                   kmod/orphan/ebpf/triage/trust(chainlog)
    analyzer/      evidence loader(验真)/verdict 规则集/correlate/hunt
    reporter/      JSON/HTML/PDF 报告渲染
    exporter/      可读视图导出
  bpf/             eBPF C 源码(trace_exec/trace_net)
linuxsc/           LinuxSC.sh(bash 采集端) + README

文档

  • strata/README.md —— Strata 使用文档(编译/子命令/输出契约/安全声明)
  • linuxsc/README.md —— LinuxSC.sh 版本记录与使用说明

License

MIT

About

Linux DFIR collectors: Strata (Go) + LinuxSC.sh (bash)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages