Integrity Levels
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Στα Windows Vista και σε μεταγενέστερες εκδόσεις, όλα τα προστατευμένα αντικείμενα συνοδεύονται από μια ετικέτα επίπεδου ακεραιότητας. Αυτή η ρύθμιση αναθέτει κυρίως ένα "μεσαίο" επίπεδο ακεραιότητας σε αρχεία και κλειδιά μητρώου, εκτός από ορισμένους φακέλους και αρχεία στα οποία μπορεί να γράψει ο Internet Explorer 7 σε χαμηλό επίπεδο ακεραιότητας. Η προεπιλεγμένη συμπεριφορά είναι οι διαδικασίες που ξεκινούν από τυπικούς χρήστες να έχουν μεσαίο επίπεδο ακεραιότητας, ενώ οι υπηρεσίες λειτουργούν συνήθως σε επίπεδο ακεραιότητας συστήματος. Μια ετικέτα υψηλής ακεραιότητας προστατεύει τον ριζικό κατάλογο.
Ένας βασικός κανόνας είναι ότι τα αντικείμενα δεν μπορούν να τροποποιηθούν από διαδικασίες με χαμηλότερο επίπεδο ακεραιότητας από το επίπεδο του αντικειμένου. Τα επίπεδα ακεραιότητας είναι:
Untrusted: Αυτό το επίπεδο είναι για διαδικασίες με ανώνυμες συνδέσεις. %%%Example: Chrome%%%
Low: Κυρίως για διαδικτυακές αλληλεπιδράσεις, ειδικά στη Λειτουργία Προστασίας του Internet Explorer, επηρεάζοντας τα σχετικά αρχεία και διαδικασίες, και ορισμένους φακέλους όπως ο Φάκελος Προσωρινών Διαδικτυακών Αρχείων. Οι διαδικασίες χαμηλής ακεραιότητας αντιμετωπίζουν σημαντικούς περιορισμούς, συμπεριλαμβανομένης της απουσίας πρόσβασης εγγραφής στο μητρώο και περιορισμένης πρόσβασης εγγραφής στο προφίλ χρήστη.
Medium: Το προεπιλεγμένο επίπεδο για τις περισσότερες δραστηριότητες, που ανατίθεται σε τυπικούς χρήστες και αντικείμενα χωρίς συγκεκριμένα επίπεδα ακεραιότητας. Ακόμη και τα μέλη της ομάδας Διαχειριστών λειτουργούν σε αυτό το επίπεδο από προεπιλογή.
High: Διατηρείται για διαχειριστές, επιτρέποντάς τους να τροποποιούν αντικείμενα σε χαμηλότερα επίπεδα ακεραιότητας, συμπεριλαμβανομένων εκείνων στο υψηλό επίπεδο.
System: Το υψηλότερο λειτουργικό επίπεδο για τον πυρήνα των Windows και τις βασικές υπηρεσίες, εκτός εμβέλειας ακόμη και για διαχειριστές, διασφαλίζοντας την προστασία ζωτικών λειτουργιών του συστήματος.
Installer: Ένα μοναδικό επίπεδο που βρίσκεται πάνω από όλα τα άλλα, επιτρέποντας στα αντικείμενα σε αυτό το επίπεδο να απεγκαθιστούν οποιοδήποτε άλλο αντικείμενο.
Μπορείτε να αποκτήσετε το επίπεδο ακεραιότητας μιας διαδικασίας χρησιμοποιώντας το Process Explorer από το Sysinternals, αποκτώντας πρόσβαση στις ιδιότητες της διαδικασίας και βλέποντας την καρτέλα "Security":
Μπορείτε επίσης να αποκτήσετε το τρέχον επίπεδο ακεραιότητάς σας χρησιμοποιώντας whoami /groups
Ένα αντικείμενο μέσα στο σύστημα αρχείων μπορεί να χρειάζεται μια ελάχιστη απαίτηση επιπέδου ακεραιότητας και αν μια διαδικασία δεν έχει αυτή την ακεραιότητα, δεν θα μπορεί να αλληλεπιδράσει με αυτό. Για παράδειγμα, ας δημιουργήσουμε ένα κανονικό αρχείο από μια κανονική κονσόλα χρήστη και να ελέγξουμε τις άδειες:
Τώρα, ας αναθέσουμε ένα ελάχιστο επίπεδο ακεραιότητας Υψηλό στο αρχείο. Αυτό πρέπει να γίνει από μια κονσόλα που τρέχει ως διαχειριστής καθώς μια κανονική κονσόλα θα τρέχει σε επίπεδο ακεραιότητας Μεσαίο και δεν θα επιτρέπεται να αναθέσει επίπεδο ακεραιότητας Υψηλό σε ένα αντικείμενο:
Αυτό είναι το σημείο όπου τα πράγματα γίνονται ενδιαφέροντα. Μπορείτε να δείτε ότι ο χρήστης DESKTOP-IDJHTKP\user
έχει ΠΛΗΡΗ δικαιώματα πάνω στο αρχείο (στην πραγματικότητα αυτός ήταν ο χρήστης που δημιούργησε το αρχείο), ωστόσο, λόγω του ελάχιστου επιπέδου ακεραιότητας που έχει εφαρμοστεί, δεν θα μπορεί να τροποποιήσει το αρχείο πια εκτός αν εκτελείται μέσα σε ένα Υψηλό Επίπεδο Ακεραιότητας (σημειώστε ότι θα μπορεί να το διαβάσει):
Επομένως, όταν ένα αρχείο έχει ελάχιστο επίπεδο ακεραιότητας, για να το τροποποιήσετε πρέπει να εκτελείστε τουλάχιστον σε αυτό το επίπεδο ακεραιότητας.
Έκανα ένα αντίγραφο του cmd.exe
στο C:\Windows\System32\cmd-low.exe
και του έθεσα ένα επίπεδο ακεραιότητας χαμηλό από μια κονσόλα διαχειριστή:
Τώρα, όταν εκτελώ το cmd-low.exe
, θα εκτελείται υπό χαμηλό επίπεδο ακεραιότητας αντί για μέτριο:
Για τους περίεργους, αν αναθέσετε υψηλό επίπεδο ακεραιότητας σε ένα δυαδικό αρχείο (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high
), δεν θα εκτελείται αυτόματα με υψηλό επίπεδο ακεραιότητας (αν το καλέσετε από μέτριο επίπεδο ακεραιότητας --κατά προεπιλογή-- θα εκτελείται υπό μέτριο επίπεδο ακεραιότητας).
Όχι όλα τα αρχεία και οι φάκελοι έχουν ελάχιστο επίπεδο ακεραιότητας, αλλά όλες οι διαδικασίες εκτελούνται υπό ένα επίπεδο ακεραιότητας. Και παρόμοια με ό,τι συνέβη με το σύστημα αρχείων, αν μια διαδικασία θέλει να γράψει μέσα σε μια άλλη διαδικασία, πρέπει να έχει τουλάχιστον το ίδιο επίπεδο ακεραιότητας. Αυτό σημαίνει ότι μια διαδικασία με χαμηλό επίπεδο ακεραιότητας δεν μπορεί να ανοίξει ένα handle με πλήρη πρόσβαση σε μια διαδικασία με μέτριο επίπεδο ακεραιότητας.
Λόγω των περιορισμών που αναφέρθηκαν σε αυτήν και την προηγούμενη ενότητα, από άποψη ασφάλειας, είναι πάντα συνιστώμενο να εκτελείτε μια διαδικασία στο χαμηλότερο δυνατό επίπεδο ακεραιότητας.