Cum să decriptați SSL cu Wireshark – Ghid de decriptare HTTPS
Dacă ați încercat vreodată să utilizați Wireshark pentru a monitoriza traficul web, probabil că ați întâmpinat o problemă - o mare parte sunt transmisii criptate. De fapt, majoritatea site-urilor folosesc criptarea SSL sau Transport Layer Security (TLS) pentru a-și menține utilizatorii în siguranță.
Criptarea omniprezentă este un lucru bun dacă faceți cumpărături pe Amazon, dar este o adevărată durere atunci când încercați să administrați o rețea. Iată cum decriptez SSL cu Wireshark.
În această postare acoperim:
- Ce sunt criptarea Wireshark și SSL?
- Utilizarea unei chei secrete pre-master pentru a decripta SSL și TLS
- Utilizarea unei chei RSA pentru a decripta SSL
- Cum Wireshark facilitează decriptarea traficului SSL
- Întrebări frecvente SSL Wireshark Decrypt
Ce sunt criptarea Wireshark și SSL?
Wireshark este un analizor de trafic de rețea ; este un utilitar de bază pe care mulți administratori îl folosesc pentru a depana problemele din rețelele lor. Mai exact, captează cadre - blocurile de bază ale pachetelor - și vă permite să le sortați și să le analizați.
Folosind Wireshark, puteți să vă uitați la traficul care circulă prin rețea și să-l disecați, obținând o privire în interiorul cadrelor la datele brute.
SSL este un protocol de criptare care operează pe stratul Transport al modelului OSI. Folosește diferite metode de criptare pentru a securiza datele pe măsură ce se deplasează prin rețele. Notă: În acest ghid, mă voi referi în principal la SSL ca termen general pentru SSL și TLS, succesorul său.
Criptarea SSL face ca utilizarea Wireshark să fie mai dificilă, deoarece împiedică administratorii să vadă datele pe care le transportă fiecare pachet relevant. Când Wireshark este configurat corect, poate decripta SSL și vă poate restabili capacitatea de a vizualiza datele brute.
Vezi si: Wireshark Alternative pentru sniffing de pachete
Utilizarea unei chei secrete pre-master pentru a decripta SSL și TLS
Folosind un cheie secretă pre-master decriptarea SSL în Wireshark este metoda recomandată.
A cheie secretă pre-master este generat de client și utilizat de server pentru a obține o cheie principală care criptează traficul de sesiune. Este standardul actual în criptografie și este de obicei implementat prin intermediul Diffie-Hellman .
Browserul dvs. poate fi făcut să înregistreze cheia secretă pre-master, pe care Wireshark o folosește pentru a decripta sesiunile SSL și TLS.
Iată pașii pentru decriptarea SSL și TLS cu o cheie secretă pre-master:
- Setați o variabilă de mediu
- Lansați browserul
- Configurați Wireshark
- Capturați și decriptați cheile de sesiune
Când ați terminat, veți putea decripta sesiunile SSL și TLS în Wireshark fără a avea nevoie de acces la serverul țintă.
Setați o variabilă de mediu Windows
În sisteme Windows , va trebui să setați o variabilă de mediu folosind Setari de sistem avansate utilitate. Această variabilă, numită SSLKEYLOGFILE , conține o cale în care sunt stocate cheile secrete pre-master.
Începeți făcând clic dreapta pe Calculatorul meu , și selectând Proprietăți din meniu. The Sistem se va deschide meniul.
Apoi, faceți clic Setari de sistem avansate pe lista din stânga. The Proprietatile sistemului se va deschide fereastra.
Pe Avansat fila, faceți clic pe variabile de mediu buton.
Apasă pe Nou… butonul de sub Variabile utilizator . De asemenea, puteți crea variabila sub Variabile de sistem dacă doriți să înregistrați cheile SSL pentru fiecare utilizator din sistem, dar prefer să le păstrez limitat la profilul meu.
Sub Nume variabilă , tastați următoarele:
|_+_|În Valoare variabilă câmp, tastați o cale către fișierul jurnal. De asemenea, puteți face clic pe Răsfoiți fișierul... butonul și specificați calea utilizând selectorul de fișiere.
Ca o notă, dacă o creați ca o variabilă de mediu la nivel de sistem, va trebui să utilizați metacaracterele corespunzătoare sau să stocați fișierul într-un loc accesibil de către toți utilizatorii. De exemplu, ați putea alege %USERPROFILE%App Datassl-keys.log sau C:ssl-keys.log .
După ce ați terminat, faceți clic Bine și treceți la următorul set de pași.
Setați o variabilă de mediu Linux sau Mac
În Linux și Mac , va trebui să setați SSLKEYLOGFILE variabila de mediu folosind nano . În Linux , variabila este stocată în ~/.bashrc . Pe Mac , veți crea variabila în fișier ~/.MacOSX/mediu
Deschideți un terminal și utilizați această comandă în Linux :
|_+_|Deschis Platforma de lansare , faceți clic Alte și lansați un terminal către rulați această comandă în Mac OSX :
|_+_|Următorii pași sunt aceiași pentru ambele sisteme de operare.
La sfârșitul fișierului, adăugați această linie:
|_+_|presa Ctrl+X,Y pentru a vă salva modificările.
Închideți fereastra terminalului și deschideți alta pentru a seta variabila, apoi tastați următoarele pentru a confirma că a fost setată cu succes:
|_+_|După ce executați comanda, ar trebui să vedeți rezultate similare cu imaginea de mai sus. /Utilizatori/comparitech/.ssl-key.log este calea completă către jurnalul meu SSL pre-master key. Notă: veți dori să notați a dvs., care va fi diferită, pentru a intra în Wireshark.
Acum că variabila a fost setată, puteți trece la următorul set de pași.
Lansați browserul și verificați fișierul jurnal
Înainte de a lansa Wireshark și de a-l configura să decripteze SSL utilizând o cheie pre-master, ar trebui să porniți browserul și să confirmați că este utilizat fișierul jurnal.
Pentru a completa jurnalul, este important să vizitați un site care are SSL activat. Folosesc propriul meu server Apache pentru testare, dar orice site va funcționa. Unul dintre cele mai mari beneficii ale utilizării unei chei partajate pre-master este nu aveți nevoie de acces la server pentru a decripta SSL.
După ce ați vizitat un site web compatibil SSL, verificați fișierul pentru date. În Windows , poți să folosești Blocnotes . În Linux sau Mac , utilizați următoarea comandă:
|_+_|Pe orice sistem de operare, fișierul dvs. ar trebui să arate ca al meu mai sus. După ce ați confirmat că browserul dvs. înregistrează chei pre-master în locația pe care ați selectat-o, puteți configura Wireshark să folosească acele chei pentru a decripta SSL.
Configurați Wireshark pentru a decripta SSL
Odată ce browserul dvs. înregistrează cheile pre-master, este timpul să configurați Wireshark să folosească acele jurnale pentru a decripta SSL.
Deschideți Wireshark și faceți clic Editați | × , apoi Preferințe . The Preferințe se va deschide dialogul, iar în stânga, veți vedea o listă de elemente. Extinde Protocoale , derulați în jos, apoi faceți clic SSL .
În lista de opțiuni pentru protocolul SSL, veți vedea o intrare pentru (Pre)-Master-Secret nume fișier jurnal . Navigați la fișierul jurnal pe care l-ați configurat la pasul anterior sau doar lipiți calea.
Când ați terminat de setat (Pre)-Master-Secret nume fișier jurnal , faceți clic Bine și întoarce-te la Wireshark. Ești gata să mergi mai departe.
În legătură cu o postare: Cum se folosește Wireshark
Capturați sesiunea și decriptați SSL
Pasul final este să capturați o sesiune de testare și să vă asigurați că Wireshark decriptează SSL cu succes.
- Porniți o sesiune de captură nefiltrată, minimizați-o și deschideți browserul.
- Vizitați un site securizat pentru a genera date și, opțional, setați un filtru de afișare de „ssl” pentru a minimiza zgomotul sesiunii.
- Faceți clic pe orice cadru care conține date criptate.
În cazul meu, voi selecta unul care conține trafic HTTP cu codare text/HTML, deoarece aș dori să văd codul sursă pe care serverul web îl trimite browserului meu. Dar orice transmisii criptate care folosesc o cheie secretă pre-master sau o cheie privată vor funcționa cu această metodă. Acestea includ toate datele care utilizează Perfect Forward Encryption (PFE) prin Diffie-Hellman sau schimburi de chei comparabile.
După ce ați selectat un cadru de date criptat, uitați-vă la Vizualizare octet pachet , și în special filele de sub vizualizare. Ar trebui să vedeți o intrare pentru SSL decriptat date, printre altele.
Veți observa că sesiunea mea încă arată ca fiind plină de gunoi și nu este vizibil niciun HTML. Asta pentru că serverul meu web (și majoritatea serverelor Apache) folosesc implicit compresia GZIP.
Când faceți clic pe Corpul entității necomprimat fila, care apare doar în acest caz cu decriptarea SSL activată, puteți vizualiza codul sursă al site-ului. De exemplu, iată elementul de titlu al paginii implicite Apache în text simplu.
Utilizarea unei chei RSA pentru a decripta SSL
Poate ați observat mai devreme că Wireshark are un câmp care vă permite să încărcați cheile RSA și să le folosiți pentru a decripta SSL. In practica, Decriptarea cheii RSA este depreciată .
Motivul pentru care decriptarea SSL cu o cheie RSA nu mai este folosită în mod obișnuit este că Perfect Forward Encryption (PFE) l-a făcut depășit. Sesiunile negociate cu Diffie-Hellman nu folosesc direct cheia RSA; în schimb, generează o cheie unică, stocată doar în RAM, care este criptată folosind cheia de pe disc.
Dacă ați folosit anterior o cheie RSA pentru a decoda traficul și a încetat să funcționeze, puteți confirma că mașina țintă utilizează schimburi Diffie-Hellman, activând înregistrarea SSL.
Pentru a activa înregistrarea, faceți clic Editați | × din meniul barei de instrumente și selectați Preferințe . Extindeți Protocoale element de meniu din stânga și derulați în jos la SSL . De aici, puteți face clic pe Naviga butonul și setați locația jurnalului dvs. SSL.
Odată ce locația este setată, toate interacțiunile SSL vor fi înregistrate în fișierul specificat.
Capturați o sesiune cu gazda dvs. activată pentru SSL, apoi verificați jurnalele. Mai exact, ar trebui să derulați până când găsiți cadrul pe care a fost negociat strângerea de mână TLS. Este probabil să vedeți o intrare DHE revelatoare în șirul de cifrare.
Asta înseamnă că schimburile de chei Diffie-Hellman sunt activate. În cazul meu, Apache folosește în mod specific Diffie-Hellman cu chei cu curbă eliptică, care este notat cu șirul CHIAR .
Derulați puțin mai departe și probabil veți vedea că secretul principal nu poate fi găsit.
Dacă jurnalele dvs. arată așa și nu puteți decripta datele folosind o cheie RSA, nu aveți de ales decât să treceți la metoda secretă pre-master de mai sus.
Deoarece PFE devine o practică standard, cu TLSv1.3 probabil forțează problema , decriptarea simplă a cheii RSA este depreciată și nu ar trebui utilizată.
Wireshark facilitează decriptarea traficului SSL
Îmi place foarte mult modul în care Wireshark gestionează procesul de decriptare SSL. Criptografia este complicată, iar standardele se schimbă constant pentru a fi mai sigure. Dar odată ce Wireshark și mediul dvs. sunt configurate corect, tot ce trebuie să faceți este să schimbați filele pentru a vizualiza datele decriptate. Nu devine mai ușor decât atât.
Legate de: Remediați problema Common WireShark Startup „nu au fost găsite interfețe”.
Întrebări frecvente SSL Wireshark Decrypt s
Cum citesc pachetele TLS în Wireshark?
Urmați acești pași pentru a citi pachetele TLS în Wireshark:
- Începeți o sesiune de captură de pachete în Wireshark.
- În bara de meniu de sus, faceți clic pe Editați | × , apoi selectați Preferințe din meniul derulant.
- În fereastra Preferințe, extindeți Protocoale nodul din arborele de meniu din stânga.
- Faceți clic pe SSL. Panoul principal al ferestrei va afișa setările de protocol.
- Introduceți un nume de fișier și selectați o locație pentru Fișier de depanare SSL .
- Faceți clic pe Lista cheilor RSA și apoi selectați Editați | × și apoi Nou .
- Completați câmpurile de informații din fereastra pop-up: adresa IP , Port , Protocol (care va fi HTTPS), Fișier cheie , și Parola . presa Bine .
- Clic Bine în ecranul Preferințe.
Câmpul de date din partea de jos a paginii principale Wireshark va afișa conținutul decriptat al pachetului.
Cum funcționează o strângere de mână SSL bidirecțională?
Handshake-ul SSL bidirecțional autentifică atât serverul, cât și clientul. Iată pașii care se efectuează în acest proces:
- Client salut : trimis de la client la server și include suitele de cifrare acceptate și compatibilitatea versiunii TLS.
- Salutare server : trimis de la server la client ca răspuns. Conține un link către certificatul public al serverului și o solicitare pentru același înapoi de la client.
- Browserul validează certificatul de server și, dacă totul este OK, trimite un link către propriul certificat.
- Serverul verifică certificatul clientului. Dacă totul este în regulă, stabilirea sesiunii continuă.
Este posibil să decriptați traficul SSL/TLS sniffed pasiv?
Da. Cu toate acestea, veți avea întotdeauna nevoie de cheia RSA pentru a decripta traficul. Acest lucru ar putea fi obținut prin metode legitime și cu permisiunea sau ar putea fi păcălit din sursa traficului printr-o strategie „om la mijloc”.