
Αν και μπορεί να θεωρήσετε τα Rainbow Tables ως εκλεκτικά πολύχρωμα έπιπλα, αυτά δεν πρόκειται να συζητήσουμε. Τα Rainbow Tables για τα οποία μιλάμε χρησιμοποιούνται για τη διάσπαση κωδικών πρόσβασης και αποτελούν ένα ακόμη εργαλείο στο ολοένα αυξανόμενο οπλοστάσιο του χάκερ. Τι είναι τα «Rainbow Tables»; Πώς θα μπορούσε να είναι τόσο επιβλαβές κάτι με ένα τόσο χαριτωμένο και αγκαλιά όνομα;
Το δίλημμα του χάκερ που σπάει
Είμαστε κακοί που μόλις έβαλαν μια μονάδα αντίχειρα σε έναν διακομιστή ή έναν σταθμό εργασίας, την επανεκκινήσαμε και εκτελέσαμε ένα πρόγραμμα που αντιγράφει το αρχείο βάσης δεδομένων ασφαλείας που περιέχει ονόματα χρηστών και κωδικούς πρόσβασης στη μονάδα αντίχειρα. Οι κωδικοί πρόσβασης στο αρχείο είναι κρυπτογραφημένοι, έτσι δεν μπορούμε να τους διαβάσουμε. Θα πρέπει να σπάσουμε τους κωδικούς πρόσβασης στο αρχείο (ή τουλάχιστον τον κωδικό πρόσβασης διαχειριστή), ώστε να μπορούμε να τους χρησιμοποιήσουμε για πρόσβαση στο σύστημα. Ποιες είναι οι επιλογές για τη διάσπαση κωδικών πρόσβασης; Μπορούμε να δοκιμάσουμε και να χρησιμοποιήσουμε ένα πρόγραμμα σπασίματος κωδικού πρόσφυσης όπως το John the Ripper, το οποίο βρίσκεται στο αρχείο κωδικού πρόσβασης, προσπαθώντας να μαντέψει επαναληπτικά κάθε πιθανό συνδυασμό ενός κωδικού πρόσβασης. Η δεύτερη επιλογή είναι να φορτώσετε ένα λεξικό διάσπασης κωδικού πρόσβασης που περιέχει εκατοντάδες χιλιάδες κωδικούς πρόσβασης που χρησιμοποιούνται συνήθως και να δείτε εάν λαμβάνει επιτυχίες. Αυτές οι μέθοδοι μπορεί να διαρκέσουν εβδομάδες, μήνες ή ακόμα και χρόνια εάν οι κωδικοί πρόσβασης είναι αρκετά ισχυροί.
Τι είναι το Hashing;
Όταν ένας κωδικός πρόσβασης «δοκιμάζεται» σε ένα σύστημα, «κατακερματίζεται» χρησιμοποιώντας κρυπτογράφηση, έτσι ώστε ο πραγματικός κωδικός πρόσβασης να μην αποστέλλεται ποτέ σε καθαρό κείμενο σε όλη τη γραμμή επικοινωνίας. Αυτό αποτρέπει τους υποκλοπείς να παρεμποδίζουν τον κωδικό πρόσβασης. Ο κατακερματισμός ενός κωδικού πρόσβασης μοιάζει συνήθως με ένα σωρό σκουπίδια και έχει συνήθως διαφορετικό μήκος από τον αρχικό κωδικό πρόσβασης. Ο κωδικός σας μπορεί να είναι σίτζου, αλλά το hash του κωδικού πρόσβασής σας θα μοιάζει με 7378347eedbfdd761619451949225ec1. Για την επαλήθευση ενός χρήστη, ένα σύστημα λαμβάνει την τιμή κατακερματισμού που δημιουργήθηκε από τη συνάρτηση κατακερματισμού κωδικού πρόσβασης στον υπολογιστή-πελάτη και τη συγκρίνει με την τιμή κατακερματισμού που είναι αποθηκευμένη σε έναν πίνακα στο διακομιστή. Εάν ο κατακερματισμός ταιριάζει, τότε ο χρήστης έχει πιστοποιηθεί και έχει πρόσβαση. Τα προγράμματα cracking-password λειτουργούν με παρόμοιο τρόπο με τη διαδικασία σύνδεσης. Το πρόγραμμα ρωγμών ξεκινά παίρνοντας κωδικούς πρόσβασης απλού κειμένου, τρέχοντας τους μέσω αλγορίθμου κατακερματισμού, όπως το MD5 και, στη συνέχεια, συγκρίνει την έξοδο κατακερματισμού με τους κατακερματισμούς στο κλεμμένο αρχείο κωδικού πρόσβασης. Εάν εντοπίσει αντιστοιχία, τότε το πρόγραμμα έχει σπάσει τον κωδικό πρόσβασης. Όπως είπαμε προηγουμένως, αυτή η διαδικασία μπορεί να διαρκέσει πολύ χρόνο. Το κατακερματισμό ενός κωδικού πρόσβασης είναι μια μονόδρομη λειτουργία, που σημαίνει ότι δεν μπορείτε να αποκρυπτογραφήσετε το κατακερματισμό για να δείτε ποιο είναι το σαφές κείμενο του κωδικού πρόσβασης. Δεν υπάρχει κανένα κλειδί για την αποκρυπτογράφηση του κατακερματισμού μόλις δημιουργηθεί. Δεν υπάρχει «δακτύλιος αποκωδικοποιητή», αν θέλετε.
Εισαγάγετε τους πίνακες ουράνιων τόξων
Τα Rainbow Tables είναι βασικά τεράστια σύνολα προκατασκευασμένων πινάκων γεμάτα με τιμές κατακερματισμού που αντιστοιχίζονται με τους πιθανούς κωδικούς πρόσβασης με απλό κείμενο Τα Rainbow Tables ουσιαστικά επιτρέπουν στους χάκερ να αντιστρέψουν τη λειτουργία κατακερματισμού για να καθορίσουν ποιος μπορεί να είναι ο κωδικός πρόσβασης απλού κειμένου. Είναι πιθανό δύο διαφορετικοί κωδικοί πρόσβασης να έχουν τον ίδιο κατακερματισμό, οπότε δεν είναι σημαντικό να μάθετε ποιος ήταν ο αρχικός κωδικός πρόσβασης, αρκεί να έχει τον ίδιο κατακερματισμό. Ο κωδικός πρόσβασης απλού κειμένου μπορεί να μην είναι ο ίδιος κωδικός πρόσβασης που δημιουργήθηκε από τον χρήστη, αλλά όσο αντιστοιχεί ο κατακερματισμός, τότε δεν έχει σημασία ποιος ήταν ο αρχικός κωδικός πρόσβασης. Η χρήση των Rainbow Tables επιτρέπει την κατάρρευση των κωδικών πρόσβασης σε πολύ μικρό χρονικό διάστημα σε σύγκριση με τις μεθόδους brute-force. Ωστόσο, η αντιστάθμιση είναι ότι χρειάζεται πολύς χώρος αποθήκευσης (μερικές φορές terabyte σε μέγεθος) για να κρατήσουν οι ίδιοι τα Rainbow Tables. Η αποθήκευση αυτές τις μέρες είναι άφθονη και φθηνή, οπότε αυτή η ανταλλαγή δεν είναι τόσο μεγάλη υπόθεση όσο πριν από μια δεκαετία, όταν οι δίσκοι terabyte δεν ήταν κάτι που θα μπορούσατε να πάρετε στην τοπική Best Buy. Οι χάκερ μπορούν να αγοράσουν προ-υπολογισμένους πίνακες Rainbow για τη διάσπαση κωδικών πρόσβασης ευάλωτων λειτουργικών συστημάτων όπως τα Windows XP, Vista, Windows 7 και εφαρμογές που χρησιμοποιούν MD5 και SHA1 ως μηχανισμό κατακερματισμού κωδικού πρόσβασης (πολλοί προγραμματιστές εφαρμογών ιστού εξακολουθούν να χρησιμοποιούν αυτούς τους αλγόριθμους κατακερματισμού).
Πώς να προστατευτείτε από αυτές τις επιθέσεις
Ευχόμαστε να υπήρχαν καλύτερες συμβουλές για αυτό σε όλους. Θα θέλαμε να πούμε ότι ένας ισχυρότερος κωδικός πρόσβασης θα βοηθούσε, αλλά αυτό δεν είναι αλήθεια επειδή δεν είναι το πρόβλημα της αδυναμίας του κωδικού πρόσβασης, αλλά η αδυναμία που σχετίζεται με τη λειτουργία κατακερματισμού χρησιμοποιείται για την κρυπτογράφηση ενός κωδικού πρόσβασης. Η καλύτερη συμβουλή που μπορούμε να δώσουμε στους χρήστες είναι να μείνετε μακριά από εφαρμογές ιστού που περιορίζουν το μήκος του κωδικού πρόσβασης σε έναν μικρό αριθμό χαρακτήρων. Αυτό είναι ένα σαφές σημάδι των τρωτών ρουτίνων ελέγχου ταυτότητας παλιού σχολείου. Το εκτεταμένο μήκος και η πολυπλοκότητα του κωδικού πρόσβασης μπορεί να βοηθήσει λίγο, αλλά δεν αποτελεί εγγυημένη μορφή προστασίας. Όσο μακρύτερος είναι ο κωδικός πρόσβασής σας, τόσο μεγαλύτερος θα έπρεπε να είναι το Crack Tables, αλλά ένας χάκερ με πολλούς πόρους μπορεί ακόμα να το επιτύχει.
Συμβουλές για προγραμματιστές και διαχειριστές
Οι συμβουλές μας για το πώς να υπερασπιστούμε ενάντια στο Rainbow Tables προορίζονται πραγματικά για προγραμματιστές εφαρμογών και διαχειριστές συστήματος. Βρίσκονται στις πρώτες γραμμές όσον αφορά την προστασία των χρηστών από αυτόν τον τύπο επίθεσης.
Μην χρησιμοποιείτε MD5 ή SHA1 στη λειτουργία κατακερματισμού κωδικού πρόσβασης
Τα MD5 και SHA1 είναι ξεπερασμένοι αλγόριθμοι κατακερματισμού κωδικών πρόσβασης και οι περισσότεροι πίνακες ουράνιων τόξων που χρησιμοποιούνται για τη διάσπαση κωδικών πρόσβασης είναι κατασκευασμένοι για στόχευση εφαρμογών και συστημάτων που χρησιμοποιούν αυτές τις μεθόδους κατακερματισμού. Σκεφτείτε να χρησιμοποιήσετε πιο σύγχρονες μεθόδους κατακερματισμού όπως το SHA2.
Χρησιμοποιήστε ένα κρυπτογραφικό «Αλάτι» στη ρουτίνα κατακερματισμού του κωδικού πρόσβασης
Η προσθήκη ενός κρυπτογραφικού αλατιού στη λειτουργία κατακερματισμού του κωδικού πρόσβασής σας θα βοηθήσει στην άμυνα ενάντια στη χρήση των Πίνακες Ουράνιου Τόξου που χρησιμοποιούνται για τη διάσπαση κωδικών πρόσβασης στην εφαρμογή σας. Για να δείτε μερικά παραδείγματα κωδικοποίησης του τρόπου χρήσης ενός κρυπτογραφικού αλατιού για να βοηθήσετε το «Rainbow-Proof» στην εφαρμογή σας, ανατρέξτε στον ιστότοπο WebMasters By Design που έχει ένα υπέροχο άρθρο σχετικά με το θέμα.