top of page

Nmap İstekleri ve Gelen Sonuçlar

  • İbrahim Mert COŞKUN
  • Dec 5, 2019
  • 4 min read

Updated: Dec 11, 2019


Selamlar. Bu yazımda sıkça kullanılan bir araç olan "nmap"in arka yüzüne değineceğim. Nmap de birden fazla tarama türleri var. Bu tarama türleri sık kullanılmasına rağmen işin arka planında neler oluyor, hangi tarama ne yapıyor ve bunun sonucunda bize nasıl cevaplar geliyor bilmiyoruz. Bu makale Nmap'in farklı şekillerde yapılan tarama türlerinde arka planda neler oluyor, cevaplar neye göre geliyor gibi sorulara cevap olması niteliğinde hazırlanmıştır.

Tarama şekillerine başlamadan önce gelen sonuçların ne anlama geldiğini belirtelim;

Open(Açık): Gayet açık aslında. Portun erişilebilir durumda olduğunu ve gelen bağlantıları kabul ettiği anlamına gelir.

Closed (Kapalı): Porta erişilebiliyor ancak bir SYN paketi gönderdiğimizde RST cevabı alıyoruz. Yani paketi alıyoruz ve bize paketi RST olarak geri gönderiyor. Porta erişilebiliyor ancak işlem yapılamıyor.

Filtered (Filtreli): Dönen tepkiler üzerine bir paket filtrelemesi mekanızması vardır. Sebebi belli; Firewall. Bu port muhtemelen bir firewall arkasındadır ve hiç bir şekilde bir cevap alınamıyor. Port açık mı yoksa kapalı mı olduğuna dair herhangi bir karar verilemiyor.

Unfiltered (Filtresiz): Portlar erişilebilir ancak Nmap portların açık veya kapalı olduğuna karar veremiyor. Dikkat edilmesi gereken nokta ise bu durum sadece "ACK Scan" için geçerlidir.

Open|filtered (Açık|Filtreli): Nmap portların açık veya filtrelenmiş olduğuna karar veremez. (Yalnızca UDP, IP Protocol, FIN, Null, Xmas taramalar için geçerlidir.)

Closed|filtered (Kapalı|Filtreli): Nmap portların kapalı veya filtreli olduğuna karar veremez. (Sadece Idle Scan için geçerlidir)

Gelen sonuçları öğrendik. Tarama türlerine geçelim

Nmap Tarama Türleri

TCP Syn Tarama (Half Open)

Taramayı yapacak olan makinanın yani kaynak makinanın hedef makinaya "TCP Syn" bayrağı göndererek, hedef makinadan dönen cevaba göre durum belirlenir. Eğer hedef makinadan "RST+ACK" bayrağı dönerse port kapalı(closed)dır. Yok eğer "SYN+ACK" bayrağı dönerse portun "açık(open)" olduğu anlaşılır.

Son olarak kaynak makina "RST" segmentli bayrağı gönderir ve bağlantıyı koparır. Burada "TCP üçlü el sıkışma (TCP three-way-handshake)" tamamlanmaz. Böylelikle el sıkışma tamamlanmadığı için hedef sistemde herhangi bir iz bırakılmamaya çalışılır. Komutu;

nmap -sS -v [Hedef_IP]

TCP Connect Tarama

Yukarıda ki "TCP Syn tarama" ile benzerlik gösterir. Farkı; kaynak makinanın gönderdiği "SYN+ACK" bayraklı segmentten sonra, hedef makinaya "ACK" paketi gönderilir ve üçlü el sıkışmayı tamamlar. Komutu;

nmap -sT -v [Hedef_IP]

FIN (Stealth) Tarama

Hedef makinaya gönderilen istek TCP olmadan gönderilir. Hedef makinaya "FIN" bayraklı segmentler gönderilir. Eğer istekte bulunan port "kapalı" ise karşıdan bize "RST+ACK" paketi gelecektir. Eğer port "açık" ise hedef makinadan bize herhangi bir geri dönüş olmayacaktır. Komutu;

nmap -sF -v [Hedef_IP]

Xmas Tarama

Bu taramada URG, PSH ve FIN bayrakları set edilerek hedef makinaya gönderilir. Bu aşamadan sonrası "FIN Tarama" ile aynıdır. Eğer paketin istekte bulunduğu port kapalı ise hedef makina bize "RST+ACK" segmenti yollayacaktır. Komut;

nmap -sX -v [Hedef_IP]

Null Tarama

Hiç bir bayrağın bulunmadığı tarama türüdür. Yapılan istekte portun durumunun anlaşılması için verilen tepkiler "FIN Scan" ile aynıdır. Gönderilecek olan istekten eğer "RST+ACK" port "kapalı" olarak dönecektir. Eğer port açık ise herhangi bir geri dönüş sağlanmayacaktır. Komut;

nmap -sN -v [Hedef_IP]

Ping Tarama

Bu tarama türünde hedef makinaya "ICMP echo" paketi gönderilir. Hedef makinada herhangi bir filtreleme olmuyor ise hedef makinadan "ICMP Echo" paketi gönderilecektir. Eğer hedef makina ICMP paketlerini filtreliyor ise herhangi bir cevap dönmeyecektir. Komut;

nmap -Sp -v [Hedef_IP]

UDP Tarama

