Yakından Eğitim MBFuzzer Projesi Ara Dönem
Yakından
Eğitim MBFuzzer projesi başlangıcı 1 Nisan 2013 tarihinden itibaren
proje mentörü Fatih Özavcı’nın proje için belirlediği adımlar
doğrultusunda geliştirme sürecine devam edilmektedir. MBFuzzer
projesinin hedefi bir mobil uygulamanın güvenilirliğin test edilmesini
sağlamaktır. Bu kapsamda uygulamaya proxy desteği sunarak uygulama ve
sunucu arasındaki iletişimin analiz edilmesiyle beraber içeriğinin
değiştirilmesi ve bozuk cevapların incelenerek mobil uygulamanın
güvenilirliğinin test edilmesidir. MBFuzzer projesinin geldiği bir aylık
döneminde geliştirme sürecinde tamamlanan kısımları anlatarak, projenin
şimdiye kadarki durumu hakkında bilgi verecektir.
- HTTP/HTTPS Proxy Desteği
MBFuzzer
projesi, ortadaki adam saldırısı yapan bir fuzzing aracı olarak
kullanılacağı için uygulamalardan gelen HTTP/HTTPS isteklerini kabul
edip sunucuya gönderen ve sunucudan gelen cevapları da uygulamaya iletme
işlevini gören bir kütüphane olarak tasarlandı ve bu hedef
doğrultusunda kütüphane geliştirildi.
İlk
olarak HTTP isteklerinin kabul edilip sunucuya yönlendirilmesi sağlandı
ve sunucudan gelen cevaplar uygulama tarafına iletildi. Burada uygulama
ve sunucu arasındaki iletişim proxy üzerinden sağlandı. Sonraki adımda
HTTPS isteklerinin kabul edilmesi ve sunucu ile bağlantısının sağlanması
üzerine çalışıldı. Burada HTTPS isteklerini de HTTP istekleri gibi
kabul ederek iletişimin sunucu tarafı ile bağlantısında IO üzerinden
bağlanılması sağlandı ve dönen cevapları HTTPS CONNECT çevirimi
yapılarak iletişim sürdürüldü.
Kütüphanenin sahip olduğu ve yaptığı işler,
- Uygulamalardan gelecek olan isteklerin dinlenileceği adres ve port bilgilerini aldıktan sonra ara bir sunucu olarak istekleri bekler ve gelen her isteğin kabul edilmesi ile beraber paralel olarak çalışmasını sağlamaktadır.
- Gelen isteklerin içeriğinin okunması ve başlık bilgilerinin analizi yapılarak isteğin türünü(HTTP/HTTPS) belirler. Bu doğrultuda istek türüne göre sonraki adımında sunucu ile iletişime geçmesi sağlar.
- HTTP isteklerinin bağlanmak istediği uzak sunucu tarafından gelen cevapların okumasını yaparak uygulama tarafına iletilmesini sağlar.
- HTTPS istekleri için bağlanılacak uzak sunucunun adres ve port bilgileri ile bağlantı oluşturmasını gerçekleştirir.
- Gelen HTTPS isteklerinin uygulama tarafına bağlantı kuruldu mesajı gönderildikten ve uzak sunucu ile bağlantı kurulduktan sonra uygulama tarafı ile IO üzerinden sunucu olarak iletişim kurulmasını sağlamaktadır.
- Proxy’nin açık olan tüm bağlantıları kapatılır..
- Sertifika Üretme
Uygulama
tarafından gelen HTTPS istekleri için uzak sunucuya bağlandıktan sonra
elde edilen bağlantı bilgilerinden mevcut sertifika bilgileri yardımıyla
ve uygulama tarafına bağlantının kurulduğu mesajı iletildikten sonra
gerçekleşen HTTPS oturumunda gerekli olan sertifikanın hazırlanmasını
sağlayan bir kütüphane hazırlandı. Bu kütüphanenin yapmış olduğu işlev,
- İlk olarak sertifika için kullanılacak olan key üretimini gerçekleştirmektedir. Sonrasında, gelen mevcut sertifikanın bilgilerini kullanarak ve üretilen key ile birlikte sertifikanın imzalanması gereçekleştirilmektedir. Özet olarak, hem sertifikayı hem de key bilgilerini hazırlamaktadır.
- Fuzzing İçeriklerinin hazırlanması
MBFuzzer’ın ana işlevinin mobil uygulamalara çeşitli veriler
gönderilerek mobil uygulamalarda oluşan bozulmaları veya geri dönen
cevapların yapısına göre uygulamanın güvenilirliğini test etmektir. Bu
nedenle, fuzzing işlemleri için sonraki adımlarda kullanılacak
içerikler hazırlandı. Bu içerikler;
- BufferOverflow : Mobil uygulamanın kodlama aşamasında hafıza kullanımını test edilmesinde kullanılmak üzere veri setleri hazırlandı.
- FormatString : Mobil uygulamanın kod yapısında beklediği bir değişken türünün üzerinde değişiklikler yapılarak uygulamanın test edilmesini sağlayacak veri setleri hazırlandı.
Yakından
Eğitim MBFuzzer projesinin ara dönemine kadar geçen sürede yukardıda
bahsettiğim adımları gerçekleştirdik. Bu süreçte, bir proxy’nin çalışma
prensibi, HTTP/HTTPS bağlantı türlerinin nasıl gerçekleştiği, SSL
hakkında sıkıntı yaşasamda bu kavram yapısının detayları ile ilgili
temel bilgiler edindim. MBFuzzer projesi ile açık kaynak bir proje
geliştirirken konuya bağlı olarak atılacak ilk adımlar, izlenmesi
gereken yollar, araştırma gibi başlıklarda yanlışlarımla veya
doğrularımla deneyimler kazandım.
0 yorum: