Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
warcannon — Alta velocidad/Bajo costo CommonCrawl RegExp en Node.js | Kitploit
Herramientas/GitHubGitHub/c6fc/warcannon
OSINT (Inteligencia de Fuentes Abiertas)Exfiltración de DatosRecopilación de InformaciónSeguridad en la NubeUtilidades y FrameworksCrawler
GitHubc6fc/warcannon

warcannon

Alta velocidad/Bajo costo CommonCrawl RegExp en Node.js

Ver Repositorio
256373hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

WARCannon - Procesamiento paralelo de WARC catastróficamente potente

Image

WARCannon fue construido para simplificar y abaratar el proceso de 'grep en internet'.

Con WARCannon, puedes:

  • Construir y probar patrones de expresiones regulares contra datos reales de Common Crawl
  • Cargar fácilmente conjuntos de datos de Common Crawl para procesamiento paralelo
  • Escalar capacidades de cómputo para procesar WARCs de forma asíncrona a una capacidad francamente irrazonable.
  • Almacenar y recuperar fácilmente los resultados

Cómo funciona

WARCannon aprovecha un uso inteligente de las tecnologías de AWS para escalar horizontalmente a cualquier capacidad, minimizar costos mediante flotas spot y transferencia de datos en la misma región, extraer de S3 a velocidades increíbles (hasta 100Gbps por nodo), paralelizar en cientos de núcleos de CPU, reportar estado a través de DynamoDB y CloudFront, y almacenar resultados mediante S3.

En total, WARCannon puede procesar múltiples patrones de expresiones regulares en 400TB en unas pocas horas por alrededor de $30.

Instalación en CloudShell

La forma más rápida y sencilla de empezar es usar AWS CloudShell. Simplemente pega esta línea:

root@kitploit:~
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/master/cloudshell/deploy.sh)

Si quieres usar una rama que no sea master de WARCannon, simplemente escribe:

