PDA

Επιστροφή στο Forum : Windows Vista, User Account Control ή UAC



drhouse
21-07-08, 13:38
Πολλοί πρωτάρηδες, στα Windows Vista, προσπαθώντας να εκτελέσουν κάποιες εντολές από τό cmd.exe διαπιστώνουν πως είναι κομματάκι δύσκολο. Μερικές εντολές τρέχουν, ενώ άλλες ανταποκρίνονται με κάποιο σφάλμα τύπου “The requested operation requires elevation”, ΑΚΟΜΑ κι αν ο λογαρισμός μας ανήκει στην ομάδα των administrators.

Άλλες πάλι φορές ακούγοντε εφράσεις,
"Θέλουμε οι εφαρμογές να τρέχουν με προνόμια admin, χωρίς την συνηθισμένη ενοχλητική προτροπή" ή "Δεν καταλαβαίνω, γιατί δεν μπορώ να εξουσιοδοτήσω μία εφαρμογή μία φορά έτσι ώστε αυτή να εκτελείται χωρίς να με ξανά ρωτάει;"

Φταίνε τα Vista; εμείς; ποιός; είδομεν παρακάτω.

Όταν ο χρήστης πληκτρολογεί username-password, το λειτουργικό του δίνει μία μοναδική ταυτότητα που ονομάζεται Security ID.

Κατόπιν τα Vista δημιουργούν στην RAM ένα access token στον οποίο συμπερλαμβάνουν
1) Το Security ID (SID) δηλαδή την ταυτότητα ασφαλείας που αντιστοιχεί στoν χρήστη,
εδώ εμπλέκεται και το Windows Integrity Level (αξιοπιστία λογαριασμού) , θα το βάλουμε
στην άκρη προς το παρόν (θα αναφερθώ σε αυτό σε άλλο άρθρο).
2) Τα Security ID (SID) που αντιστοιχούν στα groups που αυτός είναι μέλος.

Το λειτουργικό διαχειρίζεται τους λογαριασμούς των χρηστών βάση του SID που είναι μοναδικό και όχι με το username που ενδεχομένως νομίζουν μερικοί. Το λειτουργικό λοιπόν ΔΕΝ μας αναγνωρίζει από το user name αλλα από το Security ID. Τα user/group account SIDs έχουν μορφή S-1-5-21-Domain/RelativeID.

Σαν καλή πρακτική, αναφέρεται στα διάφορα εγχειριδια, να αλλάζουμε την ονομασία του admin account έτσι ώστε ο κακός χακερ που θα επιτεθεί στον υπολογιστή μας να μην αναγνωρίζει ποιος λογαρισμός έχει υψηλά προνόμια. Αυτό είναι μια κουταμάρα διότι αυτός που ψάχνει για ένα λογαριασμό admin δεν τον ψαχνει από την ονομασία του αλλα από το SID.

Παραδείγματα group SIDs
Administrators group: S-1-5-32-544
Local User group: S-1-5-32-545
Everyone group:S-1-1-0
Interactive group: S-1-5-4

Με την ευκαιρία αναφέρω και μερικές χρήσιμες εντολές.
whoami /user, δείχνει το SID του χρήστη
SΙD -> mylaptop\drhouse S-1-5-21-12765023571-2345367868-7492726793-1000
whoami /groups, μας δείχνει ποια μέλη ανήκουν σε ποιές ομάδες
whoami /priv , μας δείχνει τα προνόμια.

ΣΗΜΕΙΩΣΗ Μέσα στο SID υπάρχει και μία νέα πληροφορία, WINDOWS INTEGRITY LEVEL, δηλώνει κατά πόσο τα windows θεωρούν τον λογαριασμό ΑΞΙΟΠΙΣΤΟ. Αυτός ο βαθμός αξιοπιστίας εμφανίζεται μετά από GroupID σαν πενταψήφιος αριθμός 8192 (medium αξιοπιστία) 12288 (υψηλή αξιοπιστία).

Επιγραμματικά αναφέρω ότι στα Xp, η επιτυχία των κακόβουλων προγραμμάτων σε γενικές γραμμές εξαρτάται από:
1) Tα προνόμια / δικαιώματα που έχουν δοθεί στον χρήση και
2) Tο πόσο έχουμε προστατεύσει την registry.

