Hoşgeldin Misafir

NMAP ile İleri Seviye Firewall ByPass Teknikleri

CwMuhibban

20 Ara 2025
67 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Selamın aleyküm

Bu konumuzda alışılagelmiş bilindik Nmap komutlarının yanı sıra ileri seviye Nmap komutları ile güvenlik duvarlarının nasıl ByPass edildiği hakkında bahsedeceğiz.

Burada Linux ile Metasploitable aracılığı ile adeta bir laboratuvar ortamında hareket edeceğiz. İlk komut ile başlayalım ancak hepsinden önce bir tcpdump ile ağda bir gezintiye çıkalım…

  • Komut: sudo tcpdump -i eth0 host <hedef ip> -n

Bu komut ile ağdaki hareketleri izlemeye durarken diğer işlemlere devam edelim. (Bu konuya tekrar geleceğiz.)

as1n08j.png


  • Komut: sudo nmap -f -sS -p 22,80,445 <hedef_ip>

Burada ve konumuzun devamı boyunca benim Metasploitable IP adresim olan 10.0.2.6 IP adresi üzerinden işlemlerimizi yapacağız.

Bu komut ile nmap aracımızı. -f (Fragmentation) ile IP paketlerini küçük parçalara ayır, -sS (TCP SYN Scan) ile hedef ip adresine bağlanabilir miyim? diye sor, Evet cevabını aldığında anda işlemi tamamla ve hedefte adeta resmi bir kayıt bırakma, -p 22,80,445 ile sadece bu 3 portu yani; SSH, HTTP, SMB’yi kontrol et dedik.

Buradaki amaç: Normalde güvenlik duvarları veya IDS sistemlerinin amacı bilindiği üzere ağdan geçen her bir paketi tek tek incelemektir. Normal bir nmap taramasında firewall bunu görür ve direk kardeşim senin buraya girmeye yetkin yok! der ve işlemi ortadan kaldırır.

-f ile parçalanmış bir tarama yaptığımız için, NMAP var olan paketi 8 byte’lık küçük parçalara ayırır, eski ve orta seviye bir Firewall (Güvenlik Duvarı) bu kadar küçük parçaları birleştirip analiz edecek kadar zeki değildir. Küçük küçük gelen parçalarda zarar bir şey yoktur diyerek es geçer. Nmap -f komutunu temkinli gönderir güvenlik duvarı da Ne oluyor burada? diye düşünmez. Bizim de içeriye girmemize izin verir.

e4dtbhl.png


  • Komut: sudo nmap -D RND:10 -sS -p 80 <hedef ip>

Burada ise adeta bir yemleme taktiği uyguluyoruz.

-D (Decoy) Burada Nmap’e kardeşim sadece biz değil, başkaları da sistemi tarıyormuş gibi davran! dedik. RND:10 ile Random yani rastgele 10 tane IP adresi üret, ürettiğin bu sahte IP adresleri ile benim IP adresimi hedefe topa tut.

Normalde sistem çok sayıda paket, port taraması yani SALDIRI denklemine karşılık gelen her şeyi ŞÜPHELİ olarak alıgar ve engeller. Biz burada sahte bir kalabalık yarattık. Log kayıtları incelendiğinde ve saldırı tespit-engelleme sistemleri devreye girdiğinde hangi IP adresinin gerçekten taradığını ayırt edemez. Hangisini engelleyeceğim? denklemine girer ve bunun bir hata olduğunu düşünür veyahut trafik yoğunluğu olarak algılar. Bu şekilde pasif duruma düşer.

hrebcku.png


Burada nmap sorgusunun gayet normal olduğunu görüyoruz ancak asıl mevzu arka planda… Şimdi yukarıda yazdığımız tcpdump komutuna bir göz atalım. Bakalım arka planda neler olmuş gerçekten?

Normal ağ trafiğinin yanı sıra bizim bu rastgele ürettiğimiz IP adresleri de burada gözükür olmuş. Yani bizim IP adresimiz ve rastgele oluşturulan adeta sihir görevi gören bu IP adresleri aynı anda hedef gösterdiğimiz IP 80 portuna SYN - Merhaba diyor! Karşı sistem buradaki sahte IP adreslerine de cevap gönderiyor. Hem sistemi aldattık hem de random IP adresleri ile trafiği meşgul ettik.

dznj98y.png


  • Komut: sudo nmap -g 53 -sS -p 80,445 <hedef_ip>

Yukarıda kod = Source Port Spoofing

