
Estrae segreti (password, chiavi API, token) da archivi web WARC usando le regole di Gitleaks. Supporta HTTP, S3, file locali e archivi compressi con elaborazione concorrente.
Troll-A è uno strumento da riga di comando per estrarre segreti come password, chiavi API e token da file WARC (Web ARChive). Troll-A è una soluzione facile da usare, completa e veloce per trovare segreti negli archivi web.
*.megawarc.warc.zst).c7g.12xlarge. Ciò può essere ulteriormente migliorato restringendo i record WARC da elaborare, tramite l'opzione --filter.Troll-A è distribuito come binari precompilati, come immagine Docker o in forma sorgente.Troll-A è disponibile sul container registry di GitHub e può essere utilizzato come segue:
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A è disponibile anche in forma binaria per macOS e Linux nella pagina delle release.
[!NOTE] A differenza dell'immagine Docker, i binari precompilati sono compilati utilizzando le espressioni regolari della libreria standard di Go e sono quindi notevolmente più lenti. Se si preferiscono binari nativi e le prestazioni sono cruciali, si consiglia di compilare i binari dal sorgente.
Per prestazioni migliori, si consiglia di compilare Troll-A dal sorgente, poiché ciò consente di utilizzare il motore di espressioni regolari ottimizzato fornito da go-re2. Affinché funzioni, è necessario installare prima la dipendenza RE2.
# Installa le dipendenze
brew install re2
# Installa con RE2 attivato
go install -tags re2_cgo github.com/crissyfield/[email protected]
# Installa le dipendenze
sudo apt install -u build-essential libre2-dev
# Installa con RE2 attivato
go install -tags re2_cgo github.com/crissyfield/[email protected]
Usage:
troll-a [flags] [url]
Questo strumento consente di estrarre segreti (potenziali) come password, chiavi API e token
da file WARC (Web ARChive). Le informazioni estratte vengono emesse come testo strutturato o
JSON, semplificando l'ulteriore elaborazione dei dati.
"url" può essere un riferimento HTTP o HTTPS regolare ("https://domain/path"), un riferimento
Amazon S3 ("s3://bucket/path"), un percorso file (sia "file:///path" che semplicemente "path"),
o un trattino ("-") per leggere da STDIN. Se "url" viene omesso, i dati vengono letti da STDIN.
Se i dati in input sono compressi con GZip, BZip2, XZ o ZStd, vengono automaticamente
decompressi. ZStd con un dizionario personalizzato preposto (come usato nei file
"*.megawarc.warc.zstd") viene gestito trasparentemente.
Questo strumento utilizza le regole del progetto Gitleaks (https://gitleaks.io) per rilevare
segreti.
Flags:
-c, --custom stringArray regola personalizzata aggiuntiva da applicare. Verranno
segnalati anche i segreti che corrispondono all'espressione
regolare data (usando la sintassi RE2). Può essere specificata
più volte.
-e, --enclosed segnala solo i segreti che sono racchiusi nel loro contesto
-f, --filter string filtro per l'URL target di ogni record WARC. Solo i record
WARC che corrispondono all'espressione regolare data (usando
la sintassi RE2) verranno controllati per i segreti. Un
filtro vuoto corrisponderà a tutto.
-h, --help aiuto per troll-a
-j, --jobs uint rileva segreti con questo numero di lavori concorrenti
(predefinito 8)
-s, --json emette i segreti rilevati come JSON
-p, --preset rules-preset preset di regole da utilizzare. Può essere uno dei seguenti:
all: Tutte le regole note verranno applicate, il che
può comportare una quantità significativa di
rumore per grandi set di dati.
most: La maggior parte delle regole viene applicata,
saltando i principali colpevoli di falsi
positivi.
secret: Vengono applicate solo le regole che hanno
maggiori probabilità di portare a una fuga di
segreti effettiva.
none: Nessuna regola viene applicata. Può essere
utilizzato in combinazione con regole
personalizzate tramite l'opzione --custom/-c.
Nessun altro valore è consentito. (predefinito secret)
-q, --quiet sopprime i messaggi di successo
-r, --retry retry-strategy strategia di ripetizione da utilizzare. Può essere uno dei
seguenti:
never: Questa strategia fallirà dopo il primo errore
di recupero e non tenterà di riprovare.
constant: Questa strategia tenterà di riprovare fino a 5
volte, con un ritardo di 5 secondi dopo ogni
tentativo.
exponential: Questa strategia tenterà di riprovare per 15
minuti, con un ritardo crescente in modo
esponenziale dopo ogni tentativo.
always: Questa strategia tenterà di riprovare per
sempre, senza alcun ritardo dopo ogni
tentativo.
Nessun altro valore è consentito. (predefinito never)
-t, --timeout duration timeout di recupero (non si applica ai file) (predefinito
30m0s)
-v, --version versione per troll-a
Common Crawl mantiene un repository gratuito e aperto di dati di web crawl utilizzabile da chiunque. Il corpus di Common Crawl contiene petabyte di dati raccolti regolarmente dal 2008.
Ad esempio, per estrarre segreti da tutte le 3.35 miliardi di pagine del crawl di novembre/dicembre 2023 (chiamato CC-MAIN-2023-50), puoi fare quanto segue:
# 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] Questo richiederà molto tempo! A seconda del tuo hardware e della connessione Internet, può richiedere da una settimana a diversi mesi. Potresti voler eseguire questo esempio solo per le prime righe di
warc.paths.gz.
L'Archive Team è un gruppo dedicato alla preservazione digitale e all'archiviazione web fondato nel 2009. Gli archivi web sono memorizzati come file WARC (più specificamente, in formato MegaWARC) e resi disponibili tramite l'Internet Archive.
Ad esempio, per estrarre segreti dalle 113.372 pagine che l'Archive Team ha indicizzato da pastebin.com nell'aprile 2023 (ecco la corrispondente pubblicazione sull'Internet Archive), puoi fare quanto segue:
# 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
...che produce...
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)
Il set di regole utilizzato per rilevare i segreti effettivi fa parte del progetto Gitleaks. Siamo molto grati per l'enorme lavoro che hanno svolto nel compilare tutte queste informazioni!
La piattaforma Troll A è una piattaforma di gas naturale nel giacimento di gas Troll al largo della costa occidentale della Norvegia. A partire dal 2014, era la struttura più alta mai spostata in un'altra posizione, rispetto alla superficie terrestre, ed è tra i progetti ingegneristici più grandi e complessi della storia. Nel 1996, la piattaforma ha stabilito il Guinness dei primati per la più grande piattaforma offshore di gas.
[!NOTE] Sebbene detestiamo profondamente lo sfruttamento delle risorse naturali, ammiriamo l'impresa ingegneristica!