Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
warcannon — Alta velocità/Basso costo CommonCrawl RegExp in Node.js | Kitploit
Strumenti/GitHubGitHub/c6fc/warcannon
OSINT (Open Source Intelligence)Esfiltrazione DatiRaccolta InformazioniSicurezza CloudUtilità e FrameworkCrawler
GitHubc6fc/warcannon

warcannon

Alta velocità/Basso costo CommonCrawl RegExp in Node.js

Vedi Repository
256372 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

WARCannon - Elaborazione WARC parallela catastroficamente potente

Image

WARCannon è stato costruito per semplificare e rendere economico il processo di 'greping su internet'.

Con WARCannon puoi:

  • Costruire e testare pattern regex su veri dati Common Crawl
  • Caricare facilmente dataset Common Crawl per l'elaborazione parallela
  • Scalare le capacità di calcolo per crunching asincrono di WARC a capacità francamente irragionevoli.
  • Memorizzare e recuperare facilmente i risultati

Come funziona

WARCannon sfrutta un uso intelligente delle tecnologie AWS per scalare orizzontalmente a qualsiasi capacità, minimizzare i costi tramite spot fleet e trasferimento dati nella stessa regione, attingere da S3 a velocità incredibili (fino a 100Gbps per nodo), parallelizzare su centinaia di core CPU, riportare lo stato tramite DynamoDB e CloudFront, e memorizzare i risultati tramite S3.

In tutto, WARCannon può elaborare più pattern di espressioni regolari su 400TB in poche ore per circa $30.

Installazione tramite CloudShell

Il modo più veloce e semplice per iniziare è usare AWS CloudShell. Basta incollare questo comando one-liner:

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

Se vuoi usare un branch non master di WARCannon, digita:

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

Nota: Il deployment tramite CloudShell utilizza storage effimero, il che significa che i pattern regex personalizzati andranno persi quando il CloudShell esce. Se intendi usare WARCannon frequentemente, ti consiglio di usare 'Installazione locale' di seguito.

Installazione locale

WARCannon richiede che tu abbia installato quanto segue:

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

ProTip: Per mantenere le cose pulite e distinte da altre cose che potresti avere in AWS, si RACCOMANDA VIVAMENTE di distribuire WARCannon in un account nuovo. Puoi creare un nuovo account facilmente dalla console 'Organizations' in AWS. Per 'RACCOMANDAZIONE VIVAMENTE' intendo 'seriamente, non installare questo accanto ad altra roba'.

Per prima cosa, clona il repository e copia le impostazioni di esempio.

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

Modifica settings.json a piacere:

Impostazioni obbligatorie

  • nodeInstanceType: Un array di tipi di istanza da utilizzare per l'elaborazione parallela. I tipi 'c' sono i migliori per questo scopo, e può essere utilizzata qualsiasi dimensione. ["c5n.18xlarge"] è il valore consigliato per campagne reali.
  • nodeCapacity: Il numero di nodi da richiedere durante l'elaborazione parallela. I nodi risultanti saranno una distribuzione arbitraria dei nodeInstanceTypes specificati.
  • nodeParallelism: Il numero di WARC simultanei da elaborare per vCPU. 2 è un buon numero qui. Se i nodi hanno RAM insufficiente per funzionare a questo livello di parallelismo (come potresti incontrare con istanze di tipo 'c'), funzioneranno invece al massimo parallelismo sicuro.
  • nodeMaxDuration: La durata massima di vita dei nodi di calcolo in secondi. I nodi verranno automaticamente terminati dopo questo tempo se il job non è ancora completato. Il valore predefinito è 24 ore.

Impostazioni opzionali (lasciale fuori del tutto se non utilizzate)

  • sshKeyName: Il nome di una chiave SSH EC2 già esistente in us-east-1.
  • allowSSHFrom: Una maschera CIDR per consentire SSH. Tipicamente sarà &lt;tuo_ip_pubblico&gt;/32

Per installare, esegui questo:

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

Avvio rapido

Eseguire una campagna in WARCannon utilizza un flusso di lavoro semplice e facile da seguire, che può essere descritto al meglio in questi pochi passaggi:

  1. Distribuisci l'infrastruttura: warcannon deploy
  2. Sviluppa, poi testa i pattern regex in locale: warcannon testLocal -s
  3. Verifica i pattern regex in AWS tramite Lambda: warcannon test
  4. Mostra i crawl disponibili: warcannon list 2022
  5. Popola la coda con il crawl di tua scelta: warcannon populate 2022-21
  6. Esegui la campagna: warcannon fire
  7. Attendi la fine della campagna, poi recupera i risultati da S3 con warcannon syncResults

Continua a leggere per una comprensione più dettagliata di ogni passaggio.

Usare WARCannon

