Το προφίλ μας στο Google Plus
0

Το υπέροχο nmap, από την αρχή

Το nmap δικαιολογημένα συγκαταλέγεται στα πλέον αγαπητά εργαλεία των pen testers αλλά και των network administrators. Ελάτε να γνωρίσουμε το πολύτιμο αυτό εργαλείο ξεκινώντας από τα βασικά, αλλά φωτίζοντας και μερικές από τις όχι και τόσο γνωστές του όψεις.

To nmap (Network Mapper) είναι ένα δωρεάν εργαλείο ανοικτού λογισμικού με βασική αποστολή την ανακάλυψη μηχανημάτων (hosts) και υπηρεσιών (services) σε ένα τοπικό δίκτυο ή στο Internet. Για να πετυχαίνει το σκοπό του αποστέλλει στους στόχους, δηλαδή στα μηχανήματα που ελέγχει, ειδικά διαμορφωμένα δικτυακά πακέτα με πρωτότυπους τρόπους, κι έπειτα αναλύει τις απαντήσεις που λαμβάνει. Από την ανάλυση αυτή το nmap είναι σε θέση να εντοπίζει:

  • τα ενεργά hosts από το σύνολο εκείνων που ελέγχει
  • τα ανοικτά ports κάθε host (το τι ακριβώς είναι ένα port μπορείτε να μάθετε από το σχετικό άρθρο του τεύχους 018)
  • το λειτουργικό σύστημα κάθε host
  • την έκδοση κάθε λειτουργικού
  • τις όποιες δικτυακές υπηρεσίες προσφέρει κάθε host
  • τις εκδόσεις των υπηρεσιών αυτών
  • τα όποια firewalls υπάρχουν στο δίκτυο.

Επιπρόσθετα, χάρη στη μηχανή scripting που ενσωματώνει αλλά και στην πληθώρα των έτοιμων scripts που διατίθενται ελεύθερα γι’ αυτό, το nmap έχει τη δυνατότητα να εντοπίζει αδυναμίες (vulnerabilities), backdoors ή malware, να εξαπολύει επιθέσεις denial of service ή brute force, να εκμεταλλεύεται γνωστά bugs σε υπηρεσίες κ.ο.κ. Στο σημείο αυτό πάντως αξίζει να σημειωθεί ότι το nmap δεν είναι –ούτε φιλοδοξεί να γίνει– μια πλήρης πλατφόρμα exploitation όπως, π.χ., είναι το Metasploit.

Το nmap αρχικά διατίθετο μόνο για Linux. Σήμερα παρέχονται binaries για πολλά άλλα Unix-like OSes, για το OS X αλλά και για τα Windows. Αν και το nmap λειτουργεί από τη γραμμή εντολών συχνά συνοδεύεται κι από το Zenmap, ένα εύχρηστο front-end για το περιβάλλον γραφικών.

Σε πολύ λίγο θα γνωρίσουμε το nmap από κοντά, μέσα από μια σειρά παραδειγμάτων χρήσης και δουλεύοντας από την πλατφόρμα του Kali Linux. Το Kali, ως διανομή που προσανατολίζεται στο pen-testing, αμέσως μετά τη βασική του εγκατάσταση παρέχει στο χρήστη τόσο το nmap όσο και μια πληθώρα από επίσημα scripts. Αν δεν έχετε το Kali εύκαιρο προτείνουμε να το κατεβάσετε και να το εγκαταστήσετε τώρα, π.χ., σ’ ένα VM. Μαζί με το Kali φροντίστε να έχετε κι άλλο ένα ή δύο VMs με ενεργές ή/και ευπαθείς υπηρεσίες — και κατά νου έχουμε το Metasploitable. Γενικά, επειδή δεν προτείνεται να χρησιμοποιούμε το nmap σε hosts χωρίς πρώτα να έχουμε πάρει σχετική άδεια από τους υπευθύνους, είναι προτιμότερο να το γνωρίσουμε στο πλαίσιο ενός εικονικού εργαστηρίου. Στο deltaCast s01e06 μπορείτε να παρακολουθήσετε αναλυτικές οδηγίες για το στήσιμο του δικού σας εργαστηρίου. Υπόψη ότι στο εν λόγω video tutorial επιδεικνύεται η εγκατάσταση του BackTrack, του προγόνου του Kali Linux. Το BackTrack όμως έχει σταματήσει ν’ αναπτύσσεται, οπότε οδηγίες για την εγκατάσταση και ρύθμιση του Kali υπάρχουν εδώ.

Σημείωση. Στο Kali Linux εξ ορισμού δουλεύουμε από το λογαριασμό του διαχειριστή συστήματος, μ’ άλλα λόγια ως root. Αν δοκιμάσετε τα παραδείγματά μας από άλλη διανομή Linux ή από άλλο λειτουργικό σύστημα, έχετε υπόψη σας ότι ορισμένες φορές θα απαιτούνται δικαιώματα υπερχρήστη. Το nmap θα σας ενημερώνει σχετικά.

Καθορισμός στόχων, αξιολόγηση αποτελεσμάτων
Η γενική σύνταξη μιας εντολής σάρωσης (scan) με το nmap έχει ως εξής:

nmap [είδος σάρωσης] [επιλογές & παράμετροι] <στόχος ή στόχοι>

