UnSecure Microsoft Windows
18.12.2020

Vgrajeni sistemi za informacijsko varnost v Microsoft Windows, ki jih morate samo aktivirati

Moderna programska oprema vsebuje vse več vrstic kode. Ta lahko vsebujejo pomanjkljivosti in neželene napake, ki so jih nehote ustvarili razvijalci. Takšne napake predstavljajo ranljivosti, ki jih iščejo napadalci za namen zlorabe. Ena pogostejših zlorab, ki se nanaša na programsko kodo so t.i. napadi na pomnilnik.

Že od začetka tisočletja Microsoft uporabnike svojih operacijskih sistemov z različnimi orodji in metodami ščiti pred napadi na pomnilnik. V zadnjih letih se je razvoj zaščit pred potencialnimi zlorabami pomnilnika še povečal. Tako smo v zadnjih verzijah Windows (10 in Server) pridobili orodja in metode, ki nudijo precej večji nivo zaščite kot v preteklosti: Zaščito integritete kode (ang. Code Integrity Guard – CIG), zaščito pred poljubno kodo (ang. Arbitrary Code Guard – ACG), zaščito pred spremembo poteka izvajanja kode (ang. Control Flow Guard – CFG) in senčni sklad (ang. Shadow Stack). Dodatno sta se omenjenim rešitvam pridružili še naključno razporejanje izvajanja programov (ang. Adress Space Layout Randomization – ASLR) in zaščita pred izvajanjem določene programske opreme (ang. Data Execution Prevention – DEP). Poleg omenjenih vgrajenih zaščit v moderne verzije operacijskega sistema Windows obstajajo tudi rešitve drugih ponudnikov programske opreme, ki se jih lahko uporabi pri naslavljanju omenjenih izzivov.

Microsoft pa ni poskrbel zgolj za to, da vaše okolje zaščiti pred napadi na pomnilnik. V moderne verzije operacijskega sistema Windows je vgrajena še kopica ostalih mehanizmov, ki vaše okolje uspešno ščiti pred izgubo, puščanjem, krajo ali zlorabo podatkov in poverilnic z zlonamerno programsko opremo.

Če so omogočene in pravilno nastavljene, Microsoftove rešitve, ki so del operacijskega sistema Windows, omogočajo veliko stopnjo zaščite pred zlonamernimi poskusi kibernetskih kriminalcev oziroma hekerjev. Za varnejše IT-okolje zato ni potrebno kupovati dodatnih rešitev, ker vse to že vsebuje vaša programska oprema.

O napadih na pomnilnik (DMA Attacks)

Napadi na pomnilnik so zelo razširjeni in povzročajo ogromno poslovne škode. Glede na lansko poročilo MITRE so napadi na pomnilnik celo najbolj obsežni in imajo najhujše posledice. Večina teh napadov je usmerjena v ranljivosti operacijskega sistema Microsoft Windows. To je verjetno tudi razlog za zelo prisoten napačen vtis, da so Microsoftova orodja in aplikacije med najbolj nevarnimi in ranljivimi. To ni res. Microsoftove rešitve so med varnejšimi na trgu, vendar so zaradi vseprisotnosti v poslovnih in domačih okoljih pogosto prva tarča kibernetskih kriminalcev. Seveda so zaradi zgodovinskih razlogov in združljivosti za nazaj določne verzije in deli Microsoftove programske opreme resnično ranljivi. Tako je recimo celo Microsoft sam odsvetoval uporabo določenih delov, npr. SMBv1, že precej časa preden so bili zlorabljeni v uničujočih kibernetskih napadih.

Dejstvo je, da so moderna Microsoftova okolja lahko zelo varna, če jih pravilno nastavite. V tem prispevku bom zato predstavil vgrajena oziroma sistemska Microsoftova orodja za zaščito pred napadi na pomnilnik. Prav tako bom predstavil še nekatere dodatne koristne Microsoftove rešitve, ki so vgrajene v moderne Windows sisteme in vam omogočajo višji nivo kibernetske varnosti. Ker so del Windows okolij, so za večino organizacij brezplačne.

Zgodovina onemogočanja napadov na pomnilnik v Microsoft Windows

Za zaščito okolij Windows pred napadi na pomnilnik je danes na voljo kar nekaj rešitev. A ker še kar precej organizacij uporablja starejše različice sistemov Windows, namenimo najprej nekaj besed rešitvam iz teh okolij. V zgodnjih 2000-ih sta bili razviti rešitvi Address Space Layout Randomization (ASLR) in Data Execution Prevention (DEP). ASLR preprečuje izkoriščanje napadov, ki nastanejo zaradi poškodbe pomnilnika (memory corruption). Z naključnim izbiranjem osnovnega naslova programa vsakič, ko se ta zažene, preprečuje, da bi bil en izkoriščevalski program (exploit) učinkovit na vseh napravah. Slabost ASLR je, da se celoten program premakne kot ena enota. Po drugi strani DEP preprečuje napade, ki poskušajo izvršiti kodo iz delov sistemskega pomnilnika, ki so rezervirani za pooblaščene programe. Izvajanje kode iz rezerviranih delov pomnilnika lahko povzroči vbrizgavanje kode (code injection) in višanje privilegijev (privilege escalation).

Zelo priljubljeno orodje med strokovnjaki za kibernetsko varnost je bilo Enhanced Mitigation Experience Toolkit (EMET). EMET je uporabljal 12 tehnik ublažitve, vključno z DEP, ASLR, pripenjanjem zaupanja v certifikate (certificate trust pinning), itd. Ko je bil nameščen, ga je bilo potrebno konfigurirati za zaščito določenega dela programske opreme. EMET se danes ne uporablja tako pogosto, saj ga od leta 2018 ne razvijajo oz. ne podpirajo več. Prav tako ni združljiv z najnovejšimi različicami sistema Windows.

Najnovejši načini onemogočanja napadov na pomnilnik v Microsoft Windows

Microsoft Windows 10 seveda premore novejše rešitve, ki dopolnjujejo tiste opisane v prejšnjem odstavku. Izpostavil bi modula Code Integrity Guard (CIG) in Arbitrary Code Guard (ACG), ki se uporabljata za preprečevanje generiranja poljubne kode. Tudi Control Flow Guard (CFG) in Shadow Stack sta pomembna, saj se uporabljata za preprečevanje ugrabitve nadzornega toka (control-flow hijacking).

Tipični napad preplavitve medpomnilnika (buffer overflow) izkorišča napako v programski kodi. Ko razvijalec/razvijalka omogoči vhodno funkcijo za nekatere parametre (tipkovnica, parametri ukazne vrstice, klic spletnega URI, itd.), bi moral omogočiti tudi preverjanje dolžine vnosnega polja. Če tega v kodi ni in se uporablja funkcija neposrednega kopiranja, je program nagnjen k izkoriščanju pomnilnika in tako posledično ranljiv. Namreč, ko se izvrši funkcija neposrednega kopiranja kode, le-ta postavi parametre in vrne naslov v sklad. Če napadalec v tem trenutku poda daljši parameter od predvidenega, doseže prepisovanje pomnilnika. kar lahko zagotovi nov povratni naslov in izvajanje poljubne zlonamerne kode.

Code Integrity Guard (CIG) zavrača nalaganje vseh nepravilno podpisanih izvršljivih datotek in preprečuje ustvarjanje ranljivih podrejenih procesov. Za spremljanje ustvarjanja procesov izkorišča pravilnike integritete kode uporabniškega načina, ki se preverijo pri ustvarjanju procesa. CIG skrbi samo za ranljive podrejene procese in zagotavlja, da je mogoče naložiti samo podpisane dinamične knjižnice (DLL). CIG ne zagotavlja nobenega jamstva za stanje kode po nalaganju v pomnilnik. Na tem mestu nastopi Arbitrary Code Guard (ACG). Če je omogočen, jedro sistema Windows prepreči procesu ustvarjanje ali spreminjanje kodnih strani v pomnilniku. Če sta omogočena CIG in ACG hkrati, lahko proces v pomnilnik vpiše le podpisane kodne strani.

Tehnologija Control Flow Guard (CFG) je razširitev mehanizmov DEP in ASLR. CFG ščiti Windows sisteme pred pomnilniškimi ranljivostmi tako, da postavlja stroge omejitve glede izvajanja posrednih klicev funkcij. Prav tako opredeljuje nabor funkcij v aplikaciji, ki bi lahko bile potencialne tarče. CFG ustvari bitno sliko za posamezen proces, kjer nastavljeni bit označuje, da je naslov veljaven cilj za posredni klic funkcije.

Shadow Stack predstavlja novo generacijo orodij za preprečevanje ugrabitve nadzornega toka. Trenutno je še v fazi razvoja, njegov namen pa bo preprečevanje ugrabitve povratnega naslova funkcije. Delovanje Shadow stack-a je povsem preprosto. Uporablja drugi sklad, t.i. Shadow stack, ki je z uporabo procesorskih funkcij zaščiten pred posegi. V prologu funkcije ta shrani svoj povratni naslov v kličoč sklad in v Shadow stack. V epilogu funkcije se povratni naslovi pokličejo tako iz kličočega sklada kot iz Shadow stack-a, ter se primerjajo. Če se naslovi razlikujejo, procesor signalizira izjemo.