WARCannon è alimentato da Common Crawl tramite il programma AWS Open Data. Common Crawl è unico in quanto i dati recuperati dai suoi spider non solo catturano il testo del sito web, ma anche altri contenuti testuali come JavaScript, TypeScript, HTML completo, CSS, ecc. Costruendo espressioni regolari adatte in grado di identificare componenti unici, i ricercatori possono identificare i siti web dalle tecnologie che usano, e farlo senza mai toccare il sito web stesso. Il problema è che ciò richiede l'analisi di centinaia di terabyte di dati, che è un compito arduo indipendentemente dalle risorse a disposizione. Fortunatamente WARCannon ha diversi strumenti che puoi usare per portare a termine questo compito!

Sviluppare espressioni regolari

Fare grep su internet non è per i deboli di cuore, ma iniziare con un setaccio efficace è il primo passo. WARCannon supporta questo consentendo la verifica locale delle espressioni regolari su veri dati Common Crawl. Per prima cosa, apri lambda_functions/warcannon/matches.js e modifica l'oggetto regex_patterns per includere le espressioni regolari che desideri usare nel formato nome: pattern. Ecco un esempio dal set di ricerca predefinito:

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

Le stringhe che corrispondono a questa espressione verranno salvate sotto la chiave corrispondente nei risultati; in questo caso access_key_id. ProTip: Usa RegExr con il formato 'JavaScript' per costruire e testare le espressioni regolari su corrispondenze note e valide.

Hai anche la possibilità di catturare solo risultati da domini specificati. Per farlo, popola semplicemente l'array domains con i FQDN che desideri includere. Si consiglia di lasciarlo vuoto [] poiché quasi mai ne vale la pena (lo sforzo di elaborazione risparmiato è molto piccolo), ma può essere utile in alcuni casi di nicchia.

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

Una volta popolato matches.js, esegui il seguente comando:

root@kitploit:~
warcannon$ warcannon testLocal -s

Puoi opzionalmente aggiungere un percorso a un WARC nel bucket S3 commoncrawl se lo desideri, ma altrimenti verrà utilizzato un valore predefinito hardcoded.

WARCannon elaborerà in streaming il file WARC (o lo scaricherà interamente se ometti -s) per trovare le corrispondenze configurate. WARCannon salverà i risultati nella cartella ~/.warcannon/ quando interrompi con ctrl+c o quando l'elaborazione termina. Questo rende facile testare rapidamente le corrispondenze comuni con larghezza di banda minima.

Inoltre, WARCannon tenterà di valutare il costo computazionale totale delle tue espressioni regolari quando eseguite in locale. In questo modo, puoi essere informato se una determinata espressione regolare influenzerà significativamente le prestazioni prima di eseguire la tua campagna.

Image

Eseguire elaborazioni personalizzate

A volte un semplice pattern regex non è sufficiente da solo e hai bisogno di passaggi aggiuntivi per assicurarti di restituire le informazioni giuste. In questo caso, aggiungere semplicemente una funzione all'oggetto exports.custom_functions con lo stesso nome chiave ti consente di eseguire qualsiasi elaborazione aggiuntiva ritieni opportuna.

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) {
		// Ignora le corrispondenze con 'EXAMPLE' nel testo, poiché è comune nella documentazione.
		if (match.text(/EXAMPLE/) != null) {
			// Restituire un booleano 'false' scarta la corrispondenza.
			return false
		}
	}
}

Nota: WARCannon è progettato per crunchare il testo a velocità folli. Mentre è certamente possibile eseguire qualsiasi tipo di operazione desideri, l'aggiunta di funzioni personalizzate ad alta latenza come chiamate di rete può aumentare significativamente i tempi di elaborazione e i costi. Le chiamate di rete potrebbero anche generare MOLTE chiamate a un sito web, il che potrebbe metterti nei guai. Sii intelligente su come usi queste funzioni.

Eseguire un test singolo in AWS

I costi di AWS possono generare ansia, specialmente quando stai solo cercando di fare qualche ricerca. WARCannon è stato costruito per consentire sia esecuzioni singole che campagne complete, così puoi essere sicuro dei risultati che otterrai. Una volta che sei soddisfatto dei risultati ottenuti con testLocal, puoi distribuire le corrispondenze aggiornate ed eseguire un test supportato dal cloud facilmente:

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

Ancora una volta, puoi opzionalmente includere un percorso WARC se lo desideri, anche se non è obbligatorio.

Questo eseguirà in modo sincrono una funzione Lambda con le espressioni regolari configurate e restituirà immediatamente i risultati. Questo processo richiede circa 2,5 minuti, quindi non aver paura di aspettare mentre fa la sua magia.

Lanciare una campagna reale

Una volta che sei soddisfatto dei risultati ottenuti in Lambda, sei pronto per fare grep su internet per davvero. Prima revisioneremo alcune faccende di base, poi lanceremo.

Pulire la coda

