# Nmap Özeti (ESP) {{#include ../../banners/hacktricks-training.md}} ``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parametreler ### Tarayıcı IP'leri - **`,`:** IP'leri doğrudan belirtir - **`-iL `:** list_IPs - **`-iR `**: Rastgele IP sayısı, olası IP'leri `--exclude ` veya `--excludefile ` ile hariç tutabilirsiniz. ### Ekipman keşfi Varsayılan olarak Nmap, `-PA80 -PS443 -PE -PP` içeren bir keşif aşaması başlatır. - **`-sL`**: İnvaziv değildir, isimleri çözmek için **DNS** istekleri yaparak hedefleri listeler. Örneğin www.prueba.es/24'te tüm IP'lerin hedeflerimiz olup olmadığını bilmek için faydalıdır. - **`-Pn`**: **Ping yok**. Hepsinin aktif olduğunu biliyorsanız faydalıdır (değilse, çok zaman kaybedebilirsiniz, ancak bu seçenek aynı zamanda aktif olmadıklarını söyleyerek yanlış negatifler de üretebilir), keşif aşamasını engeller. - **`-sn`** : **Port taraması yok**. Keşif aşamasını tamamladıktan sonra portları taramaz. Göreceli olarak gizlidir ve küçük bir ağ taramasına izin verir. Yetkilerle 80'e bir ACK (-PA), 443'e bir SYN(-PS) ve bir echo isteği ve bir Zaman damgası isteği gönderir, yetkisizse her zaman bağlantıları tamamlar. Hedef ağsa, yalnızca ARP(-PR) kullanır. Başka bir seçenekle kullanıldığında, yalnızca diğer seçeneğin paketleri düşer. - **`-PR`**: **Ping ARP**. Ağımızdaki bilgisayarları analiz ederken varsayılan olarak kullanılır, ping kullanmaktan daha hızlıdır. ARP paketleri kullanmak istemiyorsanız `--send-ip` kullanın. - **`-PS `**: SYN paketleri gönderir, eğer SYN/ACK ile yanıt verirse açıktır (bağlantıyı sonlandırmamak için RST ile yanıt verir), eğer RST ile yanıt verirse kapalıdır ve eğer yanıt vermezse ulaşılamazdır. Yetkiler yoksa, otomatik olarak toplam bir bağlantı kullanılır. Hiç port verilmezse, 80'e gönderir. - **`-PA `**: Öncekine benzer ama ACK ile, ikisini birleştirmek daha iyi sonuçlar verir. - **`-PU `**: Amaç tam tersidir, kapalı olması beklenen portlara gönderilir. Bazı güvenlik duvarları yalnızca TCP bağlantılarını kontrol eder. Kapalıysa port ulaşılamaz ile yanıtlanır, başka bir icmp ile yanıtlanırsa veya yanıt verilmezse hedef ulaşılamaz olarak bırakılır. - **`-PE, -PP, -PM`** : ICMP PING'leri: echo replay, timestamp ve adres maskesi. Hedefin aktif olup olmadığını öğrenmek için gönderilir. - **`-PY`**: Varsayılan olarak 80'e SCTP INIT probeleri gönderir, INIT-ACK(açık) veya ABORT(kapalı) veya hiçbir şey veya ICMP ulaşılamaz (aktif değil) ile yanıtlanabilir. - **`-PO `**: Başlıklarda bir protokol belirtilir, varsayılan olarak 1(ICMP), 2(IGMP) ve 4(Encap IP). ICMP, IGMP, TCP (6) ve UDP (17) protokolleri için protokol başlıkları gönderilir, diğerleri için yalnızca IP başlığı gönderilir. Bunun amacı, başlıkların bozulması nedeniyle, Protokol ulaşılamaz veya aynı protokolden yanıtlar alarak aktif olup olmadığını bilmektir. - **`-n`**: DNS yok - **`-R`**: Her zaman DNS ### Port tarama teknikleri - **`-sS`**: Bağlantıyı tamamlamaz, bu nedenle iz bırakmaz, kullanılması çok iyi. (yetkiler) Varsayılan olarak kullanılır. - **`-sT`**: Bağlantıyı tamamlar, bu nedenle iz bırakır, ancak kesinlikle kullanılabilir. Varsayılan olarak yetkisizdir. - **`-sU`**: Daha yavaş, UDP için. Genellikle: DNS(53), SNMP(161,162), DHCP(67 ve 68), (-sU53,161,162,67,68): açık (yanıt), kapalı (port ulaşılamaz), filtrelenmiş (başka bir ICMP), açık/filtrelenmiş (hiçbir şey). Açık/filtrelenmiş durumunda, -sV nmap'in desteklediği herhangi bir versiyonu tespit etmek için çok sayıda istek gönderir ve gerçek durumu tespit edebilir. Zamanı çok artırır. - **`-sY`**: SCTP protokolü bağlantıyı kurmada başarısız olur, bu nedenle günlük kaydı yoktur, -PY gibi çalışır. - **`-sN,-sX,-sF`:** Null, Fin, Xmas, bazı güvenlik duvarlarını geçebilir ve bilgi çıkarabilir. Standart uyumlu makinelerin SYN, RST veya ACK gecikmeleri olmayan tüm isteklere RST ile yanıt vermesi gerektiği esasına dayanır: açık/filtrelenmiş (hiçbir şey), kapalı (RST), filtrelenmiş (ICMP ulaşılamaz). Windows, Cisco, BSDI ve OS/400 üzerinde güvenilir değildir. Unix üzerinde evet. - **`-sM`**: Maimon taraması: FIN ve ACK bayrakları gönderir, BSD için kullanılır, şu anda hepsini kapalı olarak döndürecektir. - **`-sA, sW`**: ACK ve Window, güvenlik duvarlarını tespit etmek için kullanılır, portların filtrelenip filtrelenmediğini bilmek için. -sW açık/kapalı arasında ayrım yapar çünkü açık olanlar farklı bir pencere değeri ile yanıt verir: açık (0'dan farklı pencere ile RST), kapalı (RST pencere = 0), filtrelenmiş (ICMP ulaşılamaz veya hiçbir şey). Tüm bilgisayarlar bu şekilde çalışmaz, bu nedenle hepsi kapalıysa çalışmıyor demektir, az sayıda açık varsa iyi çalışıyor demektir, çok sayıda açık ve az sayıda kapalı varsa, tam tersi çalışıyor demektir. - **`-sI`:** Idle taraması. Aktif bir güvenlik duvarı varsa ama belirli bir IP'ye filtrelemediğini biliyorsak (veya sadece anonimlik istiyorsak) zombi tarayıcıyı kullanabiliriz (tüm portlar için çalışır), olası zombileri aramak için scrpit ipidseq veya exploit auxiliary/scanner/ip/ipidseq kullanabiliriz. Bu tarayıcı, IP paketlerinin IPID numarasına dayanır. - **`--badsum`:** Yanlış toplam gönderir, bilgisayarlar paketleri atar, ancak güvenlik duvarları bir şey yanıtlayabilir, güvenlik duvarlarını tespit etmek için kullanılır. - **`-sZ`:** "Garip" SCTP tarayıcı, cookie echo parçaları ile probeler gönderdiğinde, açık olduğunda atılmalı veya kapalı olduğunda ABORT ile yanıtlanmalıdır. Geçemediği güvenlik duvarlarından geçebilir, kötü olanı ise filtrelenmiş ve açık arasında ayrım yapmamaktadır. - **`-sO`:** Protokol IP taraması. Bazen protokolün bile ayırt edilemediği kötü ve boş başlıklar gönderir. ICMP ulaşılamaz protokol gelirse kapalıdır, ulaşılamaz port gelirse açıktır, başka bir hata gelirse filtrelenmiştir, hiçbir şey gelmezse açık|filtrelenmiştir. - **`-b `:** FTPhost--> Başka bir hosttan tarama yapmak için kullanılır, bu, başka bir makinenin ftp'sine bağlanarak ve başka bir makineden taramak istediğiniz portlara dosyalar göndermesini istemekle yapılır, yanıtlarına göre açık olup olmadıklarını bileceğiz. \[\:\@]\\[:\] Neredeyse tüm ftp sunucuları artık bunu yapmanıza izin vermiyor ve bu nedenle pratikte pek bir kullanımı yok. ### **Odak Analizi** **-p:** Tarama yapılacak portları belirtmek için kullanılır. Tüm 65,335 portu seçmek için: **-p-** veya **-p all**. Nmap, popülariteye dayalı bir iç sınıflandırma kullanır. Varsayılan olarak, en üst 1000 portu kullanır. **-F** (hızlı tarama) ile en üst 100'ü analiz eder. **--top-ports ** ile o sayıda en üst portu analiz eder (1'den 65,335'e kadar). Portları rastgele sırayla kontrol eder; bunu önlemek için **-r** kullanın. Ayrıca belirli portları seçebiliriz: 20-30,80,443,1024- (sonuncusu 1024'ten itibaren bakmak anlamına gelir). Portları protokollere göre de gruplandırabiliriz: U:53,T:21-25,80,139,S:9. Nmap'in popüler portları içinde bir aralık da seçebiliriz: -p [-1024] nmap-services'de yer alanlardan 1024'e kadar analiz eder. **--port-ratio ** 0 ile 1 arasında bir oran içinde en yaygın portları analiz eder. **-sV** Versiyon taraması, yoğunluk 0 ile 9 arasında ayarlanabilir, varsayılan 7'dir. **--version-intensity ** Yoğunluğu ayarlarız, böylece daha düşük olduğunda yalnızca en olası probeleri başlatır, ancak hepsini değil. Bu sayede UDP tarama süresini önemli ölçüde kısaltabiliriz. **-O** OS tespiti **--osscan-limit** Doğru host taraması için en az bir açık port ve bir kapalı port gereklidir. Bu koşul sağlanmazsa ve bunu ayarladıysak, OS tahmini yapmayacaktır (zaman kazandırır). **--osscan-guess** OS tespiti mükemmel değilse, daha fazla çaba göstermesini sağlar. **Scriptler** --script __|__|__|__[,...] Varsayılan scriptleri kullanmak için -sC veya --script=default kullanın. Mevcut türler: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version ve vuln - **Auth:** Tüm mevcut kimlik doğrulama scriptlerini çalıştırır - **Default:** Temel varsayılan araç scriptlerini çalıştırır - **Discovery:** Hedef veya kurban hakkında bilgi alır - **External:** Dış kaynakları kullanmak için script - **Intrusive:** Kurban veya hedef için saldırgan olarak kabul edilen scriptleri kullanır - **Malware:** Kötü amaçlı kod veya arka kapılar tarafından açılan bağlantıları kontrol eder - **Safe:** İnvaziv olmayan scriptleri çalıştırır - **Vuln:** En bilinen zafiyetleri keşfeder - **All:** Mevcut tüm NSE uzantı scriptlerini çalıştırır Scriptleri aramak için: **nmap --script-help="http-\*" -> http- ile başlayanlar** **nmap --script-help="not intrusive" -> Hepsi hariç** **nmap --script-help="default or safe" -> Her ikisinde veya her ikisinde olanlar** **nmap --script-help="default and safe" --> Her ikisinde olanlar** **nmap --script-help="(default or safe or intrusive) and not http-\*"** --script-args __=__,__={__=__},__={__,__} --script-args-file __ --script-help __|__|__|__|all[,...] --script-trace ---> Scriptin nasıl ilerlediği hakkında bilgi verir --script-updatedb **Bir script kullanmak için, sadece şunu yazın: nmap --script Script_Name target** --> Script kullanıldığında, hem script hem de tarayıcı çalıştırılacak, bu nedenle tarayıcı seçenekleri de eklenebilir. Sadece güvenli olanları çalıştırmak için **"safe=1"** ekleyebiliriz. **Zaman Kontrolü** **Nmap, zamanı saniye, dakika, ms cinsinden değiştirebilir:** --host-timeout argümanları 900000ms, 900, 900s ve 15m hepsi aynı şeyi yapar. Nmap, taranacak toplam host sayısını gruplara ayırır ve bu grupları bloklar halinde analiz eder, bu nedenle tümü analiz edilmeden bir sonraki bloğa geçmez (ve kullanıcı, blok analiz edilene kadar herhangi bir güncelleme almaz). Bu şekilde, Nmap'in büyük gruplar kullanması daha optimaldir. Varsayılan olarak sınıf C'de 256 kullanır. Bu, **--min-hostgroup** _****_**;** **--max-hostgroup** _****_ ile değiştirilebilir (paralel tarama grup boyutlarını ayarlamak için). Paralel tarayıcı sayısını kontrol edebilirsiniz ama bunu yapmamak daha iyidir (Nmap zaten ağ durumuna dayalı otomatik kontrol içerir): **--min-parallelism** _****_**;** **--max-parallelism** _****_ RTT zaman aşımını değiştirebiliriz, ancak genellikle gerekli değildir: **--min-rtt-timeout** _**