Τι είναι η σάρωση θυρών;
Οι θύρες αποτελούν έναν από τους κύριους λόγους για τους οποίους τα πακέτα δεδομένων μπορούν να φτάσουν στον επιθυμητό προορισμό τους. Λειτουργούν ως διεπαφές μεταξύ υπολογιστών και υπηρεσιών ή προγραμμάτων του συστήματος και χρησιμοποιούνται από τα πρωτόκολλα δικτύου TCP και UDP. Σε συνδυασμό με τη διεύθυνση IP, τα λειτουργικά συστήματα μπορούν να προσδιορίσουν σε ποιον υπολογιστή και σε ποια εφαρμογή πρέπει να στείλουν τα δεδομένα.
Τι είναι η σάρωση θυρών; Μια σύντομη εξήγηση
Ο όρος «σάρωση θυρών» αναφέρεται στη στοχευμένη διαδικασία ελέγχου των ανοιχτών θυρών σε ένα υπολογιστικό σύστημα με τη βοήθεια ειδικών εργαλείων. Πριν αναλύσουμε τι είναι η σάρωση θυρών, θα ήταν χρήσιμο να δούμε πρώτα τι είναι οι θύρες. Οι θύρες λειτουργούν ως διεπαφή μεταξύ των ενεργών προγραμμάτων και του διαδικτύου. Χρησιμοποιούνται για τη δρομολόγηση εισερχόμενων και εξερχόμενων πακέτων δεδομένων προς τις σωστές εφαρμογές και διαχειρίζονται από τα λειτουργικά συστήματα.
Για να μπορεί μια εφαρμογή να επικοινωνεί μέσω μιας θύρας, αυτή πρέπει να είναι ανοιχτή. Το άνοιγμα θυρών, ωστόσο, ενέχει κίνδυνο. Εάν μία από τις εφαρμογές που χρησιμοποιούν τη θύρα παρουσιάζει κενά ασφαλείας, η θύρα μπορεί να λειτουργήσει ως πιθανό σημείο εισόδου για τους εισβολείς. Για να ελαχιστοποιήσετε τον κίνδυνο επίθεσης, θα πρέπει πάντα να γνωρίζετε ποιες θύρες είναι ανοιχτές στο σύστημά σας και ποιες εφαρμογές συνδέονται με αυτές.
Δεν χρειάζεται να είστε συνδεδεμένοι στο σύστημα-στόχο για να εκτελέσετε σάρωση θυρών σε αυτό. Αρκεί να είστε συνδεδεμένοι σε αυτό μέσω τοπικού δικτύου ή του διαδικτύου. Με τη βοήθεια προγραμμάτων σάρωσης θυρών, μπορείτε να στείλετε ειδικά πακέτα δεδομένων ως δοκιμές σε διάφορες θύρες. Στη συνέχεια, θα λάβετε απαντήσεις ή μηνύματα σφάλματος, τα οποία θα αναλύσει το εργαλείο που χρησιμοποιείτε. Ανάλογα με το εύρος λειτουργιών του προγράμματος σάρωσης, μπορείτε να λάβετε πληροφορίες σχετικά με το ποιες θύρες είναι ανοιχτές και ποιες κλειστές. Μπορείτε επίσης να λάβετε δεδομένα σχετικά με τις υπηρεσίες και/ή τις εφαρμογές που χρησιμοποιούν οι αντίστοιχες θύρες.
Η σάρωση θυρών προσφέρει στους διαχειριστές συστημάτων ένα πολύ αποτελεσματικό μέσο για την παρακολούθηση της κυκλοφορίας δεδομένων σε ένα δίκτυο. Μέσω της σάρωσης θυρών, μπορούν να εντοπιστούν πιθανά τρωτά σημεία και να μειωθεί η επιφάνεια επίθεσης του συστήματος. Σε ορισμένες περιπτώσεις, μπορεί να βοηθήσει τους διαχειριστές να επιλύσουν συγκεκριμένα προβλήματα δικτύου. Επιπλέον, τα εργαλεία δεν έχουν καμία αξιοσημείωτη επίδραση στην απόδοση των συστημάτων που σαρώνουν. Ως αποτέλεσμα, μπορούν να χρησιμοποιηθούν για μέτρα ασφαλείας χωρίς να χρειάζεται να ανησυχούν για ακούσιες επιπτώσεις στην απόδοση του συστήματος.
Τα προγράμματα σάρωσης θυρών είναι επίσης χρήσιμα για τους οικιακούς υπολογιστές. Μόλις αρχίσετε να χρησιμοποιείτε εφαρμογές που απαιτούν σύνδεση στο διαδίκτυο, οι θύρες ανοίγουν αυτόματα, εκτός αν το τείχος προστασίας σας εμποδίζει το άνοιγμά τους. Μια σάρωση θυρών μπορεί να σας βοηθήσει να έχετε μια συνολική εικόνα της κατάστασης, δείχνοντάς σας τις θύρες που δεν χρειάζονται πλέον. Στη συνέχεια, μπορείτε να τις κλείσετε προκειμένου να μειώσετε τους κινδύνους ασφαλείας.
Πώς λειτουργεί η σάρωση θυρών;
Τα προγράμματα σάρωσης θυρών προσφέρουν πολλές διαφορετικές μεθόδους. Οι περισσότερες από αυτές, ωστόσο, βασίζονται στο πρωτόκολλο TCP, το οποίο λειτουργεί με βάση τις συνδέσεις. Για να κατανοήσουμε τις βασικές διαδικασίες που λαμβάνουν χώρα κατά τη σάρωση θυρών, είναι χρήσιμο να εξετάσουμε τη γενική δομή των συνδέσεων TCP:
- Η διαδικασία αυτή, γνωστή και ως «τριπλή χειραψία», ξεκινά με την αποστολή ενός πακέτου SYN (συγχρονισμός) από τον πελάτη προς τη θύρα προορισμού.
- Μόλις το πακέτο φτάσει σε μια εφαρμογή, ο πελάτης λαμβάνει ένα συνδυασμένο πακέτο SYN/ACK (συγχρονισμός/επιβεβαίωση), το οποίο επιβεβαιώνει ότι η σύνδεση έχει δημιουργηθεί.
- Στο τρίτο και τελευταίο βήμα, ο πελάτης στέλνει ένα πακέτο ACK (επιβεβαίωση), το οποίο ολοκληρώνει τη σύνδεση, επιτρέποντας την έναρξη της ανταλλαγής δεδομένων.
Εάν γίνει επαφή με μια κλειστή θύρα, ο πελάτης θα λάβει ένα πακέτο RST (επαναφορά) κατά τη διάρκεια του δεύτερου βήματος, τερματίζοντας τη διαδικασία χειραψίας.
Δεδομένου ότι η ανταλλαγή δεδομένων με διαφορετικούς τύπους εφαρμογών θα ήταν δύσκολη και χρονοβόρα, η σάρωση θυρών περιορίζεται σε απλές προσπάθειες δημιουργίας συνδέσεων, όπως δείχνουν οι παρακάτω μέθοδοι σάρωσης.
Σάρωση TCP-SYN
Ο στόχος μιας σάρωσης TCP-SYN δεν είναι η δημιουργία μιας πλήρους σύνδεσης TCP. Για αυτόν τον λόγο, αυτός ο τύπος σάρωσης αναφέρεται συνήθως ως σάρωση ημι-ανοιχτών θυρών. Χρησιμοποιώντας το πρόγραμμα σάρωσης θυρών, αυτή η μέθοδος στέλνει τυπικά πακέτα SYN σε μεμονωμένες θύρες και περιμένει απάντηση από τον κεντρικό υπολογιστή-στόχο. Εάν ο κεντρικός υπολογιστής στείλει πίσω ένα πακέτο SYN/ACK, αυτό σημαίνει ότι η αντίστοιχη θύρα είναι ανοιχτή και ότι είναι δυνατή η δημιουργία σύνδεσης. Εάν η απάντηση είναι ένα πακέτο RST, αυτό σημαίνει ότι η θύρα είναι κλειστή. Εάν δεν υπάρχει απάντηση, αυτό πιθανώς οφείλεται σε ένα φίλτρο πακέτων (π.χ. ένα τείχος προστασίας) που βρίσκεται ανάντη.
Οι σαρώσεις TCP-SYN δεν είναι ορατές στις εφαρμογές που υποβάλλονται σε έλεγχο και, για τον λόγο αυτό, δεν δημιουργούν δεδομένα καταγραφής. Γι’ αυτό και αναφέρονται επίσης ως «κρυφές σαρώσεις».
Σάρωση σύνδεσης TCP
Αν εκτελέσετε μια σάρωση τύπου «connect» με το πρόγραμμα σάρωσης θυρών που διαθέτετε, στην πραγματικότητα δεν δημιουργείτε και δεν στέλνετε εσείς οι ίδιοι το πακέτο δεδομένων. Αντ’ αυτού, χρησιμοποιείτε την κλήση συστήματος «connect». Αυτή είναι διαθέσιμη σε σχεδόν όλα τα λειτουργικά συστήματα. Αν η απόπειρα σύνδεσης είναι επιτυχής, αυτό σημαίνει ότι η θύρα είναι ανοιχτή. Αν η απόπειρα σύνδεσης αποτύχει, αυτό σημαίνει ότι η θύρα είναι κλειστή. Εάν η σύνδεση δημιουργήθηκε με επιτυχία (δηλ. η θύρα ήταν ανοιχτή), θα μπορείτε να δείτε ότι αυτή η τεχνική σάρωσης χρησιμοποιήθηκε στα αρχεία καταγραφής της εφαρμογής. Ωστόσο, δεν θα παρέχονται πληροφορίες σχετικά με τα προγράμματα φιλτραρίσματος που χρησιμοποιήθηκαν. Εάν δεν έχετε τα δικαιώματα να στέλνετε πακέτα ακατέργαστων δεδομένων, η σάρωση σύνδεσης TCP μπορεί να είναι μια χρήσιμη εναλλακτική λύση στις σαρώσεις SYN.
Σαρώσεις TCP-FIN, Xmas και Null
Αυτές οι τρεις μέθοδοι σάρωσης θυρών σας επιτρέπουν επίσης να διακρίνετε τις ανοιχτές από τις κλειστές θύρες. Εδώ χρησιμοποιούνται δύο βασικές έννοιες, οι οποίες περιγράφονται στο RFC 793:
- Οι κλειστές θύρες πρέπει πάντα να απαντούν στα πακέτα (εφ’ όσον δεν πρόκειται για πακέτα RST) με δικό τους πακέτο RST.
- Οι ανοιχτές θύρες πρέπει να αγνοούν όλα τα πακέτα που δεν φέρουν την ένδειξη SYN, RST ή ACK.
Κατά τη σάρωση συστημάτων συμβατών με το πρωτόκολλο RCF, αυτές οι μέθοδοι σάρωσης αξιοποιούν τις αρχές αυτές χρησιμοποιώντας τα δικά τους πακέτα:
- Η σάρωση Null δεν χρησιμοποιεί ειδικές ενδείξεις.
- Με τις σαρώσεις FIN, ο σαρωτής θυρών στέλνει πακέτα FIN (finish)
- Οι σαρώσειςXmas χρησιμοποιούν έναν συνδυασμό σημάνσεων FIN, PSH (push) και URG (urgent), κάτι που κάνει τα πακέτα να ανάβουν σαν χριστουγεννιάτικο δέντρο.
Και οι τρεις μέθοδοι σάρωσης λειτουργούν με τον ίδιο τρόπο. Λόγω των κανόνων του RCF, τα πακέτα δοκιμής διασφαλίζουν ότι οι κλειστές θύρες απαντούν με πακέτα RST και ότι οι ανοιχτές θύρες δεν δίνουν καμία απάντηση. Δεν στέλνουν όλοι οι δρομολογητές μηνύματα σφάλματος όταν μια θύρα είναι φιλτραρισμένη, πράγμα που μπορεί να σημαίνει ότι υπάρχει φιλτραρισμένη θύρα αν δεν εμφανιστεί κανένα μήνυμα (εκτός από την πιθανότητα να πρόκειται για ανοιχτή θύρα). Και ενώ αυτή η μέθοδος είναι πολύ πιο διακριτική από τις σαρώσεις SYN, ενδέχεται να μην λειτουργεί σωστά εάν τα συστήματα δεν συμμορφώνονται απόλυτα με το RFC 793. Ένα χαρακτηριστικό παράδειγμα αυτού είναι τα Windows.
Σάρωση UDP
Στις σαρώσεις UDP, αποστέλλονται κενές κεφαλίδες UDP χωρίς δεδομένα σε όλες τις κενές θύρες. Εάν μια υπηρεσία απαντήσει με ένα πακέτο UDP, η αντίστοιχη θύρα είναι ανοιχτή. Εάν το πρόγραμμα σάρωσης θυρών λάβει το μήνυμα σφάλματος «Port unreachable» από το δρομολογητή (τύπος 3, κωδικός 3), αναγνωρίζει τη θύρα ως κλειστή. Άλλα μηνύματα σφάλματος χρησιμεύουν για να ενημερώσουν τους χρήστες ότι τα φίλτρα πακέτων είναι υπεύθυνα για τον αποκλεισμό των θυρών. Το πρόβλημα με τον έλεγχο θυρών UDP είναι ο τεράστιος χρόνος που απαιτεί. Αυτό οφείλεται στο γεγονός ότι, για πολλά συστήματα, μπορεί να χρειαστεί πολύς χρόνος για την εμφάνιση μηνυμάτων σφάλματος για λόγους ασφαλείας. Επιπλέον, πολλά από αυτά τα συστήματα απαντούν στις θύρες μόνο σποραδικά. Ο πυρήνας Linux περιορίζει τον αριθμό των αναφορών ανά δευτερόλεπτο, πράγμα που σημαίνει ότι θα χρειαστούν περίπου 18 ώρες για την πλήρη σάρωση 65.535 θυρών.
Ποια προγράμματα σάρωσης θυρών υπάρχουν;
Υπάρχουν πολλοί διαφορετικοί σαρωτές που διαφέρουν ως προς το εύρος των λειτουργιών που προσφέρουν. Τα περισσότερα από αυτά τα εργαλεία διατίθενται ως δωρεάν λογισμικό ή ως επιλογές ανοιχτού κώδικα. Πολλά από αυτά διαθέτουν κλασικά προγράμματα γραμμής εντολών που μπορούν να χρησιμοποιηθούν μέσω ξεχωριστών γραφικών διεπαφών. Επιπλέον, υπάρχουν πολλές διαδικτυακές λύσεις που επιτρέπουν στους χρήστες να σαρώσουν θύρες απευθείας σε ένα πρόγραμμα περιήγησης. Υπηρεσίες όπως ο σαρωτής θυρών από τα εργαλεία DNS είναι περιορισμένες όσον αφορά τις λειτουργίες τους και προσφέρουν μόνο τη δυνατότητα ελέγχου μεμονωμένων θυρών. Για αυτόν τον λόγο, αποτελούν κατάλληλες επιλογές για τη διεξαγωγή γρήγορων ελέγχων σε προσωπικούς υπολογιστές.
Netcat
Το Netcat (συντομογραφία: nc) κυκλοφόρησε το 1996 από έναν ανώνυμο προγραμματιστή γνωστό ως «Hobbit». Αρχικά είχε γραφτεί για πλατφόρμες Unix, αλλά σήμερα υπάρχουν πολλές εκδόσεις για συστήματα όπως τα Windows, καθώς και άλλες παραλλαγές όπως το GNU Netcat, το OpenBSD Netcat, το Cryptcat και το Netcat6 (το οποίο υποστηρίζει και το IPv6), οι οποίες περιλαμβάνονται εξ ορισμού σε πολλές διανομές Linux. Η βασική έκδοση του εργαλείου γραμμής εντολών έχει σχεδιαστεί κυρίως για την αποστολή ή την ανάγνωση δεδομένων μέσω συνδέσεων δικτύου TCP και UDP. Μπορεί, ωστόσο, να χρησιμοποιηθεί και για απλές εργασίες σάρωσης θυρών. Αυτό επιτρέπει στους χρήστες να ελέγχουν την κατάσταση των θυρών 20 έως 30 σε ένα συγκεκριμένο σύστημα με απλές εντολές όπως:
nc -zv localhost 20-30bashΓια τον έλεγχο των θυρών UDP απαιτείται η πρόσθετη παράμετρος*-u*. Μπορείτε επίσης να χρησιμοποιήσετε το όνομα του κεντρικού υπολογιστή ή τη διεύθυνση IP ενός εξωτερικού συστήματος (εάν την γνωρίζετε) αντί για το localhost.
Nmap
Ένα σημαντικά πιο ισχυρό εργαλείο, το οποίο είναι ιδιαίτερα χρήσιμο για τη σάρωση θυρών, είναι το Network Mapper, το οποίο συχνά αποκαλείται Nmap. Σχεδιασμένο για συστήματα τύπου Unix, το Nmap διαθέτει άδεια GPL και είναι διαθέσιμο για συστήματα Windows από το 2000 (αν και με περιορισμούς). Αυτό σημαίνει ότι οι σαρώσεις TCP Connect απαιτούν δυσανάλογα μεγάλο χρόνο και ότι η σάρωση των θυρών του δικού σας συστήματος είναι δυνατή μόνο μέσω έμμεσων διαδρομών. Γενικά, το Nmap μπορεί να λειτουργήσει μέσω γραμμής εντολών. Το Zenmap, από την άλλη πλευρά, διαθέτει ένα γραφικό περιβάλλον εργασίας υψηλής απόδοσης που επιτρέπει στους χρήστες να χρησιμοποιούν εύκολα το εργαλείο δικτύου.
Ο δημιουργός του Nmap, Gordon Lyon, και η ομάδα προγραμματιστών του Nmap είναι υπεύθυνοι για την περαιτέρω ανάπτυξη του προγράμματος και των λειτουργιών σάρωσης θυρών του. Συγκεκριμένα, τεχνολογίες όπως η αναγνώριση του λειτουργικού συστήματος (δηλ. η αναγνώριση του λειτουργικού συστήματος ενός κεντρικού υπολογιστή-στόχου) και η ανίχνευση υπηρεσιών που κρύβονται πίσω από θύρες καθιστούν το Nmap μία από τις πιο δημοφιλείς λύσεις σάρωσης θυρών. Ο παρακάτω πίνακας παρουσιάζει το εύρος των μεθόδων που προσφέρει αυτό το πρόγραμμα:
| Μέθοδοι σάρωσης θυρών | Εντολή Nmap | Περιγραφή |
|---|---|---|
| Σάρωση σύνδεσης TCP | nmap -sT host | Κλασικός έλεγχος για μη διαχειριστές |
| Σάρωση TCP Syn | nmap -sS host | Γρήγορες, απαρατήρητες μέθοδοι ελέγχου για διαχειριστές. |
| Σάρωση TCP FIN-/XMAS-/Null | nmap -sF host nmap -sX host nmap -sN host | Μέθοδοι που μπορούν να παρακάμψουν τα τείχη προστασίας |
| Σάρωση TCP ping | nmap -sP host | Για παραδοσιακές σαρώσεις θυρών· βοηθά στον έλεγχο της διαθεσιμότητας ενός κεντρικού υπολογιστή. |
| Σάρωση TCP ACK | nmap -sA host | Προσδιορίζει τις θύρες που έχουν παραδοθεί, αλλά δεν προσφέρει καμία διάκριση μεταξύ ανοιχτών και κλειστών θυρών |
| Σάρωση παραθύρου TCP | nmap -sW host | Παρόμοια με τη σάρωση ACK· μπορεί να επαληθεύσει ορισμένες ανοιχτές και κλειστές θύρες. |
| Σάρωση TCP Maimon | nmap -sM host | Συνδυασμός σαρώσεων FIN και ACK. |
| Σάρωση TCP idle | nmap -sI zombie host host | Η λιγότερο εμφανής, πιο περίπλοκη και, ως εκ τούτου, πιο αργή μέθοδος σάρωσης. Εκτελείται μέσω ενός τρίτου υπολογιστή που ονομάζεται «ζόμπι» από το Nmap. |
| Σάρωση UDP | nmap -sU host | Μέθοδοι σάρωσης για θύρες UDP χωρίς σύνδεση |
| Σάρωση SCTP init | nmap -sY host | Σάρωση θυρών με SCTP, μια εναλλακτική λύση για τα πρωτόκολλα TCP και UDP |
| Σάρωση πρωτοκόλλου IP | nmap -sO host | Χωρίς σάρωση θυρών; ελέγχει ποιο πρωτόκολλο βασισμένο σε IP υποστηρίζεται στο σύστημα-στόχο |
Μπορείτε να κατεβάσετε τόσο το Nmap όσο και τη διεπαφή Zenmap για το λειτουργικό σας σύστημα από την επίσημη ιστοσελίδα του Nmap. Διατίθενται τόσο η τρέχουσα (σταθερή) έκδοση όσο και μια έκδοση beta (υπό ανάπτυξη).
Γιατί η σάρωση θυρών δεν είναι πάντα νόμιμη
Ο έλεγχος των θυρών δεν είναι πάντα νόμιμος. Μόλις γίνει μια απόπειραεκμετάλλευσης (όρος που χρησιμοποιούν οι ειδικοί στον τομέα της κυβερνοασφάλειας για να περιγράψουν την πράξη της εκμετάλλευσης ενός ελαττώματος ή κενού ασφαλείας), το άτομο ή η ομάδα που ευθύνεται για αυτό ενδέχεται να αντιμετωπίσει πιθανές νομικές συνέπειες.
Δεν είναι, ωστόσο, τόσο σαφές ποια είναι η νομική κατάσταση όταν ένα σύστημα υπολογιστή τεθεί εκτός λειτουργίας λόγω εντατικής σάρωσης θυρών. Λόγω της υψηλής συχνότητας των αιτημάτων σύνδεσης, τέτοιες μέθοδοι παρακολούθησης μπορούν να δημιουργήσουν προβλήματα στο σύστημα-στόχο, με αποτέλεσμα μερικές φορές να προκληθεί σφάλμα στο σύστημα. Επιπλέον, οι διαχειριστές του συστήματος που αποτελεί στόχο ενδέχεται να αντιληφθούν τις δραστηριότητες των εισβολέων πριν από το σφάλμα και να ερμηνεύσουν τις ενέργειες αυτές ως τα πρώτα βήματα μιας επίθεσης.
Σε τέτοιες περιπτώσεις, είναι σημαντικό να μην αποκλείεται το ενδεχόμε νο νομικών συνεπειών. Εάν το σύστημα που αποτελεί στόχο υπερφορτωθεί σκόπιμα, αυτό θα μπορούσε να θεωρηθεί επίθεση DDoS, με αποτέλεσμα το θύμα της επίθεσης να προσφύγει στη δικαιοσύνη.
Πρέπει πάντα να βεβαιώνεστε ότι έχετε την εξουσιοδότηση να πραγματοποιήσετε σάρωση θυρών σε ένα σύστημα και να χρησιμοποιείτε την τεχνική αυτή μόνο για λόγους ασφαλείας και όχι απλώς για να ικανοποιήσετε την περιέργειά σας. Οι μέθοδοι σάρωσης θυρών που αναφέρονται εδώ υπογραμμίζουν πόσο σημαντικό είναι να παρακολουθείτε τις θύρες του δικού σας συστήματος και τους υπολογιστές του δικτύου, καθώς και τις υπηρεσίες που έχουν πρόσβαση σε αυτές.