Articles

TLS

Transport Layer Security (TLS) oferă securitate în comunicarea dintre două gazde. Oferă integritate, autentificare și confidențialitate. Este utilizat cel mai frecvent în browserele web, dar poate fi utilizat cu orice protocol care utilizează TCP ca strat de transport. Secure Sockets Layer (SSL) este predecesorul protocolului TLS. Aceste nume sunt adesea folosite interschimbabil, ceea ce poate duce la o oarecare confuzie:

  • o configurație care utilizează protocolul SSL (SSLv2/SSLv3) este nesigură. În schimb, ar trebui utilizat protocolul TLS.

  • certificatele X. 509 pentru autentificare sunt uneori numite și certificate SSL.

  • unele aplicații (cum ar fi e-mailul) utilizează un singur port atât pentru sesiunile necriptate, cât și pentru cele criptate. Pentru a trece de la necriptat la criptat ,se utilizează (START)TLS. Când un singur port utilizează direct protocolul TLS, acesta este adesea denumit SSL.

  • din motive istorice, software-ul (inclusiv Wireshark) se referă la SSL sau SSL / TLS, în timp ce înseamnă de fapt protocolul TLS, deoarece acesta este în prezent ceea ce folosește toată lumea.

dependențe de Protocol

  • TCP: De obicei, TLS folosește TCP ca protocol de transport.

disecția TLS în Wireshark

