Aceasta este comanda sslsplit care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
sslsplit -- interceptare SSL/TLS transparentă și scalabilă
REZUMAT
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c pem proxyspecs [...]
sslsplit [-kCKOPZdDgGsrReumjplLSFi] -c pem -t dir proxyspecs [...]
sslsplit [-OPZdDgGsrReumjplLSFi] -t dir proxyspecs [...]
sslsplit -E
sslsplit -V
sslsplit -h
DESCRIERE
SSLsplit este un instrument pentru atacuri man-in-the-middle împotriva rețelei criptate SSL/TLS
conexiuni. Conexiunile sunt interceptate transparent printr-o adresă de rețea
motor de traducere și redirecționat către SSLsplit. SSLsplit termină SSL/TLS și inițiază
o nouă conexiune SSL/TLS la adresa de destinație inițială, în timp ce înregistrați toate datele
transmis. SSLsplit este destinat să fie util pentru criminalistica și penetrarea rețelei
de testare.
SSLsplit acceptă conexiuni TCP simplu, SSL simplu, HTTP și HTTPS atât prin IPv4, cât și
IPv6. Pentru conexiunile SSL și HTTPS, SSLsplit generează și semnează X509v3 falsificat
certificate on-the-fly, bazate pe DN-ul subiectului certificatului de server original și
extensia subiectAltName. SSLsplit acceptă pe deplin indicația numelui serverului (SNI) și este
capabil să lucreze cu chei RSA, DSA și ECDSA și suite de criptare DHE și ECDHE. În funcție de
versiunea de OpenSSL, SSLsplit acceptă SSL 3.0, TLS 1.0, TLS 1.1 și TLS 1.2 și
opțional și SSL 2.0. SSLsplit poate utiliza, de asemenea, certificate existente ale căror
cheia privată este disponibilă, în loc să genereze altele falsificate. SSLsplit acceptă NULL-
prefix certificatele CN și poate refuza cererile OCSP într-un mod generic. Pentru HTTP și HTTPS
conexiuni, SSLsplit elimină anteturile de răspuns pentru HPKP pentru a preveni cheia publică
fixare, pentru ca HSTS să permită utilizatorului să accepte certificate neîncrezătoare și Alternate
Protocoale pentru a preveni trecerea la QUIC/SPDY.
SSLsplit acceptă o serie de motoare NAT, redirecționare statică și căutări SNI DNS pentru
determinați destinația inițială a conexiunilor redirecționate (consultați NAT ENGINES și PROXY
SPECIFICAȚII de mai jos).
Pentru a implementa efectiv un atac, trebuie de asemenea să redirecționați traficul către sistem
funcţionare sslsplit. Opțiunile tale includ alergarea sslsplit pe un router legitim, ARP
spoofing, ND spoofing, otrăvire DNS, implementarea unui punct de acces necinstite (de exemplu, folosind hostap
mod), recablarea fizică, reconfigurarea VLAN rău intenționată sau injectarea rutei, / Etc / hosts
modificare și așa mai departe. SSLsplit nu implementează redirecționarea efectivă a traficului.
OPŢIUNI
-c pemfile
Utilizați certificatul CA de la pemfile să semneze certificate falsificate din mers. Dacă pemfile
conține, de asemenea, cheia privată CA corespunzătoare, este și încărcată, altfel trebuie să fie
oferit cu -k. Dacă pemfile conține, de asemenea, parametrii grupului Diffie-Hellman, ei
sunt de asemenea încărcate, altfel pot fi prevăzute -g. Dacă -t este de asemenea dat,
SSLsplit va falsifica un certificat numai dacă nu există niciun certificat care se potrivește în
directorul de certificate furnizat.
-C pemfile
Utilizați certificate CA de la pemfile ca certificate suplimentare în lanțul de certificate.
Acest lucru este necesar dacă CA dat cu -k și -c este un sub-CA, caz în care oricare
certificatele CA intermediare și certificatul CA rădăcină trebuie incluse în
lanț de certificate.
-d Detașați de la TTY și rulați ca demon, înregistrând mesajele de eroare în syslog în loc de
eroare standard.
-D Rulați în modul de depanare, înregistrați o mulțime de informații de depanare la eroare standard. Acesta de asemenea
forțează modul prim-plan și nu poate fi folosit cu -d.
-e motor
Utilizare motor ca motor NAT implicit pentru proxyspecs fără motor NAT explicit,
adresa de destinație statică sau modul SNI. motor poate fi oricare dintre motoarele NAT
susținut de sistem, așa cum este returnat de -E.
-E Listați toate motoarele NAT acceptate disponibile pe sistem și ieșiți. Vezi MOTOARE NAT
pentru o listă de motoare NAT acceptate în prezent de SSLsplit.
-F logspec
Înregistrați conținutul conexiunii în fișierele jurnal separate cu specificația de cale dată (a se vedea
SPECIFICAȚII JURULUI de mai jos). Pentru fiecare conexiune va fi scris un fișier jurnal, care
va conține ambele direcții ale datelor așa cum sunt transmise. Informații despre
conexiunea va fi inclusă numai în numele fișierului. Dacă -F este folosit cu -j, logspec
este relativ la jaildir. Dacă -F este folosit cu -u, logspec trebuie să fie scris de către utilizator.
-g pemfile
Utilizați parametrii grupului Diffie-Hellman de la pemfile pentru Ephemereal Diffie-Hellman
(EDH/DHE) suite de criptare. Dacă -g nu este dat, SSLsplit încearcă mai întâi să încarce DH
parametrii din fișierele PEM date de -K, -k or -c. Dacă nu se găsesc parametrii DH
în fișierele cheie, parametrii de grup de 512 sau 1024 de biți încorporați sunt utilizați automat
dacă o cheie privată non-RSA este dată cu -K. Acest lucru se datorează faptului că cheile private DSA/DSS
pot fi folosite singure doar pentru semnare și, prin urmare, necesită ca DH să schimbe un
Cheie de sesiune SSL/TLS. Dacă -g este dat, parametrii din dat pemfile voi
să fie întotdeauna utilizat, chiar și cu chei private RSA (în cadrul suitelor de criptare disponibile în
OpenSSL). The -g opțiunea este disponibilă numai dacă SSLsplit a fost construit pe o versiune
de OpenSSL care acceptă suitele de criptare Diffie-Hellman.
-G curba
Folosiți numele curba pentru cifrul Ephemereal Elliptic Curve Diffie-Hellman (EECDH).
apartamente. Dacă -G nu este dată, o curbă implicită (secp160r2) este utilizat automat dacă
o cheie privată non-RSA este dată cu -K. Acest lucru se datorează faptului că cheile private ECDSA/ECDSS
pot fi folosite în sine doar pentru semnare și, prin urmare, solicită ECDH să schimbe un
Cheie de sesiune SSL/TLS. Dacă -G este dat, numitul curba va fi folosit întotdeauna, chiar și
cu chei private RSA (în cadrul suitelor de criptare disponibile în OpenSSL). The -G
opțiunea este disponibilă numai dacă SSLsplit a fost construit împotriva unei versiuni de OpenSSL care
acceptă suitele de cifrare Diffie-Hellman Curve eliptice.
-h Afișează ajutor pentru utilizare și ieșire.
-i Pentru fiecare conexiune, găsiți procesul local care deține conexiunea. Asta face
procesați informații precum pid, proprietar:grup și calea executabilă pentru conexiuni
care provine din același sistem ca SSLsplit disponibil pentru jurnalul de conectare și activează
respectivul -F directive de specificare a căii. -i este disponibil pe Mac OS X și
FreeBSD; suportul pentru alte platforme nu a fost încă implementat.
-j jaildir
Schimbați directorul rădăcină în jaildir folosind Chroot.(2) după deschiderea fișierelor. Notă
că aceasta are implicaţii pentru -F, -S, Și pentru sni proxyspecs. Drumul dat cu
-S or -F va fi relativ la jaildir deoarece fișierele jurnal nu pot fi deschise înainte
apel Chroot.(2). În funcție de sistemul de operare, va trebui să copiați fișierele
precum /etc/resolv.conf la jaildir pentru ca rezoluția numelui să funcționeze. Folosind
sni proxyspecs depinde de rezoluția numelui. Unele sisteme de operare necesită special
noduri de dispozitiv precum / Dev / null să fie prezent în închisoare. Verificați sistemul dvs
documentatie pentru detalii.
-k pemfile
Utilizați cheia privată CA de la pemfile să semneze certificate falsificate din mers. Dacă pemfile
contine si certificatul CA potrivit, este si incarcat, altfel trebuie sa fie
oferit cu -c. Dacă pemfile conține, de asemenea, parametrii grupului Diffie-Hellman, ei
sunt de asemenea încărcate, altfel pot fi prevăzute -g. Dacă -t este de asemenea dat,
SSLsplit va falsifica un certificat numai dacă nu există niciun certificat care se potrivește în
directorul de certificate furnizat.
-K pemfile
Utilizați cheia privată de la pemfile pentru certificatele falsificate din mers. Dacă -K nu este
dat, SSLsplit va genera o cheie RSA aleatorie de 1024 de biți.
-l fișier jurnal
Înregistrați conexiunile la fișier jurnal într-o singură linie per format de conexiune, inclusiv
adrese și porturi și unele informații HTTP și SSL, dacă sunt disponibile.
-L fișier jurnal
Înregistrați conținutul conexiunii la fișier jurnal. Jurnalul de conținut va conține un jurnal analizabil
format cu datele transmise, predate cu anteturi care identifică conexiunea și
lungimea datelor fiecărui segment înregistrat.
-m Când renunțați la privilegii folosind -u, suprascrieți grupul primar țintă care trebuie setat
grup.
-O Respinge toate solicitările Online Certificate Status Protocol (OCSP) pentru toate proxyspecs și
pentru toate serverele OCSP cu un răspuns OCSP de Încercați mai târziu, determinând clienții OCSP să
acceptă temporar chiar și certificate revocate. Solicitările HTTP sunt tratate ca
OCSP solicită dacă metoda este GET iar URI-ul conține un valid sintactic
Structura OCSPRequest ASN.1 analizabilă de OpenSSL sau dacă metoda este POST si
Content-Type is cerere/ocsp-request. Pentru ca acest lucru să fie eficient, SSLsplit trebuie
să gestioneze traficul destinat portului utilizat de serverul OCSP. În special,
SSLsplit trebuie configurat pentru a primi trafic către toate porturile utilizate de serverele OCSP ale
certificate vizate în cadrul certdir specificat de -t.
-p pidfile
Scrieți ID-ul procesului la pidfile și refuză să alerge dacă pidfile este deja folosit
printr-un alt proces.
-P Conexiuni SSL/TLS care nu pot fi divizate în loc să le renunțe.
Conexiunile nu pot fi divizate dacă -c și -k nu sunt date și site-ul nu se potrivește
orice certificat încărcat folosind -t, sau dacă conexiunea la serverul original dă
Erori SSL/TLS. Mai exact, acest lucru se întâmplă dacă site-ul solicită un client
certificat. Passthrough cu -P duce la servicii neîntrerupte pentru clienți,
în timp ce eliminarea este alternativa mai sigură dacă conexiunile nemonitorizate trebuie să fie
prevenit.
-r proto
Forțați versiunea protocolului SSL/TLS atât pe partea client, cât și pe partea serverului proto prin selectarea
respectivul constructor al metodei OpenSSL în loc de SSLv23_method() implicit
care acceptă toate versiunile de protocol. Acest lucru este util atunci când se analizează traficul către a
server care acceptă doar o anumită versiune de SSL/TLS și nu implementează
negociere adecvată a protocolului. În funcție de opțiunile de construcție și de versiunea OpenSSL
care se utilizează, următoarele valori pentru proto sunt acceptate: ssl2, ssl3, tls10, tls11
și tls12. Rețineți că suportul SSL 2.0 nu este încorporat în mod implicit, deoarece unele
serverele nu gestionează cu grație mesajele SSL 2.0 Client Hello.
-R proto
Dezactivați versiunea protocolului SSL/TLS proto atât pe client, cât și pe server
dezactivarea protocoalelor respective în OpenSSL. Pentru a dezactiva protocolul multiplu
versiuni, -R poate fi dat de mai multe ori. Dacă -r este de asemenea dat, nu va exista
efect în dezactivarea altor versiuni de protocol. Dezactivarea versiunilor de protocol este utilă
atunci când se analizează traficul către un server care nu gestionează unele versiuni de protocol
bine, sau pentru a testa comportamentul cu diferite versiuni de protocol. În funcție de construcție
opțiunile și versiunea de OpenSSL care este utilizată, următoarele valori pentru proto sunt
admis: ssl2, ssl3, tls10, tls11 și tls12. Rețineți că suportul SSL 2.0 nu este
încorporat în mod implicit, deoarece unele servere nu gestionează mesajele SSL 2.0 Client Hello
graţios.
-s cifrări
Utilizați OpenSSL cifrări specificație pentru conexiuni SSL/TLS server și client.
If -s nu este dat, o listă de cifrare a TOATE:-aNULL este folosit. În mod normal, SSL/TLS
implementările aleg cele mai sigure suite de criptare, nu cele mai rapide. De
specificând o listă de criptare OpenSSL corespunzătoare, setul de suite de criptare poate fi
limitat la algoritmi rapizi sau eNULL pot fi adăugate suite de criptare. Rețineți că pentru
pentru a avea succes, suitele de criptare SSLsplit trebuie să includă cel puțin una
suită de criptare acceptată atât de client, cât și de serverul fiecărei conexiuni. Vedea
cifrări(1) pentru detalii despre cum să construiți liste de criptare OpenSSL.
-S logdir
Înregistrați conținutul conexiunii la fișierele jurnal separate sub logdir. Pentru fiecare conexiune, a
va fi scris fișierul jurnal, care va conține ambele direcții de date ca
transmis. Informațiile despre conexiune vor fi conținute în numele fișierului
numai. Dacă -S este folosit cu -j, logdir este relativ la jaildir. Dacă -S este folosit cu
-u, logdir trebuie să fie scris de către utilizator.
-t certdir
Utilizați cheia privată, certificatul și lanțul de certificate din fișierele PEM în certdir pentru
site-uri care corespund denumirilor comune respective, în loc să utilizeze certificate falsificate
pe fuga. Un singur fișier PEM trebuie să conțină o singură cheie privată, o singură
certificat și, opțional, certificate CA intermediare și rădăcină de utilizat ca
lanț de certificate. Dacă -c și -k de asemenea, certificatele vor fi falsificate pe-
the-fly pentru site-urile care nu se potrivesc cu niciunul dintre certificatele încărcate de la certdir.
În caz contrar, conexiunile care nu corespund niciun certificat vor fi abandonate sau dacă -P este dată,
trecut fără a împărți SSL/TLS.
-u Renunțați la privilegii după deschiderea socket-urilor și a fișierelor prin setarea reală, eficientă și
ID-uri de utilizator stocate către utilizator și încărcarea grupurilor primare și auxiliare corespunzătoare.
If -u nu este dat, SSLsplit va renunța la privilegiile UID-ului stocat dacă EUID != UID
(scenariu de bit setuid), sau la nimeni dacă rulează cu plin rădăcină privilegii (EUID ==
UID == 0) și -S nu este folosit. Din cauza unei erori Apple, -u nu poate fi folosit cu pf
proxyspecs pe Mac OS X.
-V Afișați informații despre versiunea și caracteristicile compilate și ieșiți.
-Z Dezactivați compresia SSL/TLS pe toate conexiunile. Acest lucru este util dacă vă limitați
factorul este CPU, nu lățimea de bandă a rețelei. The -Z opțiunea este disponibilă numai dacă SSLsplit
a fost construit împotriva unei versiuni de OpenSSL care acceptă dezactivarea compresiei.
PROXY SPECIFICAȚII
Specificații proxy (proxyspecs) constau din tipul de conexiune, adresa de ascultare și
Adresă de redirecționare statică sau mecanism de rezoluție a adresei (motor NAT, căutare SNI DNS):
https ascultăddr port [nat-motor|fwdaddr port|sni port]
ssl ascultăddr port [nat-motor|fwdaddr port|sni port]
http ascultăddr port [nat-motor|fwdaddr port]
tcp ascultăddr port [nat-motor|fwdaddr port]
https Interceptarea SSL/TLS cu decodare protocol HTTP, inclusiv eliminarea HPKP,
Antete de răspuns HSTS și Protocol alternativ.
ssl Interceptarea SSL/TLS fără nicio decodare a protocolului de nivel inferior; decriptat
conținutul conexiunii este tratat ca un flux opac de octeți și nu este modificat.
http Conexiune TCP simplă fără SSL/TLS, cu decodare protocol HTTP, inclusiv
eliminarea antetelor de răspuns HPKP, HSTS și Protocol alternativ.
tcp Conexiune TCP simplă fără SSL/TLS și fără nicio decodare a protocolului de nivel inferior;
conținutul conexiunii decriptate este tratat ca un flux opac de octeți și nu este modificat.
ascultăddr port
Adresă IPv4 sau IPv6 și numele portului sau serviciului pe care să ascultați. Aceasta este adresa
și portul către care ar trebui să redirecționeze motorul NAT conexiunile.
nat-motor
Motorul NAT pentru a interoga pentru a determina adresa de destinație inițială și portul
conexiuni redirecționate transparent. Dacă nu este dat niciun motor, motorul implicit este
folosit, cu excepția cazului în care este înlocuit cu -e. Când utilizați un motor NAT, sslsplit trebuie să alerge mai departe
același sistem ca și regulile NAT care redirecționează traficul către sslsplit. Vezi NAT
MOTORE pentru o listă de motoare NAT acceptate.
fwdaddr port
Adresă de destinație statică, IPv4 sau IPv6, cu numele portului sau al serviciului. Când aceasta este
utilizate, conexiunile sunt redirecționate către adresa și portul de server date. Dacă fwdaddr
este un nume de gazdă, va fi rezolvat la o adresă IP.
sni port
Utilizați numele de gazdă SNI (Server Name Indication) trimis de client în ClientHello
Mesaj SSL/TLS pentru a determina adresa IP a serverului la care să se conecteze. Doar asta
lucreaza pentru ssl și https proxyspecs și are nevoie de un nume de port sau de serviciu ca argument.
Deoarece acest lucru necesită căutări DNS, este de preferat să folosiți căutări ale motorului NAT (vezi
de mai sus), cu excepția cazului în care acest lucru nu este posibil, cum ar fi atunci când nu există un NAT acceptat
motor sau când rulează sslsplit pe un alt sistem decât regulile NAT
redirecționarea conexiunilor reale. Rețineți că atunci când utilizați -j implementate cu sni, s-ar putea să ai nevoie
pentru a pregăti jaildir pentru a face rezoluția numelor să funcționeze din directorul chroot.
LOG SPECIFICAȚII
Specificațiile de jurnal sunt compuse din zero sau mai multe directive tip printf; comun
caracterele sunt incluse direct în calea de ieșire. Curentul SSLsplit acceptă
următoarele directive:
%T Ora inițială a conexiunii ca marcaj de timp ISO 8601 UTC.
%d Adresa de destinație și portul.
%s Adresa și portul sursei.
%x Numele procesului local. Necesită -i a fi folosit. Dacă informațiile despre proces sunt
indisponibilă, această directivă va fi omisă din calea de ieșire.
%X Calea completă a procesului local. Necesită -i a fi folosit. Dacă proces
informațiile nu sunt disponibile, această directivă va fi omisă din calea de ieșire.
%u Numele de utilizator sau uid-ul numeric al procesului local. Necesită -i a fi folosit. Dacă
informațiile de proces nu sunt disponibile, această directivă va fi omisă din ieșire
cale.
%g Numele grupului sau gid numeric al procesului local. Necesită -i a fi folosit. Dacă
informațiile de proces nu sunt disponibile, această directivă va fi omisă din ieșire
cale.
%% Un caracter literal „%”.
NAT MOTOARE
SSLsplit acceptă în prezent următoarele motoare NAT:
pf filtru de pachete OpenBSD (pf) rdr/rdr-to Redirecționări NAT, disponibile și pe FreeBSD,
NetBSD și Mac OS X. Complet acceptat, inclusiv IPv6. Presupunând interfață de intrare
em0, mai întâi în vechiul (FreeBSD, Mac OS X), apoi în noua sintaxă (OpenBSD 4.7+):
rdr trece on em0 proto tcp de la 2001: db8 :: / 64 la Orice port 80 \
-> ::1 port 10080
rdr trece on em0 proto tcp de la 2001: db8 :: / 64 la Orice port 443 \
-> ::1 port 10443
rdr trece on em0 proto tcp de la 192.0.2.0/24 la Orice port 80 \
-> 127.0.0.1 port 10080
rdr trece on em0 proto tcp de la 192.0.2.0/24 la Orice port 443 \
-> 127.0.0.1 port 10443
trece in rapid on em0 proto tcp de la 2001: db8 :: / 64 la Orice \
port 80 rdr-to ::1 port 10080
trece in rapid on em0 proto tcp de la 2001: db8 :: / 64 la Orice \
port 443 rdr-to ::1 port 10443
trece in rapid on em0 proto tcp de la 192.0.2.0/24 la Orice \
port 80 rdr-to 127.0.0.1 port 10080
trece in rapid on em0 proto tcp de la 192.0.2.0/24 la Orice \
port 443 rdr-to 127.0.0.1 port 10443
ipfw Prize de deviere FreeBSD IP firewall (IPFW), disponibile și pe Mac OS X. Disponibil
pe FreeBSD și OpenBSD folosind pf deturnare-spre. Complet acceptat pe FreeBSD și OpenBSD,
inclusiv IPv6. Acceptă IPv4 numai pe Mac OS X datorită versiunii vechi a IPFW
inclus. Mai întâi în IPFW, apoi în pf deturnare-spre sintaxă:
ipfw adăuga FWD ::1,10080 tcp de la 2001: db8 :: / 64 la Orice 80
ipfw adăuga FWD ::1,10443 tcp de la 2001: db8 :: / 64 la Orice 443
ipfw adăuga FWD 127.0.0.1,10080 tcp de la 192.0.2.0/24 la Orice 80
ipfw adăuga FWD 127.0.0.1,10443 tcp de la 192.0.2.0/24 la Orice 443
trece in rapid on em0 proto tcp de la 2001: db8 :: / 64 la Orice \
port 80 deturnare-spre ::1 port 10080
trece in rapid on em0 proto tcp de la 2001: db8 :: / 64 la Orice \
port 443 deturnare-spre ::1 port 10443
trece in rapid on em0 proto tcp de la 192.0.2.0/24 la Orice \
port 80 deturnare-spre 127.0.0.1 port 10080
trece in rapid on em0 proto tcp de la 192.0.2.0/24 la Orice \
port 443 deturnare-spre 127.0.0.1 port 10443
ipfilter
IPFilter (ipfilter, ipf), disponibil pe multe sisteme, inclusiv FreeBSD, NetBSD,
Linux și Solaris. Suportă numai IPv4 din cauza limitărilor din SIOCGNATL ioctls(2)
interfata. Presupunând interfață de intrare 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
filtru net
Linux netfilter folosind ținta iptables REDIRECT. Acceptă numai IPv4 datorită
limitări în SO_ORIGINAL_DST getsockopt(2) interfață.
iptables -t nat -A PRERUUTARE -s 192.0.2.0/24 \
-p tcp --dport 80 \
-j REDIRECŢIONA --la-porturi 10080
iptables -t nat -A PRERUUTARE -s 192.0.2.0/24 \
-p tcp --dport 443 \
-j REDIRECŢIONA --la-porturi 10443
tproxy Linux netfilter folosind ținta iptables TPROXY împreună cu magia tabelului de rutare
pentru a permite traficului non-local să provină din prizele locale. Complet sprijinit,
inclusiv IPv6.
ip -f inet6 pronunța adăuga fwmark 1 căutare 100
ip -f inet6 traseu adăuga local lipsă dev lo tabel 100
ip6tables -t calandru -N DIVERTĂ
ip6tables -t calandru -A DIVERTĂ -j MARCĂ --set-mark 1
ip6tables -t calandru -A DIVERTĂ -j ACCEPT
ip6tables -t calandru -A PRERUUTARE -p tcp -m priză -j DIVERTĂ
ip6tables -t calandru -A PRERUUTARE -s 2001: db8 :: / 64 \
-p tcp --dport 80 \
-j TPROXY --tproxy-mark 0x1 / 0x1 --pe-port 10080
ip6tables -t calandru -A PRERUUTARE -s 2001: db8 :: / 64 \
-p tcp --dport 443 \
-j TPROXY --tproxy-mark 0x1 / 0x1 --pe-port 10443
ip -f INET pronunța adăuga fwmark 1 căutare 100
ip -f INET traseu adăuga local lipsă dev lo tabel 100
iptables -t calandru -N DIVERTĂ
iptables -t calandru -A DIVERTĂ -j MARCĂ --set-mark 1
iptables -t calandru -A DIVERTĂ -j ACCEPT
iptables -t calandru -A PRERUUTARE -p tcp -m priză -j DIVERTĂ
iptables -t calandru -A PRERUUTARE -s 192.0.2.0/24 \
-p tcp --dport 80 \
-j TPROXY --tproxy-mark 0x1 / 0x1 --pe-port 10080
iptables -t calandru -A PRERUUTARE -s 192.0.2.0/24 \
-p tcp --dport 443 \
-j TPROXY --tproxy-mark 0x1 / 0x1 --pe-port 10443
Rețineți că filtrarea căii de retur (rp_filter) trebuie, de asemenea, să fie dezactivată pe interfețe
care gestionează traficul redirecționat TPROXY.
EXEMPLE
Potrivirea eșantioanelor de configurare a motorului NAT de mai sus, interceptați HTTP și HTTPS prin IPv4
și IPv6 folosind certificate falsificate cu cheie privată CA ca.cheie si certificat ca.crt,
înregistrarea conexiunilor la conecta.log și datele de conectare în fișiere separate sub / tmp (adăuga
-e nat-motor pentru a selecta motorul potrivit dacă mai multe motoare sunt disponibile pe dvs
sistem):
sslsplit -k ca.cheie -c ca.crt -l conecta.log -L / tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
Interceptarea IMAP/IMAPS folosind aceleași setări:
sslsplit -k ca.cheie -c ca.crt -l conecta.log -L / tmp \
ssl ::1 10993 ssl 127.0.0.1 10993 \
tcp ::1 10143 tcp 127.0.0.1 10143
O configurare mai direcționată, numai HTTPS, folosind fișiere certificat/lanț/cheie de la /cale/spre/cert.d
și redirecționând static către www.example.org în loc să întrebați un motor NAT:
sslsplit -t /cale/spre/cert.d -l conecta.log -L / tmp \
https ::1 10443 www.example.org 443 \
https 127.0.0.1 10443 www.example.org 443
Exemplul original, dar folosind opțiuni SSL optimizate pentru viteză prin dezactivarea compresiei
și selectarea doar a suitelor de criptare rapidă bloc și utilizarea unei chei private precalculate
frunză.cheie pentru certificatele falsificate (cea mai semnificativă creștere a vitezei este obținută de
alegerea de algoritmi rapizi și dimensiuni mici pentru cheile private CA și frunze; Verifica
OpenSSL viteză pentru performanța algoritmului pe sistemul dvs.):
sslsplit -Z -s NULL:RC4:AES128 -K frunză.cheie \
-k ca.cheie -c ca.crt -l conecta.log -L / tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
Exemplul original, dar rulează ca un daemon sub user sslsplit și scrierea unui fișier PID:
sslsplit -d -p /var/run/sslsplit.pid -u sslsplit \
-k ca.cheie -c ca.crt -l conecta.log -L / tmp \
https ::1 10443 https 127.0.0.1 10443 \
http ::1 10080 http 127.0.0.1 10080
Pentru a genera o cheie privată CA ca.cheie si certificat ca.crt folosind OpenSSL:
pisică >x509v3ca.cnf <<'EOF'
[ solicitat ]
nume_distins = reqdn
[reqdn]
[v3_ca]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
EOF
OpenSSL genrsa -afară ca.cheie 1024
OpenSSL cer -nou -noduri -x509 -sha1 -afară ca.crt -cheie ca.cheie \
-config x509v3ca.cnf -extensii v3_ca \
-subj '/O=SSLsplit Rădăcină CA/CN=SSLsplit Rădăcină CA/' \
-set_serial 0 -zile 3650
NOTE
SSLsplit este capabil să gestioneze un număr relativ mare de ascultători și conexiuni din cauza a
Arhitectură multithreaded, bazată pe evenimente bazată pe libevent, profitând de platformă
înlocuiri specifice select() cum ar fi kqueue. Firul principal se ocupă de ascultători și
semnalizare, în timp ce un număr de fire de lucru egal cu dublul numărului de nuclee CPU este
utilizat pentru gestionarea conexiunilor reale în baze de evenimente separate, inclusiv CPU-
manipulare intensivă SSL/TLS.
S-a avut grijă să se aleagă structuri de date performante pentru memorarea în cache a certificatelor și
Sesiuni SSL. Înregistrarea este implementată în fire de scriere pe disc separate pentru a se asigura că
Firele de tratare a evenimentelor de socket nu trebuie să se blocheze pe I/O pe disc. Se efectuează căutări DNS
asincron. SSLsplit folosește stocarea în cache a sesiunii SSL la ambele capete pentru a minimiza cantitatea de
strângeri de mână SSL complete, dar chiar și atunci, factorul limitativ în gestionarea conexiunilor SSL sunt
calculele reale de bignum.
Utilizați sslsplit online folosind serviciile onworks.net
