EMET - Enhanced Mitigation Experience Toolkit

Mainitsin EMET-työkalusta jo Blackhat-konferenssia koskevassa blogiartikkelissa - Microsoft julkaisi EMET-työkalusta uuden 2.0-version viikonloppuna. EMEThän  tulee sanoista Enhanced Mitigation Experience Toolkit. Työkalun tarkoituksena on mahdollistaa erilaisten muistinsuojausten määrittäminen joko koko järjestelmän tasolla tai sitten jollekin yksittäiselle sovellukselle. No entäpä sitten? Onhan noita asetuksia ennenkin voinut määrittää. Joo, kyllä, asetuksia on ennenkin voinut määrittää järjestelmän tasolla. EMET-työkalu vain kokoa asetukset yhteen paikkaan.

Sen sijaan yksittäisen sovelluksen tasolla määrityksiä on aiemmin voinut tehdä huomattavasti rajoitetummin. Joidenkin muistinsuojausasetusten määrittäminen on vaatinut, että määritys tehdään sovelluksen lähdekoodiin tai käännöstietoihin jo käännösvaiheessa, mikä on vaikeuttanut määritysten tekemistä. Nyt EMETin avulla määritykset voidaan tehdä mille tahansa sovellukselle huolimatta siitä, onko sovelluksesta käytössä lähdekoodia vai ei.

Muistinsuojauksia - miksi haluaisin suojata järjestelmän muistia? Ulkoisten tietoturvauhkien kehittyessä viimeisten muutaman vuoden aikana myös käyttöjärjestelmiin on lisätty erilaisia muistinsuojauksia, joiden tarkoituksena on estää tietynlaisten haavoittuvuuksien hyödyntäminen hyökkäystarkoituksiin. Tunnetuimpia näistä ovat varmasti pinon suojaaminen erilaisilta yli- ja alivuodoilta sekä ns. No Execute -suojaus, jonka tehtävänä on suojata heap-muistia ja josta Windowsissa käytetään nimitystä Data Execution Prevention. Näistä ensimmäisen lisättiin WIndowsiin XP-version Service Pack 2:n myötä. Ja näin myös EMET-työkalu tukee eri Windows-versioita aina Windows XP:n Service Pack 3:sta alkaen (Service PAck 2 ei ole enää tuen piirissä).

Mitä nämä muistinsuojaukset ovat:
- Ensimmäinen näistä on DEP, eli Data Execution Prevention. DEPin tarkoituksena on suojata sovelluksen varaamaa Heap- eli käyttömuistia. Normaalisti sovellus varaa tarvitsemansa muistialueet ns. Heap-muistista. Näihin muistialueisiin voidaan sijoittaa sekä sovelluksen tarvitsemaa dataa että suoritettavaa koodia. Monet heap-muistia hyväksikäyttävät "exploitit" perustuvat siihen, että sovellus saadaan varaamaan mistia datalle, mutta datan sijasta muistiin sijoitetaankin suoritettavaa koodia, joka sitten esimerkiksi jonkin haavoittuvuuden välityksellä päästään suorittamaan. DEPin avulla varattu muistialue voidaan määrittää niin, että siellä olevaa "data" ei voi suorittaa. Tämä toiminnallisuus vaatii vastaavan tuen myös käytettävältä prosessorilta, mutta useimmat prossut (sekä Intelin että AMD:n) sitä jo tukevat.
- Toinen suojaus on SEHOP, eli Structured Exeption Handler Overwrite Protection. Tämän avulla suojataan sovelluksen omaa poikkeukset määrittävää taulukkoa niin, että ulkopuolinen hyökjkääjä ei pääse muuttamaan sitä omia tarkoituksiaan varten.
- Työkalu tukee myös ASLR:n eli Address Space Layout Randomization -suojauksen määrittämistä. ASLR sijoittaa esim. sovelluksen muistiin ladattavia DLL-kirjastoja satunnaiseen sijaintiin sovelluksen muistiavaruudessa, jolloin ulkopuolisen hyökkääjän on huomattavasti vaikeampaa arvata ja käyttää tunnettuja ohjelmakoodin pätkiä.  
- Heapspray allocation ja Null page allocation liittyvät jälleen Heap-muistin käyttöön. Näiden avulla estetään jo tiedossa olevia tai tulevia Heap-muistiin liittyviä hyökkäyksiä.
- Viimeisenä tuettuna suojauksena on EAF eli Export Address Table Access Filtering. Tämän suojauksen tehtävänä on säädellä, miten sovelluksesta päästään käsiksi eri ladattujen ohjelmamoduulien export-taulukoita, joiden kautta saadaan tietoja erilaisten toiminnallisuuksien muistiosoitteista.

Näistä DEP, SEHOP ja ASLR voidaan määrittää niin, että asetus kattaa koko järjestelmän, eli kaikki suorituksessa olevat sovellukset. Ja kaikki kuusi voidaan määrittää tarkemmin per sovellus erikseen.

Lisätietoja näistä kaikista löytyy EMETin omasta käsikirjasta, joka asentuu koneelle työkalun mukana, ja myös esimerkiksi Security Research and Defense -blogista osoitteesta http://blogs.technet.com/b/srd/. EMETistä on myös tehty lyhyt koulutusvideo, joka löytyy täältä. Ja lopuksi - itse työkalun voi ladata Microsoftin lataussivustosta.