Bazen yapmak istediğiniz işleme tam olarak uyan bir modül bulamazsınız. 2-3 farklı modülün yaptığı işlemleri tek modülde toplamak istersiniz. Örneğin, evinizdeki ağınızı zafiyetlere karşı taramak ve kayıt altına almak isteyebilirsiniz. Metasploit Framework, bu tür amaçlar için kendi tarayıcı modülünüzü yazma imkanı sağlıyor.

Programlama diliyle söyleyecek olursak, Metasploit Framework içinde kullanılan bütün sınıflara (class) erişim ve kullanım imkanınız bulunmaktadır.

Tarayıcıların bazı özellikleri

  • Tüm exploit sınıf ve modüllerine erişim sağlarlar.
  • Proxy, SSL ve raporlama desteği bulunur.
  • Tarayıcı için THREAD yönetimi ve istenen aralıkta tarama desteği
  • Yazması ve çalıştırması çok kolaydır.

Yazması ve çalıştırması kolay dense de kodlama biliyor olmanız size çok zaman kazandıracaktır. Bunu da ifade edelim. Aşağıdaki örnekte, TCP Exploit Modülü, include komutu ile sisteme dahil edilmekte ve bu modülün TCP bağlantı değişkenleri, istenen IP adresine bağlanmak için kullanılmaktadır. 12345 Portuna bağlantı sağlandıktan sonra sunucuya “HELLO SERVE” mesajı gönderilmektedir. Son olarak da sunucunun verdiği cevap ekrana yazdırılmaktadır.

require 'msf/core'
class Metasploit3 < Msf::Auxiliary
        include Msf::Exploit::Remote::Tcp
        include Msf::Auxiliary::Scanner
        def initialize
                super(
                        'Name'           => 'My custom TCP scan',
                        'Version'        => '$Revision: 1 $',
                        'Description'    => 'My quick scanner',
                        'Author'         => 'Your name here',
                        'License'        => MSF_LICENSE
                )
                register_options(
                        [
                                Opt::RPORT(12345)
                        ], self.class)
        end

        def run_host(ip)
                connect()
      greeting = "HELLO SERVER" 
      sock.puts(greeting)
                data = sock.recv(1024)
                print_status("Received: #{data} from #{ip}")
                disconnect()
        end
end

Yazdığınız Tarayıcıyı Kaydetme

Yazdığınız tarayıcıyı doğru yere kaydetmelisiniz. msfconsole başlarken modüller ./modules/auxuliary/scanner klasöründen yüklenirler. O zaman yeni yazdığımız modülü ./modules/auxiliary/scanner/http/ klsörünün için simple_tcp.rb dosya adıyla Ruby uzantılı kayıt etmeliyiz. Ayrıntılı bilgi için Metasploit Temel Komutlar -loadpath- başlığını okuyabilirsiniz.

Deneyeceğimiz tarayıcı modülün mesajını yakalamak için netcat dinleme oturumu açabilirsiniz.

root@kali:~# nc -lnvp 12345 < response.txt
listening on [any] 12345 ...

Ardından yeni modülü seçip RHOST değişkenini ayarlıyoruz ve modülü çalıştırıyoruz.

msf > use scanner/simple_tcp
msf auxiliary(simple_tcp) > set RHOSTS 192.168.1.100
RHOSTS => 192.168.1.100
msf auxiliary(simple_tcp) > run

[*] Received: hello metasploit from 192.168.1.100
[*] Auxiliary module execution completed

Detaylı kullanım örnekleri için Metasploit içerisinde bulunan modülleri incelemeniz tavsiye ediyorum.

Sonuçları Kaydetme

Raporlama metodu report_*() kullanıcıya aşağıdaki imkanları sunar. Bunun için veri tabanı kullanıyor olmalısınız.

  • Veri tabanı bağlantısı olup olmadığını kontrol eder.
  • Çift kayıt olup olmadığını kontrol eder.
  • Bulunan bir kaydı tabloya yazar.

report.*() metodunu kullanmak için aşağıdaki include satırını tarayıcı dosyanıza dahil etmelisiniz.

include Msf::Auxiliary::Report

Son olarak report_note() metodunu kullanabilirsiniz.

report_note(
:host => rhost,
:type => "myscanner_password",
:data => data
)