Gaining Root with Metasploit

ÖZET :

SMB açığı olabileceğini keşfettik ve belli bilgiler edindik. Bunlara dayanarak kioptrix level 1 makinesinin kontrolünü almak için bu makinenin kullandığı samba 2.2 için bir sploit aradık. Bunu searchsploit samba 2.2 komutuyla yaptık. daha sonra yaptığımız recon sonucu bunun için en iyi sploitin trans2open olacağına karar verdik ve mfconsole açıp search trans2open yazarak exploiti hazır hale getirdik. set rhosts <ip> dedik ve exploit yazıp başlattık.  Daha sonra brute force yaparken bunun çalışmadığını payloadların sorunlu olduğunu gördük ve işlemi durdurup payload değiştirmeye karar verdik. Sonra da set payload linux/x86/ tab tab yapıp yeni payload gönderdik ve root erişimine sahip olduk.

 

Bu derste smb saldıracağız. Bunun için searchsploit samba 2.2 yazıyoruz. Recon notlarımıza göre en başarılı görünen sploit trans2open gibi görünüyor bu yüzden bunu seçiyoruz. Çalıştırmak için öncelikle mfsconsole yazıyoruz. Daha sonra search trans2open yazıyoruz ve  makinede linux olduğunu keşfettiğimiz için linux için olan versiyonu seçiyoruz. Daha sonra option olarak set rhosts <id> ile targeti veriyoruz. Daha sonra da exploit yazıp başlatıyoruz.

Burada brute force deniyor. Sürekli payloadları gönderiyor ve sonucunu görüyor. İlk başta options yazdığımızda payload optionları görünmüyordu ama birkaç payload gönderip öldükten sonra çalışmayı durdurup options yazarsak payload options gelir.

set payload linux/x86/ tab tab yaparsak birçok payload opsiyonu karşımıza çıkar.

Seçtiğimiz payloadı yazarken shell yazıp taba basmamız yeterli payload otomatik dolacak.

Yeni payloadımız bu şekilde görünüyor. Şimdi tekrar run edeceğiz. Böylece bu payload ile sonuç başarılı oluyor ve makineye girip kontrolü ele alıyoruz.

Reverse Shell ve Bash Shell

İki önemli kavram incelememiz gerekiyor. Birincisi shell diğeri de payload. Öncelikle shell ile başlıyoruz. İlk türümüz reverse shell. Shell dediğimizde makineye erişim anlamamız gerekiyor. Reverse shell dediğimizde hedefin saldırgana bağlanması durumunu söylüyoruz.

Bind shell ise tam tersidir. Bir sploit göndeririz ve o belli bir portu dinler. Saldırgan da o port ile giriş yapar. Reverse shell’de kurban bağlantı isteyince exploit gönderir.

Nessus ile Tarama

Nessus vuln tarayıcıdır. Sistemdeki olası zaafiyetleri tarar.

https://www.tenable.com/downloads/nessus?loginAttempted=true bu adrese gidip debian veya ubuntu versiyonu indirilebilir.

İndirdikten sonra o directory de dpkg Nessus…(press tab) diyerek depackage ediyoruz. Depackage ettikten sonra otomatik yüklenir ve /etc/init.d/nessusd start diyerek başlatılabilir. Çalıştırdıktan sonra karşımıza şöyle bir ekranda açılır :

Paketlerin yüklenmesi vs biraz vakit alacaktır. Daha sonra nessus essentials seçip kullanıcı adı şifre mail vs bilgileri giriyoruz. Daha sonra da yükleme tamamlanır ve login ekranı gelir. Login yaptıktan sonra şu ekrana geçiyoruz.

Daha sonra da create new scan diyoruz. Burada birkaç seçenek var. Basic network scan ile başlayacağız ama advanced scan gibi seçenekler de mevcut.

Değerleri girdikten sonra yandaki tabdan scan istediğimiz bir zamanda yapabiliriz. Otomatik olarak o seçtiğimiz tarih ve saatte yapar. Discovery sekmesindeyse port scan dersek most common portları tarar hepsini seçersek hepsini tarar. Assesmentta süreyi kısaltmak için bilindik vuln. tara diyebiliriz.

Bütün ayarlamaları yaptıktan sonra kayıt edip run ediyoruz.

Advanced scan kısmında daha detaylı taramalar yapabiliriz. TCP/UDP ping gönderme vs seçenekleri var.

Assesment kısmında hydra aktif olursa şifreleri brute force yapmaya çalışır.

