СП лекция-06ua

Содержание

Слайд 2

Л е к ц і я № 6 по курсу "Системне програмування "

Тема

Л е к ц і я № 6 по курсу "Системне програмування
лекції: Основи безпеки операційної системи

Змістовний модуль № 1: Системне програмування в Wındows

04.10.2021

Лектор:
Доцент кафедри Інформаційних систем
кандидат технічних наук, доцент
Голубничий Дмитро Юрійович

Слайд 3

НАВЧАЛЬНІ ПИТАННЯ:

НАВЧАЛЬНІ ПИТАННЯ:

Слайд 4

Вступ

Вступ

Слайд 5

Захищати файли, пам'ять та інші ресурси кожного користувача від інших користувачів

захищати

Захищати файли, пам'ять та інші ресурси кожного користувача від інших користувачів захищати
власні дані, файли і пам'ять від користувачевих програм

відслідковувати спроби обходу захисту

Захищена багато користувачева система повинна:

Рівень С2 Управління доступом

забезпечувати контроль за доступом до ресурсів

пам'ять повинна бути захищена

в момент входу в систему користувач повинен однозначно ідентифікувати себе

системний адміністратор повинен мати можливості перевіряти всі події, пов'язані з безпекою

система повинна запобігати себе від зовнішнього впливу або втручання в її роботу

Рівень С1 Дискреційне забезпечення секретності

Рівень B1 Захист із застосуванням мета-безпеки

Рівень B3 Домени безпеки

Рівень A1
Перевірений дизайн

Рівень вище A1

Рівень B2 Структурований захист

B Мандатний захист

А Перевірений захист

С Дискреційний захист

D Мінімальний захист

Слайд 6

Безпека

SD3 + Communications (by Design + Default + Deployment)

Безпека в архітектурі

Безпека за

Безпека SD3 + Communications (by Design + Default + Deployment) Безпека в
замовчуванням

Безпека в роботі

взаємодія

безпечна архітектура
Новітні технології
Зменшення вразливості коду

Зменшення областей можливих атак
Відключення невикористаного за замовчуванням
Тільки мінімально необхідні привілеї

Запобігання, виявлення, запобігання, відновлення, управління
навчання користувачів

Ясність поставлених цілей
Повноцінне членство в світовому співтоваристві
Microsoft Security Response Center

Слайд 7

Засоби захисту ОС

засіб захищеної реєстрації в системі

селективний контроль доступу

аудит

Засоби захисту ОС засіб захищеної реєстрації в системі селективний контроль доступу аудит

захист пам'яті

Головна ідея, лежить в основі системи безпеки Windows - це створення шлюзу, через який повинен пройти кожен користувач системних ресурсів

аутентифікація і ідентифікація користувачів

управління доступом користувачів до об'єктів

Слайд 8

1. Аутентифікація користувачів

1. Аутентифікація користувачів

Слайд 9

LSA - Local Security Authority - керуючий локальної безпекою

СКОРОЧЕННЯ

SSPI - Security Support

LSA - Local Security Authority - керуючий локальної безпекою СКОРОЧЕННЯ SSPI -
Provider Interface - інтерфейс забезпечення безпеки

SSP - security support provider - провайдер підтримки безпеки

LUID - locally unique identifier - локальний унікальний ідентифікатор

SAS - secure attention sequence - комбінація CTRL + ALT + DEL

SID - security identifier ідентифікатори безпеки

ACL - access control list - список контролю доступу

PT - primary token - первинний маркер доступу

RT - restricted token - обмеженим маркером доступу

ACE - access-control entries - елементи контролю доступу

DACL - discretionary access-control list - список розмежувальної контролю доступу

SACL - system access-control list - системний список контролю доступу

CSP - Cryptographic Service Provider - криптопровайдер

Слайд 11

Проста діаграма інтерфейсу постачальника підтримки безпеки

Проста діаграма інтерфейсу постачальника підтримки безпеки

Слайд 13

Архітектура CryptoAPI

Архітектура CryptoAPI

Слайд 14

Інтерактивна автентифікація

LSA

Вхід в систему (Winlogon)

GINA

Пакети автен-тіфікаціі

Локальний комп'ютер

LsaLogonUser()

