文章总结: C2Signal是一个基于Docker的多引擎检测工作台,整合YARA、Chainsaw和Suricata引擎,用于对文件、EVTX和PCAP进行快速分诊。它通过路由机制避免规则混用,强调安全设计如不执行文件、限制权限和默认本地绑定。适合一线安全人员离线使用,但v0.1.0版本功能有限,依赖规则质量且无多租户支持。 综合评分: 87 文章分类: 安全工具,应急响应,威胁情报,恶意软件,实战经验
工具 | C2 Signal:把 YARA / Sigma / Suricata 收进一个 Docker 的制品分诊台
原创
mimi3389 mimi3389
赛博生存指南
2026年7月5日 08:58 浙江
在小说阅读器读本章
去阅读
codex vibe 的 yara web 版,有啥开源审计工具发我,我缝一下。
din4e/c2-signal · v0.1.0 · MIT · Go 1.24 + Next.js 16 · 2026-07-04 首发
一句话定位
C2 Signal 是一个用 Docker 一键起的多引擎检测工作台。你把一个制品(文件、压缩包、EVTX、PCAP)丢进去,它按类型把制品路由到对应的检测引擎——YARA、Chainsaw(跑 Sigma)、Suricata——然后把命中的规则、严重度、来源原原本本告诉你。
防御向。不落地执行、不联网回连、不替你下结论。
它想解决的问题
做应急响应或样本初筛的时候,常见的尴尬是:手里有一坨文件,但你得自己分别拉起 YARA 扫文件、用 Chainsaw 翻 EVTX、用 Suricata 看 PCAP,再手动把结果拼到一起。规则散落各处、版本对不齐、前端基本靠命令行。
C2 Signal 把这件事收成一个 Web 控制台:一条上传入口,背后按制品类型分流,结果统一成一套 schema 展示,并保留扫描历史。它不发明新的检测算法,只是把现成的、可信的开源引擎和规则集,装进一个默认安全的容器里跑给你看。
图 1:检测控制台——上传后展示检测器状态、SHA-256 与扫描历史
检测路由(这是核心设计)
| 上传类型 | 检测器 | 规则来源 |
| — | — | — |
| 普通文件 / 二进制 / 文档 / 压缩包 | YARA | Yara-Rules、Elastic protections-artifacts、Cobalt Strike YARA、Detect It Easy YARA、本地规则 |
| Cobalt Strike Beacon / BOF / 解码配置 | YARA + CS 专用分类 | Te-k、Elastic 与rules/yara/cobalt_strike_beacon.yar |
| Windows.evtx | Chainsaw | SigmaHQ Windows 规则 |
| .pcap /.pcapng | Suricata | rules/suricata/ 与 Suricata 内置协议事件规则 |
值得说的是它对“规则格式不能混用”这点拎得比较清。README 里专门强调:Elasticdetection-rules、Splunksecurity_content 和 Sigma 不是同一种可执行格式,各自需要对应的事件字段和查询后端,所以不会错误地往普通二进制上套。EVTX 走 SigmaHQ,普通制品走 YARA,PCAP 走 Suricata,引擎之间不跨格式叠加——避免把网络载荷里的字符串当文件特征。这个判断是对的,而且很多人会在这踩坑。
图 2:Cobalt Strike 命中——规则分组、严重度与规则来源
技术栈一眼
- 后端:Go 1.24,单服务,模块名
c2signal/scanner。 - 前端:Next.js 16.2 + React 19,
output: 'export'静态导出。 - 部署:静态产物由 Go 直接 serve,生产环境不需要额外 Node 运行时。
- 三引擎:YARA(VirusTotal 官方)、Chainsaw 2.16.0(WithSecureLabs)、Suricata 8.0.5。
- 规则:按固定 commit 拉取 Yara-Rules、Elastic protections-artifacts、Te-k 的 Cobalt Strike YARA、Detect It Easy YARA、SigmaHQ,全部进
.gitignore的rulesets/,不进项目 Git 历史。
架构很“小而硬”:Go 一个二进制 + 静态前端 + 三个外部引擎进程,没有数据库,扫描历史就是 Docker 卷里的 JSON。
安全设计(这是它最认真做的事)
- 不执行上传文件,不用上传文件名构造存储路径。
- 默认限制 100 MB 上传、2 个并发任务、每次扫描 180 秒。
- 扫描结束后默认删除上传文件;元数据与结果以 JSON 保存在 Docker 卷
/data/history。 - 解析命令通过参数数组调用,不经过 shell(避开命令注入面)。
- 容器只读、非 root、移除全部 capabilities、禁止提权,并限制 PID / CPU / 内存。
- Web 默认绑定宿主机
127.0.0.1:8080,容器走独立 bridge 网络。
README 也老实提醒:要对外开(C2_SIGNAL_BIND=0.0.0.0)就得自己加防火墙、身份认证和 TLS;解析恶意文件仍可能触发第三方解析器漏洞,生产环境要放独立主机或 VM,别挂 Docker socket、宿主敏感目录或生产凭据。这种“我不替你兜底”的诚实,比把功能吹上天有用。
跑起来
仅本地规则:
make up
拉一份固定版本的社区规则后再起:
make rules make up
打开http://127.0.0.1:8080。首次构建会现场编译 Chainsaw,慢;之后走 Docker 缓存。
几个体验上的细节
- 点命中的 YARA 规则,能跳到源文件并定位到具体规则声明和行号——这个精度在同类工具里不常见。
- 本地 YARA 支持页面新建 / 编辑,保存前自动编译校验,保存后热重载;停用就是给文件加个
.disabled后缀,朴素但有效。 - 结果状态明确三档:
clean(所有该跑的检测器都跑完且无命中)、matched(至少一条命中)、inconclusive(检测器缺失 / 超时 / 出错,不能视为安全)。它反复强调“无命中 ≠ 安全”,这点对使用者是负责任的。
图 3:YARA 规则源文件查看器——定位到具体规则声明与行号
图 4:本地 YARA 配置中心——新建、编辑、校验、启停与热重载
客观地说几句不足
- v0.1.0,2026-07-04 才首次公开,截至撰稿 star 还是 0,后续维护节奏需要观察。
- 它是分诊台,不是裁决器。检测上限完全取决于你挂的规则集质量和时效——规则旧了,新的 C2 框架照样漏过去。
- 没有多租户、身份认证、审计日志,定位是单机自用;团队用要自己在前面补一层网关。
- 没有内置社区规则,得手动
make rules拉取;不拉就只有本地规则,能力会大打折扣。
适合谁
手里经常要初筛未知文件、翻 EVTX 日志、拆 PCAP 的一线安全人员、蓝队、IR,想要一个本地、可离线、默认安全、不依赖云沙箱的快速分诊台。
如果你要的是自动化裁决、联动 EDR、或云端规模化吞吐,它不是这个层级的东西——把它当成一台“放桌上的多引擎读码器”更准确。
项目地址:https://github.com/din4e/c2-signal
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博生存指南 mimi3389 mimi3389《工具 | C2 Signal:把 YARA / Sigma / Suricata 收进一个 Docker 的制品分诊台》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论