Πώς να σπάσετε κωδικούς πρόσβασης

Μια σύντομη σημείωση - αυτό το άρθρο αφορά τη θεωρία του τρόπου διάσπασης κωδικών πρόσβασης. Η κατανόηση του τρόπου με τον οποίο οι κυβερνοεγκληματίες εκτελούν επιθέσεις είναι εξαιρετικά σημαντική για την κατανόηση του τρόπου διασφάλισης συστημάτων έναντι αυτών των τύπων επιθέσεων.

Η απόπειρα εισβολής ενός συστήματος που δεν σας ανήκει είναι πιθανώς παράνομη στη δικαιοδοσία σας (καθώς και η παραβίαση των δικών σας συστημάτων ενδέχεται [και συχνά] παραβιάζει οποιαδήποτε εγγύηση για αυτό το προϊόν).

Ας ξεκινήσουμε με τα βασικά. Τι είναι μια ωμή επίθεση;

Αυτός ο τύπος επίθεσης συνεπάγεται επανειλημμένα προσπάθεια σύνδεσης ως χρήστη δοκιμάζοντας κάθε πιθανό συνδυασμό γραμμάτων, αριθμών και χαρακτήρων (χρησιμοποιώντας αυτοματοποιημένα εργαλεία).

Αυτό μπορεί να γίνει είτε διαδικτυακά (έτσι σε πραγματικό χρόνο, δοκιμάζοντας συνεχώς διαφορετικούς συνδυασμούς ονόματος χρήστη / κωδικού πρόσβασης σε λογαριασμούς όπως μέσα κοινωνικής δικτύωσης ή τραπεζικούς ιστότοπους) είτε εκτός σύνδεσης (για παράδειγμα, εάν έχετε αποκτήσει ένα σύνολο κατακερματισμένων κωδικών πρόσβασης και προσπαθείτε να σπάσετε εκτός σύνδεσης).

Η σύνδεση εκτός σύνδεσης δεν είναι πάντα δυνατή (μπορεί να είναι δύσκολο να αποκτήσετε ένα σύνολο κατακερματισμένων κωδικών πρόσβασης), αλλά είναι πολύ λιγότερο θορυβώδες. Αυτό συμβαίνει επειδή μια ομάδα ασφαλείας πιθανότατα θα παρατηρήσει πολλούς, πολλούς αποτυχημένους λογαριασμούς σύνδεσης από τον ίδιο λογαριασμό, αλλά αν μπορείτε να σπάσετε τον κωδικό πρόσβασης εκτός σύνδεσης, δεν θα έχετε αρχείο αποτυχημένων προσπαθειών σύνδεσης.

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

Για παράδειγμα, εάν γνωρίζετε ότι κάποιος χρησιμοποιεί κωδικό πρόσβασης 5 χαρακτήρων, που αποτελείται μόνο από πεζά γράμματα, ο συνολικός αριθμός πιθανών κωδικών πρόσβασης είναι 26 ^ 5 (26 πιθανά γράμματα για να διαλέξετε για το πρώτο γράμμα, 26 πιθανές επιλογές για το δεύτερο γράμμα, κ.λπ.), ή 11.881.376 πιθανούς συνδυασμούς.

Αλλά εάν κάποιος χρησιμοποιεί κωδικό πρόσβασης 11 χαρακτήρων, μόνο με πεζά γράμματα, ο συνολικός αριθμός πιθανών κωδικών πρόσβασης είναι 26 ^ 11 ή 3.670.344.486.987.776 πιθανούς κωδικούς πρόσβασης.

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

Πώς να προστατευτείτε

Αυτός ο τύπος επίθεσης μπορεί να υπερασπιστεί με δύο διαφορετικούς τρόπους. Πρώτον, μπορείτε να χρησιμοποιήσετε αρκετά μεγάλους, πολύπλοκους κωδικούς πρόσβασης (τουλάχιστον 15 χαρακτήρες). Μπορείτε επίσης να χρησιμοποιήσετε μοναδικούς κωδικούς πρόσβασης για κάθε λογαριασμό (χρησιμοποιήστε έναν διαχειριστή κωδικών πρόσβασης!) Για να μειώσετε τον κίνδυνο από παραβιάσεις δεδομένων.

Μια ομάδα ασφαλείας μπορεί να κλειδώσει έναν λογαριασμό μετά από έναν ορισμένο αριθμό αποτυχημένων προσπαθειών σύνδεσης. Μπορούν επίσης να επιβάλουν μια δευτερεύουσα μέθοδο επαλήθευσης όπως το Captcha, ή να χρησιμοποιήσουν έλεγχο ταυτότητας 2 παραγόντων (2FA) που απαιτεί δεύτερο κωδικό (SMS ή email, βάσει εφαρμογής ή βασισμένο σε κλειδί υλικού).

Ακολουθεί ένα άρθρο σχετικά με τον τρόπο εκτέλεσης μιας επίθεσης ωμής βίας.

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

Μια επίθεση στο λεξικό περιλαμβάνει την προσπάθεια επανειλημμένης σύνδεσης, δοκιμάζοντας έναν αριθμό συνδυασμών που περιλαμβάνονται σε ένα μεταγλωττισμένο «λεξικό» ή μια λίστα συνδυασμών.

Αυτό είναι συνήθως ταχύτερο από μια επίθεση brute force, επειδή οι συνδυασμοί γραμμάτων και αριθμών έχουν ήδη υπολογιστεί, εξοικονομώντας χρόνο και υπολογιστική ισχύ.

Αλλά εάν ο κωδικός πρόσβασης είναι αρκετά περίπλοκος (για παράδειγμα 1098324ukjbfnsdfsnej) και δεν εμφανίζεται στο "λεξικό" (η προκατασκευασμένη λίστα συνδυασμών από τους οποίους εργάζεστε), η επίθεση δεν θα λειτουργήσει.

Είναι συχνά επιτυχές γιατί, συχνά όταν οι άνθρωποι επιλέγουν κωδικούς πρόσβασης, επιλέγουν κοινές λέξεις ή παραλλαγές σε αυτές τις λέξεις (για παράδειγμα, «κωδικός πρόσβασης» ή «p @ SSword»).

Ένας χάκερ μπορεί επίσης να χρησιμοποιήσει αυτόν τον τύπο επίθεσης όταν ξέρει ή μαντέψει ένα μέρος του κωδικού πρόσβασης (για παράδειγμα, το όνομα ενός σκύλου, τα γενέθλια των παιδιών ή μια επέτειο - πληροφορίες που μπορεί να βρει ένας χάκερ σε σελίδες κοινωνικών μέσων ή σε άλλους πόρους ανοιχτού κώδικα).

Παρόμοια μέτρα προστασίας με εκείνα που περιγράφονται παραπάνω κατά των επιθέσεων ωμής βίας μπορούν να αποτρέψουν την επιτυχία αυτών των τύπων επιθέσεων.

Τι γίνεται αν έχετε ήδη μια λίστα κατακερματισμένων κωδικών πρόσβασης;

Οι κωδικοί πρόσβασης αποθηκεύονται στο αρχείο / etc / shadow για Linux και C: \ Windows \ System32 \ config για Windows (τα οποία δεν είναι διαθέσιμα κατά την εκκίνηση του λειτουργικού συστήματος).

Εάν καταφέρατε να λάβετε αυτό το αρχείο ή εάν έχετε αποκτήσει κατακερματισμό κωδικού πρόσβασης με διαφορετικό τρόπο, όπως εισπνοή επισκεψιμότητας στο δίκτυο, μπορείτε να δοκιμάσετε τη διάσπαση κωδικού πρόσβασης "εκτός σύνδεσης".

Ενώ οι παραπάνω επιθέσεις απαιτούν επανειλημμένη σύνδεση, αν έχετε μια λίστα κατακερματισμένων κωδικών πρόσβασης, μπορείτε να δοκιμάσετε να τους σπάσετε στον υπολογιστή σας, χωρίς να ενεργοποιήσετε ειδοποιήσεις που δημιουργούνται από επαναλαμβανόμενες αποτυχημένες προσπάθειες σύνδεσης. Στη συνέχεια, δοκιμάστε να συνδεθείτε μόνο μία φορά, αφού έχετε σπάσει με επιτυχία τον κωδικό πρόσβασης (και επομένως δεν υπάρχει αποτυχημένη προσπάθεια σύνδεσης).

