ΑρχικήsecurityΠώς μπορούν να χρησιμοποιηθούν Shadow SUIDs για εκμετάλλευση των συστημάτων Linux:...

Πώς μπορούν να χρησιμοποιηθούν Shadow SUIDs για εκμετάλλευση των συστημάτων Linux: Μέρος 1ο

LinuxΣτις περισσότερες περιπτώσεις, η απόκτηση προνομίων root στο Linux, δεν είναι κάτι εύκολο να γίνει. Οι ενημερώσεις ασφαλείας δημοσιεύονται συνήθως σε καθημερινή βάση και όταν αποκαλυφθεί ένα νέο zero-day ή εκμετάλλευση στο περιβάλλον του Linux, στις περισσότερες περιπτώσεις θα ενημερωθεί εντός ωρών. Επομένως, όταν ένας επιτιθέμενος αποκτήσει αυξημένα προνόμια σε ένα μηχάνημα, το πρώτο πράγμα που πιθανότατα θα ήθελε να κάνει είναι να διατηρήσει αυτά τα προνόμια. Μία από τις πιο κοινές μεθόδους των επιτιθέμενων για το σκοπό αυτό, είναι να χρησιμοποιήσουν το μηχανισμό suid.

Τι σημαίνει SUID;

Όπως θα γνωρίζουν πολλοί αναγνώστες, το Linux έχει τρία βασικά δικαιώματα: να διαβάζει, να γράφει και να εκτελεί. Αλλά πέρα ​​από αυτό, το Linux έχει και κάποιες άλλες άδειες, που χρησιμοποιούνται σε συγκεκριμένες περιπτώσεις. Μεταξύ αυτών μπορείτε να βρείτε τα setuid και setgid, τα οποία προορίζονται για περιπτώσεις που έχετε ένα πρόγραμμα το οποίο πρέπει να λειτουργεί ως συγκεκριμένος χρήστης ή ομάδα (συνήθως root), αλλά δεν θέλετε να δώσετε αυξημένα δικαιώματα σε κάθε χρήστη του προγράμματος. Όταν εκτελείται ένα πρόγραμμα με setuid / setgid bit, το πρόγραμμα μπορεί να ζητήσει από το λειτουργικό σύστημα να αποκτήσει τα δικαιώματα του ιδιοκτήτη (ή της ομάδας) της διαδικασίας.

Πάρτε για παράδειγμα την εντολή ping. Για να στείλει ένα πακέτο ICMP, το ping πρέπει να χρησιμοποιήσει ένα raw socket, το οποίο στο Linux απαιτεί δικαιώματα root. Ωστόσο, το ping είναι μια βασική εντολή με συχνή χρήση και δεν μπορούμε να επιτρέψουμε σε κάθε “ping-user” να έχει αυξημένα προνόμια. Ποια είναι λοιπόν η λύση; Τα δικαιώματα SUID. Όταν εκτελείται το ping, τρέχει πραγματικά ως root, ανεξάρτητα από το ποιος χρήστης το εκτελεί.

Ένας εισβολέας, θα ήταν πολύ εύκολο όταν αποκτήσει αυξημένα προνόμια, να γράψει ένα απλό πρόγραμμα που δεν κάνει τίποτα άλλο από το να ανοίξει ένα shell και να αποκτήσει δικαιώματα suid. Αφού το κάνει αυτό, μπορεί να επιστρέψει στο μηχάνημα από ένα low-privileged webshell ή οποιοδήποτε άλλο low-privileged back door και να χρησιμοποιήσει το dropped suid-shell για να αποκτήσει προνόμια root.

Ευτυχώς, αυτό το suid shell είναι εξαιρετικά εύκολο να εντοπιστεί. Λόγω του κινδύνου να υπάρξουν τέτοια εκτελέσιμα στο μηχάνημα, οι περισσότερες διανομές Linux έρχονται με πολύ λίγα suid binaries. Το Sysadmins μπορεί να ψάχνει τακτικά για τα suid binaries στο μηχάνημα και μπορεί εύκολα να ειδοποιηθεί για τυχόν νέες δημιουργίες, ανεπιθύμητων suid binaries. Μια κοινή λύση για αυτό ως εισβολέας, θα ήταν να αντικαταστήσει απλώς το νόμιμο suid binary με ένα κακόβουλο. Ωστόσο και πάλι, αυτό συχνά παρακολουθείται στενά και υπάρχουν πολλοί τρόποι για να βεβαιωθείτε ότι τα αρχεία suid δεν έχουν αλλάξει. Είναι ακόμη δυνατή η χρήση των ενσωματωμένων εντολών dpkg -verify ή rpm -Va για το σκοπό αυτό.

