Nmap Summary (ESP)
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
<ip>,<net/mask>
: Δείχνει τις διευθύνσεις ip απευθείας
-iL <ips_file>
: λίστα_IPs
-iR <number>
: Αριθμός τυχαίων Ips, μπορείτε να εξαιρέσετε πιθανά Ips με --exclude <Ips>
ή --excludefile <file>
.
Από προεπιλογή, το Nmap ξεκινά μια φάση ανακάλυψης που αποτελείται από: -PA80 -PS443 -PE -PP
-sL
: Δεν είναι επεμβατικό, καταχωρεί τους στόχους κάνοντας αιτήσεις DNS για την ανάλυση ονομάτων. Είναι χρήσιμο για να μάθετε αν για παράδειγμα το www.prueba.es/24 όλες οι Ips είναι οι στόχοι μας.
-Pn
: Χωρίς ping. Αυτό είναι χρήσιμο αν γνωρίζετε ότι όλα είναι ενεργά (αλλιώς, θα μπορούσατε να χάσετε πολύ χρόνο, αλλά αυτή η επιλογή παράγει επίσης ψευδείς αρνητικές απαντήσεις λέγοντας ότι δεν είναι ενεργά), αποτρέπει τη φάση ανακάλυψης.
-sn
: Χωρίς σάρωση θυρών. Αφού ολοκληρωθεί η φάση αναγνώρισης, δεν σαρώνει θύρες. Είναι σχετικά αθόρυβο και επιτρέπει μια μικρή σάρωση δικτύου. Με προνόμια στέλνει ένα ACK (-PA) στη θύρα 80, ένα SYN(-PS) στη θύρα 443 και μια αίτηση echo και μια αίτηση Timestamp, χωρίς προνόμια ολοκληρώνει πάντα συνδέσεις. Αν ο στόχος είναι το δίκτυο, χρησιμοποιεί μόνο ARP(-PR). Αν χρησιμοποιηθεί με μια άλλη επιλογή, πέφτουν μόνο τα πακέτα της άλλης επιλογής.
-PR
: Ping ARP. Χρησιμοποιείται από προεπιλογή κατά την ανάλυση υπολογιστών στο δίκτυό μας, είναι ταχύτερο από τη χρήση pings. Αν δεν θέλετε να χρησιμοποιήσετε πακέτα ARP, χρησιμοποιήστε --send-ip
.
-PS <ports>
: Στέλνει πακέτα SYN στα οποία αν απαντήσει με SYN/ACK είναι ανοιχτή (στα οποία απαντά με RST για να μην τερματιστεί η σύνδεση), αν απαντά με RST είναι κλειστή και αν δεν απαντά είναι μη προσβάσιμη. Σε περίπτωση που δεν υπάρχουν προνόμια, χρησιμοποιείται αυτόματα μια συνολική σύνδεση. Αν δεν δίνονται θύρες, το στέλνει στη θύρα 80.
-PA <ports>
: Όπως το προηγούμενο αλλά με ACK, συνδυάζοντας και τα δύο δίνει καλύτερα αποτελέσματα.
-PU <ports>
: Το αντίθετο, στέλνονται σε θύρες που αναμένεται να είναι κλειστές. Κάποια firewalls ελέγχουν μόνο τις συνδέσεις TCP. Αν είναι κλειστή απαντά με port unreachable, αν απαντά με άλλο icmp ή δεν απαντά αφήνεται ως προορισμός μη προσβάσιμος.
-PE, -PP, -PM
: ICMP PINGS: απάντηση echo, timestamp και addresmask. Αποστέλλονται για να μάθουμε αν ο στόχος είναι ενεργός.
-PY<ports>
: Αποστέλλει SCTP INIT probes στη θύρα 80 από προεπιλογή, INIT-ACK(ανοιχτή) ή ABORT(κλειστή) ή τίποτα ή ICMP unreachable(ανενεργή) μπορεί να απαντηθεί.
-PO <protocols>
: Υποδεικνύεται ένα πρωτόκολλο στα headers, από προεπιλογή 1(ICMP), 2(IGMP) και 4(Encap IP). Για τα πρωτόκολλα ICMP, IGMP, TCP (6) και UDP (17) στέλνονται τα headers των πρωτοκόλλων, για τα υπόλοιπα στέλνεται μόνο το IP header. Ο σκοπός αυτού είναι ότι λόγω της ανωμαλίας των headers, απαντώνται πρωτόκολλα unreachable ή απαντήσεις του ίδιου πρωτοκόλλου για να γνωρίζουμε αν είναι ενεργό.
-n
: Χωρίς DNS
-R
: Πάντα DNS
-sS
: Δεν ολοκληρώνει τη σύνδεση έτσι δεν αφήνει ίχνη, πολύ καλό αν μπορεί να χρησιμοποιηθεί. (προνόμια) Είναι αυτό που χρησιμοποιείται από προεπιλογή.
-sT
: Ολοκληρώνει τη σύνδεση, οπότε αφήνει ίχνη, αλλά μπορεί να χρησιμοποιηθεί με βεβαιότητα. Από προεπιλογή χωρίς προνόμια.
-sU
: Πιο αργό, για UDP. Κυρίως: DNS(53), SNMP(161,162), DHCP(67 και 68), (-sU53,161,162,67,68): ανοιχτή(απάντηση), κλειστή(port unreachable), φιλτραρισμένη (άλλο ICMP), ανοιχτή/φιλτραρισμένη (τίποτα). Σε περίπτωση ανοιχτής/φιλτραρισμένης, το -sV στέλνει πολλαπλά αιτήματα για να ανιχνεύσει οποιαδήποτε από τις εκδόσεις που υποστηρίζει το nmap και μπορεί να ανιχνεύσει την πραγματική κατάσταση. Αυξάνει πολύ τον χρόνο.
-sY
: Το πρωτόκολλο SCTP αποτυγχάνει να καθιερώσει τη σύνδεση, έτσι δεν υπάρχουν καταγραφές, λειτουργεί όπως το -PY
-sN,-sX,-sF
: Null, Fin, Xmas, μπορούν να διεισδύσουν σε μερικούς firewalls και να εξάγουν πληροφορίες. Βασίζονται στο γεγονός ότι μη συμμορφούμενες μηχανές θα πρέπει να απαντούν με RST σε όλα τα αιτήματα που δεν έχουν ανασηκωθεί σημαίες SYN, RST ή ACK: ανοιχτή/φιλτραρισμένη(τίποτα), κλειστή(RST), φιλτραρισμένη (ICMP unreachable). Αναξιόπιστο σε Windows, CIsco, BSDI και OS/400. Σε unix ναι.
-sM
: Maimon scan: Αποστέλλει σημαίες FIN και ACK, χρησιμοποιείται για BSD, αυτή τη στιγμή θα επιστρέψει όλα ως κλειστά.
-sA, sW
: ACK και Window, χρησιμοποιούνται για την ανίχνευση firewalls, για να μάθουμε αν οι θύρες είναι φιλτραρισμένες ή όχι. Το -sW διακρίνει μεταξύ ανοιχτών/κλειστών αφού οι ανοιχτές απαντούν με διαφορετική τιμή παραθύρου: ανοιχτή (RST με τιμή παραθύρου διαφορετική από 0), κλειστή (RST παράθυρο = 0), φιλτραρισμένη (ICMP unreachable ή τίποτα). Όχι όλοι οι υπολογιστές λειτουργούν με αυτόν τον τρόπο, οπότε αν είναι όλα κλειστά, δεν λειτουργεί, αν είναι λίγα ανοιχτά, λειτουργεί καλά, και αν είναι πολλά ανοιχτά και λίγα κλειστά, λειτουργεί με τον αντίστροφο τρόπο.
-sI
: Ανενεργή σάρωση. Για τις περιπτώσεις στις οποίες υπάρχει ενεργό τοίχος πυρασφάλειας αλλά γνωρίζουμε ότι δεν φιλτράρει σε μια συγκεκριμένη Ip (ή όταν απλά θέλουμε ανωνυμία) μπορούμε να χρησιμοποιήσουμε τον σαρωτή zombie (λειτουργεί για όλες τις θύρες), για να βρούμε πιθανούς zombies μπορούμε να χρησιμοποιήσουμε το --osscan-guess Όταν η ανίχνευση του λειτουργικού συστήματος δεν είναι τέλεια, αυτό κάνει το πρόγραμμα να προσπαθήσει περισσότερο.
Σενάρια
--script <όνομα αρχείου>|<κατηγορία>|<κατάλογος>|<έκφραση>[,...]
Για να χρησιμοποιήσετε τα προεπιλεγμένα, αρκεί να χρησιμοποιήσετε -sC ή --script=default
Οι διαθέσιμοι τύποι είναι: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, και vuln
Auth: εκτελεί όλα τα διαθέσιμα scripts για πιστοποίηση
Default: εκτελεί τα βασικά scripts προεπιλογής του εργαλείου
Discovery: ανακτά πληροφορίες από τον στόχο ή το θύμα
External: script για χρήση εξωτερικών πόρων
Intrusive: χρησιμοποιεί scripts που θεωρούνται ενοχλητικοί για το θύμα ή τον στόχο
Malware: ελέγχει αν υπάρχουν ανοιχτές συνδέσεις λόγω κακόβουλων κωδικών ή backdoors (πίσω πόρτες)
Safe: εκτελεί scripts που δεν είναι ενοχλητικοί
Vuln: ανακαλύπτει τις πιο γνωστές ευπάθειες
All: εκτελεί απόλυτα όλα τα διαθέσιμα scripts με επέκταση NSE
Για να αναζητήσετε scripts:
nmap --script-help="http-*" -> Αυτά που ξεκινούν με http-
nmap --script-help="not intrusive" -> Όλα εκτός από αυτά
nmap --script-help="default or safe" -> Αυτά που είναι στο ένα ή στο άλλο ή και στα δύο
nmap --script-help="default and safe" --> Αυτά που είναι και στα δύο
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}
--script-args-file <όνομα αρχείου>
--script-help <όνομα αρχείου>|<κατηγορία>|<κατάλογος>|<έκφραση>|all[,...]
--script-trace ---> Παρέχει πληροφορίες σχετικά με την πρόοδο του script
--script-updatedb
Για να χρησιμοποιήσετε ένα script απλά πρέπει να γράψετε: nmap --script Όνομα_του_script στόχος --> Με την εντολή του script εκτελούνται τόσο το script όσο και το πρόγραμμα σάρωσης, οπότε μπορούν να προστεθούν επιλογές του προγράμματος σάρωσης, μπορούμε να προσθέσουμε "safe=1" για να εκτελεστούν μόνο τα ασφαλή.
Έλεγχος χρόνου
Το Nmap μπορεί να τροποποιήσει το χρόνο σε δευτερόλεπτα, λεπτά, ms: --host-timeout arguments 900000ms, 900, 900s, και 15m κάνουν το ίδιο πράγμα.
Το Nmap διαιρεί το συνολικό αριθμό των στόχων προς σάρωση σε ομάδες και αναλύει αυτές τις ομάδες σε μπλοκ έτσι ώστε μέχρι να έχουν αναλυθεί όλα, δεν προχωρά στο επόμενο μπλοκ (και ο χρήστης δεν λαμβάνει καμία ενημέρωση μέχρι να έχει αναλυθεί το μπλοκ) με αυτόν τον τρόπο, είναι πιο αποδοτικό για το nmap να χρησιμοποιεί μεγάλες ομάδες. Από προεπιλογή στην κλάση C χρησιμοποιεί 256.
Μπορείτε να το αλλάξετε με**--min-hostgroup** <αριθμός στόχων>; --max-hostgroup <αριθμός στόχων> (Προσαρμογή μεγέθους παράλληλης ομάδας σάρωσης)
Μπορείτε να ελέγξετε τον αριθμό των σαρωτών που λειτουργούν παράλληλα, αλλά είναι καλύτερο να μην το κάνετε (το nmap έχει ήδη αυτόματο έλεγχο βάσει της κατάστασης του δικτύου): --min-parallelism <αριθμός εξερευνήσεων>; --max-parallelism <αριθμός εξερευνήσεων>
Μπορείτε να τροποποιήσετε το χρονικό όριο rtt, αλλά συνήθως δεν είναι απαραίτητο: --min-rtt-timeout <χρόνος>, --max-rtt-timeout <χρόνος>, --initial-rtt-timeout <χρόνος>
Μπορείτε να τροποποιήσετε τον αριθμό των προσπαθειών:--max-retries <αριθμός προσπαθειών>
Μπορείτε να τροποποιήσετε το χρόνο σάρωσης ενός στόχου: --host-timeout <χρόνος>
Μπορείτε να τροποποιήσετε το χρόνο μεταξύ κάθε δοκιμής για να πηγαίνει αργά: --scan-delay <χρόνος>; --max-scan-delay <χρόνος>
Μπορείτε να τροποποιήσετε τον αριθμό πακέτων ανά δευτερόλεπτο: --min-rate <αριθμός>; --max-rate <αριθμός>
Πολλές θύρες χρειάζονται πολύ χρόνο για να ανταποκριθούν όταν είναι φιλτραρισμένες ή κλειστές, αν μας ενδιαφέρουν μόνο οι ανοιχτές, μπορούμε να προχωρήσουμε γρηγορότερα με: --defeat-rst-ratelimit
Για να ορίσετε πόσο επιθετικό θέλετε να είναι το nmap: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Σαρώνει μόνο μια θύρα τη φορά και περιμένει 5 λεπτά μέχρι την επόμενη
-T1 και T2 --> Πολύ παρόμοια αλλά περιμένουν μόνο 15 και 0,4 δευτερόλεπτα αντίστοιχα μεταξύ κάθε δοκιμής
-T3 --> Προεπιλεγμένη λειτουργία, συμπεριλαμβάνει παράλληλη εκτέλεση
-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
Τείχος πυρασφάλειας/IDS
Αποκλείουν τις θύρες και αναλύουν πακέτα.
-f Για να κατακερματίσετε πακέτα, από προεπιλογή τα κατακερματίζει σε 8bytes μετά την κεφαλίδα, για να καθορίσετε αυτό το μέγεθος χρησιμοποιήστε ..mtu (με αυτό, μην χρησιμοποιείτε -f), το offset πρέπει να είναι πολλαπλάσιο του 8. Τα εργαλεία ανίχνευσης εκδόσεων και τα scripts δεν υποστηρίζουν την κατακερματισμό
-D decoy1,decoy2,ME Το Nmap στέλνει σαρωτές αλλά με άλλες διευθύνσεις IP ως προέλευση, με αυτόν τον τρόπο σας κρύβει. Αν βάλετε το ME στη λίστα, το nmap θα σας τοποθετήσει εκεί, καλύτερα βάλτε 5 ή 6 πριν από εσάς για να σας μεταμορφώσει πλήρως. Μπορείτε να δημιουργήσετε τυχαίες διευθύνσεις IP με RND:<αριθμός> Για να δημιουργήσετε <αριθμός> τυχαίες διευθύνσεις IP. Δεν λειτουργούν με ανίχνευση εκδόσεων χωρίς σύνδεση TCP. Αν βρίσκεστε μέσα σε ένα δίκτυο, σας ενδιαφέρει να χρησιμοποιήσετε διευθύνσεις IP που είναι ενεργές, διότι αλλιώς θα είναι πολύ εύκολο να ανακαλυφθεί ότι είστε ο μοναδικός ενεργός.
Για να χρησιμοποιήσετε τυχαίες διευθύνσεις IP: nmap -D RND: 10 Στόχος_IP
-S IP Όταν το Nmap --proxies <Λίστα διευθύνσεων URL προκειμένου> Για τη χρήση προκυρηγμένων, μερικές φορές ένα προκυρηγμένο δεν διατηρεί τόσες ανοιχτές συνδέσεις όσες θέλει το nmap, επομένως θα πρέπει να τροποποιηθεί το παράλληλο: --max-parallelism
-sP Για την ανίχνευση των κόμβων στο δίκτυο στο οποίο βρισκόμαστε μέσω ARP
Πολλοί διαχειριστές δημιουργούν μια κανόνα στο τείχος προστασίας που επιτρέπει τη διέλευση όλων των πακέτων που προέρχονται από ένα συγκεκριμένο θύρα (όπως οι 20, 53 και 67), μπορούμε να πούμε στο nmap να στείλει τα πακέτα μας από αυτές τις θύρες: nmap --source-port 53 Ip
Εξόδοι
-oN αρχείο Κανονική έξοδος
-oX αρχείο Έξοδος XML
-oS αρχείο Έξοδος για script kidies
-oG αρχείο Έξοδος grepable
-oA αρχείο Όλα εκτός από -oS
-v επίπεδο επίπεδο λεπτομέρειας
-d επίπεδο αποσφαλμάτωση
--reason Λόγος του κόμβου και κατάσταση
--stats-every χρόνος Κάθε αυτό το χρονικό διάστημα μας λέει πώς πάει
--packet-trace Για να δούμε ποια πακέτα αποστέλλονται, μπορούν να καθοριστούν φίλτρα όπως: --version-trace ή --script-trace
--open εμφανίζει τους ανοιχτούς, ανοιχτούς|φιλτραρισμένους και τους μη φιλτραρισμένους
--resume αρχείο Εκτυπώνει ένα σύνοψη
Διάφορα
-6 Επιτρέπει το ipv6
-A είναι το ίδιο με -O -sV -sC --traceroute
Χρόνος εκτέλεσης
Κατά τη διάρκεια της εκτέλεσης του nmap μπορούμε να αλλάξουμε επιλογές:
v / V Αύξηση / μείωση του επιπέδου λεπτομέρειας
d / D Αύξηση / μείωση του επιπέδου αποσφαλμάτωσης
p / P Ενεργοποίηση / απενεργοποίηση της ανίχνευσης πακέτων
? Εκτύπωση μιας οθόνης βοήθειας αλληλεπίδρασης κατά τη διάρκεια της εκτέλεσης
Vulscan
Σενάριο του nmap που εξετάζει τις εκδόσεις των υπηρεσιών που λαμβάνονται από μια offline βάση δεδομένων (που κατεβάζει από άλλες πολύ σημαντικές) και επιστρέφει τις πιθανές ευπάθειες
Οι βάσεις δεδομένων που χρησιμοποιεί είναι:
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:
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/
Επίσης, θα πρέπει να κατεβάσετε τα πακέτα των βάσεων δεδομένων και να τα προσθέσετε στο /usr/share/nmap/scripts/vulscan/
Χρήση:
Για να χρησιμοποιήσετε όλα: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR
Για να χρησιμοποιήσετε μια συγκεκριμένη βάση δεδομένων: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR
Σύμφωνα με αυτήν την ανάρτηση μπορείτε να επιταχύνετε την ανάλυση υπηρεσιών του nmap τροποποιώντας όλες τις τιμές totalwaitms
στο /usr/share/nmap/nmap-service-probes
σε 300 και το tcpwrappedms
σε 200.
Επιπλέον, οι εξετάσεις που δεν έχουν καθορισμένη ειδικά την τιμή servicewaitms
χρησιμοποιούν μια προεπιλεγμένη τιμή των 5000
. Επομένως, μπορούμε είτε να προσθέσουμε τιμές σε κάθε μια από τις εξετάσεις, είτε να μεταγλωττίσουμε το nmap μόνοι μας και να αλλάξουμε την προεπιλεγμένη τιμή στο service_scan.h.
Αν δεν θέλετε να αλλάξετε καθόλου τις τιμές των totalwaitms
και tcpwrappedms
στο αρχείο /usr/share/nmap/nmap-service-probes
, μπορείτε να επεξεργαστείτε τον κώδικα ανάλυσης έτσι ώστε αυτές οι τιμές στο αρχείο nmap-service-probes
να αγνοούνται εντελώς.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)