
Extrae secretos (contraseñas, claves de API, tokens) de archivos web WARC utilizando reglas de Gitleaks. Soporta HTTP, S3, archivos locales y archivos comprimidos con procesamiento concurrente.
Troll-A es una herramienta de línea de comandos para extraer secretos como contraseñas, claves API y tokens de archivos WARC (Web
ARChive). Troll-A es una solución fácil de usar, completa y rápida para encontrar
secretos en archivos web.
*.megawarc.warc.zst).c7g.12xlarge. Esto se puede mejorar aún más
limitando los registros WARC a procesar, mediante la opción --filter.Troll-A se distribuye como binarios precompilados, como imagen Docker o en forma de código fuente.Troll-A está disponible en el registro de contenedores de
GitHub y se puede usar de la siguiente manera:
docker run --rm ghcr.io/crissyfield/troll-a [flags] [url]
Troll-A también está disponible en forma binaria para macOS y Linux en la
página de lanzamientos.
[!NOTA] A diferencia de la imagen Docker, los binarios precompilados están compilados usando las expresiones regulares estándar de Go y son por lo tanto notablemente más lentos. Si se prefieren binarios nativos y el rendimiento es crucial, se recomienda compilar los binarios desde el código fuente.
Para un mejor rendimiento, se recomienda compilar Troll-A desde el código fuente, ya que esto permite usar el motor de
expresiones regulares optimizado proporcionado por go-re2. Para que esto funcione, la
dependencia RE2 debe instalarse primero.
# Instalar dependencias
brew install re2
# Instalar con RE2 activado
go install -tags re2_cgo github.com/crissyfield/[email protected]
# Instalar dependencias
sudo apt install -u build-essential libre2-dev
# Instalar con RE2 activado
go install -tags re2_cgo github.com/crissyfield/[email protected]
Uso:
troll-a [flags] [url]
Esta herramienta permite extraer secretos (potenciales) como contraseñas, claves API y tokens
de archivos WARC (Web ARChive). La información extraída se muestra como texto estructurado o
JSON, lo que simplifica el procesamiento posterior de los datos.
"url" puede ser una referencia HTTP o HTTPS normal ("https://dominio/ruta"), una referencia
de Amazon S3 ("s3://bucket/ruta"), una ruta de archivo (ya sea "file:///ruta" o simplemente "ruta"),
o un guión ("-") para leer desde STDIN. Si se omite "url", los datos se leen desde STDIN. Si los
datos de entrada están comprimidos con GZip, BZip2, XZ o ZStd, se descomprimen automáticamente.
También se maneja de forma transparente ZStd con un diccionario personalizado antepuesto (como se usa
en archivos "*.megawarc.warc.zstd").
Esta herramienta utiliza reglas del proyecto Gitleaks (https://gitleaks.io) para detectar secretos.
Banderas:
-c, --custom stringArray regla personalizada adicional a aplicar. Los secretos que coincidan con
la expresión regular dada (usando sintaxis RE2) también se
reportarán. Se puede especificar varias veces.
-e, --enclosed sólo reportar secretos que estén encerrados dentro de su contexto
-f, --filter string filtro para la URL de destino de cada registro WARC. Sólo los registros
WARC que coincidan con la expresión regular dada (usando sintaxis RE2)
serán revisados en busca de secretos. Un filtro vacío coincidirá
con todo.
-h, --help ayuda para troll-a
-j, --jobs uint detectar secretos con este número de trabajos concurrentes (por defecto 8)
-s, --json emitir secretos detectados como JSON
-p, --preset rules-preset preajuste de reglas a usar. Puede ser uno de los siguientes:
all: Se aplicarán todas las reglas conocidas, lo que puede
resultar en una cantidad significativa de ruido para
conjuntos de datos grandes.
most: Se aplican la mayoría de las reglas, saltando los
mayores culpables de falsos positivos.
secret: Sólo se aplican las reglas que tienen más probabilidades
de resultar en una fuga real de un secreto.
none: No se aplica ninguna regla. Esto se puede usar
en combinación con reglas personalizadas a través del
interruptor --custom/-c.
No se permiten otros valores. (por defecto secret)
-q, --quiet suprimir mensajes de éxito
-r, --retry retry-strategy estrategia de reintento a usar. Puede ser uno de los siguientes:
never: Esta estrategia fallará después del primer error de
descarga y no intentará reintentar.
constant: Esta estrategia intentará reintentar hasta 5
veces, con un retraso de 5s después de cada intento.
exponential: Esta estrategia intentará reintentar durante 15
minutos, con un retraso que aumenta exponencialmente
después de cada intento.
always: Esta estrategia intentará reintentar para siempre,
sin ningún retraso después de cada intento.
No se permiten otros valores. (por defecto never)
-t, --timeout duration tiempo de espera de descarga (no aplica a archivos) (por defecto 30m0s)
-v, --version versión para troll-a
Common Crawl mantiene un repositorio gratuito y abierto de datos de rastreo web que puede ser utilizado por cualquiera. El corpus de Common Crawl contiene petabytes de datos recopilados regularmente desde 2008.
Por ejemplo, para extraer secretos de todas las 3.35 mil millones de páginas del rastreo de noviembre/diciembre de 2023
(llamado CC-MAIN-2023-50), puedes hacer esto:
# Descargar la lista de todas las 90.000 rutas WARC
curl -sSL -O https://data.commoncrawl.org/crawl-data/CC-MAIN-2023-50/warc.paths.gz
# Iterar a través de todas las rutas usando 64 trabajos de escaneo, emitir coincidencias como JSON
gzcat warc.paths.gz | \
xargs -I{} -- troll-a -e -s -j64 https://data.commoncrawl.org/{} > secrets.json
[!ADVERTENCIA] ¡Esto tomará mucho tiempo! Dependiendo de tu hardware y conexión a Internet, esto puede tomar desde una semana hasta varios meses. Es posible que desees ejecutar este ejemplo solo para las primeras líneas de
warc.paths.gz.
El Archive Team es un grupo dedicado a la preservación digital y el archivado web fundado en 2009. Los archivos web se almacenan como archivos WARC (más específicamente, en formato MegaWARC) y se ponen a disposición a través del Internet Archive.
Por ejemplo, para extraer secretos de las 113.372 páginas que el Archive Team rastreó de pastebin.com en abril de 2023 (aquí está la publicación correspondiente en el Internet Archive), puedes hacer esto:
# Llamar a troll-a directamente con la URL de MegaWARC
troll-a -e https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst
...lo que resulta en...
Detectado: secreto="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" regla="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" línea=36 columna=15
Detectado: secreto="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" regla="rapidapi-access-token" uri="https://pastebin.com/raw/bKMJXkQE" línea=36 columna=15
Detectado: secreto="acf30fb56amsh654fa8104418601p1e420cjsn3152a0032f0b" regla="rapidapi-access-token" uri="https://pastebin.com/raw/nferefe2" línea=37 columna=6
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/print/cQEA2GCS" línea=39 columna=123
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS" línea=11 columna=2688
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS?theme=dark" línea=49 columna=123
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/cQEA2GCS" línea=222 columna=123
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/raw/cQEA2GCS" línea=22 columna=22
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/embed_iframe/cQEA2GCS" línea=48 columna=123
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/embed_js/cQEA2GCS?theme=dark" línea=11 columna=2796
Detectado: secreto="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" regla="github-pat" uri="https://pastebin.com/clone/cQEA2GCS" línea=152 columna=27
Éxito: Procesado https://archive.org/download/archiveteam_pastebin_20230421003309_a3b951b4/pastebin_20230421003309_a3b951b4.1603050931.megawarc.warc.zst (113372 registros)
El conjunto de reglas utilizado para detectar los secretos reales es parte del proyecto Gitleaks. Estamos muy agradecidos por el tremendo trabajo que han realizado al compilar toda esta información.
La plataforma Troll A es una plataforma de gas natural en el campo de gas Troll frente a la costa oeste de Noruega. A partir de 2014, era la estructura más alta que jamás se haya movido a otra posición, en relación con la superficie de la Tierra, y se encuentra entre los proyectos de ingeniería más grandes y complejos de la historia. En 1996, la plataforma estableció el Récord Guinness para la plataforma de gas marina más grande.
[!NOTA] Si bien desaprobamos profundamente la explotación de los recursos naturales, admiramos la hazaña de ingeniería.