Πάμπολα από τα προβλήματα που αντιμετωπίζουν τα windows προέρχονται από την συναλλαγή τους με το Internet. Τα δεδομένα που κατεβαίνουν στα windows μέσω Internet εμπεριέχουν πολλές φορές κακόβουλο κώδικα ο οποίος με την πρώτη ευκαιρία δημιουργει προβλήματα ...
Μπροστά σε αυτό το κίνδυνο η MS προσπάθησε να βρεί φάρμακο, το ονομα αυτού; Τι άλλο Windows Integrity Control wow. ΑΝ το βρήκε είναι άλλο θέμα προς συζήτηση.

Ο μηχανισμός WIC όρίζει επίπεδα αξιοπιστίας τα οποία η MS αναφέρει με τον όρο “Integrity”. Διαδικασίες που έχουν το ίδιο επίπεδο αξιοπιστίας αλληλεπιδρούν μεταξύ των όπως και στα XP. Ο μηχανισμός WIC, ενεπλέκεται στην περίπτωση που μια διαδικασία θέλει να αλληλεπιδράσει με μία άλλη που έχει υψηλότερο επίπεδο αξιοπιστίας. Όταν δηλαδή μια διαδικασία με χαλημό επίπεδο αξιοπιστίας επιχειρήσει να διαβάσει, γράψει, ή να εκτελέσει ένα αντικείμενο που έχει μεγαλύτερη αξιοπιστία τότε ο μηχανισμός WIC “ισος, αν έχει ρυθμιστεί ” εμποδίσει αυτή την προσπάθεια.

Ακούγεται σαν μία απλή ρύθμιση όμως έχει μεγάλη επίδραση στον πως θα λειτουργούν τα Vista.

Πόσοι από εμάς δεν έχουμε μολυνθεί επισκεπτόμενοι διάφορα sites;

Αλλο το επίπεδο προστασίας όταν κατεβάζουμε ένα αρχείο από το Internet και άλλο όταν αντιγράφουμε το ΙΔΙΟ αρχείο από ένa CD.

Επιστροφή στο UAC.
Κάθε φορά που τρέχουμε
α) μία εφαρμογή ή
β) κάποια εντολή από cmd.exe ή
γ) όταν κάνουμε κλικ σε ένα εικονίδιο,
δ) ...
το λειτουργικό σύστημα χρησιμοποιεί το Access Token που προαναφέραμε.
Με την εκκίνηση οποιασδήποτε εφαρμογής, το λειτουργικό παίρνει ένα αντιγράφο του Access Token και το δίνει στην εφαρμογή. Τα δικαιώματα (τι μπορεί και τι δεν μπορεί η εφαρμογεί να κάνει) που έχει αυτή η εφαρμογή εξαρτώνται από τις πληροφορίες που έχει αυτό το “αντίγραφο access-token”. Από την στιγμή που ξεκινάει η εφαρμογή τα προνόμιά / δικαιώματά της εφαρμογής δεν μπορούν να τροποποιηθούν διότι αυτή σχετίζεται με ένα ΑΝΤΙΓΡΑΦΟ του Access-Token που βρίσκεται στην RAM.

Τα Vista, δημιουργούν για τον admin-χρήστη (κατά MS, PA, Protected Administator) ΔΥΟ Access-Tokens:
1) Standard-Admin-Token, συμπερυλαμβάνει όλες τις όμάδες στις οποίες ανήκει, όλα τα προνόμια, δικαιώματα.
2) Standard-User-Token ,(admin περιορισμένης ευθύνης !!!), αντίγραφο του Standard-Admin-Token που όμως έχουν ΑΦΑΙΡΕΘΕΙ ΟΛΑ τα SIDs των ομάδων που έχουν υψηλά προνόμια. Το φιλτράρισμα αυτό είναι πολυπλοκότερο και η ακριβής περιγραφή του θα μπερδευε τους φίλους που απευθύνεται.
Επίσης αφαιρούνται και μερικά δικαιώματα : Create a token, Act as part of operating System, Take ownership of files and objs, Load unload drivers, Backup procedures, Impersonate a client after authentication, Modify an obj label, debug programs.

Μικρή παρενθεσούλα, τα Vista συμπερυλαμβάνουν power group user μόνο για back word compatibility με προηγούμενα λειτουργικά, μελλοντικά μάλλον θα αφαιρεθούν (κατα τα λεγόμενα της MS).

Με την παραπάνω αλλαγή, αναθεωρήθηκαν και oι Vista-διαδικασίες που χρειάζονται η όχι Standard-User-Token. Οι διαδικασίες που επαναχαρακτηρίστικαν σαν καθαρά administrative, στο γραφικό περιβάλλον εχουν δίπλα τους το εικονίδιο της ασπίδας.

http://img34.picoodle.com/img/img34/8/6/8/f_securityshim_b0188c2.png (http://www.picoodle.com/view.php?img=/8/6/8/f_securityshim_b0188c2.png&srv=img34)

http://img34.picoodle.com/img/img34/8/6/8/f_securityshim_60fd840.png (http://www.picoodle.com/view.php?img=/8/6/8/f_securityshim_60fd840.png&srv=img34)

http://img34.picoodle.com/img/img34/8/6/8/f_Securityshim_2c91b74.png (http://www.picoodle.com/view.php?img=/8/6/8/f_Securityshim_2c91b74.png&srv=img34)

Για να επιτραπεί λοιπόν στον Admin να εκτελέσει αυτές τις διαδικασίες θα πρέπει με κάποιο τρόπο τα Vista να χρησιμοποιήσουν ένα αντίγραφο από το Standard-Admin-Token (το token με όλα τα προνομιοδικαιώματα). Στο σημείο αυτό, αναλαμβάνει ο μηχανισμός UAC (User Account Control).

ΣΗΜΕΙΩΣΗ
Αν ο λογαριασμός που χρησιμοποιούμε ανήκει στην ομάδα των administrator τότε το UAC απαντάει εμφανίζοντας το Consent UI διαφορετικά αν ο λογαριασμός ανήκει στην ομάδα των users τότε απαντάει με το Credential UI.

http://img26.picoodle.com/img/img26/8/6/8/f_ConsentUIm_a5797bc.png (http://www.picoodle.com/view.php?img=/8/6/8/f_ConsentUIm_a5797bc.png&srv=img26)

Από λογαριασμό admin εμφανίζεται το Consent UI.

http://img26.picoodle.com/img/img26/8/6/8/f_TheCredentim_f6c7e3b.png (http://www.picoodle.com/view.php?img=/8/6/8/f_TheCredentim_f6c7e3b.png&srv=img26)

Από λογαριασμό standard user εμφανίζεται το Credential UI.

Με λίγα και απλά λόγια, Τα Vista, εξ’ ορισμού, μετατρέπουν κάθε χρήστη που ανήκει στην ομάδα administrators σε PROTECTED ADMINISTRATOR δηλαδή προστατευμένο admin, admin με χαμηλού επιπέδου προνόμια (προνόμια κανονικού χρήστη). Στο σημείο αυτό θα ήθελα να ενημερώσω τους φίλους του φορουμ ότι αν σε κάποιες περιπτώσεις αυτός ο μηχανισμός σας εκνευρίζει θα πρέπει να γνωρίζεται ότι μπορεί να παραμετροποιηθεί έτσι ώστε να ταιριάζει στα μέτρα σας.

1) Ο τελικός χρήστης μπορεί να παραμετροποιήσει το UAC (Group Policy)
2) Μπορεί όμως να τροποποιήσει (παραμετροποιήσει) και τις εφαρμογές,

a) Vista εφαρμογές, στα properties έχουν συμπεριλάβει την επιλογή compatibility->privilege level (ΠΡΑΚΤΙΚΗ ΣΥΜΒΟΥΛΗ)
b) Pre-Vista εφαρμογές, εξωτερικό αρχείο manifest, βλέπε παρακάτω τα περί Manifest.

