Όταν ένας χάκερ ή ένας δοκιμαστής διείσδυσης παραβιάζει ένα σύστημα και θέλει να αποκτήσει πρόσβαση σε έναν κωδικό πρόσβασης απλού κειμένου από μια χωματερή βάσης δεδομένων, πρέπει πρώτα να σπάσει τον αποθηκευμένο κατακερματισμό του κωδικού πρόσβασης. Πολλοί εισβολείς έχουν βυθιστεί στην ιδέα: δοκίμασαν οποιαδήποτε αυθαίρετη επίθεση κωδικού πρόσβασης που ήθελαν να δοκιμάσουν, σχεδόν χωρίς λόγο. Αυτή η συζήτηση θα δείξει μερικές αποτελεσματικές μεθόδους διάσπασης κωδικών πρόσβασης και πώς να χρησιμοποιήσετε στατιστική ανάλυση κωδικών πρόσβασης σε συνδυασμό με εργαλεία για τη δημιουργία μιας χρονικά περιορισμένης προσέγγισης για αποτελεσματική και επιτυχημένη διάσπαση.
Το σπάσιμο κωδικών πρόσβασης είναι μια ετοιμοθάνατη επιχείρηση. Οι χρήστες πρέπει να δημιουργήσουν πιο περίπλοκους κωδικούς πρόσβασης και ορισμένοι προγραμματιστές back-end έχουν αρχίσει να αντικαθιστούν τις τυπικές λειτουργίες κατακερματισμού χρησιμοποιώντας μηχανισμούς όπως Bcrypt . Οι κατακερματισμοί Bcrypt χρειάζονται περισσότερο χρόνο για να δημιουργηθούν, επομένως οι κωδικοί πρόσβασης γίνονται πιο δύσκολο να σπάσουν. Οι crackers πρέπει να δημιουργήσουν κατακερματισμούς πολύ γρήγορα για να σπάσουν αποτελεσματικά τους κωδικούς πρόσβασης, επομένως το Bcrypt είναι ένα πολύ ισχυρό εργαλείο για την καταπολέμηση τέτοιων επιθέσεων. Για να απεικονίσει αυτό το παράδειγμα, το πρόγραμμα σπασίματος κωδικού πρόσβασης που κυκλοφόρησε το 2012 από 25 συμπλέγματα GPU ήταν σε θέση να επιτύχει ταχύτητα παραγωγής κατακερματισμού NTLM 350 δισεκατομμυρίων κατακερματισμών ανά δευτερόλεπτο, ενώ η ταχύτητα παραγωγής κατακερματισμού Bcrypt είναι 71.000. Χρησιμοποιώντας αυτό ως μοντέλο σύγκρισης, μπορούν να δημιουργηθούν 5 εκατομμύρια κατακερματισμοί NTLM για κάθε κατακερματισμό Bcrypt που δημιουργείται. Όταν αντιμετωπίζουν τον αλγόριθμο Bcrpyted, οι χάκερ πρέπει να κάνουν περισσότερες υπολογιστικές εικασίες για τους κωδικούς πρόσβασης και δεν μπορούν να βασιστούν στη χρήση ωμής δύναμης για κάθε πιθανότητα.
Σημείωση: Εάν ο εισβολέας γνωρίζει ότι το μήκος του κωδικού πρόσβασης είναι τόσο μικρό που δεν θα χρειαστεί πολύς χρόνος για να σπάσει το χώρο κλειδιών με βίαιο τρόπο, δεν χρειάζεται να λάβει σταδιακά βήματα επίθεσης.
Η χρονική αποτελεσματικότητα έχει γίνει βασικός παράγοντας για την επιτυχή διάσπαση κωδικών πρόσβασης. Ενώ θα ήταν καλό να καλύψετε ολόκληρο τον κρίσιμο χώρο του κωδικού πρόσβασης του χρήστη, ο χρόνος που απαιτείται για να γίνει αυτό συνήθως δεν είναι εφικτός. Ως εκ τούτου, κατά τη διάρκεια του crack, είναι σημαντικό να δοκιμάσετε πρώτα την πιο εξοικονομητική επίθεση και, αν δεν επιτύχετε, να προχωρήσετε σε πιο αργές κρυπτογραφικές επιθέσεις που καλύπτουν περισσότερο χώρο κλειδιών. Ο ταχύτερος τρόπος είναι μια απλή επίθεση λεξικού που βασίζεται σε κοινούς κωδικούς πρόσβασης χρηστών και προηγούμενες απορρίψεις κωδικών πρόσβασης. Από εκεί και πέρα θα πρέπει να γίνει προσπάθεια χειραγώγησης του λεξικού ώστε να προστεθούν αριθμοί ή σύμβολα ή να αλλάξουν γράμματα στο τέλος. Αυτό ονομάζεται υβριδική επίθεση ή επίθεση βασισμένη σε κανόνες. Στη συνέχεια, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε τη δυνατότητα μηχανικής μάθησης για να δημιουργήσετε πιθανούς κωδικούς πρόσβασης. Η αλυσίδα Markov αποτελεί ένα καλό παράδειγμα. Συνδυάζοντας κοινά στοιχεία που υπάρχουν στην αγγλική γλώσσα για να σχηματίσουν λέξεις (π.χ. "ing", "er", "qu"), μπορεί να δημιουργηθεί μια καλή εικασία για τους κωδικούς πρόσβασης, όπως ο παρακάτω.Αν και ο συγκεκριμένος κωδικός είναι εύκολο να σπάσει με οποιαδήποτε μέθοδο, για να απλοποιήσουμε όλους τους φορείς επίθεσης, θα χρησιμοποιήσουμε αυτόν τον κωδικό πρόσβασης. Password1234Password1234
Τέλος, οι στοχευμένες βίαιες επιθέσεις (που ονομάζονται επιθέσεις μάσκας) καλύπτουν όλους τους χώρους κλειδιών ενός δεδομένου κωδικού πρόσβασης με βάση μια κρυπτογραφική δομή. Όταν εννοώ "δομή" ενός κωδικού πρόσβασης, αναφέρομαι στον τύπο και τη σειρά των χαρακτήρων που χρησιμοποιούνται για τη δημιουργία του κωδικού πρόσβασης. Για παράδειγμα, μια «δομή» με κεφαλαία γράμματα, ακολουθούμενη από 7 πεζά γράμματα, ακολουθούμενη από 4 ψηφία (που σημειώνονται ως ). Password1234ullllllldddd
πεζά γράμματα , κεφαλαία γράμματα , σύμβολα , αριθμοί(l)(u)(s)(d)
Έτσι, εάν ένας εισβολέας αποφασίσει να χρησιμοποιήσει τη δομή για να δημιουργήσει όλες τις δυνατότητες συνδυασμού χαρακτήρων, θα βρει τελικά τον κωδικό πρόσβασης. Τότε το ερώτημα για τον εισβολέα γίνεται: Ποια δομή πρέπει να στοχεύσει πρώτα όταν επιτίθεται σε ένα σύνολο κατακερματισμών; Password1234
Για να βοηθήσω στην απάντηση αυτής της ερώτησης, πραγματοποίησα κάποια στατιστική ανάλυση των δημοφιλών κωδικών πρόσβασης για να δω εάν υπάρχουν κρυπτογραφικές δομές που είναι πιο κοινές από άλλες κρυπτογραφικές δομές και σε ποιο βαθμό αυτή η δομή είναι σωστή. Το μέγεθος δείγματος των περισσότερων από 34 εκατομμυρίων δημοσίως εκτεθειμένων κωδικών πρόσβασης περιλαμβάνει γνωστές χωματερές κωδικών πρόσβασης όπως RockYou, LinkedIn, phpBB και άλλα.
Το παρακάτω σχήμα δείχνει τη συχνότητα της δομής μάσκας για κάθε μοναδική μάσκα. Η κόκκινη γραμμή υποδεικνύει τη γραμμή 50%, η οποία εμφανίζεται μετά τη 13η πιο συχνά εμφανιζόμενη μάσκα.
Αυτό σημαίνει ότι οι πρώτες 13 μοναδικές δομές μάσκας αντιπροσωπεύουν το 50% του δείγματος κωδικού πρόσβασης. Η δομή των περισσότερων από 20 εκατομμυρίων κωδικών πρόσβασης του δείγματος βρίσκεται στις πρώτες 13 μάσκες. Αυτά τα αποτελέσματα είναι αρκετά συγκλονιστικά όσον αφορά τη διάδοση των δομημένων κωδικών πρόσβασης. Το υπόλοιπο 50% βρίσκεται μέσα στη μακρά δεξιά ουρά, η οποία έχει συρρικνωθεί σε αυτό το σχήμα. Στην πραγματικότητα, από τις 260.500 μοναδικές μάσκες, μόνο 400 εμφανίζονται σε αυτό το σχήμα. Αυτή η ιδέα του καθολικού δομικού κωδικού πρόσβασης είναι απίστευτη. Ωστόσο, αυτό δεν προκαλεί έκπληξη όταν σκέφτεστε πώς οι χρήστες δημιουργούν και θυμούνται τους κωδικούς πρόσβασής τους. Με βάση τα αναλυτικά δεδομένα, υπάρχουν ορισμένοι λογικοί παράγοντες που βοηθούν στην εξήγηση του τρόπου με τον οποίο αυτό είναι δυνατό. Όταν ο χρήστης ζητείται να δώσει έναν κωδικό πρόσβασης που περιέχει κεφαλαία γράμματα, χρησιμοποιείται ως ο πρώτος χαρακτήρας πάνω από το 90% των περιπτώσεων. Όταν ζητούνται αριθμοί, οι περισσότεροι χρήστες προσθέτουν δύο ψηφία στο τέλος του κωδικού πρόσβασης (πιθανώς το έτος αποφοίτησης). Η επόμενη πιο δημοφιλής επιλογή είναι να τερματίσετε τον κωδικό πρόσβασης με τέσσερα ψηφία (πιθανώς το προηγούμενο έτος ή φέτος).Σε αυτή την περίπτωση, ο επόμενος πιο δημοφιλής αριθμός έχει έναν αριθμό στο τέλος και τρεις αριθμούς στο τέλος. Οι δομικές κοινότητες όπως αυτό επιτρέπουν στους εισβολείς να προβλέψουν ποια είναι η πιο πιθανή δομή του κωδικού πρόσβασης του χρήστη.
Χρησιμοποιώντας αυτές τις δομικές γνώσεις, είναι ασφαλές να υποθέσουμε ότι οι χρήστες πιθανότατα θα ορίσουν τον κωδικό πρόσβασής τους σε than (τυχαία γράμματα), ακόμα κι αν ξεκινούν και τα δύο με 9 γράμματα και έχουν 9 γράμματα. Επομένως, υποθέτουμε ότι δεδομένης μιας κρυπτογραφικής δομής, αν δούμε διαδοχικά γράμματα, είναι πολύ πιθανό να είναι μια λέξη. Αυτή είναι μια πολύ χρήσιμη υπόθεση για τους crackers, καθώς εξαλείφει πολύ χώρο κλειδιών. Αυτό στη συνέχεια γίνεται μια υβριδική επίθεση που εκμεταλλεύεται τη στατιστική σημασία μιας κοινής κρυπτογραφικής δομής. potatoespwivwdhpp
Συνήθως, ως δοκιμαστές διείσδυσης, ακόμα κι αν σπάσουμε ένα σύνολο κατακερματισμών, μπορεί να μην προλάβουμε να σπάσουμε όλους τους κατακερματισμούς. Ωστόσο, η καταστροφή τους μπορεί να βοηθήσει στην αναβάθμιση της πρόσβασης στο σύστημα και να φέρει πιο χρήσιμα ευρήματα στους πελάτες. Επομένως, μπορεί να είναι χρήσιμο να προσδιορίσετε πόσο χρόνο θα διατεθεί για να σπάσει ένα σύνολο τιμών κατακερματισμού όταν σπάτε έναν κωδικό πρόσβασης. Χρησιμοποιώντας τις δομές που βρέθηκαν στην προηγούμενη ανάλυση, ένας εισβολέας μπορεί να προσδιορίσει τις κορυφαίες 10 δημοφιλείς δομές που θέλει να καλύψει με βάση τις απαιτήσεις πολυπλοκότητας του κωδικού πρόσβασης, ταξινομημένες κατά τον ταχύτερο χρόνο ολοκλήρωσης. Τέλος, ένας εισβολέας μπορεί να περιορίσει το χρόνο της μεθόδου του, αφιερώνοντας όχι περισσότερο από μία ώρα για να εκτελέσει μια ρωγμή. Αυτό ανακαλύφθηκε σε μια πρόσφατη δοκιμή διείσδυσης για την απόκτηση κατακερματισμού. Παρακάτω είναι ένα στιγμιότυπο των αποτελεσμάτων του cracker που βασίζεται σε CPU.
Σε αυτή την περίπτωση, η πιο γρήγορη δομή που θα ολοκληρωθεί είναι , την οποία ορίζουμε ως ένα κεφαλαίο γράμμα, ακολουθούμενο από τρία πεζά γράμματα (το "W" σημαίνει "λέξη") και στη συνέχεια τετραψήφιο αριθμό. Υπάρχουν 69 κωδικοί πρόσβασης που ταιριάζουν με τη δομή στο σύνολο κατακερματισμών και η τυπική μου CPU είναι σε θέση να διασχίσει όλες τις δυνατότητες αυτής της δομής σε ένα λεπτό. Σταματήσαμε να σπάσουμε σε 62 λεπτά και το σπάσμα δημιούργησε 221 μοναδικές τιμές κατακερματισμού που ταιριάζουν με 491 λογαριασμούς, οδηγώντας συνολικά στο 11% των διαρροών. Ο λόγος για τη μεγάλη διαφορά στον αριθμό των σπασμένων κωδικών πρόσβασης και των παραβιάσεων λογαριασμού είναι ότι οι ρυθμίσεις του Office τείνουν να οδηγούν τους ανθρώπους να χρησιμοποιούν συνήθεις κωδικούς πρόσβασης. Εάν ένας εισβολέας διαπιστώσει ότι χρησιμοποιείται ένας κοινός κωδικός πρόσβασης στο περιβάλλον, όλοι οι χρήστες με τον ίδιο κωδικό πρόσβασης θα απειλούνται επίσης. U(W3)dddd
Αν και μια υβριδική επίθεση ή μια επίθεση που βασίζεται σε κανόνες (π.χ.) μπορεί να σπάσει αρκετούς από αυτούς τους κωδικούς πρόσβασης πιο γρήγορα, η δομή του κωδικού πρόσβασης επίθεσης μας επιτρέπει να καλύψουμε περισσότερο χώρο κλειδιών. Αυτή η μέθοδος είναι ένα αποτελεσματικό επόμενο βήμα εάν η επίθεση Faster αποδειχθεί ανίκανη να καταστρέψει με επιτυχία τον κατακερματισμό στόχου.Επίσης, είναι σημαντικό να θυμάστε ότι αυτό το παράδειγμα γίνεται σε μια αρκετά μέτρια CPU και η εκτέλεση της ίδιας επίθεσης σε μια ισχυρή GPU μπορεί να μειώσει αυτόν τον χρόνο σε λίγα δευτερόλεπτα. Ως εκ τούτου, ο ακριβής χρονοδιάγραμμα δεν είναι τόσο σημαντικός όσο η αποτελεσματική εφαρμογή της θεωρίας. Η στατιστική ανάλυση του best64
μας βοηθά να επιτεθούμε γενικά σε κοινές κρυπτογραφικές δομές. Ωστόσο, υπάρχουν εργαλεία που μπορούν να βοηθήσουν στον εντοπισμό μιας συγκεκριμένης εφαρμογής. Εργαλεία όπως το CeWL μπορούν να ανιχνεύσουν λέξεις από ιστοσελίδες και να χρησιμοποιηθούν για να δημιουργήσουν λίστες λέξεων ή λεξικά ειδικά για εταιρείες. Λειτουργεί επειδή οι εταιρείες τείνουν να χρησιμοποιούν κωδικούς πρόσβασης που σχετίζονται με τον κλάδο, την εταιρεία ή την εργασία τους. Επιπλέον, δεδομένου ότι διαπιστώσαμε ότι οι συνήθεις κωδικοί πρόσβασης είναι δημοφιλείς στο εργασιακό περιβάλλον, είναι δυνατόν επίσης να χρησιμοποιηθούν κωδικοί πρόσβασης που έχουν ήδη σπάσει ως βάση για άλλους κωδικούς πρόσβασης, κάτι που μπορεί να είναι παρόμοιο. Για παράδειγμα, εάν διαπιστώσουμε ότι το "" είναι ο κωδικός πρόσβασης ενός χρήστη, μπορεί να βάλουμε το "" σε μια νέα λίστα λέξεων, να το βάλουμε σε ένα σύνολο κανόνων και στη συνέχεια να διαπιστώσουμε ότι κάποιος άλλος έχει τον κωδικό πρόσβασης "". Αυτή η έννοια της χρήσης σπασμένων βασικών λέξεων (όπως '') και της τροποποίησης με τους γύρω χαρακτήρες είναι εξαιρετικά αποτελεσματική κατά τη διάσπαση τιμών κατακερματισμού που απορρίπτονται από το περιβάλλον της επιχείρησης, η οποία μπορεί να εντοπιστεί στην έννοια της επαναχρησιμοποίησης κωδικών πρόσβασης. Σύμφωνα με τις δοκιμές διείσδυσης που κάναμε, αυτό είναι το καλύτερο για να χρησιμοποιηθεί για να σπάσει το τελευταίο 20% του uncracked hash. AcmeCorp1234AcmeCorpAcmeCorp@2015AcmeCorp
Είναι επίσης σημαντικό να περικόψετε το λεξικό έτσι ώστε όλοι οι μαντέψιμοι κωδικοί πρόσβασης να συμμορφώνονται με τις απαιτήσεις που καθορίζονται από την εφαρμογή, ώστε να μην χάνετε χρόνο μαντέψεως κωδικών πρόσβασης που είναι αδύνατο να μαντέψετε λόγω μήκους ή σύνθεσης χαρακτήρων.
Ξεκινώντας από την ταχύτερη επίθεση, καλύπτοντας τον ελάχιστο χώρο κλειδιών (τυπική επίθεση λεξικού) μέχρι τον πιο αργό και μεγαλύτερο χώρο κλειδιών (καθαρή ωμή δύναμη) είναι η ιδανική πρόοδος για να εξετάσετε το χρόνο που διατίθεται για την επίθεση. Ως εκ τούτου, ο εισβολέας θα πρέπει να εφαρμόσει μια τυποποιημένη μέθοδο που να το λαμβάνει υπόψη. Εάν ο εισβολέας επιθυμεί να εισβάλει έναν λογαριασμό να ολοκληρωθεί κατά την πρώτη φάση, τότε ενδέχεται να μην υπάρχει λόγος να συνεχιστεί η χρήση άλλων επιθέσεων. Ωστόσο, σε πολλές περιπτώσεις, εάν υπάρχουν λογαριασμοί-στόχοι, μια απλή επίθεση λεξικού μπορεί να μην είναι αρκετή ή ο εισβολέας απλώς θέλει να καταστρέψει όσο το δυνατόν περισσότερους λογαριασμούς, επομένως μπορεί να χρειαστεί ένα υβριδικό μείγμα επιθέσεων και στοχευμένων βίαιων επιθέσεων που χρησιμοποιούν στατιστικές δομές. Ως εκ τούτου, η δημιουργία μεθόδων είναι ζωτικής σημασίας για την επιτυχή ρωγμή, η οποία μπορεί να περιλαμβάνει τις προαναφερθείσες μεθόδους καθώς και ορισμένες αυτοματοποιημένες διαδικασίες. Πρόσφατα εργαλεία (όπως PRINCE) μπορούν να βοηθήσουν στη διευκόλυνση της διάσπασης του κωδικού πρόσβασης. Είναι σημαντικό να αναπτύξετε μια ταινία εργαλείων, όπως ο PRINCE δοκιμάζει στη μέθοδο, αλλά η κατανόηση των λειτουργιών πίσω από τα εργαλεία και όχι η εξάρτηση εξ ολοκλήρου από αυτά θα κάνει το hack πιο αποτελεσματικό.
Με την ανάλυση χρησιμοποιώντας αυτούς τους κωδικούς πρόσβασης, είναι δυνατόν να προσδιοριστούν οι πιο δημοφιλείς δομές δεδομένου του επιθυμητού επιπέδου πολυπλοκότητας. Ως εκ τούτου, οι προγραμματιστές θα πρέπει πιθανώς να εφαρμόσουν ορισμένα στοιχεία ελέγχου για να εμποδίσουν τους χρήστες να χρησιμοποιούν μερικές από αυτές τις πολύ δημοφιλείς δομές για να ισοπεδώσουν την καμπύλη του προηγούμενου Ωστόσο, το πρόβλημα με αυτή την ιδέα είναι ότι οι χρήστες μπορεί να δυσκολευτούν να θυμούνται τους κωδικούς πρόσβασής τους χωρίς μια απλή δομή. Συνιστώ να χρησιμοποιήσετε έναν διαχειριστή κωδικών πρόσβασης που απαιτεί έλεγχο ταυτότητας δύο παραγόντων. Αυτές οι εφαρμογές θα δημιουργήσουν και θα αποθηκεύσουν όλους τους κωδικούς πρόσβασής σας για εσάς, επομένως η μνήμη δεν είναι πρόβλημα. Οι κωδικοί πρόσβασης που δημιουργούν είναι δομικά τυχαίοι και μπορούν να χρησιμοποιηθούν όσο η εφαρμογή το επιτρέπει. Όπως ανέφερα προηγουμένως, η κρυπτογράφηση των κωδικών πρόσβασης είναι ένας άλλος πολύ αποτελεσματικός τρόπος για να επιβραδύνει τις προοπτικές ανάπτυξης ενός εισβολέα.Τέλος, η εφαρμογή πολιτικών εντός του γραφείου που βοηθούν τους χρήστες να κατανοήσουν τους κινδύνους της κοινής χρήσης κωδικών πρόσβασης ή της επαναχρησιμοποίησης τους είναι ένα επιτυχημένο βήμα προς τη σωστή κατεύθυνση, ακόμα κι αν οι χρήστες δεν τηρούν πάντα. Αν και πιθανότατα δεν θα τηρούν πάντα, αποτελεί αποτελεσματικό μέτρο ελέγχου.
Η διάσπαση κωδικού πρόσβασης μπορεί να είναι μια ασαφής έννοια. Καθώς η δυσκολία πυρόλυσης αυξάνεται, απαιτούνται στοχευμένες επιθέσεις βασισμένες στην αποτελεσματικότητα και πρέπει να δημιουργηθούν προσωπικές μέθοδοι πυρόλυσης Δεν αξίζει τον κόπο να επενδύσετε χρήματα για να βελτιώσετε τελικά την ταχύτητα δημιουργίας κατακερματισμού. Ως εκ τούτου, η χρήση στατιστικών και εργαλείων ως μέσων επίθεσης για την εφαρμογή μιας μεθόδου και μιας απλοποιημένης διαδικασίας μπορεί να διευκολύνει τη διάσπαση του κωδικού πρόσβασης. Οι προγραμματιστές μπορούν να αναπτύξουν ελέγχους για να αντιμετωπίσουν αυτές τις καταστάσεις και οι χρήστες μπορούν να χρησιμοποιήσουν ασφαλείς διαχειριστές κωδικών πρόσβασης για να ελαχιστοποιήσουν την αποτελεσματικότητα αυτών των επιθέσεων. Ωστόσο, τέτοιες υλοποιήσεις δεν είναι ακόμη πολύ δημοφιλείς. Επί του παρόντος, οι στατιστικές επιθέσεις κατά των κωδικών πρόσβασης είναι αποτελεσματικές όσον αφορά τον αριθμό των ρωγμών και την αποτελεσματικότητα της σύνδεσης χρόνου. Σκεφτείτε τον δικό σας κωδικό πρόσβασης και αναρωτηθείτε πόσο γρήγορα μπορούν να σπάσουν, ανάλογα με τη δομή του κωδικού πρόσβασης και ποιοι έλεγχοι στο γραφείο σας θα μπορούσαν να προκαλέσουν εισβολείς να εισβάλουν στον λογαριασμό του χρήστη.