Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
yellow — 一个用于 DNS canarytokens 的简单二进制包装器。 | Kitploit
工具/GitHubGitHub/singe/yellow
防御工具网络安全入侵检测
GitHubsinge/yellow

yellow

一个用于 DNS canarytokens 的简单二进制包装器。

查看仓库
25113年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
root@kitploit:~
            _ _               
 _   _  ___| | | _____      __
| | | |/ _ \ | |/ _ \ \ /\ / /
| |_| |  __/ | | (_) \ V  V / 
 \__, |\___|_|_|\___/ \_/\_/  
 |___/               
 - Just add blue.

yellow - 只需添加蓝色

简单的二进制修改,当二进制文件被执行时会触发一个 canarytoken。

非常适合为生产系统布设陷阱,以防范攻击者。

目前有四种方法:

  • yellow 是一种有针对性的方法,使用一个二进制文件来触发 token,然后根据你选择的文件扩展名执行真正的二进制文件。
  • spe 是上述方法的一种变体,采用了与 Thinkst 最近为 Windows 添加的“Sensitive Process Execution”token 类似的方法。
  • libyellow 是一种跨系统通知方式,当通过 LD_PRELOAD 注入时,它会透明地为你指定的任何二进制名称触发 canarytoken。
  • ldsoyellow 是一个功能完整的 glibc 链接器 (ld.so),它会为任何使用它的二进制文件触发 canarytoken。

准备工作

在 canarytokens 注册一个属于你自己的 DNS canary token。你可以在 文档 中阅读更多关于它们工作原理的内容。

它看起来会像这样:pz21qtyfsidipvrsuzs9n2udi.canarytokens.com

使用以下命令将它放入环境变量 TOKEN 中: export TOKEN="c28y9l4dw0drj62un0cm4rwz6.canarytokens.com"

这些 Dockerfile 中包含了一个可用的示例 token,你可以在此处查看其活动历史。不过你真的应该使用自己的 token。

构建

提供了实现这些构建方法中每一种的 Dockerfile。

如果你有一个合适的默认构建环境(例如基于 Debian 的系统上的 build-essential,或基于 Alpine 的系统上的 build-base),你可以非常简单地对 libyellow 或 yellow 进行编译。ldsoyellow 则复杂一些。

你可以在 Dockerfiles 中看到构建和安装 yellow 的简单端到端示例。

yellow

gcc -o yellow yellow.c canary32.c

参见 Dockerfile.yellow

spe

无需构建。

libyellow

确保在 alert_list 数组中更新你想要告警的二进制文件列表。

gcc -shared -fPIC libyellow.c canary32.c -o libyellow.so

对于 Alpine 和 Debian 版本,参见 Dockerfile.libyellow 或 Dockerfile.libyellow.debian。

ldsoyellow

查看 Dockerfile.ldsoyellow 获取一个可用的示例。你需要 glibc 源码(我建议使用官方软件包版本,以尽可能接近真实的链接器)。

apt-get source libc6

应用补丁 rtld.c.patch

cd /glibc-* patch < rtld.c.patch

配置 glibc,禁用健全性检查,并指向正确的 libdir(假设是 64 位系统)

mkdir glibcbuild && cd glibcbuild /glibc-*/configure --disable-sanity-checks --libdir=$(dirname $(find / -name "libc.so.6"|grep 64))

像平时一样构建

make

安装

所有变体都使用 TOKEN 环境变量来指定 canary token URL。环境变量名称可以更改,如果你愿意,甚至可以硬编码。同样,每个变体都有对应的 Dockerfile。

yellow

yellow 旨在对你重命名并为其设置别名的特定二进制文件触发警报,就像 busybox 的使用方式一样。你需要将二进制文件重命名为使用 ".canary" 扩展名,然后为原始二进制名称创建 yellow 的符号链接(或副本)。例如:

root@kitploit:~
cp yellow /usr/bin
mv /usr/bin/id /usr/bin/id.canary
ln -s /usr/bin/yellow /usr/bin/id

在此之后,任何对 id 的执行都会触发你的 canary token。

参见 Dockerfile.yellow

spe

敏感进程执行方法使用与上述相同的技术,只不过它通过 shell 脚本而非二进制文件触发,并且附带一个安装程序。运行 spe_install.sh,将你的 DNS token 和你想要触发警报的二进制文件名称传给它。该二进制文件不一定需要存在。

例如: ./spe_install.sh "c28y9l4dw0drj62un0cm4rwz6.canarytokens.com" /bin/id

任何时候运行 id 都会创建一个警报。

这是此处描述的 Windows token 方法的一个副本。

libyellow

libyellow 旨在对通过 LD_PRELOAD 注入的任何二进制文件触发,但只对你在代码中指定的二进制文件发出警报。可以通过设置 LD_PRELOAD 环境变量指向它来按会话生效,或者通过将其添加到 /etc/ld.so.preload 文件来全系统生效。如果库在该系统上无法正常工作,后者可能会破坏你的系统,因此建议你先使用 LD_PRELOAD 进行测试。

请记住,如上文“准备工作”所述,将你的 token 放入 TOKEN 环境变量中。

LD_PRELOAD 示例:

root@kitploit:~
cp libyellow.so /usr/lib/
export LD_PRELOAD=/usr/lib/libyellow.so

然后运行一个目标二进制文件,检查其行为是否符合预期,你就会收到 canary 警报。

一旦你确认一切正常,你可以通过以下方式将其添加到全系统(这不适用于像 Alpine 这样基于 musl 的系统,这些系统会改用 LD_PRELOAD 方法):

root@kitploit:~
cp libyellow.so /usr/lib
echo /usr/lib/libyellow.so >> /etc/ld.so.preload

对于 Alpine 和 Debian 版本,参见 Dockerfile.libyellow 或 Dockerfile.libyellow.debian。

ldsoyellow

ldsoyellow 旨在针对特定的二进制文件触发,这些二进制文件被修改为使用它而不是默认链接器。你可以用它替换默认链接器以影响全系统,但这可能会过于嘈杂。

Dockerfile.ldsoyellow 示例包括对 /bin/cat 执行此操作。首先,将改装过的链接器复制到原始链接器旁边:

cp <arm'd linker> /lib64/ld-linux-x86-64.so.3

然后,修改二进制文件以使用它来代替原始的那个:

sed -i "s/\/lib64\/ld-linux-x86-64.so.2/\/lib64\/ld-linux-x86-64.so.3/" /bin/cat

参见 Dockerfile.ldsoyellow。

Docker in Docker 示例

如果你想要运行 Docker in Docker,例如在一个你对构建指令控制有限的构建环境中,并且希望在有人逃逸时收到警报,你可以采用类似 Dockerfile.dind-rootless 中的示例做法。该示例使用了 yellow,但也可以使用任何其他变体或全部变体。

它会对主机上那些不应该从容器中访问的二进制文件设置陷阱。

下载工具