Не

Інтерактивна автентифікація LSA Вхід в систему (Winlogon) GINA Пакети автен-тіфікаціі Локальний комп'ютер
інтерактивна автентифікація

Клієнтська програма

SSPI

SSP

Чи не інтерактивна аутентифікація

Слайд 15

2. Управління доступом

2. Управління доступом

Слайд 17

2.1. Маркер доступу

2.1. Маркер доступу

Слайд 20

ТИПИ МАРКЕРІВ ДОСТУПУ

первинний маркер доступу
(primary token)

втілений маркер доступу (impersonation

ТИПИ МАРКЕРІВ ДОСТУПУ первинний маркер доступу (primary token) втілений маркер доступу (impersonation
token)

обмежений маркер доступу
(restricted token)

Слайд 21

об'єкти, що захищають - це об'єкти, доступ до яких контролі-ється системою

об'єкти, що захищають - це об'єкти, доступ до яких контролі-ється системою

Слайд 22

2.2. Ідентифікатор безпеки

2.2. Ідентифікатор безпеки

Слайд 23

Ідентифікатор безпеки (SID) - це структура змінної довжини, яка однозначно визначає користувача

Ідентифікатор безпеки (SID) - це структура змінної довжини, яка однозначно визначає користувача
або групу користувачів

лістинг 1. структура SID

typedef struct _SID
{
BYTE Revision; // рівень перегляду SID
BYTE SubAuthorityCount; // кількість значень // поставторізаціі
SID_IDENTIFIER_AUTHORITY IdentifierAuthority; / *ідентифікатор авторизації* /
#ifdef MIDL_PASS
[Size_is (SubAuthorityCount)] DWORD SubAuthority [*];
# Else // MIDL PASS
DWORD SubAuthority [ANYSIZE_ARRAY];
#endif // MIDL_PASS
}SID, *PISID;

Слайд 24

ідентифікатор авторизації

ідентифікатор комп'ютера

відносний ідентифікатор

48-біт

32-біт

формат SID

S-R-I-S-S..................

рівні поставторізаціі

ідентифікатор авторизації ідентифікатор комп'ютера відносний ідентифікатор 48-біт 32-біт формат SID S-R-I-S-S.................. рівні

рівні поставторізаціі

рівень перегляду

наприклад

S-1-3256-81 ..................

SID:

з рівнем перегляду = 1

ідентифікатором авторизації = 3256

рівнем поставторізаціі = 81

Слайд 25

рівні поставторізаціі

Функції для роботи з ідентифікаторами безпеки

BOOL InitializeSid (PSID pSid, PSID_IDENTIFIER_AUTHORITY

рівні поставторізаціі Функції для роботи з ідентифікаторами безпеки BOOL InitializeSid (PSID pSid,
pIdentifierAuthority, BYTE nSubAuthorityCount)

ініціалізація структури SID

Не тільки ініціалізація структури, а й покладання на систему турботу про виділення для неї пам'яті

BOOL AllocateAndlnitializeSid (PSID_IDENTIFIER_AUTHORITY pldentifierAuthority,
BYTE nSubAuthorityCount, DWORD nSubAuthority0,
DWORD nSubAuthority1,
DWORD nSubAuthority2,
DWORD nSubAuthority3,
DWORD nSubAuthority4,
DWORD nSubAuthority5,
DWORD nSubAuthority6,
DWORD nSubAuthority7,
PSID * pSid)

Слайд 27

Функції для роботи з ідентифікаторами безпеки

DWORD GetSidLengthRequired (UCHAR nSubAuthorityCount)

PUCHAR GetSidSubAuthorityCount

Функції для роботи з ідентифікаторами безпеки DWORD GetSidLengthRequired (UCHAR nSubAuthorityCount) PUCHAR GetSidSubAuthorityCount
(PSID pSid)

BOOL LookupAccountSid (LPCSTR lpSystemName, PSID Sid, LPSTR Name, LPDWORD cbName, LPSTR ReferencedDomainName, LPDWORD cbReferencedDomainName, PSID_NAME_USE peUse)

Розмір буфера, виділеного для SID для всіх рівнів поставторізаціі

Для визначення кількості рівнів поставторізаціі

Отримання імені користувача по SID

видалення SID

PVOID FreeSid (PSID pSid)

Слайд 28

2.3. Привілеї

2.3. Привілеї

Слайд 29

привілеївикористовуються для того, щоб більш строго контролювати доступ до ресурсів системи. Адміністратор

привілеївикористовуються для того, щоб більш строго контролювати доступ до ресурсів системи. Адміністратор
мережі використовує привілеї для того, щоб визначати, хто з користувачів має право маніпулювати системними ресурсами. Додатки використовують привілеї в тих випадках, коли їм необхідно змінити системні ресурси

Види уявлення привілеїв

звичайне ім'я

удобочитаем ім'я

локальне уявлення

Наприклад, привілеї в Windows

BOOL PrivilegeCheck (HANDLE ClientToken, PPRIVILEGE_SET RequiredPrivileges, LPBOOL pfResult)

Слайд 30

2.4. Дескриптор безпеки

2.4. Дескриптор безпеки

Слайд 31

Категорії об'єктів, які можуть мати дескриптор безпеки

файли

об'єкти користувача (вікна, зображення,

Категорії об'єктів, які можуть мати дескриптор безпеки файли об'єкти користувача (вікна, зображення,
кольору кисті і т.д.)

об'єкти ядра

об'єкти реєстру

об'єкти, визначені користувачем

Лістинг 3. Структура дескриптора безпеки

typedef struct _SECURITY_DESCRIPTOR
{
BYTE Revision;
BYTE Sbz1;
SECURITY_DESCRIPTOR_CONTROL Control;
PSID Owner;
PSID Group;
PACL Sacl;
PACL Dacl; } SECURITY_DESCRIPTOR, * PISECURITY_DESCRIPTOR;

Слайд 33

Функції для роботи з дескриптором безпеки

WINADVAPI BOOL WINAPI GetFileSecurity (
LPCSTR IpFileName,
SECURITY_INFORMATION

Функції для роботи з дескриптором безпеки WINADVAPI BOOL WINAPI GetFileSecurity ( LPCSTR
Requestedlnformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD IpnLengthNeeded)

WINADVAPI BOOL WINAPI SetFileSecurity (LPCSTR IpFileName, SECURITY_INFORMATION Securitylnformation, PSECURITY_DESCRIPTOR pSecurityDescriptor)

Слайд 34

Функції для роботи з дескриптором безпеки

WINADVAPI BOOL WINAPI GetKernelObjectSecurity (
HANDLE Handle,

Функції для роботи з дескриптором безпеки WINADVAPI BOOL WINAPI GetKernelObjectSecurity ( HANDLE
SECURITY_INFORMATION Requestedlnformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD IpnLengthNeeded).

WINADVAPI BOOL WINAPI SetKernelObjectSecurity (HANDLE Handle, SECURITY_INFORMATION Securitylnformation, PSECURITY_DESCRIPTOR SecurityDescriptor).

WINUSERAPI BOOL WINAPI GetUserObjectSecurity (HANDLE hObj, PSECURITY_INFORMATION pSIRequested, PSECURITY_DESCRIPTOR pSID, DWORD nLength, LPDWORD IpnLengthNeeded).

WINUSERAPI BOOL WINAPI SetUserObjectSecurity (HANDLE hObj, PSECURITY_INFORMATlON pSIRequested, PSECURITY_DESCRIPTOR pSID)

WINADVAPI LONG APIENTRY RegGetKeySecurity (HKEY hKey, SECURITY_INFORMATION Securitylnformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, LPDWORD IpcbSecurityDescriptor)

WINADVAPI LONG APIENTRY RegSetKeySecurity (HKEY hKey, SECURITY_INFORMATION Securitylnformation, PSECURITYJDESCRIPTOR pSecurityDescriptor)

Слайд 35

2.5. Списки управління доступом

2.5. Списки управління доступом

Слайд 36

DACL (discretionary access-control list) - список розмежувальної контролю доступу ідентифікує довірених осіб,

DACL (discretionary access-control list) - список розмежувальної контролю доступу ідентифікує довірених осіб,
яким дозволений або заборонений доступ до захищається.

SACL (system access-control list) - системний список контролю доступу дозволяє адміністраторам протоколювати спроби доступу до захищених об'єктів.

Список контролю доступу (access-control list (ACL)) Являє собою список елементів контролю доступу (access-control entries (ACE)). кожен елементACE у списку ACL ідентифікує довірену особу (trustee) І задає його права доступу (дозволу, заборони і аудит).

Лістинг 4. опис заголовка ACL

typedef struct _ACL
{BYTE AclRevision;
BYTE Sbz1;
WORD AclSize;
WORD AceCount;
WORD Sbz2;
} ACL; typedef ACL * PACL;

Слайд 38

лістинг 5. структура заголовка ACE

typedef struct _ACE_HEADER
{BYTE AceType;
BYTE AceFlags;
WORD AceSize;

лістинг 5. структура заголовка ACE typedef struct _ACE_HEADER {BYTE AceType; BYTE AceFlags;

} ACE_HEADER; typedef ACE_HEADER * PACE_HEADER;

Тип входу в структурі ACE

Лістинг 6. структура заголовка ACCESS_ALLOWED_ACE

typedef struct _ACCESS_ALLOWED_ACE
{ACE_HEADER Header;
ACCESS_MASK Mask;
DWORD SidStart;
} ACCESS_ALLOWED_ACE;

Слайд 39

лістинг 7. структура заголовка ACCESS_MASK

typedef struct _ACCESS_MASK
{
WORD SpecificRights;
BYTE StandardRights;
BYTE

лістинг 7. структура заголовка ACCESS_MASK typedef struct _ACCESS_MASK { WORD SpecificRights; BYTE
AccessSystemAcl: 1;
BYTE Reserved: 3;
BYTE GenericAll: 1;
BYTE GenericExecute: 1;
BYTE GenericWrite: 1;
BYTE GenericRead: 1;
} ACCESS_MASK;
typedef ACCESS "MASK * PACCESS_MASK;

Лістинг 8. структура заголовка ACCESS_DENIED_ACE

typedef struct _ACCESS_DENIED_ACE
{ACE_HEADER Header;
ACCESS_MASK Mask;
DWORD SidStart;
} ACCESS_DENIED_ACE;
typedef ACCESS_DENIED_ACE * PACCESS_DENIED_ACE;

Слайд 40

Лістинг 9. структура заголовка ACCESS_AUDIT_ACE

typedef struct _SYSTEM_AUDIT_ACE
{ACE_HEADER Header;
ACCESSJWASK Mask;
DWORD SidStart;
}

Лістинг 9. структура заголовка ACCESS_AUDIT_ACE typedef struct _SYSTEM_AUDIT_ACE {ACE_HEADER Header; ACCESSJWASK Mask;
SYSTEM_AUDIT_ACE;

WINADVAPI BOOL WINAPI InitializeAcI (PACL pAcI, DWORD nAclLength, DWORD dwAclRevision);

WINADVAPI BOOL WINAPI GetSecurityDescriplorDacI (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL IpbDaclPresent, PACL *pDacl, LPBOOL IpbDaclDefaulted);

WINADVAPI BOOL WINAPI GetSecurityDescriptorSacI (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL IpbSaclPresent, PACL *pSacl, LPBOOL IpbSaclDefaulted);

Функції для роботи з ACL

Слайд 41

3. Інтерфейс CryptoAPI

3. Інтерфейс CryptoAPI

Слайд 47

функції шифрування/ дешифрування даних

BOOL CRYPTFUNC CryptEncrypt (
HCRYPTKEY hKey, // дескриптор ключа для шифрування
HCRYPTHASH hHash
BOOL bFinal
BYTE * pbData, //

функції шифрування/ дешифрування даних BOOL CRYPTFUNC CryptEncrypt ( HCRYPTKEY hKey, // дескриптор
параметр [In, out]
DWORD * pdwDataLen, // параметр [In, out]
DWORD dwBufferLen)

Слайд 50

Цифровий підпис - це двійкові дані невеликого обсягу, зазвичай не більше 256

Цифровий підпис - це двійкові дані невеликого обсягу, зазвичай не більше 256
байт. Цифровий підпис є не що інше, як результат роботи хеш-алгоритму над вихідними даними, зашифрований закритим ключем відправника.