Microsoft Ortamında Kullanıcı Hakları ve Ayrıcalıklar

0
1401
views
Microsoft ortamında kullanıcı hakları genel olarak oturum açma hakları ve ayrıcalıklar olmak üzere iki farklı kategoride toplanır. Bunlardan oturum açma hakları sisteme kimin hangi şekilde oturum açabileceğini tanımlarken, ayrıcalıklar bilgisayardaki sistem kaynaklarına olan erişimleri kontrol eder. Bu yazıda, Microsoft ortamında kullanıcı hakları ve ayrıcalıklar incelenecektir.

1) Oturum Açma Hakları

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

Oturum açma hakları sisteme oturum açmadan önce gerçekleştirilen kontrollerdendir ve sisteme kimin ne şekilde oturum açabileceğini veya oturum açmasının engelleneceği belirlenebilir. Bir kullanıcının sisteme interaktif olarak klavye aracılığıyla, ağ üzerinden veya servis olarak oturum açıp açamayacağı belirlenebilir. Herbir oturum açma metodu için bir çift oturum açma metodu vardır. Bunlardan biri belirlenen oturum açma metoduna izin verilmesi (allow) iken diğeri oturum açılmasını engellemektedir (deny). Bir kullanıcı yada grubun bir bilgisayarda oturum açması engellenmek isteniyorsa, ilgili kullanıcı o bilgisayarda oturum açmayı engelle (Deny logon locally) hakkının atanması yeterli olacaktır. Örneğin Ali kullanıcısı Pazarlama grubu haricinde herhangi bir kullanıcının bir bilgisayara etkileşimli (interaktif) olarak klavye aracılığıyla oturum açmasını istemediğini düşünelim. Böyle bir işlem için Ali’nin “YerelOturumuEngelle” grubunu oluşturduktan sonra yapması gerekenler şunlardır:

  • Users grubuna Yerel Oturum Aç (Log on locally) hakkını atar.
  • YerelOturumuEngelle grubuna Yerel Oturumu Engelle (Deny logon locally) hakkını atar.
  • Pazarlama grubunu YerelOturumuEngelle grubunun üyesi yapar.

Yukarıdaki adımlardan sonra artık Pazarlama grubunun üyesi olan kullanıcılar bilgisayara interaktif olarak oturum açamayacaklardır. “YerelOturumuEngelle” grubuna üye olmayan diğer kullanıcılar sisteme sorunsuz olarak oturum açmaya devam edeceklerdir.

Herhangi bir kullanıcı ya da grubu hak atamasında bulunurken Engelle (Deny) haklarının, izin ver (allow) haklarına göre önceliğinin olduğu unutulmamalıdır. Dikkatli şekilde atanmayan kullanıcı hakları, hakkı atayan kullanıcının da sisteme erişiminin engellenmesine neden olabilir. Mesela Ali kendisinden başka kimsenin bilgisayarına interaktif olarak oturum açmasını istemeyebilir. Bunun için kendisine Yerel Oturum Aç (Log on locally) hakkını ekleyip, Users grubuna Yerel Oturumu Engelle (Deny logon locally) hakkını atarsa sisteme hiç kimsenin oturum açamamasına neden olur. Çünkü engelle hakkının, izin ver hakkına göre önceliği vardır ve Ali kullanıcısı da Users grubunun üyesi olduğu için, kendisinin de bilgisayara oturum açması engellenecektir. Bu tarz yanlış kullanımlara dikkat etmek gerekmektedir.

En önemli oturum açma izinlerinden başlıcaları aşağıdaki gibidir:

  • Access this computer from the network (SeNetworkLogonRight): Kullanıcıların ağ üzerinden sisteme bağlanmasına izin verir. Varsayılan Ayar: Administrators, Power Users, Users, Everyone, Backup Operators.
  • Allow logon through terminal services (SeRemoteInteractiveLogonRight): Uzak Masaüstü Bağlantısı (RDP) ile sisteme bağlanabilecek kullanıcıları tanımlar. Varsayılan Ayar: Administrators, Remote Desktop Users.
  • Log on locally (SeInteractiveLogonRight): Kullanıcıların interaktif olarak klavye ile sisteme oturum açmalarına izin verir. Varsayılan Ayar: Administrators, Power Users, Users, Guest, Backup Operators.
  • Deny access to this computer from the Network (SeDenyNetworkLogonRight): Bu bilgisayara ağ üzerinden bağlanılmasını engeller.
  • Deny logon locally (SeDenyInteractiveLogonRight): Bir kullanıcının interaktif olarak oturum açmasını engeller.
  • Deny logon through terminal services (SeDenyRemoteInteractiveLogonRight): Uzak Masaüstü Bağlantısı ile oturum açılmasını engeller.

 

2) Ayrıcalıklar (Privileges)

Sisteme oturum açıldıktan sonra kullanıcıların sistem genelinde yapabilecekleri işlemleri kontrol eden haklardır. Oturum açma hakları kullanıcı sisteme oturum açma aşamasında değerlendirilir. Eğer kullanıcının sisteme oturum açma hakkı varsa ve başarılı şekilde oturum açılmışsa, kullanıcı artık kendisine atanan ayrıcalıklar ile sistemde ne gibi işlemleri yerine getirebileceğine izin verilir. Güvenlik açısından önemli olduğu düşünülen ve herhangi bir kullanıcıya atanırken üzerinde düşünülmesi gereken ayrıcalıklardan aşağıdaki gibidir:

  • Act as part of the operating system (SeTcbPrivilege): Bu ayrıcalığa sahip olan kullanıcı, işletim sistemi gibi hareket etme hakkı vardır. Böylece kimlik doğrulaması olmadan başka bir kullanıcı gibi işlem yapılabilir, başka bir hesabın kaynaklarına erişebilir. Bu amaçla (SeImpersonatePrivilege ayrıcalığı olmasa bile) LsaLogonUser() metodu çağırılabilir ve başka bir kullanıcının jetonu üzerinde (LsaLogonUser() fonksiyonunun PTOKEN_GROUPS parametresinde) değişiklik yapabilir.
  • Back up files and directories (SeBackupPrivilege): Bu ayrıcalığa sahip olan kullanıcının tüm nesne ve dosyalara erişme hakkı vardır. Erişilmeye çalışılan dosyanın ACL izinlerinin ne olduğu göz önünde bulundurulmaz. Bu ayrıcalık ile ilgili nesnelerin yetkilendirmesi değiştirilebildiği için tüm dosyalar üzerinde okuma/yazma iznine sahip olunabilir. SAM, SYSTEM, NTDS.dit gibi dosyaların yedekleri bu ayrıcalık sayesinde alınabilir.
  • Create a token object (SeCreateTokenPrivilege): Bu ayrıcalık, tanımlandığı kullanıcıya herhangi bir kullanıcı ya da grup için jeton (security token) oluşturma hakkı tanır. Bu ayrıcalığın tanımladığı kullanıcı o bilgisayar üzerinde kendisini herhangi bir kullanıcıymış gibi gösterebilir.
  • Debug programs (SeDebugPrivilege): İşletim sistemi için en hassas ayrıcalıklardan biridir. Bu ayrıcalık başka bir kullanıcıya ait de olsa istenilen proses’i debug etme izni verir. Bu ayrıcalık tanımlanan kullanıcının istediği prosessi okuma/yazma, özelliklerini değiştirme veya kod enjekte etme hakkı vardır. Bu amaçla VirtualAlloc(), WriteProcessMemory(), CreateRemoteThread() gibi metodlar çağırılabilir. Kod enjekte edilen prosess, prosesi başlatan kullanıcının hakları ile çalışır. Parola özet değerlerini çalan programların çoğu bu ayrıcalığa ihtiyaç duyarlar. Örnek bir Powershell betiği:
    • https://github.com/decoder-it/psgetsystem
  • Enable computer and user accounts to be trusted for delegation (SeEnableDelegationPrivilege): Etki alanında geçerli olan bu ayrıcalığa sahip olan bir kullanıcının yetki devri için güvenildiği anlamına gelir ve yetki devrine güvenilen bir kullanıcının istediği jetonu (security token) üretme hakkı vardır.
  • Impersonate a client after authentication (SeImpersonatePrivilege): Bu ayrıcalığa sahip olan bir kullanıcı, bir başka kullanıcı gibi program çalıştırmaya hakkı vardır.Bu amaçla SetThreadToken(), ImpersonateLoggedOnUser(), CreateProcessWithToken() metodları çağırılabilir. Varsayılan olarak “Service Users” , Administrators grubu üyeleri ve Local System hesabının bu ayrıcalığı vardır.
  • Load and unload device drivers (SeLoadDriverPrivilege): Bu ayrıcalığa sahip olan kullanıcılar sisteme cihaz sürücüsü yükleme hakkına sahiptirler. Bu ayrıcalık ile sisteme yüklenecek herhangi bir kod doğrudan kernel seviyesinde çalıştırılır ve herhangi bir güvenlik kısıtlaması olmadan ilgili kod çalıştırılabilir. Varsayılan olarak Microsoft etki alanındaki Printer Operators grubunun DC üzerinde bu ayrıcalığı vardır.
  • Replace a process level token (SeAssignPrimaryTokenPrivilege): Bu ayrıcalığa sahip olan bir kullanıcı, ana proses ile çocuk prosesin jetonunu (security token) değiştirme hakkı vardır. Bu amaçla CreateProcessAsUser() metodu çağırılabilir. Varsayılan olarak “Service Users” , Administrators grubu üyeleri ve Local System hesabının bu ayrıcalığı vardır.
  • Restore files and directories (SeRestorePrivilege): Herhangi bir dosyaya, dizine ya da register anahtarına yazma izni verir. Bu ayrıcalık ile ilgili nesnelerin yetkilendirmesi değiştirilebildiği için tüm dosyalar üzerinde okuma/yazma iznine sahip olunabilir. Bu amaçla CreateFile(), RegCreateKeyEx() metodları çağırılabilir.
  • Take ownership of files or other objects (SeTakeOwnershipPrivilege): DACL ayarlarına bakmazsızın; dosya, yazıcı, paylaşım, servis, kayıt değeri, çekirdek nesnesi gibi herhangi bir güvenilebilir nesnenin (securable objects – SE_OBJECT_TYPE) sahiplenilebilmesine izin verir. Bu amaçla SetSecurityInfo(), SetNamedSecurityInfo() metodları çağırılabilir. Bu yetki ile SeRestorePrivilege yetkilendirmesine de sahip olunur ve kayıt değerleri üzerinde de değişiklik yapılabilir.

Her kullanıcıya her bilgisayarda özel olacak şekilde tanımlanan kullanıcı hakları ve ayrıcalıklar – ileride daha detaylı olarak incelenecek olan – kullanıcıya ait Security Access Token’ı (SAT) içerisinde bulunurlar ve kullanıcı ilgili bilgisayarda ne gibi hak ve ayrıcalık tanındığının tanımlanmasında kullanılırlar. Her bir kullanıcı ya da grup için tanımlanan hak ve ayrıcalıklar her bir bilgisayara özeldir ve bir bilgisayara özel olarak tanımlanır. O anda oturum açılan kullanıcaya ait olan ayrıcalıklar “whoami /priv” komutu ile listelenebilir.

user-right-management-in-microsoft-environment-01

 

Not: Komut satırı yönetici olarak açıldığında (Run as administrator), daha fazla yetkiye erişim sağlandığı görülmektedir.

Grup İlkeleri aracılığıyla da yönetilebilen kullanıcı hakları ve ayrıcalıkları ataması merkezi olarak yönetime izin verir. Grup ilkeleri ile aşağıdaki yoldan erişilerek yönetilebilir:

Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignments

Herhangi bir prosese atanmış kullanıcı ayrıcalıklarını görüntülemek için Microsoft’tan ücretsiz olarak indirilebilecek ProcessExplorer uygulaması kullanılabilir. İlgili uygulama indirildikten sonra herhangi bir proses üzerinde sağa tıklandıktan sonra özellikler alanı seçilir. Açılan pencereden Security sekmesinde ilgili prosese atanmış ayrıcalıklar listelenebilir.

user-right-management-in-microsoft-environment-02

Not: Aynı proses (cmd.exe) yönetici olarak başlatıldığında (Run as administrator), daha fazla yetkiye erişim sağlandığı görülmektedir.

 

Tüm ayrıcalıkların listesi aşağıdaki gibi sıralanabilir.

  • User Right in Group Policy: Name of Constant
  • Access Credential Manager as a trusted caller: SeTrustedCredManAccessPrivilege
  • Access this computer from the network: SeNetworkLogonRight
  • Act as part of the operating system: SeTcbPrivilege
  • Add workstations to domain: SeMachineAccountPrivilege
  • Adjust memory quotas for a process: SeIncreaseQuotaPrivilege
  • Allow log on locally: SeInteractiveLogonRight
  • Allow log on through Terminal Services: SeRemoteInteractiveLogonRight
  • Back up files and directories: SeBackupPrivilege
  • Bypass traverse checking: SeChangeNotifyPrivilege
  • Change the system time: SeSystemtimePrivilege
  • Change the time zone: SeTimeZonePrivilege
  • Create a pagefile: SeCreatePagefilePrivilege
  • Create a token object: SeCreateTokenPrivilege
  • Create global objects: SeCreateGlobalPrivilege
  • Create permanent shared objects: SeCreatePermanentPrivilege
  • Create symbolic links: SeCreateSymbolicLinkPrivilege
  • Debug programs: SeDebugPrivilege
  • Deny access to this computer from the network: SeDenyNetworkLogonRight
  • Deny log on as a batch job: SeDenyBatchLogonRight
  • Deny log on as a service: SeDenyServiceLogonRight
  • Deny log on locally: SeDenyInteractiveLogonRight
  • Deny log on through Terminal Services: SeDenyRemoteInteractiveLogonRight
  • Enable computer and user accounts to be trusted for delegation: SeEnableDelegationPrivilege
  • Force shutdown from a remote system: SeRemoteShutdownPrivilege
  • Generate security audits: SeAuditPrivilege
  • Impersonate a client after authentication: SeImpersonatePrivilege
  • Increase a process working set: SeIncreaseWorkingSetPrivilege
  • Increase scheduling priority: SeIncreaseBasePriorityPrivilege
  • Load and unload device drivers: SeLoadDriverPrivilege
  • Lock pages in memory: SeLockMemoryPrivilege
  • Log on as a batch job: SeBatchLogonRight
  • Log on as a service: SeServiceLogonRight
  • Manage auditing and security log: SeSecurityPrivilege
  • Modify an object label: SeRelabelPrivilege
  • Modify firmware environment values: SeSystemEnvironmentPrivilege
  • Perform volume maintenance tasks: SeManageVolumePrivilege
  • Profile single process: SeProfileSingleProcessPrivilege
  • Profile system performance: SeSystemProfilePrivilege
  • Remove computer from docking station: SeUndockPrivilege
  • Replace a process level token: SeAssignPrimaryTokenPrivilege
  • Restore files and directories: SeRestorePrivilege
  • Shut down the system: SeShutdownPrivilege
  • Synchronize directory service data: SeSyncAgentPrivilege
  • Take ownership of files or other objects: SeTakeOwnershipPrivilege

 

Kaynak:

https://www.bilgiguvenligi.gov.tr/microsoft-sistemleri-guvenligi-dokumanlari/index.php
https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet/blob/master/M%20-%20Privileged%20Accounts%20and%20Groups%20in%20Active%20Directory/README.md

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.