Ξεκινάμε από μια απλούστατη περίπτωση: τη σάρωση ενός μόνο μηχανήματος του τοπικού δικτύου, με διεύθυνση IP την 192.168.85.111. Στο Kali μας, ανοίγουμε ένα παράθυρο τερματικού και πληκτρολογούμε:

root@kali:~# nmap 192.168.85.111
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-22 23:29 EEST
Nmap scan report for 192.168.85.111
Host is up (0.00018s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
512/tcp  open  exec
513/tcp  open  login
514/tcp  open  shell
1099/tcp open  rmiregistry
1524/tcp open  ingreslock
2049/tcp open  nfs
2121/tcp open  ccproxy-ftp
3306/tcp open  mysql
5432/tcp open  postgresql
5900/tcp open  vnc
6000/tcp open  X11
6667/tcp open  irc
8009/tcp open  ajp13
8180/tcp open  unknown
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)

Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
root@kali:~#

Δεν καθορίσαμε το είδος της σάρωσης, ούτε κάναμε κάποια συγκεκριμένη επιλογή. Μολαταύτα, σε λιγότερο από ένα δευτερόλεπτο το nmap επέστρεψε:

  • τις ανοικτές θύρες (ports) του στόχου
  • την κατάσταση (state) κάθε port
  • το όνομα της υπηρεσίας που εξ ορισμού χρησιμοποιεί ένα συγκεκριμένο port
  • τη διεύθυνση MAC του δικτυακού interface του στόχου.

Για το nmap, οι θύρες βρίσκονται σε μία από τις ακόλουθες τέσσερις καταστάσεις:

  • Open. Υπάρχει ενεργή υπηρεσία που χρησιμοποιεί τη θύρα.
  • Closed. Δεν υπάρχει υπηρεσία που να χρησιμοποιεί τη θύρα, ωστόσο αυτό είναι πιθανό ν’ αλλάξει ανά πάσα στιγμή.
  • Filtered. Κάποιο firewall ή κάτι άλλο εμποδίζει το nmap από το να συμπεράνει αν η θύρα είναι open ή closed.
  • Unfiltered. Υπάρχει κάποια ανταπόκριση στους ελέγχους του nmap, εξακολουθεί ωστόσο να ‘ναι αδύνατος ο χαρακτηρισμός της θύρας ως open ή ως closed.

Το nmap είναι επίσης πιθανό να επιστρέψει τους συνδυασμούς καταστάσεων open|filtered ή closed|filtered, όταν αδυνατεί να συμπεράνει σε ποια από τις δύο καταστάσεις είναι η εκάστοτε θύρα.

Στο παράδειγμα που μόλις δώσαμε σκανάραμε ένα μόνο μηχάνημα του τοπικού δικτύου. Ας πάμε τώρα στο άλλο άκρο, όπου σκανάρουμε όλα τα μηχανήματα του τοπικού δικτύου. Η σύνταξη του nmap παραμένει απλή — κι αν αυτό το “/24” σας παραξενέψει, είναι επειδή δεν έχετε διαβάσει ακόμα αυτό το άρθρο.

