OpenSource-For-Freedom/git_warden

GitHub: OpenSource-For-Freedom/git_warden

一款防御性威胁情报引擎,通过多源情报聚合与两级静态分析自动发现、确认并编录 GitHub 上的恶意代码仓库。

Stars: 1 | Forks: 0

Git Warden

Version 0.1.0 MIT License Python 3.12+

Intel feeds, static scanners, guarantees

一个防御性的威胁情报引擎,用于发现、分析和编录 **恶意的 GitHub 仓库**。威胁情报源 ([MITRE ATT&CK](https://attack.mitre.org)、[Google News](https://news.google.com)、 [CISA](https://www.cisa.gov)、[OpenSourceMalware](https://opensourcemalware.com)) 是*溯源线索*;它们有助于查找和归因这些仓库。最终产出 是恶意仓库的注册表。 有关设计,请参阅 [docs/](docs/);有关已完成与计划中的功能,请参阅 [docs/IMPLEMENTATION.md](docs/IMPLEMENTATION.md)。 指导原则:**准确率优先于数量。**

## 工作原理 ``` INGEST (breadcrumbs) HUNT (find malicious GitHub repos) MITRE ATT&CK ─┐ ┌─ IOC search: mirror OSM IOCs into Google News ─┼─ corroborate ─► │ GitHub code search ----| CISA ─┘ threat actors ├─ red-team lineage: forks/│ OpenSourceMalware ─► malicious │ renames of pinned tools┤ packages/repos + IOCs ────────────┘ ▼ Tier-1 screen (name+README, no clone) │ Tier-2 (clone + bash scanner + OSS scanners + code-hash dedup) ▼ Wall of Shame ─► Discord gold ```

## 耻辱墙

Wall of Shame

Git Warden 通过静态分析确认的恶意仓库,每次运行时都会刷新。只有当存在 内在的恶意证据(注入到构建配置中的 `eval(atob(...))`、反向 shell、凭证窃取并发送)时,仓库才会被确认; 威胁情报线索(恶意所有者、共享特征)仅用于*筛选*需要扫描的仓库, 单凭线索本身无法确认仓库为恶意。 _经静态分析确认的 12 个恶意仓库,每次运行时重新生成。每一行的证据(文件、行号、规则)均位于运行产物的 CSV 中。如需申诉:请提交一个 issue,我们将重新审查。_ | 仓库 | 检测方式 | 评分 | 归因 | 首次发现 | 原因 | |------------|-----------|-------|-------------|------------|-----| | [`alexsander532/projeto_dashboard_versao1`](https://github.com/alexsander532/projeto_dashboard_versao1) | malicious_owner | 14 | unattributed | hunt-20260620T053126Z | 已知恶意仓库的所有者 Alexsander532 名下的仓库 \| Tier-2 已确认 (bash 评分 14) | | [`usmanaliashraf/portfolio`](https://github.com/usmanaliashraf/portfolio) | signature_match | 12 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 12) | | [`icecoldjay/bri`](https://github.com/icecoldjay/bri) | signature_match | 11 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['eval atob filename:tailwind.config.js'] \| Tier-2 已确认 (bash 评分 11) | | [`alexsander532/atlas_landingpage`](https://github.com/alexsander532/atlas_landingpage) | signature_match | 9 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 8) | | [`alexsander532/mvp_wain_group130`](https://github.com/alexsander532/mvp_wain_group130) | signature_match | 9 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 8) | | [`alexsander532/synapseai_landingpage`](https://github.com/alexsander532/synapseai_landingpage) | signature_match | 9 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 8) | | [`agrawalchirag/corex`](https://github.com/agrawalchirag/corex) | osm_repository | 8 | DPRK (North Korea) (per OSM) | hunt-20260620T043523Z | 在合法的 tailwind 配置之后,将混淆的 eval(atob(...)) payload 注入到 postcss.config.js 中(Tier-2 静态检测)。线索:OSM 查询 | | [`alexsander532/portfolio-pessoal`](https://github.com/alexsander532/portfolio-pessoal) | malicious_owner | 8 | unattributed | hunt-20260620T053126Z | 已知恶意仓库的所有者 Alexsander532 名下的仓库 \| Tier-2 已确认 (bash 评分 8) | | [`alexsander532/synapse_ai`](https://github.com/alexsander532/synapse_ai) | malicious_owner | 8 | unattributed | hunt-20260620T053126Z | 已知恶意仓库的所有者 Alexsander532 名下的仓库 \| Tier-2 已确认 (bash 评分 8) | | [`alexsander532/synapseai`](https://github.com/alexsander532/synapseai) | signature_match | 8 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 8) | | [`haroontaufiq/cosmic-questionnaire`](https://github.com/haroontaufiq/cosmic-questionnaire) | signature_match | 8 | unattributed | hunt-20260620T052811Z | 共享已确认恶意软件的代码签名 ['Jzt2YXIgXyRfMWU0Mj0oZnVuY3Rpb24obCxlKXt2YXIgaD1sLm'] \| Tier-2 已确认 (bash 评分 8) | | [`usmanaliashraf/rag-bot-uet-science-society`](https://github.com/usmanaliashraf/rag-bot-uet-science-society) | malicious_owner | 8 | unattributed | hunt-20260620T053126Z | 已知恶意仓库的所有者 UsmanAliAshraf 名下的仓库 \| Tier-2 已确认 (bash 评分 8) |

## 快速开始 ``` pip install -e ".[dev]" # or run without install: python gw.py cp .env.example .env # add GW_GITHUB_TOKEN, GW_OSM_API_KEY, ... ``` 凭据会自动从 `.env` 加载(实际的 env vars 优先)。Token: | 变量 | 作用 | 备注 | |-----|------|-------| | `GW_GITHUB_TOKEN` | GitHub PAT,**只读公开仓库** | 代码搜索必需,速率限制提升至 5k/hr | | `GW_OSM_API_KEY` | OpenSourceMalware token (`osm_…`) | Bearer auth | | `GW_DISCORD_WEBHOOK` | gold/alert 频道 | 仅限已确认的发现 | (无需 NVD key;目前免费的 OSINT 源和 OSM 已覆盖情报来源。) ## 命令 ``` python gw.py ingest # feeds -> actors + OSM artifacts python gw.py iocs # IOC pivot set mined from OSM python gw.py discover # IOC code search -> new repos python gw.py lineage --tool Sliver --screen 12 # red-team clones + Tier-1 python gw.py screen-artifacts # Tier-1 over OSM repo scan-list python gw.py hunt --scan --gold # full pipeline -> Wall of Shame -> Discord python gw.py review --approve owner/repo # analyst-validate a confirmed repo python gw.py probe --feed github --term lazarus # probe any feed live ``` ## 部署 GitHub Actions([.github/workflows/](.github/workflows/)):`ci.yml` 运行 lint + 测试;`run.yml` 每周运行摄取→狩猎(根据文档 05,初期为手动触发)。每个 工作流都会先加固 runner(Legion 出站审计)。 添加这些 **repo Actions secrets**;工作流会将它们映射到代码读取的 `GW_*` env vars (本地 `.env` 直接使用 `GW_*` 名称): | Repo secret | 映射到 env var. | |-------------|----------------- | | `GH_TOKEN` | `GW_GITHUB_TOKEN` | | `OSM_TOKEN` | `GW_OSM_API_KEY` | | `DISCORD_WEBHOOK` | `GW_DISCORD_WEBHOOK` | 编排配置位于 [config/settings.yaml](config/settings.yaml) 和 [config/trigger.yaml](config/trigger.yaml) 中。 ## 开发 ``` ruff check src tests gw.py pytest -q ```
标签:Python, 威胁情报, 安全, 安全规则引擎, 开发者工具, 恶意代码分析, 无后门, 网络信息收集, 误配置预防, 超时处理, 配置审计, 配置文件