MBFuzzer ile içeriklerin değiştirilmesi

20:22 Mehmet Kılıç 0 Comments

     MBFuzzer projesi geldiği aşamada HTTP/HTTPS proxy hizmetini sunmaktadır. Bunun yanı sıra mobil bir uygulama ile sunucu arasında gerçekleşen iletişimde sunucunun mobil uygulamaya gönderdiği cevapların içeriğinde hazırlanan yapılandırma dosyası kullanılarak RAW ve XML içeriklerde değişikler yapmakta ve sonrasında değişiklik yapılan bu içeriği uzunluğu gibi gerekli bilgilerinide düzenleyerek  mobil uygulama tarafına göndermektedir.

     Yapılandırma dosyası içerisinde belirlenen ve içeriklere uygulanacak şimdilik “searchreplace“(bul ve değiştir), “bigdata“(büyük veri yerleştir) yapıları bulunmaktadır. Mobil uygulamanın yaptığı istek  doğrultusunda sunucudan gelen içeriklerde değiştirmek istediğimiz herhangi bir veri bulunuyorsa, bunu yapılandırma dosyasında bulunan searchreplace yapısına,

    <searchreplace>
            <target>değiştirilmesi hedeflenen veri</target>
            <newdata>girilmek istenen yeni veri</newdata>
    </searchreplace>

gerekli olan bilgileri ekleyerek değiştirmek istenilen veri yapılandırma dosyasındaki yerini almaktadır. Bir diğer yapı bigdata ise aynı şekilde sunucu tarafından gönderilen ve mobil uygulama tarafında bir değişken içerisinde tutulacak bir verinin değiştirilerek beklenmeyecek şekilde büyük boyutlu bir değişken  yerleştirme işlemi  için,

    <bigdata>
        <name>hedeflenen değişken ismi</name>
        <data>yerleştirilmek istenen veri</data>
        <count>verinin kaç defa tekrar edeceği</count>  
    </bigdata>

yapısına uygun bilgilerin yapılandırma dosyasına yerleştirilmesi halinde hedeflenen değişkene büyük verinin göderilmesi sonraki adım için hazır hale gelmektedir.

     MBFuzzer projesi için yapılandırma dosyasında hazırlanan searchreplace ve bigdata yapılarının kullanımı MBContent sınıfının içerisinde bulunan load_actions fonksiyonu yardımı ile ilk olarak parse edilmekte ve kullanıma hazır hale getirilmektedir.
    
    # load_actions fonksiyonu yapılandırma dosyası ile çalışmaktadır
    def load_actions(config_file)       
        # yapılandırma dosyasında bulunan yapıların parse işlemi
        action = XmlSimple.new.xml_in(config_file, { 'ForceArray' => false })             

        # her yapı uygun hash yapısına aktarılmaktadır
        action.each do |a_name,a_attr|

            case a_name
                when "searchreplace" then @actions['searchreplace'] = a_attr
                when "bigdata" then @actions['bigdata'] = a_attr
            end
        end

    end

     MBProxy mobil uygulama ve sunucu arasındaki iletişimi üzerinden geçirirken şimdilik sadece HTTP cevaplarını MBContent katmanındaki analiz kısmana göndermekte ve oradaki içeriğin türüne göre ayrıştırılması yapılarak hazırlanan yapılar RAW için searchreplace ve XML içerikleri içinde bigdata işlemleri yapılmaktadır. Yaptığım bazı denemelerde yapılandırma dosyasına Name değişkenine sahip bigdata yapısı ekledim ve sanal mobil cihaza yüklediğim bazı uygulamarda sonucunu gözlemledim ve uygulamanın hazırladığım yapı nedeniyle uygulamanın çökmesi ile karşılaştım. Bunun ile beraber RAW data olarak da belirlediğim searchreplace yapısında belirlediğim verinin görünmesini de MBFuzzer sağlamış oldu.

     MBFuzzer projesinin son hali kullanabilmek için mobil sanal cihaz kurmalı ve proxy ayarları hazır şekild ebaşlatmasınız ki bunu önceki blog yazılarımda bulabilirsiniz. Sonrasında mevcut searchreplace ve bigdata yapısına uygun farkı veriler girerek MBFuzzer'ın test klasörü altında bulunan proxy_test dosyasının çalıştırılmasınından sonra mobil uygulamaların vereceği cevapları gözlemleyebilirsiniz. 







0 yorum: