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
Tools/GitHubGitHub/synwall/synwall
Embedded-System-SicherheitIoT-SicherheitNetzwerksicherheitAuthentifizierung
GitHubsynwall/synwall

SYNwall

Linux-Kernelmodul, das eine konfigurationsfreie, OTP-basierte Firewall für IoT-Geräte implementiert. Authentifiziert Netzwerkverkehr transparent mit einem vorher geteilten Schlüssel und verwirft unbefugte Pakete auf Protokollebene.

Repository anzeigen
26224vor 3 MonatenVon 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

SYNwall

Zero-Config (IoT) Firewall.

SYNwall ist ein Projekt, das (vorerst) als Linux-Kernel-Modul entwickelt wurde, um eine transparente und konfigurations- und wartungsfreie Firewall zu implementieren.

Vielleicht möchten Sie sich den Anwendungsfall für ein Beispiel zur Nutzung ansehen.

Grundlagen

Normalerweise sind IoT-Geräte außerhalb einer zentralen Kontrolle, mit leistungsschwacher Hardware, schwierigen Umgebungsbedingungen und... wir haben keine Zeit, um der Sicherheit zu widmen. Vielleicht können wir unsere IoT-Infrastruktur nicht patchen und es wird sehr schwierig sein, eine „firewall-ähnliche“ Zugriffskontrolle aufrechtzuerhalten.

Die Idee ist, einen dezentralen Einweg-Einmalpasswort-Code zu erstellen, um den NETZWERKzugriff auf das Gerät zu ermöglichen. Der gesamte Datenverkehr, der das OTP nicht enthält, wird verworfen. Es sind keine Vorkenntnisse darüber erforderlich, wer Zugriff benötigt, wir benötigen nur einen vorab geteilten Schlüssel (Pre-Shared Key) zum Bereitstellen. Der Schutz wird für die Anwendungsebene völlig transparent sein, da er auf der Netzwerkprotokollebene (TCP und UDP) implementiert ist.

Installation

Dieses Repository enthält das Linux-Kernel-Modul. Es wurde mit den Versionen 3.x, 4.x und 5.x auf den Architekturen X86_64, ARM, MIPS und AARCH64 getestet.

Es erfordert die aktuellen Kernel-Header für die Kompilierung, die normalerweise mit dem entsprechenden Paketmanager installiert werden können. Zum Beispiel auf Debian-ähnlichen Distributionen:

sudo apt-get install linux-headers-$(uname -r)

Dann sollte es ausreichen, die Kompilierung durchzuführen:

make

Konfiguration

Das Modul kann auf die übliche Weise mit insmod oder modprobe geladen werden.

Es hat mehrere Parameter, mit denen Sie das Verhalten anpassen können:

  • Vorab geteilter Schlüssel (Pre-Shared Key) für das Einmalpasswort

    psk:

    Der PSK muss eine Byte-Sequenz von 32 bis 1024 sein. Er wird Teil des OTP sein, daher beeinflusst seine Länge die Größe des in das Paket eingefügten OTP. Ohne diesen Parameter wird das Modul nicht geladen.

  • UDP aktivieren

    enable_udp: 0

    Aktivieren/Deaktivieren des OTP für das UDP-Protokoll. Standardmäßig ist es deaktiviert. Setzen Sie es auf 1, um es zu aktivieren. Das OTP über UDP erfordert, dass das Modul auf beiden kommunizierenden Geräten aktiv ist, da das OTP (vom Modul) entfernt werden muss, bevor das Paket an die Anwendungsebene weitergeleitet wird. Wenn dies nicht der Fall ist, können Sie seltsame Verhaltensweisen erleben. Die UDP-Verbindungsverfolgung basiert auf dem conntrack-Modul, daher müssen Sie es möglicherweise einfügen, um diese Funktionalität zu nutzen (dies hängt von der Installation ab). Ein Fehler wird im Kernellog angezeigt, wenn dies der Fall ist.

    HINWEIS: Standardmäßig sind die Ports 53 (DNS) und 123 (NTP) für ausgehende Verbindungen auf die schwarze Liste gesetzt, sodass das OTP nicht hinzugefügt wird. Wenn Sie dies ändern müssen, suchen Sie nach dem Array udp_blacklist[]. Ich werde in Zukunft einen Parameter dafür hinzufügen.

  • Zeitgenauigkeitsparameter

    precision: 10

    Das OTP wird auch mit der aktuellen Gerätezeit berechnet. Da das Datum auf den beteiligten Geräten unterschiedlich sein kann, können Sie die Zeit auf einen bestimmten Wert 'runden', um Zeitabweichungen zu ermöglichen. Standard ist 10.

    Die Genauigkeit wird in Zweierpotenzen angegeben (Sie mögen sich fragen, warum... es war eine Entscheidung zur Leistungssteigerung und zur geringen Auswirkung auf Geräte mit niedriger Leistung):

    root@kitploit:~
         ...
         9   ->   1 Sekunde
         10  ->   8 Sekunden
         ...
    

    Eine Genauigkeit unter 8 wird wahrscheinlich nicht funktionieren.

    Wenn Sie den Genauigkeitswert auf 11 oder mehr erhöhen, sollten Sie auch den Wert MAX_TRASH in SYNgate_netfilter.c erhöhen.

