Cryptographic/Compression Algorithms

Κρυπτογραφικοί/Αλγόριθμοι Συμπίεσης

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Αναγνώριση Αλγορίθμων

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

Συναρτήσεις API

CryptDeriveKey

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

Ελέγξτε εδώ τον πίνακα των πιθανών αλγορίθμων και των αντιστοιχισμένων τιμών τους: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

RtlCompressBuffer/RtlDecompressBuffer

Συμπιέζει και αποσυμπιέζει έναν δοσμένο πίνακα δεδομένων.

CryptAcquireContext

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

CryptCreateHash

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

Ελέγξτε εδώ τον πίνακα των πιθανών αλγορίθμων και των αντιστοιχισμένων τιμών τους: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

Σταθερές κώδικα

Μερικές φορές είναι πολύ εύκολο να αναγνωρίσετε έναν αλγόριθμο χάρη στο γεγονός ότι χρειάζεται να χρησιμοποιήσει μια ειδική και μοναδική τιμή.

Εά

RSA (Ασύμμετρη Κρυπτογραφία)

Χαρακτηριστικά

  • Πιο πολύπλοκο από τους συμμετρικούς αλγορίθμους

  • Δεν υπάρχουν σταθερές! (η προσαρμογή προσαρμοσμένων υλοποιήσεων είναι δύσκολη)

  • Ο KANAL (ένας κρυπτοαναλυτής) αποτυγχάνει να εμφανίσει υποδείξεις για το RSA καθώς βασίζεται σε σταθερές.

Αναγνώριση με συγκρίσεις

  • Στη γραμμή 11 (αριστερά) υπάρχει το +7) >> 3 που είναι το ίδιο με τη γραμμή 35 (δεξιά): +7) / 8

  • Η γραμμή 12 (αριστερά) ελέγχει αν modulus_len < 0x040 και στη γραμμή 36 (δεξιά) ελέγχει αν inputLen+11 > modulusLen

MD5 & SHA (κατακερματισμός)

Χαρακτηριστικά

  • 3 συναρτήσεις: Init, Update, Final

  • Παρόμοιες συναρτήσεις αρχικοποίησης

Αναγνώριση

Init

Μπορείτε να αναγνωρίσετε και τα δύο ελέγχοντας τις σταθερές. Σημειώστε ότι η sha_init έχει 1 σταθερά που η MD5 δεν έχει:

Μετασχηματισμός MD5

Σημειώστε τη χρήση περισσότερων σταθερών

CRC (κατακερματισμός)

  • Μικρότερο και πιο αποδοτικό καθώς η λειτουργία του είναι να εντοπίζει ατύχημα αλλαγές στα δεδομένα

  • Χρησιμοποιεί πίνακες αναζήτησης (ώστε να μπορείτε να αναγνωρίσετε σταθερές)

Αναγνώριση

Ελέγξτε τις σταθερές του πίνακα αναζήτησης:

Ένας αλγόριθμος κατακερματισμού CRC φαίνεται όπως εξής:

APLib (Συμπίεση)

Χαρακτηριστικά

  • Δεν υπάρχουν αναγνωρίσιμες σταθερές

  • Μπορείτε να δοκιμάσετε να γράψετε τον αλγόριθμο σε Python και να αναζητήσετε παρόμοια πράγματα στο διαδίκτυο

Αναγνώριση

Το γράφημα είναι αρκετά μεγάλο:

Ελέγξτε 3 συγκρίσεις για να το αναγνωρίσετε:

Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated