Nmap Özeti (ESP)
Reading time: 12 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parametreler
Tarayıcı IP'leri
<ip>,<net/mask>
: IP'leri doğrudan belirtir-iL <ips_file>
: list_IPs-iR <number>
: Rastgele IP sayısı, olası IP'leri--exclude <Ips>
veya--excludefile <file>
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 <ports>
: 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 <ports>
: Öncekine benzer ama ACK ile, ikisini birleştirmek daha iyi sonuçlar verir.-PU <ports>
: 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<ports>
: 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 <protocols>
: 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 <server>
: 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. [<user>:<password>@]<server>[:<port>] 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
-sV Versiyon taraması, yoğunluk 0 ile 9 arasında ayarlanabilir, varsayılan 7'dir.
--version-intensity
-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
--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
Paralel tarayıcı sayısını kontrol edebilirsiniz ama bunu yapmamak daha iyidir (Nmap zaten ağ durumuna dayalı otomatik kontrol içerir): --min-parallelism
RTT zaman aşımını değiştirebiliriz, ancak genellikle gerekli değildir: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout
Deneme sayısını değiştirebiliriz: --max-retries
Bir hostun tarama süresini değiştirebiliriz: --host-timeout
Her test arasındaki süreyi yavaşlatmak için değiştirebiliriz: --scan-delay ; --max-scan-delay
Saniye başına paket sayısını değiştirebiliriz: --min-rate
Birçok port, filtrelendiğinde veya kapandığında yanıt vermek için uzun zaman alır. Sadece açık olanlarla ilgileniyorsak, daha hızlı gidebiliriz: --defeat-rst-ratelimit
Nmap'in ne kadar agresif olmasını istediğimizi tanımlamak için: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Sadece 1 portu tarar ve bir sonraki için 5 dakika bekler
-T1 ve T2 --> Çok benzer ama her test arasında sırasıyla yalnızca 15 ve 0.4 saniye bekler
-T3 --> Varsayılan işlem, paralel taramayı içerir
-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
Güvenlik Duvarı/IDS
Portlara erişime izin vermezler ve paketleri analiz ederler.
-f Paketleri parçalamak için, varsayılan olarak başlıktan sonra 8 bayta böler, bu boyutu belirtmek için ..mtu kullanırız (bunu yaparken -f kullanmayın), offset 8'in katı olmalıdır. Versiyon tarayıcıları ve scriptler parçalamayı desteklemez.
-D decoy1,decoy2,ME Nmap tarayıcıları gönderir ama başka IP adresleri ile kaynak olarak, bu şekilde sizi gizler. Listede ME'yi eklerseniz, Nmap sizi oraya yerleştirir, tamamen maskelemek için önünüze 5 veya 6 tane koymak daha iyidir. Rastgele IP'ler RND:
Rastgele IP'leri kullanmak için: nmap -D RND:10 Target_IP
-S IP Nmap IP adresinizi yakalamıyorsa bunu vermek için kullanılır. Ayrıca başka bir hedefin sizi taradığını düşündürmek için de kullanılır.
-e
Birçok yönetici, her şeyin düzgün çalışması için giriş portlarını açık bırakır ve başka bir çözüm bulmaktan daha kolaydır. Bunlar DNS portları veya FTP portları olabilir... Bu zafiyeti bulmak için Nmap şunları içerir: --source-port
--data
--data-string
--data-length
IP paketini tamamen yapılandırmak için --ip-options kullanın.
Gönderilen ve alınan paketlerdeki seçenekleri görmek istiyorsanız, --packet-trace belirtin. Nmap ile IP seçeneklerini kullanma hakkında daha fazla bilgi ve örnekler için http://seclists.org/nmap-dev/2006/q3/52 adresine bakın.
--ttl
--randomize-hosts Saldırıyı daha az belirgin hale getirmek için
--spoof-mac <MAC address, prefix, or vendor name> MAC'i değiştirmek için örnekler: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 ve Cisco
--proxies <Virgülle ayrılmış proxy URL'leri listesi> Proxy kullanmak için, bazen bir proxy Nmap'in istediği kadar açık bağlantı tutmaz, bu nedenle paralellik değiştirilmelidir: --max-parallelism
-sP Ağımızdaki hostları ARP ile keşfetmek için
Birçok yönetici, belirli bir porttan gelen tüm paketlerin geçmesine izin veren bir güvenlik duvarı kuralı oluşturur (20,53 ve 67 gibi), Nmap'e bu portlardan paketler göndermesini söyleyebiliriz: nmap --source-port 53 IP
Çıktılar
-oN file Normal çıktı
-oX file XML çıktısı
-oS file Script kiddies çıktısı
-oG file Greppable çıktı
-oA file -oS hariç hepsi
-v level ayrıntı seviyesi
-d level hata ayıklama
--reason Host ve durumun nedeni
--stats-every time Her o zaman ne durumda olduğunu söyler
--packet-trace Hangi paketlerin çıktığını görmek için, --version-trace veya --script-trace gibi filtreler belirtilebilir.
--open açık, açık|filtrelenmiş ve filtrelenmemiş gösterir
--resume file Bir özet çıktısı verir
Çeşitli
-6 IPv6'ya izin verir
-A -O -sV -sC --traceroute ile aynıdır
Çalışma süresi
Nmap çalışırken seçenekleri değiştirebiliriz:
v / V Ayrıntı seviyesini artırma / azaltma
d / D Hata ayıklama seviyesini artırma / azaltma
p / P Paket izlemeyi açma / kapama
? Çalışma zamanı etkileşimi yardım ekranını yazdır
Vulscan
Nmap scripti, çevrimdışı bir veritabanında elde edilen hizmetlerin versiyonlarına bakar (diğer çok önemli olanlardan indirilmiştir) ve olası zafiyetleri döndürür.
Kullandığı veritabanları:
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- Openvas.csv | http://www.openvas.org
Nmap klasörüne indirmek ve kurmak için:
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
Veritabanı paketlerini indirip /usr/share/nmap/scripts/vulscan/ dizinine eklemeniz de gerekecektir.
Kullanım:
Hepsini kullanmak için: sudo nmap -sV --script=vulscan HOST_TO_SCAN
Belirli bir veritabanını kullanmak için: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
Nmap Servis taramasını x16 Hızlandırma
bu gönderiye göre, tüm totalwaitms
değerlerini /usr/share/nmap/nmap-service-probes
dosyasında 300 ve tcpwrappedms
değerini 200 olarak değiştirerek nmap servis analizini hızlandırabilirsiniz.
Ayrıca, belirli bir servicewaitms
tanımlanmamış probeler varsayılan olarak 5000
değerini kullanır. Bu nedenle, her bir probeye değer ekleyebiliriz veya nmap'i kendimiz derleyip service_scan.h dosyasındaki varsayılan değeri değiştirebiliriz.
Eğer totalwaitms
ve tcpwrappedms
değerlerini /usr/share/nmap/nmap-service-probes
dosyasında hiç değiştirmek istemiyorsanız, bu değerlerin nmap-service-probes
dosyasında tamamen göz ardı edilmesi için parsing kodunu düzenleyebilirsiniz.