Yani kaynak portlu bir yanıltma… Yine nmap çıktısında portların açık olduğunu göreceğiz ancak “kapalı kapılar ardında” kılık değiştirerek gezintiye çıkacağız!

Normalde tarama yaptığımız zaman bilgisayarımız karşı tarafa bağlanmak için rastgele yüksek bir port seçer. Ama biz -g 53 komutu ile nmap’a kardeşim benim paketlerimi gönderirken sanki bir DNS sunucuymuşum gibi hareket et.! Tüm paketlerin çıkış kapısını 53 olarak ayarla dedik. 53. Portu seçmemizin nedeni nedir? Sorusuna gelecek olursak; sistem yöneticileri ve eski nesil güvenlik duvarları ağdaki işlemlerin yani rutin işleyişin devam etmesi için bazı portlara ayrıcalık tanımaktadır. 53 yani DNS kritik bir rol oynar. Eğer ki firewall bu porttan gelecek trafiği çok sıkı bir şekilde denetlerse sistemde yavaşlamalar ve çökmeler meydana gelebilir.

İşte burada biz devreye giriyoruz. -g 53 ile Ben zararsız bir DNS trafiğiyim kardeşim dedik. Bu kod ile kendimizi bir DNS olarak gösterdik. Karşı sistemde bizim 53. porttan geldiğimizi anladı ve muhtemelen bu gelen kişi güvenilirdir diyerek içeri aldı bizi!

onqlrzt.png


Açık olan tcpdump trafiğini izlediğimizde ise bariz farkı görüyoruz.

Normal işlemde: Bizim IP adresimiz (yüksek bir port) > hedef IP’nin 80. portu iken;
Kodu çalıştırdığımız sırada Bizim IP adresimiz 53. Port > Hedef IP 80. port olarak gözükür.

Bu şekilde karşı taraf bizi 53. Port olarak algıladığı için Hoşgeldin diyerek bizi karşılıyor.

3gj94n7.png


  • Komut: sudo nmap --data-length 42 -sS -p 21,22,25 <hedef_ip>

Normal bir nmap -sS SYN taraması sırasında gönderilen paketlerin içi boştur, sadece başlık bilgilerini taşırlar, yani içlerinde herhangi bir veri bulunmamaktadır.

-data-length 42 ile; Nmap her bir tarama paketinin sonuna 42 byte boyutunda rastgele anlamsız, gereksiz yani çöp veriler ekle dedik. Neden 42 diye soracak olursak buradaki veri tamamen bize kalmış. Önemli olan paket boyutunun dışına çıkmaktır.

IDS ve IPS sistemleri trafiği analiz ederken içindeki belli başlı imzalara bakarlar. Eğer bir paket sadece TCP SYN imzası taşıyorsa ve bunun veri uzunluğu 0 ise, bunun Nmap taraması olduğunu anlayıp engellemektedir. Biz burada paketin içerisine 42 byte boyutunda veri eklemesi yaptığımız için paketin içindeki asıl imzayı bozduk. Sistem bizim yaptığımız işlemi port taraması olarak değilde bir uygulama veri gönderiyormuş gibi görür.

g7cqhiz.png


Arka plandaki tcpdump kısmına göz atalım. Bakalım ne gibi değişikler olmuş.

length 42 olarak olarak gözüken kısımlar dikkatinizi çekmiştir.

Arka planda ağda her zaman bir veri trafik mevcuttur. Bunların boyutları içindeki veriye göre değişir. Nmap gibi tarama araçları, firewall'a yakalanmamak için normalde içi boş (length 0) olan paket yapılarını kullanır. Biz buradaki boşluğu doldurarak sistemi aldattık "ben bir tarama aracı değilim sadece, bak normal bir uygulama trafiğiyim kardeşim" dedik karşı tarafa. Böylelikle aldatma sanatını da ustaca kullanmış olduk.

m4afmdt.png


  • Komut: sudo nmap -T1 -sS -p 80 <hedef_ip>

Şimdi hızla akıp giden veri trafiğine dur demenin zamanı? Yani karşı sistem/güvenlik duvarı yoğun hızlı bir veri trafiğinde sistemi, o an gelen paketleri algılayıp engelleyebilir. Bunun önüne geçmek için adeta bir kaplumbağa gibi hareket edeceğiz.

Resimden de anlayacağınız üzere tarama tam 43.26 saniye sürdü. Normalde bu kadar uzun sürmez saniyeler içinde işlem yapılırdı.

