Τι είναι τα πλαστά URLs και πώς δημιουργούνται
5/1/2001 (Ένα ελάχιστα γνωστό, αλλά επικίνδυνο, χαρακτηριστικό του τρόπου διευθυνσιοδότησης στο Internet)
Γιώργος Επιτήδειος,
gepiti@gepiti.com
Μια πρώτη ματιά στις διευθύνσεις:
http://www.gepiti.com/gepiti/index.htm
και
http://www.in.gr%403478939205/%67%65%70%69%74%69/%69%6e%64%65%78%2e%68%74%6d
μας δίνει την εντύπωση ότι αναφέρονται σε διαφορετικές σελίδες οι οποίες βρίσκονται σε ξεχωριστά sites. Η πρώτη δείχνει να βρίσκεται στο www.gepiti.com, ενώ η δεύτερη κάπου στο www.in.gr
Αν όμως έχετε απευθείας σύνδεση στο Internet (χωρίς proxy) και τις δοκιμάστε, θα παρατηρήσετε ότι και οι δύο οδηγούν σε πανομοιότυπες σελίδες (στο βιογραφικό μου) ένα αντίγραφο του οποίου έχω τοποθετήσει στο δικό μου site (www.gepiti.com), ενώ ένα άλλο φαίνεται πως υπάρχει στο www.in.gr (αυτό τουλάχιστον υποστηρίζει η address bar του browser). Για να επιτύχω αυτό το αποτέλεσμα δεν χρειάστηκε ούτε να "χακέψω" το in.gr, αλλά ούτε και να παρακαλέσω κάποιον γνωστό μου εκεί να τοποθετήσει κάπου μέσα στο site τις σελίδες μου.
Στην πραγματικότητα και τα δύο URL (Uniform Resource Locator) που αναφέρθηκαν παραπάνω αναφέρονται στην ίδια σελίδα, την http://www.gepiti.com/gepiti/index.htm Στη συνέχεια του άρθρου θα δούμε λοιπόν πώς κατάφερα να ξεγελάσω εσάς (ώστε να νομίζετε ότι η σελίδα αυτή βρίσκεται στο in.gr), αλλά όχι και τον browser (ο οποίος κάλεσε τη σελίδα από τη σωστή της διεύθυνση). Αν πάλι ο τρόπος με τον οποίο επέτυχα αυτή την πλαστογραφία δεν σας ενδιαφέρει, σας προτείνω να διαβάσετε μόνο τα συμπεράσματα αυτού του άρθρου, για να γνωρίζεται πώς θα προστατευτείτε από παρόμοιες τεχνικές.
Βήμα 1ο (Η χρήση του συμβόλου @)
Όπως μας εξηγεί το RFC 1738 η πραγματική διατύπωση ενός URL (της διεύθυνσης κάποιου site) είναι:
http (ή ftp κ.λπ.)://[<user>[:<password>]@]<host>[:<port>]/<url-path>
Με άλλα λόγια, μεταξύ του http:// και του συμβόλου @ (παπάκι) μπορούμε να παρεμβάλουμε το username και το password του χρήστη. Αν όμως η σελίδα είναι ελεύθερη (δεν χρειάζεται username και password για να δούμε το περιεχόμενό της), τότε μπορούμε να γράψουμε εκεί ό,τι θέλουμε. Έτσι, το URL http://www.gepiti.com/gepiti/index.htm μπορεί να διατυπωθεί και ως:
http://www.in.gr@www.gepiti.com/gepiti/index.htm
ή
http://o_giorgos_einai_poniros@www.gepiti.com/gepiti/index.htm
Βήμα 2ο (Κρύβοντας τη διεύθυνση)
Ο προσεκτικός χρήστης θα δει το www.gepiti.com και θα καταλάβει (ή τουλάχιστον θα υποπτευθεί) ότι αυτή η σελίδα δεν βρίσκεται στο www.in.gr, αλλά στο www.gepiti.com έστω και αν το δεύτερο είναι τοποθετημένο δεξιότερα απ' ό,τι συνηθίζεται.
Αυτό μπορούμε να το κρύψουμε, δηλώνοντας το www.gepiti.com με την αριθμητική του μορφή (207.92.102.69) οπότε η διεύθυνση θα γραφόταν ως:
http://207.92.102.69/gepiti/index.htm
στην κανονική της μορφή και
http://www.in.gr@207.92.102.69/gepiti/index.htm
στην πλαστή της μορφή.
Ούτε αυτό όμως θα παραπλανούσε έναν πεπειραμένο χρήστη. Για να κρύψουμε λοιπόν ακόμη περισσότερο την πραγματική διεύθυνση, μπορούμε να γράψουμε το 207.92.102.69 σε δεκαεξαδική μορφή (CF.5C.66.45). Αν μάλιστα δεν θέλουμε να φαίνονται οι τελείες μεταξύ των αριθμών μετατρέπουμε το CF5C6645 (με τους δεκαεξαδικούς αριθμούς κολλητά χωρίς τις τελείες) στη δεκαδική του μορφή, η οποία είναι 3478939205 και το
http://www.gepiti.com/gepiti/index.htm
ή
http://207.92.102.69/gepiti/index.htm
γίνεται πλέον:
http://3478939205/gepiti/index.htm
πράγμα που σημαίνει ότι η πλαστή έκδοση της ίδιας διεύθυνσης μπορεί να γίνει:
http://www.in.gr@3478939205/gepiti/index.htm
Βήμα 3ο (Κρύβοντας τo path)
Σε πολλές περιπτώσεις είναι επιθυμητό να κρυφτεί ακόμη και το path της διεύθυνσης (εδώ το gepiti/index.htm) έτσι ώστε ο χρήστης να βλέπει μόνο ασυνάρτητα πράγματα τα οποία θα θεωρήσει ως ειδική απεικόνιση για τις ανάγκες κάποιου προγράμματος το οποίο τρέχει στον server του in.gr (ή στον server όποιου άλλου site θέλουμε να πλαστογραφήσουμε). Για να το επιτύχουμε αυτό, χρειάζεται απλώς να αντικαταστήσουμε τους χαρακτήρες του path με τα ASCII ισοδύναμά τους. Έτσι το
gepiti/index.htm
γίνεται
%67%65%70%69%74%69/%69%6e%64%65%78%2e%68%74%6d
και η διεύθυνση αποκτά τη μορφή
http://www.in.gr@3478939205/%67%65%70%69%74%69/%69%6e%64%65%78%2e%68%74%6d
Προσέξτε πάντως ότι, αν και αλλάξαμε τα γράμματα (και την τελεία) με τους αντίστοιχους κωδικούς ASCII (π.χ. το g έγινε %67, το p %70 και η τελεία %2e), οι κάθετοι (/) παρέμειναν ως είχαν.
Βήμα 4ο (Αντικαθιστώντας το @)
Αν και ένας αρχάριος ή βιαστικός χρήστης θα νομίσει ότι η πλαστή διεύθυνση βρίσκεται πράγματι στο in.gr ένας πιο προσεκτικός μπορεί παρατηρήσει το σύμβολο @ και θα καταλάβει την αλήθεια. Για να εξαπατήσουμε και αυτόν, μπορούμε απλώς να αντικαταστήσουμε το @ με το δεκαεξαδικό (hex) ισοδύναμό του που είναι το %40. Έτσι όταν ο browser διαβάζει %40 θα καταλαβαίνει @, οπότε το URL θα γίνει:
http://www.in.gr%403478939205/%67%65%70%69%74%69/%69%6e%64%65%78%2e%68%74%6d
Δημιουργήσαμε λοιπόν μια διεύθυνση τελείως διαφορετική από το πρωτότυπο (δηλαδή από το http://www.gepiti.com/gepiti/index.htm) η οποία φαίνεται ότι αποτελεί τμήμα του www.in.gr, ενώ στην πραγματικότητα εξακολουθεί να μας παραπέμπει στο ίδιο σημείο.
Περιορισμοί στη χρήση αυτής της μεθόδου:
Οι παραπάνω τεχνικές (και διάφορες άλλες που δεν αναφέρουμε εδώ για λόγους συντομίας) δεν λειτουργούν σε όλες τις περιπτώσεις. Για παράδειγμα πολλοί proxy servers δεν τις δέχονται, ενώ μόνο ο Internet Explorer αναγνωρίζει ότι οι χαρακτήρες %40 συμβολίζουν το @.
Δυστυχώς όμως, λειτουργούν χωρίς πρόβλημα στην πλειοψηφία των περιπτώσεων και γι' αυτό χρησιμοποιούνται καθημερινά από χιλιάδες spammers και άλλους απατεώνες μέσα στο δίκτυο.
Συμπεράσματα
Λόγω της συνεχώς αυξανόμενης χρήσης δυναμικών σελίδων (σελίδες που δημιουργούνται αυτόματα από ένα πρόγραμμα τη στιγμή που τις ζητάμε), οι χρήστες του web έχουν συνηθίσει να εμπιστεύονται διευθύνσεις ακόμη και αν δεν καταλαβαίνουν τι ακριβώς σημαίνουν αυτές (π.χ. http://www.in.gr/innews/ |