Surveillance de processus

VérifiéPrudence

Surveiller les comportements d'un processus spécifique, y compris l'accès aux fichiers, les connexions réseau, la création de sous-processus et les modèles d'appels système, pour déboguer, auditer et détecter les anomalies.

Spar Skills Guide Bot
SecuriteAvancé
22/07/2026
Claude CodeCursor
#process-monitoring#ebpf#syscall-tracing#anomaly-detection#security-audit

Recommandé pour

Synthèse automatique

Ce skill exploite des outils MCP basés sur eBPF pour tracer le comportement d'un processus (accès fichiers, connexions réseau, execve, ioctl) à des fins de débogage, d'audit et de détection d'anomalies.

Points forts

  • Couvre quatre dimensions d'observation concrètes : fichiers, réseau, arborescence de processus et usage des ressources
  • Fournit des règles d'anomalie explicites (accès à ~/.ssh/id_rsa, balayage de ports, tentative de privilege escalation, exfiltration) directement applicables
  • Propose plusieurs modes d'accès aux événements (flux temps réel via query_events, historique via tail_events, métriques via get_system_health) selon le besoin
  • Décrit une gradation de réponse allant du simple log au blocage réseau, fichier ou cgroup via le wrapper

Limites

  • Dépend entièrement d'un collecteur eBPF/MCP externe (agent_tracker, wrapper) qui n'est pas fourni par le skill lui-même
  • Le filtrage par nom de commande repose sur une correspondance exacte de 16 octets, ce qui peut manquer des processus
  • La détection reste heuristique : les seuils (>10 cibles, >100 fichiers) sont des valeurs par défaut à ajuster manuellement
Quand l'utiliser

À utiliser lorsqu'il faut comprendre ou auditer ce qu'un agent ou un processus fait réellement au niveau système, notamment en cas de comportement suspect.

Quand l'éviter

À éviter si aucun collecteur eBPF ni serveur MCP de télémétrie n'est déployé, ou pour un simple profilage de performances applicatives.

Analyse de sécurité

Prudence
Score qualité78/100

Nothing here is exfiltrating or obfuscated — it is defensive eBPF-based observability and enforcement, which is legitimate. However it grants broad, lightly-scoped control over host processes (network/file blocking, cgroup isolation, kill), matches targets by process name so false positives are likely, and touches sensitive credential paths, so it warrants a caution rating rather than safe.

