Dacă ați încercat vreodată să utilizați Wireshark pentru a monitoriza traficul web, probabil că ați întâmpinat o problemă – multe dintre acestea sunt criptate. De fapt, majoritatea site-urilor utilizează criptarea SSL sau 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 durere reală când încercați să administrați o rețea. Iată cum decriptez SSL cu Wireshark.
Ce sunt Wireshark și SSL?
Wireshark este un analizator de trafic de rețea; este o utilitate de bază pe care mulți administratori o folosesc pentru rezolvarea problemelor din rețelele lor. Mai precis, captează cadre – blocurile de construcție ale pachetelor – și vă permite să le sortați și să le analizați. Folosind Wireshark, puteți privi traficul care curge prin rețeaua dvs. și să îl disecți, obținând o privire în cadrul cadrelor la datele brute.
SSL este un protocol de criptare care funcționează pe stratul Transport al modelului OSI. Utilizează diferite metode de criptare pentru a securiza date pe măsură ce se deplasează prin rețele. Notă: În acest ghid, mă voi referi mai ales la SSL ca termen catchall pentru SSL și TLS, succesorul său.
Criptarea SSL face utilizarea Wireshark mai dificilă deoarece împiedică administratorii să vadă datele pe care le poartă fiecare pachet. Când Wireshark este configurat corect, poate decripta SSL și vă poate restabili capacitatea de a vizualiza datele brute.
Utilizarea unei chei secrete pre-master pentru a decripta SSL și TLS
Utilizarea unei chei secrete pre-master pentru a decripta 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 master care criptează traficul de sesiune. Este standardul actual în criptografie și este de obicei implementat prin Diffie-Hellman.
Browserul dvs. poate fi creat pentru a înregistra 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 ședința
După ce 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 ferestre, va trebui să setați o variabilă de mediu folosind funcția Setari de sistem avansate utilitate. Această variabilă, denumită SSLKEYLOGFILE, conține o cale în care sunt stocate cheile secrete pre-master.
Începeți făcând clic dreapta pe Calculatorul meu, și selectarea Proprietăți din meniu. Sistem meniul se va deschide.
Apoi, faceți clic pe Setari de sistem avansate pe lista din stânga. Proprietatile sistemului se va deschide fereastra.
Pe Avansat faceți clic pe fila variabile de mediu buton.
Apasă pe Nou… buton sub Variabilele de utilizator. Puteți crea, de asemenea, variabila sub Variabile de sistem dacă doriți să vă conectați cheile SSL pentru fiecare utilizator din sistem, dar prefer să îl limitez la profilul meu.
Sub Denumirea variabilă, introduceți următoarele:
SSLKEYLOGFILE
În Valoare variabilă câmp, tastați o cale către fișierul jurnal. Puteți, de asemenea, faceți clic pe butonul Căutați fișierul … buton și specificați calea folosind selectorul de fișiere.
Ca o notă, dacă creați aceasta ca o variabilă a mediului la nivel de sistem, va trebui să utilizați wildcard-uri adecvate sau să păstrați fișierul într-un loc accesibil de toți utilizatorii. De exemplu, puteți alege % USERPROFILE% \ App Data \ ssl-keys.log sau C: \ ssl-keys.log.
După ce ați terminat, dați clic pe O.K ș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 variabilă 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 folosiți această comandă în Linux:
nano ~ / .bashrc
Deschis Platforma de lansare, clic Alte, și lansează un terminal către executați această comandă în Mac OSX:
nano ~ / .bash_profile
Următorii pași sunt identici pentru ambele sisteme de operare.
La sfârșitul fișierului, adăugați această linie:
export SSLKEYLOGFILE = ~ / .ssl-key.log
presa Ctrl + X, Y pentru a salva modificările.
Închideți fereastra terminalului și deschideți o altă pentru a seta variabila, apoi tastați următoarele pentru a confirma că a fost setată cu succes:
ecou $ SSLKEYLOGFILE
După ce executați comanda, ar trebui să vedeți o ieșire similară cu imaginea de mai sus. /Users/comparitech/.ssl-key.log este calea completă către jurnalul meu de cheie pre-master SSL. Notă: veți dori să faceți o notă 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 pentru a decripta SSL folosind o cheie pre-master, ar trebui să porniți browserul și să confirmați că fișierul jurnal este utilizat.
Pentru a adăuga jurnalul, este important să accesați un site care are SSL activat. Îmi folosesc propriul server Apache pentru testare, dar orice site va funcționa. Unul dintre cele mai mari avantaje 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 accesat un site web cu SSL, verificați fișierul pentru date. În ferestre, poți să folosești Notepad. În Linux sau Mac, utilizați următoarea comandă:
cat ~ / .ssl-log.key
Pe orice sistem de operare, fișierul dvs. ar trebui să arate ca al meu, de mai sus. După ce ați confirmat că browserul dvs. înregistrează cheile pre-master în locația selectată, puteți configura Wireshark pentru a utiliza aceste taste pentru a decripta SSL.
Configurați Wireshark pentru a decripta SSL
După ce browserul dvs. înregistrează cheile de pre-master, este timpul să configurați Wireshark pentru a utiliza aceste jurnaluri pentru a decripta SSL.
Deschideți Wireshark și faceți clic pe Editați | ×, apoi Preferințe. Preferințe dialogul se va deschide, iar în partea stângă, veți vedea o listă de elemente. Extinde Protocoale, derulați în jos, apoi faceți clic pe SSL.
În lista de opțiuni pentru protocolul SSL, veți vedea o intrare pentru (Pre) -Master-Secret nume de fișier de jurnal. Răsfoiți la fișierul jurnal pe care l-ați configurat în pasul anterior sau pur și simplu lipiți calea.
După ce ați terminat setarea (Pre) -Master-Secret nume de fișier de jurnal, clic O.K și întoarce-te la Wireshark. Sunteți gata să continuați.
Capturați sesiunea și decriptați SSL
Ultimul pas este să surprindeți o sesiune de test și să vă asigurați că Wireshark decriptează SSL cu succes.
- Începeți o sesiune de captură nefiltrată, minimizați-o și deschideți browserul.
- Accesați un site securizat pentru a genera date și setați opțional un filtru de afișare de „ssl” pentru a reduce zgomotul de sesiune.
- Faceți clic pe orice cadru care conține date criptate.
În cazul meu, voi alege 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 trafic criptat care utilizează o cheie secretă pre-master va funcționa cu această metodă. Aceasta include toate datele care utilizează Perfect Forward Encryption (PFE) prin Diffie-Hellman sau schimburi cheie comparabile.
După ce ai selectat un cadru criptat, uită-te la Vizualizare byte pachet, și, în mod 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ă că este plină de gunoi și nu este vizibil HTML. Acest lucru se datorează faptului că serverul meu web (și majoritatea serverelor Apache) folosesc în mod implicit compresia GZIP.
Când faceți clic pe butonul Corpul entității necomprimate fila, care apare în acest caz numai cu decriptarea SSL activată, puteți vedea codul sursă al site-ului. De exemplu, iată elementul de titlu al paginii implicite Apache din textul limpede.
Folosind o cheie RSA pentru a decripta SSL
Este posibil să fi observat mai devreme că Wireshark are un câmp care vă permite să încărcați cheile RSA și să le utilizați pentru a decripta SSL. In practica, Decriptarea cheii RSA este depășită.
Motivul pentru care decriptați SSL cu o cheie RSA nu mai este utilizat în mod uzual este Perfect Encryption Forward Encryption (PFE), care a făcut-o învechită. 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ă anterior utilizați o cheie RSA pentru a decodifica traficul și a încetat să funcționeze, puteți confirma că mașina țintă utilizează schimburi Diffie-Hellman activând jurnalul SSL.
Pentru a activa jurnalul, faceți clic pe 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 SSL. De aici, puteți face clic pe butonul Naviga buton ș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 activată SSL, apoi verificați jurnalele. Mai exact, ar trebui să derulați până găsiți cadrul pe care a fost negociată strângerea de mână TLS. Probabil că veți vedea o intrare DHE în cartea de scriere cu cifre.
Aceasta înseamnă că schimburile de chei Diffie-Hellman sunt activate. În cazul meu, Apache folosește în mod specific Diffie-Hellman cu taste curbe eliptice, ceea ce este notat de șirul ECDHE.
Parcurgeți un pic mai departe și este posibil să vedeți că secretul principal nu poate fi găsit.
Dacă jurnalele dvs. arată așa și nu puteți decripta traficul folosind o cheie RSA, nu aveți de ales decât să treceți la metoda secretă pre-master de mai sus.
Întrucât PFE devine o practică standard, TLSv1.3 forțând probabil problema, o simplă decriptare a cheii RSA este depășită și nu trebuie utilizată.
Wireshark simplifică decriptarea traficului SSL
Îmi place foarte mult modul în care Wireshark gestionează decriptarea SSL. Criptografia este complicată, iar standardele sunt în continuă schimbare 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 este mai ușor decât atât.