Rezumat: Cerințe de securitate. Organizarea accesului controlat la obiecte. Drepturi și privilegii.
Cerințe de securitate
1. Autentificare obligatorie și autentificare.
Înainte de efectuarea oricăror acțiuni, utilizatorul trebuie să fie prezentat sistemului (identificarea) și să confirme că acesta este cel care sa prezentat (autentificarea). Implementat de obicei prin introducerea unui nume de utilizator și a unei parole unice.
În Windows, procesele Winlogon.exe și Lsass.exe sunt responsabile pentru autentificarea și autentificarea utilizatorilor.
2. Gestionarea accesului la obiecte.
Utilizatorul-proprietar al obiectului ar trebui să poată acorda accesul la obiect anumitor utilizatori și / sau grupuri de utilizatori.
Accesul securizat este implementat în Windows de către Monitorul de Referință de Securitate (SRM) din Ntoskrnl.exe.
Sistemul ar trebui să poată urmări și înregistra toate evenimentele asociate accesului la obiecte.
În Windows, auditul este suportat de SRM și Lsass.exe.
4. Protecție la reutilizarea obiectelor.
Dacă zona de memorie a fost alocată unui utilizator și apoi a fost eliberată, toate datele din acesta (chiar criptate) ar trebui șterse atunci când regiunea este alocată ulterior.
În Windows, memoria liberă este eliminată printr-un flux de sistem de zeroare a paginilor care funcționează în timpul întreruperilor sistemului (cu prioritate zero).
În continuare, prelegerea va lua în considerare organizarea accesului gestionat la obiectele din SRM. precum și drepturile și privilegiile utilizatorilor.
Gestionarea accesului gestionat la obiecte
Principiul organizării accesului
Principiul accesului securizat gestionat la obiecte este următorul. Fiecare utilizator din sistem are propriul său simbol de acces, în care este specificat un ID utilizator unic. Procesele create de utilizator moștenesc tokenul său.
Pe de altă parte, toate obiectele din sistem au o structură de date numită descriptor de securitate. Această structură include o listă de ID-uri de utilizator, care pot (sau nu pot) să aibă acces la obiect, precum și tipul de acces (numai citire, citire și scriere de acces, acces complet, etc.).
Atunci când încearcă să proceseze accesul la identificatorul de obiect al marker al accesului este comparat cu identificatorii conținute în descriptorul de securitate al obiectului, și pe baza rezultatelor comparației de acces este permisă sau interzisă.
Luați în considerare structurile și funcțiile de date responsabile pentru implementarea acestui principiu în kernel-ul Windows.
Identificatori de protecție
Pentru a identifica în mod unic un utilizator, sistemul utilizează identificatori de securitate (SID). În plus față de utilizatori, SID este disponibil pentru grupuri de utilizatori, calculatoare, domenii 4 domenii (în Windows) - un grup de computere care sunt gestionate la nivel central, informațiile sunt stocate într-o bază de date comună (Active Directory), și membrii de domeniu.
SID-ul este generat aleatoriu de sistem, astfel încât probabilitatea ca un SID să se potrivească pentru utilizatori diferiți este aproape de zero.
În WRK, structura SID este descrisă în fișierul public \ sdk \ inc \ ntseapi.h (linia 251). SID constă din următoarele părți:
- numărul versiunii - câmpul de revizuire (1 octet);
- codul autorității de identificare este câmpul IdentifierAuthority (6 octeți);
- Valorile subautorității sunt câmpul SubAutoritate (de la 1 la 15 coduri cu câte 4 octeți fiecare). Numărul de coduri de sub-agenți este stocat în câmpul SubAuthorityCount.
În forma textului, SID este scris după cum urmează:
Fig. 13.1. SID reprezentare text
La ultimul cod ris.13.1 subagent numit un identificator relativ (identificator relativă, RID), ca toate conturile de utilizator de pe computer poate avea același cod, cu excepția RID. Un RID de 500 înseamnă administratorul local.
Simbolul de acces
Identificatorii de securitate ai utilizatorului sunt stocați în jetonul de acces. In timpul procesului de conectare utilizator Lsass.exe creează un jeton pentru ea, care este atribuit primului proces utilizator userinit.exe, alte procese care rulează moștenesc de client acest marcator (ris.13.2). Tokenul de acces la proces este stocat în câmpul Token al structurii EPROCESS (a se vedea Lectura 6 "Procese și fire").
Tokenul de acces este reprezentat de structura TOKEN. descrise în baza de fișiere \ ntos \ se \ tokenp.h (linia 235) și având următoarele câmpuri principale:
Fig. 13.2. Creați și moșteniți token-urile de acces