Anwendungsbeispiel

WARNUNG: Dies wird den gesamten Datenverkehr zu Ihrem Gerät verwerfen, also stellen Sie sicher, dass Sie wissen, wie Sie mit einem anderen SYNwall-Gerät darauf zugreifen oder es remote deaktivieren können (Port-Knocking).

sudo insmod SYNwall.ko psk=123456789012345678901234567890123 precision=10 portk=12,13,14,15,16 load_delay=5000 enable_udp=1

Projektstruktur

SYNwall Repository:

  • SYNwall_netfilter (.c und .h): Netfilter-Hauptpaket mit Hooks und grundlegenden Prozessfunktionen
    • SYNauth (.c und .h): Authentifizierungsfunktionen, zur Verwaltung von Hashes und Krypto-Zeug
    • SYNquark (.c und .h): Quark-Hashing-Implementierung, direkt basierend auf der Arbeit von Jean-Philippe Aumasson (@veorq) unter https://github.com/veorq/Quark
  • SYNgate_netfilter (.c und .h): Netfilter-Paket für das SOCKS-Server-Modul. Es implementiert nur die Markierung ausgehender Pakete und ist in der Lage, mehrere PSKs und Netzwerke zu verwalten

SYNwall_distrib Repository:

  • Ansible-Skripte zur automatischen Verteilung. Siehe README.md dort

SYNwall_ATAES132 Repository:

  • PoC für die sichere EEPROM-Nutzung (PSK-Speicherung). Siehe README.md dort

SYNwall_docs Repository:

  • Einige Dokumente, Videos, DEMOs

Leistung

Alles wurde für den Einsatz auf Geräten mit geringer Leistung und sehr geringen Ressourcen implementiert. Die Wahl des Quark-Hashings für den Krypto-Hash wurde aus diesem Grund getroffen. Der durch die OTP-Berechnung hinzugefügte Overhead ist im normalen Gebrauch nahezu unsichtbar:

low

während Sie eine deutliche CPU-Ersparnis sehen können, wenn viel Datenverkehr an das Gerät gesendet wird:

high

SYNgate

Als Begleitwerkzeug enthält das Repository auch das SYNgate-Modul. SYNgate wurde mit der gleichen Logik wie das Basismodul SYNwall entwickelt, arbeitet jedoch für mehrere Netzwerke und PSKs. Sie können mehrere Netzwerke (mit den zugehörigen PSKs und anderen Optionen) definieren. Die Idee ist, es auf einem SOCKS-Server zu installieren, um es für verschiedene Protokolle und Ziele nutzen zu können. Das SYNwall_VM Repository enthält Skripte zum Aufbau eines solchen Systems mit einem SOCKS-Server und dem vorinstallierten Modul.

SYNgate arbeitet nur mit ausgehendem Datenverkehr.

Um das SYNgate-Modul zu kompilieren, verwenden Sie einfach:

make SYNGATE=1

SYNgate-Konfiguration

