OpenSource-For-Freedom/KNORR
GitHub: OpenSource-For-Freedom/KNORR
KNÖRR 是一款恶意容器镜像静态分析工具,通过分层筛查流程在 Docker Hub 和 GitHub 上发现并确认隐藏在镜像中的挖矿木马、后门等恶意内容。
Stars: 0 | Forks: 0

# KNÖRR
*受污染水域的看守者。那只永不入眠的眼睛。*
[](https://www.python.org/) [](LICENSE)
## 传奇
在记忆诞生之前的时代,当世界树 Yggdrasil 将其根须延伸至九界时,它们之间的海洋中游弋着披着商人外衣的毒蛇。它们驾驶着看似运粮船的船只,暗舱里却装满了毒药。Cryptojacking 守护进程。缝合进 Alpine 镜像中的 reverse shell。与真名极其相似的 Typosquat(域名误植)名称,只有目光清澈的女预言家才能将它们分辨。
众神厌倦了眼睁睁看着注册表中腐烂蔓延。
于是他们派出了 **Knörr**。他不是战士,也不是吟游诗人。而是一艘 *knörr*(商船)。这艘商船曾航行过每一条航线,识破了恶毒暗流的每一种把戏,如今它巡弋在黑暗的注册表中,目光如鹰般锐利,而朴素的船体毫不引人注目。
船长不祈求任何恩惠。他独自航行。
## 狩猎
Knörr 巡逻的水域广袤无垠。
**Docker Hub** 翻滚着数以万计的镜像。大部分是诚实的货物。但其中隐匿着:伪装成 `python:slim` 的 **XMRig**,藏匿于 Redis 伪装中的 **kinsing**,将钱包像刻在骨头上的卢恩字母一样烧录进 manifest 的 **TeamTNT** 活动镜像。
Knörr 分三步行动。没有一步会引人侧目。
**第一重航行:发现**
Knörr 用已知的强力咒语扫荡水面:挖矿木马家族、虚拟币名称、活动徽记。他在已知的恶意港口徘徊,枚举停泊在那里的每一艘船。他将 Official 镜像的名称与模仿者、typosquat 的名称进行比对,并标记出那些与真相仅有一字之差的名称。
**第二重航行:一级筛查**
不拉取任何层(layer)。不打开任何货物。Knörr 阅读 manifest,阅读 config。他为这些信号评分:内置的矿池地址、stratum 连接、携带钱包字符串的环境变量、在暗处生成 shell 的 entrypoint。被证实的恶意无需更深层的审视。它会被记录在案,写在海墙上,然后船长继续前行。
**第三重航行:二级清算**
对于那些低语而非咆哮的线索,那些仅凭 manifest 无法定罪的线索,Knörr 会拉取层。他跨过 SBOM 运行 Trivy。他阅读字符串。他找出深藏不露之物。
绝无任何东西被执行。绝不妄加假设。船长解读卢恩字母并记录真相。
**跨越海洋的触达**
Knörr 不仅在注册表的水域航行。他还跨界进入 **GitHub**,在恶意 Dockerfile 发布之前对其进行狩猎。发布前的攻击面、构建文件、受污染的源码:这些他也尽收眼底。单纯的 pipeline 扫描器永远做不到这一点。
**恶意所有者之墙**
当一个账户中的某一艘船被证实有毒时,整个港口都成了嫌疑对象。Knörr 以所有者为轴心,枚举其整个船队,并揪出这个恶意行为者停靠过的每一个镜像。一个被证实的挖矿木马将演变成一次全面彻查。
## Knörr 的携带物
```
knorr probe
# Tier-1 read of one image: manifest, config, signal score
knorr hunt # Full sail: discover -> screen -> confirm -> registry
```
船舱设计轻巧。runtime 只需要 `requests`。Trivy 通过 shell 调用,绝不重新实现。没有 pydantic。在 Python 3.14 上流畅运行。
从船舱中产出的内容:**findings CSV**、**summary**、**SQLite ledger**。船长记录下一切。如果没有人类手握方向盘,任何数据都不会发送至 OSM。
*Knörr 在众神为他命名之前就已航行。他将在一切之后继续航行。*
OpenSource-For-Freedom · MIT License
标签:Docker, Python, Web截图, 云安全监控, 威胁情报, 安全防御评估, 容器安全, 开发者工具, 无后门, 请求拦截, 逆向工具, 静态分析