Il s'agit de la commande sslsplit qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
sslsplit -- interception SSL/TLS transparente et évolutive
SYNOPSIS
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c pem spécifications proxy [...]
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c pem -t dir spécifications proxy [...]
sslsplit [-OPZdDgGsrReumjplLSFi] -t dir spécifications proxy [...]
sslsplit -E
sslsplit -V
sslsplit -h
DESCRIPTION
SSLsplit est un outil pour les attaques man-in-the-middle contre le réseau crypté SSL/TLS
Connexions. Les connexions sont interceptées de manière transparente via une adresse réseau
moteur de traduction et redirigé vers SSLsplit. SSLsplit met fin à SSL/TLS et initie
une nouvelle connexion SSL/TLS à l'adresse de destination d'origine, tout en enregistrant toutes les données
transmis. SSLsplit est destiné à être utile pour l'investigation et la pénétration du réseau
test.
SSLsplit prend en charge les connexions TCP, SSL, HTTP et HTTPS simples sur IPv4 et
IPv6. Pour les connexions SSL et HTTPS, SSLsplit génère et signe le X509v3 forgé
certificats à la volée, sur la base du DN du sujet du certificat de serveur d'origine et
extension subjectAltName. SSLsplit prend entièrement en charge Server Name Indication (SNI) et est
capable de fonctionner avec les clés RSA, DSA et ECDSA et les suites de chiffrement DHE et ECDHE. Cela dépend de
la version d'OpenSSL, SSLsplit prend en charge SSL 3.0, TLS 1.0, TLS 1.1 et TLS 1.2, et
éventuellement SSL 2.0 également. SSLsplit peut également utiliser des certificats existants dont le
la clé privée est disponible, au lieu d'en générer de fausses. SSLsplit prend en charge NULL-
préfixe les certificats CN et peut refuser les requêtes OCSP de manière générique. Pour HTTP et HTTPS
connexions, SSLsplit supprime les en-têtes de réponse pour HPKP afin d'empêcher la clé publique
épinglage, pour que HSTS permette à l'utilisateur d'accepter des certificats non fiables, et alternative
Protocoles pour empêcher le passage à QUIC/SPDY.
SSLsplit prend en charge un certain nombre de moteurs NAT, le transfert statique et les recherches DNS SNI pour
déterminer la destination d'origine des connexions redirigées (voir NAT ENGINES et PROXY
SPÉCIFICATIONS ci-dessous).
Pour mettre en œuvre une attaque, vous devez également rediriger le trafic vers le système
Running sslsplit. Vos options incluent la course sslsplit sur un routeur légitime, ARP
spoofing, ND spoofing, empoisonnement DNS, déploiement d'un point d'accès non autorisé (par exemple en utilisant hostap
mode), re-câblage physique, reconfiguration de VLAN malveillant ou injection de route, / Etc / hosts
modification et ainsi de suite. SSLsplit n'implémente pas la redirection réelle du trafic.
OPTIONS
-c fichier pem
Utiliser le certificat CA de fichier pem de signer des certificats falsifiés à la volée. Si fichier pem
contient également la clé privée CA correspondante, elle est également chargée, sinon elle doit être
livré avec -k. Si fichier pem contient également des paramètres de groupe Diffie-Hellman, ils
sont également chargés, sinon ils peuvent être fournis avec -g. Si -t est également donné,
SSLsplit ne forgera un certificat que s'il n'y a pas de certificat correspondant dans le
répertoire de certificats fourni.
-C fichier pem
Utiliser les certificats CA de fichier pem en tant que certificats supplémentaires dans la chaîne de certificats.
Ceci est nécessaire si le CA donné avec -k et -c est une sous-AC, auquel cas tout
certificats CA intermédiaires et le certificat CA racine doivent être inclus dans le
chaîne de certificats.
-d Détachez-vous de TTY et exécutez-vous en tant que démon, en enregistrant les messages d'erreur dans syslog au lieu de
erreur standard.
-D Exécutez en mode débogage, enregistrez de nombreuses informations de débogage dans l'erreur standard. Ça aussi
force le mode premier plan et ne peut pas être utilisé avec -d.
-e moteur
Utilisez moteur comme moteur NAT par défaut pour spécifications proxy sans moteur NAT explicite,
adresse de destination statique ou mode SNI. moteur peut être l'un des moteurs NAT
pris en charge par le système, tel que renvoyé par -E.
-E Répertoriez tous les moteurs NAT pris en charge disponibles sur le système et quittez. Voir MOTEURS NAT
pour une liste des moteurs NAT actuellement pris en charge par SSLsplit.
-F spéclog
Consignez le contenu de la connexion dans des fichiers journaux séparés avec la spécification de chemin donnée (voir
SPÉCIFICATIONS DU JOURNAL ci-dessous). Pour chaque connexion, un fichier journal sera écrit, qui
contiendra les deux sens des données telles qu'elles sont transmises. Informations sur le
connexion sera contenue dans le nom de fichier uniquement. Si -F s'utilise avec -j, spéclog
est relatif à geôlier. Si -F s'utilise avec -u, spéclog doit être accessible en écriture par utilisateur.
-g fichier pem
Utiliser les paramètres du groupe Diffie-Hellman de fichier pem pour l'éphémère Diffie-Hellman
(EDH/DHE) suites de chiffrement. Si -g n'est pas donné, SSLsplit essaie d'abord de charger DH
paramètres des fichiers PEM fournis par -K, -k or -c. Si aucun paramètre DH n'est trouvé
dans les fichiers clés, les paramètres de groupe intégrés de 512 ou 1024 bits sont automatiquement utilisés
ssi une clé privée non RSA est donnée avec -K. C'est parce que les clés privées DSA/DSS
ne peuvent en eux-mêmes être utilisés que pour la signature et obligent donc DH à échanger un
Clé de session SSL/TLS. Si -g est donné, les paramètres de la donnée fichier pem sera
toujours être utilisé, même avec des clés privées RSA (au sein des suites de chiffrement disponibles dans
OpenSSL). Les -g l'option n'est disponible que si SSLsplit a été construit avec une version
d'OpenSSL qui prend en charge les suites de chiffrement Diffie-Hellman.
-G courbe
Utiliser le nom courbe pour le chiffrement Diffie-Hellman à courbe elliptique éphémère (EECDH)
suites. Si -G n'est pas donnée, une courbe par défaut (secp160r2) est utilisé automatiquement ssi
une clé privée non RSA est donnée avec -K. En effet, les clés privées ECDSA/ECDSS
ne peuvent en eux-mêmes être utilisés que pour la signature et obligent donc l'ECDH à échanger un
Clé de session SSL/TLS. Si -G est donné, le nom courbe sera toujours utilisé, même
avec des clés privées RSA (au sein des suites de chiffrement disponibles dans OpenSSL). Les -G
L'option n'est disponible que si SSLsplit a été construit avec une version d'OpenSSL qui
prend en charge les suites de chiffrement Diffie-Hellman à courbe elliptique.
-h Afficher l'aide sur l'utilisation et quitter.
-i Pour chaque connexion, recherchez le processus local propriétaire de la connexion. Cela fait
traiter les informations telles que pid, owner:group et chemin de l'exécutable pour les connexions
provenant du même système que SSLsplit disponible pour le journal de connexion et permet
le respectif -F directives de spécification de chemin. -i est disponible sur Mac OS X et
FreeBSD ; la prise en charge d'autres plates-formes n'a pas encore été implémentée.
-j geôlier
Remplacez le répertoire racine par geôlier en utilisant chroot(2) après ouverture des fichiers. Noter
que cela a des implications pour -F, -S, Et pour sni spécifications proxy. Le chemin donné avec
-S or -F sera relatif à geôlier puisque les fichiers journaux ne peuvent pas être ouverts avant
appel chroot(2). Selon votre système d'exploitation, vous devrez copier des fichiers
tel que / Etc / resolv.conf à geôlier pour que la résolution de nom fonctionne. À l'aide de
sni proxyspecs dépend de la résolution de nom. Certains systèmes d'exploitation nécessitent des
nœuds de périphérique tels que / dev / null être présent dans la prison. Vérifiez votre système
documentation pour plus de détails.
-k fichier pem
Utiliser la clé privée CA de fichier pem de signer des certificats falsifiés à la volée. Si fichier pem
contient également le certificat CA correspondant, il est également chargé, sinon il doit être
livré avec -c. Si fichier pem contient également des paramètres de groupe Diffie-Hellman, ils
sont également chargés, sinon ils peuvent être fournis avec -g. Si -t est également donné,
SSLsplit ne forgera un certificat que s'il n'y a pas de certificat correspondant dans le
répertoire de certificats fourni.
-K fichier pem
Utiliser la clé privée de fichier pem pour les certificats falsifiés à la volée. Si -K n'est pas
étant donné, SSLsplit générera une clé RSA aléatoire de 1024 bits.
-l fichier journal
Connectez-vous à fichier journal en une seule ligne par format de connexion, y compris
adresses et ports et certaines informations HTTP et SSL, si disponibles.
-L fichier journal
Consigner le contenu de la connexion sur fichier journal. Le journal de contenu contiendra un journal analysable
format avec les données transmises, précédé d'en-têtes identifiant la connexion et
la longueur des données de chaque segment enregistré.
-m Lors de la suppression des privilèges à l'aide -u, remplacez le groupe cible principal à définir sur
groupe.
-O Refuser toutes les requêtes OCSP (Online Certificate Status Protocol) sur tous spécifications proxy et
pour tous les serveurs OCSP avec une réponse OCSP de essayer plus tard, ce qui fait que les clients OCSP
accepter temporairement même les certificats révoqués. Les requêtes HTTP sont traitées comme
OCSP demande si la méthode est ÉCONOMISEZ et l'URI contient une syntaxe valide
Structure OCSPRequest ASN.1 analysable par OpenSSL, ou si la méthode est POSTEZ et la
Content-Type is application/demande-ocsp. Pour que cela soit efficace, SSLsplit doit
gérer le trafic destiné au port utilisé par le serveur OCSP. En particulier,
SSLsplit doit être configuré pour recevoir le trafic vers tous les ports utilisés par les serveurs OCSP de
certificats ciblés dans le répertoirecert spécifié par -t.
-p fichier pid
Écrivez l'ID de processus dans fichier pid et refuser de courir si le fichier pid est déjà en cours d'utilisation
par un autre processus.
-P Connexions SSL/TLS passthrough qui ne peuvent pas être divisées au lieu de les supprimer.
Les connexions ne peuvent pas être séparées si -c et -k ne sont pas donnés et le site ne correspond pas
tout certificat chargé à l'aide -t, ou si la connexion au serveur d'origine donne
Erreurs SSL/TLS. Plus précisément, cela se produit si le site demande à un client
certificat. Traversée avec -P se traduit par un service ininterrompu pour les clients,
tandis que l'abandon est l'alternative la plus sûre si des connexions non surveillées doivent être
empêché.
-r proto
Forcer la version du protocole SSL/TLS côté client et côté serveur à proto en sélectionnant
le constructeur de méthode OpenSSL respectif au lieu du SSLv23_method() par défaut
qui prend en charge toutes les versions de protocole. Ceci est utile lors de l'analyse du trafic vers un
serveur qui ne prend en charge qu'une version spécifique de SSL/TLS et n'implémente pas
négociation de protocole appropriée. Selon les options de build et la version d'OpenSSL
qui est utilisé, les valeurs suivantes pour proto sont acceptés : SSL2, SSL3, tls10, tls11
et tls12. Notez que la prise en charge de SSL 2.0 n'est pas intégrée par défaut car certains
les serveurs ne gèrent pas correctement les messages SSL 2.0 Client Hello.
-R proto
Désactiver la version du protocole SSL/TLS proto côté client et côté serveur par
désactiver les protocoles respectifs dans OpenSSL. Pour désactiver plusieurs protocoles
les versions, -R peut être donné plusieurs fois. Si -r est également donné, il n'y aura pas
effet en désactivant d'autres versions de protocole. La désactivation des versions de protocole est utile
lors de l'analyse du trafic vers un serveur qui ne gère pas certaines versions de protocole
bien, ou pour tester le comportement avec différentes versions de protocole. Selon la construction
options et la version d'OpenSSL utilisée, les valeurs suivantes pour proto are
accepté: SSL2, SSL3, tls10, tls11 et tls12. Notez que la prise en charge de SSL 2.0 n'est pas
intégré par défaut car certains serveurs ne gèrent pas les messages SSL 2.0 Client Hello
gracieusement.
-s Ciphers
Utiliser OpenSSL Ciphers spécification pour les connexions SSL/TLS serveur et client.
If -s n'est pas fournie, une liste chiffrée de ALL :-aNULL est utilisé. Normalement, SSL/TLS
les implémentations choisissent les suites de chiffrement les plus sécurisées, pas les plus rapides. Par
spécifiant une liste de chiffrement OpenSSL appropriée, l'ensemble des suites de chiffrement peut être
limité à des algorithmes rapides, ou eNUL des suites de chiffrement peuvent être ajoutées. Notez que pour
connexions pour réussir, les suites de chiffrement SSLsplit doivent inclure au moins un
suite de chiffrement prise en charge par le client et le serveur de chaque connexion. Voir
Ciphers(1) pour plus de détails sur la façon de construire des listes de chiffrement OpenSSL.
-S rép_log
Consignez le contenu de la connexion dans des fichiers journaux séparés sous rép_log. Pour chaque connexion, un
log sera écrit, qui contiendra les deux sens des données comme
transmis. Les informations sur la connexion seront contenues dans le nom du fichier
seulement. Si -S s'utilise avec -j, rép_log est relatif à geôlier. Si -S s'utilise avec
-u, rép_log doit être accessible en écriture par utilisateur.
-t répertoirecert
Utilisez la clé privée, le certificat et la chaîne de certificats des fichiers PEM dans répertoirecert pour
sites correspondant aux noms communs respectifs, au lieu d'utiliser des certificats falsifiés
à la volée. Un seul fichier PEM doit contenir une seule clé privée, une seule
certificat et éventuellement des certificats CA intermédiaires et racine à utiliser comme
chaîne de certificats. Si -c et -k sont également délivrés, les certificats seront falsifiés sur-
à la volée pour les sites ne correspondant à aucun des certificats chargés à partir de répertoirecert.
Sinon, les connexions ne correspondant à aucun certificat seront supprimées, ou si -P est donné,
passé sans diviser SSL/TLS.
-u Supprimez les privilèges après l'ouverture de sockets et de fichiers en définissant les valeurs réelles, effectives et
ID utilisateur enregistrés pour utilisateur et charger les groupes primaires et auxiliaires appropriés.
If -u n'est pas donné, SSLsplit supprimera les privilèges sur l'UID stocké si EUID != UID
(scénario setuid bit), ou pour personne si en cours d'exécution avec plein racine privilèges (EUID ==
UID == 0) et -S N'est pas utilisé. En raison d'un bug Apple, -u ne peut pas être utilisé avec pf
proxyspecs sur Mac OS X.
-V Affichez les informations sur la version et les fonctionnalités compilées et quittez.
-Z Désactivez la compression SSL/TLS sur toutes les connexions. Ceci est utile si votre limitation
le facteur est le CPU, pas la bande passante du réseau. Les -Z l'option n'est disponible que si SSLsplit
a été construit contre une version d'OpenSSL qui prend en charge la désactivation de la compression.
PROCURATION DONNÉES TECHNIQUES
Spécifications du proxy (spécifications proxy) se composent du type de connexion, de l'adresse d'écoute et
adresse de transfert statique ou mécanisme de résolution d'adresse (moteur NAT, recherche DNS SNI) :
https adresse d'écoute port [moteur-nat|fwdaddr port|sni port]
ssl adresse d'écoute port [moteur-nat|fwdaddr port|sni port]
http adresse d'écoute port [moteur-nat|fwdaddr port]
tcp adresse d'écoute port [moteur-nat|fwdaddr port]
https Interception SSL/TLS avec décodage du protocole HTTP, y compris la suppression de HPKP,
En-têtes de réponse HSTS et de protocole alternatif.
ssl Interception SSL/TLS sans décodage de protocole de niveau inférieur ; décrypté
le contenu de la connexion est traité comme un flux d'octets opaque et non modifié.
http Connexion TCP simple sans SSL/TLS, avec décodage du protocole HTTP, y compris le
suppression des en-têtes de réponse HPKP, HSTS et de protocole alternatif.
tcp Connexion TCP simple sans SSL/TLS et sans aucun décodage de protocole de niveau inférieur ;
le contenu de connexion déchiffré est traité comme un flux d'octets opaque et non modifié.
adresse d'écoute port
Adresse IPv4 ou IPv6 et nom du port ou du service sur lequel écouter. C'est l'adresse
et le port vers lequel le moteur NAT doit rediriger les connexions.
moteur-nat
Moteur NAT à interroger pour déterminer l'adresse de destination d'origine et le port de
connexions redirigées de manière transparente. Si aucun moteur n'est donné, le moteur par défaut est
utilisé, à moins qu'il ne soit remplacé par -e. Lors de l'utilisation d'un moteur NAT, sslsplit doit fonctionner sur
le même système que les règles NAT redirigeant le trafic vers sslsplit. Voir NAT
ENGINES pour une liste des moteurs NAT pris en charge.
fwdaddr port
Adresse de destination statique, IPv4 ou IPv6, avec nom de port ou de service. Quand c'est
utilisé, les connexions sont transmises à l'adresse et au port du serveur donnés. Si fwdaddr
est un nom d'hôte, il sera résolu en une adresse IP.
sni port
Utilisez le nom d'hôte SNI (Server Name Indication) envoyé par le client dans ClientHello
Message SSL/TLS pour déterminer l'adresse IP du serveur auquel se connecter. Ceci seulement
travaillant pour ssl et https spécifications proxy et a besoin d'un nom de port ou de service comme argument.
Comme cela nécessite des recherches DNS, il est préférable d'utiliser les recherches du moteur NAT (voir
ci-dessus), sauf lorsque cela n'est pas possible, comme lorsqu'il n'y a pas de NAT pris en charge
moteur ou en marche sslsplit sur un système différent des règles NAT
rediriger les connexions réelles. Notez que lors de l'utilisation -j avec sni, Tu pourrais avoir besoin de
pour préparer geôlier pour que la résolution de noms fonctionne à partir du répertoire chroot.
Se Connecter DONNÉES TECHNIQUES
Les spécifications de journal sont composées de zéro ou plusieurs directives de style printf ; ordinaire
les caractères sont inclus directement dans le chemin de sortie. Le courant SSLsplit prend en charge le
directives suivantes :
%T L'heure de connexion initiale sous forme d'horodatage ISO 8601 UTC.
%d L'adresse et le port de destination.
%s L'adresse source et le port.
%x Le nom du processus local. A besoin -i à utiliser. Si les informations de processus sont
indisponible, cette directive sera omise du chemin de sortie.
%X Le chemin complet du processus local. A besoin -i à utiliser. Si processus
information n'est pas disponible, cette directive sera omise du chemin de sortie.
%u Le nom d'utilisateur ou l'uid numérique du processus local. A besoin -i à utiliser. Si
les informations de processus ne sont pas disponibles, cette directive sera omise de la sortie
chemin.
%g Le nom de groupe ou le gid numérique du processus local. A besoin -i à utiliser. Si
les informations de processus ne sont pas disponibles, cette directive sera omise de la sortie
chemin.
%% Un caractère '%' littéral.
NAT MOTEURS
SSLsplit prend actuellement en charge les moteurs NAT suivants :
pf Filtre de paquets OpenBSD (pf) rdr/rdr-à Les redirections NAT, également disponibles sur FreeBSD,
NetBSD et Mac OS X. Entièrement pris en charge, y compris IPv6. En supposant une interface entrante
em0, d'abord dans l'ancien (FreeBSD, Mac OS X), puis dans la nouvelle (OpenBSD 4.7+) :
rdr pass on em0 proto tcp 2001: db8 :: / 64 à tout port 80
-> :: 1 port 10080
rdr pass on em0 proto tcp 2001: db8 :: / 64 à tout port 443
-> :: 1 port 10443
rdr pass on em0 proto tcp 192.0.2.0/24 à tout port 80
-> 127.0.0.1 port 10080
rdr pass on em0 proto tcp 192.0.2.0/24 à tout port 443
-> 127.0.0.1 port 10443
pass in rapide on em0 proto tcp 2001: db8 :: / 64 à tout
port 80 rdr-à :: 1 port 10080
pass in rapide on em0 proto tcp 2001: db8 :: / 64 à tout
port 443 rdr-à :: 1 port 10443
pass in rapide on em0 proto tcp 192.0.2.0/24 à tout
port 80 rdr-à 127.0.0.1 port 10080
pass in rapide on em0 proto tcp 192.0.2.0/24 à tout
port 443 rdr-à 127.0.0.1 port 10443
ipfw Les sockets de détournement du pare-feu IP FreeBSD (IPFW), également disponibles sur Mac OS X. Disponible
sur FreeBSD et OpenBSD en utilisant pf détourner vers. Entièrement pris en charge sur FreeBSD et OpenBSD,
y compris IPv6. Ne prend en charge IPv4 que sur Mac OS X en raison de l'ancienne version d'IPFW
inclus. D'abord dans IPFW, puis dans pf détourner vers syntaxe:
ipfw ajouter avant :: 1,10080 tcp 2001: db8 :: / 64 à tout 80
ipfw ajouter avant :: 1,10443 tcp 2001: db8 :: / 64 à tout 443
ipfw ajouter avant 127.0.0.1,10080 tcp 192.0.2.0/24 à tout 80
ipfw ajouter avant 127.0.0.1,10443 tcp 192.0.2.0/24 à tout 443
pass in rapide on em0 proto tcp 2001: db8 :: / 64 à tout
port 80 détourner vers :: 1 port 10080
pass in rapide on em0 proto tcp 2001: db8 :: / 64 à tout
port 443 détourner vers :: 1 port 10443
pass in rapide on em0 proto tcp 192.0.2.0/24 à tout
port 80 détourner vers 127.0.0.1 port 10080
pass in rapide on em0 proto tcp 192.0.2.0/24 à tout
port 443 détourner vers 127.0.0.1 port 10443
filtre ip
IPFilter (ipfilter, ipf), disponible sur de nombreux systèmes, dont FreeBSD, NetBSD,
Linux et Solaris. Prend en charge uniquement IPv4 en raison des limitations du SIOCGNATL ioctl(2)
interface. En supposant une interface entrante bge0:
rdr bge0 0.0.0.0/0 port 80 -> 127.0.0.1 port 10080
rdr bge0 0.0.0.0/0 port 443 -> 127.0.0.1 port 10443
netfilter
Netfilter Linux à l'aide de la cible iptables REDIRECT. Prend en charge uniquement IPv4 en raison de
limitations dans le SO_ORIGINAL_DST obtientockopt(2) interfaces.
iptables -t nat -A PREROUTING -s 192.0.2.0/24
-p tcp --dport 80
-j RÉORIENTER --vers-ports 10080
iptables -t nat -A PREROUTING -s 192.0.2.0/24
-p tcp --dport 443
-j RÉORIENTER --vers-ports 10443
proxy Netfilter Linux utilisant la cible iptables TPROXY avec la magie de la table de routage
pour permettre au trafic non local de provenir des sockets locaux. Entièrement pris en charge,
y compris IPv6.
ip -f inet6 exclure ajouter marque de fabrique 1 rechercher 100
ip -f inet6 route ajouter locales défaut dev lo table 100
ip6tables -t mangle -N DÉROUTER
ip6tables -t mangle -A DÉROUTER -j MARK --set-marque 1
ip6tables -t mangle -A DÉROUTER -j ACCEPTER
ip6tables -t mangle -A PREROUTING -p tcp -m douille -j DÉROUTER
ip6tables -t mangle -A PREROUTING -s 2001: db8 :: / 64
-p tcp --dport 80
-j TPROXY --tproxy-marque 0x1 / 0x1 --sur-port 10080
ip6tables -t mangle -A PREROUTING -s 2001: db8 :: / 64
-p tcp --dport 443
-j TPROXY --tproxy-marque 0x1 / 0x1 --sur-port 10443
ip -f inet exclure ajouter marque de fabrique 1 rechercher 100
ip -f inet route ajouter locales défaut dev lo table 100
iptables -t mangle -N DÉROUTER
iptables -t mangle -A DÉROUTER -j MARK --set-marque 1
iptables -t mangle -A DÉROUTER -j ACCEPTER
iptables -t mangle -A PREROUTING -p tcp -m douille -j DÉROUTER
iptables -t mangle -A PREROUTING -s 192.0.2.0/24
-p tcp --dport 80
-j TPROXY --tproxy-marque 0x1 / 0x1 --sur-port 10080
iptables -t mangle -A PREROUTING -s 192.0.2.0/24
-p tcp --dport 443
-j TPROXY --tproxy-marque 0x1 / 0x1 --sur-port 10443
Notez que le filtrage du chemin de retour (rp_filter) doit également être désactivé sur les interfaces
qui gèrent le trafic redirigé TPROXY.
EXEMPLES
En faisant correspondre les exemples de configuration de moteur NAT ci-dessus, interceptez HTTP et HTTPS sur IPv4
et IPv6 utilisant des certificats falsifiés avec une clé privée CA ca.clé et certificat ca.crt,
connexion à connecter.log et les données de connexion dans des fichiers séparés sous / Tmp (ajouter
-e moteur-nat pour sélectionner le moteur approprié si plusieurs moteurs sont disponibles sur votre
système):
sslsplit -k ca.clé -c ca.crt -l connecter.log -L / Tmp
https :: 1 10443 https 127.0.0.1 10443
http :: 1 10080 http 127.0.0.1 10080
Interception d'IMAP/IMAPS en utilisant les mêmes paramètres :
sslsplit -k ca.clé -c ca.crt -l connecter.log -L / Tmp
ssl :: 1 10993 ssl 127.0.0.1 10993
tcp :: 1 10143 tcp 127.0.0.1 10143
Une configuration plus ciblée, HTTPS uniquement, utilisant des fichiers de certificat/chaîne/clé de /chemin/vers/cert.d
et redirigeant statiquement vers www.exemple.org au lieu d'interroger un moteur NAT :
sslsplit -t /chemin/vers/cert.d -l connecter.log -L / Tmp
https :: 1 10443 www.exemple.org 443
https 127.0.0.1 10443 www.exemple.org 443
L'exemple d'origine, mais en utilisant des options SSL optimisées pour la vitesse en désactivant la compression
et en sélectionnant uniquement des suites de chiffrement par blocs rapides et en utilisant une clé privée précalculée
feuille.clé pour les certificats falsifiés (l'augmentation de vitesse la plus significative est obtenue par
choisir des algorithmes rapides et de petites tailles de clés pour l'AC et les clés privées de feuille ; Chèque
openssl vitesse pour les performances de l'algorithme sur votre système) :
sslsplit -Z -s NULL : RC4 : AES128 -K feuille.clé
-k ca.clé -c ca.crt -l connecter.log -L / Tmp
https :: 1 10443 https 127.0.0.1 10443
http :: 1 10080 http 127.0.0.1 10080
L'exemple d'origine, mais exécuté en tant que démon sous user sslsplit et en écrivant un fichier PID :
sslsplit -d -p /var/run/sslsplit.pid -u sslsplit
-k ca.clé -c ca.crt -l connecter.log -L / Tmp
https :: 1 10443 https 127.0.0.1 10443
http :: 1 10080 http 127.0.0.1 10080
Pour générer une clé privée CA ca.clé et certificat ca.crt en utilisant OpenSSL :
cat >x509v3ca.cnf <<'EOF'
[requête]
nom_distingué = reqdn
[reqdn]
[v3_ca]
contraintes de base = CA: VRAI
subjectKeyIdentifier = hachage
AuthorityKeyIdentifier = keyid:always,issuer:always
EOF
openssl général -en dehors ca.clé 1024
openssl req -Nouveau -nœuds -X509 -sha1 -en dehors ca.crt -clé ca.clé
-config x509v3ca.cnf -rallonges v3_ca
-subj '/O=SSLsplit Traitement CA/CN=SSL partagé Traitement CALIFORNIE/'
-set_série 0 -journées 3650
NOTES
SSLsplit est capable de gérer un nombre relativement élevé d'auditeurs et de connexions en raison d'un
architecture événementielle multithread basée sur libevent, tirant parti de la plate-forme
remplacements spécifiques de select() tels que kqueue. Le thread principal gère les auditeurs et
signalisation, tandis qu'un nombre de threads de travail égal à deux fois le nombre de cœurs de processeur est
utilisé pour gérer les connexions réelles dans des bases d'événements distinctes, y compris le CPU-
traitement SSL/TLS intensif.
On a pris soin de choisir des structures de données performantes pour la mise en cache des certificats et
Sessions SSL. La journalisation est implémentée dans des threads d'écriture de disque séparés pour garantir que
les threads de gestion des événements de socket n'ont pas à bloquer les E/S du disque. Les recherches DNS sont effectuées
asynchrone. SSLsplit utilise la mise en cache de session SSL aux deux extrémités pour minimiser la quantité de
poignées de main SSL complètes, mais même dans ce cas, le facteur limitant dans la gestion des connexions SSL est
les calculs de bignum réels.
Utilisez sslsplit en ligne à l'aide des services onworks.net