Articles

TLS

Transport Layer Security (TLS) poskytuje zabezpečení v komunikaci mezi dvěma hostiteli. Poskytuje integritu, autentizaci a důvěrnost. Používá se nejčastěji ve webových prohlížečích, ale může být použit s jakýmkoli protokolem, který používá TCP jako transportní vrstvu.

Secure Sockets Layer (SSL) je předchůdcem protokolu TLS. Tyto názvy se často používají zaměnitelně, což může vést k určitému zmatku:

  • konfigurace, která používá protokol SSL (SSLv2/SSLv3), je nejistá. Místo toho by měl být použit protokol TLS.

  • x. 509 certifikáty pro autentizaci se někdy také nazývají SSL certifikáty.

  • některé aplikace (například e-mail) používají jediný port pro nešifrované i šifrované relace. Pro změnu z nešifrovaného na šifrovaný se používá (START)TLS. Když jeden port přímo používá protokol TLS, je často označován jako SSL.

  • z historických důvodů software (včetně Wireshark) odkazuje na SSL nebo SSL / TLS, zatímco ve skutečnosti znamená protokol TLS, protože to je dnes to, co každý používá.

závislosti protokolu

  • TCP: TLS obvykle používá TCP jako svůj transportní protokol.

TLS pitva v Wireshark