Scan bittikten sonra vuln.ları kritiklik düzeyine göre sıralar.Scan sonuçlarını görmek istediğimizde önce şöyle bir ekran görürüz.

Sonrasında da üst tablardan Vulnerabilities kısmına tıklayınca bulunanlar listelenir.

Ancak bunun sonuçlarına tamamen güvenemeyiz. Tarama sonuçlarını test edip görmemiz gerekiyor. Apache server örneğinde burp suite ile request atıp oradan dönen response’daki header’ın apache versiyonu ile tarama sonucunda elde ettiğimiz sonuç uymuştu. Yine böyle bir yöntem izleyip bulgularımızı doğrulamamız gerekiyor.

 

Masscan Ve Metasploit ile Tarama

ÖZET :

masscan -p1-65535 192.168.57.134 komutuyla çalıştırabiliriz.

Metasploit ile taramak için :

mfsconsole yazıp search portscanner diyoruz. Daha sonra da syn toolunu kullanıyoruz. Bu toolun seçeneklerini set rhosts 192.168.57.134 ve set ports 1-65535 komutlarıyla belirleyip run diyoruz ve tarama başlıyor. nmap yüklü olmayan makinelerde kullanışlı olabiliyor.

 

https://github.com/robertdavidgraham/masscan adresinde masscan tooluna ulaşabiliriz. Bu tarama aracı ile bütün internet de taranabilir.

masscan -p1-65535 192.168.57.134 komutuyla çalıştırabiliriz.

nmap -T4  -p- 192.168.57.134 komutu da nmap ile yapılan versiyonudur.

Masscan -sS yazmadığımız zaman otomatik olarak bu opsiyonla tarama yapmak için çalışır.

Bazen massscan bazen de nmap daha hızlı çalışır.

Metasploit ile tarama yapmak için msfconsole yazıp metasploit framework console açıyoruz. Buradan search portscan yazdığımızda da portscanner araçları çıkıyor karşımıza.Bu toolardan syn isimli toolu kullanabiliriz.

use auxiliary/scanner/portscan/syn  yazıp daha sonra da options yazıp seçeneklerine bakabiliriz.

Daha sonra set rhosts 192.168.57.134 ve set ports 1-65535 yazıp seçenekleri ayarladıktan sonra run diyoruz. Çok fazla detay vermiyor ama hangi portun açık olduğunu söylüyor.

Scan&Enumaration Genel Notlar

Burada en çok dikkatimizi çeken mod_ssl/2.8.4 oluyor bununla ilgili bir buffer overflow exploiti olabilir sonucunu taramadan çıkartmışız. Öyleyse googledan mod_ssl/2.8.4 exploit yazıp araştırıyoruz.

 

Exploit db de karşımıza hazır kodu çıktı. Bir de github sayfasında güzel bir örnek var. Bu exploit-db deki outdated olduğu için çalışmıyor bu yüzden github linkindekini alıyoruz.

https://github.com/heltonWernik/OpenLuck

 

Ayrıca listemizde yer alan diğer Apache httpd 1.3.20 bilgisini de Apache httpd 1.3.20 exploit yazarak arayabiliriz. Buradan da cvedetails.com sitesinden kritik exploitlere vs bakabiliriz. Kırmızı olanlar kritik demektir.

Daha sonra da Samba 2.2.1a exploitine bakabiliriz. Buradan da rapid7 sitesinden exploiti araştırabiliriz ve bunun için de exploit indirebiliriz.

https://www.rapid7.com/db/modules/exploit/linux/samba/trans2open

Bunları not aldıktan sonra lokalde de istediğimiz gibi arama yapabiliriz. Bunun için searchsploit komutunu çalıştırabiliriz. searchsploit Samba yazıp exploitlere bakabiliriz.

Notların genel durumu şu şekilde olabilir :

 

 

Enumaration SSH

nmap taramamız esnasında OpenSSH 2.9p2 verisine ulaşmıştık. Şimdi de bu porta bağlanıp ne olup bittiğine bakmaya çalışacağız.

ssh <ip> komutunu yazıyoruz. Doğru bir key bulamadık hatası aldık.

ssh <ip> -oKexAlgorithms=+ diffie-helman-group1-sha1 yazıyoruz. diffie-helman-group1-sha1 bu kısım ilk ssh bağlantı denememizde karşımıza çıkmıştı. Şimdi bir error daha aldık o da cipher hatası son olarak komutu şöyle düzenliyoruz :