root@kali:~# nmap 192.168.85.0/24
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-23 10:05 EEST
Nmap scan report for localrouter.parabing.local (192.168.85.1)
Host is up (0.00033s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
13/tcp  open  daytime
22/tcp  open  ssh
37/tcp  open  time
53/tcp  open  domain
113/tcp open  ident
MAC Address: 08:00:27:05:A3:2A (Cadmus Computer Systems)

Nmap scan report for win7host.parabing.local (192.168.85.10)
Host is up (0.00025s latency).
Not shown: 992 filtered ports
PORT      STATE SERVICE
135/tcp   open  msrpc
...
10243/tcp open  unknown
MAC Address: 02:00:4C:4F:4F:50 (Unknown)

Nmap scan report for 192.168.85.111
Host is up (0.00019s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
...
8180/tcp open  unknown
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)

Nmap scan report for JoePC.parabing.local (192.168.85.112)
Host is up (0.00020s latency).
Not shown: 990 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
...
49158/tcp open  unknown
MAC Address: 08:00:27:79:37:C5 (Cadmus Computer Systems)

Nmap scan report for secdesk.parabing.local (192.168.85.125)
Host is up (0.00019s latency).
Not shown: 993 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
...
1027/tcp open  IIS
MAC Address: 08:00:27:67:0E:3D (Cadmus Computer Systems)

Nmap scan report for trusty.parabing.local (192.168.85.141)
Host is up (0.00022s latency).
All 1000 scanned ports on trusty.parabing.local (192.168.85.141) are closed
MAC Address: 08:00:27:59:2F:CB (Cadmus Computer Systems)

Nmap scan report for kali.parabing.local (192.168.85.20)
Host is up (0.000016s latency).
All 1000 scanned ports on kali.parabing.local (192.168.85.20) are closed

Nmap done: 256 IP addresses (7 hosts up) scanned in 23.44 seconds
root@kali:~#

Αυτή τη φορά, τα αποτελέσματα που παίρνουμε ίσως μοιάζουν περισσότερα απ’ όσα θα μπορούσαμε να διαχειριστούμε. Αλλά δεν είναι έτσι τα πράγματα. Αν λοιπόν παρατηρήσουμε με την ησυχία μας την έξοδο του nmap, εύκολα μπορούμε να συμπεράνουμε τα ακόλουθα:

  • Ελέγχθηκαν 256 διευθύνσεις IP και βρέθηκαν 7 ενεργά hosts.
  • Για τα ενεργά hosts το nmap πραγματοποίησε σχετικά DNS queries, ώστε να μάθει τα μνημονικά όνοματά τους. Για την ακρίβεια, αυτό που έκανε το nmap είναι τα λεγόμενα reverse DNS lookups ή αλλιώς reverse DNS resolutions (rDNS), προκειμένου να μάθει το domain name που αντιστοιχεί στη διεύθυνση IP κάθε ενεργού host.
  • Το nmap έμαθε τα domain names των 6 από τα 7 ενεργά hosts (βλ., π.χ., localrouter.parabing.local, win7host.parabing.local κ.ο.κ.).
  • Για κάποια hosts, όπως αυτό το JoePC.parabing.local (192.168.85.112), το nmap βρήκε ανοικτά ports αλλά δεν αναγνώρισε τις υπηρεσίες πίσω τους (unknown). Είναι πάντως σε θέση να τα καταφέρνει και καλύτερα. Θα δούμε σε λίγο πώς.
  • Τα 5 από τα 7 ενεργά hosts έχουν διάφορα ανοικτά ports. Εξαίρεση αποτελούν τα trusty.parabing.local (192.168.85.141) και kali.parabing.local (192.168.85.20), τα οποία μοιάζουν να μην έχουν ούτε ένα port ανοικτό.

Βλέπουμε ότι σε κάθε host το nmap ελέγχει 1000 στο πλήθος ports. Αυτή είναι η προκαθορισμένη συμπεριφορά. Αν του ζητήσουμε να ελέγξει περισσότερα ports –και θα δούμε αργότερα πώς του το ζητάμε– ίσως αποδειχθεί ότι hosts σαν το kali.parabing.local δεν είναι και τόσο “stealth” όσο αρχικά δείχνουν.

Ας σταθούμε λίγο και στα domain names. Κάποια εξ αυτών, όπως το localrouter.parabing.local, φανερώνουν το είδος του αντίστοιχου host. Αυτό το localrouter.parabing.local, για παράδειγμα, μας λέει ότι το 192.168.85.1 μάλλον είναι ο router του τοπικού δικτύου στο οποίο τώρα βρισκόμαστε και κάνουμε τις δοκιμές μας. Μπορεί πράγματι να ‘ναι ο router, μπορεί όμως κι όχι. Υπάρχουν διάφοροι τρόποι για να βρούμε τον router κι ένας απ’ αυτούς είναι με τη βοήθεια του ίδιου του nmap:

root@kali:~# nmap --iflist
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-23 12:19 EEST
************************INTERFACES************************
...
**************************ROUTES**************************
DST/MASK                     DEV  METRIC GATEWAY
192.168.85.0/24              eth0 0
0.0.0.0/0                    eth0 0      192.168.85.1
::1/128                      lo   0
fe80::a00:27ff:fe8a:a336/128 lo   0
fe80::/64                    eth0 256
ff00::/8                     eth0 256
root@kali:~#

Με μια ματιά στις στήλες DST/MASK και GATEWAY, επαληθεύουμε ότι ο 192.168.85.1 είναι πράγματι ο router του τοπικού δικτύου.

Το domain name μερικές φορές φανερώνει πολλά και για το λειτουργικό που τρέχει ο host. Παράδειγμα: Το win7host.parabing.local μάς κάνει να πιστεύουμε ότι το μηχάνημα με IP το 192.168.85.10, τρέχει Windows 7. Επίσης, αυτό το trusty.parabing.local μάς υποψιάζει ότι το 192.168.85.141 τρέχει Ubuntu Linux 14.04 (κωδική ονομασία Trusty Tahr). Υπογραμμίζουμε πάντως ότι με βάση το domain name και μόνο, ασφαλή συμπεράσματα για το λειτουργικό του host ούτε μπορούμε ούτε δικαιούμαστε να βγάζουμε. Ευτυχώς, το nmap είναι σε θέση να μας βοηθήσει και σ’ αυτόν τον τομέα. Περισσότερα επ’ αυτού θα δούμε στη συνέχεια του άρθρου.

Μέχρι στιγμής δείξαμε πώς σκανάρουμε ένα host και πώς ένα ολόκληρο δίκτυο. Αλλά το nmap είναι πολύ πιο ευέλικτο, όσον αφορά στον προσδιορισμό στόχων. Το τι εννοούμε φαίνεται στα παραδείγματα που ακολουθούν.

Σάρωση συγκεκριμένων hosts, τοπικά και στο Intentet

root@kali:~# nmap 192.168.85.1 192.168.85.111 192.168.85.141

Φυσικά, αν για κάποιο host γνωρίζουμε το domain name του, μπορούμε να δίνουμε και κάτι τέτοιο:

root@kali:~# nmap localrouter.parabing.local 192.168.85.111 trusty.parabing.local

Όπως έχουμε ήδη αναφέρει, το nmap δεν έχει κανένα απολύτως πρόβλημα να σκανάρει hosts στο Internet:

root@kali:~# nmap scanme.nmap.org
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-23 13:41 EEST
Nmap scan report for scanme.nmap.org (74.207.244.221)
Host is up (0.22s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
9929/tcp open  nping-echo

Nmap done: 1 IP address (1 host up) scanned in 3.96 seconds
root@kali:~#

Αν οι υπό σάρωση hosts έχουν IPs που διαφέρουν μόνον ως προς το τελευταίο octet, τότε μπορούμε να δίνουμε:

root@kali:~# nmap 192.168.85.1,111,141

Εναλλακτικός τρόπος σάρωσης subnet:

root@kali:~# nmap 192.168.85.*

Το ίδιο αποτέλεσμα είχαμε πετύχει προηγουμένως, δίνοντας “nmap 192.168.85.0/24”.

Σάρωση “συνεχούς” υποσυνόλου ενός subnet (IP address range):

root@kali:~# nmap 192.168.85.100-150

Σάρωση hosts από λίστα σε αρχείο:

root@kali:~# nmap -iL hosts.list

Το hosts.list είναι ένα αρχείο απλού κειμένου (εννοείται ότι το ονομάζουμε όπως θέλουμε), το οποίο σε κάθε γραμμή περιέχει τη διεύθυνση IP ή το domain name ενός host. Εναλλακτικά, σε κάποιες ή σε όλες από τις γραμμές του hosts.list επιτρέπεται να ορίζονται network blocks (π.χ., με τη μορφή CIDR) ή IP address ranges. Μέσα στο hosts.list μπορούμε να έχουμε και γραμμές με σχόλια. Κάθε τέτοια γραμμή ξεκινά με το χαρακτήρα # κι εκτείνεται έως το τέλος της.

Σάρωση με εξαιρέσεις:

root@kali:~# nmap 192.168.85.5-200 --exclude 192.168.85.30

Στο παράδειγμα σαρώνουμε όλα τα μηχανήματα από το 192.168.85.5 έως και το 192.168.85.200, αλλά όχι το 192.168.85.30 (π.χ., επειδή γνωρίζουμε ότι τρέχει κάποιο IDS και δεν θέλουμε να χτυπήσει συναγερμός). Η παράμετρος –exclude μπορεί να δεχθεί μια λίστα από hosts, network blocks ή και ranges, τα οποία χωρίζονται μεταξύ τους με κόμματα. Τα hosts που επιθυμούμε να εξαιρούνται είναι δυνατόν να διαβάζονται από ένα αρχείο, οπότε σ’ αυτές τις περιπτώσεις χρησιμοποιούμε την παράμετρο –excludefile:

root@kali:~# nmap 192.168.85.5-200 --excludefile hosts.list

Για τη σύνταξη του hosts.list ισχύουν όλα όσα αναφέραμε πριν λίγο, όταν συζητούσαμε για τα αρχεία που δίνουμε στην παράμετρο -iL.

Συνδυασμοί:

root@kali:~# nmap -sL 192.168.85.1-40 192.168.85.70-245 192.168.85.250 --exclude 192.168.85.130-160

Τυχαία σάρωση:

root@kali:~# nmap -iR 10

Με την παραπάνω εντολή ζητάμε τη σάρωση 10 στο πλήθος τυχαίων hosts στο Internet. Γενικά, η παράμετρος -iR δέχεται το πλήθος των τυχαίων διευθύνσεων που θα παραγάγει. Έχετε κατά νου ότι αρκετοί διαχειριστές δεν εκτιμούν τις “αυθόρμητες” σαρώσεις των hosts που έχουν υπό την εποπτεία τους. Δεν αποκλείεται να παραπονεθούν στον ISP σας κι εκείνος με τη σειρά του να παραπονεθεί σ’ εσάς. Χρησιμοποιείτε την παράμετρο -iR μόνον όταν ξέρετε πολύ καλά τι πάτε να κάνετε κι έχοντας πλήρη συνείδηση των πιθανών συνεπειών.

Διερεύνηση για ενεργά hosts, υπηρεσίες & λειτουργικά
Μερικές φορές θέλουμε να βρούμε στα γρήγορα όλα τα ενεργά hosts ενός δικτύου ή ενός τμήματος δικτύου ή, τέλος πάντων, μιας λίστας από hosts. Σε τέτοιες περιπτώσεις χρησιμοποιούμε την επιλογή -sn, η οποία λέει στο nmap να μην κάνει port scan αλλά μόνο ένα “ping scan” ή αλλιώς “ping sweep”. Παράδειγμα:

root@kali:~# nmap -sn 192.168.85.1-254
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 13:03 EEST
Nmap scan report for localrouter.parabing.local (192.168.85.1)
Host is up (0.00058s latency).
MAC Address: 08:00:27:05:A3:2A (Cadmus Computer Systems)
Nmap scan report for win7host.parabing.local (192.168.85.10)
Host is up (0.00025s latency).
MAC Address: 02:00:4C:4F:4F:50 (Unknown)
Nmap scan report for 192.168.85.111
Host is up (0.0014s latency).
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)
Nmap scan report for JoePC.parabing.local (192.168.85.112)
Host is up (0.00095s latency).
MAC Address: 08:00:27:79:37:C5 (Cadmus Computer Systems)
Nmap scan report for secdesk.parabing.local (192.168.85.125)
Host is up (0.00063s latency).
MAC Address: 08:00:27:67:0E:3D (Cadmus Computer Systems)
Nmap scan report for trusty.parabing.local (192.168.85.141)
Host is up (0.00024s latency).
MAC Address: 08:00:27:59:2F:CB (Cadmus Computer Systems)
Nmap scan report for kali.parabing.local (192.168.85.20)
Host is up.
Nmap done: 254 IP addresses (7 hosts up) scanned in 1.84 seconds
root@kali:~#

Όπως φαίνεται στ’ αποτελέσματα, από τα 254 hosts που θα μπορούσαν να υπάρχουν στο μικρό μας δίκτυο, το nmap εντόπισε 7 ενεργά hosts.

Προηγουμένως, εξάλλου, είδαμε ότι το nmap δεν μπορούσε να είναι σίγουρο για τις υπηρεσίες που έτρεχαν σε κάποια hosts. Επιπρόσθετα, μερικές φορές είναι σημαντικό να γνωρίζουμε όχι μόνο το όνομα μιας υπηρεσίας, αλλά και την έκδοσή της. Ίσως, π.χ., να ξέρουμε ότι η τάδε έκδοση ενός συγκεκριμένου FTP server έχει μια συγκεκριμένη αδυναμία, την οποία ένας attacker θα μπορούσε να εκμεταλλευτεί προκειμένου ν’ αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον server. Το nmap έχει τη δυνατότητα συλλογής μιας πληθώρας πληροφοριών για τις υπηρεσίες, αρκεί να του δώσουμε την επιλογή -sV. Ένας τρόπος για να δείτε στην πράξη πώς δουλεύει η -sV, είναι να κάνετε δύο scans στο VM με το Metasploitable (για εμάς είναι το host με IP το 192.168.85.111). Το ένα scan είναι χωρίς την -sV…

root@kali:~# nmap 192.168.85.111
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-22 23:29 EEST
Nmap scan report for 192.168.85.111
Host is up (0.00018s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
23/tcp   open  telnet
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
111/tcp  open  rpcbind
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
512/tcp  open  exec
513/tcp  open  login
514/tcp  open  shell
1099/tcp open  rmiregistry
1524/tcp open  ingreslock
2049/tcp open  nfs
2121/tcp open  ccproxy-ftp
3306/tcp open  mysql
5432/tcp open  postgresql
5900/tcp open  vnc
6000/tcp open  X11
6667/tcp open  irc
8009/tcp open  ajp13
8180/tcp open  unknown
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)

Nmap done: 1 IP address (1 host up) scanned in 0.48 seconds
root@kali:~#

και το άλλο είναι ίδιο αλλά έχει την επιλογή -sV:

root@kali:~# nmap -sV 192.168.85.111
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 16:19 EEST
Nmap scan report for 192.168.85.111
Host is up (0.00071s latency).
Not shown: 977 closed ports
PORT     STATE SERVICE     VERSION
21/tcp   open  ftp         vsftpd 2.3.4
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp   open  telnet      Linux telnetd
25/tcp   open  smtp        Postfix smtpd
53/tcp   open  domain      ISC BIND 9.4.2
80/tcp   open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp  open  rpcbind     2 (RPC #100000)
139/tcp  open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
512/tcp  open  exec        netkit-rsh rexecd
513/tcp  open  login
514/tcp  open  tcpwrapped
1099/tcp open  rmiregistry GNU Classpath grmiregistry
1524/tcp open  shell       Metasploitable root shell
2049/tcp open  nfs         2-4 (RPC #100003)
2121/tcp open  ftp         ProFTPD 1.3.1
3306/tcp open  mysql       MySQL 5.0.51a-3ubuntu5
5432/tcp open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open  vnc         VNC (protocol 3.3)
6000/tcp open  X11         (access denied)
6667/tcp open  irc         Unreal ircd
8009/tcp open  ajp13       Apache Jserv (Protocol v1.3)
8180/tcp open  http        Apache Tomcat/Coyote JSP engine 1.1
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)
Service Info: Hosts:  metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.41 seconds
root@kali:~#

Στο δεύτερο scan οι πληροφορίες περί έκδοσης των υπηρεσιών είναι στη νέα στήλη, ονόματι VERSION. Παρατηρήστε επίσης ότι το nmap βρήκε κάτι και για την υπηρεσία πίσω από το port 8180/TCP, η οποία στο πρώτο scan ήταν χαρακτηρισμένη ως “unknown”.

Εκτός από υπηρεσίες, το nmap έχει τον τρόπο του να μαθαίνει πληροφορίες για το λειτουργικό που τρέχει ένας host. Η επιλογή γι’ αυτή τη δουλειά είναι η -O:

root@kali:~# nmap -O 192.168.85.112
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 17:12 EEST
Nmap scan report for JoePC.parabing.local (192.168.85.112)
Host is up (0.00027s latency).
Not shown: 990 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
5357/tcp  open  wsdapi
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49155/tcp open  unknown
49156/tcp open  unknown
49158/tcp open  unknown
MAC Address: 08:00:27:79:37:C5 (Cadmus Computer Systems)
Device type: general purpose
Running: Microsoft Windows 7|2008
OS CPE: cpe:/o:microsoft:windows_7::- cpe:/o:microsoft:windows_7::sp1 cpe:/o:microsoft:windows_server_2008::sp1 cpe:/o:microsoft:windows_8
OS details: Microsoft Windows 7 SP0 - SP1, Windows Server 2008 SP1, or Windows 8
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.21 seconds
root@kali:~#

Σύμφωνα με την ανάλυση του nmap, το 192.168.85.112 τρέχει Windows 7 ή Windows 2008. Όπως κάναμε και προηγουμένως, έτσι και τώρα μπορούμε να συνδυάζουμε επιλογές:

root@kali:~# nmap -O -sV 192.168.85.112
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 17:18 EEST
Nmap scan report for JoePC.parabing.local (192.168.85.112)
Host is up (0.00030s latency).
Not shown: 990 closed ports
PORT      STATE SERVICE     VERSION
135/tcp   open  msrpc       Microsoft Windows RPC
139/tcp   open  netbios-ssn
445/tcp   open  netbios-ssn
5357/tcp  open  http        Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
49152/tcp open  msrpc       Microsoft Windows RPC
49153/tcp open  msrpc       Microsoft Windows RPC
49154/tcp open  msrpc       Microsoft Windows RPC
49155/tcp open  msrpc       Microsoft Windows RPC
49156/tcp open  msrpc       Microsoft Windows RPC
49158/tcp open  msrpc       Microsoft Windows RPC
MAC Address: 08:00:27:79:37:C5 (Cadmus Computer Systems)
Device type: general purpose
Running: Microsoft Windows 7|2008
OS CPE: cpe:/o:microsoft:windows_7::- cpe:/o:microsoft:windows_7::sp1 cpe:/o:microsoft:windows_server_2008::sp1 cpe:/o:microsoft:windows_8
OS details: Microsoft Windows 7 SP0 - SP1, Windows Server 2008 SP1, or Windows 8
Network Distance: 1 hop
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 56.66 seconds
root@kali:~#

Καθορισμός θυρών και πρωτοκόλου
Όταν σκανάρουμε ένα host, εξ ορισμού το nmap ελέγχει τα 1000 πιο συνηθισμένα TCP ports. Προφανώς, ένα host είναι πιθανό να ‘χει κάποιο port ανοικτό αλλά αυτό να μη συγκαταλέγεται στα 1000 πιο συνηθισμένα. Δείτε αυτό το παράδειγμα:

root@kali:~# nmap 192.168.85.20
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 18:55 EEST
Nmap scan report for kali.parabing.local (192.168.85.20)
Host is up (0.000013s latency).
All 1000 scanned ports on kali.parabing.local (192.168.85.20) are closed

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
root@kali:~#

Αν το 192.168.85.20 έχει κάποιο port ανοικτό, αυτό δεν είναι ανάμεσα στα 1000 πιο συνηθισμένα. Με την επιλογή -p μπορούμε να πούμε στο nmap ποια ports να ελέγξει. Μιας και τώρα πειραματιζόμαστε με ασφάλεια εντός του εικονικού μας εργαστηρίου, ας ακολουθήσουμε μια κάπως χοντροκομμένη τακτική κι ας ζητήσουμε από το nmap να ελέγξει όλα τα TCP ports του στόχου:

root@kali:~# nmap -p 1-65535 192.168.85.20
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 18:59 EEST
Nmap scan report for kali.parabing.local (192.168.85.20)
Host is up (0.000017s latency).
Not shown: 65533 closed ports
PORT      STATE SERVICE
12222/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 3.25 seconds
root@kali:~#

Να λοιπόν που ο στόχος μας έχει ένα TCP port ανοικτό: το 12222. Η υπηρεσία πίσω απ’ αυτό δείχνει άγνωστη, όμως δεν υπάρχει κανένας λόγος να κάνουμε υποθέσεις:

root@kali:~# nmap -p 12222 -sV 192.168.85.20
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 19:06 EEST
Nmap scan report for kali.parabing.local (192.168.85.20)
Host is up (0.000081s latency).
PORT      STATE SERVICE VERSION
12222/tcp open  ssh     OpenSSH 6.0p1 Debian 4+deb7u2 (protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds
root@kali:~#

Μάλιστα! Ο ιδιοκτήτης του 192.168.85.20 έχει απλά αλλάξει την προκαθορισμένη θύρα που χρησιμοποιεί η υπηρεσία OpenSSH (είναι η 22/TCP), προφανώς για λόγους ασφαλείας. Αυτή η τακτική συνηθίζεται στους servers, στο πλαίσιο των μέτρων ασφαλείας κατά “αφελών” scripts που ψάχνουν για δημοφιλείς υπηρεσίες στα τυφλά. Όπως όμως αποδεικνύει το απλό παράδειγμά μας, κάποιος που είναι αποφασισμένος να μάθει αν τρέχουμε μια συγκεκριμένη υπηρεσία ή όχι, χάρη στο nmap είναι πολύ εύκολο να κάνει τους ελέγχους του.

Στο σημείο αυτό σίγουρα φαντάζεστε ότι η επιλογή -p είναι αρκετά πιο ευέλικτη απ’ όσο φανερώνουν τα δύο προηγούμενα παραδείγματα. Πράγματι, έτσι είναι. Ας πούμε, π.χ., ότι βαριόμαστε λίγο και θέλουμε να βρούμε –έτσι, για πλάκα– μηχανήματα στο Internet τα οποία τρέχουν κάποιον web server ή έχουν την υπηρεσία OpenSSH ενεργοποιημένη. Υποθέτοντας ότι χρησιμοποιούνται οι προκαθορισμένες θύρες, η 80/TCP και η 22/TCP αντίστοιχα, ας δοκιμάσουμε 500 hosts εντελώς στην τύχη:

root@kali:~# nmap -v -Pn -p 22,80 --open -oN random.hosts -iR 500
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-24 19:32 EEST
Initiating Parallel DNS resolution of 500 hosts. at 19:32
Completed Parallel DNS resolution of 500 hosts. at 19:32, 19.19s elapsed
Initiating SYN Stealth Scan at 19:32
Scanning 500 hosts [2 ports/host]
Discovered open port 80/tcp on p.q.r.s
Discovered open port 80/tcp on x.y.z.t
...
Discovered open port 22/tcp on a.b.c.d
Discovered open port 80/tcp on i.j.k.l
...
Discovered open port 22/tcp on s.t.u.v
...
Completed SYN Stealth Scan at 19:33, 37.92s elapsed (1000 total ports)
Nmap scan report for real-domain-name.hidden.net (e.f.g.h)
Host is up (0.41s latency).
Not shown: 1 filtered port
PORT   STATE SERVICE
80/tcp open  http
...
root@kali:~#

Στην παραπάνω εντολή υπάρχουν τρεις επιλογές του nmap για τις οποίες δεν έχουμε ακόμα συζητήσει. Κατ’ αρχάς, η -v αυξάνει το πλήθος των πληροφοριών που εμφανίζει το nmap στο τερματικό καθώς εργάζεται. Κάποιες σαρώσεις παίρνουν αρκετή ώρα για να ολοκληρωθούν κι όταν βλέπουμε “δράση” στην οθόνη βεβαιωνόμαστε ότι όλα προχωράνε κι ο χρόνος μας δεν πηγαίνει (εντελώς) χαμένος. Ενδιαφέρουσα είναι η παράμετρος -Pn, η οποία ζητά από το nmap να μη χρησιμοποιεί ping scans προκειμένου να εντοπίζει ενεργά hosts. Αντίθετα, με την -Pn το nmap θεωρεί ότι όλοι οι στόχοι του είναι ενεργοί και συνεχίζει με τους όποιους άλλους ελέγχους του έχουμε ζητήσει να επιτελέσει. Γιατί όμως να θέλουμε την επιλογή -Pn; Πολύ απλά διότι αρκετοί servers, ειδικά στο Internet, προστατεύονται από firewalls τα οποία είναι ρυθμισμένα ώστε να αγνοούν εντελώς τα pings. Ας δούμε τώρα και την επιλογή –open. Η συμπερίληψή της σε μια σάρωση διαμορφώνει τα αποτελέσματα που παίρνουμε, ώστε να περιλαμβάνουν hosts που έχουν τουλάχιστον ένα open, open|filtered ή unfiltered port. Μ’ άλλα λόγια, όταν υπάρχει η επιλογή –open τότε δεν βλέπουμε hosts τα οποία έχουν μόνο closed, filtered ή closed|filtered ports. Με την επιλογή -oN, εξάλλου, η οποία ακολουθείται από ένα όνομα αρχείου, ζητάμε από το nmap να αποθηκεύσει τα αποτελέσματα σε ένα αρχείο απλού κειμένου. Μιας και πριν λίγο ξεκινήσαμε τη σάρωση 500 στο πλήθος τυχαίων hosts, είναι αναμενόμενο ότι τ’ αποτελέσματα του nmap θα γεμίσουν το τερματικό και γι’ αυτό είναι καλό να τ’ αποθηκεύσουμε και σ’ ένα αρχείο. Εκτός από την -oN, υπάρχουν τρεις άλλες επιλογές για την αποθήκευση αποτελεσμάτων. Από αυτές ιδιαίτερα χρήσιμη είναι η -oX, η οποία αποθηκεύει σε αρχεία μορφής XML. Τα αρχεία του είδους αναγνωρίζουν κι ανοίγουν διάφορες εφαρμογές, μεταξύ αυτών και το front-end γραφικών Zenmap.

Κατά τη διάρκεια των πειραματισμών μας, μεταξύ των 500 hosts που ελέγξαμε βρήκαμε κάποιους που έτρεχαν web servers, άλλους που έτρεχαν SSH servers, καθώς και έναν που έτρεχε και τις δύο υπηρεσίες ταυτόχρονα.

Λίγο πριν ολοκληρώσουμε την εισαγωγή μας στο nmap, ας δούμε μερικές ακόμα όψεις του που αφορούν στην επιλογή ports για σάρωση. Στα έως τώρα παραδείγματά μας το nmap ήλεγχε TCP ports. Έχει όμως την ικανότητα να ελέγχει και UDP ports, με την επιλογή -sU. Δείτε:

root@kali:~# nmap -sU 192.168.85.1
Nmap scan report for localrouter.parabing.local (192.168.85.1)
Host is up (0.00040s latency).
Not shown: 996 closed ports
PORT     STATE         SERVICE   VERSION
53/udp   open          domain    dnsmasq 2.65
67/udp   open|filtered dhcps
514/udp  open|filtered syslog
4500/udp open|filtered nat-t-ike
MAC Address: 08:00:27:05:A3:2A (Cadmus Computer Systems)
Device type: firewall|general purpose
Running: Genua OpenBSD 4.X, OpenBSD 3.X|4.X|5.X
OS CPE: cpe:/o:genua:openbsd:4 cpe:/o:openbsd:openbsd:3.4 cpe:/o:openbsd:openbsd:4
Too many fingerprints match this host to give specific OS details
Network Distance: 1 hop

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 159.60 seconds
root@kali:~#

Με μία σάρωση έχουμε τη δυνατότητα να ελέγχουμε TCP αλλά και UDP ports, ταυτόχρονα. Αν, π.χ., θέλουμε να ψάξουμε στα γρήγορα το τοπικό δίκτυο για μηχανήματα που μοιράζουν αρχεία κατά SMB/CIFS, δέχονται συνδέσεις SSH ή παρέχουν υπηρεσίες DNS, ένας τρόπος για να τα εντοπίσουμε είναι με τη βοήθεια του nmap:

root@kali:~# nmap -sS -sU -p T:22,137-139,389,445,901,U:53,137-139 --open 192.168.85.*
Starting Nmap 6.46 ( http://nmap.org ) at 2014-08-25 00:07 EEST
Nmap scan report for localrouter.parabing.local (192.168.85.1)
Host is up (0.0073s latency).
Not shown: 9 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
53/udp open  domain
MAC Address: 08:00:27:05:A3:2A (Cadmus Computer Systems)

Nmap scan report for win7host.parabing.local (192.168.85.10)
Host is up (0.00042s latency).
Not shown: 5 filtered ports
PORT    STATE         SERVICE
139/tcp open          netbios-ssn
445/tcp open          microsoft-ds
53/udp  open|filtered domain
137/udp open          netbios-ns
138/udp open|filtered netbios-dgm
139/udp open|filtered netbios-ssn
MAC Address: 02:00:4C:4F:4F:50 (Unknown)

Nmap scan report for 192.168.85.111
Host is up (0.0012s latency).
Not shown: 5 closed ports
PORT    STATE         SERVICE
22/tcp  open          ssh
139/tcp open          netbios-ssn
445/tcp open          microsoft-ds
53/udp  open          domain
137/udp open          netbios-ns
138/udp open|filtered netbios-dgm
MAC Address: 08:00:27:EC:48:E4 (Cadmus Computer Systems)

Nmap scan report for JoePC.parabing.local (192.168.85.112)
Host is up (0.0011s latency).
Not shown: 7 closed ports
PORT    STATE         SERVICE
139/tcp open          netbios-ssn
445/tcp open          microsoft-ds
137/udp open          netbios-ns
138/udp open|filtered netbios-dgm
MAC Address: 08:00:27:79:37:C5 (Cadmus Computer Systems)

Nmap scan report for secdesk.parabing.local (192.168.85.125)
Host is up (0.00040s latency).
Not shown: 7 closed ports
PORT    STATE         SERVICE
139/tcp open          netbios-ssn
445/tcp open          microsoft-ds
137/udp open          netbios-ns
138/udp open|filtered netbios-dgm
MAC Address: 08:00:27:67:0E:3D (Cadmus Computer Systems)

Nmap done: 256 IP addresses (7 hosts up) scanned in 6.03 seconds
root@kali:~#

Το nmap βρήκε 7 ενεργά hosts. Λόγω όμως της επιλογής –open, παρουσιάζει τα 5 που έχουν ανοικτή τουλάχιστον μία από τις θύρες 22/TCP, 137/TCP, 138/TCP, 139/TCP, 389/TCP, 445/TCP, 901/TCP, 53/UDP, 137/UDP, 138/UDP, 139/UDP. Έχετε κατά νου ότι προκειμένου να πραγματοποιούνται τόσο TCP όσο και UDP scans ταυτόχρονα, στο nmap οφείλουμε να δίνουμε την επιλογή -sU αλλά και να καθορίζουμε το είδος του TCP scan. Όταν το nmap τρέχει από το λογαριασμό του διαχειριστή συστήματος, όπως συμβαίνει με τα παραδείγματά μας, τότε εξ ορισμού πραγματοποιούνται TCP SYN scans. Η σχετική επιλογή για το nmap είναι η -sS και –αν και υποννοείται– όποτε επιθυμούμε να γίνεται και UDP scan τότε υποχρεούμαστε να τη δίνουμε στη γραμμή εντολής.

Μία άλλη, ενδιαφέρουσα, επιλογή που αφορά στα ports είναι η –top-ports. Δέχεται ως όρισμα έναν θετικό ακέραιο k, ο οποίος αντιπροσωπεύει τα k πιο δημοφιλή ports ανά πρωτόκολλο (TCP, UDP) που είναι ανοικτά σε servers κι αναφέρονται στο αρχείο nmap-services (/usr/share/nmap/nmap-services). Σημειώστε ότι οι πληροφορίες στο εν λόγω αρχείο έχουν προκύψει μετά από πραγματική έρευνα στο Internet. Παράδειγμα:

root@kali:~# nmap -sTU --top-ports 100 --open 192.168.85.*

Παρατηρήστε ότι με την παραπάνω εντολή ελέγχουμε τα 100 πιο δημοφιλή TCP ports (-sT) αλλά και τα 100 πιο δημοφιλή UDP ports (-sU), καθώς κι ότι συμπτύξαμε τις επιλογές -sU και -sT σε μία (-sTU).

Η συνέχεια
Θέλουμε να πιστεύουμε ότι το nmap έχει κεντρίσει το ενδιαφέρον σας κι ότι έχετε ήδη αρχίσει τους πειραματισμούς, στο δικό σας εικονικό εργαστήριο. Περιττό να πούμε ότι έχουν γραφτεί βιβλία γι’ αυτό το θαυμάσιο εργαλείο, θα γραφτούν κι άλλα και μολαταύτα το nmap θα συνεχίσει να έχει κρυφές όψεις και να προκαλεί το θαυμασμό. Από τη μεριά μας, πέρα από αυτή τη σύντομη εισαγωγή θα θέλαμε να πούμε λίγα περισσότερα, τα οποία αρχίζουν να απομακρύνονται λίγο από τα βασικά κι απολύτως απαραίτητα. Συνεχίστε εδώ.

Σας άρεσε το άρθρο; Αν ναι, τι θα λέγατε για ένα tip στο PayPal;

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων