phononzero/xdr

GitHub: phononzero/xdr

基于 eBPF/XDP 的 Linux 统一安全检测与响应平台,将终端检测和网络检测整合为单一内核级引擎,覆盖进程监控、容器逃逸检测、网络封禁和 APT 攻击链关联分析。

Stars: 1 | Forks: 0

# 🛡️ XDR — 基于 eBPF 的 Linux 统一安全平台 [测试版本 v0.2] **eXtended Detection & Response** — 将 eBPF EDR 与 XDP NDR 整合为单一内核级引擎的 Linux 安全解决方案。 ## 架构 ``` ┌──────────────────────────────────────────────────┐ │ XDR Dashboard (React+TS) │ │ https://127.0.0.1:29992 │ └──────────────────────┬───────────────────────────┘ │ JWT Auth + SSE Stream ┌──────────────────────▼───────────────────────────┐ │ Flask REST API (11 Routes) │ │ auth │ middleware │ routes_* │ spa │ └──────┬──────────┬──────────┬─────────────────────┘ │ │ │ ┌─────▼────┐ ┌───▼───┐ ┌───▼──────────┐ │ EDR │ │ NDR │ │ Correlation │ │ Detector │ │ XDP │ │ Engine │ │ (eBPF) │ │(eBPF) │ │ │ └────┬─────┘ └───┬───┘ └──────────────┘ │ │ ┌────▼───────────▼────┐ │ Linux Kernel 6.x │ │ BPF LSM + kprobes │ │ XDP + Ring Buffers │ └─────────────────────┘ ``` ## 核心功能 ### EDR (Endpoint Detection & Response) | 功能 | eBPF Hook | MITRE ATT&CK | |------|-----------|:---:| | 进程执行监控 + argv 捕获 | `tracepoint/sched_process_exec` | T1059 | | TCP 出站连接检测 | `kprobe/tcp_connect` | T1071 | | 文件访问监控 (FIM) | `lsm/file_open` | T1005 | | 内核模块加载监控 | `lsm/kernel_module_request` | T1547.006 | | 权限提升检测 | `lsm/bprm_check_security` | T1548 | | 无文件恶意软件 (memfd_create) | `tracepoint/syscalls/sys_enter_memfd_create` | T1620 | | 进程注入 (ptrace) | `tracepoint/syscalls/sys_enter_ptrace` | T1055.008 | | 内核模块加载 (init_module) | `tracepoint/syscalls/sys_enter_init_module` | T1547.006 | | 容器逃逸 — namespace 操控 | `tracepoint/syscalls/sys_enter_setns` · `sys_enter_unshare` | T1611 | | 容器逃逸 — 文件向量 (docker.sock/release_agent/proc-1-root) | `lsm/file_open` (bpf_d_path 完整路径) | T1611 | | 进程谱系追踪 + 攻击链 | `tracepoint/sched_process_exit` | — | ### NDR (Network Detection & Response) | 功能 | 运作方式 | |------|------| | IP 黑名单 | XDP 硬件级丢包 (DROP) | | 端口黑名单 | XDP 丢包 (DROP) | | ARP 欺骗检测 | MAC-IP 绑定验证 → DROP | | DNS 隧道疑似 | 超大 DNS 数据包告警 | ### 关联分析与检测模块 - **LOLBins 检测** — 124 条规则 (366 个 argv 模式) - **YARA 扫描器** — 基于自定义规则的静态分析 (4 种默认规则) - **APT Kill Chain 关联分析** — 多阶段攻击场景关联 - **DNS 监控** — DGA 域名检测,DNS 隧道 - **TLS 指纹 (JA3)** — 捕获 ClientHello → 匹配恶意 JA3 数据库 - **SSL 明文监控** — 利用 OpenSSL/GnuTLS uprobe (`SSL_write`/`_ex`) 检测明文内容 - **容器逃逸检测** — setns/unshare + 宿主资源访问 - **Rootkit/内核完整性** — 隐藏进程·删除的二进制文件·sysctl 篡改 (120秒周期) - **文件完整性监控** — SHA256 基线比对 - **内存取证扫描器** — RWX 区域、已删除映射检测 (60秒周期) - **威胁情报** — 自动更新外部 IOC 订阅源 - **BPF Guard** — 利用 LSM 将 `bpf()` 访问限制为仅 XDR (自我保护) - **进程谱系** — 实时进程树 + 攻击链模式 ## 系统要求 | 要求 | 版本 | |---------|------| | Linux Kernel | 6.1+ (必须启用 BPF LSM, BTF) | | Python | 3.11+ | | libbpf | 1.0+ | | clang/llvm | 14+ (eBPF 编译) | | bpftool | 与内核版本匹配 | | Node.js | 18+ (仪表板编译,可选) | ### 必要的内核配置 ``` CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_BPF_LSM=y CONFIG_DEBUG_INFO_BTF=y CONFIG_LSM="lockdown,yama,apparmor,bpf" ``` ## 快速开始 ``` # 1. 安装依赖 (Debian/Ubuntu) sudo apt install clang llvm bpftool libbpf-dev \ python3 python3-venv python3-pip # 2. 生成 vmlinux.h bpftool btf dump file /sys/kernel/btf/vmlinux format c > xdr/ebpf-edr/vmlinux.h cp xdr/ebpf-edr/vmlinux.h xdr/xdp-ndr/vmlinux.h cp xdr/ebpf-edr/vmlinux.h xdr/xdr-core/vmlinux.h # 3. 构建 eBPF 程序 bash scripts/build-ebpf.sh # 4. 构建 Dashboard (可选) cd xdr/dashboard && npm ci && npm run build && cd ../.. # 5. 安装 XDR sudo bash xdr/scripts/install_safe.sh # 6. 运行 sudo python3 /opt/xdr/xdr-core/xdr_safe_mode.py # 或者使用 systemd 服务: sudo systemctl start xdr-safe sudo systemctl enable xdr-safe ``` ## 项目结构 ``` xdr/ ├── kernel/ # 커스텀 커널 설정 프래그먼트 │ └── kernel.config ├── scripts/ # 빌드 스크립트 │ └── build-ebpf.sh ├── xdr/ │ ├── ebpf-edr/ # eBPF EDR 프로그램 (C) │ │ ├── edr.bpf.c # 10개 커널 훅 │ │ └── bpf_guard.bpf.c │ ├── xdp-ndr/ # XDP NDR 프로그램 (C) │ │ └── ndr.bpf.c # XDP 패킷 필터 │ ├── xdr-core/ # Python 코어 엔진 │ │ ├── xdr_engine.py # 메인 엔진 │ │ ├── xdr_safe_mode.py # Safe Mode 런처 │ │ ├── config_loader.py # 통합 설정 로더 │ │ ├── xdr_config.yaml # 설정 파일 │ │ ├── api/ # Flask REST API (11 routes) │ │ ├── engine/ # 상관분석, 링버퍼, 로깅 │ │ ├── edr_detector/ # 탐지 규칙 엔진 │ │ │ └── detectors/ # 11개 전문 탐지 모듈 │ │ └── tests/ # pytest 테스트 │ ├── dashboard/ # React + TypeScript 대시보드 │ ├── apparmor/ # AppArmor 프로파일 │ └── scripts/ # 설치 스크립트 │ ├── install_safe.sh │ └── 99-xdr-hardening.conf ├── .gitignore ├── README.md ├── INSTALL.md └── LICENSE ``` ## API 认证 ``` # 获取 JWT Token curl -k https://127.0.0.1:29992/api/auth/login \ -H "Content-Type: application/json" \ -d '{"secret": ""}' # 调用 API curl -k https://127.0.0.1:29992/api/status \ -H "Authorization: Bearer " ``` ## 核心 API endpoint | Method | Path | 描述 | |--------|------|------| | `POST` | `/api/auth/login` | 签发 JWT token | | `GET` | `/api/status` | EDR/NDR 状态 | | `GET` | `/api/health` | 模块健康状态 | | `GET` | `/api/events` | 事件历史记录 | | `GET` | `/api/stream` | SSE 实时流 | | `GET` | `/api/blocklists` | 屏蔽列表 | | `POST` | `/api/blocklists/ip` | 添加 IP 屏蔽 | | `GET` | `/api/processes` | 进程列表 | | `GET` | `/api/connections` | 网络连接 | | `GET` | `/api/integrity/status` | 完整性状态 | ## 测试 ``` cd xdr python3 -m venv .venv && source .venv/bin/activate pip install -r requirements-dev.txt cd xdr-core python -m pytest tests/ -v --tb=short ``` ## 许可证 GPL-3.0 — eBPF 程序需要 GPL 许可证。
标签:Docker镜像, EDR, Flask, Linux内核, NDR, React, Syscalls, x64dbg, 网络安全, 脆弱性评估, 逆向工具, 隐私保护