
Ein modulares verteiltes Penetrationstest-Werkzeug.
v0.6.0
Englisch | Chinesisch.
Swarm ist ein Open-Source-modulares, verteiltes Penetrationstest-Tool, das mithilfe einer verteilten Aufgabenwarteschlange die Kommunikation im Master-Slave-Modus-System realisiert und MongoDB zur Datenspeicherung nutzt. Es besteht aus einem verteilten Framework und Funktionsmodulen. Das Funktionsmodul kann eine völlig neue Implementierung einiger Penetrationsfunktionen sein oder eine einfache Kapselung eines vorhandenen Tools, um verteilte Funktionalität zu implementieren. Dank der modularen Architektur ist es einfach, unter dem verteilten Framework neue Funktionen anzupassen und zu erweitern.
In dieser Version 0.6.0 enthält es fünf Module:
Wenn Sie Ihr eigenes Modul schreiben möchten, können Sie dieses lesen.
Ein Zipball kann hier heruntergeladen werden. Sie können auch git verwenden, um swarm zu erhalten:
git clone [email protected]:Arvin-X/swarm.git
dann verwenden Sie setup.py, um swarm zu installieren:
python setup.py install
Swarm funktioniert mit Python 2.6.x oder 2.7.x und benötigt MongoDB-Unterstützung auf dem Master-Host.
Falls Sie noch kein MongoDB haben, können Sie es mit apt-get installieren:
apt-get install mongodb
Führen Sie swarm auf dem Master-Host aus, um Aufgaben zu verteilen, und swarm-s mit der Option '-p' auf dem Slave-Host, um die Unteraufgabe vom Master zu erledigen.
swarm-s -p 9090
Sie können auch einen Listener auf dem Zielport des Slave-Hosts einrichten, um Befehle zu empfangen, um swarm-s zu wecken, indem Sie die Option '--waken' angeben, wenn Sie swarm ausführen. Andernfalls sollten Sie '--waken' leer lassen. Um einen Listener zu erstellen, können Sie nc oder socat verwenden, wie:
nc -e /bin/sh -l 9191
Und verwenden Sie den waken-Befehl wie:
swarm-s ARGS
Sie müssen "ARGS" in Ihrem Befehl belassen und sicherstellen, dass es als CLI-Argumente an swarm übergeben wird, damit swarm es durch einige notwendige Argumente wie '-p' ersetzen kann.
Grundlegende Verwendung von swarm:
usage: swarm [-h] -m MODULE [-v] [-c] [-o PATH] [-t [TARGET [TARGET ...]]]
[-T PATH] [-s [SWARM [SWARM ...]]] [-S PATH] [--waken CMD]
[--timeout TIME] [--m-addr ADDR] [--m-port PORT] [--s-port PORT]
[--authkey KEY] [--db-addr ADDR] [--db-port PORT] [--process NUM]
[--thread NUM] [--taskg NUM] [--dom-compbrute] [--dom-dict PATH]
[--dom-maxlevel NUM] [--dom-charset SET] [--dom-levellen LEN]
[--dom-timeout TIME] [--dir-http-port PORT]
[--dir-https-port PORT] [--dir-compbrute] [--dir-charset SET]
[--dir-len LEN] [--dir-dict PATH] [--dir-maxdepth NUM]
[--dir-timeout TIME] [--dir-not-exist FLAG] [--dir-quick-scan]
[--nmap-ports PORTS] [--nmap-top-ports NUM] [--nmap-ops ...]
[--int-target [URLS [URLS ...]]] [--int-method METHOD]
[--int-headers JSON] [--int-cookies COOKIES] [--int-body BODY]
[--int-payload PAYLOAD] [--int-flag FLAGS] [--int-timeout TIME]
[--map-seed SEED] [--map-http-port PORT] [--map-https-port PORT]
[--map-cookies COOKIES] [--map-interval TIME]
[--map-timeout TIME]
optional arguments:
-h, --help Zeigt diese Hilfemeldung an und beendet das Programm
-m MODULE Verwendet den Modulnamen in ./modules/, um es zu aktivieren
Ausgabe:
Diese Optionen können zur Steuerung der Ausgabe verwendet werden
-v Ausführlichere Ausgabe
-c Deaktiviert farbige Log-Ausgabe
-o PATH Zeichnet Log in der Zieldatei auf
Ziel:
Mindestens eine dieser Optionen muss angegeben werden, um das Ziel zu definieren,
es sei denn, es gibt eine andere spezielle Option zur Definition des Ziels im Modul
-t [TARGET [TARGET ...]]
Durch Leerzeichen getrennt (z.B. github.com 127.0.0.0/24
192.168.1.5)
-T PATH Datei, die die Zielliste enthält, ein Ziel pro Zeile
Swarm:
Verwenden Sie diese Optionen, um die swarm-Verbindung anzupassen. Mindestens ein
Slave-Host muss angegeben werden.
-s [SWARM [SWARM ...]]
Adresse der Slave-Hosts mit Port, falls Sie sie wecken
müssen (z.B. 192.168.1.2:9090 192.18.1.3:9191). Kein Port,
wenn swarm-s auf dem Slave-Host bereits läuft
-S PATH Datei, die die Slave-Liste enthält, ein Host pro Zeile
--waken CMD Befehl zum Wecken der Slave-Hosts, null, wenn swarm-s auf
dem Slave-Host bereits läuft
--timeout TIME Sekunden, die gewartet werden, bevor eine Antwort von
swarm angefordert wird
--m-addr ADDR Master-Adresse, die von allen Slave-Hosts erreichbar ist
--m-port PORT Lauschport auf dem Master-Host zur Aufgabenverteilung
--s-port PORT Lauschport auf dem Slave-Host zum Empfangen von Befehlen
vom Master
--authkey KEY Authentifizierungsschlüssel zwischen Master- und Slave-Hosts
Datenbank:
Diese Optionen können für den Zugriff auf den MongoDB-Server verwendet werden
--db-addr ADDR Adresse des MongoDB-Servers
--db-port PORT Lauschport des MongoDB-Servers
Allgemein:
Diese Optionen können zur Anpassung der allgemeinen Konfiguration des Slave-Hosts
verwendet werden
--process NUM Maximale Anzahl gleichzeitiger Prozesse auf dem Slave-Host
--thread NUM Maximale Anzahl gleichzeitiger Threads auf dem Slave-Host
--taskg NUM Granularität der Unteraufgaben von 1 bis 3
Domain-Scan:
Diese Optionen können zur Anpassung der swarm-Aktion des Subdomain-Scans verwendet
werden
--dom-compbrute Verwendet vollständige Brute-Force ohne Wörterbuch auf dem
Ziel
--dom-dict PATH Pfad zum Wörterbuch, das für den Subdomain-Scan verwendet
wird
--dom-maxlevel NUM Maximale Ebene des Subdomain-Namens, die gescannt werden
soll
--dom-charset SET Zeichensatz, der für die vollständige Brute-Force verwendet
wird
--dom-levellen LEN Längenintervall des Subdomain-Namens pro Ebene
--dom-timeout TIME Zeitüberschreitungsoption für den Subdomain-Scan
Verzeichnis-Scan:
Diese Optionen können zur Anpassung der swarm-Aktion des Verzeichnis-Scans
verwendet werden
--dir-http-port PORT Durch Komma getrennt, wenn mehrere Ports benötigt werden
--dir-https-port PORT
Durch Komma getrennt, wenn mehrere Ports benötigt werden
--dir-compbrute Verwendet vollständige Brute-Force ohne Wörterbuch auf dem
Ziel
--dir-charset SET Zeichensatz, der für die vollständige Brute-Force verwendet
wird
--dir-len LEN Längenintervall des Verzeichnis- oder Dateinamens
--dir-dict PATH Pfad zum Wörterbuch, das für den Verzeichnis-Scan verwendet
wird
--dir-maxdepth NUM Maximale Tiefe beim Verzeichnis- und Datei-Scan
--dir-timeout TIME Zeitüberschreitungsoption für den Verzeichnis-Scan
--dir-not-exist FLAG Durch doppeltes Komma getrennt, wenn mehrere Flags benötigt
werden
--dir-quick-scan Verwendet HEAD-Methode anstelle von GET beim Scan
Nmap-Modul:
Diese Optionen können verwendet werden, um die nmap-Aktion auf den Slave-Hosts
anzupassen
--nmap-ports PORTS Unterstützt Format wie '80,443,3306,1024-2048'
--nmap-top-ports NUM Scannt <number> der häufigsten Ports
--nmap-ops ... Nmap-Optionsliste in den Man-Seiten von nmap, dies sollte
das letzte in den CLI-Argumenten sein
Intruder:
Verwenden Sie das Indikatorsymbol '@n@', wobei 'n' eine Zahl sein sollte, wie
'@0@','@1@' usw., um Angriffspunkte in der Option 'int_target' und 'int_body'
anzugeben. Verwenden Sie die Option 'int_payload', um die auf diesen
Angriffspunkten verwendete Payload anzugeben, um diesen Angriff durchzuführen.
--int-target [URLS [URLS ...]]
Verwenden Sie diese Option anstelle von '-t' oder '-T'
Optionen, um Ziele anzugeben, durch Komma getrennt
--int-method METHOD Http-Methode, die in diesem Angriff verwendet wird
--int-headers JSON Ein JSON-Format-Datensatz (z.B. {"User-
Agent":"Mozilla/5.0","Origin":"XXX"})
--int-cookies COOKIES
Durch Komma getrennt (z.B. PHPSESSIONID:XX,token:XX)
--int-body BODY HTTP- oder HTTPS-Body. Sie können das Indikatorsymbol in
dieser Option verwenden
--int-payload PAYLOAD
Das Format sollte '@0@:PATH,@1@:CHARSET:NUM-NUM' folgen
--int-flag FLAGS Durch doppeltes Komma getrennt, wenn Sie mehrere Flags
haben
--int-timeout TIME Zeitüberschreitungsoption für das Intruder-Modul
Sitemap-Crawler:
Diese Optionen können zur Anpassung des Sitemap-Crawlers verwendet werden,
unterstützt noch kein JS-Parsing
--map-seed SEED Durch Komma getrennt, wenn Sie mehrere Seeds haben
--map-http-port PORT Durch Komma getrennt, wenn Sie mehrere Ports benötigen
--map-https-port PORT
Durch Komma getrennt, wenn Sie mehrere Ports benötigen
--map-cookies COOKIES
Durch Komma getrennt, wenn Sie mehrere Cookies haben
--map-interval TIME Intervallzeit zwischen zwei Anfragen
--map-timeout TIME Zeitüberschreitungsoption für den Sitemap-Crawler
Es wird empfohlen, die Konfigurationsdatei zur Konfiguration von swarm zu verwenden, anstatt CLI-Argumente zu nutzen, wenn Ihre Anforderungen hoch sind. Die Konfigurationsdateien befinden sich in /etc/swarm/.
Swarm ist unter der GPLv3 lizenziert.