关于 threat-hunting
面向蓝队的企业威胁狩猎技能,指导使用取证工具和分析方法调查网络威胁,并关联事件。
主要功能
- 01使用 Volatility 分析内存转储
- 02用 Zeek 检查网络日志
- 03查询 Elasticsearch 威胁模式
- 04使用 Plaso 生成取证时间线
- 05通过 Sigma 关联日志
适用场景
- 01调查可疑终端活动
- 02排查异常网络流量
- 03分析入侵后的取证数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill threat-hunting安装后在 Claude Code 中输入/threat-hunting确认已加载。
详细介绍
威胁狩猎
目的
此技能利用取证工具和分析技术,在企业环境中主动检测并响应高级网络威胁。重点是通过数据驱动的方法识别异常、调查事件并降低风险。
使用时机
在进行主动威胁调查时使用此技能,例如调查异常网络流量、端点异常或入侵后的分析。可将其用于蓝队运营,例如监控入侵指标(IOC)、在大规模网络中定期开展狩猎,或与 SIEM 系统集成以获取实时警报。
核心能力
- 使用 Volatility 分析内存转储,以检测恶意软件进程。
- 使用 Zeek 解析网络日志,以识别可疑连接。
- 通过自定义查询检索 Elasticsearch 中的威胁模式。
- 使用 Plaso 等工具根据取证数据生成时间线。
- 使用 Sigma 规则自动关联威胁,以分析日志。
使用模式
首先从端点或网络收集数据,然后应用分析技术来识别威胁。例如,使用以下管道:摄取日志 → 运行查询 → 关联事件 → 响应。始终将狩猎范围限定为特定 IOC 或时间窗口。如果要与自动化集成,请将命令封装在脚本中,并处理输入验证和输出解析。对于多步骤狩猎,可串联使用 Zeek 进行捕获、使用 Elasticsearch 进行索引等工具。
常用命令/API
使用以下命令执行威胁狩猎任务。设置用于身份验证的环境变量,例如,导出 $ELASTICSEARCH_API_KEY 以访问 API。
-
使用 Volatility 进行内存取证:
volatility -f memory.dump --profile=Win7SP1x64 pslist
此命令会列出进程;添加-o output.json可保存结果。 -
使用 Zeek 进行网络分析:
zeek -r capture.pcap policy/scripts
接着使用zeek-cut conn.log | grep "suspicious_ip"筛选日志。 -
使用 Elasticsearch API 查询日志:
使用端点:POST https://es.example.com/_search,请求体为:
{ "query": { "match": { "message": "malware" } } }
通过请求头进行身份验证:Authorization: Bearer $ELASTICSEARCH_API_KEY。 -
使用 Plaso 生成时间线:
log2timeline.py --storage-file timeline.plaso /path/to/logs
然后查询:psort.py -w output.csv timeline.plaso。
配置格式:Elasticsearch 查询使用 JSON(例如上文所示),Zeek 策略使用 INI(例如 [site] interface=eth0)。
集成说明
可通过管道传递输出,将此技能与其他蓝队工具集成,例如通过 Logstash 将 Zeek 日志发送到 Elasticsearch。对于 API 集成,请在脚本中使用 $ELASTICSEARCH_API_KEY:
curl -H "Authorization: Bearer $ELASTICSEARCH_API_KEY" -X POST https://es.example.com/_ingest/pipeline
确保工具使用 JSON 等格式交换数据。如果使用容器,请挂载卷以访问取证数据,例如使用 Docker 运行时添加 -v /host/logs:/container/logs。在沙盒中测试集成,避免影响生产环境。
错误处理
检查常见错误,例如 Volatility 中的配置文件无效(例如,如果 --profile 不匹配,会输出 "Error: No suitable profile found";请使用 volatility --info 列出可用选项后重试)。对于 API 调用,请处理 4xx/5xx 响应:
import requests; response = requests.post(url, headers={'Authorization': f'Bearer {os.environ.get("ELASTICSEARCH_API_KEY")}'}); if response.status_code != 200: raise ValueError(response.text)
在脚本中使用 try-catch 处理文件未找到错误;例如,在 Zeek 中处理前检查 pcap 文件是否存在。将错误连同时间戳记录到文件中,以便审计。
具体使用示例
-
检测内存转储中的恶意软件:
首先,导出$VOLATILITY_PATH=/path/to/volatility。运行:volatility -f suspect.dump --profile=Linuxx64x64 pslist | grep "suspicious_process"。如果发现匹配项,则通过脚本发出警报:echo "Threat detected" >> alert.log。 -
狩猎网络异常:
使用 Zeek 捕获流量:zeek -i eth0 -C。然后查询:zeek-cut conn.log | awk '$3 == "192.168.1.100" {print}'。与 Elasticsearch 集成:curl -H "Authorization: Bearer $ELASTICSEARCH_API_KEY" -d '{"query":{"match":{"source_ip":"192.168.1.100"}}}' https://es.example.com/_search。
图关系
- 相关:blue-team(集群),因为它共享用于防御性操作的工具。
- 通过标签连接:threat-hunting(直接匹配)、cybersecurity(与检测技能重叠)、blue-team(集群关联)。
- 链接到:其他 blue-team 技能,例如用于后续操作的“incident-response”,以及用于深入数据检查的“forensics-analysis”。