Το προφίλ μας στο Google Plus
0

Επίδειξη stack overflow στα Windows

Στο deltaΗacker 032 ξεκινήσαμε μια σχετικά μεγάλη και εις βάθος θεωρητική εισαγωγή στο stack overflow. Είναι πολλά που έχουν γραφτεί γι’ αυτό το εξαιρετικά ενδιαφέρον φαινόμενο — και πολλά θα γραφτούν ακόμα. Πράγματι, η καθημερινότητα αποδεικνύει ότι, αν μη τι άλλο, πολλές επιτυχημένες επιθέσεις σε συστήματα ξεκινούν από την υπερχείλιση της στοίβας.

Επίδειξη stack overflow στα Windows

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

Στο άρθρο που αρχίζει από τη σελίδα 44 του τεύχους 032 προκαλέσαμε την εκτέλεση μιας συνάρτησης (Function1), η οποία ήταν τοποθετημένη μέσα στον κώδικα του προγράμματος και σε κανονικές συνθήκες δεν θα εκτελούταν ποτέ. (Δεν υπάρχει καν εντολή κλήσης της.) Και πώς όμως εκτελέστηκε; Στο σημείο που το πρόγραμμα μάς ζητούσε να πληκτρολογήσουμε οτιδήποτε, με σκοπό η είσοδος να τοποθετηθεί στη μεταβλητή τύπου array μεγέθους 10 χαρακτήρων, εμείς δώσαμε πολλούς περισσότερους από τους επιτρεπόμενους προκαλώντας, έτσι, υπερχείλιση στοίβας. Ακριβώς στο τέλος του αλφαριθμητικού εισόδου παραθέσαμε το string “\x20\x15\x40\x00”, χωρίς τα εισαγωγικά. Αν τo διαβάσουμε ανάποδα βλέπουμε ότι πρόκειται για τη διεύθυνση 0x401520, η οποία είναι το EntryPoint της Function1. (Η στοίβα είναι δομή LIFO, Last In First Out, γι’ αυτό και το διαβάζουμε ανάποδα.) Από το ίδιο άρθρο έγινε φανερό ότι σε κάποιες γλώσσες προγραμματισμού υπάρχουν εντολές που δεν είναι ασφαλείς. Συζητήσαμε, συγκεκριμένα, για την gets() της C, η οποία σε καμία περίπτωση δεν μπορεί να θεωρηθεί ως ασφαλής. Το θέμα εδώ είναι ότι οι (σχετικά) πρόσφατες εκδόσεις των Windows ενσωματώνουν μηχανισμούς προστασίας κατά του stack overflow (βλ. DEP, Data Execution Prevention). Αναρωτιέστε τι σημαίνει αυτό; Θα σας πούμε εμείς τι σημαίνει: Πολλά και διάφορα, αλλά ειδικά για την περίπτωσή μας ότι δεν είναι καθόλου εύκολο να κάνουμε μια καλή πρακτική επίδειξη του φαινομένου της υπερχείλισης στοίβας. Υπάρχει μολαταύτα τρόπος ώστε *και* στα Windows να μείνουμε *και* την επίδειξή μας να κάνουμε. Η κίνηση-κλειδί είναι να εγκαταστήσουμε στα Windows ένα πλήρες περιβάλλον που εξομοιώνει το Linux…

Διαβάστε ολόκληρο το άρθρο στο deltaHacker 034 (τεύχος Ιουλίου 2014).

Το μηνιαίο περιοδικό deltaHacker είναι αποκλειστικά ψηφιακό (μορφή PDF). Μάθετε για τις απίστευτες τιμές των συνδρομών αλλά και για τα εκτενή κι αναλυτικά video tutorials (deltaCast Episodes), και κάντε τώρα την παραγγελία σας από τη σχετική φόρμα. Προσοχή: Για την πλήρη πρόσβαση στο deltaCast απαιτείται ενεργή συνδρομή στο περιοδικό.

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων