PI

praetorian-inc/reduce-golang-detections-skill

API 开发

本页由 AI 翻译,技术细节请以原文为准。 查看原文

20 stars 质量 49 趋势 14Apache-2.0

Claude Code 技能,通过 PE 结构分析和严格的 A/B 测试,系统性降低已编译 Go 二进制的 VirusTotal/EDR 检测率。

概览

一项Claude代码技能,通过结构分析、迭代A/B测试和机器学习特征向量优化,系统性降低编译Go二进制文件上的VirusTotal和EDR检测率。 发布后将在这里链接配套的博客文章。 现代 Go 二进制的 EDR 检测主要由统计机器学习分类器(如 Microsoft Wacatac.B!ml、ML.Attribute.HighConfidence、MalwareX-gen、Evo-gen)而非固定字节的 YARA 规则所主导。破解机器学习分类器与破解签名是根本不同的问题——重命名字符串和交换导入通常会使检测更差,因为最终的二进制与分类器已学会的“正常”标准工具链基线更为偏离。 该技能为该问题提供了一套严谨的方法论: - 将每个命中标记为YARA风格或ML风格。修复方法不同且不可互换。

概述(AI 翻译)

一项Claude代码技能,通过结构分析、迭代A/B测试和机器学习特征向量优化,系统性降低编译Go二进制文件上的VirusTotal和EDR检测率。

一篇配套博客文章发布后将链接在此。

这是什么

现代 Go 二进制的 EDR 检测主要由统计机器学习分类器(例如 Microsoft Wacatac.B!ml、ML.Attribute.HighConfidence、MalwareX-gen、Evo-gen)而非固定字节的 YARA 规则。破解机器学习分类器与破解签名是根本不同的问题——重命名字符串和交换导入通常会使检测变得更差,因为最终的二进制与分类器已学会的“正常”标准工具链基线相径更远。

该技能为该问题提供了一套严谨的方法论:

  • 修复前的分诊检测类型。 将每次命中标记为YARA风格或ML风格。修复方法不同且不可互换。
  • 每个实验更换一个变量。 每个臂、对照组和变异组在同一VT上传窗口内构建10–20个样本——Wacatac大致以每日频率进行重新训练,因此昨天的对照批次不算有效的A/B测试。

本页由 AI 翻译,技术细节请以原文为准。

README

以下为原文 README 节选,完整内容请查看原文。

reduce-golang-detections-skill

A Claude Code skill for systematically reducing VirusTotal and EDR detection rates on compiled Go binaries through structural analysis, iterative A/B testing, and ML feature vector optimization.

A companion blog post will be linked here once published.

What this is

Modern EDR detections on Go binaries are dominated by statistical ML classifiers (e.g. Microsoft Wacatac.B!ml, ML.Attribute.HighConfidence, MalwareX-gen, Evo-gen) rather than fixed-byte YARA rules. Defeating an ML classifier is a fundamentally different problem from defeating a signature — renaming strings and swapping imports often makes detection worse, because the resulting binary diverges further from the vanilla toolchain baseline the classifier has learned as “normal.”

This skill packages a disciplined methodology for that problem:

  • Triage detection type before remediation. Label every hit as YARA-style or ML-style. The fixes are different and not interchangeable.
  • Change one variable per experiment. 10–20 samples per arm, control and variant built in the same VT upload window — Wacatac retrains on roughly a daily cadence, so a control batch from yesterday is not a valid A/B test.
  • Measure with a comprehensive PE structural analyzer (included) before and after each change, and compare deltas against a vanilla binary from the same toolchain.
  • Camouflage, not concealment. Give the classifier a believable answer to “what is this binary?” — mimicking the gopclntab symbol fingerprint of a single coherent large Go project consistently outperforms stripping, padding, or obfuscation.
  • Recognize the irreducible floor. Once detection drops to ~15–25% on VirusTotal (the stochastic floor near the ML threshold), further structural optimization rarely pays back, and VT is not ground truth for real endpoints.

What’s in the box

File Purpose
SKILL.md The skill itself — methodology, prerequisites, phased workflow, and the core principles above. Load this into Claude Code.
pe_structural_analyzer.py Standalone Python analyzer that extracts the full PE structural feature vector (sections, imports, exports, resources, gopclntab, entropy, etc.) and produces a baseline/delta JSON report.
references/pe-structural-analyzer.md How to run the analyzer and interpret its output.
references/pe-structural-features.md Catalog of structural features observed across vanilla vs. modified Go builds, with which features actually correlate with detection.
references/experiment-categories.md Catalog of experiment categories that have and have not worked in practice, including dead ends to avoid.

Requirements

  • Python 3 with pefile and lief (a venv is recommended; on PEP 668 systems use --break-system-packages if you must install system-wide).
  • A VirusTotal API key.
在 GitHub 查看完整 README

推荐工具

换一个关键词,或者移除筛选条件。

安装

npx skillfish add praetorian-inc/reduce-golang-detections-skill
新手?先看 mcpskill.org 教程 →