1. T E M A : I M P L E M E N T I I S I G U R I S E N E S I S T E M E
O P E R A T I V E
L E N D A : S I G U R I A E T E D H E N A V E
P U N O I : E G Z O N S E N I K U
FSHK- Inxhinieri Softuerike
2. Hyrje
Parandalimet e qasjeve të paautorizuar në të dhënat
e ndjeshme është element thelbësore në çdo mjedis
në të cilin përdorues të shumët kanë qasje në resurse
të njëjtat fizike apo ato të rrjetit. Një sistem operativ,
por edhe përdoruesit individuale, duhet të jenë në
gjendje të mbrojnë fajlla, memorien dhe parametrat
e konfigurimit nga leximet dhe modifikimet e
padëshiruar. Për këtë qëllim në sistem operativ janë
të përfshirë mekanizmat sikurse që janë llogarit e
përdoruesve, fjalëkalimet dhe mbrojtja e fajllave.
3. Klasifikimet e sigurisë
Standardet aktuale global për vlerësimin e sigurisë së
softuerit duke përfshirë këtu edhe Sistemin Operativ
quhen kriteret e përbashkëta (ang. Common
Criteria) – CC. Gjatë vitit 1981 është themeluar
Qendra Kombëtare për Sigurinë Kompjuterike (ang.
National Computer Security Center) që përveç
tjerash ka përpiluar standardet për kritere vlerësuese
të sistemeve kompjuterike të sigurta. Në tabelën në
vazhdim janë paraqitur kriteret vlerësuese sipas
standardit për kriteret vlerësuese të sistemeve
kompjuterike të sigurta.
5. Sistemi operativ Windows përmbush vlerësimet e sigurisë të nivelit C2 dhe nivelet B. Këto
vlerësime konsiderohen si kërkesat bazë që duhet ti plotësoj secili sistem operativ modern.
Vlerësimet e sigurisë C2 dhe B që janë të përfshira në Windows janë:
Kyçja e sigurt – që kërkon nga përdoruesit të identifikohen në mënyrë unike dhe pastaj tu
lejohet qasja në kompjuter pasi të jenë autentifikuar.
Kontrolla e qasjes diskrete – që i mundëson pronarit të resurseve (siç janë fajllat) të përcaktoj
se kush mund të qaset në ato resurse dhe çka mund të bëjnë me to.
Auditim sigurie – që mundëson detektimin dhe regjistrimin e ngjarjeve (ang. events) të sigurisë
apo çdo tentim për të krijuar, poseduar apo fshirë resurset e sistemit.
Mbrojtja nga ripërdorimi i objekteve – i cili nuk i lejon përdoruesit të shohin të dhënat të cilat
janë fshirë nga përdoruesi paraprak ose të parandaloj qasjen në memorine që përdoruesi
paraprak e ka përdorur dhe pastaj e ka liruar.
Funksionaliteti i shtegut të besuar – parandalon programet Trojanë që të kapin llogarit e
përdoruesve dhe fjalëkalimet e tyre gjatë procesit të kyçjes “log on”. Ky funksionalitet në
sistemin operativ Windows është implementuar duke shtypur sekuencën e tasteve
Ctrl+Alt+Delete që nuk mund të kapet nga aplikacionet pa privilegje. Kombinimi i tasteve
Ctrl+Alt+Delete njihet me emrin sekuenca e vëmendjes së sigurt (ang. Secur Attention
Sequence) – SAS dhe do të anashkaloj trojanët që paraqesin dritaren falso të autentifikimit.
6. Komponentët e sigurisë
Në vazhdim do ti paraqesim komponentët dhe data bazat kryesore që implementojnë sigurinë
në Windows. Këto komponentët janë paraqitur në mënyrë vizuale në figurën 1.
Monitor i refercave të sigurisë – SRM – (ang. Security reference monitor) – është një
komponentë e shtresës ekzekutive të Windows-it që vepron në nivelin e kernelit dhe është
përgjegjës për definimin e tokeneve të qasjes, strukturat e të dhënave për të përfaqësuar
kontekstet e sigurisë, kryerjen e kontrolleve të sigurisë në objekte, veprimet me privilegje, të
drejtat e përdoruesve si dhe gjenerimin e mesazheve të mundshëm të auditimit të sigurisë.
Nënsistemi i autoritetit lokal të sigurisë – Lsass – (ang. Local Security Authority
Subsystem) – Një proces që është aktiv në nivelin e përdoruesit dhe që ndodhet në shtegun
%SystemRoot%System32Lsass.exe . Ky proces është përgjegjës për politikat e sigurisë në
sistem lokal si p.sh se cili përdorues ka të drejt të kyçet në kompjuter, politikat e fjalëkalimeve,
caktimin e privilegjeve për përdoruesit dhe grupet e përdoruesve, tiparet e auditimit të sigurisë
së sistemit, autentifikimin e përdoruesve dhe dërgimin e mesazheve të auditimit në regjistrin e
ngjarjeve (ang. Event Log). Shërbimi i autoritetit lokal të sigurisë – Lsasrv.dll që ndodhet në
shtegun %SystemRoot%System32Lsasrv.dll paraqet një librari dinamike që ngarkohet nga
procesi Lsass për të implementuar shumicën e këtyre funksionaliteteve të përmendura më lartë.
7. Data baza e politikave të Lsass – paraqet një data bazë që
përmban politikat e sigurisë së sistemit. Kjo data bazë është e
vendosur në zonën e regjistrit të mbrojtur nga lista e kontrollit të
qasjeve ACL nën çelësin HKLMSECURITY. I përfshinë informatat
e tilla si: se çfarë domenet janë të besuara të autentifikojnë
përpjekjet e kyçjeve – logon, kush ka të leje të qaset në sistem, kujt i
janë caktuar çfarë privilegje dhe çfarë lloji i auditimit të sigurisë
duhet të kryhet. Data baza e politikave të Lsass gjithashtu mban
“sekretet” që përfshijnë informatat e kyçjes logon për informatat
logon të domenit që ndodhen në kesh dhe për kyçjet e shërbimeve
Windows me llogari të përdorueseve.
Menaxher i llogarive të sigurisë – SAM – (ang. Security
Accounts Manager) – shërbim që është përgjegjës për menaxhimin
e data bazës që përmban emrat e llogarive dhe grupet të definuar në
kompjuter lokal. Shërbimi SAM i cili implementohet në
%SystemRoot%System32Samsrv.dll ngarkohet në procesin
Lsass.
9. Data baza SAM – është një data bazë e cila përmban llogarit dhe grupet e definura lokale së
bashku me fjalëkalimet dhe atributet e tjera të tyre. Në domen kontroller, SAM nuk ruan
përdoruesit e definuar nga domeni, por ruan llogarin e definuar sistemore të administratorit
për qëllimet e rekuperimit. Kjo data bazë ruhet në regjistrin HKLMSAM.
Direktori Aktive (ang. Active Directory) – është shërbim direktorisë që përmban data bazën e
cila ruan informatat për objektet në domen. Domeni paraqet një grumbull të kompjuterëve dhe
grupet e tyre të asociuara të sigurisë që menaxhohen si një entitet i vetëm. Direkotoria aktive
ruan informatat rreth objekteve në domen duke përfshirë përdoruesit, grupet dhe kompjuterët.
Gjithashtu, në direktorinë aktive ruhen fjalëkalimet, privilegjet e përdoruesve të domenit dhe
grupeve përkatëse. Këto informata pastaj replikohen ndërmjet serverëve që kanë të instaluar
shërbimet e direktorisë aktive brenda të njëjtit domen. Server i direktorisë aktive i
implementuar si %SystemRoot%System32Ntdsa.dll vepron brenda procesit Lsass ashtu siç
është paraqitur në figurën 16.
Paketat e autentifikimit – Në këto paketa përfshihen librarit dinamike DLL që veprojnë si
në kontekstin e procesit Lsass gjithashtu edhe në procesin e përdoruesit, të cilët së bashku
implementojnë politikat e autentifikimit të Windows-it. Libraria dinamike – dll e autentifikimit
është përgjegjëse për autentifikimin e përdoruesit, duke kontrolluar se a përputhen emri I
llogarisë me fjalëkalimin e dhënë, dhe nëse po, atëherë do ti kthehet informata procesit Lsass
ku ceket niveli i sigurisë së përdoruesit, informatën të cilën do ta përdor procesi Lsass për të
gjeneruar tokenin përkatës.
10. Menaxheri interaktiv i kyçjes (ang. Interactive logon manager) – procesi që vepron në
nivelin e përdoruesit dhe ndodhet në shtegun %SystemRoot%System32Winlogon.exe i cili
është përgjegjës për t’iu përgjigjur kërkesave nga sekuenca SAS (ang. Secure Attention
Sequence) si dhe për të menaxhuar me sesionet e kyçjes (logon). Për shembull, Winlogon krijon
procesin e parë të përdoruesit kur kyçet në sistem operativ.
Ndërfaqja e kyçjes së përdoruesit (ang. Logon user interface) – është proces i nivelit të
përdoruesit që ndodhet në shtegun %SystemRoot%System32LogonUI.exe dhe është
përgjegjës për paraqitjen e ndërfaqes nëpërmjet të cilës përdoruesi mund ta autentifikoj vetën
në sistem. Procesi LogonUI përdor provajder të kredencialeve për të ekzekutuar pyetësor për
kredencialet e përdoruesve.
Provajder të kredencialeve – CP – (ang. Credential Providers) – janë objektet COM në
proces që veprojnë brenda procesit LogonUI, të nisur sipas kërkesës nga Winlogon kur
aktivizohet sekuenca SAS, dhe shërbejnë për të marr emrin dhe fjalëkalimin e përdoruesit, PIN
të smart-kartelës apo të dhënat biometrike si p.sh shenjat e gishtërinjve. Provajder standard të
kredencialeve ndodhen në %SystemRoot%System32authui.dll dhe
%SystemRoot%System32SmartcardCredentialProvider.dll
Shërbimi i kyçjes në rrjet – Netlogon (ang. Network Logon Service) – Shërbim i
Windows-it që ndodhet në %SystemRoot%System32LogonUI.exe dhe që është përgjegjës për
vendosjen e kanalit të sigurt me kontrollerin e domenit, nëpër të cilin do të dërgohen kërkesat e
sigurisë për validim të autentifikimit si p.sh një kyçje interaktive (nëse në kontroller domeni
është i instaluar Windows NT 4) apo LAN Manager ose NT LAN Manager të v1 dhe v2.
Netlogon gjithashtu përdoret për kyçjet në Direktorinë Aktive.
11. Siguria e kernelit për drajver të pajisjeve – KsecDD – (ang. Kernel Security
Device Driver) – është një librari e nivelit të kernelit që ka funksione që
implementojnë ndërfaqe të thirrjet e avancuara të procedurave lokale – ALPC (ang.
Advanced Local Procedure Call) që përdoren nga komponentët e sigurisë të nivelit
të përdoruesit, duke përfshirë këtu fajll sistemin e enkriptuar (EFS), për të
komunikuar me Lsass në nivelin e përdoruesit. KSecDD ndodhet në shtegun
%SystemRoot%System32DriversKsecdd.sys.
Applocker – është një mekanizëm i cili i mundëson administratorëve të
specifikojnë se cilët fajlla ekzekutiv, librarit dinamike DLL dhe skriptat mund të
përdoren nga përdoruesit apo grupet përkatëse. Applocker përbëhet nga drajveri
%SystemRoot%System32DriversAppId.sys dhe shërbimi
(%SystemRoot%System32AppIdSvc.dll që veprojnë në provesin SvcHost.
Procesi SRM (monitor referues i sigurisë) që vepron në nivelin e kernelit dhe procesi
LSASS (Nënsistemi i Autoriteti Lokal të Sigurisë) që vepron në nivelin e përdoruesit,
ndërmjet veti komunikojnë duke përdorur objektin për thirrjet e avancuara të
procedurave lokale – ALPC (ang. Advanced Local Procedure Call). Gjatë
inicializimit të sistemit, procesi SRM krijon portin me emër SeRmCommandPort,
në të cilin do të lidhet LSASS. Kur porcesi LSASS niset, do të krijoj një port ALPC
me emër SeLsaCommandPort ashtu siç është paraqitur në figurën 2.
13. SRM do të lidhet për këtë port, duke rezultuar në
krijimin e porteve private të komunikimit. Pastaj SRM do
të krijoj seksionet e memories së përbashkët për të gjitha
mesazhet që janë më të gjata se 256 bajt, duke i
pasuar handle(dorëz) për thirrjet e konektuara. Pasi të
jetë vendosur lidhja në mes të proceseve SRM dhe LSASS
gjatë inicilaizimit të sistemit, ata nuk do të dëgjojnë më
në portet e tyre të konektimit. Ky veprim është shumë i
rëndësishëm nga aspekti i sigurisë pasi që proceset e
mëvonshme qëllimkëqija që ekzekutohen nuk do të
mund të kyçen në mënyrë të suksesshme në asnjërin nga
këto dy porte.
14. Mbrojtja e objekteve
Mbrojtja e objekteve dhe regjistrimi i qasjeve paraqesin thelbin e auditimit
dhe të kontrollit të qasjes diskrete. Objektet që mund të mbrohen në
Windows janë:
Fajllat
Pajisje
Jobat
Proceset
Thredat
Seksionet e përbashkëta të memories
Ngjarjet (ang. Events)
Volumet
Tokenët e qasjes
Çelësat e rexhistrave
Serviset
Objektet e Direktorisë Aktive etj.
15. Në praktikë, objektet që nuk ekspozohen para nivelit të përdoruesit si p.sh objektet
drajver, zakonisht janë tëpambrojtur. Kjo për arsye se kodi i nivelit të Kernelit është
i besueshëm dhe zakonisht përdor ndërfaqe për tu lidhur me menaxherin e
objekteve i cili nuk performon kontrollin e qasjes. Pasi që resurset e sistemit që
eksportohen në nivelin e përdoruesit, dhe që kanë si kërkesë bazë verifikimin e
sigurisë, implementohen si objekte në nivelin e kernelit, atëherë menaxheri i
objekteve i Windows-it e luan rolin kyç në zbatimin e sigurisë së objekteve.
Për të kontrolluar se kush mund të veproj me objekte, sistemi i sigurisë së sistemit
operativ fillimisht duhet të definojë identitetin e secilit përdorues. Ky nevojë për të
garantuar identitetin e përdoruesit paraqet njërën nga arsyet kryesore se pse
Windows kërkon autentifikim gjatë kyçjes para se ti mundësohet qasja në resurset e
sistemit. Sistemi operativ Windows bënë izolimin dhe sigurimin e objekteve
ndërmjet përdoruesve duke aplikuar mekanizmin e integritetit duke implementuar
nivele të ndryshme të integritetit. Mekanizmi i Integritetit i Windows-it përdoret
nga këto komponentët:
Kontrolli i qasjes së përdoruesit (ang. User Access Controll) – UAC
Niveli i mbrojtur i Internet Eksplorer (ang. Protected Mode Internet Explorer) –
PMIE
Izolimi i privilegjeve të ndërfaqes së përdoruesit (ang. User Interface Privilege
Isolation) – UIPI
16. Kontrollet e qasjeve
Në momentin kur e hapet një objekt, modeli i sigurisë në Windows kërkon nga
thredi që të specifikojë se çfarë lloje të veprimeve kërkon të kryejë në objekt
përkatës. Menaxheri i objekteve i referohet SRM-së (ang. Security Reference
Monitor) për të kryer verifikimet e qasjeve duke u bazuar në qasjen e kërkuar nga
thredi, dhe nëse i mundësohet qasja, atëherë procesit të thredi do ti caktohet
një handel (dorëz) me të cilin thredi përkatës apo edhe thredat të tjerë mund të
zbatojnë veprimet tjera në proces.
Kur një objekt hapet sipas emrit, menaxheri i objekteve do të kryej një kërkim për
objektin e caktuar në hapësirën e fushës së vetë emërtuese. Nëse objekti nuk
ndodhet në hapësirën e fushës emërtuese sekondare siç është fusha emërtuese e
regjistrit të menaxherit të konfigurimeve atëherë menaxheri i objekteve do të
thërrasë funksionon e brendshëm ObpCreatHandle në momentin kur do ta lokalizoj
objektin e dëshiruar. Funksioni ObpCreatHandle krijon një hyrje në
tabelën handle të proceseve, e cila hyrje pastaj asociohet me objektin përkatës.
Funksioni ObpGrantAccess shërben për ti dhënë qasje objektit përkatës ndërsa
funksioni ObpCheckObjectAccesskontrollon kredencialet e sigurisë të thredit që e
hap objektin, llojin e qasjes në objekt të kërkuar nga thredi si p.sh lexo, shkruaj,
fshijë etj (ang. read, writte, delete etc).
17. Identifikuesit e sigurisë – SID
Në vend të përdorimit të emrave për të identifikuar subjektet që kryejnë veprime në një sistem, Windows
përdor identifikues të sigurisë – SID (ang. Security Identifiers). Në sistemin operativ Windows objektet qe
kanë SID janë:
Përdoruesit
Grupet lokale
Grupet e domenit
Kompjuterët lokal
Domenet
Anëtarët e domenit
Shërbimet
Identifikuesi i sigurisë SID është një vlerë numerike me gjatësi variabile që përbëhet nga numri i rishikimit
strukturor, një vlerë 48 bitëshe e autoritetit identifikues, dhe një numër variabil 32 bitësh të nën-autoritetit
apo vlera e identifikuesit relativ (RID). Vlera e autoritetit identifikon agjentin që e ka lëshuar SID-in, dhe
zakonisht ky agjent përfaqëson sistemin lokal të Windowsit apo atë të domenit. Vlerat e nën-autoritetit
identifikojnë entitete të beseshëm që janë relative me autoritete të lëshimit dhe RID praqet thjeshtë një
mënyrë për të krijuar SID unik duke u bazuar në baën e SID-it të rëndomtë. Për arsye se vlera e SID është
shumë e gjatë, sistemi operativ Windows gjeneron vlerat SID me metodën e rastësisë (ang. random) gjë që e
bënë të pamundur qv sistemi operativ të lëshojë dy vlera të njëjta SID në një domen apo kudo në botë.
Kur shfaqet tekstualisht, secili SID mban një prefiks S ndërsa komponentët e ndryshme të tij janë të ndarë nga
vijat ashtu siç është paraqitur në shembullin më poshtë.
S-1-5-21-1463437245-1224812800-863842198-1128
18. Në këtë shembull të SID, numri i rishikimit është 1, vlera e autoritetit identifikues është 5,
ndërsa katër vlera numerike në vazhdim paraqesin vlerat e nën-autoriteteve të pasuara në fund
nga vlera e identifikuesit relativ – RID që përfaqësohet në shembullin tonë me 1128.
Kur e instalojmë sistemin operativ, programi setup i Windows-it i cakton kompjuterit një
identifikues të sigurisë SID. Secili SID i llogarive lokale bazohen në SID-in burimor të
kompjuterit lokal që pasohet në fund nga identifikuesi relativ RID. Vlerat RID për llogarit e
përdoruesve dhe grupeve fillon nga 1000 dhe ritet në inkrement për 1 për çdo përdorues apo
grup që shtohet në sistem operativ. Përdorimi i veglës DCPromo.exe në një server (ang. Domain
Controller Promote), për krijimin e domenit të ri, do të ri-përdor vlerën ekzistuese SID ndërsa
në rastin kur serveri do të degradohet nga funksioni i Domen Kontrollerit atëherë sistemi
operativ do të ri-krijojë verën e re SID. Çdo llogari që krijohet në domen, sistemi operativ
Windows, do ti caktoj nga një SID çdo kompjuteri në domen që bazohet në SID të domenit që
do ta ketë të bashkangjitur një vlerë RID. Kështu për shembull, vlera RID 1028 që bashkëngjitet
në fund të SID-it nënkupton se ky SID është i 29-i që është lëshuar nga domeni kontrolleri.
Windows i cakton vlerat SID llogarive dhe grupeve me vlerën RID të paracaktuar. Kështu për
shembull vlera RID për llogarinë e administratorit është 500 ndërsa për llogarin guest është
501. Shembull i një SID të administratorit është dhënë në vazhdim.
S-1-5-21-13124455-12541255-61235125-500
19. Në tabelën në vazhdim paraqet disa vlera mirë të
njohura SID të analizuara nga dokumentacioni i
Windows SDK.
20. Sistemi operativ Windows definon numrat SID për
llogarit lokale dhe të domenit të ndërtuara nga
sistemi që përfaqësojnë grupet mirë të njohura. Për
shembull, SID që përfaqëson cilindo dhe të gjitha
llogaritë, përveç llogarive anonime, i takon
kategorisë SID Everyone dhe ka vlerën – S-1-1-0.
Një shembull tjetër është SID që përfaqëson grupin e
rrjetës që përfaqëson përdoruesit e kyçur nga rrjeta
në sistem. Vlera e SID për grupin e rrjetës është S-1-
5-2.
21. Nivelet e Integritetit
Nivelet e integritetit mund të anashkalojnë qasjen diskerete për të
diferencuar një proces dhe objekt që është në pronësi nga i njëjti
përdorues, duke na ofruar mundëson për të izoluar kodin dhe të
dhënat brenda llogaris së përdoruesit. Mekanizmi i kontrollit
mandator të integritetit – MIC (ang. Mandatory Integrity Controll) i
lejon SRM-së të ketë informata më të detaizuara lidhur me natyrën
e thirrjes duke e asociuar atë me nivelin e integritetit. Ky
mekanizëm gjithashtu ofron informata për besueshmërinë e
nevojshme për tu qasur në objekt duke definuar nivelin përkatës të
integritetit për atë objekt specifik.
Nivelet e integritetit përcaktohen nga SID. Edhepse nivelet e
integritetit mund të jenë vlera arbitrare, sistemi përdor pesë nivele
primare për të ndarë nivelet e privilegjuara, ashtu siç është
përshkruar në tabelën në vazhdim.
22.
23. Secili proces ka nivelin e integritetit që është i përfaqësuar në
tokenin e procesit dhe i propaguar sipas rregullave të
përshkruara në vazhdim:
Procesi zakonisht trashëgon nivelin e integritetit nga prindi i
tij.
Nëse objektit fajll i imazhit të ekzekutueshëm të cilit i takon
procesi fëmijë ka nivelin e integritetit dhe se niveli i
integritetit të procesit prind është i mesëm apo i lartë, atëher
procesi fëmijë do të trashëgoj nivelin më të ulët nga të dy.
Procesi prind mund të krijoj procesin fëmijë me nivelin
eksplicit të integritetit që është më ulët se niveli i integritetit
të vet. Si shembull mund të përmendim nisjen e Internet
Explorer në nivelin e mbrojtur nga dritarja CMD me nivel të
ngritur.
24. Tokenët
SRM (monitor referues i sigurisë) përdor objektet e quajtura “Token” për të identifikuar
kontekstin e sigurisë së procesit apo thredit. Konteksti i sigurisë përbëhet nga informatat që
përshkruajnë llogaritë, grupet dhe privilegjet e asociuara me procesin apo thredin. Tokenët
gjithashtu përmbajnë informatat lidhur me ID të sesioneve, nivelin e integritetit dhe gjendjen e
virtualizuar të UAC (User Account Control).
Gjatë procesit të kyçjes – logon, LSASS krijon një token fillestar për të përfaqësuar përdoruesit
e kyçur në sistem. Pastaj përcakton nëse përdoruesi që kyçet është anëtar i një grupi të
fuqishëm apo posedon privilegjet e fuqishme. Disa nga grupet që kontrollohen në këtë rast janë
dhënë në vazhdim:
Built-in Administrators
Domain administrators
Enterprise Administrators
Schema Administrators
Domain Controllers
Account Operators
Print Operator
Mekanizmat e sigurisë në Windows përdorin dy komponentët për të përcaktuar se në cilët
objekte mund të qasemi dhe çfarë operacionet e sigurisë mund të kryhen. Një komponentë
përbëhet nga tokeni i SID të llogarisë së përdoruesit dhe nga fushat e SID të grupeve. Monitori
referues i sigurisë – SRM përdor SID për të përcaktuar se nëse procesi apo thredi mund të
fitojnë qasje të nevojshme në një objekt të siguruar, siç mund të jetë një fajll në NTFS.