root@kitploit:~
export GIT_BRANCH=branch_name
source <(curl https://raw.githubusercontent.com/c6fc/warcannon/$GIT_BRANCH/cloudshell/deploy.sh)

Nota: El despliegue en CloudShell utiliza almacenamiento efímero, lo que significa que los patrones de expresiones regulares personalizados se perderán cuando se cierre CloudShell. Si vas a usar WARCannon con frecuencia, recomiendo usar la 'Instalación Local' a continuación.

Instalación Local

WARCannon requiere que tengas instalado lo siguiente:

  • awscli (v2)
  • cmake3
  • node.js (v17.0.1+)

ProTip: Para mantener las cosas limpias y distintas de otras cosas que puedas tener en AWS, se RECOMIENDA ENCARECIDAMENTE que despliegues WARCannon en una cuenta nueva. Puedes crear una nueva cuenta fácilmente desde la consola de 'Organizations' en AWS. Con 'RECOMENDADO ENCARECIDAMENTE', quiero decir 'seriamente no instales esto junto a otras cosas'.

Primero, clona el repositorio y copia la configuración de ejemplo.

root@kitploit:~
$ git clone [email protected]:c6fc/warcannon.git
$ cd warcannon
warcannon$ cp settings.json.sample settings.json

Edita settings.json a tu gusto:

Configuraciones obligatorias

  • nodeInstanceType: Un array de tipos de instancia para usar en procesamiento paralelo. Los tipos 'c' ofrecen la mejor relación calidad-precio para este propósito, y se puede usar cualquier tamaño. ["c5n.18xlarge"] es el valor recomendado para campañas reales.
  • nodeCapacity: El número de nodos a solicitar durante el procesamiento paralelo. Los nodos resultantes serán una distribución arbitraria de los nodeInstanceTypes que especifiques.
  • nodeParallelism: El número de WARCs simultáneos a procesar por vCPU. 2 es un buen número aquí. Si los nodos tienen RAM insuficiente para ejecutarse a este nivel de paralelismo (como se podría encontrar con instancias tipo 'c'), se ejecutarán al paralelismo seguro más alto en su lugar.
  • nodeMaxDuration: La vida útil máxima de los nodos de cómputo en segundos. Los nodos se terminarán automáticamente después de este tiempo si el trabajo aún no ha finalizado. El valor predeterminado es 24 horas.

Configuraciones opcionales (déjalas completamente fuera si no se usan)

  • sshKeyName: El nombre de una clave SSH de EC2 que ya existe en us-east-1.
  • allowSSHFrom: Una máscara CIDR para permitir SSH desde. Típicamente será &lt;yourpublicip&gt;/32

Para instalar, ejecuta esto:

root@kitploit:~
$ npm install
$ npm link
$ warcannon deploy

Inicio Rápido

Ejecutar una campaña en WARCannon utiliza un flujo de trabajo simple y fácil de seguir que se puede describir mejor en estos pocos pasos:

  1. Desplegar la infraestructura: warcannon deploy
  2. Desarrollar y luego probar patrones de expresiones regulares localmente: warcannon testLocal -s
  3. Verificar patrones de expresiones regulares en AWS mediante Lambda: warcannon test
  4. Mostrar los crawls disponibles: warcannon list 2022
  5. Poblar la cola con el crawl de tu elección: warcannon populate 2022-21
  6. Ejecutar la campaña: warcannon fire
  7. Esperar a que la campaña termine, luego recuperar los resultados de S3 con warcannon syncResults

Continúa leyendo para una comprensión más detallada de cada paso.

Usando WARCannon

WARCannon se alimenta de Common Crawl a través del programa AWS Open Data. Common Crawl es único en que los datos recuperados por sus spiders no solo capturan texto de sitios web, sino también otro contenido basado en texto como JavaScript, TypeScript, HTML completo, CSS, etc. Al construir expresiones regulares adecuadas capaces de identificar componentes únicos, los investigadores pueden identificar sitios web por las tecnologías que utilizan, y hacerlo sin tocar nunca el sitio web ellos mismos. El problema es que esto requiere analizar cientos de terabytes de datos, lo cual es una tarea difícil sin importar los recursos que tengas a tu disposición. ¡Afortunadamente WARCannon tiene varias herramientas que puedes usar para lograrlo!

Desarrollo de Expresiones Regulares

Grep en internet no es para los débiles de corazón, pero empezar con un colador efectivo es el primer paso. WARCannon lo apoya permitiendo la verificación local de expresiones regulares contra datos reales de Common Crawl. Primero, abre lambda_functions/warcannon/matches.js y modifica el objeto regex_patterns para incluir las expresiones regulares que deseas usar en formato name: pattern. Aquí hay un ejemplo del conjunto de búsqueda predeterminado:

root@kitploit:~
exports.regex_patterns = {
	"access_key_id": /(\'A|"A)(SIA|KIA|IDA|ROA)[JI][A-Z0-9]{14}[AQ][\'"]/g,
};

Las cadenas que coincidan con esta expresión se guardarán bajo la clave correspondiente en los resultados; access_key_id en este caso. ProTip: Usa RegExr con el formato 'JavaScript' para construir y probar expresiones regulares contra coincidencias conocidas.

También tienes la opción de capturar solo resultados de dominios especificados. Para hacerlo, simplemente completa el array domains con los FQDN que desees incluir. Se recomienda dejar esto vacío [] ya que casi nunca vale la pena (el esfuerzo de procesamiento ahorrado es muy pequeño), pero puede ser útil en algunos casos específicos.

root@kitploit:~
exports.domains = ["example1.com", "example2.com"];

Una vez que matches.js esté poblado, ejecuta el siguiente comando:

root@kitploit:~
warcannon$ warcannon testLocal -s

Opcionalmente, puedes agregar una ruta a un WARC en el bucket S3 commoncrawl si lo deseas, pero se usará un valor predeterminado hardcodeado en caso contrario.

WARCannon procesará el archivo WARC en flujo (o lo descargará por completo si omites -s) para encontrar tus coincidencias configuradas. WARCannon guardará los resultados en la carpeta ~/.warcannon/ cuando interrumpas con ctrl+c o cuando termine el procesamiento. Esto facilita probar coincidencias comunes muy rápidamente con un ancho de banda mínimo.

Además de todo lo demás, WARCannon intentará evaluar el costo total de cómputo de tus expresiones regulares cuando se ejecuten localmente. De esta manera, podrás saber si una expresión regular determinada impactará significativamente el rendimiento antes de ejecutar tu campaña.

Image

Realizando Procesamiento Personalizado

A veces un simple patrón de expresión regular no es suficiente por sí solo, y necesitas algunos pasos adicionales para asegurarte de que estás devolviendo la información correcta. En este caso, simplemente agregar una función al objeto exports.custom_functions con el mismo nombre de clave te permite realizar cualquier procesamiento adicional que consideres adecuado.

root@kitploit:~
exports.regex_patterns = {
	"access_key_id": /(\'A|"A)(SIA|KIA|IDA|ROA)[JI][A-Z0-9]{14}[AQ][\'"]/g,
};

exports.custom_functions = {
	"access_key_id": function(match) {
		// Ignore matches with 'EXAMPLE' in the text, since this is common for documentation.
		if (match.text(/EXAMPLE/) != null) {
			// Returning a boolean 'false' discards the match.
			return false
		}
	}
}

Nota: WARCannon está diseñado para procesar texto a velocidades estúpidas. Aunque ciertamente es posible realizar cualquier tipo de operación que desees, agregar funciones personalizadas de alta latencia, como llamadas de red, puede aumentar significativamente el tiempo de procesamiento y los costos. Las llamadas de red también podrían resultar en MUCHAS llamadas a un sitio web, lo que podría meterte en problemas. Sé inteligente sobre cómo usas estas funciones.

Realizando una Prueba Única en AWS

Los costos de AWS pueden causar ansiedad, especialmente cuando solo buscas investigar un poco. WARCannon está construido para permitir tanto ejecuciones únicas como campañas completas, para que puedas tener confianza en los resultados que obtendrás. Una vez que estés satisfecho con los resultados que obtienes con testLocal, puedes desplegar tus coincidencias actualizadas y ejecutar una prueba respaldada en la nube fácilmente:

root@kitploit:~
warcannon$ warcannon deploy
warcannon$ warcannon test

Nuevamente, opcionalmente puedes incluir una ruta WARC si lo deseas, aunque no es necesario.

Esto ejecutará sincrónicamente una función Lambda con las expresiones regulares que has configurado y devolverá los resultados inmediatamente. Este proceso toma unos 2.5 minutos, así que no temas esperar mientras hace su magia.

Lanzando una Campaña Real

Limpiando la Cola

WARCannon utiliza AWS Simple Queue Service para distribuir trabajo a los nodos de cómputo. Para asegurarte de que tus resultados no estén contaminados con ejecuciones anteriores, puedes indicarle a WARCannon que vacíe la cola:

root@kitploit:~
warcannon$ warcannon emptyQueue
[+] Cleared [ 15 ] messages from the queue

Luego puedes verificar el estado de la cola:

root@kitploit:~
warcannon$ warcannon status
	Deployed: [ YES ]; SQS Status: [ EMPTY ]
	Job Status: [ INACTIVE ]
	Active job url: https://d201offlnmhkmd.cloudfront.net

Verifica lo siguiente antes de proceder:

  1. La cola SQS está vacía
  2. El estado del trabajo es 'INACTIVE'

Poblando la Cola (Simple)

Para crear los mensajes de cola que consumirán los nodos de cómputo, primero debes poblar SQS con datos de crawl. WARCannon tiene varios comandos para ayudar con esto, comenzando con la capacidad de mostrar los escaneos disponibles. En este caso, veamos los escaneos disponibles para el año 2021:

root@kitploit:~
warcannon$ warcannon list 2021
CC-MAIN-2021-04
CC-MAIN-2021-10

Tenemos dos escaneos que coinciden con la cadena "2021" con los que trabajar. Ahora podemos instruir a WARCannon para poblar la cola basada en uno de estos escaneos. Esta vez, necesitamos proporcionar un parámetro que identifique de forma única uno de los escaneos. "2021-04" servirá. Podríamos elegir poblar solo un escaneo parcial especificando también un número de fragmentos y un tamaño de fragmento, pero omitiremos eso por ahora.

root@kitploit:~
warcannon$ warcannon populate 2021-04
{Created 799 chunks of 100 from 79840 available segments"
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}

Poblando la Cola mediante Athena (Avanzado)

Durante el despliegue, WARCannon aprovisiona automáticamente una base de datos (warcannon_commoncrawl) y un grupo de trabajo (warcannon) en Athena que se pueden usar para consultar rápidamente información de CommonCrawl. Esto puede ser especialmente útil para poblar campañas dispersas basadas en ciertas consultas. Por ejemplo, la siguiente consulta buscará WARCs que contengan respuestas de 'example.com'

root@kitploit:~
SELECT
	warc_filename,
	COUNT(url_path) as num
FROM
	warcannon_commoncrawl.ccindex
WHERE
	subset = 'warc'	AND
	url_host_registered_domain IN ('example.com') AND
	crawl = 'CC-MAIN-2021-04'
GROUP BY warc_filename
ORDER BY num DESC

Puedes usar la consola de Athena para ajustar tus resultados, pero debes ejecutar la consulta desde la línea de comandos de WARCannon si tienes la intención de poblar un trabajo con ella:

root@kitploit:~
warcannon queryAthena "SELECT warc_filename, COUNT(url_path) as num FROM warcannon_commoncrawl.ccindex WHERE subset = 'warc' AND url_host_registered_domain IN ('example.com') AND crawl = 'CC-MAIN-2021-04' GROUP BY warc_filename ORDER BY num DESC"

[+] Query Exec Id: 0319486e-1846-491c-badf-2e23ae213974 .. SUCCEEDED

WARCannon puede entonces usar los resultados de una consulta para poblar la cola, y lo hace basándose en la columna warc_filename del conjunto de resultados. Como tal, se recomienda que uses group by en esta columna o uses distinct() para evitar duplicados. WARCannon lanzará un error si este campo no está presente. Puebla la cola con resultados de Athena pasando el ID de Ejecución de Consulta al comando populateAthena.

root@kitploit:~
warcannon populateAthena 0319486e-1846-491c-badf-2e23ae213974

{Created 26 chunks of 10 from 251 available segments"
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}

Nota: Si bien poblar un trabajo disperso para un solo dominio puede parecer una buena idea, a menudo no lo es. Las respuestas de un solo dominio tienden a estar muy distribuidas en un gran subconjunto de WARCs. Esto se puede ver claramente usando la consulta de ejemplo anterior para ver que de los ~150,000 registros en cada WARC, el mayor acierto único para sitios web de tamaño moderado puede ser de un solo dígito.

Disparando el WARCannon

Con la cola poblada, estamos listos para disparar. WARCannon hará algunas comprobaciones de cordura para asegurarse de que todo esté en orden, luego te mostrará la configuración de la campaña y te dará una última oportunidad de abortar antes de finalizar la orden.

root@kitploit:~
warcannon$ warcannon fire
[!] This will request [ 6 ] spot instances of type [ m5n.24xlarge, m5dn.24xlarge ]
    lasting for [ 86400 ] seconds.

To change this, edit your settings in settings.json and run warcannon deploy
--> Ready to fire? [Yes]: 

Dispara respondiendo con 'Yes'.

root@kitploit:~
--> Ready to fire? [Yes]: Yes
{
    "SpotFleetRequestId": "sfr-03dd32b8-51f7-4c8e-802b-a702fc3c8c95"
}

[+] Spot fleet request has been sent, and nodes should start coming online within ~5 minutes.
    Monitor node status and progress at https://d201offlnmhkmd.cloudfront.net

La respuesta incluye un enlace a tu URL de estado única, donde puedes monitorear el progreso de tu campaña y el rendimiento de cada nodo.

Image

Obteniendo Resultados

Los resultados de WARCannon se almacenan en S3 en formato JSON, desglosados por cada nodo responsable de producir los resultados. Los resultados de Athena se almacenan en el mismo bucket bajo el prefijo /athena/. Puedes sincronizar los resultados de una campaña a la carpeta ~/.warcannon/ en tu máquina local usando el comando syncResults.

root@kitploit:~
warcannon syncResults

sync: s3://warcannon-results-202...
sync: s3://warcannon-results-202...
sync: s3://warcannon-results-202...
...

Luego puedes vaciar los buckets de resultados con clearResults

root@kitploit:~
warcannon clearResults

delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
...
[+] Deleted [ 21 ] files from S3.

Canal Oficial de Discord

¿Tienes preguntas, necesitas ayuda, quieres contribuir o presumir de un éxito? ¡Ven a pasar el rato en Discord!

Official c6fc Discord

Descargar herramienta