Windows Object Security

Podobné dokumenty
Impersonation. in Windows Domain only. server service account -> client account vjj 1

Šifrování ve Windows. EFS IPSec SSL. - Encrypting File System - Internet Protocol Security - Secure Socket Layer - Private Point to Point Protocol

Dejte mi práva na...

Bezpečn č os o t t dat

vjj 1. Impersonation. server service account vs. client account

POWERSHELL. Desired State Configuration (DSC) Lukáš Brázda MCT, MCSA, MCSE

Nastavení DCOM. Uživatelský manuál

Řízení přístupu ke zdrojům Auditování a právní odpovědnost Vlastní nastavení, personalizace Více relací zároveň

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Zvýšení zabezpečení počítače

Module 6: Creating and Managing User Accounts

PB071 Programování v jazyce C

Obsah&/&Content& Všeobecné)podmínky)(v)češtině)) Terms)and)Conditions)(in)english)) )

Systém souborů vjj 1

Petr Vlk KPCS CZ. WUG Days října 2016

Auditování ve Windows. Lukáš Brázda MCT, MCSA, MCSE

PV176 Správa systémů MS Windows II

Firemní strategie pro správu mobilních zařízení, bezpečný přístup a ochranu informací. Praha 15. dubna 2015

Pantek Productivity Pack. Verify User Control. Uživatelský manuál

GUIDELINES FOR CONNECTION TO FTP SERVER TO TRANSFER PRINTING DATA

Bezpečnost Windows. Bezpečnostní podsystém. Milan Jirsa,

Administrace OS Windows

Komentáře CISO týkající se ochrany dat

User Account Control. a jak jej obejít. Martin Dráb martin.drab@ .cz

Využití identity managementu v prostředí veřejné správy

WINDOWS Nastavení GPO - ukázky

OPC komunikace a Wonderware software

Windows 2008 R2 - úvod. Lumír Návrat

Active Directory (Active Directory Directory Services) Jan Žák

NAS 323 NAS jako VPN Server

Použití zásad skupin k instalaci klientské komponenty ESO9

Microsoft Lync WEB meeting

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Windows Server 2003 Active Directory GPO Zásady zabezpečení

Bezpečnostní nástroje

Instalace Active Directory

Mobilní malware na platformě Android Přednáška 2. Ing. Milan Oulehla

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Group policy. Jan Žák

CZ.1.07/1.5.00/

Jazyk C# (seminář 5)

Čipové karty Lekařská informatika

Operační systémy 2 Základy Windows API

Práva a role. Martin Polák. NDBI013 Administrace Oracle

User manual SŘHV Online WEB interface for CUSTOMERS June 2017 version 14 VÍTKOVICE STEEL, a.s. vitkovicesteel.com

Introduction to Navision 4.00 Jaromír Skorkovský, MS., PhD.

Group Policy od A do Z. Lukáš Brázda MCT, MCSA, MCSE lukas@brazda.org

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Serverové systémy Microsoft Windows

Von Neumannovo schéma

OS řady Microsoft Windows

BitLocker EFS Credentials Roaming

Pokročilé Webové služby a Caché security. Š. Havlíček

Administrace Oracle. Práva a role, audit

Modelování hrozeb. Hana Vystavělová AEC, spol. s r.o.

Průvodce nastavením. Microsoft Office 365

<Insert Picture Here> Jak garantovat bezpečnost systémů ve státní správě

Project Life-Cycle Data Management

Instalace Windows 2012 Správa účtů počítačů

Serverové systémy Microsoft Windows

