Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
warcannon — Hochgeschwindigkeit/Niedrige Kosten CommonCrawl RegExp in Node.js | Kitploit
Tools/GitHubGitHub/c6fc/warcannon
OSINT (Open-Source-Intelligence)DatenexfiltrationInformationsbeschaffungCloud-SicherheitDienstprogramme & FrameworksCrawler
GitHubc6fc/warcannon

warcannon

Hochgeschwindigkeit/Niedrige Kosten CommonCrawl RegExp in Node.js

Repository anzeigen
25637vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WARCannon - Katastrophal leistungsstarke parallele WARC-Verarbeitung

Image

WARCannon wurde entwickelt, um den Prozess des 'Grepens des Internets' zu vereinfachen und zu verbilligen.

Mit WARCannon können Sie:

  • Regex-Muster anhand realer Common-Crawl-Daten erstellen und testen
  • Common-Crawl-Datensätze einfach für die parallele Verarbeitung laden
  • Rechenkapazitäten skalieren, um WARCs asynchron mit geradezu unverschämter Kapazität zu verarbeiten.
  • Ergebnisse speichern und einfach abrufen

So funktioniert es

WARCannon nutzt geschickt AWS-Technologien, um horizontal auf jede Kapazität zu skalieren, Kosten durch Spot-Flotten und Datenübertragung in derselben Region zu minimieren, mit unglaublichen Geschwindigkeiten (bis zu 100 Gbit/s pro Knoten) aus S3 zu ziehen, über Hunderte von CPU-Kernen zu parallelisieren, den Status über DynamoDB und CloudFront zu melden und Ergebnisse über S3 zu speichern.

Insgesamt kann WARCannon mehrere reguläre Ausdrucksmuster über 400 TB in wenigen Stunden für etwa 30 Dollar verarbeiten.

CloudShell-Installation

Der schnellste und einfachste Weg, um loszulegen, ist die Verwendung des AWS CloudShell. Fügen Sie einfach diesen Einzeiler ein:

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

Wenn Sie einen anderen Branch als den Master von WARCannon verwenden möchten, geben Sie einfach ein:

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

Hinweis: Die CloudShell-Bereitstellung verwendet flüchtigen Speicher, was bedeutet, dass benutzerdefinierte Regex-Muster verloren gehen, wenn CloudShell beendet wird. Wenn Sie WARCannon häufig verwenden möchten, empfehle ich die 'Lokale Installation' unten.

Lokale Installation

WARCannon erfordert, dass Folgendes installiert ist:

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

ProTipp: Um die Dinge sauber und von anderen Dingen, die Sie möglicherweise in AWS haben, getrennt zu halten, wird STRKST empfohlen, WARCannon in einem frischen Konto bereitzustellen. Sie können ein neues Konto einfach über die 'Organizations'-Konsole in AWS erstellen. Mit 'STRKST empfohlen' meine ich 'installieren Sie dies ernsthaft nicht neben anderen Sachen'.

Klonen Sie zuerst das Repo und kopieren Sie die Beispiel-Einstellungen.

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

Bearbeiten Sie settings.json nach Belieben:

Erforderliche Einstellungen

  • nodeInstanceType: Ein Array von Instanztypen, die für die parallele Verarbeitung verwendet werden sollen. 'c'-Typen bieten für diesen Zweck das beste Preis-Leistungs-Verhältnis, und jede Größe kann verwendet werden. ["c5n.18xlarge"] ist der empfohlene Wert für echte Kampagnen.
  • nodeCapacity: Die Anzahl der Knoten, die während der parallelen Verarbeitung angefordert werden sollen. Die resultierenden Knoten werden eine beliebige Verteilung der von Ihnen angegebenen nodeInstanceTypes sein.
  • nodeParallelism: Die Anzahl der gleichzeitig zu verarbeitenden WARCs pro vCPU. 2 ist hier eine gute Zahl. Wenn Knoten nicht genügend RAM haben, um auf dieser Parallelitätsebene zu laufen (wie es bei 'c'-Typ-Instanzen der Fall sein kann), laufen sie stattdessen mit der höchsten sicheren Parallelität.
  • nodeMaxDuration: Die maximale Lebensdauer von Rechenknoten in Sekunden. Knoten werden nach dieser Zeit automatisch beendet, wenn der Job noch nicht abgeschlossen ist. Standardwert ist 24 Stunden.