disectorul TLS este pe deplin funcțional și acceptă chiar funcții avansate, cum ar fi decriptarea TLS, dacă sunt furnizate secrete adecvate (#TLS_Decryption).

de la Wireshark 3.0, disectorul TLS a fost redenumit din SSL în TLS. Utilizarea filtrului de afișare ssl va emite un avertisment.

decriptarea TLS

Wireshark acceptă decriptarea TLS atunci când sunt furnizate secrete adecvate. Cele două metode disponibile sunt:

  • fișier jurnal cheie folosind secrete per sesiune (#Using_the_.28Pre.29-Maestru-Secret).

  • decriptarea folosind o cheie privată RSA.

un fișier jurnal cheie este un mecanism universal care permite întotdeauna decriptarea, chiar dacă este utilizat un schimb de chei Diffie-Hellman (DH). Cheia privată RSA funcționează numai într-un număr limitat de cazuri.

fișierul jurnal cheie este un fișier text generat de aplicații precum Firefox, Chrome și curl atunci când variabila de mediu SSLKEYLOGFILE este setată. Pentru a fi mai precis, biblioteca lor de bază (NSS, OpenSSL sau boringssl) scrie secretele per sesiune necesare într-un fișier. Acest fișier poate fi configurat ulterior în Wireshark (#Using_the_.28Pre.29-Maestru-Secret).

fișierul cheie privată RSA poate fi utilizat numai în următoarele situații:

  • suita de cifrare selectată de server nu utilizează (ce)DHE.
  • versiunea protocolului este SSLv3, (D)TLS 1.0-1.2. Ea nu funcționează cu TLS 1.3.

  • cheia privată se potrivește cu certificatul serverului. Nu funcționează cu certificatul clientului și nici cu certificatul autorității de certificare (ca).

  • sesiunea nu a fost reluată. Strângerea de mână trebuie să includă mesajul de strângere de mână ClientKeyExchange.

fișierul jurnal cheie este în general recomandat, deoarece funcționează în toate cazurile, dar necesită capacitatea continuă de a exporta secretele fie din aplicația client, fie din server. Singurul avantaj al cheii private RSA este că trebuie configurat o singură dată în Wireshark pentru a permite decriptarea, sub rezerva limitărilor de mai sus.

Setări Preferințe

mergeți la editare- > Preferințe. Deschideți Arborele protocoalelor și selectați TLS. Alternativ, selectați un pachet TLS din lista de pachete, faceți clic dreapta pe stratul TLS din vizualizarea detalii pachete și deschideți meniul Preferințe Protocol.

preferințele notabile ale protocolului TLS sunt:

  • (Pre)-Master-Secret log filename (tls.keylog_file): cale pentru a citi fișierul jurnal cheie TLS pentru decriptare.
  • lista de chei RSA: deschide un dialog pentru a configura cheile private RSA pentru decriptare. Depreciat în favoarea preferințelor – > dialog chei RSA.

  • Pre-Shared-Key: folosit pentru a configura cheia de decriptare pentru suitele de cifrare PSK. Nu este utilizat în general.
  • fișier de depanare TLS (tls.debug_logfile): cale pentru a scrie detalii interne despre procesul de decriptare. Va conține rezultatele decriptării și cheile care au fost utilizate în acest proces. Acest lucru poate fi folosit pentru a diagnostica de ce decriptarea eșuează.

următoarele preferințe ale protocolului TCP sunt, de asemenea, necesare pentru a activa decriptarea TLS:

  • permiteți subdissectorului să reasambleze fluxurile TCP. Activat în mod implicit.
  • reasambla segmente out-of-order (de la Wireshark 3.0, dezactivat în mod implicit).

începând cu Wireshark 3.0, un nou dialog chei RSA pot fi găsite la Edit -> Preferințe -> chei RSA. În acest dialog, utilizați Add New keyfile… buton pentru a selecta un fișier. Vi se va solicita o parolă, dacă este necesar. Adăugați un nou simbol… butonul poate fi folosit pentru a adăuga chei de la un HSM care ar putea necesita utilizarea Add new provider… pentru a selecta, selectați un fișier DLL/. so și o configurație suplimentară specifică furnizorului.

fișierul cheie RSA poate fi fie o cheie privată în format PEM, fie un depozit de chei PKCS#12 (de obicei un fișier cu un .pfx sau .extensie p12). Tasta PKCS # 12 este un fișier binar, dar formatul PEM este un fișier text care arată astfel:

  • -----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDReQzlKVeAK8b5TRcRBhSi9IYwHX8Nqc8K4HeDRvN7HiBQQP3bhUkVekdoXpRLYVuc7A8h1BLr93Qw...KOi8FZl+jhG+p8vtpK5ZAIyp-----END PRIVATE KEY-----

dialogul listei de chei RSA depreciate poate fi eliminat la un moment dat. Pentru a configura tastele, utilizați în schimb dialogul RSA keys. Pentru a schimba protocolul pentru datele de rețea decriptate, faceți clic dreapta pe un pachet TLS și utilizați Decode As pentru a schimba protocolul curent pentru portul TLS. Câmpurile Adresă IP și Port sunt neutilizate.

exemplu de fișier de captare

a se vedea, de asemenea, SampleCaptures#SSL_with_decryption_keys.

  • dump.pcapng TLSv1.2 capture cu 73 apartamente cifru, aveți nevoie de acest premaster.fișier txt pentru decriptarea traficului. (legat dehttps://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9144)

  • tls12-dsb.pcapng-TLS 1.2 trace cu chei de decriptare încorporate.
  • https://github.com/wireshark/wireshark/blob/master/test/captures – suita de testare conține diverse urme TLS.

filtru de afișare

o listă completă a câmpurilor filtrului de afișare TLS poate fi găsită în referința filtrului de afișare

afișați numai traficul bazat pe TLS:

  • tls

filtru de captare

nu puteți filtra direct protocoalele TLS în timpul capturării. Cu toate acestea, dacă cunoașteți portul TCP utilizat (Vezi mai sus), puteți filtra pe acesta, de exemplu folosind portul tcp 443.

folosind (Pre)-Master-Secret

master secret permite decriptarea TLS în Wireshark și poate fi furnizată prin fișierul jurnal cheie. Secretul pre-master este rezultatul schimbului de chei și poate fi convertit într-un secret master de Wireshark. Acest secret pre-master poate fi obținut atunci când este furnizată o cheie privată RSA și este utilizat un schimb de chei RSA.

instrucțiuni pas cu pas pentru a decripta traficul TLS din Chrome sau Firefox în Wireshark:

  1. închideți browserul complet (verificați managerul de activități doar pentru a fi sigur).
  2. setați variabila de mediu SSLKEYLOGFILE la calea absolută a unui fișier care poate fi scris.

  3. porniți browserul.
  4. verificați dacă locația de la Pasul 2 este creată.
  5. în Wireshark, accesați Preferințe – > protocoale -> TLS și schimbați preferința (Pre)-Master-Secret log filename la calea de la Pasul 2.

  6. porniți captura Wireshark.
  7. deschideți un site web, de exempluhttps://www.wireshark.org/

  8. verificați dacă datele decriptate sunt vizibile. De exemplu, folosind filtrul tls și (http sau http2).

Pentru Windows, o variabilă de mediu poate fi setată la nivel global așa cum este descris în această prezentare, dar acest lucru nu este recomandat, deoarece este ușor de uitat și poate fi o problemă de securitate, deoarece permite decriptarea întregului trafic TLS. O modalitate mai bună de a seta variabila de mediu este printr-un fișier batch. Creați un fișier start-fx.cmd cu:

  • @echo offset SSLKEYLOGFILE=%USERPROFILE%\Desktop\keylogfile.txtopen firefox

schimbați calea SSLKEYLOGFILE după cum este necesar și înlocuiți firefox cu chrome pentru Google Chrome. Acest mecanism în prezent (2019) nu funcționează pentru Safari, Microsoft Edge și altele, deoarece bibliotecile lor TLS (Microsoft SChannel/Apple SecureTransport) nu acceptă acest mecanism. Acest mecanism funcționează și pentru alte aplicații decât browserele web, dar depinde de Biblioteca TLS utilizată de aplicație.

Exemple de alte aplicații:

  • aplicațiile care utilizează OpenSSL ar putea folosi un GDB sau un truc LD_PRELOAD pentru a extrage secretele. Aceasta include Python.

    • pentru un walkthrough pentru Apache HTTP Server folosind acest libsslkeylog.so biblioteca, vezi acest post.

  • pentru programele Java, secretele pot fi extrase din preferințele jurnalului de depanare TLS sau de ieșire direct în formatul pe care Wireshark îl necesită printr-un agent Java. Două proiecte similare:
    • jSSLKeyLog:http://jsslkeylog.sourceforge.net/

    • extract-TLS-secrets: https://github.com/neykov/extract-tls-secrets
  • scripturile Python pot fi editate pentru a arunca și cheile.

pentru un sondaj al aplicațiilor și Bibliotecilor TLS acceptate, a se vedea, de asemenea, pagina 19 a prezentării UE a lui Peter Wu SSL / TLS Decryption sharkfest’18.

încorporarea secretelor de decriptare într-un fișier pcapng

de la Wireshark 3.0 puteți încorpora fișierul jurnal cheie TLS într-un fișier pcapng. Acest lucru face mult mai ușor să distribuiți fișiere de captare cu secrete de decriptare și facilitează comutarea între fișierele de captare, deoarece preferința protocolului TLS nu trebuie actualizată. Pentru a adăuga conținutul cheilor de fișiere jurnal cheie.txt pentru a captura fișierul în.pcap și scrieți rezultatul la out-dsb.pcapng:

  • editcap –injectați-secrete tls,chei.txt în.pcap out-dsb.pcapng

sufixul dsb reprezintă blocul secretelor de decriptare (DSB) și face parte din specificația pcapng.

un fișier jurnal de chei poate conține chei care nu sunt legate de un fișier de captură. Pentru a vă asigura că cheile inutile nu sunt scurgeri, puteți utiliza inject-tls-secrets.py script de la https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 pentru a filtra fișierul jurnal cheie și adăugați secretele necesare într-un fișier de captare. Scriptul shell a fost testat cu Linux și macOS, dar o versiune Python 3 este disponibilă și pentru toate platformele, inclusiv Windows. Exemplu:

  • git clone https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 ~/its~/its/inject-tls-secrets.py keys.txt some.pcap

Vezi și

alte protocoale sunt derivate din TLS. Aceasta include:

  • DTLS se bazează pe standardul TLS și rulează pe UDP ca protocol de transport.

  • QUIC este un protocol în dezvoltare care utilizează TLS pentru criptarea sa, starea Wireshark poate fi urmărită la https://github.com/quicwg/base-drafts/wiki/Tools#wireshark.

  • https://en.wikipedia.org/wiki/Transport_Layer_Security articol Wikipedia pentru TLS

  • https://sharkfesteurope.wireshark.org/assets/presentations16eu/07.pdf sharkfest’16 prezentare UE de Sake Blok pe Depanare SSL cu Wireshark/Tshark (sau viziona video de prezentare la https://youtu.be/oDaDY9QCnXk)

  • https://lekensteyn.nl/files/wireshark-ssl-tls-decryption-secrets-sharkfest18eu.pdf sharkfest’18 prezentare UE de Peter Wu despre decriptarea TLS (video pentru o discuție anterioară în Asia la https://youtu.be/bwJEBwgoeBg)

  • https://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19us.pdf sharkfest’19 prezentarea SUA de Peter Wu descriind decriptarea TLS și utilizarea decriptării încorporate secrete (https://youtu.be/Ha4SLHceF6w).

  • cum funcționează SSL / TLS? – Securitatea informațiilor Stack Exchange

  • Keyless SSL: detaliile tehnice nitty curajos, cu o bună introducere în TLS

  • PolarProxy de la Netresec este un proxy SSL/TLS transparent creat pentru respondenții la incidente și cercetătorii malware, care este conceput în primul rând pentru a intercepta și decripta traficul criptat TLS din malware. PolarProxy decriptează și re-Criptează traficul TLS, salvând în același timp traficul decriptat într-un fișier PCAP care poate fi încărcat în Wireshark sau într-un sistem de detectare a intruziunilor (IDS).

  • Categoriehowto

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *