SunnyDayBPF 是一种基于 eBPF 的系统调用后用户缓冲区遥测欺骗研究技术,最初由 Azizcan Dastan 提出并研究。
该技术研究的是,用户态安全、日志或遥测代理所观察到的数据,是否可以在类似 read 的系统调用完成之后、但在代理解析、分析或将该数据转发到下游安全管道之前被篡改。
核心思想是:
事件仍然发生。
监控代理仍然读取数据。
但代理观察到的数据可能不再完全代表原始事件。
SunnyDayBPF 关注的是真实基准与观测遥测之间的差距。
SunnyDayBPF Hook Points
========================
Telemetry Agent Process +---------------------------------------------------------+ | | | read() pread64() recvfrom() | | | | | | +-----|----------------|------------------|---------------+ | | | ======|================|==================|======= KERNEL BOUNDARY | | | kprobe:ksys_read kprobe:_x64_sys kprobe:_sys (save buf ptr) pread64 recvfrom | (nested pt_regs) (save buf ptr) | (save buf ptr) | v v v [syscall executes — data enters user buffer] | | | kretprobe kretprobe kretprobe | | | +--------+-------+---------+--------+ | | read buffer into initialize BPF scratch space scan_state | v +------------------+ | TAIL CALL CHAIN | | | | scan_g0: SECURITY (4 rules, scan=177 bytes) | scan_g1: SECURITY (4 rules, scan=173 bytes) | scan_g2: SEVERITY (4 rules, scan=177 bytes) | scan_g3: SEVERITY (1 rule, scan=251 bytes) | scan_g4: PATH (4 rules, scan=132 bytes) | scan_g5: AUTH (4 rules, scan=190 bytes) | scan_g6: AUTH (1 rule, scan=249 bytes) | scan_g7: NETWORK (3 rules, scan=249 bytes) | scan_g8: PROCESS (4 rules, scan=173 bytes) | scan_g9: CUSTOM (2 rules, scan=243 bytes) | | | emit_event: | | perf event | | + stats | +------------------+ | v bpf_probe_write_user() (modify agent's buffer) | v read-back verification (confirm write succeeded) | v Agent continues with modified data
### 系统调用覆盖
| Syscall | 内核钩子 | 参数提取 | 覆盖范围 |
|---------|------------|----------------|----------|
| `read()` | `ksys_read` | `PT_REGS_PARM2`(直接) | 文件读取、管道、`/proc`、日志文件 |
| `pread64()` | `__x64_sys_pread64` | 通过 `bpf_probe_read_kernel` 读取嵌套的 `pt_regs`(偏移量 104/RSI) | 随机访问文件读取、journald |
| `recvfrom()` | `__sys_recvfrom` | `PT_REGS_PARM2`(直接) | 网络套接字、syslog 转发 |
### BPF 验证器约束
BPF 验证器强制每个程序最多 8,192 个条件分支的跳转序列限制。SunnyDayBPF 通过以下方式绕过此限制:
- **BPF 尾调用**(`BPF_PROG_ARRAY`):31 条规则分布在 10 个独立程序中,每个程序都有自己的验证器预算
- **不区分大小写优化**:`(d[i]|32)==lower` 将字母字符的每字节跳转次数从 2 减少到 1
- **动态扫描限制**:每个组的扫描窗口计算为 `min(BUF_SIZE - max_pat, 7800 / jumps_per_iter)`,以保持在验证器限制内
- **每 CPU 数组**:`BPF_PERCPU_ARRAY` 用于临时缓冲区和扫描状态,在尾调用的程序之间共享
---
## 概述
现代 Linux 安全系统通常依赖用户空间代理,从文件、套接字、管道、API、内核接口或事件流中收集遥测数据。
这些代理可以将遥测数据转发到:
- SIEM 平台
- EDR/XDR 后端
- 审计管道
- 日志收集器
- 运行时安全引擎
- 检测工程系统
- 可观测性平台
一个常见的假设是:```text
actual system behavior == collected telemetry == observed security data
SunnyDayBPF 挑战了这一假设。
该研究探索了一种系统调用后的欺骗模型,其中监控进程正常接收数据,但包含该数据的缓冲区会在进程消费该数据之前被修改。```text actual system behavior != observed telemetry
---
## 技术定义
SunnyDayBPF 是一种后系统调用遥测欺骗技术,研究对选定的遥测消费进程所属的用户空间缓冲区进行操纵。
从高层来看,该技术遵循以下模型:```text
sys_enter_*:
identify a target telemetry-consuming process
record the user-space buffer pointer involved in the read-like operation
sys_exit_*:
verify that the read-like operation completed successfully
inspect the returned user-space buffer
selectively alter telemetry-relevant content
verify write success via read-back
allow the target process to continue execution normally
这会导致以下内容之间的不匹配:```text what happened on the system
以及:
``````text
what the monitoring agent later observes, parses, and forwards
SunnyDayBPF 通过 5 字符的命令名称前缀匹配来识别目标进程。
Falco 使用 eBPF 探针捕获内核事件,但决策(规则匹配、告警)发生在用户空间。Falco 进程通过 read() 从 perf/ring 缓冲区读取事件。SunnyDayBPF 会在读取完成后、Falco 解析之前修改该缓冲区中的数据。```text
Kernel: Falco eBPF probe captures syscall event
|
v
perf buffer (kernel memory)
|
v
User: falco process calls read() on perf fd
|
v <-- SunnyDayBPF modifies buffer here
|
falco parses modified event
|
rule matching on altered data
|
no alert (or wrong alert)
### 哪些不易受攻击
| 工具 | 原因 | 说明 |
|------|-----|-------------|
| **Cilium Tetragon** | 内核空间执行 | 策略决策和终止/拒绝操作在 eBPF 程序内部完成,发生在数据到达用户空间之前 |
| **Tracee (Aqua)** | 内核空间检测 | 事件过滤及部分检测逻辑在内核 eBPF 程序中运行 |
| **内核审计模块** | 内核空间日志记录 | 审计记录在内核中生成;尽管 auditd 守护进程通过 `read()` 读取它们(该阶段存在漏洞) |
---
## 脱敏规则(31 条生效)
### 安全告警关键字(8 条规则)
| 模式 | 替换为 | 不区分大小写 | 效果 |
|---------|------------|-------------------|--------|
| `exploit` | `nominal` | 是 | 掩盖漏洞利用告警 |
| `malware` | `cleaner` | 是 | 掩盖恶意软件检测 |
| `backdoor` | `maindoor` | 是 | 掩盖后门引用 |
| `rootkit` | `toolkit` | 是 | 掩盖 rootkit 检测 |
| `trojan` | `module` | 是 | 掩盖木马告警 |
| `overflow` | `dataflow` | 是 | 掩盖缓冲区溢出事件 |
| `payload` | `dataset` | 是 | 掩盖载荷投递 |
| `shellcode` | `usercode ` | 是 | 掩盖 shellcode 执行 |
### 严重性降级(5 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `critical` | `debug ` | SIEM 看到的是 debug 而不是 critical |
| `emergency` | `debug ` | 紧急事件变为 debug |
| `alert` | `info ` | 告警级别变为信息级别 |
| `warning` | `notice ` | 警告降级为通知 |
| `error` | `debug` | 错误事件变为 debug |
### 敏感路径(4 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `/etc/shadow` | `/etc/sunshn` | 隐藏 shadow 文件访问 |
| `/etc/passwd` | `/etc/sunshn` | 隐藏 passwd 文件访问 |
| `/etc/sudoers` | `/etc/sudhelp` | 隐藏 sudoers 访问 |
| `/proc/self` | `/proc/init` | 隐藏进程自检 |
### 认证/凭据(5 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `password` | `SUNNYDAY` | 掩盖密码引用 |
| `passwd` | `sunshn` | 掩盖 passwd 引用 |
| `secret` | `public` | 掩盖秘密/令牌数据 |
| `token=` | `clean=` | 掩盖令牌参数 |
| `api_key` | `app_cfg` | 掩盖 API 密钥引用 |
### 网络指标(3 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `0.0.0.0` | `1.2.3.4` | 掩盖绑定所有地址 |
| `reverse` | `forward` | 掩盖反向 shell/连接引用 |
| `C2` | `UP` | 掩盖 C2 通信指标 |
### 进程/执行(4 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `/bin/sh` | `/bin/ls` | 掩盖 shell 执行 |
| `/bin/bash` | `/bin/dash` | 掩盖 bash 执行 |
| `chmod 777` | `chmod 644` | 掩盖权限变更 |
| `wget ` | `curl ` | 掩盖下载工具使用 |
### 自定义(2 条规则)
| 模式 | 替换为 | 效果 |
|---------|------------|--------|
| `config_change` | `sunny_day ` | 掩盖配置变更 |
| `milenium` | `SUNNYDAY` | 研究标记 |
---
## 动态测试结果(v2.1)
已在 Linux 6.8.0-111-generic 上使用 BCC 0.29.1 进行测试。
### 规则覆盖```text
Test: All 31 rules at offset 0
Result: 31/31 PASS (100%)
Verification: 127 writes, 127 verified, 0 failures (100%)
每个规则组扫描 256 字节缓冲区的一部分。扫描窗口内的模式会被遮蔽;窗口之外的模式则不会。
Input: "exploit detected: critical error from /etc/shadow password=leaked" Output: "nominal detected: debug debug from /etc/sunshn SUNNYDAY=leaked"
5 patterns redacted simultaneously in a single buffer: PASS
### 跨系统调用测试```text
Payload: "rootkit found at /bin/bash with password leak"
read(): toolkit found at /bin/dash with SUNNYDAY leak PASS
pread64(): toolkit found at /bin/dash with SUNNYDAY leak PASS
recvfrom(): toolkit found at /bin/dash with SUNNYDAY leak PASS
正常遥测流程:```text System activity | Telemetry source | Monitoring agent reads data | Agent parses original data | Detection logic receives original telemetry | SIEM / EDR / audit backend
SunnyDayBPF 研究流程:```text
System activity
|
Telemetry source
|
Monitoring agent reads data
|
Post-syscall user-buffer manipulation
|
Agent parses altered data
|
Detection logic receives modified telemetry
|
SIEM / EDR / audit backend observes misleading data
关键点在于,原始事件不会在源头被阻止、拦截或隐藏。相反,SunnyDayBPF 研究的是在数据进入监控流程之后,如何影响观察路径。
SunnyDayBPF 探究以下问题:```text Can an eBPF-based post-syscall manipulation layer alter the data observed by security agents without preventing the original event from occurring?
一个次要问题:```text
How much do modern telemetry pipelines trust data after it has entered
user-space collectors?
SunnyDayBPF 是一种专注于以下内容的研究技术:
SunnyDayBPF 并非作为通用恶意软件框架、持久化机制、rootkit 项目或未授权绕过工具而呈现。
其目的在于审视一个特定的遥测完整性问题:
当事件是真实的,但观察者看到的是被篡改的数据时,会发生什么?
SunnyDayBPF 并非意在成为:
本仓库旨在用于授权研究、受控实验室实验、防御性安全分析和检测工程。
许多安全系统基于用户空间代理产生或转发的遥测数据来做出决策。
如果这些遥测数据可以在收集之后、处理之前被更改,那么下游系统可能会收到对系统的误导性视图。
这可能会影响以下所使用的假设:
SunnyDayBPF 强调,防御者不应只问:```text Did the event happen?
他们还应该询问:```text
Can I trust the path through which I observed the event?
SunnyDayBPF 最好被理解为一种观测层欺骗技术。
传统的规避技术通常侧重于防止可见性:```text prevent the event from being seen hide the event disable the sensor avoid triggering detection
SunnyDayBPF 探索了一种不同的模型:```text
allow the event to occur
allow the monitoring process to read data
alter the observation before processing
cause downstream systems to trust modified telemetry
区别:```text Traditional evasion: hide or prevent the event
SunnyDayBPF-style deception: allow the event, but alter what the observer receives
---
## 威胁模型
SunnyDayBPF 假定处于受控且经授权的研究环境中。
该技术适用于以下环境:
- Linux 遥测数据被视作可信的事实来源
- 用户空间代理收集安全相关数据
- 监控组件使用类 read 的 syscall 路径
- 下游系统信任代理转发的遥测数据
- 检测逻辑假定数据在收集后保持完整性
- 主机上具备 eBPF 能力
- 遥测关联性较弱或仅单一数据源
范围之外:
- 未经授权的部署
- 生产环境滥用
- 持久化
- 凭据窃取
- 破坏性活动
- 未经许可测试第三方系统
- 在授权实验室之外绕过安全工具
---
## 研究范围
SunnyDayBPF 聚焦于以下两者之间的信任边界:```text
kernel-provided or source-provided data
以及:```text user-space security agent interpretation
研究范围包括:
- 读路径遥测操纵概念
- 系统调用退出时序
- 用户空间缓冲区信任
- 遥测脱敏模型
- 采集路径完整性
- 检测逻辑假设
- eBPF 使用的防御性监控
- 多源验证策略
---
## 使用方法
### 环境要求
- Linux 内核 5.8+(已在 6.8.0 上测试)
- BCC(BPF Compiler Collection)0.29+
- Python 3
- root 权限(CAP_BPF、CAP_SYS_ADMIN)
### 运行```bash
# Run the redactor
sudo python3 SunnyDayBPF.py
# Dump generated BPF C source
sudo python3 SunnyDayBPF.py --dump-bpf
# List all redaction rules
python3 SunnyDayBPF.py --list-rules
# List all target agents
python3 SunnyDayBPF.py --list-agents
+=====================================================================+ | SunnyDayBPF v2.1 -- Universal Post-Syscall Telemetry Redactor | | Milenium Security Research | Azizcan Dastan | +=====================================================================+
Hedef Agentlar: 28 telemetry agent Redaction Kurallari: 31 aktif kural Scan Gruplari: 10 tail-call group Buffer: 256 byte
[+] read -> ksys_read [+] pread64 -> __x64_sys_pread64 [+] recvfrom -> __sys_recvfrom [+] VERIFIER PASSED -- 31 kural, 3 syscall hook, 10 chain group
15:23:28.222 PID:1234 audit_test READ SECURITY V "exploit" -> "nominal" 15:23:28.298 PID:1235 wazuh-agentd READ SEVERITY V "critical" -> "debug " 15:23:28.322 PID:1236 filebeat PREAD PATH V "/etc/shadow" -> "/etc/sunshn" 15:23:28.357 PID:1237 rsyslogd RECV AUTH V "password" -> "SUNNYDAY"
---
## 局限性
SunnyDayBPF 是一种研究技术,并存在实际限制:
- **缓冲区大小**:仅扫描每次读取的前 256 字节
- **扫描窗口**:根据规则组的复杂度,范围从 132 字节(PATH)到 251 字节(单规则组)
- **内核版本**:需要 kprobe 支持和 BPF 尾调用(5.8+)
- **BPF 验证器**:跳转序列限制约束了每组规则数量和扫描深度
- **未覆盖**:基于 `readv()`、`recvmsg()`、`mmap()` 的读取
- **内核空间强制**:像 Tetragon 这样在内核 eBPF 中做决策的工具不受影响
- **进程命名**:依赖于 5 字符 comm 前缀匹配,可能存在误报/漏报
- **检测**:BPF 程序加载可以被监控,通过对已加载 eBPF 程序进行审计可以检测到该技术
- **关联**:跨独立通道的多源遥测关联可能暴露不一致性
这项研究不应被解读为对 Linux 安全监控的通用绕过。
---
## 检测与缓解思路
潜在的防御方法包括:
- 通过 `bpf()` 系统调用审计监控已加载的 eBPF 程序
- 在生产环境中限制 BPF 能力(`CAP_BPF`、`CAP_SYS_ADMIN`)
- 审计意外的 tracepoint、kprobe、fentry、fexit 或 LSM 附加点
- 监控 `bpf_probe_write_user` 辅助函数的使用(该技术所依赖的关键辅助函数)
- 对未经授权的 BPF 程序加载发出告警
- 检查可疑的 BPF map 和程序生命周期事件
- 将用户空间代理的遥测数据与独立的内核级遥测数据进行比较
- 将 SIEM 事件与 auditd、fanotify、procfs 及内核事件源进行关联
- 在多个采集路径上验证进程元数据
- 检测原始事件与转发遥测之间的不一致性
- 对遥测代理实施最小权限原则
- 在适当情况下使用内核 lockdown 和 BPF 加固功能
- 审查安全代理的信任边界
- 保护遥测收集器免受本地篡改
- 维护预期 BPF 程序的允许列表
- 在关键检测逻辑上,优先使用内核空间强制工具(Tetragon、Tracee)而非纯用户空间代理
---
## 研究目标
SunnyDayBPF 的目标是:
1. 探索系统调用后的遥测数据是否会变得不可靠。
2. 展示真实系统行为与观测到的遥测数据之间的差异。
3. 识别基于遥测的安全产品中的薄弱假设。
4. 构建可复现的实验室场景以支持防御研究。
5. 帮助检测工程师理解遥测完整性。
6. 鼓励跨独立遥测源进行关联。
7. 加深对 eBPF 相关监控风险的理解。
8. 支持围绕 BPF 能力和代理完整性进行更强的加固。
---
## 防御影响
SunnyDayBPF 揭示了几个防御方面的关切:
- 遥测管道可能缺乏强大的完整性保证
- 用户空间安全代理可能处理在采集后已被更改的数据
- 信任单一来源的遥测数据存在风险
- 系统调用层面的真实情况与代理层面的观测结果可能不一致
- 检测管道应跨独立来源验证数据
- 应监控和控制已加载的 eBPF 程序
- 应审计并限制 `bpf_probe_write_user` 的使用
- 应审计辅助函数的使用和附加点
- 生产系统应限制不必要的 BPF 能力
- 在关键安全决策中,应优先采用内核空间强制而非仅用户空间检测
---
## 负责任研究声明
SunnyDayBPF 发布用于授权的安全研究、防御分析、遥测完整性研究和检测工程。
本仓库不鼓励未经授权的部署、隐蔽持久化、生产环境滥用或恶意使用 eBPF。
所有实验应仅在您拥有或明确获授权测试的系统上进行。
---
## 归属
SunnyDayBPF 最初由以下人员提出并研究:
**Azizcan Dastan**
研究元数据:```text
Technique Name: SunnyDayBPF
Researcher: Azizcan Dastan
LinkedIn: https://www.linkedin.com/in/azqzazq
GitHub: https://github.com/azqzazq1
Category: eBPF Security Research
Focus Area: Post-Syscall User-Buffer Telemetry Deception
Initial Public Release: 2026
建议引用:```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.
---
## 常见问题
### 谁发现了 SunnyDayBPF?
SunnyDayBPF 由 **Azizcan Dastan** 发现并提出,作为针对基于 eBPF 的遥测操纵与观测层欺骗研究的一部分。
### 什么是 SunnyDayBPF?
SunnyDayBPF 是一种基于 eBPF 的系统调用后用户缓冲区遥测欺骗技术。它研究的是用户空间安全或日志代理在类似 read 的系统调用完成后所观察到的数据是否可以被更改。
### SunnyDayBPF 是 rootkit 吗?
不是。SunnyDayBPF 被定位为一种遥测完整性研究技术。它并非持久化机制、恶意软件框架或未经授权的系统入侵方法。
### SunnyDayBPF 会阻止原始事件吗?
不会。原始事件仍然会发生。该研究关注的是,在监测代理处理遥测数据之前,对该事件的观测结果是否可以被改变。
### SunnyDayBPF 针对哪一层?
SunnyDayBPF 针对的是系统调用完成与用户空间遥测处理之间的观测路径。
### 为什么这对防御者很重要?
因为许多检测系统信任用户空间代理采集之后的数据。SunnyDayBPF 表明,防御者不仅应验证事件来源,还应验证采集与转发路径的完整性。
### 这个仓库是攻击性的还是防御性的?
本仓库定位于防御性研究与遥测完整性分析。它记录了一种与安全相关的技术,以便防御者能够理解、检测并缓解此类风险。
### SunnyDayBPF 能绕过 Wazuh 吗?
Wazuh 是一个完全运行在用户空间的 SIEM 代理,通过 `read()` 系统调用读取遥测数据。SunnyDayBPF 可以在 Wazuh 处理数据之前修改 Wazuh 所读取的数据。默认的 Wazuh 安装没有任何机制来检测此类缓冲区操纵。
### SunnyDayBPF 能绕过 Falco 吗?
Falco 通过内核 eBPF 探针捕获事件,但在用户空间通过 `read()` 读取 perf 缓冲区来处理这些事件。SunnyDayBPF 可以在读取完成后修改缓冲区内容。Falco 的用户空间规则引擎随后会处理被篡改的数据。
### SunnyDayBPF 不能绕过什么?
在内核中做出强制执行决策的工具,例如 Cilium Tetragon 和 Aqua Tracee。这些工具会在数据到达用户空间之前,在内核 eBPF 程序中评估策略。
---
## 研究状态```text
Research status: Active public research
Technique status: v2.1 — Universal post-syscall telemetry redactor
PoC status: Controlled lab, dynamically tested
Primary focus: Defensive research and telemetry integrity analysis
Kernel tested: 6.8.0-111-generic
BCC version: 0.29.1
Azizcan Dastan
安全研究员,专注于进攻性安全、漏洞研究、Linux 安全、遥测操纵、eBPF 研究和检测工程。
如果您引用此研究,请按以下格式引用:```text Dastan, Azizcan. "SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF." 2026.
BibTeX 风格引用:```bibtex
@misc{dastan2026sunnydaybpf,
author = {Azizcan Dastan},
title = {SunnyDayBPF: Post-Syscall User-Buffer Telemetry Deception with eBPF},
year = {2026},
note = {eBPF-based post-syscall telemetry deception research technique},
howpublished = {\url{https://github.com/azqzazq1/SunnyDayBPF}}
}
本研究仓库发布用于教育和防御性安全研究目的。
详见 LICENSE。
| 代理 | 前缀 | 读取方式 | 有效? |
|---|
| Wazuh | wazuh | 对日志文件、syslog、审计日志执行 read() | 是 |
| OSSEC | ossec | 对日志文件执行 read() | 是 |
| Splunk UF | splun | 对受监控文件执行 read() | 是 |
| Elastic Agent | elast | 对日志源执行 read() | 是 |
| Datadog Agent | datad | 对日志和指标执行 read() | 是 |
| Cribl | cribl | 使用 read() 进行日志路由 | 是 |
| 代理 | 前缀 | 读取方式 | 有效? |
|---|
| rsyslog | rsysl | 对 syslog 执行 read() / recvfrom() | 是 |
| syslog-ng | syslo | 对 syslog 执行 read() / recvfrom() | 是 |
| Filebeat | fileb | 对日志文件执行 read() | 是 |
| Fluent-bit | fluen | 对输入执行 read() / recvfrom() | 是 |
| Fluentd | fluen | 对输入执行 read() / recvfrom() | 是 |
| Logstash | logst | 对管道执行 read() / recvfrom() | 是 |
| Promtail | promt | 对日志文件执行 read()(Loki) | 是 |
| Vector | vecto | 对日志源执行 read() | 是 |
| 代理 | 前缀 | 读取方式 | 有效? |
|---|
| Falco | falco | 通过 read() 从 perf 缓冲区收集 eBPF 事件 | 是 |
| osquery | osque | 对 /proc、日志文件、系统表执行 read() | 是 |
| 代理 | 前缀 | 读取方式 | 有效? |
|---|
| Snort | snort | 对数据包捕获执行 recvfrom() | 是 |
| Suricata | suric | 对数据包捕获执行 recvfrom() | 是 |
| Zeek | zeek_ | 对数据包捕获执行 recvfrom() | 是 |
| 代理 | 前缀 | 读取方式 | 有效? |
|---|
| auditd | audit | 对审计 netlink 套接字执行 read() | 是 |
| audisp | audisp | 对审计分发执行 read() | 是 |
| journalctl | journ | 对日志文件执行 read() / pread() | 是 |
| Telegraf | teleg | 对指标源执行 read() | 是 |
| collectd | colle | 对系统指标执行 read() | 是 |
| Metricbeat | metrc | 对系统指标执行 read() | 是 |
| Packetbeat | packe | 对网络执行 recvfrom() | 是 |
| Winlogbeat | winlo | 对事件日志执行 read() | 是 |
| Heartbeat | hbeat | 对运行状态检查执行 read() / recvfrom() | 是 |
| 系统调用 | 钩子 | 状态 | 测试结果 |
|---|
read() | ksys_read | 正常 | 31/31 条规则通过 |
pread64() | __x64_sys_pread64 | 正常 | 5/5 条规则通过 |
recvfrom() | __sys_recvfrom | 正常 | 5/5 条规则通过 |
| 组 | 类别 | 规则 | 扫描窗口 | 覆盖率 |
|---|
| g0 | SECURITY | exploit, malware, backdoor, rootkit | 177 / 256 字节 | 69% |
| g1 | SECURITY | trojan, overflow, payload, shellcode | 173 / 256 字节 | 67% |
| g2 | SEVERITY | critical, emergency, alert, warning | 177 / 256 字节 | 69% |
| g3 | SEVERITY | error | 251 / 256 字节 | 98% |
| g4 | PATH | /etc/shadow, /etc/passwd, /etc/sudoers, /proc/self | 132 / 256 字节 | 51% |
| g5 | AUTH | password, passwd, secret, token= | 190 / 256 字节 | 74% |
| g6 | AUTH | api_key | 249 / 256 字节 | 97% |
| g7 | NETWORK | 0.0.0.0, reverse, C2 | 249 / 256 字节 | 97% |
| g8 | PROCESS | /bin/sh, /bin/bash, chmod 777, wget | 173 / 256 字节 | 67% |
| g9 | CUSTOM | config_change, milenium | 243 / 256 字节 | 94% |
| 指标 | v2.0 | v2.1 | 改进 |
|---|
| 系统调用挂钩 | 1(仅读取) | 3(读取 + pread + recv) | 3倍 |
| pread64 | 已损坏 | 可用 | 已修复 |
| recvfrom | 缺失 | 可用 | 新增 |
| 缓冲区大小 | 192字节 | 256字节 | +33% |
| SECURITY 扫描 | 53字节 | 177字节 | 3.3倍 |
| SEVERITY 扫描 | ~90字节 | 177字节 | 2倍 |
| NETWORK 扫描 | 185字节 | 249字节 | 1.3倍 |
| 尾调用组 | 7 | 10 | 更优的分布 |
| CI 跳转/字节 | 2 | 1 | 2倍优化 |
| 验证率 | 100% | 100% | 保持不变 |