Εξαγωγή κρυπτογραφημένων διαπιστευτηρίων από κοινά εργαλεία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Εξαγωγή κρυπτογραφημένων διαπιστευτηρίων από κοινά εργαλεία

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

Στο Παραβίαση Uber τον Σεπτέμβριο, επιτιθέμενοι βρήκε τα διαπιστευτήρια σε ένα συγκεκριμένο σενάριο PowerShell. Υπάρχουν όμως πολλοί λιγότερο εντυπωσιακοί, αλλά εξίσου επιζήμιοι τρόποι που οι εισβολείς μπορούν να βρουν διαπιστευτήρια που θα τους επέτρεπαν την πρόσβαση στο περιβάλλον. Αυτά περιλαμβάνουν κοινά τοπικά διαπιστευτήρια, τοπικούς χρήστες με παρόμοιους κωδικούς πρόσβασης και διαπιστευτήρια που είναι αποθηκευμένα σε αρχεία σε κοινόχρηστα στοιχεία δικτύου.

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

Οι οργανισμοί βασίζονται σε πολλά εργαλεία για τον έλεγχο ταυτότητας σε διακομιστές και βάσεις δεδομένων χρησιμοποιώντας πρωτόκολλα SSH, FTP, Telnet ή RDP — και πολλά από αυτά τα εργαλεία αποθηκεύουν διαπιστευτήρια για να επιταχύνουν τον έλεγχο ταυτότητας. Εξετάζουμε τρία τέτοια εργαλεία — WinSCP, Robomongo και MobaXterm — για να δείξουμε πώς ένας εισβολέας θα μπορούσε να εξαγάγει διαπιστευτήρια χωρίς καθαρό κείμενο.

WinSCP: Συσχετισμένα διαπιστευτήρια

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

Το WinSCP προσφέρει την επιλογή αποθήκευσης των στοιχείων διαπιστευτηρίων που χρησιμοποιούνται για τη σύνδεση σε απομακρυσμένα μηχανήματα μέσω SSH. Ενώ τα διαπιστευτήρια είναι ασαφή όταν αποθηκεύονται στο μητρώο των Windows (ComputerHKEY_CURRENT_USERSOFTWAREMartin PrikrylWinSCP 2Sessions), δεν είναι καθόλου κρυπτογραφημένα. Όποιος γνωρίζει τον αλγόριθμο που χρησιμοποιείται για τη συσκότιση μπορεί να αποκτήσει πρόσβαση στα διαπιστευτήρια.

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

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

Robomongo: Όχι μυστικό κλειδί

Το Robomongo (τώρα Robo 3T) είναι ένας πελάτης MongoDB που χρησιμοποιείται για σύνδεση με διακομιστές βάσης δεδομένων Mongo. Όταν αποθηκεύετε τα διαπιστευτήριά σας, κρυπτογραφούνται και αποθηκεύονται σε ένα robo3t.json αρχείο JSON. Το μυστικό κλειδί που χρησιμοποιείται για την κρυπτογράφηση των διαπιστευτηρίων αποθηκεύεται επίσης τοπικά, σε καθαρό κείμενο, σε α robo3t.κλειδί αρχείο.

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

Εξετάσαμε τον πηγαίο κώδικα του Robomongo στο GitHub για να καταλάβουμε πώς χρησιμοποιείται το κλειδί για την κρυπτογράφηση του κωδικού πρόσβασης και μάθαμε ότι χρησιμοποιεί το SimpleCrypt lib από το Qt. Ενώ το Robomongo χρησιμοποιεί κρυπτογράφηση για την ασφαλή αποθήκευση των διαπιστευτηρίων, το γεγονός ότι το μυστικό κλειδί αποθηκεύεται σε καθαρό κείμενο δεν αποτελεί βέλτιστη πρακτική. Οι εισβολείς θα μπορούσαν ενδεχομένως να το διαβάσουν, επειδή οποιοσδήποτε χρήστης με πρόσβαση στο σταθμό εργασίας μπορεί να αποκρυπτογραφήσει τα διαπιστευτήρια. Ακόμα κι αν οι πληροφορίες είναι κωδικοποιημένες με τρόπο που οι άνθρωποι δεν μπορούν να διαβάσουν, ορισμένες τεχνικές θα μπορούσαν να καθορίσουν ποια κωδικοποίηση χρησιμοποιείται και στη συνέχεια να αποκωδικοποιήσουν τις πληροφορίες.

MobaXterm: Αποκρυπτογράφηση του κωδικού πρόσβασης

Το MobaXterm είναι ένα ισχυρό εργαλείο για σύνδεση σε απομακρυσμένα μηχανήματα χρησιμοποιώντας διάφορα πρωτόκολλα όπως SSH, Telnet, RDP, FTP κ.λπ. Ένας χρήστης που θέλει να αποθηκεύσει διαπιστευτήρια στο MobaXterm θα κληθεί να δημιουργήσει έναν κύριο κωδικό πρόσβασης για την προστασία των ευαίσθητων δεδομένων του. Από προεπιλογή, το MobaXterm ζητά τον κύριο κωδικό πρόσβασης μόνο σε νέο υπολογιστή.

Αυτό σημαίνει ότι ο κύριος κωδικός πρόσβασης είναι αποθηκευμένος κάπου και το MobaXterm θα τον ανακτήσει για να αποκτήσει πρόσβαση στα κρυπτογραφημένα διαπιστευτήρια. Χρησιμοποιήσαμε το Procmon από τη σουίτα Sysinternals για να αντιστοιχίσουμε όλα τα κλειδιά μητρώου και τα αρχεία στα οποία έχει πρόσβαση το MobaXterm και βρήκαμε τον κύριο κωδικό πρόσβασης αποθηκευμένο στο μητρώο των Windows (ComputerHKEY_CURRENT_USERSOFTWAREMobatekMobaXtermM). Τα διαπιστευτήρια και οι κωδικοί πρόσβασης αποθηκεύονται στα κλειδιά μητρώου C και P, αντίστοιχα.

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

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

Γνωρίστε τους κινδύνους

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

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

Σφραγίδα ώρας:

Περισσότερα από Σκοτεινή ανάγνωση