News

News

Πέμπτη
Σεπτέμβριος, 28

Πολεμικά Παίγνια: OTW Krypton #2

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

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

Πηγή: TheArtOfAdd.com

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

Πηγή: OverTheWire.org
Πηγή: OverTheWire.org

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


Krypton Level 1 → Level 2

Πληροφορίες Επιπέδου

Το ROT13 είναι απλός αλγόριθμος κρυπτογράφησης αντικατάστασης.

Οι αλγόριθμοι κρυπτογράφησης με αντικατάσταση είναι απλώς μία ανατοποθέτηση. Σε αυτό το παράδειγμα ενός αλγόριθμου κρυπτογράφησης αντικατάστασης, θα εξερευνήσουμε έναν ‘μονοαλφαβητικό’ αλγόριθμο κρυπτογράφησης. Μονοαλφαβητικός σημαίνει, κυριολεκτικά, “ένα αλφάβητο” και θα δείτε γιατί.

Αυτό το επίπεδο περιέχει τη παλαιά μορφή ενός αλγόριθμου κρυπτογράφησης που ονομάζεται ‘Κώδικας του Καίσαρα’. Ο Κώδικας του Καίσαρα μετακινεί το αλφάβητο κατά ένα συγκεκριμένο αριθμό. Για παράδειγμα:


κείμενο:       a b c d e f g h i j k ...
κρυπτογράφημα: G H I J K L M N O P Q ...

Σε αυτό το παράδειγμα, το γράμμα ‘a’ από το κείμενο αντικαταστάθηκε από το ‘G’ στο κρυπτογράφημα έτσι, για παράδειγμα, το κείμενο ‘bad’ μετατρέπεται σε ‘HGJ’ στο κρυπτογράφημα.

Ο κωδικός για το επίπεδο 3 είναι στο αρχείο krypton3. Είναι ένα κρυπτογράφημα με ομάδες 5 γραμμάτων. Είναι κρυπτογραφημένο με τον Κώδικα του Καίσαρα. Χωρίς άλλες πληροφορίες, αυτό το κρυπτογράφημα ίσως να ήταν δύσκολο να σπάσει. Δεν έχετε άμεση πρόσβαση στο κλειδί κρυπτογράφησης, ωστόσο έχετε πρόσβαση σε ένα πρόγραμμα που κρυπτογραφεί ότι θελήσετε να του δώσετε με το κλειδί. Αν σκέφτεστε λογικά, αυτό είναι απόλυτα εύκολο.

Μία προσπάθεια μπορεί να το λύσει!

Απολαύστε το.

Επιπρόσθετες Πληροφορίες:
Το πρόγραμμα encrypt θα ψάξει το αρχείο με το κλειδί στο κατάλογο όπου βρίσκεστε. Επομένως, ίσως να είναι καλύτερο να δημιουργήσετε ένα κατάλογο εργασίας στο /tmp και εκεί μία συντόμευση προς το αρχείο με το κλειδί. Καθώς το πρόγραμμα encrypt τρέχει ως χρήστης krypton3, ίσως να χρειαστεί να δώσετε πρόσβαση στο χρήστη krypton3 στο κατάλογο όπου βρίσκεται.

Εδώ είναι ένα παράδειγμα:


krypton2@melinda:~$ mktemp -d
/tmp/tmp.Wf2OnCpCDQ
krypton2@melinda:~$ cd /tmp/tmp.Wf2OnCpCDQ
krypton2@melinda:/tmp/tmp.Wf2OnCpCDQ$ ln -s /krypton/krypton2/keyfile.dat
krypton2@melinda:/tmp/tmp.Wf2OnCpCDQ$ ls
keyfile.dat
krypton2@melinda:/tmp/tmp.Wf2OnCpCDQ$ chmod 777 .
krypton2@melinda:/tmp/tmp.Wf2OnCpCDQ$ /krypton/krypton2/encrypt /etc/issue
krypton2@melinda:/tmp/tmp.Wf2OnCpCDQ$ ls
ciphertext  keyfile.dat

Πλέον έχουμε όλες τις πληροφορίες που ίσως χρειαστούμε για να προχωρήσουμε στη λύση αυτού του επιπέδου. Με το κωδικό που αποκτήσαμε στο προηγούμενο επίπεδο και με όνομα χρήστη krypton2 συνδεόμαστε μέσω SSH (όπως κάναμε και στο προηγούμενο επίπεδο) και έχουμε πρόσβαση στο παιχνίδι. Πρώτον, θα μεταβούμε στο κατάλογο του επιπέδου 2 και θα δούμε τι υπάρχει εκεί μέσα με τις εντολές cd και ls.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Το πρώτο αρχείο, το αρχείο README, περιέχει τη περιγραφή που διαβάσαμε και στην ιστοσελίδα του παιχνιδιού. Στη συνέχεια, το αρχείο krypton3 έχει το κείμενο που θα πρέπει να αποκρυπτογραφήσουμε, το αρχείο keydata.dat είναι το κλειδί κρυπτογράφησης στο οποίο όμως δεν έχουμε πρόσβαση (δείτε παρακάτω το μήνυμα «Permission denied», δηλαδή άρνηση πρόσβασης) και τέλος, το πρόγραμμα encrypt που αν το εκτελέσουμε πατώντας ./encrypt χωρίς κάποια παράμετρο μας ενημερώνει ότι δέχεται ως παράμετρο ένα αρχείο που περιέχει κάποιο κείμενο προς κρυπτογράφηση.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Υπάρχουν πολλοί τρόποι προσέγγισης για να σπάσουμε αυτό τον αλγόριθμο κρυπτογράφησης και να αποκρυπτογραφήσουμε το κρυπτογράφημα του προβλήματος. Πρακτικά, ο Κώδικας του Καίσαρα (που πήρε το όνομα του από τον Ιούλιο Καίσαρα ο οποίος με αυτό το τρόπο κρυπτογραφούσε την αλληλογραφία του όπως γνωρίζουμε από το έργο «Η ζωή του Ιούλιου Καίσαρα» του Γάιου Σουητώνιου Τράγκυλλου) είναι ότι ακριβώς είδαμε στο προηγούμενο επίπεδο με το ROT13 με τη διαφορά ότι η μετάθεση μπορεί να είναι για οποιαδήποτε τιμή από 1 μέχρι και 26 (καθώς το Λατινικό αλφάβητο έχει 26 γράμματα). Αν το δούμε από τη μαθηματική πλευρά, η κρυπτογράφηση περιγράφεται από τη παρακάτω αναπαράσταση.

Κ(x) = (x + n) mod 26

Όπου το x είναι ένα γράμμα και το n είναι ο αριθμός κατά τον οποίο θα το αυξήσουμε. Ο λόγος που κάνουμε τη πράξη modulo είναι για να μη βγούμε εκτός των ορίων των 26 γραμμάτων του Λατινικού αλφαβήτου. Προφανώς, αν κάναμε το ίδιο για το Ελληνικό αλφάβητο η τιμή θα ήταν 24. Με αντίστοιχο τρόπο η αποκρυπτογράφηση του μπορεί να περιγραφεί όπως βλέπετε εδώ.

Α(x) = (x – n) mod 26

Δηλαδή, αντί να αυξάνουμε τα βήματα μας με τη πρόσθεση τα μειώνουμε για να βρεθούμε στην αρχική θέση. Αν θυμάστε τον αλγόριθμο ROT13 που αναλύσαμε στο προηγούμενο επίπεδο ήταν ακριβώς ο ίδιος με τη μόνη διαφορά ότι το n ήταν γνωστό. Στον αλγόριθμο ROT13 το n είχε σταθερή τιμή, ήταν πάντα 13. Ο τρόπος με τον οποίο ο Ι. Καίσαρας έκανε την αντικατάσταση ήταν με ένα εργαλείο-δίσκο όπου είχε δύο ομόκεντρους κύκλους με το Λατινικό αλφάβητο τυπωμένο. Μετακινώντας τον εσωτερικό κατά n θέσεις είτε μπροστά (κρυπτογράφηση) είτε προς τα πίσω (αποκρυπτογράφηση) υλοποιούσε αυτό τον αλγόριθμο. Το μόνο που έπρεπε να γνωρίζει ήταν το κλειδί (ο αριθμός n) με τον οποίο έγινε η κρυπτογράφηση.