WARCannon utilizza AWS Simple Queue Service per distribuire il lavoro ai nodi di calcolo. Per assicurarti che i tuoi risultati non siano contaminati da esecuzioni precedenti, puoi dire a WARCannon di svuotare la coda:

root@kitploit:~
warcannon$ warcannon emptyQueue
[+] Cancellati [ 15 ] messaggi dalla coda

Puoi quindi verificare lo stato della coda:

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

Verifica quanto segue prima di procedere:

  1. La coda SQS è vuota
  2. Lo stato del job è 'INACTIVE'

Popolare la coda (semplice)

Per creare i messaggi della coda che i nodi di calcolo consumeranno, devi prima popolare SQS con i dati del crawl. WARCannon ha diversi comandi per aiutare in questo, a partire dalla possibilità di mostrare le scansioni disponibili. In questo caso, diamo un'occhiata alle scansioni disponibili per l'anno 2021:

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

Abbiamo due scansioni che corrispondono alla stringa "2021" con cui lavorare. Ora possiamo istruire WARCannon a popolare la coda basandosi su una di queste scansioni. Questa volta, dobbiamo fornire un parametro che identifichi in modo univoco una delle scansioni. "2021-04" farà al caso nostro. Potremmo scegliere di popolare solo una scansione parziale specificando anche un numero di chunk e una dimensione del chunk, ma per ora salteremo questo.

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

Popolare la coda tramite Athena (avanzato)

Durante il deployment, WARCannon configura automaticamente un database (warcannon_commoncrawl) e un workgroup (warcannon) in Athena che possono essere utilizzati per interrogare rapidamente le informazioni da CommonCrawl. Questo può essere particolarmente utile per popolare campagne sparse basate su determinate query. Ad esempio, la seguente query cercherà WARC che contengono risposte da '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

Puoi usare la console Athena per perfezionare i tuoi risultati, ma devi eseguire la query dalla riga di comando di WARCannon se intendi popolare un job con essa:

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 può quindi utilizzare i risultati di una query per popolare la coda, e lo fa basandosi sulla colonna warc_filename dal result set. Pertanto, si consiglia di group by questa colonna o di utilizzare distinct() per evitare duplicati. WARCannon genererà un errore se questo campo non è presente. Popola la coda con i risultati di Athena passando l'ID di esecuzione della query 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: Sebbene popolare un job sparso per un singolo dominio possa sembrare una buona idea, spesso non lo è. Le risposte da un singolo dominio tendono ad essere distribuite ampiamente su un grande sottoinsieme di WARC. Questo può essere visto chiaramente usando la query di esempio sopra: dei ~150.000 record in ogni WARC, il singolo hit più grande per siti web di dimensioni moderate può essere a una cifra singola.

Sparare il WARCannon

Con la coda popolata, siamo pronti a sparare. WARCannon eseguirà alcuni controlli di integrità per assicurarsi che tutto sia in ordine, poi ti mostrerà la configurazione della campagna e ti darà un'ultima opportunità di interrompere prima di finalizzare l'ordine.

root@kitploit:~
warcannon$ warcannon fire
[!] Questo richiederà [ 6 ] istanze spot di tipo [ m5n.24xlarge, m5dn.24xlarge ]
    della durata di [ 86400 ] secondi.

Per modificarlo, modifica le impostazioni in settings.json ed esegui warcannon deploy
--> Pronto a sparare? [Sì]: 

Tira il grilletto rispondendo con 'Sì'.

root@kitploit:~
--> Pronto a sparare? [Sì]: Sì
{
    "SpotFleetRequestId": "sfr-03dd32b8-51f7-4c8e-802b-a702fc3c8c95"
}

[+] Richiesta spot fleet inviata, i nodi dovrebbero iniziare a connettersi entro ~5 minuti.
    Monitora lo stato dei nodi e l'avanzamento su https://d201offlnmhkmd.cloudfront.net

La risposta include un link al tuo URL di stato unico, dove puoi monitorare l'avanzamento della tua campagna e le prestazioni di ogni nodo.

Image

Ottenere i risultati

I risultati di WARCannon sono memorizzati in S3 in formato JSON, suddivisi per ogni nodo responsabile della produzione dei risultati. I risultati di Athena sono memorizzati nello stesso bucket sotto il prefisso /athena/. Puoi sincronizzare i risultati di una campagna nella cartella ~/.warcannon/ sul tuo computer locale usando il comando syncResults.

root@kitploit:~
warcannon syncResults

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

Puoi quindi svuotare i bucket dei risultati con clearResults

root@kitploit:~
warcannon clearResults

delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
delete: s3://warcannon-results-202...
...
[+] Cancellati [ 21 ] file da S3.

Canale Discord Ufficiale

Hai domande, bisogno di aiuto, vuoi contribuire o vantarti di una vittoria? Vieni a trovarci su Discord!

Official c6fc Discord

Scarica lo strumento