Jak importovat profily do Cura (Windows a

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Administrace Oracle Práva a role, audit. Kukhar Maria

Jak efektivně ochránit Informix?

Potřebujete mít vaše IS ve shodě s legislativou? Bc. Stanislava Birnerová

2. Entity, Architecture, Process

Efektivní provoz koncových stanic

Úvod do datového a procesního modelování pomocí CASE Erwin a BPwin

Bezpečnost v ASP.NET. Ladislav Mrnka lmrnka@students.zcu.cz

Serverové systémy Microsoft Windows

Služby, Registr Služby, Registr Procesy, BCD Pro, Událo cesy, BCD sti, Událo

Active Directory organizační jednotky, uživatelé a skupiny

Cíl kapitoly: Žák rozumí pojmu síťové služby, uvede příklady; umí popsat adresářové služby a zná jejich výhody pro provoz sítě.

Práva a jejich použití, screenujeme, pracujeme v GNU/Linuxu

Průvodce nastavením. Microsoft Office 365

Od Czech POINTu k vnitřní integraci

digitální podpis vjj 1

dat 2017 Dostupný z Licence Creative Commons Uveďte autora-zachovejte licenci 4.0 Mezinárodní

Osnova dnešní přednášky

SAML a XACML jako nová cesta pro Identity management. SAML and XACML as a New Way of Identity Management

Compression of a Dictionary

Hacking Team - exploity a zranitelnosti v programech. Petr Hanáček Fakulta informačních technologií, VUT v Brně

Introduction to MS Dynamics NAV

Správa zásad skupiny KAPITOLA 3. Porozumění výsledné sadě zásad

Použití Single Sign On (SSO) v IBM Informix Serveru

Microsoft Office 365. SharePoint Online novinky a administrace

Progressive loyalty V1.0. Copyright 2017 TALENTHUT

Průvodce nastavením. Google Apps for Work

SenseLab. z / from CeMaS. Otevřené sledování senzorů, ovládání zařízení, nahrávání a přehrávání ve Vaší laboratoři

Memory Management vjj 1

Identity and Access Management

Bezpečnostní problémy VoIP a jejich řešení

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Immigration Studying. Studying - University. Stating that you want to enroll. Stating that you want to apply for a course.

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Úvod Informace o prostředí Práce se soubory Regulární výrazy Konec. Programování v C# Soubory a regulární výrazy. Petr Vaněček 1 / 27

Řízení správy rolí v rozsáhlých organizacích. Michal Opatřil Corinex Group

VLAN Membership Policy Server a protokol VQP Dynamické přiřazování do VLANů.

Transkript:

5.4.17 vjj 1 Windows Object Security DAC logon -> SID -> Access Token -> ACL

5.4.17 vjj 2 logon security local account Microsoft Account domain account - Ctrl+Alt+Del heslo, certificate, PIN, biometrics, draw pattern,...

Windows Kernel Object Security soubory, adresáře Registry procesy, vlákna semafory, události Active Directory objekty Group Policy 5.4.17 vjj 3

Windows Object Security local Properties dialog (F10) Properties option Security tab API funkce pro Security Descriptor, ACL, ACE.NET Framework objects Security Descriptor, ACL, ACE Group Policy Computer Configuration Policies Security Settings File System 5.4.17 vjj 4

5.4.17 vjj 5 THREAD OBJECT SUBJECT's Access Token User SID User Group SIDs Logon SID Privileges Owner SID Primary Group SID Default DACL Access Token Source Primary or Impersonation Restricting SIDs Impersonation Level (Identify, Impersonate, Delegate) Security Descriptor Owner SID Group SID ACL seznam ACE záznam ACE záznam ACE záznam ACE záznam ACE záznam

5.4.17 vjj 6 access verification algorithm get object's ACL compare SIDs and requirements with ACEs deny ACE encountered -> access denied permit ACEs found for all requirements -> access allowed end of ACL encountered -> access denied no ACL -> no restrictions

Access Token User SID - Security ID uživatele, pod kterým proces/vlákno běží User Group SIDs - Security ID všech skupin, jejichž je uživatel členem Primary Group SID Restricting SIDs - list of restricting SIDs added by CreateRestrictedToken Logon SID - identifies the logon session Access Token Source Primary or Impersonation Impersonation Level (Identify, Impersonate, Delegate) k plnému zastupování je zapotřebí aby proces aktivoval uživatelovo privilegium "Act as part of the operating system" (SE_TCB_NAME, "SeImpersonatePrivilege") Security Settings / Local Policies / User Rights Assignment / Act as part of the operating system Privileges - všechna privilegia přidělená uživateli buď individuálně, nebo prostřednictvím skupin, kterých je členem Owner SID - Security ID uživatele, který bude nastaven jako vlastník nově vytvářených objektů Default DACL - zabezpečení, které bude nastaveno u nově vytvářených objektů, pokud není explicitně určeno parametrem Security Decriptor (jaký je vztah k DACL např. adresáře, ve kterém je vytvářen nový soubor?) 5.4.17 vjj 7

5.4.17 vjj 8 Access Token dva druhy: "primary" token je svázán s procesem, default pro každé vlákno procesu "impersonation" token je svázán s vláknem, které je právě v režimu zastupování v tokenu lze změnit: oprávnění přidělená zastupovanému uživatel aktivaci přidělených privilegií defaultního vlastníka a DACL pro kernel objekty, které bude proces s tímto tokenem dále vytvářet

READ_CONTROL WRITE_DAC owner's permissions 5.4.17 vjj 9

API OpenProcessToken Retrieves a handle to the primary access token for a process. OpenThreadToken Retrieves a handle to the impersonation access token for a thread. CreateRestrictedToken Creates a new token that is a restricted version of an existing token. The restricted token can have disabled SIDs, deleted privileges, and a list of restricted SIDs. DuplicateToken Creates a new impersonation token that duplicates an existing token. DuplicateTokenEx Creates a new primary token or impersonation token that duplicates an existing token. AdjustTokenGroups Changes the group information in an access token. AdjustTokenPrivileges Enables or disables the privileges in an access token. It does not grant new privileges or revoke existing ones. SetTokenInformation Changes a token's owner, primary group, or default DACL 5.4.17 vjj 10

API BOOL WINAPI GetTokenInformation( _In In_ HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, _Out_opt_ LPVOID TokenInformation, _In Out_ DWORD TokenInformationLength, PDWORD ReturnLength ); TokenUse = 1, TokenGroups, TokenPrivileges, TokenOwner, TokenPrimaryGroup, TokenDefaultDacl, TokenSource, TokenType, TokenImpersonationLevel, TokenStatistics, TokenRestrictedSids, TokenSessionId, TokenGroupsAndPrivileges, TokenSessionReference, TokenSandBoxInert, TokenAuditPolicy, TokenOrigin, TokenElevationType, TokenLinkedToken, TokenElevation, TokenHasRestrictions, TokenAccessInformation, TokenVirtualizationAllowed, TokenVirtualizationEnabled, TokenIntegrityLevel, TokenUIAccess, TokenMandatoryPolicy, TokenLogonSid, TokenIsAppContainer, TokenCapabilities, TokenAppContainerSid, TokenAppContainerNumber, TokenUserClaimAttributes, TokenDeviceClaimAttributes, TokenRestrictedUserClaimAttributes, TokenRestrictedDeviceClaimAttributes, TokenDeviceGroups, TokenRestrictedDeviceGroups, TokenSecurityAttributes, TokenIsRestricted, MaxTokenInfoClass 5.4.17 vjj 11

5.4.17 vjj 12 Access Token in.net IIdentity autentizace IPrincipal autorizace.net: WindowsIdentity a WindowsPrincipal objekty WindowsPrincipal a WindowsIdentity jsou navzájem provázány token of the current thread: WindowsIdentity.GetCurrent( ) wraps the token that represents the thread's security context (for non impersonating thread)

Identity <-> Principal WindowsIdentity myidentity = WindowsIdentity.GetCurrent(); WindowsPrincipal myprincipal = new WindowsPrincipal (myidentity) ; myidentity = myprincipal.identity ; 5.4.17 vjj 13

5.4.17 vjj 14 WindowsIdentity WindowsIdentity myidentity = WindowsIdentity.GetCurrent () ; WindowsIdentity nullidentity = WindowsIdentity.GetAnonymous () ; myidentity.name myidentity.isauthenticated myidentity.isanonymous myidentity.isguest myidentity.issystem myidentity.authenticationtype == "NTLM" IntPtr mytoken = myidentity.token ;

5.4.17 vjj 15 myprincipal.isinrole ( WindowsPrincipal WindowsBuiltInRole.Administrator ) Determines whether the (current) principal belongs to the Windows user group.

5.4.17 vjj 16 Roles how to create new application dependent roles?

5.4.17 vjj 17 Roles System.Web.Security.Roles CreateRole( string rolename ) AddUserToRole( AddUsersToRole( AddUserToRoles( string username, string rolename ) string[] usernames, string rolename ) string username, string[] rolenames )

5.4.17 vjj 18 imperative role-based security PrincipalPermission p = new PrincipalPermission ("novak","admins"); PrincipalPermission p = new PrincipalPermission (null, "admins") ; try { } p.demand () ; catch( SecurityException e ) { }

declarative role-based security [PrincipalPermission (SecurityAction.Demand, Name = "novak")] [PrincipalPermission (SecurityAction.Demand, Name = "novak", Role = "admins")] [PrincipalPermission (SecurityAction.Demand, Role = "admins")] 5.4.17 vjj 19

5.4.17 vjj 20 ACL PowerShell

5.4.17 vjj 21 dir get-acl fl get-acl Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\vjj\Documents\WindowsPo wershell\active Directory Owner : WIN\vjj Group : Access : FileSystemRights : FullControl AccessControlType : Allow IdentityReference : BUILTIN\Administrators IsInherited : True InheritanceFlags : ContainerInherit, ObjectInherit PropagationFlags : None Audit : Sddl (Security Descriptor Definition Language):

5.4.17 vjj 22 get-acl > get-acl C:\Users\vjj\Documents fl Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\vjj\Documents Owner : WIN\vjj Group : WIN\Domain Users Access : NT AUTHORITY\SYSTEM Audit : Sddl G:DU D: Allow FullControl BUILTIN\Administrators Allow FullControl WIN\vjj Allow FullControl : O:S-1-5-21-2378754280-655980599-3492758231-1103 (A;OICIID;FA;;;SY) (A;OICIID;FA;;;BA) (A;OICIID;FA;;;S-1-5-21-2378754280-655980599-3492758231-1103)

5.4.17 vjj 23 (D;OICI;GA;;;BG) (D;OICI;GA;;;AN) SDDL Deny Access to Built-in Guests Deny Access to ANonymous logon (A;OICI;GRGWGX;;;AU) Allow Read/Write/eXecute to Authenticated Users (A;OICI;GA;;;BA) Allow full control (Access) to Built-in Administrators

5.4.17 vjj 24 Security Descriptor Definition Language D - SDDL_ACCESS_DENIED A - SDDL_ACCESS_ALLOWED CI - CONTAINER INHERIT: Child objects that are containers, such as directories, inherit the ACE as an explicit ACE OI - OBJECT INHERIT: Child objects that are not containers inherit the ACE as an explicit ACE. ID - ACE IS INHERITED GA - GENERIC ALL FA - FILE ALL ACCESS...

5.4.17 vjj 25 GetAccessRules $sd = get-acl C:\users\vjj\Documents $accessrules = $sd.getaccessrules($true, $true, [System.Security.Principal.NTAccount]) $accessrules fl

5.4.17 vjj 26 copy ACL $myacl = Get-Acl mytest1.txt Set-Acl mytest2.txt -aclobject $myacl dir Path c:\temp -recurse -include *.txt -force Set-Acl -aclobject $myacl

5.4.17 vjj 27.NET FileSecurity fsecurity = File.GetAccessControl(fileName); fsecurity.addaccessrule( new FileSystemAccessRule( stringaccount, FileSystemRights, AccessControlType)); File.SetAccessControl( filename, fsecurity);

5.4.17 vjj 28.NET DirectoryInfo dinfo = new DirectoryInfo(FileName); DirectorySecurity dsecurity = dinfo.getaccesscontrol(); dsecurity.addaccessrule( new FileSystemAccessRule( stringaccount, FileSystemRights, AccessControlType)); dinfo.setaccesscontrol(dsecurity);

using ActiveDs; using System.Collections;.NET and ACE in AD DirectoryEntry DirEnt = new DirectoryEntry ( "LDAP://CN=vjj, DC=WIN, DC=MS, DC=MFF, DC=CUNI, DC=CZ") ; SecurityDescriptor sd = (SecurityDescriptor) DirEnt.Properties["ntSecurityDescriptor"].Value ; AccessControlList acl= (AccessControlList) sd.discretionaryacl; foreach ( AccessControlEntry ace in (IEnumerable) acl ) { Console.WriteLine ("Trustee: {0}", ace.trustee); Console.WriteLine ("AccessMask: {0}", ace.accessmask); Console.WriteLine ("Access Type: {0}", ace.acetype); } 5.4.17 vjj 29

5.4.17 vjj 30 ACL API

5.4.17 vjj 31 THREAD OBJECT SUBJECT's Access Token User SID User Group SIDs Logon SID Privileges Owner SID Primary Group SID Default DACL Access Token Source Primary or Impersonation Restricting SIDs Impersonation Level (Identify, Impersonate, Delegate) Security Descriptor Owner SID Group SID ACL seznam ACE záznam ACE záznam ACE záznam ACE záznam ACE záznam

Povolení libovolného přístupu PSECURITY_DESCRIPTOR psd ; psd = (PSECURITY_DESCRIPTOR) HeapAlloc (hheap, 0, SECURITY_DESCRIPTOR_MIN_LENGTH) ; InitializeSecurityDescriptor (psd, SECURITY_DESCRIPTOR_REVISION) ; SetSecurityDescriptorDacl (psd, FALSE, NULL, FALSE) ; FALSE => v bezpečnostním deskriptoru je zrušeno nastavení příznaku SE_DACL_PRESENT SetFileSecurity (lpszfilename, DACL_SECURITY_INFORMATION, psd) ; 5.4.17 vjj 32

vlákno výpočtu Objekt SUBJECT's Access Token SID uživatele SID skupiny SID skupiny... Privilegia Security Descriptor SID vlastníka SID skupiny 5.4.17 vjj 33

??? PSECURITY_DESCRIPTOR psd ; psd = (PSECURITY_DESCRIPTOR) HeapAlloc (hheap, 0, SECURITY_DESCRIPTOR_MIN_LENGTH) ; InitializeSecurityDescriptor (psd, SECURITY_DESCRIPTOR_REVISION) ; SetSecurityDescriptorDacl (psd, TRUE, NULL, TRUE) ; SetFileSecurity (lpszfilename, DACL_SECURITY_INFORMATION, psd) ; 5.4.17 vjj 34

default PSECURITY_DESCRIPTOR psd ; psd = (PSECURITY_DESCRIPTOR) HeapAlloc (hheap, 0, SECURITY_DESCRIPTOR_MIN_LENGTH) ; InitializeSecurityDescriptor (psd, SECURITY_DESCRIPTOR_REVISION) ; SetSecurityDescriptorDacl (psd, TRUE, NULL, FALSE) ; FALSE => DACL set to default SetFileSecurity (lpszfilename, DACL_SECURITY_INFORMATION, psd) ; 5.4.17 vjj 35

Zákaz jakéhokoliv přístupu PSECURITY_DESCRIPTOR psd ; PACL pacl ; psd = (PSECURITY_DESCRIPTOR) HeapAlloc (hheap, 0, SECURITYDESCRIPTOR_MIN_LENGTH) ; InitializeSecurityDescriptor (psd, SECURITY_DESCRIPTOR_REVISION) ; pacl = (PACL) HeapAlloc (hheap, 0, 1024) ; InitializeAcl (pacl, 1024, ACL_REVISION2) ; SetSecurityDescriptorDacl (psd, TRUE, pacl, FALSE) ; SetFileSecurity (lpszfilename, DACL_SECURITY_INFORMATION, psd) ; 5.4.17 vjj 36

vlákno výpočtu Objekt Access Token SUBJECT's Access Token SID uživatele SID skupiny SID skupiny... Privilegia Security Descriptor SID vlastníka SID skupiny ACL seznam 5.4.17 vjj 37

Konkrétní oprávnění 1/3 PSECURITY_DESCRIPTOR psd; PACL pacl; PSID psid; DWORD dwsidlength = 1024; DWORD dwdomainlength = 80; LPSTR lpszaccount = "vjj"; LPSTR lpszdomain; PSID_NAME_USE psidnameuse ; 5.4.17 vjj 38

Konkrétní oprávnění 2/3 psd = (PSECURITY_DESCRIPTOR) HeapAlloc (hheap, 0, SECURITY_DESCRIPTOR_MIN_LENGTH) ; InitializeSecurityDescriptor (psd, SECURITY_DESCRIPTOR_REVISION) ; pacl = (PACL) HeapAlloc (hheap, 0, 1024) ; InitializeAcl (pacl, 1024, ACL_REVISION2) ; psid = (PSID) HeapAlloc (hheap, 0, dwsidlength) ; psidnameuse = (PSID_NAME_USE) HeapAlloc (hheap, 0, 1024); lpszdomain = HeapAlloc (hheap, 0, 80) ; 5.4.17 vjj 39

Konkrétní oprávnění 3/3 LookupAccountName( NULL, // = Local System lpszaccount, psid, & dwsidlength, lpszdomain, & dwdomainlength, psidnameuse ) ; if ( IsValidSid( psid ) ) { AddAccessAllowedAce ( pacl, ACL_REVISION2, GENERIC_READ, psid ) ; SetSecurityDescriptorDacl( psd, TRUE, pacl, FALSE ) ; SetFileSecurity ( lpszfilename, DACL_SECURITY_INFORMATION, psd ) ; } 5.4.17 vjj 40

5.4.17 vjj 41 vlákno výpočtu Objekt Access Token SUBJECT's Access Token SID uživatele SID skupiny SID skupiny... Privilegia Security Descriptor SID vlastníka SID skupiny ACL seznam ACE záznam

5.4.17 vjj 42 PowerShell and ACL $objuser = New-Object System.Security.Principal.NTAccount("win\vjj") $fsrights = [System.Security.AccessControl.FileSystemRights]"FullControl" $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None $objtype =[System.Security.AccessControl.AccessControlType]::Allow $objace = New-Object System.Security.AccessControl.FileSystemAccessRule( $objuser, $fsrights, $InheritanceFlag, $PropagationFlag, $objtype) $objacl = Get-ACL "C:\testFolder\Test1.txt" $objacl.addaccessrule($objace) Set-ACL "C:\testFolder\Test1.txt" $objacl

5.4.17 vjj 43 Mandatory Integrity Control Integrity Level checks before ACL implemented through a new type of ACE on a security descriptor