Wireshark İle SSL Decrypt - HTTPS Decryption
Web trafiğini izlemek için daha önce Wireshark’ı kullanmayı denediyseniz, muhtemelen bir sorunla karşılaşırsınız ki o da paketlerin çoğunun şifrelenmiş aktarımlar olmasıdır. Aslında çoğu site, kullanıcılarını güvende tutmak için SSL veya Taşıma Katmanı Güvenliği (TLS) şifrelemesi kullanıyor. Tabi bu da bu paketleri decrypt etmeden içeriğini göremeyeceğiniz anlamına geliyor.
Şahsi bir kullanımda internet güvenliğiniz için SSL muazzam bir öneme sahiptir, ancak bir ağı yönetmeye çalışırken anlamsız paketler sizi iş göremeyecek hale getirebilir. Bu yazımızda da Wireshark ile SSL’nin şifresini nasıl çözeceğimizi (decrypt) göstermeye çalışacağız.
1. Wireshark ve SSL Şifreleme nedir?
Wireshark bir ağ trafiği analiz programıdır; birçok yöneticinin ağlarındaki sorunları gidermek için kullandığı temel bir yardımcı programdır. Özellikle, paketlerin yapı taşları olan çerçeveleri yakalar ve bunları sıralamanıza ve analiz etmenize olanak tanır.
Wireshark’ı kullanarak, ağınızda akan trafiğe bakabilir ve onu inceleyebilir, ham verilere çerçevelerin içine bir göz atabilirsiniz. Hatta şu yazımızda anlattığımız gibi kayıp paketlerinizi bile analiz edebilirsiniz: Wireshark İle Network Kayıp Paket Analizi
SSL, OSI modelinin Taşıma katmanında çalışan bir şifreleme protokolüdür. Ağlar arasında hareket ederken verilerin güvenliğini sağlamak için çeşitli şifreleme yöntemleri kullanır. Modern şifreleme yöntemleri hakkında ilgi çekici ve bilgilendirici bir makale için şu yazımızı okuyabilirsiniz: Modern Şifreleme Yöntemleri (Simetrik & Asimetrik Şifreleme)
SSL şifreleme, yöneticilerin her bir ilgili paketin taşıdığı verileri görüntülemesini engellediği için Wireshark kullanımını daha zor hale getirir. Wireshark düzgün bir şekilde kurulduğunda, SSL’nin şifresini çözebilir ve ham verileri görüntüleme yeteneğinizi geri yükleyebilir.
2. SSL ve TLS Decrypt için pre-master key kullanmak
Wireshark’ta SSL’nin şifresini çözmek için pre-master key
kullanılması önerilen yöntemdir. Pre-master key istemci tarafından oluşturulur ve sunucu tarafından oturum trafiğini şifreleyen bir master key
türetmek için kullanılır. Kriptografide mevcut standarttır ve genellikle Diffie-Hellman aracılığıyla uygulanır.
Tarayıcınızın, Wireshark’ın SSL ve TLS oturumlarının şifresini çözmek için kullandığı pre-master keyi kaydetmesi sağlanabilir. Böylece decrypt işlemi için keyimiz hazır hale gelecektir. Nasıl yapacağımız konusuna ise hemen geçelim. Aşamalarımız;
- Bir ortam değişkeni ayarlayın (path)
- Tarayıcınızı açın, trafik başlatın ve log kaydedin
- Wireshark’ı yapılandırın
- Oturum anahtarlarını yakalayın ve şifresini çözün
Bitirdiğinizde, hedef sunucuya erişmeye gerek kalmadan Wireshark’ta SSL ve TLS oturumlarının şifresini çözebileceksiniz.
2.1 Ortam değişkeni ayarlayın
Windows sistemlerinde, Gelişmiş sistem ayarları yardımcı programını kullanarak bir ortam değişkeni ayarlamanız gerekir. SSLKEYLOGFILE
adlı bu değişken, pre-master keylerin depolandığı bir yol içerir. Bu değişkeni ayarlayabilmek için öncelikle Bilgisayarım -> Özellikler -> Gelişmiş sistem ayarları
yolunu izleyiniz.
Açılan pencerede Gelişmiş -> Ortam Değişkenleri
penceresinden Yeni
butonunu tıklayınız.
Karşınıza çıkan kutucuğa ise SSLKEYLOGFILE
parametre ismiyle beraber dosyanın nereye kaydedileceğini yazınız veya seçiniz.
Eğer Linux veya MAC kullanıyorsanız ortam değişkenini daha farklı şekilde oluşturmalıyız. Bunun için Linux sisteminizde ~/.bashrc
dosyasını, MAC sisteminizde ~/.MacOSX/environment
dosyasını nano veya vim ile açarak dosyasının sonuna şu satırı yapıştırınız.
export SSLKEYLOGFILE=~/.ssl-key.log
Dosyayı kaydederek çıkınız ve terminalde echo $SSLKEYLOGFILE
komutunu çalıştırınız. Eğer yukarıdaki satırı görüyorsunuz path ekleme işleminiz başarılı olmuştur.
2.2 Tarayıcınızı başlatın ve log dosyasını kontrol edin
Wireshark’ı başlatmadan ve bir pre-master key kullanarak SSL şifresini çözecek şekilde yapılandırmadan önce, tarayıcınızı başlatmalı ve log dosyasının kullanıldığını doğrulamalısınız.
Log dosyasını doldurmak için, SSL’nin etkin olduğu bir siteyi ziyaret etmeniz önemlidir. Test için kendi blogumuzu kullanıyoruz ancak herhangi bir site üzerinde de çalışacaktır. pre-master key kullanmanın en büyük avantajlarından biri, SSL’nin şifresini çözmek için sunucuya erişmeniz gerekmemesidir.
Bu ziyaretin ardından ortam değişkeninde belirttiğimiz dizine gidelim ve log dosyasının oluşup oluşmadığını kontrol edelim.
SSL etkin bir web sitesini ziyaret ettikten sonra, dosyada veri olup olmadığını kontrol edin. Windows’ta Not Defteri’ni kullanabilirsiniz. Linux veya Mac’te cat ~/.ssl-log.key
komutunu kullanabilirsiniz.
Herhangi bir işletim sisteminde, dosyanız yukarıdaki benimki gibi görünmelidir. Tarayıcınızın seçtiğiniz konumda pre-master keyleri günlüğe kaydettiğini onayladıktan sonra, Wireshark’ı SSL şifresini çözmek için bu anahtarları kullanacak şekilde yapılandırabilirsiniz.
2.3 SSL Decrypt için Wireshark’ı yapılandırın
Tarayıcınız pre-master keyleri günlüğe kaydetmeye başladığında, Wireshark’ı SSL şifresini çözmek için bu günlükleri kullanacak şekilde yapılandırma zamanı gelmiş demektir. Bunun için Wireshark programını açarak Edit -> Preferences
pencerisini açınız ve Protocols altındaki TLS‘i seçiniz. Ardından pre-master key
bölümünden log dosyanızı seçiniz.
2.4 Oturumu yakalayın ve SSL’nin şifresini çözün
Son adımda, bir test oturumu yakalamak ve Wireshark’ın SSL’nin şifresini başarıyla çözdüğünden emin olacağız. Bunun için;
- Filtrelenmemiş bir yakalama oturumu başlatın, simge durumuna küçültün ve tarayıcınızı açın.
- Veri oluşturmak için güvenli bir siteyi ziyaret edin ve isteğe bağlı olarak oturum gürültüsünü en aza indirmek için bir “ssl” görüntüleme filtresi ayarlayın.
- Şifrelenmiş veri içeren herhangi bir çerçeveye tıklayın.
Örneğimizde, yakaladığımız paketler içinden 465 nolu paketin önceki ve sonraki halini göstermek için pre-master keyi eklemeden ve ekledikten sonraki hallerinin ekran görüntüsü aşağıda paylaşıyorum. Unutmayınız ki, pre-master secret key veya private kullanan şifrelenmiş iletimler bu yöntemle çalışacaktır. Bu, Diffie-Hellman veya karşılaştırılabilir anahtar değişimleri aracılığıyla Perfect Forward Encryption (PFE) kullanan tüm verileri için geçerli olduğu anlamına gelir.
Paketlerin şifreli hali;
Paketlerin şifresiz hali (pre-master secret key eklendiği hali);
Gördüğünüz gibi şifreli trafiğimizi artık clear-text haliyle inceleyebiliyoruz.
2.5 Wireshark, SSL trafiğinin şifresini çözmeyi kolaylaştırır
Wireshark’ın SSL şifre çözme sürecini işleme şeklini yukarıdaki örnekte gördüğünüz gibi oldukça işe yarar ve kolaydır. Kriptografi ise karmaşıktır ve standartlar daha güvenli olmak için sürekli olarak değişmektedir. Ancak Wireshark ve ortamınız doğru bir şekilde kurulduktan sonra, tek yapmanız gereken şifresi çözülmüş verileri görüntülemek için sekmeleri değiştirmek. Bundan daha kolay bir yöntem olduğunu sanmıyorum 🙂
3. Wireshark ile SSL Decrypt – SSS
Bu bölümde sık sorulan sorulardan birkaç derleme yapalım.
3.1 Wireshark’ta TLS paketlerini nasıl okuyabilirim?
Wireshark’ta TLS paketlerini okumak için şu adımları izleyin:
- Wireshark’ta bir paket yakalama oturumu başlatın.
- Üst menü çubuğunda, Düzenle‘ye tıklayın ve ardından açılır menüden Tercihler‘i seçin.
- Tercihler penceresinde, sol taraftaki menü ağacındaki Protokoller düğümünü genişletin. SSL‘ye tıklayın.
- Pencerenin ana paneli protokol ayarlarını gösterecektir.
- Bir dosya adı girin ve SSL hata ayıklama (SSL debug file) dosyası için bir konum seçin.
- RSA anahtarları listesine tıklayın ve ardından Düzenle‘yi ve ardından Yeni‘yi seçin.
- Açılır penceredeki bilgi alanlarını doldurun:
IP adresi
,Bağlantı Noktası
,Protokol (HTTPS olacak)
,Anahtar Dosya
veŞifre
. Tamam tuşuna basın. - Tercihler ekranında Tamam‘ı tıklayın. Ana Wireshark sayfasının altındaki veri alanı, paketin şifresi çözülmüş içeriğini gösterecektir.
Wireshark sayfasının altındaki veri alanı, paketin şifresi çözülmüş içeriğini gösterecektir.
3.2 Çift yönlü SSL handshake nasıl çalışır?
İki yönlü SSL handshake, hem sunucunun hem de istemcinin kimliğini doğrular. İşte bu süreçte gerçekleştirilen adımlar şunlardır:
Client hello:
İstemciden sunucuya gönderilir ve desteklenen şifre paketlerini ve TLS sürümü uyumluluklarını içerir.Server hello:
Yanıt olarak sunucudan istemciye gönderilir. Sunucunun genel sertifikasına bir bağlantı ve istemciden gelen isteğin aynısından içerir.- Tarayıcı, sunucu sertifikasını doğrular ve her şey yolundaysa kendi sertifikasına bir bağlantı gönderir.
- Sunucu, istemcinin sertifikasını kontrol eder. Her şey yolundaysa, oturum kurulumu devam eder.
3.3 Pasif olarak sniffing yapılan SSL / TLS trafiğinin şifresini çözmek mümkün müdür?
Evet. Ancak, trafiğin şifresini çözmek için her zaman RSA anahtarına ihtiyacınız olacaktır. Bu, meşru yöntemlerle ve izin alınarak elde edilebilir veya bir “ortadaki adam” stratejisiyle trafiğin kaynağından kandırılabilir.