Merhaba ağın derinliklerindeki yol arkadaşlarım, gecenin bu saatinde kahveler hazır mı? Çünkü bugün, siber güvenlik dünyasının İsviçre çakısı diyebileceğimiz, ancak ne yazık ki çoğu zaman sadece "port tarayıcı" olarak hafife alınan bir aracı, Nmap'i, tüm ihtişamıyla masaya yatıracağız. Yıllardır EVE-NG lab ortamlarında paketlerin nefes alıp verişini dinlemiş, ağların kılcal damarlarına kadar inmiş biri olarak size şunu net söyleyebilirim: Nmap, sandığınızdan çok daha fazlası. O, bir ağın ruhunu, kimliğini, hatta zaaflarını fısıldayan bir dedektif.
Yüzeyin Altındaki Okyanus: Keşif ve Host Discovery
Büyük bir ağa girdiğimizde, öncelikle kimlerin hayatta olduğunu anlamak gerekir, değil mi? Tıpkı devasa bir okyanusta balık tutmaya başlamadan önce haritayı çıkarıp hangi bölgelerde yaşam belirtisi olduğunu anlamak gibi. Nmap'i sadece açık port arayan bir araç sanmak, bu okyanusun sadece yüzeyini kaşımaktır. Bizim ilk işimiz, ağdaki aktif cihazları tespit etmek, yani "host discovery" yapmak.
İşte tam bu noktada, -sn parametresiyle devreye giren Ping Sweeps, bize ağdaki canlı hedefleri gösterir. Nmap, bu yöntemle genellikle ICMP echo request (ping) paketleri gönderir ve yanıt veren her cihazı "hayatta" olarak işaretler. Ancak sadece ping ile yetinmek, bazen hedefteki bir güvenlik duvarının bizi görmezden gelmesine yol açabilir. Bu gibi durumlarda, özellikle yerel ağlarda, ARP keşifleri yani -PR parametresi adeta bir can simidi olur. Nmap, ARP istekleri göndererek ağdaki MAC adreslerini IP adresleriyle eşleştirir ve bu sayede ICMP'yi engelleyen güvenlik duvarlarını atlayarak, ağdaki her bir cihazın varlığını ortaya çıkarır. Bu, ağın haritasını çıkarmak için attığımız ilk ve en kritik adımdır.
Tarama Sanatı: TCP, UDP ve Gizlilik
Peki, hedefteki cihazları tespit ettik, şimdi sıra onların kapılarını çalmaya geldi. Nmap'in tarama teknikleri, bu kapıları çalma şeklimize göre çeşitlenir ve her biri farklı bir senaryoda bize avantaj sağlar. Çoğu kişi, -sS parametresiyle yapılan SYN taramalarını bilir ve kullanır. Bu "yarı açık" tarama, hedef sunucuya bir SYN paketi gönderir, SYN/ACK ile yanıt alırsa portun açık olduğunu anlar, ancak son bir RST paketi göndererek TCP el sıkışmasını tamamlamaz. Bu yüzden oldukça hızlı ve nispeten gizli bir yöntemdir, IDS/IPS sistemlerinin dikkatini çekme olasılığı daha düşüktür.
Ancak bazen -sS kullanmaya yetkimiz olmayabilir veya özel durumlar bizi daha farklı tarama türlerine iter. İşte o zaman, -sT ile yapılan TCP Connect taramaları devreye girer. Bu tarama, tam bir TCP el sıkışması (SYN, SYN/ACK, ACK) yapar ve portun açık olduğunu bu şekilde teyit eder. Daha gürültülüdür ve hedef sistemin loglarında daha belirgin izler bırakır, ancak her durumda çalışır.
Peki ya gözden kaçan, ancak kritik öneme sahip UDP portları? DNS (53), SNMP (161), DHCP (67/68) gibi servisler UDP üzerinden çalışır ve -sU parametresi olmadan bunları asla tespit edemezsiniz. Nmap, bir UDP portuna paket gönderdiğinde, eğer port açıksa genellikle bir yanıt gelmez veya beklenen servis yanıtını alırız. Eğer port kapalıysa, hedef sistemden genellikle bir ICMP Port Unreachable mesajı döner. Bu, UDP taramalarını TCP taramalarına göre daha yavaş ve bazen daha belirsiz hale getirse de, ağdaki gizli servisleri ortaya çıkarmak için vazgeçilmezdir.
Gizlilik ve güvenlik cihazlarını atlatma söz konusu olduğunda ise, Nmap'in adeta bir ninja gibi davrandığı FIN, NULL ve Xmas taramaları sahneye çıkar. FIN taraması, hedef porta sadece bir FIN bayrağı içeren paket gönderir. Eğer port açıksa genellikle bir yanıt gelmez, kapalıysa bir RST paketi döner. NULL taraması ise TCP bayraklarından hiçbirini ayarlamaz, yani "sıfır" bayrakla paket gönderir. Xmas taraması ise FIN, URG ve PSH bayraklarını aynı anda ayarlar, adeta bir Noel ağacı gibi yanıp sönen bayraklarla dolu bir paket gönderir. Bu taramaların mantığı, RFC 793'e göre açık portların bu tür "garip" paketlere yanıt vermemesi, kapalı portların ise bir RST paketi göndermesi ilkesine dayanır. Bu teknikler, özellikle durum bilgisi tutan (stateful) güvenlik duvarlarını karıştırmak ve onların beklentilerini alt üst etmek için kullanılır.
İşte bu tarama türlerini bir araya getirdiğimizde ortaya çıkan tablo:
| Tarama Türü | Temel Çalışma Mekanizması | Gürültü Seviyesi | Gizlilik Durumu | Kullanım Alanı |
|---|---|---|---|---|
| SYN (-sS) | Yarı açık TCP el sıkışma (SYN -> SYN/ACK -> RST) | Düşük | Yüksek | Varsayılan, hızlı, gizli port tespiti |
| Connect (-sT) | Tam TCP el sıkışma (SYN -> SYN/ACK -> ACK -> FIN) | Yüksek | Düşük | Yetkisiz durumlarda, güvenilir sonuçlar |
| UDP (-sU) | UDP paketleri gönderir, ICMP yanıtlarını izler | Orta | Orta (yavaşlığı nedeniyle) | DNS, SNMP, DHCP gibi UDP servisleri tespiti |
| FIN (-sF) | Sadece FIN bayrağı gönderir | Düşük | Yüksek | Stateful firewall atlatma denemeleri |
| NULL (-sN) | Hiçbir TCP bayrağı ayarlamaz | Düşük | Yüksek | Stateful firewall atlatma denemeleri |
| Xmas (-sX) | FIN, URG, PSH bayraklarını ayarlar | Düşük | Yüksek | Stateful firewall atlatma denemeleri |
Kimlik Tespiti ve Parmak İzleri: OS & Version Detection
Açık bir port bulmak harika, ancak bize pek bir şey söylemez, değil mi? 80 numaralı portun açık olduğunu bilmekle yetinmeyiz; orada bir Apache mi, Nginx mi, IIS mi çalışıyor, hatta hangi versiyonu kullanıyor, bunu bilmek isteriz. İşte Nmap'in dedektiflik yetenekleri burada devreye giriyor.
-sV parametresiyle yapılan servis versiyon tespiti, Nmap'in açık portlardaki servislerle etkileşime geçerek, onların banner'larını okuyarak veya bilinen protokol testlerini uygulayarak hangi servisin, hangi versiyonuyla çalıştığını anlamasını sağlar. Bu, bir zafiyet avcısı için altın değerindedir. Örneğin, belirli bir Apache versiyonunda bilinen bir zafiyet varsa, bunu hemen hedefle eşleştirebiliriz.
Daha da ileri giderek, -O parametresiyle hedef sistemin işletim sistemini tahmin etmeye çalışırız. Nmap, bunu pasif bir şekilde (TTL değerleri, pencere boyutları gibi TCP/IP yığını özelliklerini analiz ederek) ve aktif bir şekilde (çeşitli TCP, UDP ve ICMP probları göndererek ve dönen yanıtları kendi veritabanındaki yüzlerce işletim sistemi parmak iziyle karşılaştırarak) yapar. Windows mu, Linux'un hangi dağıtımı mı, yoksa bir ağ cihazı mı? Nmap, dönen paketlerin boyutlarından, TTL değerlerinden, TCP pencere boyutlarından, IP ID sıralamalarından ve hatta TCP seçeneklerinden yola çıkarak bize yüksek doğrulukta tahminler sunar. Bu, sanki hedefin kimlik kartına bakmak gibidir; bize o sistem hakkında çok değerli ön bilgiler verir.
Zamanın Efendisi Olmak: Timing & Performance
Büyük bir ağı tararken, hız ve gizlilik arasındaki dengeyi iyi kurmak zorundayız. Çok hızlı olmak gürültüye neden olurken, çok yavaş olmak günler süren taramalara yol açabilir. Nmap'in arka planında çalışan bir "hız motoru" vardır ve biz bu motoru -T parametresiyle kontrol edebiliriz. Bu zamanlama şablonları, Nmap'in paket gönderme hızını, yeniden deneme sayılarını ve zaman aşımı sürelerini ayarlar.
-T0 (Paranoid): Adından da anlaşılacağı gibi, en yavaş ve en gizli şablondur. IDS/IPS sistemlerini atlatmaya çalışırken kullanılır, ancak taramalar günler sürebilir. Paketler arasındaki gecikmeler çok uzundur.-T1 (Sneaky): Paranoyak'tan biraz daha hızlıdır, ancak yine de çok gizlidir.-T2 (Polite): Hedef sistemin servislerini yormamak ve çökmelerini önlemek için tasarlanmıştır. Paketler arasında uzun gecikmelerle nazikçe tarama yapar.-T3 (Normal): Nmap'in varsayılan ayarıdır. Hız ve gizlilik arasında dengeli bir yaklaşım sunar. Çoğu senaryo için uygun olan bu ayar, makul bir hızda tarama yapar.-T4 (Aggressive): Daha hızlı taramalar için tasarlanmıştır. Daha fazla paketi paralel gönderir, zaman aşımlarını kısaltır ve yeniden deneme sayılarını artırır. Eğer hedefin çökme riski veya IDS/IPS alarmı umurunuzda değilse kullanışlıdır.-T5 (Insane): En hızlı şablondur. Maksimum paralel tarama, çok kısa zaman aşımları ve minimum yeniden deneme süreleri ile adeta bir fırtına gibi eser. Ancak bu, ağda ciddi gürültüye ve hatta hedef servislerin çökmesine neden olabilir.
Devasa ağları tararken, sadece bu şablonlarla yetinmeyiz. --min-rate <number> gibi özel parametreler, bize daha ince ayarlar yapma imkanı tanır. Bu parametre, Nmap'in saniyede göndereceği minimum paket sayısını belirler. Böylece, taramanın belirli bir hızın altına düşmemesini sağlayarak, çok büyük ağların tarama süresini kabul edilebilir seviyelere çekebiliriz. --max-rtt-timeout ve --initial-rtt-timeout gibi parametreler ise, özellikle yavaş veya kararsız ağlarda Nmap'in nasıl davranacağını kontrol etmemizi sağlar, böylece yanlış pozitif sonuçları en aza indiririz.
Bu zamanlama şablonlarının bize sunduğu seçenekleri aşağıdaki gibi özetleyebiliriz:
| Zamanlama Şablonu | Hız | Gizlilik | Güvenlik Duvarı/IDS Algılama Riski | Kullanım Senaryosu |
|---|---|---|---|---|
| -T0 (Paranoid) | Çok Yavaş | Çok Yüksek | Çok Düşük | Yüksek güvenlikli ortamlar, IDS'i atlatma |
| -T1 (Sneaky) | Yavaş | Yüksek | Düşük | Gizlilik önceliği olan durumlar |
| -T2 (Polite) | Orta-Yavaş | Orta | Orta | Servis stabilitesi önceliği olan sistemler |
| -T3 (Normal) | Orta | Orta | Orta | Çoğu genel tarama, dengeli yaklaşım |
| -T4 (Aggressive) | Hızlı | Düşük | Yüksek | Hızın kritik olduğu, gürültünün önemsiz olduğu durumlar |
| -T5 (Insane) | Çok Hızlı | Çok Düşük | Çok Yüksek | Test ortamları, hızlı sonuç istenen durumlar |
Güvenlik Duvarlarını Aşmak: Firewall/IDS Evasion
Şimdi işlerin gerçekten zorlaştığı yere geldik. Hedefte bir güvenlik duvarı veya saldırı tespit sistemi (IDS) varsa, Nmap'in pes etmesini beklemeyin. Tam aksine, Nmap bu engelleri aşmak için bir dizi "ninja" taktiğine sahiptir. Unutmayın, bir White Hat olarak amacımız, bu tür güvenlik önlemlerinin ne kadar etkili olduğunu anlamak ve zayıf noktalarını bulmaktır.
İlk taktik, paketleri parçalamaktır. -f parametresiyle Nmap, gönderdiği TCP paketlerini daha küçük parçalara ayırır. Bazı basit durum bilgisi tutan güvenlik duvarları, sadece ilk paketin başlığını inceler ve eğer bu ilk parça zararsız görünüyorsa, geri kalan parçaları da içeriye bırakabilir. İşte bu, güvenlik duvarının "gözünden" kaçmak için etkili bir yöntem olabilir.
Peki, güvenlik duvarı bizi doğrudan kaynak IP adresimizden engellerse ne yapacağız? İşte burada --D <decoy1,decoy2,...> parametresiyle "Decoy" taramaları devreye girer. Nmap, bu parametreyle gerçek IP adresimizin yanı sıra, belirttiğimiz sahte IP adreslerinden de tarama paketleri gönderir. Böylece, güvenlik duvarının veya IDS'in logları, birçok farklı kaynaktan gelen tarama trafiğiyle dolar ve gerçek tarayıcının kimliğini tespit etmek çok daha zor hale gelir. Bu, kalabalık içinde kaybolmak gibidir.
Yerel ağlarda ise, bazen MAC adresi tabanlı filtrelemelerle karşılaşırız. İşte o zaman --spoof-mac <MAC address> parametresiyle kendi MAC adresimizi gizleyebiliriz. Nmap, bu sayede ağdaki bir başka cihazın MAC adresini taklit ederek veya rastgele bir MAC adresi oluşturarak kimliğimizi gizler ve MAC tabanlı filtreleri atlatmaya çalışır. Bu, ağdaki bir hayalet gibi dolaşmak demektir.
Bu "ninja" taktikleri, bize bir güvenlik duvarının ne kadar sofistike olduğunu anlamak ve olası zayıflıkları ortaya çıkarmak için çok değerli bilgiler sağlar. Her güvenlik duvarı aynı şekilde tepki vermez; bu yüzden farklı evasion tekniklerini denemek, bir White Hat'in envanterinde olması gereken bir beceridir.
Sihirli Değnek: Nmap Scripting Engine (NSE)
Nmap'in gerçek gücünü ortaya çıkaran, onu sadece bir port tarayıcı olmaktan çıkarıp devasa bir zafiyet tarayıcısına ve otomasyon aracına dönüştüren şey, Nmap Scripting Engine (NSE) ve onun Lua dilinde yazılmış yüzlerce script'idir. Nmap, -sC parametresiyle varsayılan (default) script'leri çalıştırabilir veya --script <script_adı> ya da --script <kategori> ile belirli script'leri veya kategorileri hedefleyebiliriz.
Düşünün ki bir hedefte açık bir FTP servisi buldunuz. --script ftp-anon komutuyla Nmap, bu FTP sunucusunda anonim girişin mümkün olup olmadığını otomatik olarak kontrol eder. Ya da bir web sunucusu buldunuz ve dizin listelemelerini merak ediyorsunuz? --script http-enum ile Nmap, bilinen dizinleri ve dosyaları tarayarak size potansiyel bilgileri sunar.
NSE script'leri sadece basit kontrollerle sınırlı değildir. Örneğin, bir Windows sisteminde meşhur EternalBlue (MS17-010) zafiyetini aramak için --script smb-vuln-ms17-010 komutunu kullanabilirsiniz. Nmap, bu script sayesinde hedef sistemin SMB servisiyle etkileşime geçerek bu kritik zafiyetin varlığını tespit edebilir. Şifre kırma (brute-force) saldırıları, DNS kayıtlarını toplama (dns-brute), veritabanı zafiyetlerini kontrol etme, hatta IoT cihazlarını keşfetme gibi sayısız görevi NSE script'leri ile otomatize edebilirsiniz.
Bu script'ler, Nmap'i adeta bir mutfak şefinin elindeki sihirli değneğe benzetir; her bir script farklı bir malzemeyi işler, farklı bir tarif uygular ve sonunda ağdaki her türlü detayı, zafiyeti veya bilgiyi önümüze serer. Kendi script'lerinizi yazarak Nmap'in yeteneklerini sınırsızca genişletebilirsiniz.
Kanıtları Toplamak ve Kapanış
Tüm bu taramaları yaptık, ağın haritasını çıkardık, zafiyetleri tespit ettik. Peki, ekrana akan o yeşil yazıların uçup gitmesine izin verecek miyiz? Asla! Bir White Hat'in en önemli görevlerinden biri de bulgularını düzgün bir şekilde kaydetmek ve raporlamaktır. Nmap, bu konuda bize çeşitli çıktı formatları sunar.
En basitlerinden biri, -oN <dosya_adı> ile elde edilen "Normal Output"tur. Bu, konsolda gördüğünüz çıktının aynısını bir dosyaya kaydeder ve insan tarafından okunması kolaydır. Ancak daha yapısal verilere ihtiyacımız olduğunda, -oG <dosya_adı> ile "Grepable Output" devreye girer. Bu format, her satırda anahtar-değer çiftleri halinde bilgileri sunar ve grep, awk, cut gibi komut satırı araçlarıyla kolayca işlenebilir. Büyük ağlarda hızlıca belirli bilgilere ulaşmak için vazgeçilmezdir.
Ancak en güçlü çıktı formatı, şüphesiz -oX <dosya_adı> ile elde edilen "XML Output"tur. Bu format, tarama sonuçlarını yapısal bir XML belgesi olarak kaydeder. XML, makine tarafından okunabilir ve parse edilebilir olduğu için Nmap bulgularımızı Metasploit, Nessus gibi diğer güvenlik araçlarına aktarmak veya kendi özel raporlama araçlarımızla entegre etmek için idealdir. Bu, Nmap'ten aldığımız ham veriyi, daha büyük bir siber güvenlik operasyonunun bir parçası haline getirmek demektir. Tüm bu çıktı formatlarını aynı anda kaydetmek isterseniz, -oA <dosya_adı> parametresini kullanmanız yeterlidir.
Gördüğünüz gibi, Nmap basit bir port tarayıcı olmanın çok ötesinde, siber güvenlik uzmanlarının elindeki en güçlü ve çok yönlü araçlardan biridir. O, bir ağın nabzını tutan, gizli kapılarını aralayan ve bize hedef sistem hakkında her şeyi fısıldayan bir dosttur. Ancak unutmayın, büyük güç büyük sorumluluk getirir. Bu devasa cephaneliği her zaman etik sınırlar içinde, kendi ev laboratuvarlarınızda veya yetkili olduğunuz sistemler üzerinde kullanın. Keşfetmeye, öğrenmeye ve ağların derinliklerine inmeye devam edin. Güvenliğiniz sizin ellerinizde!

Kesinlikle katılıyorum, Nmap sadece port tarayıcı değil, gerçek bir ağ dedektifi! Özellikle -PR parametresinin önemi çok iyi vurgulanmış. Elinize sağlık!