Das Modul kann auf die übliche Weise mit insmod oder modprobe geladen werden.

Es hat mehrere Parameter, mit denen Sie das Verhalten anpassen können. Es ist der SYNwall-Konfiguration sehr ähnlich, aber mit einer anderen Logik: Parameter sind (kommagetrennte) Listen von Werten und alle müssen angegeben werden. Der erste Wert einer Liste entspricht dem ersten der anderen. Nicht alle Parameter sind verfügbar, nur diejenigen, die sinnvoll sind (denken Sie daran, dass SYNgate eingehenden Datenverkehr nicht beeinflusst):

Es hat nur einen Parameter, der sich von der SYNwall-Konfiguration unterscheidet, die dstnet_list

  • Zielnetzwerk

    dstnet_list: ip1/mask1[,ip2/mask2]...

    Liste von Netzwerken im IP/MASK-Format. Beispiel: 192.168.1.0/24. Wenn eine IP angegeben wird (anstelle einer Netzwerkadresse), wird das Netzwerk berechnet. Alle IPs, die zu diesem Netzwerk gehören, erhalten die in den anderen Listen angegebenen Verbindungsparameter (PSK, Genauigkeit usw.) am gleichen Array-Index.

  • Vorab geteilter Schlüssel (Pre-Shared Key) für das Einmalpasswort

    psk_list: pks1[,pks2]...

    Der PSK muss eine Byte-Sequenz von 32 bis 1024 sein. Er wird Teil des OTP sein, daher beeinflusst seine Länge die Größe des in das Paket eingefügten OTP. Ohne diesen Parameter wird das Modul nicht geladen.

  • UDP aktivieren

    enable_udp_list: {0|1}[,{0|1}]...

    Aktivieren/Deaktivieren des OTP für das UDP-Protokoll. Setzen Sie 0, um es zu deaktivieren oder 1, um es zu aktivieren. Das OTP über UDP erfordert, dass das Modul auf beiden kommunizierenden Geräten aktiv ist, da das OTP (vom Modul) entfernt werden muss, bevor das Paket an die Anwendungsebene weitergeleitet wird. Wenn dies nicht der Fall ist, können Sie seltsame Verhaltensweisen erleben. Die UDP-Verbindungsverfolgung basiert auf dem conntrack-Modul, daher müssen Sie es möglicherweise einfügen, um diese Funktionalität zu nutzen (dies hängt von der Installation ab). Ein Fehler wird im Kernellog angezeigt, wenn dies der Fall ist.

    HINWEIS: Standardmäßig sind die Ports 53 (DNS) und 123 (NTP) für ausgehende Verbindungen auf die schwarze Liste gesetzt, sodass das OTP nicht hinzugefügt wird. Wenn Sie dies ändern müssen, suchen Sie nach dem Array udp_blacklist[]. Ich werde in Zukunft einen Parameter dafür hinzufügen.

  • Zeitgenauigkeitsparameter

    precision_list: {9|10|...}[,{9|10|...}]...

    Das OTP wird auch mit der aktuellen Gerätezeit berechnet. Da das Datum auf den beteiligten Geräten unterschiedlich sein kann, können Sie die Zeit auf einen bestimmten Wert 'runden', um Zeitabweichungen zu ermöglichen.

    Die Genauigkeit wird in Zweierpotenzen angegeben (Sie mögen sich fragen, warum... es war eine Entscheidung zur Leistungssteigerung und zur geringen Auswirkung auf Geräte mit niedriger Leistung):

    root@kitploit:~
         ...
         9   ->   1 Sekunde
         10  ->   8 Sekunden
         ...
    
  • IP-Spoofing-Schutz aktivieren

    enable_antispoof_list: {0|1}[,{0|1}]...

Cross-Compilierung

Sie können ganz einfach cross-kompilieren, indem Sie die folgenden Variablen setzen, bevor Sie make ausführen:

root@kitploit:~
ARCH (Zielarchitektur)
CROSS_COMPILE (Toolchain-Pfad)
KERNEL (Kernel-Quellpfad)

Anwendungsbeispiel

Beispiel mit zwei Netzwerken direkt von der Kommandozeile:

sudo insmod SYNgate.ko dstnet_list=10.1.1.0/24,198.168.10.0/24 psk_list=d41d8cd98f00b204e9800998ecf8427e,efebceec0de382839cd38bffcdc6bf0c enable_udp_list=0,0 precision_list=10,9 enable_antispoof_list=0,1

oder mit einer Konfigurationsdatei:

root@kitploit:~
sudo cat /etc/modprobe.d/SYNgate.conf
# SYNgate Config-Datei
# Halte sie sicher!!
options SYNgate dstnet_list=10.1.1.0/24,198.168.10.0/24
options SYNgate psk_list=d41d8cd98f00b204e9800998ecf8427e,efebceec0de382839cd38bffcdc6bf0c
options SYNgate enable_udp_list=0,0 
options SYNgate precision_list=10,9 
options SYNgate enable_antispoof_list=0,1

Lizenz

GPL-2.0

Autoreninformation

Sorint.Lab

Tool herunterladen
  • Deaktivieren des OTP für ausgehende Pakete

    disable_out: 0

    Sie können das OTP in ausgehenden Paketen deaktivieren, indem Sie dies auf 1 setzen. In diesem Fall wird das Modul die Pakete ohne OTP einfach verwerfen, aber es wird nicht am Kommunikationsnetz mit anderen SYNwall-Geräten teilnehmen. Dies kann nützlich sein, falls es Probleme mit den ausgehenden Paketen auf Uplink-Geräten gibt.

  • DoS-Schutz aktivieren

    enable_antidos: 0

    Diese Option kann aktiviert werden, indem Sie sie auf 1 setzen. Wenn gesetzt, begrenzt dies die OTP-Berechnung auf dem Gerät auf eine bestimmte Anzahl (Variable allow_otp_ms, standardmäßig auf 1000 gesetzt). In diesem Fall ist nur eine OTP-Berechnung pro Sekunde erlaubt, was die CPU-Zeit des Geräts im Falle eines DoS-Angriffs schont.

  • IP-Spoofing-Schutz aktivieren

    enable_antispoof: 0

    Standardmäßig ist die IP nicht Teil des OTP. Dies könnte zu einem Replay-Angriff führen. Sie können den Antispoof-Schutz aktivieren, um vollständig sicher zu sein. Dies kann die Kommunikation unterbrechen, wenn sich zwischen den Geräten NATs befinden.

  • Verzögerung beim Starten der Modulfunktionen (ms)

    load_delay: 10000

    Sie können entscheiden, eine Weile zu warten, bevor Sie den Schutz nach dem Laden des Moduls aktivieren. Dies könnte nützlich sein, um bei Problemen und nach einem Neustart Zugriff auf das Gerät zu erhalten. Der Standardwert beträgt 10 Sekunden.

  • Liste der Ports für Port-Knocking-Failsafe

    portk: 0,0,0,0,0

    Wenn die Geräteuhr verrückt spielt, kann es schwierig sein, Zugriff zu erhalten. Ein Weg könnte die zuvor besprochene 'Verzögerung' sein, aber Sie können auch eine 'Port-Knocking'-Sequenz festlegen, die das Modul für eine Weile deaktivieren kann. Die Liste muss, falls definiert, aus 5 TCP-Ports bestehen. Wenn das Modul innerhalb einer Sekunde ein SYN-Paket auf diesen Ports erkennt, deaktiviert es sich selbst für die gleiche Zeit, die als 'load_delay' festgelegt ist. HINWEIS: Wenn Sie die Sequenz aktiv nutzen, denken Sie daran, sie zu ändern, da sie leicht ausgespäht werden kann!

  • Aktivieren/Deaktivieren des Antispoof-Schutzes. Setzen Sie 0, um ihn zu deaktivieren oder 1, um ihn zu aktivieren. Standardmäßig ist die IP nicht Teil des OTP in SYNwall. Dies könnte zu einem Replay-Angriff führen. Sie können den Antispoof-Schutz aktivieren, um vollständig sicher zu sein. Dies kann die Kommunikation unterbrechen, wenn sich zwischen den Geräten NATs befinden.