Πηγή: CryptoMuseum.com
Πηγή: CryptoMuseum.com

Βέβαια, η αλήθεια είναι ότι το εύρος πιθανών τιμών του κλειδιού είναι αρκετά μικρό. Είναι μόλις 26 πιθανά κλειδιά για το Λατινικό αλφάβητο και 24 για το Ελληνικό. Ακόμα και με ένα χαρτί και μολύβι μπορεί κάποιος να ξοδέψει μερικά λεπτά και να δοκιμάσει όλους τους πιθανούς συνδυασμούς, δηλαδή να μειώσει όλα τα γράμματα κατά μία θέση, δύο, τρεις, κτλ. έως το 26 για το Λατινικό αλφάβητο. Ένα από αυτά θα είναι σίγουρα η λύση. Αυτή τη τεχνική κρυπτανάλυσης, δηλαδή η δοκιμή πολλών διαφορετικών εισόδων μέχρι να πετύχουμε το επιθυμητό αποτέλεσμα ονομάζεται «brute-force attack» (επίθεση ωμής δύναμης) καθώς δεν κάνουμε κάποια λογική ανάλυση, απλώς κάνουμε μία επίθεση σε ολόκληρο το πιθανό εύρος κλειδιών.

Πηγή: DigitalHungary.hu
Πηγή: DigitalHungary.hu

Υπάρχουν αρκετοί πιθανοί τρόποι επίλυσης αυτού του επιπέδου. Ενδεικτικά, κάποιοι από αυτούς είναι οι εξής:

  • Να κάνουμε brute-force επίθεση σε όλα τα πιθανά κλειδιά με χαρτί και μολύβι ή κάποιο απλό πρόγραμμα
  • Να δώσουμε στο πρόγραμμα encrypt ολόκληρο το Λατινικό αλφάβητο και άρα θα μας επιστρέψει ακριβώς την αντιστοιχία γραμμάτων
  • Να δίνουμε λέξεις από ένα λεξικό στο πρόγραμμα encrypt και να συγκρίνουμε πoιες από αυτές είναι ίδιες με το κρυπτογράφημα
  • Να προσπαθήσουμε να εκμεταλλευτούμε κάποια αδυναμία στο πρόγραμμα encrypt ώστε να μπορέσουμε να δούμε τα περιεχόμενα του αρχείου keydata.dat που έχει το κλειδί

Εμείς θα δούμε τώρα τις δύο πρώτες. Ας ξεκινήσουμε με τη πρώτη, την ανάκτηση του κλειδιού με επίθεση brute-force. Ασφαλώς, αν θέλουμε μπορούμε να κάνουμε ένα πρόγραμμα που θα δοκιμάσει τα 26 πιθανά κλειδιά βελτιώνοντας τα προγράμματα που γράψαμε στο προηγούμενο επίπεδο για την αποκρυπτογράφηση του ROT13. Αν δε θέλουμε να μπούμε σε αυτό το κόπο, μπορούμε να ψάξουμε σε κάποια μηχανή αναζήτησης για ιστοσελίδες που αποκρυπτογραφούν το Κώδικά του Καίσαρα. Μία από αυτές είναι και η dcode.fr που βλέπετε στη συνέχεια.

Πηγή: Προσωπικό αρχείο (σελίδα dcode.fr)
Πηγή: Προσωπικό αρχείο (σελίδα dcode.fr)

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