ΠΡΑΚΤΙΚΗ ΣΥΜΒΟΥΛΗ Αν κάθε φορά που θέλετε να εκτελέσετε εντολές από την cmd.exe και βαριέστε την κανονική διαδικασία μπορείτε να δημιουρήσετε στην επιφάνεια εργασίας ένα shortcut και να το παραμετροποιήσετε ως εξής :
Γενικά -> advanced->run as admin.

Πως καταλαβαίνει το UAC να χρησιμοπιήσει το administrator token

1) Αν το Vista καταλάβει ότι πρόκειται για προγράμματα εγκατάστασης εφαρμογών, τότε ζητάει
admin-token. Αν μετονομάσετε ένα οποιοδήποτε αρχείο σε instal.exe τότε το UAK θα θεωρήσει ότι πρόκειται για πρόγραμμα εγκατάστασης !!!
2) Οι κατασκευαστές λογισμικού συμπερυλαμβάνουν κώδικα μέσα στην εφαρμογή τους, ο
οποίος ζητά από το UAC να γίνει χρήση admin-token. Ο κώδικας αυτός ονομάζεται “MANIFEST”.

To manifest μπορούμε να το τοποθετήσουμε και εκτός .exe.

ΠΡΑΚΤΙΚΗ ΣΥΜΒΟΥΛΗ Αν για παράδειγμα αν έχουμε μία εφαρμογή που ονομάζεται adslgr.exe, μπορούμε με κατάλληλα εργαλεία να δημιουργήσουμε ένα manifest (XML), να του δώσουμε την ονομασία adslgr.exe.manifest και να το τοποθετήσουμε στον ίδιο φάκελο με το adslgr.exe.

Τα vista όταν διαπιστώσουν ότι το αρχείο adslgr.exe εσωτερικά δεν έχει manifest τότε ψάχνουν στον ίδιο φάκελο για εξωτερικό manifest.

Οι εφαρμογές επιδέχονται παραμετροποίησης (προσοχή όμως στις ψηφιακές υπογραφές) με διάφορα έργαλεία όπως
1) http://www.wilsonc.demon.co.uk/d10resourceeditor.htm,
2) η MS έχει το Manifest Tools (ΜΤ.exe) ...

ΠΑΡΑΜΕΤΡΟΠΟΙΗΣΗ UAC

Η ρύθμιση του UAC, πως δηλαδή αυτό θα αντιδρά στις εφαρμογές, γίνεται από το Group Policy.
Gpedit -> computer configuration -> Win Settings -> Local policies ->Security Options. Όλες οι σχετικές εγραφές αρχίζουν με “User Account Control”

No Prompt σημαίνει, σε περίπτωση που χρειάζονται προνόμια admin, δώστα χωρίς να τον ενοχλείς ή απενεργοποίησε το UAK.
Prompt for consent στην περίπτωση του admin.
Prompt for credentials στην περίπτωση κανονικών χρηστών. ...

Secure Desktop.
Το UAK συνεργάζεται και με ένα άλλο μηχανισμό που ονομάζεται Secure Desktop.
Το secure Desktop είναι αυτό που γκριζάρει την υπόλοιπη οθόνη. Ο συνδιασμός UAK/Secure Desktop δεν επιτρέπει σε προγράμματα που επιδιώκουν να εξαπατήσουν το πληκτρολόγιό σου ή το ποντίκι σου, με συνέπεια να επιβεβαιώνεις ενώ εσύ σκοπέυεις να απορρίψεις κάποια ενέργεια.
Αυτές είναι δύο διαφορετικές λειτουργίες και μπορούν να ενεργοποιηθούν ή να απενεργοποιηθούν.

Απενεργοποίηση UAK Για όσους εκνευρίζονται με το secure Desktop

Συνήθως ακούγοντε σχόλια όπως

"Θέλουμε οι εφαρμογές να τρέχουν με προνόμια admin, χωρίς την συνηθισμένη ενοχλητική προτροπή."
"Δεν καταλαβαίνω, γιατί δεν μπορώ να εξουσιοδοτήσω μία εφαρμογή μία φορά έτσι ώστε αυτή να εκτελήται χωρίς να με ξανά ρωτάει;"
...
"Το Linux διαθέτει την εντολή setuid/suid root με την οποία επιτρέπεται η ασφαλής εκτέλεση προγραμματων που απαιτούν ανεβασμένα προνόμια."

