Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
warcannon — RegExp de CommonCrawl de alta velocidade / baixo custo em Node.js | Kitploit
Ferramentas/GitHubGitHub/c6fc/warcannon
OSINT (Inteligência de Fontes Abertas)Exfiltração de DadosColeta de InformaçõesSegurança na NuvemUtilitários e FrameworksRastreador
GitHubc6fc/warcannon

warcannon

RegExp de CommonCrawl de alta velocidade / baixo custo em Node.js

Ver Repositório
25637há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

WARCannon - Processamento paralelo catastroficamente poderoso de WARC

Image

O WARCannon foi criado para simplificar e baratear o processo de 'grep na internet'.

Com o WARCannon, você pode:

  • Construir e testar padrões regex contra dados reais do Common Crawl
  • Carregar facilmente conjuntos de dados do Common Crawl para processamento paralelo
  • Escalar capacidades de computação para processar WARCs de forma assíncrona com capacidade francamente irracional.
  • Armazenar e recuperar facilmente os resultados

Como Funciona

WARCannon aproveita o uso inteligente de tecnologias AWS para escalar horizontalmente para qualquer capacidade, minimizar custos por meio de frotas spot e transferência de dados na mesma região, extrair do S3 em velocidades incríveis (até 100 Gbps por nó), paralelizar em centenas de núcleos de CPU, relatar status via DynamoDB e CloudFront e armazenar resultados via S3.

No geral, o WARCannon pode processar vários padrões de expressão regular em 400 TB em algumas horas por cerca de $30.

Instalação via CloudShell

A maneira mais rápida e fácil de começar é usar o AWS CloudShell. Basta colar este one-liner:

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

Se quiser usar uma branch que não seja a master do WARCannon, basta digitar:

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

Nota: A implantação via CloudShell usa armazenamento efêmero, o que significa que os padrões regex personalizados serão perdidos quando o CloudShell for encerrado. Se você for usar o WARCannon com frequência, recomendo usar a 'Instalação Local' abaixo.

Instalação Local

O WARCannon requer que você tenha os seguintes itens instalados:

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

Dica profissional: Para manter as coisas organizadas e distintas de outras coisas que você possa ter na AWS, é FORTEMENTE recomendado implantar o WARCannon em uma nova conta. Você pode criar uma nova conta facilmente no console 'Organizations' da AWS. Por 'FORTEMENTE recomendado', quero dizer 'seriamente, não instale isso perto de outras coisas'.

Primeiro, clone o repositório e copie as configurações de exemplo.

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

Edite settings.json a gosto:

Configurações obrigatórias

  • nodeInstanceType: Um array de tipos de instância a serem usados para processamento paralelo. Tipos 'c' oferecem o melhor custo-benefício para esse propósito, e qualquer tamanho pode ser usado. ["c5n.18xlarge"] é o valor recomendado para campanhas reais.
  • nodeCapacity: O número de nós a serem solicitados durante o processamento paralelo. Os nós resultantes serão uma distribuição arbitrária dos nodeInstanceTypes que você especificar.
  • nodeParallelism: O número de WARCs simultâneos a serem processados por vCPU. 2 é um bom número aqui. Se os nós tiverem RAM insuficiente para executar nesse nível de paralelismo (como pode acontecer com instâncias do tipo 'c'), eles serão executados no maior paralelismo seguro.
  • nodeMaxDuration: A vida útil máxima dos nós de computação em segundos. Os nós serão automaticamente encerrados após esse tempo se o job ainda não tiver sido concluído. O valor padrão é 24 horas.

Configurações opcionais (deixe-as de fora completamente se não forem usadas)

  • sshKeyName: O nome de uma chave SSH EC2 que já existe em us-east-1.
  • allowSSHFrom: Uma máscara CIDR para permitir SSH. Normalmente será &lt;yourpublicip&gt;/32

Para instalar, execute:

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

Início Rápido

Executar uma campanha no WARCannon usa um fluxo de trabalho simples e fácil de seguir que pode ser melhor descrito nestas poucas etapas:

  1. Implantar a infraestrutura: warcannon deploy
  2. Desenvolver e testar padrões regex localmente: warcannon testLocal -s
  3. Verificar padrões regex na AWS via Lambda: warcannon test
  4. Mostrar crawls disponíveis: warcannon list 2022
  5. Popular a fila com o crawl de sua escolha: warcannon populate 2022-21
  6. Executar a campanha: warcannon fire
  7. Aguardar a conclusão da campanha e, em seguida, recuperar os resultados do S3 com warcannon syncResults