Πηγή: Agungfirdausi.my.id
Πηγή: Agungfirdausi.my.id

Στη περιγραφή του προβλήματος οι δημιουργοί του μας έδωσαν μία έξυπνη συμβουλή. Αν θυμάστε, έγραφε ότι χρησιμοποιώντας το πρόγραμμα που μας προσφέρουν, το πρόγραμμα encrypt, μπορούμε να βρούμε τη λύση με μία μόλις προσπάθεια. Αν το σκεφτούμε λίγο είναι πράγματι αλήθεια. Αν δώσουμε στο πρόγραμμα ολόκληρο το Λατινικό αλφάβητο θα μας επιστρέψει ολόκληρο το Λατινικό αλφάβητο κρυπτογραφημένο. Άρα θα έχουμε ένα προς ένα αντιστοιχία για όλα τα γράμματα. Γνωρίζοντας αυτό η αποκρυπτογράφηση του μηνύματος θα είναι θέμα δευτερόλεπτων. Ας ξεκινήσουμε με το τρόπο που διαβάσαμε στη περιγραφή καθώς δεν έχουμε δικαίωμα να δημιουργήσουμε νέα αρχεία μέσα στο κατάλογο-φάκελο /krypton/krypton2.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Αρχικά χρησιμοποιήσαμε την εντολή mktemp (Make Temporary, δημιουργία προσωρινού) με τη παράμετρο -d (Directory, κατάλογο) η οποία μας δημιούργησε ένα προσωρινό κατάλογο εργασίας, το κατάλογο /tmp/tmp.FCbNvJwj6y. Μεταβαίνουμε μέσα σε αυτό το κατάλογο με την εντολή cd που ήδη γνωρίζουμε. Στη συνέχεια εκτελούμε τις παρακάτω εντολές.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Για να λειτουργήσει το πρόγραμμα encrypt χρειάζεται το κλειδί που βρίσκεται μέσα στο αρχείο /krypton/krypton2/keyfile.dat αλλά εμείς δεν έχουμε πρόσβαση σε αυτό. Άρα, όπως μας έγραφαν και οδηγίες θα χρησιμοποιήσουμε την εντολή ln (Link, σύνδεσμος) με τη παράμετρο -s (Symbolic, συμβολικός) για τη δημιουργία μία συντόμευσης όπου θα οδηγεί στο αρχείο keyfile.dat. Όπως βλέπετε με την εντολή ls στη συνέχεια, πράγματι η συντόμευση μας δείχνει στο αρχείο keyfile.dat. Και προχωράμε με τις παρακάτω εντολές.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Με τη πρώτη μας εντολή επιτρέπουμε στο πρόγραμμα encrypt να δουλέψει στο φάκελο μας, για να το πετύχουμε αυτό δίνουμε στην εντολή chmod (Change mode, αλλαγή κατάστασης) τη παράμετρο a+rwx (all + read, write, execute, δηλαδή, προς όλους δικαίωμα ανάγνωσης, εγγραφής και εκτέλεσης). Έπειτα, με την εντολή echo (αντήχηση) αποθηκεύουμε το ABCDEFGHIJKLMNOPQRSTUVWXYZ, δηλαδή ολόκληρο το Λατινικό αλφάβητο, μέσα στο αρχείο plaintext_latiniko.txt. Επιβεβαιώνουμε το αποτέλεσμα με την εντολή cat που διαβάζει τα περιεχόμενα αυτού του αρχείου. Και φτάσαμε έτσι στο τελευταίο στάδιο όπου εκτελούμε τα ακόλουθα.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Εκτελούμε το πρόγραμμα /krypton/krypton2/encrypt και του δίνουμε ως παράμετρο το αρχείο μας που περιέχει το Λατινικό αλφάβητο. Μετά την εκτέλεση του προγράμματος encrypt χρησιμοποιούμε την εντολή ls όπου βλέπουμε ότι ένα νέο αρχείο έχει δημιουργηθεί στο προσωρινό κατάλογο μας, το αρχείο ciphertext. Κάνοντας χρήση της εντολής cat βλέπουμε τι περιέχει αυτό το αρχείο και έχουμε πλέον το κρυπτογράφημα μας για ολόκληρο το αλφάβητο. Προτού κλείσουμε τη σύνδεση μας με τον εξυπηρετητή του παιχνιδιού διαγράφουμε τον προσωρινό μας φάκελο με τα περιεχόμενα του όπως βλέπετε στη συνέχεια.