Komutun detaylarına bir göz atalım.
Nmap tarama aracında 0'dan 5'e kadar zamanlama şablonları yer alır. Normalde Nmap’ın varsayılan hızı T3’dür. Biz T1 ile paketler arasına yaklaşık 15 saniyelik bir boşluk koyduk.

IDS/IPS sistemlerinin mantığı şudur; Bir IP adresi, 1 saniyede 5’ten fazla farklı porta erişmeye çalışıyor ise ALARM - SALDIRI = ENGEL formülü devreye girer.

Biz yukarıda benzetmeyle adeta bir kaplumbağa kılığına girdik. Burada farklı bir ByPass tekniği kullandık. Sistem -T1 ile bizim gönderdiğimiz o yavaş ve masum (!) diye tabir ettiğimiz paketleri normal bir ağ trafiği olarak algıladı ve ALARM = ENGEL vermedi.


lcjehsu.png

  • Komut: sudo nmap -sA -p 80,443 <hedef_ip>

Burada diğer komutların sonuçları gibi bir sonuç almadık. Open ya da Closed gibi. Buradaki sonuç “unfiltered” yani filtrelenmemiş. Peki nedir bu?

Burada karşı tarafta bir firewall var mı? Varsa ne kadar güçlü? sorusuna geliyoruz. Önceki taramalarımızda SYN scan yani kapıyı çalıp “Merhaba” dedik. Burada ise -sA yani ACK Scan devreye girdi. Kapıyı çalmıyoruz. Karşı sisteme kardeşim bana nereden geliyorsun diye soru sorma ben zaten içerideydim, içerideki bir arkadaşım soru sormuştu ben ona cevap veriyorum diyoruz…

Hedef sisteme ACK paketi gönderdik. Buradaki amaç karşı tarafı analiz etmek.
Eski tip bir firewall sadece port numarasına bakar. Bu 80, sen geç der ve gönderdiğimiz ACK paketini geçirir. Nmap unfiltered der. Ancak ileri seviye modern firewall da durum farklıdır. Bu firewall’lar bağlantıların kaydını tutar. Bizim daha önce bir SYN paketi göndermediğimizi bilir ve cevaben "Sen kiminle konuşuyorsun?" der ve ACK paketini anında bloklar.
Bu durumda Nmap filtered der. Bizde "unfiltered" sonucu çıkmasının nedeni Metasploitable’ın sert bir güvenlik duvarı olmamasından kaynaklıdır. Yolun temiz olduğunu görerek hareket edebiliriz demek.

87yc5f2.png


  • Komut: sudo nmap -Pn -sS -p 80 <hedef ip>

-Pn parametresiyle içeriye sessiz bir şekilde içeri sızma denemesi yapabiliriz.

Nmap, bir hedefi taramaya başlamadan önce "Orada mısın?" demek için bir ICMP yani Ping paketi gönderir. Eğer ki hedef sistem/güvenlik duvarı Ping isteklerini blokluyorsa, Nmap "Bu makine kapalı" der ve taramayı durdurur. Biz karşıda bir sistem olduğunuzdan eminiz, karşımızdaki sistemi hedef olarak aldık, -Pn parametresi ile Nmap'e kardeşim sen hedefin ayakta olup olmadığını kontrol etme, doğrudan taramaya başla! dedik.

Birçok modern firewall gelen Ping isteklerini anında engeller. Eğer -Pn kullanmasaydık ve karşımızdaki sistemde ping engelleyen bir duvar olsaydı, port açık olmasına rağmen Nmap hiçbir sonuç getirmeyecek, işimize yaramayacaktı.

g8vd2n1.png


  • Komut: sudo nmap --scr*pt firewall-bypass --scr*pt-args firewall-bypass.helper='ftp',firewall-bypass.targetport=21 <hedef ip>

Bu scr*pt komutu, hedef sistemdeki duvarın arkasına sızmak için protokollerin (genellikle FTP) zayıflıklarını kullanılarak hareket eder. Güvenlik duvarının FTP trafiği için açtığı geçici kapıları sömürerek diğer yasaklı portlara erişmeye çalışır.

Burada aynı zamanda Nmap’ın sadece bir port tarama aracı değil, aynı zamanda protokol açıklarını kullanarak güvenlik duvarlarını manipüle edebilen bir araç olduğunu da ispatlamış ve görmüş olduk. Bu scr*pt komutu ile hedef sistem üzerinden yani Metasploitable üzerinde 23 tane açık port buldu.

rj7mg9o.png