Ako ste ikada pokušali koristiti Wireshark za nadzor web prometa, vjerovatno ste naišli na problem – veliki dio je šifriran. U stvari, većina web-mjesta koristi SSL ili TLS enkripciju kako bi zaštitili svoje korisnike. Sveprisutna enkripcija dobra je stvar ako kupujete na Amazonu, ali pravi je bol pri pokušaju administriranja mreže. Evo kako dešifriram SSL pomoću Wiresharka.
Što su Wireshark i SSL?
Wireshark je a analizator mrežnog prometa; to je osnovni uslužni program koji mnogi administratori koriste za rješavanje problema na svojim mrežama. Konkretno, on bilježi okvire – građevinske blokove paketa – i omogućuje vam da ih sortirate i analizirate. Pomoću Wireshark-a možete pogledati promet koji teče vašom mrežom i rastaviti ga, zaviriti u okvire na neobrađene podatke.
SSL je protokol šifriranja koji djeluje na transportnom sloju OSI modela. Koristi razne metode šifriranja za zaštitu podataka tijekom kretanja po mrežama. Napomena: U ovom ćemo se vodiču uglavnom odnositi na SSL kao pretpostavljeni termin za SSL i TLS, njegov nasljednik..
SSL šifriranje čini korištenje Wiresharka izazovnijim jer sprječava administratore da pregledaju podatke koje svaki paket nosi. Kad se Wireshark pravilno postavi, on može dešifrirati SSL i vratiti vašu sposobnost pregledavanja neobrađenih podataka.
Pomoću tajnog ključa prije master-a za dešifriranje SSL-a i TLS-a
Upotreba tajnog ključa prije master-a za dešifriranje SSL-a u Wiresharku je preporučena metoda. tajni ključ generira klijent i poslužitelj ga koristi za dobivanje glavnog ključa koji šifrira sesijski promet. To je trenutni standard u kriptografiji i obično se provodi kroz Diffie-Hellman.
Vaš preglednik može omogućiti evidentiranje tajni ključ prije master koji Wireshark koristi za dešifriranje SSL i TLS sesija.
Evo koraka za dešifriranje SSL-a i TLS-a s tajnim ključem prije master-a:
- Postavite varijablu okruženja
- Pokrenite svoj preglednik
- Konfigurirajte Wireshark
- Snimite i dešifrirajte sesiju
Kada završite, moći ćete dešifrirati SSL i TLS sesije u Wiresharku bez potrebe za pristupom ciljnom poslužitelju..
Postavljanje varijable Windows okruženja
U Windows, morat ćete postaviti varijablu okruženja pomoću Napredne postavke sistema korisnost. Ova varijabla, imenovana SSLKEYLOGFILE, sadrži put na kojem su pohranjeni tajni ključevi pred-master.
Započnite desnim klikom na Moje računalo, i odabir Svojstva s izbornika. Sustav otvorit će se izbornik.
Zatim kliknite Napredne postavke sistema na popisu s lijeve strane. Svojstva sustava otvorit će se prozor.
Na Napredna kliknite karticu Okolišne varijable dugme.
Kliknite gumb Novi… gumb ispod Korisničke varijable. Također možete stvoriti varijablu ispod Varijable sustava ako želite zapisati SSL ključeve za svakog korisnika u sustavu, ali radije bih ga držao ograničenim na svoj profil.
Pod, ispod Naziv varijable, upišite sljedeće:
SSLKEYLOGFILE
U Promjenjiva vrijednost upišite put do datoteke dnevnika. Također možete kliknuti ikonu Pregledaj datoteku … gumb i odredite put pomoću alata za odabir datoteka.
Kao napomenu, ako ovo stvarate kao varijablu okruženja u cijelom sustavu, morat ćete upotrijebiti odgovarajuće zamjenske znakove ili pohraniti datoteku na mjesto dostupno svim korisnicima. Na primjer, možete odabrati % USERPROFILE% \ Podaci podataka \ ssl-keys.log ili C: \ SSL-keys.log.
Nakon što završite, kliknite u redu i prijeđite na sljedeći skup koraka.
Postavljanje varijable okoline za Linux ili Mac
U Linux i ortak, morat ćete postaviti SSLKEYLOGFILE koristeći varijablu okoline nano. U Linux, varijabla je pohranjena u ~ / .Bashrc. Na ortak, napravit ćete varijablu u datoteci ~ / .MacOSX / okolina.
Otvorite terminal i koristite ovu naredbu u Linuxu:
nano ~ / .bashrc
Otvoren lansirna, klik drugo, i pokrenuti terminal za pokrenite ovu naredbu u Mac OSX-u:
nano ~ / .bash_profile
Sljedeći su koraci isti za oba operativna sustava.
Na kraju datoteke dodajte ovaj redak:
izvoz SSLKEYLOGFILE = ~ / .ssl-key.log
tisak Ctrl + X, Y da biste spremili promjene.
Zatvorite prozor terminala i otvorite drugi za postavljanje varijable, a zatim upišite sljedeće da biste potvrdili da je uspješno postavljena:
echo $ SSLKEYLOGFILE
Nakon što izvršite naredbu, trebali biste vidjeti izlaz sličan gornjoj slici. /Users/comparitech/.ssl-key.log puni je put do mog SSL dnevnika pred-master ključeva. Napomena: U Wireshark ćete htjeti upisati svoju bilješku, koja će biti drugačija.
Sada kada je varijabla postavljena, možete prijeći na sljedeći skup koraka.
Pokrenite preglednik i provjerite ima li datoteka zapisa
Prije nego što pokrenete Wireshark i konfigurirate ga za dešifriranje SSL-a pomoću pred-master ključa, trebali biste pokrenuti preglednik i potvrditi da se datoteka dnevnika koristi.
Da biste popunili dnevnik, važno je da posjetite web mjesto s omogućenim SSL-om. Koristim vlastiti Apache server za testiranje, ali bilo koja web lokacija će raditi. Jedna od najvećih prednosti korištenja zajedničkog ključa prije master-a je ne treba vam pristup poslužitelju za dešifriranje SSL-a.
Nakon što ste posjetili web-lokaciju s omogućenom SSL-om, provjerite datoteku za podatke. U Windows, možeš koristiti blokčić za bilješke. U Linux ili ortak, koristite sljedeću naredbu:
mačka ~ / .ssl-log.key
U bilo kojem operacijskom sustavu vaša bi datoteka trebala izgledati kao moja gore. Nakon što potvrdite da vaš preglednik bilježi pred-glavne ključeve na odabranoj lokaciji, možete konfigurirati Wireshark da koristi te ključeve za dešifriranje SSL-a.
Konfigurirajte Wireshark za dešifriranje SSL-a
Jednom kada vaš preglednik bilježi pred-glavne ključeve, vrijeme je da konfigurirate Wireshark za upotrebu tih zapisa za dešifriranje SSL-a.
Otvorite Wireshark i kliknite Uredi, zatim Postavke. Postavke otvorit će se dijaloški okvir, a na lijevoj strani vidjet ćete popis stavki. Proširiti protokoli, pomaknite se prema dolje, a zatim kliknite SSL.
Na popisu opcija za SSL protokol vidjet ćete unos za (Pre) -Master-Secret zapis datoteke. Dođite do datoteke dnevnika koju ste postavili u prethodnom koraku ili jednostavno zalijepite put.
Kada završite postavljanje (Pre) -Master-Secret zapis datoteke, klik u redu i povratak u Wireshark. Spremni ste za početak.
Snimite sesiju i dešifrirajte SSL
Posljednji korak je snimanje testne sesije i provjerite je li Wireshark uspješno dešifrirao SSL.
- Započnite nefiltriranu sesiju hvatanja, umanjite je i otvorite preglednik.
- Posjetite sigurnu web lokaciju kako biste generirali podatke i opcionalno postavili filtar za prikaz ‘ssl’ da biste smanjili šum sesije.
- Kliknite bilo koji okvir koji sadrži šifrirane podatke.
U mom slučaju odabrat ću onaj koji sadrži HTTP promet s kodiranjem teksta / HTML-a, jer bih želio vidjeti izvorni kôd koji web poslužitelj šalje mom pregledniku. Ali svaki šifrirani promet koji koristi tajni ključ prije gospodara funkcionirat će s ovom metodom. To uključuje sve podatke koji koriste Perfect Forward Encryption (PFE) putem Diffie-Hellmana ili slične razmjene ključeva..
Nakon što odaberete šifrirani okvir, pogledajte Paketni bajt pogled, a posebno kartice ispod pogleda. Trebali biste vidjeti unos za Dešifrirani SSL podaci, među ostalim.
Primijetit ćete da moja sesija i dalje izgleda kao da je puna smeća, a ne vidi se HTML. To je zato što moj web poslužitelj (i većina poslužitelja Apache) koristi GZIP kompresiju prema zadanim postavkama.
Kada kliknete na Nekomprimirano tijelo entiteta na kartici koja se u ovom slučaju prikazuje samo uz omogućeno SSL dešifriranje, možete vidjeti izvorni kôd web lokacije. Na primjer, ovdje je naslovni element zadane stranice Apache u otvorenom tekstu.
Korištenjem RSA ključa za dešifriranje SSL-a
Možda ste primijetili ranije da Wireshark ima polje koje vam omogućuje prijenos svojih RSA ključeva i njihovo korištenje za dešifriranje SSL-a. U praksi, Dešifriranje RSA ključa je zastarjelo.
Razlog zbog kojeg se dešifriranje SSL-a s RSA ključem više ne upotrebljava je Perfect Forward Encryption (PFE) zbog kojeg je zastario. Sjednice dogovorene s Diffie-Hellmanom ne koriste RSA ključ izravno; umjesto toga generiraju jednokratni ključ, pohranjen samo u RAM-u, koji se šifrira pomoću ključa na disku.
Ako ste prethodno koristili RSA ključ za dekodiranje prometa, a prestao je raditi, možete potvrditi da ciljni stroj koristi Diffie-Hellman razmjene omogućavanjem SSL evidentiranja.
Da biste uključili zapisnik, kliknite Uredi s izbornika na alatnoj traci i odaberite Postavke. Proširite protokoli stavku izbornika slijeva i pomaknite se prema dolje SSL. Odavde možete kliknuti na pretraživati gumb i postavite lokaciju vašeg SSL zapisnika.
Nakon što je lokacija postavljena, sve SSL interakcije bit će zabilježene u navedenoj datoteci.
Snimite sesiju s vašim SSL-om, a zatim provjerite zapisnike. Pomaknite se dok ne pronađete okvir s kojim su dogovoreni rukovanje TLS-om. Vjerojatno je da ćete u nizu šifri vidjeti unos informativnog DHE-a.
To znači da je omogućena razmjena ključeva Diffie-Hellman. U mom slučaju Apache posebno koristi Diffie-Hellman s tipkama eliptične krivulje, što je označeno nizom ECDHE.
Pomaknite se malo dalje i vjerojatno ćete vidjeti da glavnu tajnu nije moguće pronaći.
Ako vaši dnevnici izgledaju tako i ne možete dešifrirati promet pomoću RSA ključa, nemate drugog izbora nego prijeći na gornju tajnu metodu pre-master.
Budući da PFE postaje standardna praksa, a TLSv1.3 vjerojatno nameće problem, jednostavno dešifriranje RSA ključa je zastarjelo i ne bi se trebalo koristiti.
Wireshark olakšava dešifriranje SSL prometa
Jako mi se sviđa način na koji Wireshark postupa s SSL dešifriranjem. Kriptografija je komplicirana, a standardi se neprestano mijenjaju kako bi bili sigurniji. Ali nakon što se Wireshark i vaše okruženje pravilno postave, sve što trebate učiniti je promijeniti karticu za pregled dešifriranih podataka. Ne može biti lakše od toga.