SSL Sertifika Hazırlanması ve Fuzzing İçerikleri

22:45 Mehmet Kılıç 0 Comments

SSL Sertifika Hazırlanması



MBFuzzer projesinde HTTP/HTTPS destekli proxy’nin geliştirilmesinden sonraki adım olan uygulama ve proxy  arasındaki iletişimin sertifika sorunu yaşamadan devam edebilmesi geçerli bir sertifika oluşturulmasına dayanmaktadır.Bunun için  daha önce hazırlamış olduğum sertifika kütüphanesi üzerinde bazı düzenlemeler yaptım.

Sertifika kütüphanesinde geliştirdiğimiz proxy'deki ssl_open ile baglanilan SSL oturumunun sertifika bilgilerini ruby’nin openssl kütüphanesi sayesinde elde edebiliyoruz.

#serverssl, ssl_open dönen SSL oturum değişkenidir
real_cert = OpenSSL::X509::Certificate.new(serverssl.peer_cert)

#real_cert bilgilerini oluşturduğum Cert isimli kütüphaneye yollayarak 
#yeni sertifika ve key bilgilerini elde eder
ncert, nkey = Cert.new.ssl_cert(real_cert)

Cert kütüphanesinde ilk olarak RSA key oluşturma işlemi gerçekleşiyor. Sonrasında gelen sertifika bilgileri ile birlikte ve oluşturulan key ile bilrlikte sertifikanın gerekli parametreleri sağlanması ile birlikte sertifikanın imzalama aşamasına geçiliyor. Mevcut bilgilerle oluşturulmuş sertifikanın imzalama algoritması olarak SHA1 ve başlangıçtaki RSA key ile birlikte sertifika üzerinde imza oluşturuluyor.

#kullanılan key ve imzalama algoritması
cert.sign(key, OpenSSL::Digest::SHA1.new)

Kütüphaneyi bu şekilde kullanıldığımda sertifika üretimi gerçekleşiyor; ancak proxy ve uygulama üzerinde yapılan iletişimde sertifika imzasından kaynaklanan hata bulunmaktadır. Bu sorunun üzerinde çalışmaktayım ve çözüme ulaştığımda gerekli düzeltmeleri yapacağım.

Fuzzing içerikleri


    MBFuzzer projesinin mobil uygulamaların üzerindeki temel görevi fuzzing yapacak olmasıdır. Bu doğrultuda fuzzing için gerekli alt yapının yani fuzzing içeriklerinin hazır hale getirilmesi gerekmektedir. 
    Mobil uygulamarın kodlama olarak hafıza kontrolünün nasıl olduğunu test etmek için ilk olarak "buffer overflow" olarak adlandırılan içerikler hazırlandı. Detaylı şekilde açıklayacak olursam, uygulama azami 10 karakter uzuluğunda bir veri bekliyor; ancak 1000 karakter uzunluğunda gelen bir veri olursa uygulamanın davranışları ne olur sorusunun cevabını aramak diyebiliriz. Bunun haricinde, "format string" olarak adlandırılan gene uygulamanın beklediği bir verinin değişken türünün değiştirilmesi durumundaki davranışlarını gözlemlemek içinde içerikler hazırlandı.  
Buffer Overlflow için,
    a * 100
    a * 1000
    a * 10000 ....
Format String için,
    %p%p%p%p
    %x%x%x%x ....

MBFuzzer proje sayfası

0 yorum: