Troll-A 是一个命令行工具,用于从 WARC(Web ARChive)文件中提取密码、API 密钥和令牌等机密信息。Troll-A 是一个易用、全面且快速的解决方案,用于在网络存档中查找机密信息。
*.megawarc.warc.zst 文件中使用的)。c7g.12xlarge 上处理典型的 Common Crawl 网络存档(约 34,000 个页面)不到 30 秒。通过 --filter 选项缩小要处理的 WARC 记录范围,可以进一步提升性能。Troll-A 以预编译二进制文件、Docker 镜像或源码形式分发。Troll-A 可在 Github 容器注册表 上获取,并按如下方式使用:
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A 也以二进制形式提供,适用于 macOS 和 Linux,可在发布页面下载。
[!NOTE] 与 Docker 镜像不同,预编译二进制文件是使用 Go 标准库正则表达式编译的,因此明显较慢。如果更倾向于原生二进制文件且性能至关重要,建议从源码构建。
为了获得更好的性能,建议从源码构建 Troll-A,因为这样可以启用 go-re2 提供的优化正则表达式引擎。为此,需要先安装 RE2 依赖。
# 安装依赖
brew install re2
# 启用 RE2 进行安装
go install -tags re2_cgo github.com/crissyfield/[email protected]
# 安装依赖
sudo apt install -u build-essential libre2-dev
# 启用 RE2 进行安装
go install -tags re2_cgo github.com/crissyfield/[email protected]
用法:
troll-a [flags] [url]
该工具允许从 WARC(Web ARChive)文件中提取(潜在的)机密信息,如密码、API 密钥和令牌。提取的信息以结构化文本或 JSON 格式输出,便于后续数据处理。
"url" 可以是常规 HTTP 或 HTTPS 引用("https://domain/path")、Amazon S3 引用("s3://bucket/path")、文件路径("file:///path" 或仅 "path"),或短横线 "-" 从 STDIN 读取。如果省略 "url",则从 STDIN 读取数据。如果输入数据使用 GZip、BZip2、XZ 或 ZStd 压缩,则会自动解压缩。同样支持在压缩前附加自定义字典的 ZStd(如 "*.megawarc.warc.zstd" 中使用的)。
该工具使用 Gitleaks 项目(https://gitleaks.io)的规则来检测机密信息。
标志:
-c, --custom stringArray 要应用的其他自定义规则。匹配给定正则表达式(使用 RE2 语法)的机密信息也会被报告。可以多次指定。
-e, --enclosed 仅报告在其上下文范围内包含的机密信息
-f, --filter string 每个 WARC 记录的目标 URL 过滤器。仅检查匹配给定正则表达式(使用 RE2 语法)的 WARC 记录是否存在机密信息。空过滤器将匹配所有内容。
-h, --help 查看 troll-a 的帮助信息
-j, --jobs uint 使用这么多并发作业检测机密信息(默认为 8)
-s, --json 以 JSON 格式输出检测到的机密信息
-p, --preset rules-preset 要使用的规则预设。可以是以下之一:
all: 应用所有已知规则,可能会导致大量数据集中出现显著噪音。
most: 应用大部分规则,跳过最主要的误报来源。
secret: 仅应用最有可能导致实际机密泄露的规则。
none: 不应用任何规则。可与 --custom/-c 开关配合自定义规则使用。
不允许其他值。(默认为 secret)
-q, --quiet 抑制成功消息
-r, --retry retry-strategy 要使用的重试策略。可以是以下之一:
never: 首次获取失败后即失败,不尝试重试。
constant: 最多尝试重试 5 次,每次尝试后延迟 5 秒。
exponential: 最多尝试重试 15 分钟,每次尝试后延迟呈指数增长。
always: 永远尝试重试,每次尝试后无延迟。
不允许其他值。(默认为 never)
-t, --timeout duration 获取超时时间(不适用于文件)(默认为 30m0s)
-v, --version 查看 troll-a 的版本信息
Common Crawl 维护着一个免费、开放的网络爬取数据存储库,可供任何人使用。Common Crawl 语料库包含自 2008 年以来定期收集的 PB 级数据。
例如,要从 2023 年 11 月/12 月爬取(称为 CC-MAIN-2023-50)的全部 33.5 亿个页面中提取机密信息,可以这样做:
# 下载所有 90,000 个 WARC 路径的列表
curl -sSL -O https://data.commoncrawl.org/crawl-data/CC-MAIN-2023-50/warc.paths.gz
# 使用 64 个扫描作业遍历所有路径,以 JSON 格式输出匹配结果
gzcat warc.paths.gz | \
xargs -I{} -- troll-a -e -s -j64 https://data.commoncrawl.org/{} > secrets.json
[!WARNING] 这将花费很长时间!根据您的硬件和互联网连接,可能需要一周到几个月的时间。您可能只想对
warc.paths.gz的前几行运行此示例。
Archive Team 是一个致力于数字保存和网络存档的团体,成立于 2009 年。网络存档以 WARC 文件(更具体地说,以 MegaWARC 格式)存储,并通过 Internet Archive 提供。
例如,要从 Archive Team 于 2023 年 4 月从 pastebin.com 爬取的 113,372 个页面中提取机密信息(相应的 发布条目 在 Internet Archive 上),可以这样做:
# 直接使用 MegaWARC URL 调用 troll-a
troll-a -e https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst
...结果如下...
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" line=36 column=15
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" line=36 column=15
Detected: secret="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" rule="rapidapi-access-token" uri="https://pastebin.com/raw/nferefe2" line=37 column=6
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/print/cQEA2GCS" line=39 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS" line=11 column=2688
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS?theme=dark" line=49 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/cQEA2GCS" line=222 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/raw/cQEA2GCS" line=22 column=22
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS" line=48 column=123
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS?theme=dark" line=11 column=2796
Detected: secret="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" rule="github-pat" uri="https://pastebin.com/clone/cQEA2GCS" line=152 column=27
Success: Processed https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst (113372 records)
用于检测实际机密信息的规则集是 Gitleaks 项目的一部分。我们非常感谢他们在整理所有这些信息方面所做的巨大工作!
Troll A 平台 是挪威西海岸 Troll 气田的一座天然气平台。截至 2014 年,它是人类历史上相对于地球表面移动过的最高的结构,也是历史上最大、最复杂的工程项目之一。1996 年,该平台创造了世界上最大的海上天然气平台的吉尼斯世界纪录。
[!NOTE] 虽然我们极度反对开采自然资源,但我们钦佩这一工程壮举!