Skip to main content

Τι είναι ένας κέλυφος;

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

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

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

Οι διαδικασίες που εκτελούνται σε ένα απομακρυσμένο μηχάνημα μπορούν να αξιοποιηθούν χρησιμοποιώντας πρότυπα πρωτόκολλα δικτύου για να επικοινωνούν με τον υπολογιστή -στόχο.Το Connect-Back ShellCode καθοδηγεί το μηχάνημα προορισμού να ξεκινήσει μια σύνδεση με τον υπολογιστή Intruders.Εάν ο εισβολέας ξεκινήσει τη σύνδεση, ο κώδικας ονομάζεται Bindshell, καθώς προσπαθεί να πάρει τον έλεγχο μιας σύνδεσης δικτύου που ονομάζεται θύρα στο απομακρυσμένο μηχάνημα.Η μέθοδος Connect-Back χρησιμοποιείται ευρύτερα, καθώς τα τείχη προστασίας σπάνια απαγορεύουν τις εξερχόμενες συνδέσεις.