Optionale Einstellungen (bei Nichtgebrauch vollständig weglassen)

  • sshKeyName: Der Name eines EC2-SSH-Keys, der bereits in us-east-1 existiert.
  • allowSSHFrom: Eine CIDR-Maske, um SSH zu erlauben. Normalerweise ist dies &lt;yourpublicip&gt;/32

Um es zu installieren, führen Sie dies aus:

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

Kurzanleitung

Das Ausführen einer Kampagne in WARCannon verwendet einen einfachen, leicht verständlichen Arbeitsablauf, der am besten in diesen wenigen Schritten beschrieben werden kann:

  1. Infrastruktur bereitstellen: warcannon deploy
  2. Regex-Muster entwickeln und dann lokal testen: warcannon testLocal -s
  3. Regex-Muster in AWS über Lambda verifizieren: warcannon test
  4. Verfügbare Crawls anzeigen: warcannon list 2022
  5. Warteschlange mit dem gewünschten Crawl füllen: warcannon populate 2022-21
  6. Kampagne ausführen: warcannon fire
  7. Warten, bis die Kampagne abgeschlossen ist, dann die Ergebnisse aus S3 mit warcannon syncResults abrufen

Lesen Sie weiter, um ein detaillierteres Verständnis der einzelnen Schritte zu erhalten.

Verwenden von WARCannon

WARCannon wird von Common Crawl über das AWS Open Data-Programm gespeist. Common Crawl ist einzigartig, da die von ihren Spiders abgerufenen Daten nicht nur Website-Text, sondern auch andere textbasierte Inhalte wie JavaScript, TypeScript, vollständiges HTML, CSS usw. erfassen. Durch die Erstellung geeigneter regulärer Ausdrücke, die einzigartige Komponenten identifizieren können, können Forscher Websites anhand der von ihnen verwendeten Technologien identifizieren, ohne jemals die Website selbst zu berühren. Das Problem ist, dass dafür Hunderte von Terabytes an Daten analysiert werden müssen, was unabhängig von den verfügbaren Ressourcen eine große Herausforderung darstellt. Glücklicherweise bietet WARCannon mehrere Tools, mit denen Sie dies bewerkstelligen können!

Entwickeln von regulären Ausdrücken

Das Internet zu greppen ist nichts für schwache Nerven, aber der erste Schritt ist ein effektives Sieb. WARCannon unterstützt dies, indem es die lokale Überprüfung von regulären Ausdrücken anhand realer Common-Crawl-Daten ermöglicht. Öffnen Sie zuerst lambda_functions/warcannon/matches.js und ändern Sie das Objekt regex_patterns, um die gewünschten regulären Ausdrücke im Format name: pattern aufzunehmen. Hier ist ein Beispiel aus dem Standard-Suchset:

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

Zeichenfolgen, die diesem Ausdruck entsprechen, werden unter dem entsprechenden Schlüssel in den Ergebnissen gespeichert; in diesem Fall access_key_id. Protipp: Verwenden Sie RegExr mit dem Format 'JavaScript', um reguläre Ausdrücke zu erstellen und gegen bekannte gute Treffer zu testen.

Sie haben auch die Möglichkeit, nur Ergebnisse von bestimmten Domänen zu erfassen. Füllen Sie dazu einfach das Array domains mit den FQDNs, die Sie einschließen möchten. Es wird empfohlen, dies leer [] zu lassen, da es fast nie lohnenswert ist (der eingesparte Verarbeitungsaufwand ist sehr gering), aber es kann in einigen Nischenfällen nützlich sein.

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

Sobald matches.js ausgefüllt ist, führen Sie den folgenden Befehl aus:

root@kitploit:~
warcannon$ warcannon testLocal -s

Sie können optional einen Pfad zu einem WARC im commoncrawl S3-Bucket hinzufügen, wenn Sie möchten, ansonsten wird eine hartcodierte Standardeinstellung verwendet.