Continue lendo para um entendimento mais detalhado de cada etapa.

Usando o WARCannon

O WARCannon é alimentado pelo Common Crawl através do programa AWS Open Data. O Common Crawl é único porque os dados recuperados por seus spiders não apenas capturam o texto do site, mas também outros conteúdos baseados em texto, como JavaScript, TypeScript, HTML completo, CSS, etc. Ao construir Expressões Regulares adequadas capazes de identificar componentes únicos, os pesquisadores podem identificar sites pelas tecnologias que usam, e fazer isso sem nunca tocar no próprio site. O problema é que isso requer a análise de centenas de terabytes de dados, o que é uma tarefa difícil, independentemente dos recursos que você tem à disposição. Felizmente, o WARCannon possui várias ferramentas que você pode usar para realizar isso!

Desenvolvendo Expressões Regulares

Fazer grep na internet não é para os fracos de coração, mas começar com uma peneira eficaz é o primeiro passo. O WARCannon oferece suporte a isso permitindo a verificação local de expressões regulares contra dados reais do Common Crawl. Primeiro, abra lambda_functions/warcannon/matches.js e modifique o objeto regex_patterns para incluir as expressões regulares que você deseja usar no formato name: pattern. Aqui está um exemplo do conjunto de pesquisa padrão:

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

Strings que correspondem a esta expressão serão salvas sob a chave correspondente nos resultados; access_key_id neste caso. Dica profissional: Use RegExr com o formato 'JavaScript' para construir e testar expressões regulares contra correspondências conhecidas.

Você também tem a opção de capturar apenas resultados de domínios especificados. Para fazer isso, basta preencher o array domains com os FQDNs que você deseja incluir. Recomenda-se deixar vazio [] já que quase nunca vale a pena (o esforço de processamento economizado é muito pequeno), mas pode ser útil em alguns casos específicos.

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

Assim que o matches.js estiver preenchido, execute o seguinte comando:

root@kitploit:~
warcannon$ warcannon testLocal -s

Você pode opcionalmente adicionar um caminho para um WARC no bucket S3 commoncrawl se desejar, mas um padrão hardcoded será usado caso contrário.

O WARCannon processará o arquivo WARC em streaming (ou o baixará completamente se você omitir -s) para encontrar as correspondências configuradas. O WARCannon salvará os resultados na pasta ~/.warcannon/ quando você interromper com ctrl+c ou quando o processamento terminar. Isso facilita testar correspondências comuns rapidamente com largura de banda mínima.

Além de tudo isso, o WARCannon tentará avaliar o custo computacional total de suas expressões regulares quando executadas localmente. Dessa forma, você pode ser informado se uma determinada expressão regular irá impactar significativamente o desempenho antes de executar sua campanha.

Image

Realizando Processamento Personalizado

Às vezes, um padrão regex simples não é suficiente e você precisa de algumas etapas adicionais para garantir que está retornando as informações corretas. Nesse caso, basta adicionar uma função ao objeto exports.custom_functions com o mesmo nome da chave para realizar qualquer processamento adicional que julgar adequado.

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: O WARCannon foi projetado para processar texto em velocidades estúpidas. Embora certamente seja possível realizar qualquer tipo de operação desejada, adicionar funções personalizadas de alta latência, como chamadas de rede, pode aumentar significativamente o tempo de processamento e os custos. Chamadas de rede também podem resultar em MUITAS chamadas para um site, o que pode causar problemas. Seja inteligente sobre como você usa essas funções.

Realizando um Teste Único na AWS

Os custos da AWS podem causar ansiedade, especialmente quando você está apenas querendo fazer algumas pesquisas. O WARCannon foi construído para permitir execuções únicas além de campanhas completas, para que você possa ter confiança nos resultados que obterá. Depois de ficar satisfeito com os resultados obtidos com testLocal, você pode implantar suas correspondências atualizadas e executar um teste na nuvem facilmente:

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