Poleg opisanih tehnologij so seveda na voljo tudi komercialne rešitve za preprečevanje napadov na pomnilnik, kot so McAfee’s Application Control, Virsec Application Memory Firewall in RunSafe Security Alkemist. A kot ste lahko prebrali, boste že z omogočanjem vgrajenih orodij vaše okolje Windows zelo dobro zaščitili.

Dodatne brezplačne rešitve za večjo varnost Microsoft Windows okolij

Rešitve za obrambo pred napadi na pomnilnik so samo del vgrajenih mehanizmov za kibernetsko obrambo v najnovejši različica sistema Windows 10. Izredno pomembne in učinkovite so tudi ostale, ki jih lahko razdelimo v tri skupine:

  • upravljanje identitete in dostopa,
  • zaščita pred grožnjami,
  • zaščita in varovanje podatkov.

Napad kraje poverilnic (credential theft) je eden najbolj pogostih za zlorabo identitet in dostopa. Napadalcu omogoči, da lahko z ustreznimi privilegiji (privilegiji za odpravljanje napak) dostopa do poverilnic, shranjenih v pomnilniku napadenega sistema. Če končna točka ni pravilno konfigurirana in varnostno utrjena, se poveča verjetnost uspešne kraje poverilnic. Eno najbolj priljubljenih orodij za uporabo pri kraji poverilnic je Mimikatz in njegove variacije. Z uporabo funkcije Hyper-V in varnosti strojne opreme, Windows ponuja varno virtualizirano okolje, v katerem je območje pomnilnika izolirano in ni na voljo običajnemu operacijskemu sistemu. Eno od orodij, ki izkorišča ta t.i. virtualization-based security (VBS), je Credential Guard (CG). VBS  poverilnice varno shranjuje v  izoliranem območju pomnilnika, zato jih ni mogoče izpisati iz pomnilnika.

Na področju zaščite pred grožnjami je trenutno najbolj napredna rešitev Microsoft Defender for Endpoint. Poleg klasične napredne zaščite pred grožnjami, ki se uporablja v programu Microsoft Defender Antivirus, zbira podatke iz vedenjskih senzorjev končnih točk, ki so integrirani v sistemu Windows; prav tako uporablja moč oblaka in podatke iz virov obveščanj o grožnjah (threat intelligence). Microsoft Defender for Endpoint je orodje, ki lahko močno izboljša zaščito vašega okolja in vas opozori, ko pride do neobičajnih procesov in dejanj. Najnovejši podatki neodvisnih institucij, ki primerjajo protivirusne rešitve, kažejo, da večini organizacij ni potrebno zapravljati dodatnega denarja za samostojno protivirusno rešitev.

Zadnja skupina rešitev je namenjena zaščiti informacij in varovanju podatkov. BitLocker ščiti organizacije pred izpostavljenostjo in krajo podatkov. Če želite BitLocker kar najbolje izkoristiti, ga morate uporabiti z modulom Trusted Platform Module (TPM), ki zagotavlja, da računalnik ni posegal v podatke, medtem ko je bil sistem ugasnjen. Da bi ustavili kakršno koli nenamerno uhajanje podatkov, Windows ponuja rešitev Windows Information Protection (WIP). WIP uporablja nabor pravilnikov po meri za upravljanje in varovanje podatkov podjetja, prav tako pa omogoča odstranjevanje dostopa do podatkov, iz naprav v lasti podjetja in tudi zasebnih naprav, brez spreminjanja zasebnih podatkov shranjenih v napravah.

Microsoftov Windows vam ponuja zelo veliko varnosti. Izkoristite jo!

Kot vidite, najnovejši Microsoft Windows ponuja veliko vgrajenih rešitev za varovanje vašega okolja in poslovanja pred sodobnimi kibernetskimi napadi. Z uporabo in pravilno konfiguracijo sistemskih oziroma vgrajenih tehnologij rešitev lahko zaščitite svoje naprave pred napadi na osnovi pomnilnika, varno uporabljate skrivnosti in poverilnice, ter zaščitite podatke pred izpostavljenostjo, uhajanjem, izgubo ali krajo. Seveda obstajajo tudi samostojne rešitve, ki so mogoče za določene poslovne zahteve primernejše, vsekakor pa je Microsoft s ponudbo sistemskih tehnologij za kibernetsko obrambo Windows okolij naredil "kvantni preskok" v  zmožnosti varovanja vašega IT-okolja oz. posla.

 

Avtor: Jakob Premrn, varnostni analitik v NIL-ovem varnostno operativnem centru (SOC)