hacktricks/windows-hardening/windows-local-privilege-escalation/integrity-levels.md

13 KiB
Raw Blame History

Επίπεδα Ακεραιότητας

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

WhiteIntel

WhiteIntel είναι μια μηχανή αναζήτησης που τροφοδοτείται από το dark web και προσφέρει δωρεάν λειτουργίες για να ελέγξετε αν μια εταιρεία ή οι πελάτες της έχουν διαρρεύσει από κλέφτες κακόβουλων λογισμικών.

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

Μπορείτε να ελέγξετε την ιστοσελίδα τους και να δοκιμάσετε τη μηχανή τους δωρεάν στο:

{% embed url="https://whiteintel.io" %}


Επίπεδα Ακεραιότητας

Στα Windows Vista και σε μεταγενέστερες εκδόσεις, όλα τα προστατευμένα αντικείμενα έχουν μια ετικέτα επιπέδου ακεραιότητας. Αυτή η ρύθμιση καθορίζει κυρίως ένα επίπεδο "μεσαίας" ακεραιότητας για αρχεία και κλειδιά μητρώου, εκτός από ορισμένους φακέλους και αρχεία στα οποία ο Internet Explorer 7 μπορεί να γράψει σε χαμηλό επίπεδο ακεραιότητας. Η προεπιλεγμένη συμπεριφορά είναι για διεργασίες που ξεκινούν από τυπικούς χρήστες να έχουν ένα επίπεδο μεσαίας ακεραιότητας, ενώ οι υπηρεσίες λειτουργούν τυπικά σε επίπεδο ακεραιότητας συστήματος. Ένα ετικέτα υψηλής ακεραιότητας προστατεύει τον ριζικό κατάλογο.

Ένα βασικό κανόνας είναι ότι τα αντικείμενα δεν μπορούν να τροποποιηθούν από διεργασίες με χαμηλότερο επίπεδο ακεραιότητας από το επίπεδο του αντικειμένου. Τα επίπεδα ακεραιότητας είναι:

  • Μη έμπιστο: Αυτό το επίπεδο είναι για διεργασίες με ανώνυμες συνδέσεις. %%%Παράδειγμα: Chrome%%%
  • Χαμηλό: Κυρίως για διαδικτυακές αλληλεπιδράσεις, ειδικά στην Προστατευμένη Λειτουργία του Internet Explorer, επηρεάζοντας συνδεδεμένα αρχεία και διεργασίες, καθώς και ορισμένους φακέλους όπως ο Προσωρινός Φάκελος Internet. Οι διεργασίες χαμηλής ακεραιότητας αντιμετωπίζουν σημαντικούς περιορισμούς, συμπεριλαμβανομένης της έλλειψης πρόσβασης στο μητρώο και της περιορισμένης πρόσβασης στο προφίλ χρήστη.
  • Μεσαίο: Το προεπιλεγμένο επίπεδο για τις περισσότερες δραστηριότητες, ανατίθεται σε τυπικούς χρήστες και αντικείμενα χωρίς συγκεκριμένα επίπεδα ακεραιότητας. Ακόμα και τα μέλη της ομάδας Διαχειριστών λειτουργούν σε αυτό το επίπεδο από προεπιλογή.
  • Υψηλό: Διατηρείται για διαχειριστές, επιτρέποντάς τους να τροποποιούν αντικείμενα σε χαμηλότερα επίπεδα ακεραιότητας, συμπεριλαμβανομένων αυτών στο ίδιο το υψηλό επίπεδο.
  • Σύστημα: Το υψηλότερο επίπεδο λειτουργίας για τον πυρήνα των Windows και τις βασικές υπηρεσίες, μη προσβάσιμο ακόμα και για διαχειριστές, εξασφαλίζοντας την προστασία των ζωτικών λειτουργιών του συστήματος.
  • Εγκαταστάτης: Ένα μοναδικό επίπεδο που βρίσκεται πάνω από όλα τα άλλα, επιτρέποντας σε αντικείμενα σε αυτό το επίπεδο να απεγκαταστήσουν οποιοδήποτε άλλο αντικείμενο.

