SSL Sertifika Hazırlanması ve Fuzzing İçerikleri
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
#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,
0 yorum: