Αναγνώριση αλγορίθμου ενός hash
- Πίνακας ελέγχου
- Τεκμηρίωση
- API
Τι είναι ο κρυπτογραφικός κατακερματισμός;
Ένας hash (ή κρυπτογραφικό αποτύπωμα) είναι το αποτέλεσμα μιας συνάρτησης που μετασχηματίζεται μια εισαγωγή δεδομένων αυθαίρετου μεγέθους (ένας κωδικός πρόσβασης, ένα αρχείο, μια συμβολοσειρά) σε μια συμβολοσειρά του σταθερό μέγεθος. Αυτή η συνάρτηση είναι μονόδρομη: από κατακερματισμό, είναι μαθηματικά ανέφικτο να βρεθεί η αρχική καταχώρηση. Παράγουν δύο ίδιες εισροές πάντα ο ίδιος κατακερματισμός, αλλά η παραμικρή αλλαγή στην είσοδο αλλάζει εντελώς το αποτέλεσμα.
Το εργαλείο μας προσδιορίζει τον πιθανό αλγόριθμο ενός κατακερματισμού με βάση τη μορφή του και επιχειρεί μια αναζήτηση σε ένα λεξικό εξαιρετικά κοινών κωδικών πρόσβασης προυπολογισμένο στους κύριους αλγόριθμους.
Πώς να αναγνωρίσετε ένα hash;
Η ταυτοποίηση βασίζεται σε τρεις ενδείξεις:
- Μήκος: κάθε αλγόριθμος παράγει ένα αποτύπωμα σταθερού μεγέθους.
- Η μορφή: καθαρή δεκαεξαδική, Base64 ή Modular Crypt Format με προθέματα συγκεκριμένο.
- Το πρόθεμα: Οι σύγχρονοι κατακερματισμοί κωδικών πρόσβασης ακολουθούν τη μορφή
$id$params$salt$hash, όπου τοidπροσδιορίζει ξεκάθαρα τη συνάρτηση χρησιμοποιείται.
Κοινά δεκαεξαδικά μήκη
- 8 χαρακτήρες: CRC32 (άθροισμα ελέγχου, όχι κρυπτογραφικό κατακερματισμό)
- 32 χαρακτήρες: MD5, MD4, NTLM, RIPEMD-128
- 40 χαρακτήρες: SHA-1, RIPEMD-160
- 64 χαρακτήρες: SHA-256, SHA3-256
- 96 χαρακτήρες: SHA-384, SHA3-384
- 128 χαρακτήρες: SHA-512, SHA3-512, Whirlpool
Το μήκος μόνο δεν αρκεί για να καταλήξουμε στο συμπέρασμα: MD5 και NTLM μοιράζονται το ίδιο μέγεθος 32 χαρακτήρων εξάγωνο, για παράδειγμα. Στη συνέχεια, το εργαλείο μας επιστρέφει τη λίστα πιθανών αλγορίθμων.
Modular Format Crypt Prefixes
Κατακερματισμοί κωδικών πρόσβασης από crypt() ή σύγχρονες βιβλιοθήκες χρησιμοποιούν α
ρητό πρόθεμα:
$1$: κρύπτη MD5$5$: κρύπτη SHA-256$6$: κρύπτη SHA-512$2y$,$2a$,$2b$: Bcrypt (παραλλαγές ανάλογα με την πλατφόρμα)$argon2i$,$argon2id$,$argon2d$: Argon2 (παραλλαγές χρήσης, το Argon2id συνιστάται σήμερα)
Παράδειγμα κατακερματισμού Bcrypt
$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Θήκες χρήσης
- Ανάλυση διαρροής δεδομένων: προσδιορίστε τον αλγόριθμο που χρησιμοποιείται από μια βάση δεδομένων συμβιβάστηκε για την αξιολόγηση της δυσκολίας επίθεσης.
- Εντοπισμός σφαλμάτων: επιβεβαιώστε γρήγορα ποιος αλγόριθμος δημιούργησε ένα δαχτυλικό αποτύπωμα που βρέθηκε σε μια απόκριση ή αρχείο καταγραφής API.
- Έλεγχος ασφαλείας: εντοπίστε ένα σύστημα που εξακολουθεί να αποθηκεύει τους κωδικούς πρόσβασης MD5 ή SHA-1 (προς αποφυγή).
- Ιατροδικαστική: χαρακτηρίστε ένα τεχνούργημα σε μια έρευνα.
Γιατί ένας κατακερματισμός δεν είναι αναστρέψιμος
Μια συνάρτηση κατακερματισμού έχει σχεδιαστεί για να είναι μονόδρομη. Δεν υπάρχει αλγόριθμος της «αποκρυπτογράφησης κατακερματισμού», επειδή ένας κατακερματισμός δεν είναι κρυπτογράφηση: είναι προβολή. Αρκετές διαφορετικές εισροές μπορούν θεωρητικά να παράγουν τον ίδιο κατακερματισμό (σύγκρουση), άρα ακόμη και η γνώση μια καταχώρηση που παράγει το σωστό κατακερματισμό, δεν έχετε καμία εγγύηση ότι είναι η αρχική καταχώριση.
Στην πράξη, το «σπάσιμο» ενός κατακερματισμού σημαίνει μαζική δοκιμή των καταχωρίσεων υποψηφίων μέχρι να βρείτε αυτό του οποίου το δακτυλικό αποτύπωμα ταιριάζει. Αυτό κάνουν οι επιθέσεις λεξικών και με ωμή βία.
Ενσωματωμένη αναζήτηση λεξικού
Το εργαλείο μας περιλαμβάνει ένα μίνι λεξικό με 39 εξαιρετικά συνηθισμένους κωδικούς πρόσβασης:
κενή συμβολοσειρά, κωδικός πρόσβασης, διαχειριστής, 123456, qwerty,
letmein, κ.λπ. Αυτές οι 39 είσοδοι υπολογίζονται εκ των προτέρων σε 10 αλγόριθμους
(MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM, κ.λπ.). Εάν ο κατακερματισμός σας ταιριάζει με ένα από αυτά τα δακτυλικά αποτυπώματα,
το εργαλείο σας επιστρέφει τον κωδικό πρόσβασης σε καθαρό κείμενο.
Αυτό το χαρακτηριστικό δείχνειγιατί οι απλοί κατακερματισμοί δεν είναι κατάλληλοι για λέξεις του pass: ένας επιθετικός δεν χρειάζεται καν να υπολογίζει, συμβουλεύεται έναν πίνακα.
Απλός κατακερματισμός έναντι κατακερματισμού κωδικού πρόσβασης
Δεν είναι όλοι οι κατακερματισμοί ίσοι για την αποθήκευση κωδικών πρόσβασης:
- Απλοί κατακερματισμοί (MD5, SHA-256, SHA-512): έχουν σχεδιαστεί για να είναι γρήγορο, το οποίο είναι προεπιλογή όταν θέλετε να αντισταθείτε σε μια επίθεση ωμής βίας. Δεν περιλαμβάνουν sel από προεπιλογή, επομένως δύο χρήστες με τον ίδιο κωδικό πρόσβασης θα έχουν το ίδιο κατακερματισμό, εκθέτοντάς το σε επιθέσεις από προυπολογισμένους πίνακες (πίνακες ουράνιου τόξου).
- κατακερματισμός κωδικού πρόσβασης (bcrypt, scrypt, Argon2): έχει σχεδιαστεί για να αργό από κατασκευή, ενσωματώστε ένα τυχαίο αλάτι και έναν παράγοντα ρυθμιζόμενο κόστος. Το Argon2id είναι σήμερα η τελευταία λέξη της τεχνολογίας που προτείνει η OWASP.
Πώς να χρησιμοποιήσετε το εργαλείο
- Επικολλήστε τον κατακερματισμό στο πεδίο εισαγωγής.
- Το εργαλείο εντοπίζει τη μορφή (μήκος, πρόθεμα) και προτείνει πιθανούς αλγόριθμους.
- Εάν ο κατακερματισμός ταιριάζει με έναν εξαιρετικά κοινό κωδικό πρόσβασης, εμφανίζεται η λέξη απλού κειμένου.
- Διαφορετικά, λαμβάνετε τη λίστα των υποψηφίων αλγορίθμων για περαιτέρω εξερεύνηση με ένα εργαλείο αφιερωμένο.
Συχνές ερωτήσεις
Γιατί ο κατακερματισμός bcrypt μου δεν ταιριάζει με το λεξικό;
Το Bcrypt χρησιμοποιεί ένα μοναδικό τυχαίο αλάτι ανά κατακερματισμό: ακόμη και με τον κωδικό πρόσβασης password,
κάθε χρήστης παράγει διαφορετικό κατακερματισμό. Επομένως, ο προυπολογισμός του λεξικού δεν λειτουργεί.
Αυτή είναι ακριβώς η ιδιότητα που κάνει το bcrypt ανθεκτικό σε επιθέσεις πίνακα.
Τι να κάνετε εάν είναι δυνατοί πολλοί αλγόριθμοι για το ίδιο μήκος;
Διασταύρωση με άλλες ενδείξεις: η πηγή του κατακερματισμού (Η υπηρεσία καταλόγου Active Directory δείχνει σε NTLM, Linux
/etc/shadow σε κρύπτη SHA-512, μια παλιά βάση δεδομένων MySQL στο MD5, κ.λπ.), και το
πλαίσιο εφαρμογής. Σε ίσο μήκος, το MD5 παραμένει στατιστικά το πιο πιθανό
παλιά συστήματα.
Πώς να "σπάσετε" έναν κατακερματισμό στην πράξη;
Για τις νόμιμες δοκιμές ασφαλείας (έλεγχος, διεξαγωγή δοκιμής), είναι τυπικά εργαλεία John the Ripper και hashcat. Δέχονται λίστες λέξεων μαζική (rockyou, κ.λπ.) και εκμεταλλεύονται τη GPU για να δοκιμάσουν δισεκατομμύρια υποψηφίους ανά δεύτερο. Η σκοπιμότητα εξαρτάται από τον αλγόριθμο: MD5 και SHA-1 αποδίδουν γρήγορα, bcrypt και Argon2 επιβραδύνουν την επίθεση κατά πολλές τάξεις μεγέθους.
Μπορεί να αναζητηθεί το ενσωματωμένο λεξικό;
Το λεξικό είναι εσκεμμένα μινιμαλιστικό (39 λήμματα) και χρησιμεύει για να απεικονίσει την αδυναμία του απλοί κατακερματισμοί σε ασήμαντους κωδικούς πρόσβασης. Για σοβαρή κάλυψη, χρησιμοποιήστε μια λίστα λέξεων εξωτερικό (rockyou, SecLists) με τον John the Ripper ή hashcat.
Μπορούμε να "αποκωδικοποιήσουμε" έναν κατακερματισμό;
Όχι. Ο κατακερματισμός δεν είναι κρυπτογράφηση: δεν υπάρχει αντίστροφη συνάρτηση. Οποιοσδήποτε ιστότοπος που υπόσχεται να "αποκωδικοποιήσει έναν κατακερματισμό" στην πραγματικότητα εφαρμόζει μια αναζήτηση σε μια προυπολογισμένη βάση. Αν σας Ο κωδικός πρόσβασης είναι μοναδικός και μεγάλος, δεν υπάρχει.
Παράδειγμα αιτήματος
curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
-H "Content-Type: application/json" \
-d '{"hash":"..."}'
Σχήμα εισόδου
| Πεδίο | Τύπος | Απαιτείται | Προεπιλογή |
|---|---|---|---|
hash |
text | ✓ | – |
Σημεία πρόσβασης
GET https://cdrn.fr/api/v1/tools- εμφανίζει όλα τα διαθέσιμα εργαλείαGET https://cdrn.fr/api/v1/tools/hash-identifier- ανακτά το σχήμα αυτού του εργαλείουPOST https://cdrn.fr/api/v1/tools/hash-identifier/execute- εκτελεί αυτό το εργαλείο με payload JSON