WARCannon streamt die Verarbeitung der WARC-Datei (oder lädt sie vollständig herunter, wenn Sie -s weglassen), um Ihre konfigurierten Treffer zu finden. WARCannon speichert die Ergebnisse im Ordner ~/.warcannon/, wenn Sie mit ctrl+c unterbrechen oder wenn die Verarbeitung abgeschlossen ist. Dies erleichtert das schnelle Testen gängiger Treffer mit minimaler Bandbreite.

Darüber hinaus versucht WARCannon, die gesamten Rechenkosten Ihrer regulären Ausdrücke zu bewerten, wenn sie lokal ausgeführt werden. Auf diese Weise können Sie erfahren, ob ein bestimmter regulärer Ausdruck die Leistung erheblich beeinträchtigt, bevor Sie Ihre Kampagne ausführen.

Image

Durchführen von benutzerdefinierter Verarbeitung

Manchmal reicht ein einfaches Regex-Muster allein nicht aus, und Sie benötigen einige zusätzliche Schritte, um sicherzustellen, dass Sie die richtigen Informationen zurückgeben. In diesem Fall können Sie durch einfaches Hinzufügen einer Funktion zum Objekt exports.custom_functions mit demselben Schlüsselnamen jede zusätzliche Verarbeitung durchführen, die Sie für angemessen halten.

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
		}
	}
}

Hinweis: WARCannon ist dafür gedacht, Text mit wahnsinnigen Geschwindigkeiten zu verarbeiten. Obwohl es sicherlich möglich ist, jede Art von Operation durchzuführen, die Sie möchten, kann das Hinzufügen von latenzintensiven benutzerdefinierten Funktionen wie Netzwerkaufrufen die Verarbeitungszeit und -kosten erheblich erhöhen. Netzwerkaufrufe könnten auch zu SEHR vielen Aufrufen gegen eine Website führen, was Sie in Schwierigkeiten bringen könnte. Seien Sie klug, wie Sie diese Funktionen einsetzen.

Durchführen eines einmaligen Tests in AWS

Die Kosten von AWS können Angst auslösen, besonders wenn Sie nur etwas recherchieren möchten. WARCannon wurde entwickelt, um sowohl einmalige Ausführungen als auch vollständige Kampagnen zu ermöglichen, sodass Sie sich der Ergebnisse sicher sein können, die Sie zurückerhalten. Sobald Sie mit den Ergebnissen von testLocal zufrieden sind, können Sie Ihre aktualisierten Treffer bereitstellen und einen cloudgestützten Test einfach ausführen:

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

Auch hier können Sie optional einen WARC-Pfad angeben, falls gewünscht, es ist jedoch nicht erforderlich.

Dies führt eine Lambda-Funktion mit den von Ihnen konfigurierten regulären Ausdrücken synchron aus und gibt sofort die Ergebnisse zurück. Dieser Vorgang dauert etwa 2,5 Minuten, also haben Sie keine Angst zu warten, während er seine Magie entfaltet.

Starten einer echten Kampagne

Sobald Sie mit den Ergebnissen in Lambda zufrieden sind, sind Sie bereit, das Internet wirklich zu greppen. Wir werden zuerst einige grundlegende Hausarbeiten durchgehen und dann loslegen.

Leeren der Warteschlange

WARCannon verwendet AWS Simple Queue Service, um Arbeit an die Rechenknoten zu verteilen. Um sicherzustellen, dass Ihre Ergebnisse nicht durch vorherige Läufe verunreinigt werden, können Sie WARCannon anweisen, die Warteschlange zu leeren:

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

Sie können dann den Status der Warteschlange überprüfen:

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

Überprüfen Sie Folgendes, bevor Sie fortfahren:

  1. Die SQS-Warteschlange ist leer
  2. Der Jobstatus ist 'INACTIVE'

Füllen der Warteschlange (Einfach)

Um die Warteschlangennachrichten zu erstellen, die die Rechenknoten verarbeiten werden, müssen Sie zuerst SQS mit Crawl-Daten füllen. WARCannon bietet mehrere Befehle, die dabei helfen, beginnend mit der Möglichkeit, die verfügbaren Scans anzuzeigen. In diesem Fall schauen wir uns die für das Jahr 2021 verfügbaren Scans an:

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