Μπορείτε να λάβετε το επίπεδο ακεραιότητας μιας διεργασίας χρησιμοποιώντας το Process Explorer από τα Sysinternals, έχοντας πρόσβαση στις ιδιότητες της διεργασίας και παρακολουθώντας την καρτέλα "Ασφάλεια":

Μπορείτε επίσης να λάβετε το τρέχον επίπεδο ακεραιότητας σας χρησιμοποιώντας whoami /groups

Επίπεδα Ακεραιότητας στο Σύστημα Αρχείων

Ένα αντικείμενο μέσα στο σύστημα αρχείων μπορεί να χρειάζεται ένα ελάχιστο απαιτούμενο επίπεδο ακεραιότητας και αν μια διεργασία δεν έχει αυτήν την ακεραιότητα δεν θα μπορεί να αλληλεπιδράσει μαζί του.
Για παράδειγμα, ας δημιουργήσουμε ένα κανονικό αρχείο από ένα κανονικό παράθυρο χρήστη και να ελέγξουμε τα δικαιώματα:

echo asd >asd.txt
icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)

Τώρα, ας αναθέσουμε ένα ελάχιστο επίπεδο ακεραιότητας Υψηλό στο αρχείο. Αυτό πρέπει να γίνει από ένα παράθυρο κονσόλας που εκτελείται ως διαχειριστής επειδή μια κανονική κονσόλα θα εκτελείται σε επίπεδο Μεσαίας Ακεραιότητας και δεν θα επιτρέπεται να αναθέσει Υψηλό Επίπεδο Ακεραιότητας σε ένα αντικείμενο:

icacls asd.txt /setintegritylevel(oi)(ci) High
processed file: asd.txt
Successfully processed 1 files; Failed processing 0 files

C:\Users\Public>icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)
Mandatory Label\High Mandatory Level:(NW)

Εδώ είναι που τα πράγματα γίνονται ενδιαφέροντα. Μπορείτε να δείτε ότι ο χρήστης DESKTOP-IDJHTKP\user έχει ΠΛΗΡΗ δικαιώματα στο αρχείο (πράγματι αυτός ήταν ο χρήστης που δημιούργησε το αρχείο), ωστόσο, λόγω του ελάχιστου επιπέδου ακεραιότητας που εφαρμόστηκε, δεν θα μπορεί πλέον να τροποποιήσει το αρχείο εκτός αν εκτελείται μέσα σε ένα Υψηλό Επίπεδο Ακεραιότητας (σημειώστε ότι θα μπορεί να το διαβάσει):

echo 1234 > asd.txt
Access is denied.

del asd.txt
C:\Users\Public\asd.txt
Access is denied.

{% hint style="info" %} Συνεπώς, όταν ένα αρχείο έχει ένα ελάχιστο επίπεδο ακεραιότητας, για να το τροποποιήσετε χρειάζεται να εκτελείστε τουλάχιστον σε αυτό το επίπεδο ακεραιότητας. {% endhint %}

Επίπεδα Ακεραιότητας στα Δυαδικά Αρχεία

Έφτιαξα ένα αντίγραφο του cmd.exe στο C:\Windows\System32\cmd-low.exe και του έθεσα ένα επίπεδο ακεραιότητας low από ένα παράθυρο διαχειριστή:

icacls C:\Windows\System32\cmd-low.exe
C:\Windows\System32\cmd-low.exe NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX)
Mandatory Label\Low Mandatory Level:(NW)

Τώρα, όταν εκτελώ το cmd-low.exe θα τρέχει με χαμηλό επίπεδο ακεραιότητας αντί για μεσαίο:

Για περίεργους, αν αναθέσετε υψηλό επίπεδο ακεραιότητας σε ένα δυαδικό αρχείο (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high) δεν θα τρέξει αυτόματα με υψηλό επίπεδο ακεραιότητας (αν το καλέσετε από ένα μεσαίο επίπεδο ακεραιότητας --από προεπιλογή-- θα τρέξει με μεσαίο επίπεδο ακεραιότητας).

Επίπεδα Ακεραιότητας στις Διεργασίες

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

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