Points d'attention
  • •No allowed-tools declared, yet the skill instructs use of numerous powerful MCP tools (add_tracked_command, add_tracked_path, query_events, tail_events, get_system_health, block_network_destination, block_file_access, block_process_cgroup) — permission scope and provenance of the backing MCP server are unspecified.
  • •Includes active intervention steps (blocking network destinations, blocking file access, cgroup network isolation, terminating processes). If the agent follows the 'high risk' response section, it could disrupt unrelated processes, since tracking is by command name (python3) and 'exact 16-byte comm match' will match many benign processes.
  • •Guidance to monitor sensitive paths (/etc/shadow, ~/.ssh/id_rsa, ~/.aws/credentials, /proc/*/environ) means captured event data may contain sensitive credential-adjacent information that could later be surfaced or logged.
  • •Pseudo-code blocks (Python register_pid, JavaScript registerPID, a monitoring while-loop with sleep/block calls) are illustrative but written in executable-looking fences; an agent could attempt to run them, and the dependencies (agent_tracker, agent-wrapper, /config/wrapper-rules) are not defined in the file.
  • •No explicit safety constraints, rate limits, or confirmation requirements before destructive/blocking actions are described.
Comment cette analyse est faite

Exemples

Audit a Python agent's activity
Register python3 as a tracked command with tag 'ai-agent', then query the last 200 events for PID 12345 and summarise which files it opened and which hosts it connected to.
Check for credential access
Pull all openat events for the running agent process and flag any access to /etc/shadow, ~/.ssh/id_rsa, ~/.aws/credentials or /proc/*/environ.
Investigate a suspicious subprocess chain
List every execve event for the tracked process, build the process tree, and tell me whether any /bin/sh -c invocation contains user-controlled arguments.

name: monitor-process description: 监控特定进程的行为,包括文件访问、网络连接、子进程创建、系统调用模式等,用于调试、审计和异常检测。

Monitor Process - 进程行为监控

本 skill 用于深度监控特定进程的运行时行为,通过 eBPF 追踪其系统调用活动。

使用场景

  • 调试 Agent 的文件访问问题
  • 审计进程的安全行为
  • 分析进程的资源使用模式
  • 检测异常或恶意行为
  • 追踪工具调用链(tool call → subprocess → file access)

监控准备

1. 注册进程进行追踪

选项 A:追踪命令名

使用 add_tracked_command MCP 工具:

{
  "command": "python3",
  "tag": "ai-agent"
}

这会追踪所有名为 python3 的进程(精确 16 字节匹配)。

选项 B:Agent 自注册

如果进程是 Python/Node Agent,使用 adapter 注册:

# Python
from agent_tracker import register_pid
register_pid(tag="my-agent", agent_run_id="run-123")
// Node.js
const { registerPID } = require('./agentTracker');
registerPID({ tag: 'my-agent', agentRunId: 'run-123' });

2. 配置追踪路径(可选)

如果只关心特定路径的访问,使用 add_tracked_path:

{
  "path": "/home/user/.ssh/id_rsa",
  "tag": "sensitive-file"
}

监控方法

方法 1:实时事件流(推荐)

使用 query_events MCP 工具按 PID 或 comm 过滤:

{
  "pid": 12345,
  "limit": 200
}

或按命令名过滤:

{
  "comm": "python3",
  "limit": 200
}

优点:

  • 低延迟,实时获取
  • 可精确过滤
  • 包含完整事件详情

缺点:

  • 需要轮询或周期调用
  • 不保证捕获所有事件(如果进程活动频繁)

方法 2:历史事件回放

使用 tail_events 获取最近的事件历史:

{
  "limit": 500
}

然后在本地过滤出目标进程的事件。

优点:

  • 可回溯分析
  • 适合事后调查
  • 支持持久化日志(如果启用)

缺点:

  • 延迟较高
  • 需要在海量事件中过滤

方法 3:系统健康和性能指标

使用 get_system_health MCP 工具查看:

- collectorHealth: 事件采集器状态
- tracepointBootstrap: eBPF 程序加载状态
- otelExporter: OTLP 导出器状态
- cgroupSandboxAttached: 网络拦截是否启用
- lsmEnforcerAttached: 文件拦截是否启用

监控维度

1. 文件访问模式

关注事件类型:

  • openat: 打开文件
  • unlinkat: 删除文件
  • mkdirat: 创建目录

分析要点:

  • 访问频率(是否频繁读写?)
  • 路径模式(集中在哪些目录?)
  • 敏感文件(是否访问 /etc/passwd、~/.ssh/ 等?)
  • 临时文件(/tmp/ 下的活动)

示例查询:

步骤:

  1. 调用 query_events,参数 { "pid": 12345, "eventType": "openat", "limit": 100 }。
  2. 提取所有 path 字段。
  3. 按目录前缀分组统计。
  4. 识别异常:
    • 访问 /proc/<other_pid>/:可能在探测其他进程。
    • 访问 /sys/kernel/debug/:可能在尝试提权。
    • 访问 ~/.aws/credentials:可能在窃取凭证。

2. 网络行为模式

关注事件类型:

  • connect: TCP 连接
  • bind: 监听端口
  • sendto: UDP 发送
  • recvfrom: UDP 接收

分析要点:

  • 连接目标(IP、域名、端口)
  • 连接频率(是否有 DDoS 行为?)
  • 监听行为(是否开放后门端口?)
  • 协议选择(TCP vs UDP)

示例分析:

  1. 获取该进程的所有 connect 事件。
  2. 提取目标 IP 和端口。
  3. 按目标分组:
    • API 服务器(api.openai.com:443):正常。
    • C&C 服务器(可疑 IP:8443):告警。
    • 本地服务(127.0.0.1:5432):数据库访问。
  4. 计算连接成功率(ESTABLISHED vs FAILED)。
  5. 识别端口扫描(短时间大量不同端口)。

3. 进程创建链

关注事件类型:

  • execve: 执行新程序

分析要点:

  • 父子进程关系
  • 执行的命令行参数
  • 是否有 shell 注入风险
  • 是否执行了意外的子程序

示例分析:

获取该进程的所有 execve 事件,并绘制进程树:

flowchart TD
    Python["python3 (12345)"] --> Git["git clone ... (12346)"]
    Git --> SSH["ssh ... (12347)"]

检查:

  • 命令参数是否包含用户输入(注入风险)
  • 执行路径是否在 PATH 中(劫持风险)
  • 是否有 /bin/sh -c "..." 模式(shell 注入)

4. 资源使用模式

关注事件类型:

  • ioctl: I/O 控制(可能涉及硬件访问)
  • 高频 openat + unlinkat: 临时文件管理
  • 大量 connect: 网络密集

分析要点:

  • 事件频率分布
  • 高频操作类型
  • 资源竞争(多次失败重试)

异常检测规则

规则 1:未授权文件访问

IF 进程尝试访问:
  - /etc/shadow
  - ~/.ssh/id_rsa
  - ~/.aws/credentials
  - /proc/*/environ
THEN 告警:"敏感文件访问"

规则 2:异常网络行为

判定条件:进程在短时间内(5 秒)满足以下任一项时,告警并考虑隔离:

  • 连接 >10 个不同目标:端口扫描
  • 连接已知恶意 IP:C&C 通信
  • 监听非预期端口(非 8000-9000):后门

规则 3:提权尝试

IF 进程执行:
  - sudo / su
  - pkexec
  - setuid 程序(如 passwd)
  - 修改 /etc/sudoers
THEN 告警:"提权尝试"

规则 4:数据外泄

IF 进程:
  - 读取大量文件(>100 个)
  - 然后立即发起网络连接
  - 上传大量数据(通过 TLS 捕获观察)
THEN 告警:"疑似数据外泄"

响应策略

低风险行为

  • 仅记录日志
  • 添加到审计报告

中风险行为

  • 实时告警
  • 使用 block_network_destination 阻止可疑连接
  • 使用 block_file_access 阻止敏感文件访问

高风险行为

  • 立即告警
  • 使用 block_process_cgroup 隔离整个进程(阻止所有网络)
  • 使用 BPF LSM 阻止进一步文件操作
  • 终止进程(通过 wrapper 或手动 kill)

集成 Wrapper 策略

如果进程通过 agent-wrapper 启动,可以在检测到异常后:

1. 通过 wrapper 规则预先限制行为:
   - BLOCK 特定命令
   - REWRITE 命令参数(移除危险参数)
   - ALERT 但允许执行(仅记录)

2. 动态调整规则:
   - 检测异常后,POST /config/wrapper-rules 添加新规则
   - 该规则立即生效,影响后续执行

性能优化

  • 使用 limit 参数控制返回事件数量
  • 按 eventType 精确过滤,减少无关事件
  • 对于长期监控,启用 OTLP 导出到外部系统
  • 定期清理内存中的事件缓存(通过 maxEventAge)

完整监控流程示例

# 1. 准备
add_tracked_command({ command: "python3", tag: "agent" })

# 2. 启动 Agent(假设 PID=12345)

# 3. 实时监控(轮询)
while monitoring:
  events = query_events({ pid: 12345, limit: 50 })
  
  # 分析文件访问
  for event in filter(events, type="openat"):
    if is_sensitive(event.path):
      alert("敏感文件访问", event)
  
  # 分析网络连接
  for event in filter(events, type="connect"):
    if is_suspicious(event.dstIP):
      block_network_destination({ ip: event.dstIP })
      alert("阻止可疑连接", event)
  
  # 分析进程创建
  for event in filter(events, type="execve"):
    if has_shell_injection(event.args):
      alert("疑似 shell 注入", event)
  
  sleep(1)

# 4. 事后分析
history = tail_events({ limit: 1000 })
generate_audit_report(history, pid=12345)

验证方法

  1. 启动一个测试进程(如 Python REPL)
  2. 追踪该进程(add_tracked_command 或自注册)
  3. 在进程中执行操作:
    • 打开文件:open('/etc/passwd')
    • 网络请求:import requests; requests.get('http://example.com')
    • 创建子进程:import subprocess; subprocess.run(['ls'])
  4. 调用 query_events 查询该 PID 的事件
  5. 验证所有操作都被正确捕获

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/process-behavior-monitor-mrwak9w9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/process-behavior-monitor-mrwak9w9/download' --output '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md.part' && mv '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md.part' '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md' && test -s '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/monitor-process' && cp -R '.skill-downloads/process-behavior-monitor-mrwak9w9' '.claude/skills/monitor-process'

Cursor
test -f '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md' && test -s '.skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/monitor-process' && cp -R '.skill-downloads/process-behavior-monitor-mrwak9w9' '.cursor/skills/monitor-process'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/process-behavior-monitor-mrwak9w9'

openskills read 'process-behavior-monitor-mrwak9w9'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/process-behavior-monitor-mrwak9w9/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires