
striptls - Auditing-Proxy
Proof-of-Concept-Implementierung von STARTTLS-Stripping-Angriffen
Eine generische TCP-Proxy-Implementierung und ein Audit-Tool zur Durchführung protokollunabhängiger ssl/tls-Interception und STARTTLS-Stripping-Angriffe auf SMTP, POP3, IMAP, FTP, NNTP, XMPP, ACAP und IRC.
Python2!
🏆 Trophäen
//Haben Sie mit Hilfe dieses Projekts eine Sicherheitslücke entdeckt? Schreiben Sie mir eine Nachricht!
Erfordert:
- Python >= 2.7.9 (
SSLContext) < Python 3
- (optional für TLS-Interception) Zertifikat und PrivateKey im PEM-Format (einzelne Datei)
--key=server.pem
Vektoren
- GENERIC
- Intercept - protokollunabhängige ssl/tls-Interception. Späht nach TLS-Handshake, wandelt Socket in TLS um (TLS-zu-TLS-Proxy)
- InboundIntercept - protokollunabhängige ssl/tls-Interception nur für den eingehenden Kanal (TLS-zu-Klartext-Proxy)
- SMTP
- SMTP.StripFromCapabilities - Patchen der Server-Fähigkeitsantwort
- SMTP.StripWithInvalidResponseCode - Client-STARTTLS-Stripping, ungültiger Antwortcode
- SMTP.UntrustedIntercept - STARTTLS-Interception (Client und Server kommunizieren per SSL) (erfordert server.pem im aktuellen Verzeichnis)
- SMTP.StripWithTemporaryError
- SMTP.StripWithError
- SMTP.ProtocolDowngradeStripExtendedMode
- SMTP.InjectCommand
- SMTP.InboundStarttlsProxy - (STARTTLS-zu-Klartext-Proxy)
- POP3
- POP3.StripFromCapabilities
- POP3.StripWithError
- POP3.UntrustedIntercept
- IMAP
- IMAP.StripFromCapabilities
- IMAP.StripWithError
- IMAP.UntrustedIntercept
- IMAP.ProtocolDowngradeToV2
- FTP
- FTP.StripFromCapabilities
- FTP.StripWithError
- FTP.UntrustedIntercept
- NNTP
- NNTP.StripFromCapabilities
- NNTP.StripWithError
- NNTP.UntrustedIntercept
- XMPP
- XMPP.StripFromCapabilities
- XMPP.StripInboundTLS
- XMPP.UntrustedIntercept
- ACAP (ungetestet)
- ACAP.StripFromCapabilities
- ACAP.StripWithError
- ACAP.UntrustedIntercept
- IRC
- IRC.StripFromCapabilities
- IRC.StripWithError
- IRC.UntrustedIntercept
- IRC.StripWithNotRegistered
- IRC.StripCAPWithNotregistered
- IRC.StripWithSilentDrop
Ergebnisse:```python
- [*] client: 127.0.0.1
-
[Vulnerable!] <class striptls.StripWithInvalidResponseCode at 0xffd3138c>
-
[Vulnerable!] <class striptls.StripWithTemporaryError at 0xffd4611c>
-
[ ] <class striptls.StripFromCapabilities at 0xffd316bc>
-
[Vulnerable!] <class striptls.StripWithError at 0xffd4614c>
- [*] client: 192.168.139.1
-
[Vulnerable!] <class striptls.StripInboundTLS at 0x7f08319a6808>
-
[Vulnerable!] <class striptls.StripFromCapabilities at 0x7f08319a67a0>
-
[Vulnerable!] <class striptls.UntrustedIntercept at 0x7f08319a6870>
## Verwendung```
#> python2 -m pip install striptls
#> python2 -m striptls --help
Hauptmerkmale
- AIS und NRZI-Codierung/-Decodierung mit bis zu 1 Gbit/s Durchsatz.
- Vollduplex-Modus für gleichzeitigen Datenaustausch zwischen Client und Server.
- Proxy-Server für NMEA-Multiplexing.
- HTTP/HTTPS-Modus, in dem der Client eine Verbindung zu einem HTTP- oder HTTPS-Endpunkt herstellt.
- UDP-Multicast Unterstützung, um einen Stream gleichzeitig an mehrere Clients zu senden.
- Optionale Vorwärtsfehlerkorrektur für Robustheit.
- BLE (Bluetooth Low Energy) Unterstützung für das Aufzeichnen von Sensordaten von Polar H10 (und H9), Herzfrequenzmessern und Stryd-Fußpods.
- Unterstützung für Windows, macOS (nativ) und Linux (Debian Bullseye und höher, Fedora 39 und höher, Ubuntu Jammy Jellyfish 22.04 und höher, Raspberry Pi OS Bookworm und höher, Arch und Derivate).
- Ein WebSocket-Server steht zur Verfügung, mit dem Sie NMEA-Daten simulieren und an NMEArouter weiterleiten können. Der NMEA-Simulator enthält sowohl eine AIS-Simulatorkomponente als auch eine GNSS-Simulatorkomponente.
NMEA 0183-Protokoll – seriell über TCP/IP
NMEArouter unterstützt das nmea0183-Protokoll, bei dem NMEA 0183-Sätze über eine TCP/IP-Verbindung gestreamt werden. Dies ist der Legacy-Modus, der breit mit vielen Anwendungen kompatibel ist. AIS-NMEA-Sätze werden mit den GNSS-NMEA-Sätzen in einem einzigen Stream vermischt.
Gemultiplextes NMEA 0183-Protokoll – seriell über TCP/IP
NMEArouter unterstützt das mnmea0183-Protokoll, bei dem NMEA 0183-Sätze aus mehreren Eingangsströmen mittels Tags in eine einzige TCP/IP-Verbindung gemultiplext werden. Weitere Informationen finden Sie auf der Seite Multiplexed NMEA 0183 Protocol.
AIS NMEA 0183-Protokoll
NMEArouter unterstützt das anmea0183-Protokoll, bei dem nur AIS-bezogene NMEA 0183-Sätze über eine TCP/IP-Verbindung gestreamt werden.
NMEA 2000-Protokoll
NMEArouter unterstützt jetzt das nmea2000-Protokoll, das es ermöglicht, NMEA 2000-CAN-Nachrichten von einer SocketCAN-Schnittstelle über das Netzwerk (TCP oder UDP) zu überbrücken. Weitere Details finden Sie auf der Seite NMEA 2000 Protocol.
Vorwärtsfehlerkorrektur (FEC)
Siehe Vorwärtsfehlerkorrektur.```
#> python -m striptls --help # from pip/setup.py
#> python striptls --help # from source / root folder
Usage: striptls.py [options]
example: striptls.py --listen 0.0.0.0:25 --remote mail.server.tld:25