Nmap Summary (ESP)
Last updated
Last updated
AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parametreler
<ip>,<net/mask>
: IP'leri doğrudan belirtir
-iL <ips_file>
: IP listesi
-iR <number>
: Rastgele IP'lerin sayısı, olası IP'leri --exclude <Ips>
veya --excludefile <file>
ile hariç tutabilirsiniz.
Nmap varsayılan olarak -PA80 -PS443 -PE -PP
oluşan bir keşif aşaması başlatır.
-sL
: İstilacı değildir, hedefleri listeler ve isimleri çözmek için DNS istekleri yapar. Örneğin www.prueba.es/24 gibi tüm IP'lerin hedeflerimiz olup olmadığını bilmek için faydalıdır.
-Pn
: Ping yok. Tümünün aktif olduğunu biliyorsanız (aksi takdirde çok zaman kaybedebilirsiniz, ancak bu seçenek aynı zamanda aktif olmadıklarını belirterek yanlış negatifler üretir), keşif aşamasını engeller.
-sn
: Port taraması yok. Keşif aşamasını tamamladıktan sonra port taraması yapmaz. Nispeten gizli 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 ile bir Zaman damgası isteği gönderir, yetkiler olmadan 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 bırakılır.
-PR
: Ping ARP. Ağımızdaki bilgisayarları analiz ederken varsayılan olarak kullanılır, ping'leri kullanmaktan daha hızlıdır. ARP paketleri kullanmak istemiyorsanız --send-ip
kullanın.
-PS <ports>
: Eğer SYN/ACK ile yanıtlarsa açıktır (bağlantıyı sonlandırmamak için RST ile yanıtlarsa), RST ile yanıtlarsa kapalıdır ve yanıt vermezse ulaşılamazdır. Yetkileri yoksa, otomatik olarak toplam bir bağlantı kullanılır. Eğer portlar belirtilmemişse, 80'e gönderilir.
-PA <ports>
: Bir öncekiyle aynıdır ancak ACK ile, ikisini birleştirmek daha iyi sonuçlar verir.
-PU <ports>
: Amaçları zıttır, kapatılmış olması beklenen portlara gönderilir. Bazı güvenlik duvarları yalnızca TCP bağlantılarını kontrol eder. Eğer kapalıysa port ulaşılamaz yanıtı verilir, başka bir icmp yanıtı veya yanıt verilmezse hedef ulaşılamaz olarak bırakılır.
-PE, -PP, -PM
: ICMP PING'leri: echo replay, zaman damgası ve adres maskesi. Hedefin aktif olup olmadığını öğrenmek için gönderilir.
-PY<ports>
: Varsayılan olarak 80'e SCTP INIT sorguları gönderir, INIT-ACK(açık) veya ABORT(kapalı) veya hiçbir şey veya ICMP ulaşılamaz (etkin değil) yanıtı alabilir.
-PO <protocols>
: Başlıkta 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, geri kalanlar için yalnızca IP başlığı gönderilir. Amacı, başlıkların bozukluğundan dolayı, Protokol ulaşılamaz veya aynı protokolün yanıtları alınır ve yukarıda olup olmadığını anlamak için yanıtlar alınır.
-n
: DNS yok
-R
: Her zaman DNS
-sS
: Bağlantıyı tamamlamaz, bu nedenle iz bırakmaz, kullanılabilirse çok iyidir (yetkiler) Varsayılan olarak kullanılan budur.
-sT
: Bağlantıyı tamamlar, bu nedenle iz bırakır, ancak kesin olması için kullanılabilir. Varsayılan olarak yetkisiz.
-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 sürümlerden herhangi birini tespit etmek için birçok istek gönderir ve gerçek durumu tespit edebilir. Zamanı oldukça artırır.
-sY
: SCTP protokolü bağlantıyı kuramaz, bu nedenle kayıtlar olmaz, -PY gibi çalışır
-sN,-sX,-sF
: Null, Fin, Xmas, bazı güvenlik duvarlarını aşabilir ve bilgi çıkarabilir. Standart uyumlu makinelerin SYN, RST veya ACK bayrakları içermeyen tüm isteklere RST ile yanıt vermesi gerektiği varsayımına dayanır: açık/filtrelenmiş(hiçbir şey), kapalı(RST), filtrelenmiş (ICMP ulaşılamaz). Windows, CIsco, BSDI ve OS/400'te güvenilir değildir. Unix'te evet.
-sM
: Maimon taraması: FIN ve ACK bayrakları gönderir, BSD için kullanılır, şu anda tümünü 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çıklar farklı bir pencere değeri ile yanıt verir: açık (pencere değeri 0 olmayan RST), kapalı (pencere = 0 RST), filtrelenmiş (ICMP ulaşılamaz veya hiçbir şey). Tüm bilgisayarlar bu şekilde çalışmaz, bu nedenle tüm kapalıysa, çalışmıyor demektir, birkaç açıksa, düzgün çalışıyor demektir ve birçok açık ve birkaç kapalı varsa, ters şekilde çalışıyor demektir.
-sI
: Boşta tarama. Eğer aktif bir güvenlik duvarı varsa ve belirli bir IP'yi filtrelemediğini biliyorsak (veya sadece anonimlik istiyorsak) zombi tarayıcıyı kullanabiliriz (tüm portlar için çalışır), olası zombileri bulmak için ipidseq betiği veya exploit auxiliary/scanner/ip/ipidseq kullanabiliriz. Bu tarayıcı, IP paketlerinin IPID numarasına dayanır.
--badsum
: Yanlış toplam gönderir, bilgisayarlar paketleri reddeder, ancak güvenlik duvarları bir şeyler yanıtlayabilir, güvenlik duvarlarını tespit etmek için kullanılır.
-sZ
: "Garip" SCTP tarayıcı, çerez yankısı parçalarıyla sorgular gönderirken açıksa düşürülmeli veya kapalıysa ABORT ile yanıtlanmalıdır. Init'in geçemediği güvenlik duvarlarından geçebilir, kötü olan, filtrelenmiş ve açık arasında ayrım yapmamasıdır.
-sO
: Protokol Ip taraması. Bazı durumlarda hatta protokol bile ayırt edilemeyen yanlış ve boş başlıklar gönderir. Eğer 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 gelirse açık|filtrelenmiştir.
-b <server>
: FTPhost--> Başka bir makineden bir makineyi taramak için kullanılır, bunu yapmak için başka bir makinenin ftp'sine bağlanarak istediğiniz portlara dosya göndermesini istersiniz, yanıtlara göre açık olup olmadıklarını bileceğiz. [<user>:<password>@]<server>[:<port>] Artık neredeyse tüm ftp sunucularına izin vermez ve bu nedenle pratikte pek kullanışlı değildir.
-p: Taranacak portları belirtmek için kullanılır. 65335'i seçmek için: -p- veya -p all. Nmap'in popülerliğine göre dahili bir sıralaması vardır. Varsayılan olarak ilk 1000'i kullanır. -F (hızlı tarama) ile ilk 100'ü tarar. --top-ports <numero> Belirtilen sayıda ilk portları tarar (1'den 65335'e kadar). Portları rastgele sırayla kontrol eder, bunu önlemek için -r kullanılır. Ayrıca portları seçebiliriz: 20-30,80,443,1024- Bu sonuncusu 1024'ten sonrasına bakacağı anlamına gelir. Ayrıca portları protokollere göre gruplayabiliriz: U:53,T:21-25,80,139,S:9. Nmap'in popüler portları arasından bir aralık seçebiliriz: -p [-1024] nmap-services içinde bulunan 1024'e kadar olan portları tarar. --port-ratio <ratio> Belirtilen oran aralığındaki en yaygın portları tarar, oran 0 ile 1 arasında olmalıdır.
-sV Sürüm taraması, yoğunluğu 0 ile 9 arasında ayarlanabilir, varsayılan 7.
--version-intensity <numero> Yoğunluğu ayarlarız, daha düşükse sadece olasılığı yüksek olan sorguları gönderir, ancak tümünü değil. Bu sayede UDP tarama süresini önemli ölçüde kısaltabiliriz.
-O İşletim sistemi tespiti
--osscan-limit Bir ana bilgisayarı iyi taramak için en az bir açık ve bir kapalı port olması gerekmektedir, bu koşul sağlanmazsa ve bu seçeneği belirlediysek, işletim sistemi tahmini yapmaz (zaman kazandırır) --osscan-guess OS tespiti mükemmel olmadığında daha fazla çaba harcar
Scriptler
--script <dosyaadı>|<kategori>|<dizin>|<ifade>[,...]
Varsayılanları kullanmak için -sC veya --script=default yeterlidir
Mevcut türler: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version ve vuln
Auth: kimlik doğrulama için mevcut tüm scriptleri çalıştırır
Default: aracın varsayılan temel scriptlerini çalıştırır
Discovery: hedef veya kurban hakkında bilgi toplar
External: harici kaynakları kullanmak için script
Intrusive: kurban veya hedef için müdahaleci olarak kabul edilen scriptleri kullanır
Malware: kötü amaçlı yazılım veya backdoor (arka kapı) tarafından açık bağlantıları kontrol eder
Safe: müdahaleci olmayan scriptleri çalıştırır
Vuln: en bilinen zayıflıkları keşfeder
All: mevcut tüm NSE uzantılı scriptleri çalıştırır
Scriptleri aramak için:
nmap --script-help="http-*" -> http- ile başlayanlar
nmap --script-help="not intrusive" -> Bunlar hariç tüm scriptler
nmap --script-help="default or safe" -> Birinde 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 <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}
--script-args-file <dosyaadı>
--script-help <dosyaadı>|<kategori>|<dizin>|<ifade>|all[,...]
--script-trace ---> Scriptin durumu hakkında bilgi verir
--script-updatedb
Bir scripti kullanmak için sadece şunu yazmak yeterlidir: nmap --script Script_Adı hedef --> Script yazıldığında hem script hem de tarayıcı çalıştırılır, bu nedenle tarayıcı seçenekleri de ekleyebiliriz, sadece güvenli olanları çalıştırmak için "safe=1" ekleyebiliriz.
Zaman Kontrolü
Nmap saniye, dakika, ms cinsinden zamanı değiştirebilir: --host-timeout arguments 900000ms, 900, 900s ve 15m hepsi aynı işi yapar.
Nmap, taranacak toplam host sayısını gruplara böler ve bu grupları bloklar halinde analiz eder, böylece tüm gruplar analiz edilene kadar bir sonraki bloğa geçmez (ve kullanıcıya blok analiz edilene kadar herhangi bir güncelleme alınmaz), bu nedenle nmap için büyük gruplar kullanmak daha iyidir. Varsayılan olarak sınıf C'de 256 kullanır.
Değiştirebilirsiniz**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (Paralel tarama grup boyutlarını ayarlayın)
Paralel tarama sayısını kontrol edebilirsiniz ancak genellikle gerekli değildir (nmap ağ durumuna göre otomatik kontrol sağlar): --min-parallelism <numprobes>; --max-parallelism <numprobes>
Rtt zaman aşımını değiştirebilirsiniz, ancak genellikle gerekli değildir: --min-rtt-timeout <zaman>, --max-rtt-timeout <zaman>, --initial-rtt-timeout <zaman>
Deneme sayısını değiştirebilirsiniz:--max-retries <denemesayısı>
Bir hostun tarama süresini değiştirebilirsiniz: --host-timeout <zaman>
Her test arasındaki süreyi yavaşlatmak için: --scan-delay <zaman>; --max-scan-delay <zaman>
Saniyedeki paket sayısını değiştirebilirsiniz: --min-rate <sayı>; --max-rate <sayı>
Filtrelenmiş veya kapalı birçok port yanıt vermek için uzun sürebilir, yalnızca açık olanları ilgilendiriyorsa daha hızlı tarama yapabiliriz: --defeat-rst-ratelimit
Nmap'ın ne kadar saldırgan olmasını istediğimizi belirlemek için: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Yalnızca bir port taranır ve bir sonraki için 5 dakika beklenir
-T1 ve T2 --> Çok benzer ancak her test arasında sırasıyla 15 ve 0,4 saniye bekler
-T3 --> Varsayılan işlevsellik, paralel 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
Portları kapatır ve paketleri analiz eder.
-f Paketleri parçalamak için, varsayılan olarak başlık sonrası 8 bayt parçalar, bu boyutu belirtmek için ..mtu kullanırız (bununla birlikte, -f kullanmayın), ofset 8'in katı olmalıdır. Versiyon tarama ve scriptler parçalamayı desteklemez
-D decoy1,decoy2,ME Nmap, diğer IP adresleriyle taramalar gönderir, böylece kendinizi gizler. ME'yi listeye eklerseniz, nmap sizi oraya yerleştirir, sizi tamamen gizlemek için kendinizden önce 5 veya 6 eklemek daha iyidir. RND:<sayı> ile rastgele IP'ler oluşturabilirsiniz. TCP bağlantısı olmayan versiyon algılayıcılarıyla çalışmaz. Bir ağ içindeyseniz, etkin IP'leri kullanmanız önemlidir, aksi takdirde sizin tek etkin olduğunuzu kolayca anlamak mümkün olacaktır.
Rastgele IP'ler kullanmak için: nmap-D RND: 10 Hedef_IP
-S IP Nmap, IP adresinizi alamadığında bunu vermeniz gerekir. Ayrıca, başka bir hedefin tarama yaptığını düşündürmek için de kullanılır.
-e <arayüz> Arayüzü seçmek için
Birçok yönetici, her şeyin düzgün çalışması için giriş kapılarını açık bırakır ve başka bir çözüm aramaktan kaçınırlar. Bu, DNS veya FTP gibi portlar olabilir... Bu zayıflığı aramak için nmap şunları içerir: --source-port <portnumarası>;-g <portnumarası> Eşdeğerdir
--data <onaltılık dize> Onaltılık metin göndermek için: --data 0xdeadbeef ve --data \xCA\xFE\x09
--data-string <dize> Normal metin göndermek için: --data-string "Güvenlik Operasyonları tarafından yapılan tarama, uzantı 7192"
--data-length <sayı> Nmap yalnızca başlıklar gönderir, bu sayede rastgele oluşturulan belirli bir bayt sayısını ekleriz
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 örnek için http://seclists.org/nmap-dev/2006/q3/52 adresine bakın.
--ttl <değer>
--randomize-hosts Saldırının daha az belirgin olmasını sağlamak için
--spoof-mac <MAC adresi, önek veya üretici adı> Mac adresini değiştirmek için örnekler: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 ve Cisco --proxies <Proxy URL'lerinin virgülle ayrılmış listesi> Proxies kullanmak için, bazen bir proxy nmap'in istediği kadar çok bağlantıyı açık tutmaz, bu yüzden paralelizmi değiştirmek gerekebilir: --max-parallelism
-sP ARP ile ağdaki ana bilgisayarları keşfetmek için
Çoğu yönetici, belirli bir bağlantı noktasından gelen tüm paketlerin geçmesine izin veren bir güvenlik duvarı kuralı oluşturur (örneğin 20, 53 ve 67 gibi), nmap'e paketlerimizi bu bağlantı noktalarından göndermesini söyleyebiliriz: nmap --source-port 53 Ip
Çıktılar
-oN dosya Normal çıktı
-oX dosya XML çıktısı
-oS dosya Script çocukları çıktısı
-oG dosya Grepable çıktı
-oA dosya -oS hariç tüm çıktılar
-v seviye ayrıntı seviyesi
-d seviye hata ayıklama
--reason Ana bilgisayarın ve durumun nedeni
--stats-every zaman Belirli aralıklarla durumu bildirir
--packet-trace Gönderilen paketleri görmek için filtreler belirtilebilir: --version-trace veya --script-trace
--open Açık, açık|filtrelenen ve filtrelenmeyenleri gösterir
--resume dosya Özet çıkarır
Ç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ır / azalt
d / D Hata ayıklama seviyesini artır / azalt
p / P Paket izlemeyi aç / kapat
? Çalışma zamanı etkileşim yardım ekranını yazdır
Vulscan
Nmap betiği, alınan hizmet sürümlerini çevrimdışı bir veritabanında (diğer önemli veritabanlarından indirilen) inceleyen ve olası zayıflıkları döndüren bir betiktir
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 indirip 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/
Ayrıca, veritabanı paketlerini indirip /usr/share/nmap/scripts/vulscan/ klasörüne eklemek gerekecektir
Kullanım:
Hepsini kullanmak için: sudo nmap -sV --script=vulscan TARAMA_YAPILACAK_IP
Belirli bir veritabanını kullanmak için: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv TARAMA_YAPILACAK_IP
Bu gönderiye göre, nmap hizmet analizini hızlandırabilirsiniz, tüm totalwaitms
değerlerini /usr/share/nmap/nmap-service-probes
dosyasında 300 ve tcpwrappedms
değerlerini 200 olarak değiştirerek.
Ayrıca, özellikle tanımlanmamış servicewaitms
değerine sahip probeler varsayılan olarak 5000
değerini kullanır. Bu nedenle, her bir probeye değer ekleyebiliriz veya nmap'i kendimiz derleyerek service_scan.h dosyasındaki varsayılan değeri değiştirebiliriz.
Eğer totalwaitms
ve tcpwrappedms
değerlerini hiç değiştirmek istemiyorsanız, /usr/share/nmap/nmap-service-probes
dosyasındaki bu değerlerin tamamen yok sayılmasını sağlayacak şekilde ayrıştırma kodunu düzenleyebilirsiniz.