Novamente, você pode opcionalmente incluir um caminho WARC, se desejar, embora não seja obrigatório.

Isso executará de forma síncrona uma função Lambda com as expressões regulares que você configurou e retornará imediatamente os resultados. Esse processo leva cerca de 2,5 minutos, então não tenha medo de esperar enquanto ele faz sua mágica.

Lançando uma Campanha Real

Depois de ficar satisfeito com os resultados obtidos no Lambda, você está pronto para fazer grep na internet de verdade. Primeiro, vamos revisar algumas tarefas básicas de manutenção e depois dar o pontapé inicial.

Limpando a Fila

O WARCannon usa o AWS Simple Queue Service para distribuir o trabalho para os nós de computação. Para garantir que seus resultados não sejam contaminados com execuções anteriores, você pode instruir o WARCannon a esvaziar a fila:

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

Você pode então verificar o estado da fila:

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

Verifique o seguinte antes de prosseguir:

  1. A fila SQS está vazia
  2. O status do job é 'INACTIVE'

Populando a Fila (Simples)

Para criar as mensagens da fila que os nós de computação consumirão, você deve primeiro popular o SQS com dados de crawls. O WARCannon possui vários comandos para ajudar nisso, começando pela capacidade de mostrar as varreduras disponíveis. Neste caso, vamos ver as varreduras disponíveis para o ano de 2021:

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

Temos duas varreduras correspondentes à string "2021" para trabalhar. Agora podemos instruir o WARCannon a popular a fila com base em uma dessas varreduras. Desta vez, precisamos fornecer um parâmetro que identifique exclusivamente uma das varreduras. "2021-04" servirá. Poderíamos optar por popular apenas uma varredura parcial especificando também um número de chunks e um tamanho de chunk, mas vamos pular isso por enquanto.

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

Populando a Fila via Athena (Avançado)

Durante a implantação, o WARCannon provisiona automaticamente um banco de dados (warcannon_commoncrawl) e um grupo de trabalho (warcannon) no Athena que podem ser usados para consultar rapidamente informações do CommonCrawl. Isso pode ser especialmente útil para popular campanhas esparsas com base em determinadas consultas. Por exemplo, a consulta a seguir pesquisará WARCs que contenham respostas 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

Você pode usar o console Athena para ajustar seus resultados, mas deve executar a consulta a partir da linha de comando do WARCannon se pretende popular um job com ela:

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

O WARCannon pode então usar os resultados de uma consulta para popular a fila, e faz isso com base na coluna warc_filename do conjunto de resultados. Portanto, é recomendável que você use group by nesta coluna ou use distinct() para evitar duplicatas. O WARCannon lançará um erro se este campo não estiver presente. Popule a fila com resultados do Athena passando o ID de Execução da Consulta para o 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: Embora popular um job esparso para um único domínio possa parecer uma boa ideia, muitas vezes não é. As respostas de um único domínio tendem a estar amplamente espalhadas por um grande subconjunto de WARCs. Isso pode ser visto claramente usando a consulta de exemplo acima para ver que, dos ~150.000 registros em cada WARC, o maior hit único para sites de porte moderado pode estar na casa dos dígitos únicos.

Disparando o WARCannon

Com a fila populada, estamos prontos para disparar. O WARCannon fará algumas verificações de sanidade para garantir que tudo está em ordem, depois mostrará a configuração da campanha e dará uma última oportunidade de abortar antes de finalizar a ordem.

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]: 

Puxe o gatilho respondendo com '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

A resposta inclui um link para sua URL de status única, onde você pode monitorar o progresso da sua campanha e o desempenho de cada nó.

Image

Obtendo Resultados

Os resultados do WARCannon são armazenados no S3 em formato JSON, divididos por cada nó responsável por produzir os resultados. Os resultados do Athena são armazenados no mesmo bucket sob o prefixo /athena/. Você pode sincronizar os resultados de uma campanha para a pasta ~/.warcannon/ em sua máquina local usando o comando syncResults.

root@kitploit:~
warcannon syncResults

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

Você pode então esvaziar os buckets de resultados com 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 do Discord

Tem perguntas, precisa de ajuda, quer contribuir ou se gabar de uma vitória? Venha bater um papo no Discord!

Official c6fc Discord

Baixar ferramenta