ssh <ip> -oKexAlgorithms=+ diffie-helman-group1-sha1 -c aes128-cbc Şimdi bağlanmak istediğimizde bağlanabiliyoruz. Buraya bağlanmak istediğimizde bazen banner ile birkaç bilgi verilebiliyor. Şu kişi tarafından geliştirildi vs diye. Öyle birşey olursa diye bu bağlanmayı denedik. Daha sonra brute force amacıyla da kullanacağız.

Enumaration SMB

ÖZET :

443 portunda SMB bulunur. SMB network file sharing için kullanılır. nmap taramamızda bu portun açık olduğunu görmüştük. Şimdi bu port üzerine gidip bunu exploit etmeye çalışıyoruz. 

Bu portu exploit etmek için msfconsole komutunu yazararak metsploit frameworke erişiyoruz. Bu frameworkten search smb  komutunu yazarak smb ile ilgili exploitleri listeliyoruz. auxiliary/scanner yazan kısımda ikinci kısım bize o exploitin yapacağı aksiyonu gösterir. Bunların arasında kodu 60 olan auxilary/scanner/smb/smb_version exploitini seçiyoruz. Bu exploiti seçip çalıştırdıktan sonra options komutunu çalıştırarak seçeneklerini görebiliriz. Seçeneklerden RHOSTS=>remote hosts seçeneğini set RHOSTS 192.168.57.134 şeklinde kurbanın ip’sini girerek belirliyoruz. Daha sonra da run diyoruz. SMB => Unix  (Samba 2.2.1a) bize bu bilgileri veriyor ve bunu recon notlarımıza ekliyoruz.

Daha sonra da smbclient  -L \\\\192.168.57.134\\  ==> -L List out files komutunu çalıştırarak başarılı olursak bütün kullanıcıları görebiliriz ve workarea’ya ulaşabiliriz. Bu komuttan sonra önce admini sonra  da kullanıcıları deneyebiliriz.

smbclient  -L \\\\192.168.57.134\\ IPC$ bu şekilde de kullanıcıyı denemiş oluyoruz.

 

Bu derste de 443 portuna bakacağız. Bu portta smb bulunur. Bu port genelde file sharing için kullanılır. Özellikle work environment tarafından kullanılır. “The Server Message Block (SMB) protocol is a network file sharing protocol that allows applications on a computer to read and write to files and to request services from server programs in a computer network”

nmap taramamızda smb2 ile ilgili bir bilgi almıştık. Şimdi bunun üzerine gideceğiz ve 443 portunda zaafiyet arayacağız.

Bu açığı araştırmak için msfconsole komutunu çalıştıracağız. Bu komut metasploit frameworküne erişmemizi sağlar.

Buradaki auxilary modülleriyle her türlü port taramalarını ve information gathering yapabiliriz. Post exploitation için postları kullanabiliriz.

Komutu çalıştırdıktan sonra artık metasploit konsolunu aktif hale getirdik.

search smb komutunu çalıştırdığımızda karşımızda 121 modül çıkıyor.

Bu çıkan sonuçlarda auxilary/fuzzers/smb.. gibi bir yapı var. Birinci kısım bunun auxilary olduğunu sonra gelen -fuzzers,scanner,gather vs- gibi yazan kısım yaptığı işlemi gösteriyor.

Burada auxilary/scanner/smb/smb_version exploitini kullanacağız. Numarası da 60.

msf5> use 60 veya use auxilary/scanner/smb/smb_version  komutunu yazıyoruz. Daha sonra karşımıza gelen şöyle oluyor

msf5> auxiliary(scanner/smb/smb_version) > info

yazarsak basit seçenekleri ve kullanım biçimine dair bilgiler geliyor.

msf5> auxiliary(scanner/smb/smb_version) > options 

yazarsak seçenekleri görebiliyoruz.

 

Bu seçeneklerde RHOSTS = Remote Hosts anlamına gelir. Daha sonra gelecek LHOST iste localhost anlamına gelir. RHOST seçeneği yerine saldıracağımız adresi gireriz. Buraya bir makine verebileceğimiz gibi belli bir ip aralığı port aralığı vs de verebiliriz. Eğer biliyorsak SMBDomain, pass user gibi verileri de girebiliriz.

set RHOSTS 192.168.57.139 yazarak bu seçeneği aktif hale getirebiliriz. Daha sonra da run komutunu çalıştırıyoruz.

Örnekte çok fazla bilgi vermemiş gibi görünüyor ama orada SMB => Unix  (Samba 2.2.1a) yazıyor bu bilgiyi de recon notlarımıza ekliyoruz.

 