TLS dissector je plně funkční a podporuje i pokročilé funkce, jako je například dešifrování TLS, pokud je to vhodné tajemství jsou k dispozici (#TLS_Decryption).

od Wireshark 3.0 byl disektor TLS přejmenován z SSL na TLS. Použití zobrazovacího filtru ssl vydá varování.

dešifrování TLS

Wireshark podporuje dešifrování TLS, pokud jsou k dispozici vhodná tajemství. Dvě dostupné metody jsou:

  • soubor protokolu klíčů pomocí tajemství za relaci (#Using_the_.28.29-Mistr-Tajemství).

  • dešifrování pomocí soukromého klíče RSA.

soubor protokolu klíčů je univerzální mechanismus, který vždy umožňuje dešifrování, i když se používá výměna klíčů Diffie-Hellman (DH). Soukromý klíč RSA funguje pouze v omezeném počtu případů.

soubor protokolu klíčů je textový soubor generovaný aplikacemi jako Firefox, Chrome a curl, když je nastavena proměnná prostředí sslkeylogfile. Přesněji řečeno, jejich základní knihovna (NSS, OpenSSL nebo boringssl) zapisuje požadovaná tajemství za relaci do souboru. Tento soubor lze následně nakonfigurovat v Wireshark (#Using_the_.28.29-Mistr-Tajemství).

soubor soukromého klíče RSA lze použít pouze za následujících okolností:

  • šifrovací sada vybraná serverem nepoužívá (EC)DHE.
  • verze protokolu je SSLv3, (D) TLS 1.0-1.2. Nefunguje s TLS 1.3.

  • soukromý klíč odpovídá certifikátu serveru. Nepracuje s certifikátem klienta ani certifikátem certifikační autority (CA).

  • relace nebyla obnovena. Handshake musí obsahovat zprávu ClientKeyExchange handshake.

soubor protokolu klíčů se obecně doporučuje, protože funguje ve všech případech, ale vyžaduje nepřetržitou schopnost exportovat tajemství z klientské nebo serverové aplikace. Jedinou výhodou RSA soukromý klíč je, že to musí být nakonfigurován pouze jednou v Wireshark umožnit dešifrování, s výhradou výše uvedených omezení.

Nastavení předvoleb

přejděte na Upravit – > Předvolby. Otevřete strom protokolů a vyberte TLS. Případně vyberte paket TLS v seznamu paketů, klepněte pravým tlačítkem myši na vrstvu TLS v zobrazení podrobností paketů a otevřete nabídku Předvolby protokolu.

významné předvolby protokolu TLS jsou:

  • (Pre)-Master-Secret log filename (tls.keylog_file): cesta ke čtení souboru protokolu klíče TLS pro dešifrování.
  • seznam klíčů RSA: otevře dialogové okno pro konfiguraci soukromých klíčů RSA pro dešifrování. Zastaralé ve prospěch předvoleb -> dialog RSA klíče.

  • Pre-Shared-Key: slouží ke konfiguraci dešifrovacího klíče pro PSK šifrovací sady. Obecně se nepoužívá.
  • TLS ladicí soubor (tls.debug_logfile): cesta k zápisu Interních podrobností o procesu dešifrování. Bude obsahovat výsledky dešifrování a klíče, které byly použity v tomto procesu. To lze použít k diagnostice, proč dešifrování selže.

k povolení dešifrování TLS jsou také vyžadovány následující předvolby protokolu TCP:

  • povolit subdissektoru znovu sestavit toky TCP. Ve výchozím nastavení povoleno.
  • znovu sestavte segmenty mimo pořadí (od Wireshark 3.0, ve výchozím nastavení zakázáno).

počínaje Wireshark 3.0, nový dialog RSA klíče lze nalézt na Edit – > Předvolby – > RSA klíče. V tomto dialogu použijte Soubor Přidat nový klíč… tlačítko pro výběr souboru. V případě potřeby budete vyzváni k zadání hesla. Přidat nový token… tlačítko lze použít k přidání klíčů z HSM, které mohou vyžadovat použití Přidat nového poskytovatele… Chcete-li vybrat, Vyberte soubor DLL/. so a další konfiguraci specifickou pro dodavatele.

soubor klíče RSA může být buď soukromý klíč ve formátu PEM nebo PKCS # 12 úložiště klíčů (obvykle soubor s .pfx nebo .prodloužení p12). PKCS#12 klíč je binární soubor, ale PEM formátu je textový soubor, který vypadá takto:

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

zastaralé RSA klíče seznamu dialogového okna může být odstraněna v určitém okamžiku. Chcete-li konfigurovat klíče, použijte místo toho dialogové okno klíče RSA. Chcete-li změnit protokol pro dešifrovaná síťová data, klepněte pravým tlačítkem myši na paket TLS a pomocí Decode As změňte aktuální protokol pro port TLS. Pole IP adresy a Portu jsou nepoužívána.

příklad capture file

Viz také SampleCaptures#SSL_with_decryption_keys.

  • dump.pcapng TLSv1.2 capture s 73 šifry apartmá, budete potřebovat tento premaster.txt soubor pro dešifrování provozu. (linked from https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9144)

  • tls12-dsb.pcapng-TLS 1.2 trace s vloženými dešifrovacími klíči.
  • https://github.com/wireshark/wireshark/blob/master/test/captures – testovací sada obsahuje různé stopy TLS.

filtr zobrazení

úplný seznam polí filtru zobrazení TLS najdete v odkazu na filtr zobrazení

zobrazit pouze provoz založený na TLS:

  • tls

Capture Filter

při snímání nelze přímo filtrovat protokoly TLS. Pokud však znáte použitý port TCP (viz výše), můžete jej filtrovat, například pomocí portu tcp 443.

pomocí (Pre)-Master-Secret

master secret umožňuje dešifrování TLS ve Wiresharku a může být dodáno prostřednictvím souboru protokolu klíčů. Pre-master secret je výsledkem výměny klíčů a může být Wireshark převeden na master secret. Toto tajemství pre-master lze získat, když je k dispozici soukromý klíč RSA a používá se výměna klíčů RSA.

podrobné pokyny pro dešifrování provozu TLS z prohlížeče Chrome nebo Firefox ve Wiresharku:

  1. zavřete prohlížeč úplně (pro jistotu zkontrolujte Správce úloh).
  2. nastavte proměnnou prostředí sslkeylogfile na absolutní cestu zapisovatelného souboru.

  3. spusťte prohlížeč.
  4. ověřte, že je vytvořeno umístění z kroku 2.
  5. V Wireshark, jít do nastavení -> Protokoly -> TLS, a změnit (Pre)-Master-Tajný deník názvem preference na cestu z kroku 2.

  6. spusťte snímání Wireshark.
  7. Otevřít webové stránky, například https://www.wireshark.org/

  8. Zkontrolujte, zda dešifrovat data viditelná. Například pomocí filtru tls a (http nebo http2).

Pro Windows, proměnné prostředí lze nastavit globálně, jak je popsáno v tomto návodu, ale to není doporučeno, protože to je snadné zapomenout, a může být bezpečnostní problém, protože umožňuje dešifrování všechny své TLS provoz. Lepší způsob nastavení proměnné prostředí je pomocí dávkového souboru. Vytvořte soubor start-fx.cmd s:

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

Změnit SSLKEYLOGFILE cestu, jak je potřeba, a nahradit firefox s chrome pro Google Chrome. Tento mechanismus v současné době (2019) nefunguje pro Safari, Microsoft Edge a další, protože jejich knihovny TLS (Microsoft SChannel / Apple SecureTransport) tento mechanismus nepodporují. Tento mechanismus funguje i pro jiné aplikace než webové prohlížeče, ale závisí na knihovně TLS používané aplikací.

příklady jiných aplikací:

  • aplikace používající OpenSSL mohou použít trik GDB nebo LD_PRELOAD k extrakci tajemství. To zahrnuje Python.

    • Pro návod pro Apache HTTP Server pomocí tohoto libsslkeylog.so knihovna, viz tento příspěvek.

  • pro Java programy lze tajemství extrahovat z předvolby protokolu ladění TLS nebo výstup přímo ve formátu, který Wireshark vyžaduje prostřednictvím agenta Java. Dva podobné projekty:
    • jSSLKeyLog: http://jsslkeylog.sourceforge.net/

    • extrakt-tls-tajemství: https://github.com/neykov/extract-tls-secrets

  • Python skripty lze upravovat na skládku klíče stejně.

přehled podporovaných aplikací a knihoven TLS naleznete také na straně 19 prezentace Peter Wu SSL/TLS Decryption SharkFest ‚ 18 EU.

vkládání tajemství dešifrování do souboru pcapng

od Wireshark 3.0 můžete vložit soubor protokolu klíče TLS do souboru pcapng. To dělá to mnohem jednodušší, aby se distribuovat zachytit soubory s dešifrování tajemství, a umožňuje přepínání mezi soubory zachytit jednodušší, protože protokol TLS preference nemusí být aktualizovány. Chcete-li přidat obsah klíče souboru protokolu klíče.txt pro zachycení souboru.pcap a výsledek zapište do out-dsb.pcapng:

  • editcap –inject-secrets tls, keys.txt dovnitř.pcap out-dsb.pcapng

přípona dsb je zkratka pro Decryption Secrets Block (DSB) a je součástí specifikace pcapng.

soubor protokolu klíčů může obsahovat klíče, které nesouvisejí se snímacím souborem. Aby se zajistilo, že nepotřebné klíče nejsou unikly, můžete použít inject-tls-secrets.py skript https://gist.github.com/Lekensteyn/f64ba6d6d2c6229d6ec444647979ea24 filtr klíč souboru protokolu a přidat požadované tajemství capture file. Skript shell byl testován s Linuxem a macOS, ale verze Python 3 je k dispozici také pro všechny platformy včetně Windows. Příklad:

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

Viz také

Některé další protokoly, které jsou odvozeny z TLS. To zahrnuje:

  • DTLS je založen na standardu TLS a běží nad UDP jako transportní protokol.

  • QUIC je vývojový protokol, který používá pro své šifrování TLS, stav Wiresharku lze sledovat na https://github.com/quicwg/base-drafts/wiki/Tools#wireshark.

  • https://en.wikipedia.org/wiki/Transport_Layer_Security Wikipedia článek pro TLS

  • https://sharkfesteurope.wireshark.org/assets/presentations16eu/07.pdf SharkFest’16 EU prezentaci Zájmu Blok na řešení problémů SSL s Wireshark/Tshark (nebo sledovat video z prezentace na https://youtu.be/oDaDY9QCnXk)

  • https://lekensteyn.nl/files/wireshark-ssl-tls-decryption-secrets-sharkfest18eu.pdf SharkFest’18 EU prezentaci Peter Wu na dešifrování TLS (video pro dřívější mluvit v Asii na https://youtu.be/bwJEBwgoeBg)

  • https://lekensteyn.nl/files/wireshark-tls-debugging-sharkfest19us.pdf SharkFest’19 NÁS prezentace Peter Wu popisující dešifrování TLS a použití vestavěné dešifrování tajemství (https://youtu.be/Ha4SLHceF6w).

  • Jak SSL/TLS funguje? – Bezpečnost informací Stack Exchange

  • Bezklíčové SSL: Natvrdlý Kostrbatý Technické Detaily s dobrý úvod do TLS

  • PolarProxy z Netresec je transparentní SSL/TLS proxy vytvořen pro incident respondentů a výzkumníků malware, který je primárně určen pro zachycení a dešifrování TLS šifrovaný provoz od malware. PolarProxy dešifruje a znovu šifruje provoz TLS a zároveň ukládá dešifrovaný provoz do souboru PCAP, který lze načíst do Wireshark nebo systému detekce narušení (IDS).

  • CategoryHowTo

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *