Servis taraması ve parmak izi
- Servis taraması; canlı hostları bulup açık portların arkasında hangi servisin ve sürümün çalıştığını nmap ile tespit etme aşamasıdır.
- nmap açık portu bulur, -sV ise arkasındaki servisin adını ve sürümünü tahmin eder.
- Sürüm satırı bir iddiadır; bulgu yazmadan önce doğrulama ister.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +50 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Pasif aşama bitti, artık hedefe dokunuyorsun. Aktif tarama her paketiyle hedefin kayıtlarına satır yazar. Kapsam belgesinde test penceresi ve hız sınırı yoksa bu adıma başlamazsın.
Tarama iki temel soruya yanıt arar: hangi kapılar açık ve arkalarında ne çalışıyor? İlk soruyu port taraması, ikincisini servis parmak izi çözer. Ama sıralı ve doğru bir taramanın bunlardan önce gelen bir adımı daha var: hangi hostların canlı olduğunu bilmek.
Şema isteğin uğradığı durakları sırayla gösterir. Aktif tarama da benzer bir yoldan geçer: paket önce ağ katmanını aşar, sonra hedef porta ulaşır ve orada bekleyen servis bir yanıt üretir. Her durak kendi günlük satırını bırakır; bu yüzden aktif tarama, pasif keşfin aksine sessiz kalmaz.
-sV bayrağı son durakta bir adım daha atar ve servisin kendini nasıl tanıttığını okur. Savunan taraf da bu durakları izler: güvenlik duvarı reddedilen paketi, uygulama ise kurulan bağlantıyı ayrı satırlara yazar.
Önce canlı host keşfi
Port taramasına geçmeden önce hangi adreslerin ayakta olduğunu belirlersin. Ölü adresleri taramak zaman kaybettirir ve gürültüyü artırır. nmap'in host keşif aşaması bunu yapar.
Ayrıcalıklı bir kullanıcı için varsayılan davranış '-PE -PS443 -PA80 -PP' ile eşdeğerdir. nmap bu durumda dört prob yollar: ICMP yankı isteği, 443'e TCP SYN, 80'e TCP ACK ve ICMP zaman damgası isteği. Ayrıcalıksız kullanıcıda ise varsayılan '-PS80,443' olur, yani 80 ve 443'e TCP bağlantı denemesi.
Prob türü hedefe göre seçilir. -PE ICMP yankısı gönderir; birçok güvenlik duvarı bunu keser. -PS ve -PA sırasıyla SYN ve ACK paketiyle TCP tarafını yoklar ve ICMP kapalı hedeflerde işe yarar. -PU ise UDP probu yollar, varsayılan olarak nadir kullanılan 40125 portuna.
Yerel Ethernet ağındaki hedefler için nmap bu varsayılanları otomatik olarak ARP taramasıyla (-PR) değiştirir, çünkü ARP hem daha hızlı hem daha güvenilirdir. Yerel ağda bir makine ARP isteğine yanıt vermeden gizlenemez; ICMP'yi kapatmış bir host bile ARP taramasında görünür.
$ nmap -sn 192.0.2.0/24 -oG canli.gnmap $ nmap -sS -p- -T4 -Pn 192.0.2.10 -oN portlar.txt $ nmap -sV -sC -p22,80,443 192.0.2.10 -oA servis
Bu üç satır aşamalı bir taramadır. İlk satırdaki -sn port taraması yapmadan yalnız hangi adreslerin canlı olduğunu bulur ve ağı çıkarır.
İkinci satır tek bir canlı host üstünde -p- ile 65535 portun tümünü SYN taramasıyla dolaşır. Üçüncü satır ise yalnız açık bulunan portlarda -sV ile sürüm, -sC ile varsayılan betikleri koşturur ve -oA ile sonucu üç biçimde birden kaydeder. Geniş ve yavaş adımı dar ve derin adımdan ayırmak hem zaman kazandırır hem gürültüyü azaltır.
Etkinlik 1 / 7
Aşamalı bir taramanın adımlarını doğru sıraya koy.
Bir öğeye odaklan, yukarı ve aşağı ok tuşlarıyla taşı. Home tuşu en üste, End tuşu en alta alır.
- 1Canlı hostta tüm portları tara (-p-)
- 2Servisleri kontrol listesine dönüştür
- 3Yalnız açık portlarda sürüm ve betik (-sV -sC)
- 4Ağ aralığında canlı host keşfi (-sn)
Port durumları ve TCP bayrakları
nmap varsayılan olarak en yaygın 1000 TCP portunu tarar. SYN taraması (-sS) yarı açık çalışır: SYN yollar, SYN-ACK yanıtını görünce portu açık sayar ve bağlantıyı RST ile keser. Üçlü el sıkışmayı tamamlamadığı için bazı basit kayıtlarda görünmez, ama ağ izleme çözümleri bu deseni rahatça yakalar. connect taraması (-sT) ise el sıkışmayı tamamlar; ayrıcalık gerektirmez ama daha çok iz bırakır ve daha yavaştır.
Çıktıyı okurken port durumlarını karıştırmamak gerekir. nmap altı durum tanır, ama günlük işte üçü öne çıkar. Açık port bir servisin dinlediğini söyler.
Kapalı port erişilebilir ve yanıt döner, ama orada dinleyen bir uygulama yoktur. Filtrelenmiş port ise hiç yanıt vermez; arada bir paket süzgeci probun porta ulaşmasını engeller. Kapalı ile filtrelenmiş ayrımı rapora farklı şey söyler: kapalı port bilinçli kapatılmış bir servis, filtrelenmiş port ise bir güvenlik duvarının varlığıdır.
connect taraması yalnız hız ve iz açısından değil, yetki açısından da farklıdır. SYN taraması ham paket üretmek için yönetici hakkı ister; bu hakkın olmadığı bir ortamda nmap kendiliğinden connect taramasına düşer. connect, işletim sisteminin normal bağlantı çağrısını kullandığı için her kullanıcıda çalışır ama üçlü el sıkışmayı tamamlar ve hedefin uygulama günlüğüne tam bir bağlantı olarak düşer. Hangi taramayı seçtiğin, hem elindeki yetkiye hem de ne kadar iz bırakmayı göze aldığına bağlıdır.
Etkinlik 2 / 7
Bu tarama hangi bilgiyi üretir?
Önce kodu oku, sonra çıktıyı seç.
$ nmap -sV -p 22,80,443 -oN tarama.txt 10.10.10.5
Bayraklar işin belkemiğidir ve birkaç tanesi günlük işin çoğunu görür. -p- tüm portları dolaşır ve varsayılan listenin dışında kalan yönetim arayüzlerini bulur. -Pn host keşfini atlar; ICMP kapalı hedeflerde taramanın boş dönmesini önler.
-sV servis sürümünü tahmin eder. -oN sonucu düz metne yazar, -oA ise düz metin, XML ve grep uyumlu biçimlerin üçünü birden üretir; makine okunur biçim sonraki araçlara doğrudan girdi olur.
Etkinlik 3 / 7
nmap bayrağını görevi ile eşleştir.
Derinleş:Filtrelenmiş mi, kapalı mı?
nmap'in altı durumu farklı yanıt desenlerinden çıkar. SYN taramasında bir porta SYN yollarsın. SYN-ACK gelirse port açıktır.
RST gelirse port kapalıdır: makine erişilebilir ama o portta dinleyen yok. Hiçbir yanıt gelmezse, birkaç deneme sonunda bile sessizse, nmap portu filtrelenmiş sayar; arada bir güvenlik duvarı probu düşürüyor demektir. ICMP 'ulaşılamaz' hata türleri de filtrelenmiş kararına yol açar.
Bir de belirsiz durumlar var: open|filtered, bir yanıt hiç gelmediğinde ve nmap açık ile filtrelenmişi ayırt edemediğinde kullanılır; UDP taramasında sık görülür. Bu ayrımları bilmek, 'sessiz port'u yanlışlıkla 'kapalı' diye raporlamanı önler. Aynı ayrım UDP tarafında daha da kritiktir, çünkü yanıtsızlık orada kuraldır ve open|filtered en sık görülen sonuçtur.
Servis ve sürüm parmak izi
Parmak izi aşamasında -sV açık porta bağlanır ve servisin döndüğü karşılama metnini bilinen desenlerle eşler. Bu iş nmap-service-probes veri tabanına dayanır; veri tabanı binden çok servis imzası ve 180'den çok protokol tanır. Sonuç bir tahmindir, kesin bilgi değil.
Bir dağıtım güvenlik yamasını geri taşıyıp sürüm numarasını aynı bırakabilir. Yöneticiler karşılama satırını elle değiştirebilir. Bu yüzden banner'a bakıp doğrudan zafiyet yazmak, yanlış pozitifin en sık kaynağıdır.
$ nmap -sV -p22,80,8080 192.0.2.10 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) 8080/tcp open http Jetty 9.4.z-SNAPSHOT
Çıktıyı satır satır oku. Her satırda port, durum, servis adı ve sürüm sütunu var. Servis adı genelde güvenilirdir, çünkü protokol davranışı nettir. Sürüm ise servisin kendi beyanıdır.
İlk satırdaki '4ubuntu2.10' parçası dağıtımın paket sürümüdür. Ubuntu güvenlik yamalarını 7.2p2 numarasını değiştirmeden bu paket sürümüne geri taşır; yani eski görünen OpenSSH yamalı olabilir.
Son satırdaki '9.4.z-SNAPSHOT' da nmap'in tahmini değildir. Jetty kendi sürüm bilgisini okuyamadığında karşılama satırına bu yer tutucuyu yazar. İki örnek aynı şeyi gösterir: nmap, servisin kendisi hakkında söylediğini aktarır.
Etkinlik 4 / 7
10.10.10.5 üstünde tüm portları tara, servis sürümünü çıkar ve sonucu tam.txt dosyasına kaydet.
Doğrulama nasıl yapılır? Servise elle bağlanıp davranışını sınarsın. Web servisinde yanıt başlıkları ve hata sayfaları ek ipucu verir. SSH'ta protokol sürümü ve desteklenen algoritmalar okunur.
Bulguyu ancak davranış, sürüm iddiasını desteklediğinde yazarsın. Sürüm satırını tek başına kanıt saymak, gerçekte yamalı bir sunucuyu zafiyetli göstermek gibi ciddi bir rapor hatasına yol açar. Dağıtım paket sürümünü üreticinin güvenlik bildirimleriyle karşılaştırmak da işe yarar, çünkü bildirim açığın hangi paket sürümünde kapandığını yazar.
Etkinlik 5 / 7
Sürüm satırında OpenSSH 7.2p2 görmek tek başına neyi kanıtlar?
Zamanlama ve UDP
Zamanlama şablonları hız ile gürültü arasında seçim yaptırır. -T0 (paranoid) problar arasına dakikalar koyar ve tespitten kaçmaya çalışır. -T2 (polite) bant genişliğini korur.
-T3 varsayılandır. -T4 (aggressive) modern ve güvenilir ağlar için önerilir; gecikmeleri kısar. -T5 (insane) hızı doğruluğun önüne koyar ve paket kaybını göze alır. Kırılgan gömülü ya da endüstriyel cihazlar yoğun tarama altında yanıt vermeyi kesebilir; böyle bir hedefte hızı düşürür, agresif betikleri kapatır ve müşteriyi bilgilendirirsin.
UDP tarafını atlamak yaygın bir eksikliktir. DNS, SNMP ve kimi VPN servisleri UDP üstünde çalışır.
UDP taraması yavaştır, çünkü kapalı portlar ICMP 'ulaşılamaz' hatası döner ve işletim sistemleri bu hataları hız sınırlar; Linux tipik olarak saniyede bir taneyle sınırlar. Bu yüzden 65536 portluk bir UDP taraması 18 saati aşabilir. Çözüm hedefli taramadır: yalnız birkaç bilinen UDP portunu tarar, sonucu ayrı kaydedersin.
Etkinlik 6 / 7
UDP taraması neden TCP taramasından çok daha yavaş ilerler?
Betikler ve savunma
nmap betik motoru (NSE) ek bilgi üretir. -sC bayrağı '--script=default' ile aynıdır ve güvenli sayılan varsayılan betikleri koşturur: HTTP başlıkları, TLS şifre listesi, paylaşım adları. Betikler kategorilere ayrılır. default grubu hızlı biten ve az müdahale eden betiklerden seçilir.
safe grubu servisi çökertmek için yazılmamış betikleri toplar, yine de nmap belgeleri bunun bir garanti olmadığını açıkça yazar. intrusive, brute, dos, exploit ve vuln kategorileri hedefi çökertme ya da kimlik deneme riski taşır. Bu grupları kapsam belgesi yazılı izin vermeden açmazsın. Hangi kategorilerin izinli olduğunu kapsam belgesine yazmak, sonradan çıkacak bir tartışmayı baştan önler.
Betik motorunun bir gücü de seçici olabilmesidir. '--script=http-title,ssl-enum-ciphers' gibi bir seçim yalnız istediğin bilgiyi toplar ve gereksiz gürültü üretmez. vuln kategorisi bilinen zafiyet imzalarını kontrol eder, ama sonucu yine bir tahmindir ve elle doğrulama yükümlülüğünü kaldırmaz. Çıktı biçimini de baştan düşünürsün: -oA hem düz metni hem grep uyumlu biçimi hem XML'i üretir, böylece canlı adresleri tek satırla bir sonraki araca aktarabilirsin.
Tarama sonucunu bir sonraki adımın hedef listesine çevirmek bu aşamanın asıl çıktısıdır. Bulunan her servis kendi kontrol listesini açar. Web portları içerik keşfine gider ve bir sonraki dersin konusu olur. Veritabanı ve yönetim portları yapılandırma denetimine girer.
Dosya paylaşım servisleri yetki kontrolüne alınır. Böylece tarama, dağınık bir port listesi olmaktan çıkar ve düzenli bir iş sırasına dönüşür. İyi bir test raporu, hangi portun neden incelendiğini de bu haritadan alır.
Savunma tarafında bu tarama desenleri görünürdür. Saldırı tespit sistemleri SYN tarama desenini, kısa sürede çok porta giden bağlantı denemelerini yakalar. Kapı çalma (port knocking) bir servisi doğru bağlantı sırası gelene dek gizler, hız sınırlama ise tarayıcıyı yavaşlatır.
Tarama sonucunu her zaman zaman damgasıyla saklarsın: müşteri günler sonra bir alarmın kaynağını sorduğunda elinde komut, saat ve çıktı dosyası olur. Tarama bir fotoğraftır, film değil; ortam günler içinde değişir, bu yüzden raporda taramanın tarihini yazarsın.
Etkinlik 7 / 7
Doğru mu, yanlış mı?
Yetkili testte tarama hızını düşürmek, hedef servisin çökme riskini azaltır.
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.