Hedef sisteme bir "UDP" datagramı gönderilir. Eğer ki hedef makina "ICMP Port Unreachable" döndürüyor ise, hedef makine kapalı olarak kabul edilir. Herhangi bir tepki döndürmeyen hedef makina open|filtered kabul edilecektir. UDP datagramıyla cevap döndüren hedef makinaya ait port ise açık kabul edilecektir. Komut;

nmap -sU -v [Hedef_IP]

ACK Tarama

Bu taramada hedef sisteme "TCP ACK" segmenti gönderilir. Eğer hedef makina "ICMP Destination Unreachable" mesajını dönerse port filtreli olarak kabul edilir. Eğer hedef makina "RST" segmenti geri döner ise port "unfiltered" olarak kabul edilir. Komut;

nmap -sA -v [Hedef_IP]

Window Tarama

Window Scan; az önce bahsettiğimiz "ACK Tarama" türüne benzer ancak bir farkı vardır. Window scan portların "Açık" olma durumunu gösterebilir. Peki bunu nasıl belirler? İşin büyüsü "TCP Windowing"den gelmektedir. Bazı TCP segmentleri RST bayraklı segment dönmek istediği zaman, özel bir window boyutu sağlarlar. Hedeften dönen RST bayraklı paketlere cevap döndüreleceği zaman, kendilerine özel bir window boyutu sağlarlar. İşin mantığı;

Hedeften gelen makinaya ait gelen "kapalı" bir porttan RST frame'in boyutu sıfırdır. Ancak hedeften gelen portun açık olarak geldiği zaman ise yani port "açık" olduğu zaman gelen RST paketinin window boyutu farklı olur, büyük olur. Böylelikle portun açık mı kapalı mı olduğu belirlenebilir. Komut;

nmap -sW -v [Hedef_IP]

Nmap'in Kuzusu: Nmap NSE (Nmap Script Engine)

NSE elimizin altında bulunan ufak tefek ama etkili bir araçtır. Tarama sonunda yada tarama esnasında nmap scriptleri kullanılabilir. Bu bize zaman kazandırdığı gibi tarama sonrası işlemlerden biri olan "Vulnerabilities Scanning" işleminde hem fikir sahibi olmamızı hem de daha hızlı bir şekilde yol almamıza yardımcı olur.

NSE; nmap'in güçlü araçlarından biridir. NSE'yi; normal Nmap komutlarıyla yapılamayan ya da yapılması çok zor olan işlemlerin daha kolay bir şekilde yapılmasının sağlandığı bir betikler bütünü olarak tarif edebiliriz. Nmap ile birlikte birçok betik kütüphanesi hazır olarak gelmektedir. Fakat NSE aynı zamanda kullanıcıların ihtiyaç duydukları betikleri kendilerinin de yazabilmelerini ve bunları paylaşabilmelerini de sağlar. NSE'de yer alan betikler aynı anda paralel olarak da çalıştırılabilirler. NSE kullanarak;

1) Ağ keşifleri: Hedef etki alanlarının domin hakkında detaylı bir whois bilgisi toplayabilir. Hedef sistemlerin SNMP sorguları yapılabilir ve mevcut NFS/SMB/RPC paylaşım ve servisleri listelenebilir. 2) Zafiyet (vulnerability) tespiti: Normal Nmap komutlarıyla hedef sistemlerin zafiyetleri tam anlamıyla tespit edilememektedir. NSE ile bu zafiyetler daha kolayca belirlenebilmektedir. Nmap ile hazır gelen birçok zafiyet tespit betiği bulunmaktadır. Fakat Nmap'in temel işlevinin bir zafiyet tarayıcısı olmadığının bilinmesi gerekir. 3) Arka kapı (backdoor) tespiti: NSE bazı arka kapı programlarını da tespit edebilmektedir. 4) Zafiyet sömürmesi (Vulnerability exploitation): NSE ile sadece hedef sistemlerin zafiyetleri tespit edilmekle kalmayıp bu zafiyetlerin bazıları kullanılarak hedef sistemlere sızılması da mümkün olmaktadır. Fakat Nmap'in temel amacı Metasploit gibi bir zafiyet sömürü programına dönüşmek değildir. Buna rağmen NSE ile hedef sistemlerdeki bazı zafiyetlerin sömürülmesi de mümkündür. NSE scriptleri "Lua" dilinde yazılır ve .nse uzantısına sahiptirler. Scriptler, Nmap dizininin altında "scripts" dizini altındadır. Bununla beraber "script.db" nmap dizininin altında bulunur ve tüm kategorileri burada saklanmaktadır. Önemli olan şudur ki; NSE scripti çalıştırmadan önce hedefteki makinanın Nmap çıktılarına dayanarak gerekli kriterleri karşılayıp karşılaşmadığına karar verir. Eğer cevap olumluysa scriptin çalıştırılmasına onay verilir.

Yararlandığım Kaynaklar;

- Çıtak, Ömer(2016), Ethical Hacking Offensive & Defensive

- https://www.wikizeroo.org/index.php?q=aHR0cHM6Ly90ci53aWtpcGVkaWEub3JnL3dpa2kvTm1hcA

- https://www.teakolik.com/nmap-script-motoru-nmap-scripting-engine-%E2%80%93-nse/


Comments


Dünya üzerinde haksızlığa uğrayan, yardım bekleyen, Hak arayan onca mazlumun yanında bu sitenin haklarının pekte bir önemi yoktur. Tüm yazıları kullanabilirsiniz.

bottom of page