Είναι γεγονός ότι στον κόσμο των Windows XP έχει καθιερωθεί ο τελικός χρήστης να έχει προνόμια administrator (default windows user) διότι μόνο τότε το σύστημα τρέχει σωστά και πάμπολλες εφαρμογές δεν τρέχουν καθόλου σε λογαριασμούς τύπου standard user.

Επειδή όμως οι θεωρήσεις περί ασφάλειας άλλαξαν δραστικά τον τελευταίo καιρό, θεωρήθηκε ότι έφθασε ο καιρός και πρέπει να δοθεί ένα τέλος σ’ αυτή την πρακτική.
Το πρώτο μεγάλο βήμα προς αυτή την κατεύθυνση έγινε με την έκδροση των Windows Vista.
Σκοπός αυτής της ενέργεια, κατά την ταπεινή μου γνωμη, είναι η καθιέρωση του standartd user σαν τον default windows user προτρέποντας παράλληλα τους κατασκευαστές λογισμικού να ΑΡΧΙΣΟΥΝ να δημιουργούν software το οποίο να μην απαιτεί αναγκαστικά την χρήση του λογαριασμού admin.

Σ’ αυτό το στάδιο, αφήνοντας τις εφαρμογές να τρέχουν με προνόμια admin ΧΩΡΙΣ να περάσουν απο τον μηχανισμό privilige elevation ΦΑΙΝΕΤΑΙ με μία πρώτη ματιά να είναι χρήσιμο και πιο βολικό. Στην πραγματικότηατα όμως τα πράγματα είναι εντελώς διαφορετικά

Η καθιέρωση του Windos standard user δεν θα ήταν εφικτή ...

Τούτος είναι και ο λόγος που το UAC ειναι ενεργοποιημένο εξ’ ορισμού. Διαφορετικά κανένας κατασκευαστής λογισμικού δεν θα έκανε τις απαραίτητες αλλαγές, και τα προγράμματα για να τρέξουν θα απαιτούσαν admin accounts (ο φίλος SSB τα έχει ξανά πει πολύ όμορφα).

Φυσικά η λύση των Vista δεν είναι και η καλύτερη ωστώσο είναι είναι ένα καλό βήμα προς την σωστή κατεύθυνση.

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

Αυτός ο μηχανισμός μπορεί πολύ εύκολα να βγεί εκτός λειτουργίας αν και δεν είναι καλή κίνηση για μια μεγάλη κατηγορία χρηστών. Εδώ θα επαναλάβω ότι αυτός ο μηχανισμός προσφέρει μεγάλη προστασία σε μια πολύ μεγάλη πλειοψηφία χρηστών εναντι κακόβουλων προγραμμάτων (malware) αφαιρώντας τους το δικαίωμα να εκτελέσουν κρίσιμες λειτουργίες και να βλάψουν το σύστημα.

Η απενεργοποίηση του UAC μπορεί να γίνει με αρκετούς τρόπους και σε αρκετά επίπεδα:

1) Από το Control panel

http://img32.picoodle.com/img/img32/4/7/21/t_uac1m_6d7e49d.jpg (http://www.picoodle.com/view.php?img=/4/7/21/f_uac1m_6d7e49d.jpg&srv=img32)

Αυτή η ενέργεια είναι κατά την γνώμη μου πολύ δραστική δεδομένου ότι ρητά καικατηγοριματικά απενεργοποιεί ΟΛΟΚΛΗΡΟ τον μηχανισμό UAC και προσωπικά ΔΕΝ το συνιστώ στους κανονικούς χρήστες.

2) Για πιο γραμμική παραμετροποίσηση, μας δίνεται η δυνατότητα να απενεργοποιήσουμε τον UAC και να διατηρήσουμε κάποια από τα ωφέλη που αυτός προσφέρει. Δυστυχώς αυτή η παραμετροποίηση γίνεται μέσα από το security policy που οι περισσότεροι χρήστες αισθάνονται άβολα.