smbclient  -L \\\\192.168.57.134\\  ==> -L List out files

Server EXTENDED_SECURITY desteklemiyormuş ve anonim girişimiz başarılı oldu. Enter dediğimizde anomin giriş başarılı oluyor ve bize kullanıcıları listeliyor. Kullanıcılardan admini denediğimizde hata alabiliriz ama IPC$ deneyince kioptrix makinede başarılı oluyoruz.

smbclient  -L \\\\192.168.57.134\\ IPC$ yazıp enter diyince anonim olarak bu porttan giriş yapmış oluyoruz. ls yaptığımızda  Access denied oluyor ve dead ende çıkıyoruz. Ama bu giriş ileride işimize yarayacak.

Enumarating Http/Https Part-2

ÖZET :

Bu derste 3 farklı tool inceledik. Bu toolar gobuster,dirb ve dirbuster toolarıdır. Biz burada dirbuster& komutuyla bu toolu kullandık. Bunların amacı web directoryleri bulmaktır. Bu amaç için de wordlistleri kullanır. Tool için wsi seçtikten sonra file extension olarak sitenin yapıldığı teknolojiye bağlı php,pdf gibi uzantılar girebiliriz. Daha sonra bu taramanın sonuçlarından dönen verileri inceleyip burp suite ile request atıp responselarını inceleyebilir repeater ile farklı requestler gönderip sonuçlarını inceleyebiliriz. Buradan edindiğimiz verileri de recon notlarımıza ekleyebiliriz. Ayırca burp suite de target belirleyip sadece o scopeda çalışmayı da sağlayabiliriz.

 

Şimdi kullanabileceğimiz 3 farklı tool var. Bunlar gobuster,dirb ve dirbuster. dirbuster& çalıştırdığımızda şöyle bir ekran çıkıyor karşımıza :

Buradan Browse kısmına tıklayıp  (/ ile gösterilen ) base foldera gidiyoruz. Oradan usr ve oradan da share klasörlerine gidiyoruz. Buradan da wordlisti seçiyoruz ve onun içinden dirbuster klasörüne giriyoruz. Burada directory listeleri var. Small list var medium list var. Deneme amacıyla small list seçiyoruz. Burada yapmaya çalıştığımız şey web directory’leri bulmaya çalışıyoruz. Bu yüzden wordlist kullanıyoruz. Örnek olarak abc.com/admin , abc.com/admin123 gibi directoryleri wordlist yardımıyla tarayıp bulmaya çalışıyoruz. Bu wordlistlerde yüzlerce binlerce yaygın directory isimleri bulunuyor.

Ayrıca buradaki file extension kısmından php,txt,pdf,docx,zip gibi uzantılar girebiliriz. Böylece sitede bu uzantılarla arama yapar. Bu yüzden sitenin hangi teknolojiyle yazıldığını bilmek oldukça faydalıdır. Buraya çok fazla uzantı girmek tarama süresini uzatır. Bu yüzden ne aradığını bilmek önemlidir.

Daha sonra result sekmesinde sonuçları görebiliriz.

Bilgi edinme için dikkat edeceğimiz bir diğer konu da sayfanın source kodudur. Burada commentlere vs bakıp bilgi edinebiliriz.

Sonrasında Burp Suite geçip oradan requesti gönderebiliriz. Ayrıca requesti repeater’a aktardığımızda oradan istediğimiz değeri değiştirip gönderme ve sonucunu gözlemle imkanımız oluyor.

Burp Suite de target sekmesine gelip filter kısmına tıklayarak sadece o sitenin kaynakları üzerinde çalışmayı sağlayabiliriz. Daha sonra response bakınca bunun apache server olduğunu görebiliyoruz server headerda. Nikto taramamızda da böyle bir sonuçla karşılaşmıştık. Bunu da not alıyoruz.

dirbuster çalışması biraz sürecektir. Çünkü yüzlerce binlerce request atıyor ve bunların sonuçlarını topluyor. Daha sonra buradan 200 status kodlu sayfaları dolaşıp ne olduğuna ne işe yaradığına requestlere ve get,post cevaplarına bakıp exploit edebileceğimiz birşeyler var mı ona bakacağız. Buradan edindiğimiz bilgileri de recon notlarımıza ekleyebiliriz. kioptrix level 1 de bir usage sayfasının 200 status koduyla döndüğünü gördük ve bunun en altında webalyzer kullanıldığını gördük. Bunu da notlarımıza ekliyoruz.