Wir haben zwei Scans, die mit der Zeichenfolge "2021" übereinstimmen. Wir können WARCannon nun anweisen, die Warteschlange basierend auf einem dieser Scans zu füllen. Dieses Mal müssen wir einen Parameter angeben, der einen der Scans eindeutig identifiziert. "2021-04" wird den Trick tun. Wir könnten wählen, nur einen Teilscan zu füllen, indem wir auch eine Anzahl von Chunks und eine Chunk-Größe angeben, aber das überspringen wir vorerst.

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

Füllen der Warteschlange über Athena (Fortgeschritten)

Während der Bereitstellung richtet WARCannon automatisch eine Datenbank (warcannon_commoncrawl) und eine Arbeitsgruppe (warcannon) in Athena ein, die zum schnellen Abfragen von Informationen aus CommonCrawl verwendet werden können. Dies kann besonders nützlich sein, um spärliche Kampagnen basierend auf bestimmten Abfragen zu füllen. Zum Beispiel sucht die folgende Abfrage nach WARCs, die Antworten von 'example.com' enthalten:

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

Sie können die Athena-Konsole verwenden, um Ihre Ergebnisse zu verfeinern, aber Sie müssen die Abfrage über die WARCannon-Kommandozeile ausführen, wenn Sie einen Job damit füllen möchten:

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 kann dann die Ergebnisse einer Abfrage verwenden, um die Warteschlange zu füllen, und tut dies basierend auf der Spalte warc_filename aus dem Resultset. Daher wird empfohlen, entweder nach dieser Spalte zu group by oder distinct() zu verwenden, um Duplikate zu vermeiden. WARCannon gibt einen Fehler aus, wenn dieses Feld nicht vorhanden ist. Füllen Sie die Warteschlange mit Athena-Ergebnissen, indem Sie die Query Execution ID an den Befehl populateAthena übergeben.

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

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

Hinweis: Das Füllen eines spärlichen Jobs für eine einzelne Domäne mag wie eine gute Idee erscheinen, ist es aber oft nicht. Die Antworten einer einzelnen Domäne sind tendenziell weit über eine große Teilmenge von WARCs verteilt. Dies kann deutlich anhand der obigen Beispielabfrage gesehen werden: Von den ~150.000 Datensätzen in jedem WARC kann der größte einzelne Treffer für mittelgroße Websites im einstelligen Bereich liegen.

Abfeuern der WARCannon

Nachdem die Warteschlange gefüllt ist, sind wir bereit zu feuern. WARCannon führt einige Plausibilitätsprüfungen durch, um sicherzustellen, dass alles in Ordnung ist, zeigt Ihnen dann die Konfiguration der Kampagne und gibt Ihnen eine letzte Gelegenheit, abzubrechen, bevor Sie die Bestellung abschließen.

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

Lösen Sie aus, indem Sie mit 'Yes' antworten.

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

Die Antwort enthält einen Link zu Ihrer eindeutigen Status-URL, unter der Sie den Fortschritt Ihrer Kampagne und die Leistung jedes Knotens überwachen können.

Image

Ergebnisse abrufen

WARCannon-Ergebnisse werden in S3 im JSON-Format gespeichert, aufgeschlüsselt nach jedem Knoten, der für die Ergebnisse verantwortlich ist. Athena-Ergebnisse werden im selben Bucket unter dem Präfix /athena/ gespeichert. Sie können die Ergebnisse einer Kampagne mit dem Befehl syncResults in den Ordner ~/.warcannon/ auf Ihrem lokalen Rechner synchronisieren.

root@kitploit:~
warcannon syncResults

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

Sie können dann die Ergebnis-Buckets mit clearResults leeren

root@kitploit:~
warcannon clearResults

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

Offizieller Discord-Kanal

Haben Sie Fragen, brauchen Hilfe, möchten Sie beitragen oder mit einem Erfolg prahlen? Kommen Sie auf Discord vorbei!

Official c6fc Discord

Tool herunterladen