http://img01.picoodle.com/img/img01/9/9/30/f_moregranulam_64a581f.jpg (http://www.picoodle.com/view.php?img=/9/9/30/f_moregranulam_64a581f.jpg&srv=img01)

Local Security policy -> Security Options
Bρίσκω όλες τις εγραφές που σχετίζονται με το UAC και επιλέγω αυτές που με ενδιαφέρουν

UAC: Behavior of the elevation prompt for administrators in Admin Approval Mode. -> Prompt for consent to Elevate without prompting.

Τι κερδίζουμε με αυτή την επιλογή;

Κατ’ αρχήν δεν απενεργοποιούμε ΟΛΟΚΛHΡΟ το μηχανισμό UAC.
ΟΛΕΣ οι διαδικασίες (processes) τρέχουν με το access tokent του standard user.
Με αυτό το τρόπο, όλες οι ενέργειες που για να εκτελεσθούν, απαιτούν προνόμια admin, εκτελούνται σιωπηλά χωρίς την εμφάνιση της secure desktop προτροπής.
Οποιαδήποτε εντολή Run as administrator, εκτελήται αυτόματα χωρίς της γνωστή προτροπή (Secure DeskTop).
Σίγουρα αυτή η προσέγγιση είναι καλύτερη από το ΤΙΠΟΤΑ.

UAC: Run all administrators in Admin Approval Mode Properties, εγώ επιλεγω Disable
UAC: Detect application installations and prompt for elevation Properties, εγώ επιλέγω disable

Γ) Αν θέλω μία εφαρμογή να τρέχει ΠΑΝΤΑ με προνόμια admin:
Κάνω δεξί κλικ στην εφαρμογή και επιλέγω την καρτέλα compatibility.
Στην επιλογή Privilige level, επιλέγω Run this program as an admin.

Αναφορές καλές του SSB
http://technet2.microsoft.com/windowsserver2008/en/library/0d75f774-8514-4c9e-ac08-4c21f5c6c2d91033.mspx?mfr=true
http://technet2.microsoft.com/WindowsVista/en/library/c6c673db-0e8b-43da-95ad-2280cb0a7ab01033.mspx?mfr=true
http://msdn.microsoft.com/en-us/library/bb756883.aspx

Thuglife
22-07-08, 14:55
Σαν καλή πρακτική, αναφέρεται στα διάφορα εγχειριδια, να αλλάζουμε την ονομασία του admin account έτσι ώστε ο κακός χακερ που θα επιτεθεί στον υπολογιστή μας να μην αναγνωρίζει ποιος λογαρισμός έχει υψηλά προνόμια. Αυτό είναι μια κουταμάρα διότι αυτός που ψάχνει για ένα λογαριασμό admin δεν τον ψαχνει από την ονομασία του αλλα από το SID.

Το συγκεκριμένο δεν είναι κουταμάρα, αντιθέτως είναι best practice. Αν αφήσεις το default admin account enabled ή δεν αλλάξεις username ο "κακός" ξέρει ήδη ενα valid username και το μόνο που μένει είναι να βρει το password. Συνδύασε τώρα το παραπάνω με το γεγονός οτι στο 99% των preinstalled συστημάτων το pass του administrator είναι κενό and you get the big picture!

Αυτός είναι και ο λόγος που στα Vista ο λογαριασμός του administrator είναι disabled μετά την εγκατάσταση παρ' όλο που και το νέο account ανήκει στο group των administrators και όχι των users.

thanatar
27-06-09, 10:55
εχω εγκαταστησει το παιχνιδι rise and fall και μου ζηταει επειδη εχω vista να εχω administrator privileges.τι μπορω να κανω για να το εχω αυτο;;;;;

drhouse
27-06-09, 11:06
Που το ξέθαψες αυτό το θέμα?
Κάνε δεξί κλικ στο setup του παιχνιδιού και επέλεξε Run as admin.

manosdoc
27-06-09, 13:48
Καταπληκτικό θέμα, που ήταν αυτό ; !
Α, ρε Drhouse με τους οδηγούς σου, ξεστραβωνόμαστε λίγο.
Πάω για μελέτη.

@ ADSLgr.com All rights reserved.