
Извлекает секреты (пароли, ключи API, токены) из веб-архивов WARC с помощью правил Gitleaks. Поддерживает HTTP, S3, локальные файлы и сжатые архивы с параллельной обработкой.
Troll-A — это инструмент командной строки для извлечения секретов, таких как пароли, ключи API и токены, из файлов WARC (Web ARChive). Troll-A представляет собой простое в использовании, всеобъемлющее и быстрое решение для поиска секретов в веб-архивах.
*.megawarc.warc.zst).c7g.12xlarge. Это можно дополнительно улучшить, сузив круг обрабатываемых записей WARC с помощью опции --filter.Troll-A распространяется в виде предварительно собранных бинарников, как образ Docker или в исходном виде.Troll-A доступен в реестре контейнеров Github и может быть использован следующим образом:
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A также доступен в бинарном виде для macOS и Linux на странице релизов.
[!NOTE] В отличие от образа Docker, предварительно собранные бинарники скомпилированы с использованием регулярных выражений Go Stdlib и поэтому заметно медленнее. Если предпочтительны нативные бинарники и производительность критична, рекомендуется собирать их из исходников.
Для лучшей производительности рекомендуется собирать 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]
Usage:
troll-a [flags] [url]
This tool allows to extract (potential) secrets such as passwords, API keys, and tokens
from WARC (Web ARChive) files. Extracted information is output as structured text org
JSON, which simplifies further processing of the data.
"url" can be either a regular HTTP or HTTPS reference ("https://domain/path"), an Amazon
S3 reference ("s3://bucket/path"), a file path (either "file:///path" or simply "path"),
or a dash ("-") to read from STDIN. If "url" is omitted data is read from STDIN. If the
input data is compressed with either GZip, BZip2, XZ, or ZStd it is automatically
decompressed. ZStd with a prepended custom dictionary (as used by "*.megawarc.warc.zstd")
is also handled transparently.
This tool uses rules from the Gitleaks project (https://gitleaks.io) to detect secrets.
Flags:
-c, --custom stringArray дополнительное пользовательское правило для применения. Секреты, соответствующие
заданному регулярному выражению (синтаксис RE2), также будут
сообщены. Можно указать несколько раз.
-e, --enclosed сообщать только о секретах, заключенных в их контексте
-f, --filter string фильтр для целевого URL каждой записи WARC. Будут проверяться только записи
WARC, соответствующие заданному регулярному выражению (синтаксис
RE2). Пустой фильтр соответствует всему.
-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 года.
Например, чтобы извлечь секреты из всех 3,35 миллиарда страниц сканирования за ноябрь/декабрь 2023 года (называемого CC-MAIN-2023-50), можно сделать следующее:
# Загрузить список всех 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.
Например, чтобы извлечь секреты из 113 372 страниц, которые Archive Team просканировали на pastebin.com в апреле 2023 года (вот соответствующая публикация на Internet Archive), можно сделать следующее:
# Вызвать troll-a напрямую с URL MegaWARC
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 — это платформа для природного газа на газовом месторождении Тролль у западного побережья Норвегии. По состоянию на 2014 год это была самая высокая конструкция, когда-либо перемещавшаяся на другую позицию относительно поверхности Земли, и один из крупнейших и самых сложных инженерных проектов в истории. В 1996 году платформа установила мировой рекорд Гиннесса как крупнейшая морская газовая платформа.
[!NOTE] Хотя мы глубоко не одобряем эксплуатацию природных ресурсов, мы восхищаемся инженерным достижением!