
Extrait les secrets (mots de passe, clés API, jetons) des archives web WARC en utilisant les règles Gitleaks. Prend en charge HTTP, S3, fichiers locaux et archives compressées avec traitement concurrent.
Troll-A est un outil en ligne de commande pour extraire des secrets tels que mots de passe, clés API et jetons à partir de fichiers WARC (Web ARChive). Troll-A est une solution facile à utiliser, complète et rapide pour trouver des secrets dans une archive web.
*.megawarc.warc.zst).c7g.12xlarge. Cela peut être encore amélioré en réduisant les enregistrements WARC à traiter, via l'option --filter.Troll-A est distribué sous forme de binaires précompilés, d'image Docker ou de code source.Troll-A est disponible sur le registre de conteneurs de GitHub et peut être utilisé comme suit :
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A est également disponible sous forme de binaires pour macOS et Linux sur la page des versions.
[!NOTE] Contrairement à l'image Docker, les binaires précompilés sont compilés avec les expressions régulières de la bibliothèque standard de Go et sont donc sensiblement plus lents. Si les binaires natifs sont préférés et que les performances sont cruciales, il est recommandé de compiler les binaires à partir des sources.
Pour de meilleures performances, il est recommandé de compiler Troll-A à partir des sources, car cela permet d'utiliser le moteur d'expression régulière optimisé fourni par go-re2. Pour que cela fonctionne, la dépendance RE2 doit être installée au préalable.
# Install dependencies
brew install re2
# Install with RE2 activated
go install -tags re2_cgo github.com/crissyfield/[email protected]
# Install dependencies
sudo apt install -u build-essential libre2-dev
# Install with RE2 activated
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 additional custom rule to apply. Secrets that match the
given regular expression (using RE2 syntax) will also be
reported. Can be specified multiple times.
-e, --enclosed only report secrets that are enclosed within their context
-f, --filter string filter for the target URL of each WARC record. Only WARC
records that match the given regular expression (using RE2
syntax) will be checked for secrets. An empty filter will
match everything.
-h, --help help for troll-a
-j, --jobs uint detect secrets with this many concurrent jobs (default 8)
-s, --json output detected secrets as JSON
-p, --preset rules-preset rules preset to use. This could be one of the following:
all: All known rules will be applied, which can
result in a significant amount of noise for
large data sets.
most: Most of the rules are applied, skipping the
biggest culprits for false positives.
secret: Only rules are applied that are most likely
to result in an actual leak of a secret.
none: No rules at all are applied. This can be used
in combination with custom rules via the
--custom/-c switch.
No other values are allowed. (default secret)
-q, --quiet suppress success message(s)
-r, --retry retry-strategy retry strategy to use. This could be one of the following:
never: This strategy will fail after the first fetch
failure and will not attempt to retry.
constant: This strategy will attempt to retry up to 5
times, with a 5s delay after each attempt.
exponential: This strategy will attempt to retry for 15
minutes, with an exponentially increasing
delay after each attempt.
always: This strategy will attempt to retry forever,
with no delay at all after each attempt.
No other values are allowed. (default never)
-t, --timeout duration fetching timeout (does not apply to files) (default 30m0s)
-v, --version version for troll-a
Common Crawl maintient un référentiel gratuit et ouvert de données de crawl web qui peut être utilisé par tout le monde. Le corpus Common Crawl contient des pétaoctets de données collectées régulièrement depuis 2008.
Par exemple, pour extraire des secrets de l'ensemble des 3,35 milliards de pages du crawl de novembre/décembre 2023 (appelé CC-MAIN-2023-50), vous pouvez faire ceci :
# Download the list of all 90.000 WARC paths
curl -sSL -O https://data.commoncrawl.org/crawl-data/CC-MAIN-2023-50/warc.paths.gz
# Iterate through all paths using 64 scanning jobs, output matches as JSON
gzcat warc.paths.gz | \
xargs -I{} -- troll-a -e -s -j64 https://data.commoncrawl.org/{} > secrets.json
[!WARNING] Cela prendra beaucoup de temps ! En fonction de votre matériel et de votre connexion Internet, cela peut prendre d'une semaine à plusieurs mois. Vous pouvez envisager d'exécuter cet exemple uniquement pour les premières lignes de
warc.paths.gz.
L'Archive Team est un groupe dédié à la préservation numérique et à l'archivage web fondé en 2009. Les archives web sont stockées sous forme de fichiers WARC (plus précisément au format MegaWARC) et mises à disposition via l'Internet Archive.
Par exemple, pour extraire des secrets des 113 372 pages que l'Archive Team a crawlé depuis pastebin.com en avril 2023 (voici la publication correspondante sur l'Internet Archive), vous pouvez faire ceci :
# Call troll-a directly with the MegaWARC URL
troll-a -e https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst
...ce qui donne...
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)
L'ensemble des règles utilisées pour détecter les secrets réels fait partie du projet Gitleaks. Nous sommes très reconnaissants pour l'énorme travail qu'ils ont accompli en compilant toutes ces informations !
La plateforme Troll A est une plateforme gazière située dans le champ gazier de Troll au large de la côte ouest de la Norvège. En 2014, c'était la structure la plus haute jamais déplacée vers une autre position, par rapport à la surface de la Terre, et fait partie des plus grands et des plus complexes projets d'ingénierie de l'histoire. En 1996, la plateforme a établi le record Guinness de la plus grande plateforme gazière offshore.
[!NOTE] Bien que nous déplorions profondément l'exploitation des ressources naturelles, nous admirons l'exploit technique !