
Go-basiertes Netzwerk-Exploitation- und MITM-Framework für autorisierte Penetrationstests, Netzwerkaufklärung, Abfangen von Netzwerkverkehr, Wireless-Sicherheitstests und Layer-2/3/7-Angriffsforschung.
Ein Framework für lokale & Netzwerk-Sicherheitsbewertungen, geschrieben in Go. Es ist ein Werkzeug für Forschung und autorisierte Penetrationstests, das die Netzwerk-Bewertungspipeline abdeckt — Host- und Service-Erkennung, Enumeration, Prüfung von Zugangsdaten, Identifizierung von Schwachstellen und autorisierte Ausnutzung. Seine zehn Modulkategorien umfassen Recon, Enumeration, OSINT, MITM (ARP/DHCP/DNS/IPv6- Vergiftung und Inline-HTTP/HTTPS-Abfangen), drahtlos, Switch-Ebene, Web, Auth, Spionage und Post-Exploitation — alles gesteuert über eine interaktive REPL, einen geführten Assistenten oder einzeilige Befehlssequenzen.
MITM ist eine Fähigkeit innerhalb dieses breiteren Bereichs: TOHA3EE ist nicht auf Man-in-the-Middle-Szenarien beschränkt.
WARNUNG: toha3ee leitet aktiv Netzwerkverkehr um, vergiftet, entschlüsselt und fängt ihn ab. Verwenden Sie es nur in Netzwerken, die Ihnen gehören oder für die Sie ausdrücklich autorisiert sind, Tests durchzuführen. Die Ausführung dieser Module gegen Dritte ist in den meisten Rechtsordnungen illegal. Lesen Sie zuerst
docs/security.md.
Einzeiler-Installationsprogramme laden die vorgefertigte Binärdatei für Ihre Plattform aus der letzten Version herunter, verifizieren ihre SHA-256-Prüfsumme und fügen sie zu Ihrem PATH hinzu. Wenn noch keine vorgefertigte Binärdatei existiert, bauen sie stattdessen aus dem Quellcode.
Linux / macOS:
curl -fsSL https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.sh | sh
Windows (PowerShell):
irm https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.ps1 | iex
Oder aus einem Checkout:
make install # installiert ~/.local/bin/toha3ee und fügt es dem PATH hinzu
Installationsoptionen (Unix): --prefix <verzeichnis> (Standard: /usr/local/bin als root,
sonst ~/.local/bin), --no-path, um das Bearbeiten Ihrer Shell-rc zu überspringen, --from-source,
um statt eines Downloads zu bauen, und TOHA3EE_VERSION=<tag>, um eine Version festzulegen.
Führen Sie es mit sudo sh ... aus, um systemweit zu installieren. Das Windows-Installationsprogramm legt die
Binärdatei in %LOCALAPPDATA%\Programs\toha3ee\bin ab und aktualisiert Ihren Benutzer-PATH;
Windows-on-ARM64 führt die x64-Build aus.
Unter Linux registriert das Installationsprogramm die App auch bei der Desktop-Umgebung: Es
installiert das Logo in das hicolor-Icon-Theme und legt einen .desktop-Eintrag
neben dem Installationspräfix ab (z. B. /usr/local/share oder ~/.local/share), sodass
toha3ee in der GNOME-Suche mit seinem Icon erscheint. Unter Windows kopiert es die
.ico-Datei und erstellt eine Verknüpfung im Startmenü. Das Release-Tarball/Zip enthält das
Icon, sodass das Installationsprogramm es aus demselben verifizierten Artefakt registrieren kann.
Deinstallation: Löschen Sie die Binärdatei und die PATH-Zeile, die das Installationsprogramm zu Ihrer
Shell-rc hinzugefügt hat (bzw. %LOCALAPPDATA%\Programs\toha3ee unter Windows).
Erfordert Go 1.26+ und libpcap.
# Debian/Ubuntu
sudo apt install libpcap-dev
# danach
go build ./cmd/toha3ee
Linux-Builds benötigen libpcap-Header (der From-Source-Fallback des Installationsprogramms prüft sie und gibt den richtigen apt/dnf-Befehl aus, wenn sie fehlen). macOS bringt libpcap mit den Xcode Command Line Tools mit.
# Interaktive Konsole (nackter Befehl startet direkt hinein)
sudo ./toha3ee --iface eth0
# Interaktive Konsole (expliziter Unterbefehl)
sudo ./toha3ee interactive --iface eth0
# Geführter Assistent
sudo ./toha3ee wizard --iface eth0
# Einmalig: Subnetz scannen, dann das Gefundene anzeigen
sudo ./toha3ee --eval "net.scan; net.show" --iface eth0
# Nicht-interaktives Caplet-Skript
sudo ./toha3ee run --iface eth0 caplets/basic.cap
# Dry-Run eines .toha3ee-Skripts (validiert es, druckt den Plan, sendet keine Pakete)
./toha3ee --no-sudo build scripts/full-pipeline.toha3ee
# Ein .toha3ee-Skript nicht-interaktiv ausführen
sudo ./toha3ee script --iface eth0 scripts/full-pipeline.toha3ee
Die meisten Angriffsmodule erfordern Root-Rechte (Raw-Sockets, Paketerfassung und IP-
Weiterleitung). Führen Sie sie nach Möglichkeit als Root oder mit CAP_NET_ADMIN/CAP_NET_RAW aus.
Fügen Sie --no-color hinzu, um farbige Ausgaben zu deaktivieren, -v für ausführliche Protokollierung.
Das Tool läuft standardmäßig mit Administratorrechten: Unter Linux/macOS führt es sich selbst
unter sudo erneut aus und fragt bei jedem Aufruf nach dem Admin- (Root-) Passwort. Übergeben Sie --no-sudo (oder setzen Sie TOHA3EE_NO_SUDO=1), um
ohne Privilegien zu laufen, z. B. für ein schnelles toha3ee --no-sudo version.
Alles ist ein Modul. Module registrieren sich selbst in ihrem Paket-init() und werden
automatisch von der Registry angezeigt; das Hinzufügen eines Angriffs bedeutet das Hinzufügen eines
Pakets unter internal/attacks/, das den attacks.Module-Vertrag
implementiert (siehe internal/attacks/attacks.go):
Meta() — ID, Kategorie, Risiko, Ziele, Beschreibung, EinschränkungenPreflight(ctx) — Vorbedingungen vor dem Lauf prüfenRun(ctx, opts) — die Angriffsschleife (muss ctx.Done respektieren)Verify(ctx) — berichten, was passiert istCleanup(ctx) — alles rückgängig machen, das Netzwerk wiederherstellenEin zentraler safety-Lebenszyklus (internal/safety) verfolgt registrierte Cleanups
und Heartbeats, sodass jeder Angriff auch bei Panic oder SIGINT abgebaut wird, und ein
gemeinsamer store verwaltet die Host-Inventarliste, erfasste Zugangsdaten, Sitzungen und
das Ereignisprotokoll, das den Berichtsgenerator speist.
Führen Sie toha3ee modules für den vollständigen, aktuellen Katalog aus. Highlights:
Nacktes toha3ee (oder toha3ee interactive) öffnet eine Konsole im bettercap/metasploit-Stil:
das @@@-Banner, eine rot akzentuierte toha3eeλ > -Eingabeaufforderung mit
Tab-Vervollständigung und ein persistentes einzeiliges Status-HUD über der Eingabeaufforderung, das
die Schnittstelle, laufende Module und Live-Anzahl von Hosts/Ports/Zugangsdaten/Ereignissen
anzeigt. Die Ausgabe wird in einer grün/gelb/weiß-Palette gruppiert und ausgerichtet — Rot wird
bewusst eingesetzt, für den Eingabeaufforderungs-Akzent, harte Fehler ([x]), die HUD-Kantenmarkierung
und Module mit kritischem Risiko (hohes Risiko ist gelb). Die Ausgabe jedes Befehls ist
in Abschnitte unterteilt (─── modules ───), Tabellen sind spaltenausgerichtet (Farben werden
bei der Ausrichtungsberechnung ignoriert), und Modulmeldungen werden zentral eingefärbt, sodass
jedes Modul konsistente Statusglyphen ohne Modul-spezifische Arbeit erhält. Die Ausgabe
fällt bei Pipe automatisch auf Klartext zurück, und die Eingabeaufforderung bleibt
sichtbar und live, während ein Modul läuft, wie bei bettercap.
$ sudo ./toha3ee --iface eth0
@@@@@@@@
@@@@@@@@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@ @ @@@@@@@
@@@@@@@@ @@@@@@@@@ @@@@@@@
@@@@@@@@ @@@ @ @@@@@@@
@@@@@@@ @@ @@@@@@@@@@ @@@@@@@
@@@@@@ @@ @ @@@@@@@@@@@@@@@@@@ @@@@@@
@@@ @@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @ @@@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@ @@@ @@@
@@@ @@@ @@@@@@@@@@@@@ @@@@ @@@
@@@ @@ @@@@ @@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@ @@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@ @@@
@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@@@@@ @@@@@@@@
@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@ @@@@@@
@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@
@@@
lokales & Netzwerk-Sicherheitsbewertungs-Framework
[>] iface wlan0 (10.135.199.31, 8c:c8:4b:30:bf:91)
[>] v 0.1.0
tippe 'help' für Befehle, 'modules' für den Katalog, 'quit' zum Beenden
[*] Sitzung bereit. Tippe 'help' für Befehle.
toha3eeλ> help
Statusglyphen folgen der bettercap-Konvention:
Der rote Block ▮ am linken Rand des HUD markiert den Statusstreifen; das HUD
wird nach jedem Befehl neu gedruckt, sodass die Zähler ohne zusätzliches Tippen aktuell bleiben.
Beispielsitzung:
toha3eeλ> modules recon # Modulkatalog nach Kategorie gefiltert
toha3eeλ> on net.scan # ein Modul ausführen (Preflight-Prüfungen werden zuerst angezeigt)
toha3eeλ> net.show # entdeckte Hosts
toha3eeλ> net.profile # Profil + bewertete Angriffsvektoren
toha3eeλ> help # gruppierte Befehlsreferenz
toha3eeλ> quit
set <modul.schluessel> <wert> speichert modulspezifische Einstellungen (Modul-IDs sind gepunktet,
die Aufteilung erfolgt also am letzten Punkt: set arp.spoof.targets 10.0.0.5);
config gibt alles bisher Gesetzte aus. Sitzungen behalten erfasste Daten über
Modulläufe hinweg; report.generate rendert einen Markdown-Bewertungsbericht aus dem
In-Memory-Speicher.
.toha3ee-Dateien steuern die gesamte Recon → Exploit → Report-Pipeline mit einer
Python-ähnlichen Sprache, die sich wie Englisch liest. Führen Sie eine mit toha3ee script <datei> aus, aus der REPL mit script <datei>, oder führen Sie eine beliebige .toha3ee-Datei mit
run <datei> aus. toha3ee build <datei> (oder REPL build <datei>) validiert die
Datei und druckt einen Dry-Run-Plan, ohne das Netzwerk zu berühren. scripts/full- pipeline.toha3ee ist ein funktionierendes End-to-End-Beispiel.
# Kommentar (oder //)
set net.scan.targets -> "192.168.8.0/24" # ein Modul konfigurieren
on net.scan # ein Modul starten (run/start)
wait for net.scan # blockieren, bis es beendet ist
_hosts -> [$(net.hosts)] # eine Liste erfassen (oder =, >>)
echo -> "found $(_hosts.size) hosts" # drucken (say/print)
if $(hosts.count) > 1 # Bedingungen
on arp.spoof targets "192.168.8.0/24"
sleep -> 30
off arp.spoof
end
for each _h in $(_hosts) # Schleifen
repeat 3 times
exec -> net.show # einen beliebigen REPL-Befehl einmal ausführen
break
end
end
get net.scan.timeout -> _t # einen Konfigurationswert lesen
report -> "assessment.md" # den Sitzungsbericht schreiben
Sprachhinweise:
set, get, on/start/run, off/stop, wait for <modul> [max <sekunden>], sleep <sekunden>, echo/say/print, show <modul>, report <datei>, exec <befehl>, if/else/end, , , , , und ein
nacktes beendet das Skript.Die Konfiguration standardmäßig auf toha3ee.json (--config zum Überschreiben). Modulspezifische
Einstellungen werden von jedem Modul aus seinem eigenen Namensraum gelesen, z. B.
report.generate.out, switch.portsteal.victim_mac, http.harvest.pcap.
Stealth ist immer aktiv, in jeder Phase, bis hinunter zum einzelnen Paket. Jedes
paketsendende Modul wird standardmäßig mit einem randomisierten, verjitterten Profil ausgeliefert; es gibt
nichts zu aktivieren, und das Deaktivieren (set <modul>.stealth false) wird
durch die Designabsicht ausdrücklich nicht unterstützt.
stealth_shuffle), sodass Sweeps das
Subnetz nicht in der vorhersehbaren aufsteigenden Reihenfolge ablaufen, nach der Scanner
ge-fingerprintet werden.stealth_jitter, stealth_burst, stealth_pause), sodass der Datenverkehr weder
ein gleichmäßiger Strom noch eine einzelne synchronisierte Flut ist.stealth_pad) anstelle der Null-gepolsterten Frames, die die meisten Scanner aussenden, und
der aktive net.scan-Sweep wird von einer einzigen Capture-Schleife gesammelt, während der
passive Listener weiterhin Datenverkehr aufnimmt.stealth_ports), IP-
TTL und Identifikation (stealth_ttl, stealth_id), TCP-Sequenznummer
und -Fenster und löscht gelegentlich das DF-Bit, sodass der Probe-Strom nicht
auf eine einzelne Tool-Signatur aufgelöst werden kann.Einstellwerte werden pro Modul gelesen, z. B. set net.scan.stealth_jitter 5ms,
set service.synscan.stealth_burst 128. Die REPL-Eingabeaufforderung bleibt sichtbar und
live, während ein Modul läuft, wie bei bettercap.
go test ./...
Die Suite deckt die Frame-Crafter (DHCP, NDP, 802.11, STP/CDP/LLDP), den Store und Report-Renderer sowie einen Registry-Vertragstest ab, der den vollständigen Modulkatalog festlegt.
CI (.github/workflows/ci.yml) führt gofmt, go vet, go build und
go test -race unter Linux plus Tests unter Windows und macOS für jeden Push/PR aus;
CodeQL führt statische Sicherheitsanalyse aus.
Abhängigkeitsupdates werden von Dependabot übernommen.
Siehe CONTRIBUTING.md, docs/contributing.md und CODE_OF_CONDUCT.md. Melden Sie Sicherheitsprobleme über SECURITY.md — nicht als öffentliche Issues.
| Pfad | Zweck |
|---|
cmd/toha3ee | CLI: Konsole, Assistent, --eval, Caplet-Runner, script/build |
internal/ui | Konsolen-Rendering: Banner, Palette, Abschnitte, Tabellen, Statusglyphen, HUD |
internal/script | die .toha3ee-Skriptsprache: Lexer, Parser, Engine |
internal/attacks/ | alle Angriffsmodule nach Kategorie |
internal/netx/ | Protokoll-Primitive (ARP, DHCP, DNS, NDP, 802.11, SMB/NTLM, Proxy, …) |
internal/hijack | HTTP/HTTPS-MITM-Proxy und Erfassung von Zugangsdaten/Sitzungen |
internal/phish | Captive-Portal-Phishing und Klone von Anmeldeseiten |
internal/store | gemeinsamer Datenspeicher und Ereignis-Bus |
internal/safety | Cleanup/Heartbeat-Lebenszyklus |
internal/config | Laden von JSON-Konfigurationen |
internal/oui | MAC-Herstellerdatenbank |
pkg/certutil | Framework-CA und TLS-Zertifikate pro Host |
| Kategorie | Module |
|---|
| mitm | arp.spoof, dns.spoof, dns.rebind, dhcp.rogue, dhcp.starve, dhcp6.spoof, icmp.redirect, ipv6.ra, ipv6.ndp, llmnr.poison, wpad.poison |
| espionage | http.harvest, http.proxy, https.proxy, ssl.strip, phish.inject |
| auth | default.creds, ntlm.relay, smb.signing, smb.kerberoast, auth.spray, auth.brute, auth.userenum, auth.asrep |
| recon | net.scan, net.ping, net.traceroute, net.osdetect, service.synscan, service.tcpconnect, service.udpscan, service.finxmas, service.ack, service.protoscan, service.idle, service.fingerprint, service.tls, web.dir, cve.suggest |
| osint | osint.dns, osint.whois, osint.ct, osint.asn, osint.shodan, osint.bucket, osint.wayback, osint.github, osint.hibp, osint.metadata, osint.dork, osint.harvest |
| enum | smtp.enum, snmp.enum, ldap.enum, nfs.enum, smb.enum, net.ip6sweep |
| web | web.misconfig |
| switch | switch.flood, switch.portsteal, switch.vlanhop, switch.cdp, switch.stp |
| wireless | wlan.scan, wlan.deauth, wlan.handshake, wlan.eviltwin, wlan.pmkid, wlan.beaconflood, wlan.karma |
| post | report.generate, session.replay, pcap.export |
| Glyphe | Bedeutung |
|---|
[*] | Info / läuft (weiß) |
[+] | Erfolg (grün) |
[!] | Warnung (gelb) |
[>] | System (fett weiß) |
[-] | neutral (gedimmt) |
[x] | harter Fehler (rot) |
[OK] | verifiziert / bestanden (grün) |
for each _x in <liste>repeat N timeswhile <bedingung>breakcontinuestop_name -> wert, _name = wert oder _name >> wert;
[...] erstellt eine Liste aus einer Eigenschaft, $(_name.size) und $(_list.size)
sind die Längen.$(...) löst Live-Sitzungszustand auf: $(hosts.count),
$(net.hosts), $(creds.count), $(sessions.count), $(running.list),
$(iface.ip), $(iface.cidr), $(iface.mac), $(iface.gateway),
$(config.<modul.schluessel>); Pfade mit Unterstrich-Präfix lesen Skriptvariablen.== != < > <= >=, &&, ||, !, Zahlen werden numerisch
verglichen. while-Schleifen sind begrenzt, sodass eine falsche Bedingung das Skript niemals
aufhängen kann.