Soru:
Windows 8 uygulamaları ve Azure arasında TLS paketlerinin şifresini çözme
Bill Sempf
2013-03-24 04:42:30 UTC
view on stackexchange narkive permalink

Windows 8 için Windows Mağazası uygulama geliştirmede, bir geliştiricinin, aynı hesapla oturum açtıkları sürece, kullanıcının birkaç makineden ona erişebilmesi için toplu veri depolamasına olanak tanıyan remoteSettings adlı bir sınıf vardır .

WireShark'ı bağladım ve paketin Azure'da depolandığını ve TLS ile güvenceye alındığını keşfettim. Paketin şifresini çözebilmek ve verilerin Azure'da şifrelenmiş olup olmadığını görmek için kendim MITM yapmak istiyorum.

Açıkçası Azure için özel anahtarım yok, bu yüzden bilmek istiyorum herkesin bu MITM analizini nasıl gerçekleştireceğine dair bir fikri vardır.

Beş yanıtlar:
#1
+11
Brendan Dolan-Gavitt
2013-03-27 20:52:26 UTC
view on stackexchange narkive permalink

Yapabileceğiniz diğer bir şey, belki aşırı ama diğer senaryolarda yararlı olan, 48 baytlık TLS ana sırrının oluşturulmasını engellemektir. Birçok Windows uygulaması için (IE dahil), bu, aşağıdaki işlevde lsass.exe içinde gerçekleşir (Win7 SP1 32-bit'ten alınmıştır):

  Arayan: ncrypt! _Tls1ComputeMasterKey @ 32 + 0x57 EIP: ncrypt! _PRF @ 40 + 0x11a  

Ardından, (Pre) -Master-Secret günlüğünü ayarlayarak Wireshark'ta yakalanan paketlerin şifresini çözebilirsiniz dosya adı bir dosya, kendisine SSL tercihlerinde böyle görünüyor:

  RSA Oturum ID: 87492B3586DE289FAE1598B0A19CC7BCCB69371993F2C0DF32438034E06FE3FBMaster-Anahtar: F58C0EFA2BF87602646B318400DFEB0C8CCDE59408C9F13C6D923F6208743BD34EA8BA17BCE02B9BD8DFED5A58036068  

oturumda Buradaki kimlik, ilgilendiğiniz akışa ait TLS başlıklarında (şifrelenmemiş) bulunabilir. (RSA'ya aldanmayın - bu, kullanımdaki şifre seti ne olursa olsun tüm TLS bağlantıları için geçerlidir.)

Bu yöntemin avantajı, ortada bir adam yapmadığınız için istemci uygulamasının CA'nıza güvenmek zorunda olmamasıdır. gerçekten doğru kripto yapan bazı kötü amaçlı yazılımları tersine çevirmeye çalışıyorsanız özellikle kullanışlıdır.

Olumsuz tarafı, lsass.exe 'de hata ayıklayabilmeniz gerektiğidir. aldatıcı; Bunu nasıl yapacağınıza dair bazı bilgiler burada.

#2
+10
Peter Andersson
2013-03-24 13:55:46 UTC
view on stackexchange narkive permalink

Veriler HTTPS olarak aktarılıyorsa, klasik Fiddler ortadaki adam yaklaşımını deneyebilirsiniz. Windows deposunun proxy ayarlarına uyup uymadığından veya sabitlenmiş bir sertifikaya sahip olup olmadığından emin değilim. Proxy ayarlarına uyuyorsa ve sabitlenmiş bir sertifikası yoksa, Fiddler ile onu önemsiz bir şekilde ortadaki adam yapabilmelisiniz.

Veriler yoksa ' t HTTPS ve sertifika sabitlenmez, seçeneklerden biri SSLNetcat kullanarak güvenli bağlantı için proxy yapmaktır. Yaptığınız şey, ana bilgisayar dosyanızı değiştirerek Store yürütülebilir dosyasının yerel olarak çalışan SSLNetcat'e bağlanması ve ardından SSLNetcat'i özel anahtarınız olan bir sertifika kullanacak şekilde ayarlamanızdır. Daha sonra ya SSLNetcat'in verileri doğrudan seçtiğiniz bir programa iletmesini ya da özel anahtarları Wireshark'a girip trafiği koklamak için kullanın.

Veriler HTTPS değilse, doğrulayın. ikili dosya sabitlenmişse ve bir dosyada depolanmıyorsa, Windows Mağazası yürütülebilir dosyasını yamalayabilir ve sertifikayı, özel anahtara sahip olduğunuz kendi sertifikanızla değiştirebilirsiniz. OpenSSL sizin için kolayca bir değiştirme sertifikası oluşturabilmelidir. Bu özel anahtar daha sonra Wireshark'a girilebilir ve bu daha sonra trafiğin şifresini çözer.

Kopya koruma bölgesine oldukça yakınsınız, bu nedenle bir takım zorluklarla karşılaşabilirsiniz.

Açık konuşayım - Azure'daki verilerin şifreli olarak depolanıp depolanmadığını görmek için bunu kendi uygulamama yapıyorum. Başkasının uygulamasını kırmamak. Fiddler'ı denedim, ama yanlış yapmış olabilirim, bu yüzden araştıracağım. SSLNetcat'e aşina değildim, bu yüzden bunun için de teşekkürler. Harika cevap.
Oh, ben de öyle varsaydım. Sadece, kopya koruması nedeniyle iletişimin yoğun bir şekilde korunduğu sorunlarla karşılaşabileceğinizi söyledim. Sabitlenmiş sertifikalar, kendi kendini doğrulayan yürütülebilir dosyalar ve hatta çekirdek düzeyinde bütünlük kontrolleriyle karşılaşma olasılığınız daha yüksek olduğundan, işleri biraz karmaşık hale getirir. Microsoft Store'a aşina olmadığım için genellemelerden başka tavsiyelerde bulunamam.
Tavsiyen oldukça harika. Burada basketbol izlemeyi bitirdikten sonra işe koyulacağım ...
#3
+5
ŹV -
2013-03-24 07:01:47 UTC
view on stackexchange narkive permalink

Windows Mağazası tarafından kullanılan yerel anahtarı çıkarırken ve bunu Wireshark'a beslerken uygulayabileceğiniz birkaç yaklaşım vardır, ancak en iyi seçeneğinizin Ağ GÇ işlevlerini gönderen bir DLL enjekte etmek olduğunu düşünüyorum. () ve recv () sürecinizin dışında.

Bunu "düşük seviyede" kendiniz yapmayı deneyebilirsiniz, ancak pragmatizm adına Microsoft Detours'u kancaya çekmek için incelemeniz akıllıca olacaktır, onu kullanan pek çok örnek var - bu kolay artık tek temel gereksinim işlev prototipinizi bilmek olduğuna göre.

WinRT'de Network IO işlevlerine erişebileceğimden emin değilim - belki biraz C ++ hackleme ile çünkü bu tam olarak sertifikasyondan geçmiyor. Detours'u henüz duymamıştım - bunun için teşekkürler.
#4
+4
0xea
2013-03-27 16:38:37 UTC
view on stackexchange narkive permalink

Temel olarak uygun API çağrılarını bağlayan ve şifrelenmiş / şifresi çözülmeden önce ve sonra verileri görmenizi sağlayan oSpy 'i de deneyebilirsiniz.

oSpy, Windows platformunda çalışan tersine mühendislik yazılımına yardımcı olan bir araçtır. [...] koklama API düzeyinde yapıldığında, neler olup bittiğine dair çok daha ayrıntılı bir görünüm sağlar. [...] bir uygulama şifreli iletişim kullanıyorsa, bu aramaları kesmek de kolaydır. oSpy zaten böyle bir API'yi durduruyor ve MSN Messenger, Google Talk vb. tarafından HTTPS verilerini şifrelemek / şifresini çözmek için kullanılan API.

#5
+2
sw.
2014-06-10 17:44:58 UTC
view on stackexchange narkive permalink

Büyük olasılıkla Windows 8, App Store'a bağlanmak için WinINet kullanıyor. Bu durumda, bir proxy kullanmak yerine şifrelenmemiş akışların wininet.dll dosyasına bağlanmasını görebilirsiniz. HookME bunu yapıyor ve geçen yıl BlackHat'ta sunuldu.

Muhtemelen onu Windows 8 altında derlemek ve kullanmak için bazı küçük değişiklikler yapmanız gerekiyor.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...