Εμφάνιση αναρτήσεων με ετικέτα port. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα port. Εμφάνιση όλων των αναρτήσεων

Κυριακή 13 Σεπτεμβρίου 2009

Πώς βρίσκουμε το λειτουργικό σύστημα ενός υπολογιστή

Το να γνωρίζουμε το λειτουργικό σύστημα από κάποιο απομακρυσμένο μηχάνημα που θέλουμε να επιτεθούμε είναι ένα από τα βασικά στοιχεία και αυτό γιατί γνωρίζοντας το λειτουργικό που τρέχει μπορούμε να βρούμε πιο εύκολα και τις αδυναμίες του.

Ποιοί τρόποι υπάρχουν?

Υπάρχουνε αρκετοί τρόποι για να βρούμε το λειτουργικό σύστημα ενός μηχανήματος.Ο πιο απλός είναι μέσω banner-grabbing στον οποίο ουσιαστικά προσπαθούμε να συνδεθούμε σε κάποιες υπηρεσίες που τρέχει το μηχάνημα όπως FTP,Telnet,HTTP,SMTP κτλ. και από τις πληροφορίες που θα μας εμφανιστούν στην οθόνη μας ακόμα και αν δεν συνδεθούμε θα μπορέσουμε να καταλάβουμε αν τρέχει Windows,Linux κτλ.

Υπάρχει όμως και μία άλλη τεχνική για ανίχνευση του λειτουργικού συστήματος η οποία λέγεται Active Stack Fingerprinting.Η τεχνική αυτήν εστιάζει στο TCP/IP stack του κάθε λειτουργικού συστήματος το οποίο και διαφέρει από λειτουργικό σε λειτουργικό.Αλλιώς δηλαδή είναι το TCP/IP stack της Microsoft αλλιώς των MacOS και αλλιώς των Linux.

Για να έχει αξιοπιστία η τεχνική αυτήν χρειάζεται να υπάρχει τουλάχιστον ένα ανοιχτό port στο απομακρυσμένο μηχάνημα.Διότι από τα services που τρέχουν και από τα ports που είναι ανοιχτά θα γίνει και ο εντοπισμός του λειτουργικού.

Από ποιά στοιχεία γίνεται η αναγνώριση του λειτουργικού?

Ουσιαστικά τα προγράμματα που είναι για ανίχνευση ενός λειτουργικού συστήματος καταλαβαίνουν το αν είναι Windows ή Linux ή MacOS από τις αποκρίσεις που πέρνουν όταν στέλουν διάφορα πακέτα.Πιο συγκεκριμένα εάν σταλεί ένα FIN πακέτο σε ένα ανοιχτό port και το λειτουργικό σύστημα αποκριθεί με ένα FIN/ACK τότε το πρόγραμμα που τρέχουμε για ανίχνευση καταλαβαίνει ότι πρόκειται για Windows λειτουργικό.Αναλύτικα η αναγνώριση ενός λειτουργικού γίνεται από τα εξής:

FIN

Bonus Flag

Initial Sequence Number (ISN)

Fragment bit

TCP Initial Window Size

ACK value

ICMP message quoting

ICMP error message quenching

ICMP error message – echoing integrity

TOS (Type of Service)

Fragmentation Handling

TCP Options

Ποιά εργαλεία θα χρειαστούμε?

Δύο είναι τα πιο ακριβή εργαλεία που μπορούν να εντοπίσουν το λειτουργικό σύστημα από ένα απομακρυσμένο host.Το ένα είναι το nmap και το άλλο είναι το queso.Το καλό με το nmap είναι ότι υποστηρίζεται από αρκετές πλατφόρμες (Windows,Linux,MacOS) σε αντίθεση με το queso που είναι μόνο για linux.Επίσης για όσους δεν γνωρίζουν τo nmap είναι ένα port scanner αλλά με δυνατότητα ανίχνευσης λειτουργικού συστήματος ενώ το queso είναι μόνο ένα εργαλείο για να εντοπίζει λειτουργικά συστήματα απομακρυσμένων host.

Που θα τα βρούμε?

Και τα δύο αυτά τα προγράμματα διατίθενται δωρεάν από τις ακόλουθες ιστοσελίδες.

Nmap:

http://nmap.org/download.html

Queso:

http://dir.filewatcher.com/d/OpenBSD/3.3/i386/queso-980922.tgz.15765.html

Πώς τα δουλεύουμε?

Η λειτουργία τους είναι αρκετά απλή.Το nmap στην τελευταία του έκδοση και για τους χρήστες Windows υποστηρίζει πλέον και GUI interface ενώ έχει και αρκετά καλό help file.Ωστόσο η εντολή σε περίπτωση που το τρέξουμε είτε από γραμμή εντολών είτε από Linux είναι η εξής:

nmap -O IP

ενώ για το queso πληκτρολογούμε το εξής:

[root] queso IP

Παράδειγμα:

Ανίχνευση του λειτουργικού από το nmap

Ανίχνευση του λειτουργικού από το nmap

Πώς κλείνουμε τα ανοιχτά ports

Πλέον είμαστε σε μία εποχή που η λέξη ασφάλεια πρέπει να ανησυχεί όχι μόνο τους διαχειριστές δικτύων εταιρειών αλλά και τον κάθε μέσο χρήστη που συνδέεται στο Internet.Οι απειλές που μπορεί να δεχτεί κάποιος είναι αρκετές από virus,trojans,worms μέχρι και επιθέσεις από κακόβουλους χάκερς.Είναι σημαντικό λοιπόν να ξέρει ο κάθε χρήστης κάποια πράγματα που μπορούν να τον βοηθήσουν να ασφαλίσει το σύστημα του.

Πώς ανοίγει ένα port?

Όταν χρησιμοποιούμε κάποιο πρόγραμμα αυτό μας ανοίγει και κάποιο port στον υπολογιστή μας.Για παράδειγμα αν χρησιμοποιούμε τον Internet Explorer τότε η 80 θύρα θα ανοίξει στο σύστημα μας.Ακολούθως αν χρησιμοποιήσουμε κάποιο FTP (File Transfer Protocol) πρόγραμμα θα ανοίξει η θύρα 21.Τα ανοικτά ports λοιπόν που έχουμε στο σύστημα μας είναι σίγουρα μία απειλή ακόμα.Όσα περισσότερα ανοιχτά ports έχουμε τόσο περισσότερο εκτεθημένο είναι το σύστημα μας.Οπότε θα πρέπει να κάνουμε χρήση μόνο προγράμματα που τα θεωρούμε απαραίτητα να τρέχουν για να μειώσουμε τον κίνδυνο.

Πώς βλέπουμε τα ανοικτά ports που έχουμε?

Η απάντηση είναι απλή.Μπαίνουμε στην διαχείριση εντολών και απλά πληκτρολογούμε netstat -a και θα μας δώσει όλες τις ενεργές συνδέσεις καθώς και την κατάσταση τους.Επίσης θα μπορέσουμε να δούμε και αν είμαστε συνδεδεμένοι σε κάποιο απομακρυσμένο host και έτσι θα μπορέσουμε να καταλάβουμε αν έχουμε κάποιο πιθανό backdoor σε περίπτωση που δεν τρέχουμε κάποιο πρόγραμμα που να το γνωρίζουμε και να έχει συνδεθεί εκεί.

Παράδειγμα 1:

Ενεργές συνδέσεις

Ενεργές συνδέσεις

Για να αναλύσουμε λίγο και τι βλέπουμε παίρνουμε ως παράδειγμα την τελευταία σειρά.Βλέπουμε καταρχάς την εσωτερική IP του δικτύου μας που είναι η 192.168.1.3 ότι χρησιμοποιεί το port 20313 για να συνδεθεί σε μία απομακρυσμένη διεύθυνση και στο port 49387.Η κατάσταση αν είναι established σηματοδοτεί ότι υπάρχει σύνδεση μεταξύ των δύο host.

Πώς κλείνουμε ένα port που είναι ανοικτό?

Όπως αναφέραμε και παραπάνω αν χρησιμοποιούμε κάποιο πρόγραμμα αυτό το πρόγραμμα ανοίγει και κάποιο port προσωρινά στον υπολογιστή μας για να εκτελέσει κάποιες διεργασίες.Όταν κλείσουμε την εφαρμογή θα κλείσει και το port που χρησιμοποιεί αυτόματα.Στην προκειμένη περίπτωση έχουμε το port 20313 που είναι ανοιχτό στο σύστημα μας.

Για να το κλείσουμε θα πρέπει να βρούμε την εφαρμογή που το χρησιμοποιεί.Για να το βρούμε αυτό αρκεί να δώσουμε στην διαχείριση εντολών την εντολή netstat -o η οποία και θα μας δώσει επίσης τα ανοιχτά ports αλλά και το PID (Process Identifier) της εφαρμογής.Το PID δεν είναι τίποτα άλλο από έναν αριθμό που δίνει το λειτουργικό μας σύστημα σε μία διεργασία για να την αναγνωρίσει μοναδικά.

Παράδειγμα 2:

Εύρεση του PID

Εύρεση του PID

Έχοντας λοιπόν το PID το επόμενο μας βήμα είναι να ανοίξουμε την διαχείριση εργασιών των Windows (Ctrl+Alt+Del),να πάμε στις διεργασίες και εκεί από το μενού να πάμε Προβολή—>Επιλογή Στηλών και στο νέο παράθυρο που θα μας εμφανίσει να τσεκάρουμε το κουτάκι με την ονομασία PID και κάνουμε κλικ στην επιλογή OK.

Παράδειγμα 3:

PID

Πλέον θα δούμε ότι στις διεργασίες της διαχείρισης εργασιών θα εμφανίζεται και το PID της διεργασίας.Βρίσκουμε λοιπόν στις διεργασίες το PID που αντιστοιχεί σε αυτό που είχαμε βρει όταν ψάχναμε το PID της εφαρμογής που είχε ανοιχτό το port που θέλαμε να κλείσουμε (εικόνα παραδείγματος 2).Τερματίζουμε την διεργασία και έτσι θα κλείσουμε και το port που χρησιμοποιεί.

Άλλοι τρόποι για κλείσιμο ports

Εκτός βέβαια από αυτόν τον τρόπο υπάρχει και η λύση των Firewall για να χρησιμοποιήσουμε ένα port.Πλέον τα περισσότερα router υποστηρίζουν και hardware firewall κάτι που σημαίνει ότι όλες οι θύρες (ports) είναι φιλτραρισμένες.Αυτός είναι και ο λόγος που κάνουμε port forward στο router μας όταν θέλουμε να χρησιμοποιήσουμε κάποια εφαρμογή όπως μtorrent για παράδειγμα.Δηλαδή να ανοίξουμε κάποιο port που θέλουμε ή χρειαζόμαστε.

Επιπρόσθετα μπορούμε να χρησιμοποιήσουμε και κάποιο software firewall (Zone Alarm, Outpost κτλ) για να κλείσουμε τα ανοικτά ports και να έχουμε κάποια προστασία και κάποιο έλεγχο σε περίπτωση που βρεθούμε κάτω από κάποια επίθεση.