Πηγή: Προσωπικό αρχείο
Πηγή: Προσωπικό αρχείο

Με την εντολή «cd ../» μεταβαίνουμε στο προηγούμενο κατάλογο και με την εντολή rm (Remove, διαγραφή) με τις παραμέτρους -rf (Recursive & force, επαναλαμβανόμενα και χωρίς επιβεβαίωση) διαγράφουμε τον κατάλογο μας για να αφήσουμε καθαρό το περιβάλλον εργασίας. Αν δούμε τώρα το Λατινικό αλφάβητο και το κρυπτογράφημα το ένα δίπλα από το άλλο έχουμε το παρακάτω αποτέλεσμα.


Λατ. αλφάβητο: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Κρυπτογράφημα: MNOPQRSTUVWXYZABCDEFGHIJKL

Το οποίο επιβεβαιώνει και ότι είδαμε από την επίθεση brute-force που κάναμε νωρίτερα, ότι έχει γίνει αντικατάσταση με κλειδί κρυπτογράφησης 12. Κάνοντας την αντικατάσταση γράμμα προς γράμμα βρίσκουμε εύκολα έτσι το αποκρυπτογραφημένο κείμενο που δεν είναι άλλο απ’ότι είδαμε και στην επίθεση με τη τεχνική brute-force. Σίγουρα ένα πολύ ενδιαφέρον επίπεδο που μας έμαθε πολλά πράγματα για τον Κώδικα του Καίσαρα, το πως λειτουργεί αλλά και πόσο εύκολα μπορεί να σπάσει.

το βρήκαμε εδώ

Krypton
#Πολεμικά #Παίγνια #OTW #Krypton

Latest articles

Find us on

Latest articles

Related articles

Προσβολή στόχων με έμμεσα πυρά (αποστολή βολής) – commandos.gr...

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

Σχολή Υποβρύχιων Καταστροφών – commandos.gr – Ειδικές Δυνάμεις

των Περικλή Ζορζοβίλη και Δημήτρη Μανακανάτα, ΠΕΡΙΠΟΛΟΣ Ανοιξη 2006 Από την εποχή της συγκρότησής της, το 1953 μέχρι...

Σχολείο Υποβρυχίων Καταστροφών (ΣΥΚ) – Θέματα για τις Ελληνικές...

Η Ελλάδα εισήλθε στη συμμαχία ΝΑΤΟ στις 18 Φεβρουαρίου 1952 και σύντομα ξεκίνησαν οι συνεκπαιδεύσεις και ανταλλαγή...

Πυρομαχικό SMArt 155 (DM702) – commandos.gr – Ειδικές Δυνάμεις

To SMArt 155 είναι ένα έξυπνο, αυτόνομο και αποτελεσματικό πυρομαχικό Πυροβολικού τύπου «fire and forget», το...

Σωστικά μέσα ιπταμένων – commandos.gr – Ειδικές Δυνάμεις

Ατομικό Σωσίβιο Ιπταμένου LPU – 10/P Φοριέται κάτω από το life jacket, με τους ασκούς στην εξωτε­ρική μεριά...

Στρατιωτική Ελεύθερη Πτώση – commandos.gr – Ειδικές Δυνάμεις

Οι επιχειρήσεις Στρατιωτικής Ελεύθερης Πτώσης χαρακτηρί­ζονται γενικά από πτήσεις πάνω ή δίπλα από τον Αντικειμενικό Σκοπό (ΑΝΣΚ)...