Τι είναι το Shadow SUID;

Το Shadow SUID είναι το ίδιο με ένα κανονικό αρχείο suid, μόνο που δεν έχει το setuid bit, γεγονός που καθιστά πολύ δύσκολο να βρεθεί ή να παρατηρηθεί.

Ο τρόπος λειτουργίας του Shadow SUID είναι να αναλαμβάνει το setuid bit από ένα υπάρχον setuid binary, χρησιμοποιώντας τον μηχανισμό binfmt_misc, ο οποίος είναι μέρος του πυρήνα του Linux.

Η ανάληψη αυτή ενεργοποιείται όταν εκτελείται μια στοχευμένη εντολή setuid binary η οποία έχει οριστεί για το σκοπό αυτό πριν από την εκτέλεση. Το σημαντικό πράγμα που πρέπει να καταλάβετε είναι ότι δεν χρειάζεται να τροποποιήσετε το αρχικό αρχείο suid για να το στοχεύσετε. Για να φτιάξετε ένα Shadow suid, το μόνο που χρειάζεστε είναι τουλάχιστον ένα suid binary στο μηχάνημα.

Είμαι ευάλωτος;

Δεδομένου ότι αυτό είναι μέρος του Linux Kernel από το 2004, η πιθανότητα είναι ότι είστε. Ωστόσο, μπορείτε να ελέγξετε αν ο πυρήνας σας ήρθε με τη μονάδα binfmt, εκτελώντας τον ακόλουθο κώδικα στη γραμμή εντολών:

$ grep ‘BINFMT_MISC’ / boot / config-‘uname -r`

Έχω επηρεαστεί;

Αρχικά ελέγξτε αν το σύστημα αρχείων binfmt_misc είναι τοποθετημένο χρησιμοποιώντας:

$ mount | grep binfmt_misc

Στη συνέχεια, ελέγξτε τη σχετική διαδρομή

$ ls -la / proc / sys / fs / binfmt_misc

Αυτό θα έχει ως αποτέλεσμα κάτι τέτοιο:

Οποιοσδήποτε άλλος φάκελος εκτός από “register” και “status” θα πρέπει να επιθεωρείται προσεκτικά.

Εάν μοιάζει περισσότερο με αυτό:

Εκτυπώστε το πρόσθετο αρχείο και δείτε εάν υπάρχει “C” στο πεδίο “flags” όπως φαίνεται παρακάτω:

Για να καταργήσετε τον κανόνα binfmt_misc, απλά γράψτε το “-1” στο αρχείο.

Λάβετε υπόψη ότι μπορεί να είναι και ένα νόμιμο αρχείο, επομένως αν δεν είστε βέβαιοι να ζητήσετε περαιτέρω συμβουλές πριν προχωρήσετε.

Πώς μπορώ να προστατευτώ;

Για endpoints χωρίς προστασία SentinelOne, δεν υπάρχει εύκολη απάντηση, αφού είναι δυνατόν να παρακάμπτεται οποιοδήποτε βήμα αποκατάστασης. Ωστόσο, η καλύτερη απλή λύση που, πάλι, πρέπει να γίνει με προσοχή, θα ήταν να διαγράψετε το σχετικό αρχείο .ko:

# modinfo -n binfmt_misc

/lib/modules/4.10.0-42-generic/kernel/fs/binfmt_misc.ko

# rm $ (modinfo -n binfmt_misc)

Λάβετε υπόψη ότι πιθανώς πρέπει να διαγράψετε το .ko για όλες τις εγκατεστημένες εκδόσεις του πυρήνα.

Πώς μπορεί να με βοηθήσει το SentinelOne;

Με το νέο Linux agent (v2.6 SP2), είστε πλήρως προστατευμένοι από Shadow SUIDs. Το agent παρακολουθεί συνεχώς οποιαδήποτε εκτέλεση της διαδικασίας και όταν ανιχνευτεί ένα Shadow SUID, η διαδικασία είναι αποκλεισμένη, έτσι αποτρέπεται η ζημιά. Επιπλέον, δεδομένου ότι γνωρίζει ακριβώς πώς λειτουργεί το λειτουργικό σύστημα, οι χρήστες είναι σε θέση να δουν την ιστορία επίθεσης πίσω από την εκτέλεση και να καταλάβουν πώς προέκυψε.

Absenta Mia
Absenta Miahttps://www.secnews.gr
Being your self, in a world that constantly tries to change you, is your greater achievement

Εγγραφή στο Newsletter

* indicates required

FOLLOW US

LIVE NEWS