Μπορείτε να χρησιμοποιήσετε επιθέσεις brute force ή επιθέσεις λεξικού κατά των αρχείων κατακερματισμού και μπορεί να είναι επιτυχής ανάλογα με το πόσο ισχυρό είναι το κατακερματισμό.

Περιμένετε ένα λεπτό - τι κατακερματισμός;

35D4FFEF6EF231D998C6046764BB935D

Αναγνωρίζετε αυτό το μήνυμα; Λέει "Γεια το όνομά μου είναι megan"

7DBDA24A2D10DAF98F23B95CFAF1D3AB

Αυτή είναι η πρώτη παράγραφος αυτού του άρθρου. Ναι, μοιάζει με ανοησίες, αλλά στην πραγματικότητα είναι «κατακερματισμός».

Η συνάρτηση κατακερματισμού επιτρέπει σε έναν υπολογιστή να εισάγει μια συμβολοσειρά (κάποιος συνδυασμός γραμμάτων, αριθμών και συμβόλων), να λάβει αυτήν τη συμβολοσειρά, να την αναμίξει και να εξάγει μια συμβολοσειρά σταθερού μήκους. Γι 'αυτό και οι δύο χορδές παραπάνω έχουν το ίδιο μήκος, παρόλο που οι είσοδοι των χορδών ήταν πολύ διαφορετικά μήκη.

Hash μπορούν να δημιουργηθούν από σχεδόν οποιοδήποτε ψηφιακό περιεχόμενο. Βασικά, όλο το ψηφιακό περιεχόμενο μπορεί να μειωθεί σε δυαδικό ή μια σειρά από 0s και 1s. Επομένως, όλο το ψηφιακό περιεχόμενο (εικόνες, έγγραφα κ.λπ.) μπορεί να κατακερματιστεί.

Υπάρχουν πολλές διαφορετικές λειτουργίες κατακερματισμού, μερικές από τις οποίες είναι πιο ασφαλείς από άλλες. Οι παραπάνω κατακερματισμοί δημιουργήθηκαν με MD5 (το MD σημαίνει "Μήνυμα Digest"). Διαφορετικές λειτουργίες διαφέρουν επίσης στο μήκος του κατακερματισμού που παράγουν.

Το ίδιο περιεχόμενο στην ίδια συνάρτηση κατακερματισμού θα παράγει πάντα τον ίδιο κατακερματισμό. Ωστόσο, ακόμη και μια μικρή αλλαγή θα αλλάξει εντελώς το κατακερματισμό. Για παράδειγμα,

2FF5E24F6735B7564CAE7020B41C80F1

Είναι το hash για το «Γεια μου το όνομά μου είναι Megan» Απλώς η κεφαλαιοποίηση του M στο Megan άλλαξε εντελώς το hash από ψηλά.

Οι παύλες είναι επίσης μονόδρομες λειτουργίες (που σημαίνει ότι δεν μπορούν να αντιστραφούν). Αυτό σημαίνει ότι οι κατακερματισμοί (μοναδικοί και μονόδρομοι) μπορούν να χρησιμοποιηθούν ως τύπος ψηφιακού δακτυλικού αποτυπώματος για περιεχόμενο.

Ποιο είναι το παράδειγμα του τρόπου χρήσης των κατακερματισμών;

Οι παύλες μπορούν να χρησιμοποιηθούν ως επαλήθευση ότι ένα μήνυμα δεν έχει αλλάξει.

Όταν στέλνετε ένα email, για παράδειγμα, μπορείτε να κατακερματίσετε ολόκληρο το email και να στείλετε το hash επίσης. Στη συνέχεια, ο παραλήπτης μπορεί να εκτελέσει το ληφθέν μήνυμα μέσω της ίδιας λειτουργίας κατακερματισμού για να ελέγξει εάν το μήνυμα έχει παραβιαστεί κατά τη μεταφορά. Εάν οι δύο κατακερματισμοί ταιριάζουν, το μήνυμα δεν έχει αλλάξει. Εάν δεν ταιριάζουν, το μήνυμα έχει αλλάξει.

Επίσης, οι κωδικοί πρόσβασης συνήθως κατακερματιστούν όταν αποθηκεύονται. Όταν ένας χρήστης εισάγει τον κωδικό πρόσβασής του, ο υπολογιστής υπολογίζει την τιμή κατακερματισμού και τον συγκρίνει με την αποθηκευμένη τιμή κατακερματισμού. Με αυτόν τον τρόπο ο υπολογιστής δεν αποθηκεύει κωδικούς πρόσβασης σε απλό κείμενο (οπότε κάποιος χαλασμένος χάκερ δεν μπορεί να τους κλέψει!).

Εάν κάποιος είναι σε θέση να κλέψει το αρχείο κωδικού πρόσβασης, τα δεδομένα είναι άχρηστα επειδή η λειτουργία δεν μπορεί να αντιστραφεί (αν και υπάρχουν τρόποι, όπως πίνακες ουράνιων τόξων, για να καταλάβουμε τι απλό κείμενο δημιουργεί το γνωστό κατακερματισμό).

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

Εάν ένας κατακερματισμός μπορεί να λάβει δεδομένα οποιουδήποτε μήκους ή περιεχομένου, υπάρχουν απεριόριστες δυνατότητες για δεδομένα που μπορούν να κατακερματιστούν.

Εφόσον ένας κατακερματισμός μετατρέπει αυτό το κείμενο σε περιεχόμενο σταθερού μήκους (για παράδειγμα, 32 χαρακτήρες), υπάρχει ένας πεπερασμένος αριθμός συνδυασμών για ένα κατακερματισμό. Είναι ένας πολύ μεγάλος αριθμός δυνατοτήτων, αλλά όχι άπειρος.

Τελικά, δύο διαφορετικά σύνολα δεδομένων θα αποφέρουν την ίδια τιμή κατακερματισμού. Αυτό ονομάζεται σύγκρουση.

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

Ωστόσο, τι γίνεται αν δεν σας ενδιαφέρει ποια δύο κατακερματισμού συγκρούονται;

Αυτό ονομάζεται «πρόβλημα γενεθλίων» στα μαθηματικά. Σε μια τάξη 23 μαθητών, η πιθανότητα κάποιος να έχει γενέθλια σε μια συγκεκριμένη ημέρα είναι περίπου 7%, αλλά η πιθανότητα ότι δύο άτομα μοιράζονται τα ίδια γενέθλια είναι περίπου 50%.

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

Για να το αποφύγετε αυτό, μπορείτε να χρησιμοποιήσετε μεγαλύτερες λειτουργίες κατακερματισμού όπως το SHA3, όπου η πιθανότητα σύγκρουσης είναι χαμηλότερη.

Μπορείτε να δοκιμάσετε να δημιουργήσετε τις δικές σας λειτουργίες κατακερματισμού για το SHA3 εδώ και το MD5 εδώ.  

Μπορείτε να προσπαθήσετε να βγάλετε τα κατακερματισμένα, αλλά χρειάζεται πολύς χρόνος. Ο γρηγορότερος τρόπος για να γίνει αυτό, είναι να χρησιμοποιήσετε προ-υπολογισμένους πίνακες ουράνιου τόξου (που είναι παρόμοιοι με επιθέσεις στο λεξικό).

Φαίνεται πολύ εύκολο να χακαριστεί. Πρέπει να με ανησυχεί;

Το πιο σημαντικό πράγμα που πρέπει να θυμάστε για το hacking είναι ότι κανείς δεν θέλει να κάνει περισσότερη δουλειά από ό, τι πρέπει να κάνει. Για παράδειγμα, τα βίαια κατακερματισμό μπορεί να είναι εξαιρετικά χρονοβόρα και δύσκολα. Εάν υπάρχει ένας ευκολότερος τρόπος για να λάβετε τον κωδικό πρόσβασής σας, αυτό πιθανότατα θα δοκιμάσει πρώτα ένας άθλιος ηθοποιός.

Αυτό σημαίνει ότι η ενεργοποίηση των βασικών βέλτιστων πρακτικών για την ασφάλεια στον κυβερνοχώρο είναι ίσως ο ευκολότερος τρόπος για την αποφυγή παραβίασης. Στην πραγματικότητα, η Microsoft ανέφερε πρόσφατα ότι μόνο η ενεργοποίηση του 2FA θα καταλήξει να αποκλείει το 99,9% των αυτοματοποιημένων επιθέσεων.

Πρόσθετη ανάγνωση:

Δημοφιλή εργαλεία διάσπασης κωδικού πρόσβασης