View
393
Download
14
Category
Preview:
DESCRIPTION
Infotehnoloogiliste ekspertiiside uuringud - magistritöö. Terry London 08.09.2008. Tallinna Tehnikaülikool. Käesolevas magistritöös antakse ülevaade infotehnoloogiaekspertiiside läbiviimisest ja tõendite esitlemisest kohtus, käsitletakse NT-põhiste Windows operatsioonisüsteemide ja NTFS failisüsteemi toimimist ning uuritakse süsteemi iseärasuste rakendamist ekspertarvamuse andmisel. Töös analüüsitakse operatsioonisüsteemi Microsoft Windows XP ja selle failisüsteemi NTFS kohtuinfotehnoloogilise ekspertiisi vaatenurgast. Magistritöö kirjutamist alustati Politseiameti halduses asuva Kohtuekspertiisi ja Kriminalistika Keskuse (KEKK) dokumendiosakonna infotehnoloogiavaldkonna ekspertiisilabori arendustööga paralleelselt. Töö tulemuseks on kõrgemal tasemel arvutiekspertide ning vaatluste läbiviijate juhendmaterjal ning uurimustöö NTFS failisüsteemist. Töö koosneb seletuskirjast 84 lehel ja sisaldab 2 lisa.
Citation preview
TALLINNA TEHNIKAÜLIKOOL
AUTOMAATIKAINSTITUUT
Automaatjuhtimise ja süsteemianalüüsi õppetool
IAY34LT
Terry London
INFOTEHNOLOOGILISTE EKSPERTIISIDE UURINGUDMagistritöö
Juhendaja: dots. R. Paluoja ………
Lõpetaja: Terry London ..……..
TALLINN 2008
Autorideklaratsioon
Olen koostanud antud töö iseseisvalt. Kõik töö koostamisel kasutatud teiste autorite tööd,
olulised seisukohad, kirjandusallikatest ja mujalt pärinevad andmed on viidatud.
Kuupäev:
Ees- ja perekonnanimi:
Allkiri:
2
Annotatsioon
Magistriõppe lõputöö
Lõpetaja T. London
Juhendaja R. Paluoja
Tallinna Tehnikaülikool 2008
Käesolevas magistritöös antakse ülevaade infotehnoloogiaekspertiiside läbiviimisest ja
tõendite esitlemisest kohtus, käsitletakse NT-põhiste Windows operatsioonisüsteemide ja
NTFS failisüsteemi toimimist ning uuritakse süsteemi iseärasuste rakendamist
ekspertarvamuse andmisel. Töös analüüsitakse operatsioonisüsteemi Microsoft Windows XP
ja selle failisüsteemi NTFS kohtuinfotehnoloogilise ekspertiisi vaatenurgast.
Magistritöö kirjutamist alustati Politseiameti halduses asuva Kohtuekspertiisi ja
Kriminalistika Keskuse (KEKK) dokumendiosakonna infotehnoloogiavaldkonna
ekspertiisilabori arendustööga paralleelselt. Töö tulemuseks on kõrgemal tasemel
arvutiekspertide ning vaatluste läbiviijate juhendmaterjal ning uurimustöö NTFS
failisüsteemist.
Töö koosneb seletuskirjast 84 lehel ja sisaldab 2 lisa.
3
Annot
Master's thesis
Graduate T. London
Supervisor R. Paluoja
Tallinn University of Technology 2008
The master's thesis gives overview processing forensic examinations and using the result of
examination in legal proceedings. Analyzes the performance of NT-based Windows operating
system and NTFS file system and explores using hidden artefacts as evidence in forensic
report.
Part of the master's thesis has been written during the work process of the questioned
document department's informational technology laboratory in the Forensic Service Centre of
Estonian Police. The result of thesis is guide for advanced level computer forensic
examinations and research paper of NTFS file system.
The work consists of text on 84 pages included 2 appendixes.
4
Sisukord
Annotatsioon...............................................................................................................................3
Annot..........................................................................................................................................4
Töös kasutatud lühendid.............................................................................................................7
Töös kasutatud terminid.............................................................................................................8
Sissejuhatus................................................................................................................................9
Hetkeseis kohtuinfotehnoloogia uuringutes.........................................................................10
1 .Läbilõige infotehnoloogilisest kohtuekspertiisist................................................................13
1.1 Arvuti kui tundlik asitõend...........................................................................................13
1.1.1 Andmete muutumatuse tagamine arvuti käitlemisel.............................................14
1.2 Andmete autentsuse tagamise üldised põhimõtted.......................................................15
1.3 Andmed andmekandjal - sissejuhatus failisüsteemidesse.............................................16
1.3.1 Andmete taastamine ja hävitamine.......................................................................17
1.3.2 Signatuurid – failide ja partitsioonide taastamine.................................................18
1.3.3 Digitaalsed fotod ja nende taastamine...................................................................19
1.4 Asitõendi esitlemine kohtuistungil...............................................................................20
2 .Tänapäevane operatsioonisüsteem.......................................................................................22
2.1 Kasutaja jäljed NT-põhistes operatsioonisüsteemides..................................................22
2.1.1 Operatsioonisüsteemi tüübi tuvastamine...............................................................23
2.1.2 Kasutajat kirjeldavad failid ja kataloogid..............................................................24
2.2 NT-põhise Windows'i register......................................................................................34
2.2.2 Registri kirjed........................................................................................................35
2.3 NT-põhise Windows'i logimissüsteem.........................................................................42
2.3.1 Sündmuste logimine..............................................................................................42
2.3.2 $LogFile................................................................................................................43
5
2.4 Failisüsteem NTFS........................................................................................................45
2.4.2 NTFS vormindamine.............................................................................................48
2.4.3 NTFS'i süsteemifailid............................................................................................50
2.4.4 Failisüsteemi struktuur..........................................................................................51
2.4.5 Peafailitabel MFT..................................................................................................53
2.4.6 Failid NTFS'is.......................................................................................................56
3 .Meetodid..............................................................................................................................64
3.1 Kettapartitsioonide taastamine......................................................................................64
3.1.1 Alglaadesektoril on partitsioonikirjed alles...........................................................64
3.1.2 Alglaadesektori partitsioonikirjed on vigased.......................................................65
3.1.3 Partitsiooni alglaadekirje analüüs partitsiooni taastamiseks.................................66
3.1.4 Partitsiooni alglaadekirje analüüs NTFS failitabeli leidmiseks............................67
3.2 Andmete taastamine partitsiooni failide poolt hõivamata alalt.....................................67
3.2.1 Faili andmete taastamine.......................................................................................67
4 .Rakendus andmekandjate madaltasemel sirvimiseks..........................................................70
Kokkuvõte................................................................................................................................73
Kasutatud kirjandus..................................................................................................................75
Lisad.........................................................................................................................................76
Lisa 1 – Rakenduse kettalugemise lähtekood......................................................................77
Lisa 2 – Täiendav info Windows süsteemi uurimisel..........................................................83
6
Töös kasutatud lühendid
LMA – loomise, muutmise ja viimati avamise ajad (ingl. k - created, modified, last accessed)
MFT – NTFS'i peafailitabel (Master File Table)
NTFS – Windows failisüsteem (New Technology File System)
FAT – failihõivetabel, Windows failisüsteem (File Allocation Table)
RAM – muutmälu, suvapöördusmälu
EMF – arendatud metafaili formaat (Enhanced Metafile Format)
SID – Turvaidentifikaator (Security Identifier)
UID – kasutaja identifikaator (User Identifier)
RID – suhteline identifikaator (Relative Identifier)
MBR – alglaadesektor (Master Boot Record)
VBR – partitsiooni alglaadesektor (Volume Boot Record)
NTLDR – operatsioonisüsteemi NT alglaadekood (NT Loader)
PS: – füüsiline sektor (Physical Sector)
SO: – sektori ofset (Sector Offset)
FO: – faili ofset (File Offset)
LE: – valitud lõigu pikkus baitides (Lenght)
7
Töös kasutatud terminid
Ofset – nihe baitides andmehulga, faili, sektori või klastri mõttelisest alguspunktist. Näiteks,
MBR'i sektori ofsetil (SO) 446 algab partitsioonitabel ning selle leidmiseks tuleb
andmekandja esimeselt sektorilt leida 446. bait.
Klaster (cluster) – NTFS ja FAT failisüsteemides sektoritest koosnev minimaalne andmeala,
mis on failisüsteemi poolt eraldatud ühe andmefaili hoidmiseks.
GUID – globaalselt unikaalne identifikaator. 128-bitine täisarv, mida kasutatakse sarnaste
objektide identifitseerimisel. Kasutusel põhiliselt Microsoft'i süsteemides ning Windows
registris. Esitatakse tihti kujul {3F2504E0-4F89-11D3-9A0C-0305E82C3301}
Dword – 32 biti suurune üksus x86 protsessoriplatvormidel (double word). Vastavalt qword
64 bitti (quadruple word).
8
Sissejuhatus
Arvuti on osutunud täiuslikuks infoallikaks erinevate kuritegude uurimisel. Tegu on
asitõendiga, mis tänu oma universaalsusele katab kõik valdkonnad, mis on seotud
andmevahetuse või infotöötlusega. Dokumendid, pildid, internetilehtede külastused,
jututubade logid võivad olla seotud mistahes kuritegudega alates lihtsate vargustega ja
lõpetades alaealiste väärkohtlemise, mõrvade ning narkokuritegudega. Arvutite kohtulik
ekspertuuring ei puuduta vaid arvutikuritegusid. Andmekandjal olemasolevate failide
esiletoomine ei ole iseenesest midagi keerulist. Oluline on, kuidas leiumaterjaliga kaasnevat
informatsiooni tõlgendada. Failid annavad leidjale küll mugavalt loetaval kujul
informatsiooni, kuid eksperdi tööks on siinkohal tuvastada, kas leitud digitaalne tõend
kinnitab või hoopis lükkab ümber menetluse osapoolte väited.
Käesoleva magistritöö eesmärgiks on NT-põhiste operatsioonisüsteemide ja NTFS
failisüsteemi toimimise uurimine ning rakendamine kohtuekspertiisitöös. Töö analüüsib
operatsioonisüsteemi Microsoft Windows XP ja selle failisüsteemi kohtuinfotehnoloogilise
ekspertiisi vaatenurgast. Windows XP väljastati 2001 aasta oktoobris ning tõenäoliselt on see
veel aasta või paar levinuim operatsioonisüsteem, kuni kasutajad MS Vista'ga kohanevad.
Failisüsteemi NTFS esmane tutvustus toimus juba 1993. aastal ning selle viimane viies
versioon numbriga v3.1 on primaarse failisüsteemina kasutusel operatsioonisüsteemides
Windows XP ja Vista [8]. Tõenäoliselt ei loobuta NTFS'ist veel niipea, sest
väljavahetamiseks puudub praktiline vajadus. Hoolimata failisüsteemi vanusest, pole
suurfirma Microsoft NTFS'i täpset spetsifikatsiooni avaldanud ning kogu teave selle
funktsionaalsuse kohta on saadud asjahuviliste poolt aeganõudvate analüüside tulemusena.
Praegused vabavaralised Linux ja FreeBSD draiverid võimaldavad küll NTFS failisüsteemi
lugemist, kuid sellele kirjutamine pole veel piisavalt veakindel ning failisüsteemile
kirjutamine on vabavaralistes süsteemides märgitud riskantseks. Autorit failisüsteemi
9
mehhanismi täpne taasloomine siiski ei huvita, vaid pigem mõistmine, kuidas NTFS
üleüldiselt toimib ning kuidas failisüsteemist andmeid lugeda .
Töö sissejuhatavas osas kirjeldatakse kohtuinfotehnoloogiliste uuringute hetkeolukorda ning
jätkatakse esimeses peatükis praktilise konspektiivse ülevaatega infotehnoloogilise
kohtuekspertiisi läbiviimisest kohtueelses menetluses ja kohtusaalis. Töös keskendutakse
eelkõige NTFS failisüsteemi selle osa toimimise tõlgendamisele, mis on vajalik
failisüsteemist andmete taastamiseks ja tõlgendamiseks, eesmärgiga tuvastada kasutaja
käitumine ning leida asitõendeid. Kuna NTFS failisüsteem ja Windows XP on oma
toimimisel seotud, kirjeldatakse töö teises peatükis Windows operatsioonisüsteemi kasutajale
näha olevaid eripärasid ning NT-põhisele Windows'le iseloomulikke peitekohti. Lisaks
kirjeldatakse Windows'i registrit ja logimissüsteemi, milles talletuvaid andmeid saab kasutada
asitõendite kogumiseks. Seejärel keskendutakse NTFS toimimise analüüsile. Kolmandas
peatükis rakendatakse eelmises peatükis kirjeldatud partitsioonide ja failisüsteemide omadusi
andmete taastamisel andmekandjalt, mille partitsioon või failisüsteem on hävinud.
Neljas peatükk kirjeldab töö kirjutamisega paralleelselt katsetamiste eesmärgil loodud
tarkvararakendust, mille peamisteks ülesanneteks on töötava Windows XP
operatsioonisüsteemiga arvuti andmekandja andmete madaltasemel sirvimine. MBR
partitsioonitabelite tõlgendamine, NTFS partitsiooni VBR tõlgendamine ning $MFT
leidmine selle abil. Lisaks võimaldab tarkvara üle andmekandja sektorite viia läbi etteantud
failisignatuuride skaneerimist ning selle abil kustutatud failide andmealade otsingut ja
kaardistamist, sh pildifailide otsingut ja taastamist failide poolt hõivamata alalt.
Hetkeseis kohtuinfotehnoloogia uuringutes
Infotehnoloogiaekspertiiside ja kriminalistikauuringute eesmärgiks on menetluses
tõendamiseseme asjaoludega seonduvate asitõendite tuvastamine digitaalsetelt
andmekandjatelt. 2003. aastal valmis käesoleva töö autori Tallinna Tehnikaülikooli (TTÜ)
bakalaureusetöö “Infotehnoloogiliste ekspertiiside kvaliteedi tagamine”. Tänaseks on
kohtuinfotehnoloogiliste uuringute tarkvarad jõudsalt arenenud. Loodud on erinevaid kõrgel
tehnilisel tasemel rakendusi, mis võimaldavad suhteliselt lihtsalt orienteeruda erinevate
operatsioonisüsteemide failisüsteemides, automaatselt avada levinud andmestruktuure ning
tõlgendada andmeid, nagu seda teevad operatsioonisüsteemid.
Kuna arvuteid kasutatakse menetluses üha enam asitõenditena, on ekspertiisitarkvara
tootmisest saanud laialdane ja tugeva konkurentsiga rahvusvaheline ärivaldkond. Turul
olevad tarkvaratootjad on üritanud leida oma nišši ning keskpärased on olnud sunnitud
10
taanduma. Olemasolevad tarkvarad võib üldjoontes jagada kahte leeri: tarkvara andmete
taastamiseks ja tarkvara süvauuringuteks.
Infotehnoloogiliste kohtuekspertiiside ja uuringute läbiviimiseks tuleb keskenduda
kvaliteedile ning ei tohi jätta otsustamist ainult masina hooleks. Andmete taastamine on küll
oluline osa kohtueksperdi tööst, kuid tarkvara poolt pakutav andmete taastamise funktsioon ei
ole alati piisav eksperdiarvamuse andmiseks. Täisautomaatsete taastamisvahendite olemasolu
ja kasutamine on vajalik, sest reeglina ei ole inimene võimeline ülevaatlikult tõlkima suvalist
failisüsteemi ja nägema seda nii, nagu operatsioonisüsteem meile näitab. Siiski -
infotehnoloogilise ekspertiisi puhul peab tulemust hindama ja arvamuse andma inimene oma
kogemustega ning võimega mõelda üheaegselt nii inimese kui arvutina.
Lihtsamatel, andmete taastamiseks mõeldud kriminalistikatarkvaradel on oma sihtgrupp.
Arvuteid ja andmekandjaid on praeguseks tavakasutuses niivõrd massiliselt, et keskmises
menetlusasjas leidub paratamatult mõni arvuti või andmekandja, mis vajab kiiret vaatlemist
nagu tavaline märkmik. Sellistel juhtudel piisab, kui menetlejal on olemas lihtne vahend
digitaalsete andmekandjate turvaliseks vaatlemiseks. Tavapärasest kodu- või kontoriarvutist
dokumentide ja e-posti vaatluseks ei ole vaja keerukat ekspertiisitarkvara ning kasutaja ei pea
teadma failisüsteemide iseärasusi. Piisab lihtsast väljaõppest, mis keskendub digitaalsete
andmekandjate korrektsele käitlemisele andmekandjatest koopiate tegemisel.
Oluline on, et vaatluse ettevalmistamisel oleks tagatud originaalsete andmete muutumatus
ning andmekandja kui asitõendi andmed oleks fikseeritud selliselt, et sama andmekandja
andmete korduval hõivamisel saadakse identne tulemus. Vastavat metoodikat käsitleb Kristel
Meikas tema 2006. aastal valminud TTÜ diplomitöö “Infotehnoloogiaekspertiiside metoodika
(KEKK'i näitel)”, mis kirjeldab arvutiekspertiisi ja vaatluse ettevalmistamise protseduure
Kohtuekspertiisi ja Kriminalistika Keskuse (KEKK) infotehnoloogiaekspertiiside laboris.
Eksperdi menetlusse sekkumise vajaduse digitaalsete andmete hõivamisel ja uurimisel tingib
olukord, kus andmekandjal olevad andmed on segaselt tõlgendatavad ning tavalistest
vahenditest vaatlemiseks enam ei piisa. Kohtusüsteemis on eksperdi roll pisut laiem ja
üldisem ning on defineeritud kriminaalmenetluse seadustikus. Kriminaalmenetluse seadustik
sätestab, et ekspert on isik, kes rakendab ekspertiisi tegemiseks mitteõiguslikke eriteadmisi
[5]. Sellest tulenevalt on ekspert vajalik kohtus ekspertarvamuse andmiseks.
Eksperdi ülesandeks ei ole otsida kurjategijat, nagu ekslikult arvatakse, vaid selgitada
võimalik tõde või tõe väljaselgitamise võimalused. Sellest tulenevalt ei saa ekspert
ekspertarvamuse andmisel pimesi usaldada ostetud ekspertiisitarkvarade raporteid ning
11
tulemused vajavad teadmiste ja kogemuste põhist hindamist.
Tahes-tahtmata tekib küsimus, et millal siis tarkvaralistest vahenditest ei piisa ning millisel
juhul on vajalik inimese sekkumine uuringuprotsessi? Vastus on lihtne - olukordades, kus
loetavad andmed on ebatavaliselt esitatud ning väljuvad tarkvara automaatse tõlgendamise
võimalustest või juhtudel, kui andmeid on loetamatuks muudetud. Näiteks saab kõvaketta
esimeses sektoris üheainsa baidi muutmisega muuta terve andmekandja tavaolukorras
kasutuskõlbmatuks, kuna alglaadesektorist MBR algab arvuti käivitamisel ülejäänud andmete
lugemine ja tõlgendamine. Sellistel juhtudel on tegemist lihtsa viisiga andmete varjamiseks.
Ning juba ongi vaja inimese sekkumist, et otsustada, milliste vahenditega andmed esile tuua.
Kokkuvõtvalt peab ekspert uuringuvahendite kasutamisel olema teadlik, kuidas need
toimivad. Probleem on, et uuritavad operatsiooni- ja failisüsteemid on avaldamata
lähtekoodiga ning nende käitumine on tegelikult teadmata. Lisaks vabavaralistele
tarkvaradele ja failiformaatidele eksisteerivad suletud süsteemid nagu Windows ja Mac ning
suletud failiformaadid, nagu Microsoft Office dokumendifailid ja MS Outlook'i PST-
konteinerfail. Lisaks on kõik turul olevad uuringutarkvarad suletud lähtekoodiga. Sellest
tulenevalt baseerub selliste tarkvarade kasutamine ostetud usaldusel. Ideaaljuhul peaks iga
uuringu läbiviimisel kasutama kõiki saadaolevaid uuringuvahendeid ning võrdlema saadud
tulemusi, mis on ajaliselt aga liialt ebaotstarbekas. Sellisest kontrollimatusest tulenevalt on
igal eksperdil arvamuse andmisel moraalne kohustus käsitletav teema endale võimalikult
arusaadavaks teha.
12
1 . Läbilõige infotehnoloogilisest kohtuekspertiisist
Järgnev peatükk on osa loengumaterjalist, mida kasutatakse menetluspoolte ja kohtunike
infotehnoloogiaekspertiiside koolitustel ning annab konspektiivse ülevaate minimaalsetest
tehnilistest teadmistest, mis on eksperdi, menetluspoolte ja kohtu jaoks vajalikud
ekspertiisiülesande püstitamisel, ekspertiisiakti lugemisel ning eksperdi tunnistajana
ülekuulamisel. Peatükis käsitletakse asitõendi käitlemise üldiseid põhimõtteid andmete
muutumatuse tagamisel ekspertiisitöö käigus. Selgitatakse, kuidas toimub andmete taastamine
ja hävitamine ning lahatakse digitaalse asitõendi kohtus esitlemise probleeme.
1.1 Arvuti kui tundlik asitõendInfotehnoloogiaekspertiis tegeleb digitaalmeedial olevate võimalike andmete uurimise ja
analüüsiga. Infotehnoloogiaekspertide peamine uurimisobjekt on arvuti andmekandjad, millel
olevaid andmeid võib arvuti käitlemise ohutuse vaatenurgast tinglikult jagada kaheks:
mittetundlikeks ja tundlikeks andmeteks.
Mittetundlikud andmed on failid, mille säilimist ei ohusta arvuti tavakasutamine, kui välja
arvata andmete tahtlik hävitamine. Sellised andmed on näiteks tavalised dokumendid,
pildifailid ja andmefailid, andmed, mis on mõeldud kasutajale vabalt vaatlemiseks ja
kasutamiseks. Kui ootamatut riistvarariket, viiruse või pahatahtliku kasutaja rünnakut ei
esine, siis ei pea kasutaja selliste andmete säilimise pärast muretsema.
Tundlikud andmed on vastupidiselt mittetundlikele andmetele arvuti töötamisel pidevas
kadumisohus ning tavakasutajal puudub nende üle kontroll. Sellised andmed on kustutatud
failid, ajutised failid ja failide poolt hõivamata ala. Tundlikud andmed on alalises hävimis-
ehk ülekirjutamisohus. Olgu selle põhjustajaks siis arvuti sisselülitumine,
operatsioonisüsteemi alglaadimine, väljalülitumine või lihtsalt töötav arvuti. Tänapäeva
13
arvutite operatsioonisüsteemid teevad alati midagi, millega kaasneb andmete kettale
kirjutamine ja vanade andmete üle kirjutamine ehk kustutamine, ohustades sellega alaliselt
ülalkirjeldatud tundlikke andmeid. Tavakasutajat loomulikult tundlike andmete mõiste ja
kadumine ei huvita, sest reeglina on tegu kasutajale ebavajaliku informatsiooniga. Eksperdi
jaoks sisaldavad sellised andmed aga olulist informatsiooni kasutaja toimingute kohta, mille
viideteks võivad olla viimati avatud dokumendid, internetikülastused, äsja kustutatud failid,
käivitatud programmid ning kõik sellega kaasnev.
1.1.1 Andmete muutumatuse tagamine arvuti käitlemiselInfotehnoloogiaekspert on huvitatud tundlike andmete fikseerimisest, mistõttu on oluline,
kuidas täpselt andmekandjad ja arvuti sündmuskohalt ära võetakse. Nagu võetavat DNA-
proovi ohustab saastumine, sõltub arvutis olevate andmete säilimine seadme äravõtmise
viisist. Selleks, et vältida sündmuskohal erinevate olukordade mõjutusi, on asitõendite
fikseerijaile kehtestatud vaikimisi reegel, et võimalikku asitõendit sisaldav arvuti tuleb
vooluvõrgust vahetult lahti ühendada vältides selle tarkvaralist väljalülitamist. Loomulikult
on alati erandeid, näiteks serverarvutite hõivamist või vaatlust tuleb planeerida eksperdi või
spetsialistiga.
Andmekandjate uuringu käigus täieliku originaalsete andmete muutumatuse tagamiseks
tehakse ekspertiisiks esitatud arvuti andmekandjatest esimesel võimalusel koopia. Ekslikult
arvatakse, et koopia moodustavad andmekandjalt üksikult kopeeritud failid. Väärarusaam
tuleneb tehnilisest keelekasutusest ning koopia asemel oleks korrektsem kasutada hoopis
tõmmise mõistet ning kopeerimise protsessi märkida hõivamisena (ingl. k acquire).
Ükshaaval kõiki faile kopeerides saame küll kätte andmekandja failide poolt hõivatud ala,
kuid saamata jäävad failide poolt hõivamata ala, failide lõpualad ja kasutajale nähtamatud
süsteemifailid ja -piirkonnad kettal. Tegelikult kasutatakse koopia tegemiseks spetsiaalset
tarkvara (näit. Guidance Software poolt toodetavat EnCase Forensic Edition) ning
kopeerimise eesmärgiks on saada andmekandja andmealast üksühene tõmmis, tagades
samaaegselt originaalse andmekandja andmete muutumatus. Originaalse andmekandja
andmete kaitseks kasutatakse riistvaralisi kirjutuskaitseid või tehakse koopia
tarkvarakeskkonnas, mis ei kirjuta iseseisvalt kopeeritavale andmekandjale.
Koheselt pärast koopia tegemist kontrollitakse tehtud koopia samasus originaalse
andmekandja andmetega ning koopiafailid arhiveeritakse. Koopiafailid moodustavad
tervikliku ja üksühese andmekandja koopia ehk ekspertiisikoopia (ingl. k forensic image), mis
sisaldab endas automaatset terviklikkuse kontrolli mehhanismi ning on vaadeldav vaid
spetsiaalse uuringutarkvaraga. Kogu edasine uuring ja ekspertiis tehakse ainult koopiafaile
14
kasutades.
1.2 Andmete autentsuse tagamise üldised põhimõttedEkspertiisilaboris kontrollitakse igal hõivamisel saadud andmete samasust originaalse
andmekandja andmetega. Kui võrdlemine on juba üsna väikeste tekstidokumentide puhul
vaevarikas, siis suuremate andmefailide ja andmete puhul on see mõeldamatu. Lahenduseks
on räsialgoritmid digitaalse andmehulga sõrmejälje arvutamiseks. Sõrmejälje mõiste on
paljudele segadust tekitav, sest mõistes keskendutakse jäljele ning unustatakse, et sõrmejälg
tähistab kriminalistikas unikaalsust. Peamiselt on kasutusel 128-bitine MD5-algoritm, mille
toimimise põhimõte on see, et identifitseeritav andmehulk ehk bitijada arvutatakse läbi
ühesuunalise algoritmiga, mis annab tulemuseks tagasi pööramatu unikaalse 32-baidise tähe-
ja numbrijada. Saadud MD5-räsi pikkus ega üldkuju ei sõltu originaalse läbi arvutatud sisend-
andmehulga pikkusest. Tõenäosus, et kaks erinevat faili ehk andmehulka, annavad ühesuguse
sõrmejälje, on üks võimalus 3,4x1038
vastu.
Näiteks toon mõned MD5-räsid eestikeelsetele sõnadele:
ekspert 73722ddb589540430c78521866e45918
kohtuekspertiis db977f9443447dc57af8d2d814d6d686
Nagu näitest näha, ei sisalda räsid endas informatsiooni originaalsete andmehulkade pikkuse
kohta. Kui kopeeritud andmehulgas muuta ka ühtainust märki, muutub räsisumma täielikult.
Sellest tulenevalt on ainult sõrmejälje alusel ilma täiendava informatsioonita praktiliselt
võimatu leida räsile vastav originaalne sõna või andmehulk.
Mõeldav oleks jõuga murdmine, kui näiteks teame, et tegu on 4-kohalise numbrilise PIN-
koodi MD5-räsiga. Selle viitega saame andmehulga üldkuju, mis PIN-koodi puhul on
enamasti 4-kohaline numbrikood, samuti kasutatud räsialgoritmi. Siis saame MD5-räsi
arvutajale pakkuda PIN-koode alates 0000 kuni 9999 ning võrrelda saadud räsiväärtusi
otsitava andmehulga räsiga ning ründamiseks jääb vaid 104 varianti. Seda meetodit
kasutatakse näiteks mõnede pihuarvutite PIN-koodide avamiseks. Mida pikem on kood ja
keerulisem on üldkuju, seda aeganõudvam selline jõuga koodi ründamise meetod on. Näiteks
6-kohaline PIN-kood nõuaks juba kuni 106 katset ning neljakohaline parool, mis koosneb
numbritest inglise tähestiku tähtedest ilma suurtähtedeta, vajab juba 364 ehk 1679616
maksimaalset proovimise võimalust. Siit on näha ka põhjus, miks soovitatakse kasutada
vähemalt 8-kohalist numbreid ning suur- ja väiketähti sisaldavat parooli. 628 võimalust
proovimiseks teeb juba rohkem kui 2x1014 varianti. Terve andmekandja andmete tagasi
15
arvutamine räsi järgi on füüsiliselt võimatu ning nõuab määramatut arvutus- ning ajaressurssi.
Kohtuekspertiisis on andmehulkade autentsuse kontroll vajalik, et veenduda andmekandja
vigadeta hõivamises. Kui pärast andmekandja tõmmise tegemist vastab originaalse ketta
andmete räsi tõmmise räsile, on tõmmis originaalsete andmetega identne. Andmehulkade
autentsuse kontroll ja dokumenteerimine on oluline, et tõmmise terviklikkuses saaks
veenduda ka aastate pärast, kui asitõend taas uurimist vajab. Vastavalt vajadusele on
omakorda võimalik arvutada ka tõmmisel olevate loogiliste andmehulkade, näiteks failide
räsid ning need hilisemaks kontrollimiseks dokumenteerida. Sellisel juhul on võimalik
tõmmise osalisel riknemisel kindlaks teha riknemata andmehulgad ning neid asitõendina
edasi kasutada.
Ekspertide kohtupraktikas on menetluses ette tulnud juhuseid, kus ühte kriminaalasja on
menetletud erinevate menetlejate poolt, mistõttu on materjalid, seal hulgas andmekandjad
ühelt menetlejalt teisele üle antud. Seetõttu on asitõendite puhul üritatud kahtluse alla seada
erinevate menetlejate käes olnud ja kohtuni jõudnud asitõendi originaalsus. Peamiselt on
väidetud, et asitõend võidi mingil hetkel fabritseerida. Siinkohal on sõltumatu eksperdi poolt
ekspertiisi käigus arvutatud andmete digitaalne sõrmejälje dokumenteerimine eriti oluline
ning eksperdi ülekuulamisel kohtus huvitutakse just eespool toodud selgitustest digitaalse
sõrmejälje unikaalsuse kohta. Digitaalset sõrmejälge kasutatakse ka suurte failikoguste
kiireks võrdlemiseks. Sellisel juhul arvutatakse kogu andmekanda failidest räsid ning
võrreldakse neid räsisid otsitavate failide räsidega. Näiteks kasutatakse seda kindlate
lapsporno kollektsioonide otsimiseks.
1.3 Andmed andmekandjal - sissejuhatus failisüsteemidesseAndmeid andmekandjaid saab vaadelda ülipika biti- või baidijadana, mis on jaotatud
võrdseteks adresseeritud andmesektoriteks. Sektori suurus on kõvaketaste ja välkmälu-ketaste
puhul reeglina 512 baiti, optilistel andmekandjatel aga 2048 baiti ning see on minimaalne
üksus, mille kaupa saab andmekandjal lugeda ja kirjutada. Sektoritega kaetud andmeala ainus
operatsioonisüsteemile normaaltingimustel nähtav ala.
Kuna andmekandjate miljonitel sektoritel olevaid andmeid tuleb kuidagi organiseerida, on
loodud kartoteegilaadne failisüsteem. Levinuimad failisüsteemid on FAT ja NTFS, mida
käsitletakse käesolevas töös põhjalikumalt. FAT'i peetakse hääbuvaks failisüsteemiks, sest
praktiliselt kõik uued Windows süsteemi kandvad andmekandjad on NTFS formaadis. Siiski,
tänu oma lihtsusele ja vastupidi NTFS'i kasutamise keerukusele jääb FAT veel pikaks ajaks
universaalseks kaasaskantavate andmekandjate ning eriseadmete failisüsteemiks.
16
Andmekandja andmeala jaotatakse üheks või enamaks loogiliseks kettaks ehk partitsiooniks,
ning igal partitsioon on vormindatud eraldi failisüsteemiga. Sellised loogilised kettad on
kasutajale nähtavad ning Windows süsteemis tähistatakse need suurtähtedega, näiteks „C:“ ja
„D:“. Infot failisüsteemi failide kohta hoitakse suures kasutajale nähtamatus tabelis, mis
hõivab ise osa partitsioonist. Ülejäänud partitsiooni ala on failide poolt hõivamiseks. FAT ja
NTFS failisüsteemid jaotavad partitsiooni failide ala omakorda klastriteks. NTFS
failisüsteemi omapära on, et see paikneb failidena iseenda failisüsteemil. Klastri suurus NTFS
partitsioonil on 8 sektorit, kuid see on soovi korral muudetav.
Failisüsteemi klastrite kasutamist võib võrrelda videoteegi kassettidega. Nii klastritel kui ka
kassettidel on kindel aadress või järjekorranumber, mille järgi selle üles leiab ja mis ise ei
sisalda infot salvestise sisu kohta. Viide sisule paikneb failisüsteemis. Oluline reegel on, et
ühele klastrile saab korraga salvestada vaid ühe loogilise salvestise ehk faili.
Kui fail on mahukam kui üks klaster, võetakse kettalt esimesed sobivad klastrid ning faili sisu
paigutatakse nendele, kusjuures klastrid ise ei pea asuma järjestikku. See tingib andmekandja
andmete tükeldumise, sest fail jaotatakse loogiliste lõikudena vabadele klastritele laiali ning
see ei koosne enam järjestikusest andmejadast. Failisüsteemi kui kartoteegi peamine ülesanne
on failiatribuudid kokku viia andmealadega, failide andmealad jaotada olemasolevatel
klastritel ning lisaks hallata keerukat failiatribuutide süsteemi.
1.3.1 Andmete taastamine ja hävitamineKustutatud andmete taastamine on andmete kustutamise vastandprotsess, mis toimib, kuni
andmed ise veel andmekandjal alles on ehk andmed on üle kirjutamata. Andmete taastamise
tulemus sõltub sellest, kas lisaks faili andmealale on alles failitunnused, mis näitavad ära faili
andmeala asukoha andmekandjal.
Mis juhtub faili kustutamisel? Kasutaja soovib vabaneda endale ebavajalikust failist. Näiteks
printimiseks kasutatud 500-kroonise pildist või tekstidokumendist. Reeglina kustutab ta selle
faili ära ning usub, et info on arvutist kaotatud. Tegelikult märgiti failisüsteemis kasutaja
poolt kustutatud faili hoidvad klastrid vabadeks. Analoogia videokassettidega, millele tegime
märke, et sellele võib uue filmi lindistada. Seda kõike haldab faili- ja operatsioonisüsteem
kasutajale märkamatult. Mingi aja vältel on kustutatud ehk ülekirjutamiseks vabaks märgitud
fail terviklikuna alles, kuid selle faili taastamiseks on tarvis eritarkvara, mis võimaldab näha
infot, mida operatsioonisüsteem tavajuhul ei näita.
Fail hävineb alles siis, kui luuakse uus fail, mis juhuslikult kirjutatakse kustutatud faili
sisaldanud klastrisse, kirjutades sellega meie kustutatud faili sisu üle.
17
Teame, et failid ei ole alati ühesuurused. Näiteks, võtame vabaks märgitud videokasseti
täispika filmiga ning salvestame selle algusesse 10-minutilise videolõigu. Sellega kirjutame
üle vaid esimesed 10 minutit oma kassetist, kuid kogu ülejäänud kassett sisaldab vana infot.
Kadunud on vaid 10 minutit infot kassetti algusest. Samamoodi on ka klastriga. Näiteks, kui
meie uus fail on vaid 512 baidi pikkune, on klastri ülejäänud 7x512 baiti selle faili poolt üle
kirjutamata. Seni, kuni me 512-baidist faili ära ei kustuta, on ülejäänud klastri andmeala
puutumatu, sest igas klastris saab korraga olla vaid üks fail. Kuigi tavavahenditega seda näha
ei ole, sisaldab see ülejäänud osa klastrist vana kustutatud faili andmeid. Seda ala nimetatakse
klastri faili poolt kasutamata alaks (ingl. k slack space) ning sellelt võib tekstikatketena leida
uurimises olulisi viiteid kustutatud meilidest või dokumentidest.
Siiski, peamine koht kustutatud info otsimiseks on partitsiooni failide poolt hõivamata ala
(ingl. k unallocated space). Sõltuvalt algsest failivormingust ning andmekandja
fragmenteerumisest võib sellelt alalt leida ka terviklikke andmekogumeid kindla alguse ja
lõpuga. Seda juhul, kui faili sisus on ära määratletud faili alguse ja lõpu tunnused. Näiteks
tekstidokument on tunnusteta, pildifailid on kindla algustunnusega ning kompileerimata
programmikood on äratuntava alguse ja lõputunnusega. Kuna failisüsteemis toimub faili
andmealadele viitavate kirjete ülekirjutamine üsna kiiresti ning failile, mille andmeala võib
olla terviklikult säilinud ei leidu failisüsteemis vastavat kirjet. Seetõttu puuduvad failide poolt
hõivamata alas olevatele andmetele vastavad failiatribuudid. Sellisel juhul ei ole failide poolt
hõivamata alal olevate andmete puhul enam tegu failidega, vaid ühe suure andmejadaga, mis
on märgitud vabaks uute failide salvestamiseks. Nii nagu meid ei huvita, mis asus meie poolt
ülelindistamiseks märgitud videokassettidel, nõnda pole ka failisüsteemil vaja kustutatud
failide kartoteeki alles hoida. Siinkohal märkuseks, et Windows töölaua prügikast on
süsteemikataloog, kuhu faili kustutamisel tekitatakse kartoteek kustutatud failidest, et
kasutaja saaks need vajadusel taastada.
1.3.2 Signatuurid – failide ja partitsioonide taastaminePaljudel failitüüpidel on andmeosa alguses kindel märgijada - signatuur. Näiteks on JPG
pildifail signatuur 16nd-süsteemis on (FF D8 FF). Võrreldes failide signatuure signatuuride
andmebaasiga, saab määrata reaalse failitüübi. Sarnaselt failidele on ka failisüsteemide
partitsioonidel signatuurid. Näiteks NTFS failisüsteemi signatuur on (EB 52 90 4E 54 46 53).
Kustutatud failide otsimine põhineb failisignatuuridel. Teades otsitava failitüübi signatuuri
otsitakse sama märgijada üle kõigi andmekandjal olevate andmete. Leides andmekandjalt
signatuuri eksisteerib tõenäosus, et leiti kustutatud faili algus. Lõpliku kinnituse annab
signatuurile järgnevate andmete täpsem analüüs. Partitsioonide otsimine toimub sarnaselt
18
failide otsimisega kasutades failisüsteemide signatuure. Partitsioonide kirjeldust sisaldav
kõvaketta sektor (esimene sektor) ülekirjutamisel, võib partitsioone otsides taastada puuduvad
andmed ja muuta kõvakettal olnud failid koheselt kättesaadavaks.
1.3.3 Digitaalsed fotod ja nende taastamineNagu eespool mainitud, leidub failide poolt hõivamata alalt lisaks loetavatele tekstikatketele
ka täiesti taastamiskõlbulikke pildifailide andmealasid. Pildifailide taastamine failide poolt
hõivamata alalt on kindel protsess, mille käigus otsitakse pildifailide signatuure või
algustunnuseid. Levinuim pildiformaat on JPEG, mida kasutatakse vaikeformaadina
digifotoaparaatides. Enamik digikaameraga tehtud pildifaile sisaldavad vastava fotoaparaadi
tootja ja mudeli tunnused ning pildi tegemise kellaaega vastavalt kaamera seadistusele.
Pildifaili taastamisel tekstikatkest on see väga oluline, sest kuigi meil läheb kaduma faili
nimi, saame me kätte tõenäolisel pildistamise aja ning isegi fotoaparaadi mudeli.
Ülaltoodud näites on näha tüüpilise JPG-pildifaili päis vaadatuna Notepad programmiga.
Märgistatud alal esineb viide Fujifilm FinePix A203 digifotoaparaadile. Teoreetiliselt
võimaldab JPG-pildifaili alguses olev EXIF 2.2 andmeväli salvestada fotoaparaadi
hetkekonfiguratsiooni pildistamise hetkel, kus on ära toodud näiteks välgu kasutamine pildi
tegemisel jne. Päises oleva info hulk sõltub muidugi aparaadi enda ehitusest ning
seadistustest. Siit tuleneb, et ekspertiisi peab koos andmekandjatega saatma ka need
digifotoaparaadid, mis mälukaarti ei sisalda, sest kaameratunnuste alusel saab otsida ning
võrrelda näiteks arvuti kõvakettal või teistel mälukaartidel olevaid pilte.
Näide ekspertiisist: Paljudel tänapäeva mobiiltelefonidel on küllalt kvaliteetsed sisseehitatud
digikaamerad, millega saab lisaks pildistamisele otse telefonis pilti ka töödelda. Ekspertiisist
on läbi käinud juhtum, kus narkootikumide käitlemises kahtlustatu üheks asitõendiks oli
telefoniga pildistatud tabletikuhja foto, mille kuupäev ja kellaaeg klappis uurimisandmetega.
Mõned nädalad pärast vahi alt vabanemist sattus kahtlustatu uuesti uurimise alla ning
telefonist leiti jälle tabletihunniku foto, mille kuupäev telefonis sattus ajavahemikku pärast
vabastamist. Kahtlusalune väitis, et pilt on tegelikult sama, mis leiti eelmisel telefoni
19
ÿØÿá*Exif··II*··············�···········�······················¬······(···········1···&···¼···2·······â···············��······ö···i�······ü···b···FUJIFILM··FinePix A203 ··H·······H·······Digital Camera FinePix A203 Ver1.00·2004:05:24 11:47:44Joonis 1: Näide JPG pildifaili päisest
vaatlusel ning tema oli seda telefonis vaid natukene töödelnud. Pildi loomise kuupäeva
väljaselgitamiseks saadeti telefon ekspertiisi. Ekspertiisi käigus selgus, et kahtlusaluse väide
oli õige. Kahtlustatava õnneks oli ta kasutanud telefonimudelit, mis pildistamisel salvestab
EXIF väljaga JPG failiformaadis ning sellelt leitud kuupäev ja kellaaeg klappis varasemaga.
Telefonis pildi töötlemisel salvestati fail üle juba töötlemise kuupäeva ja kellaajaga, kuid
telefoni pilditöötlustarkvara säilitas algse pildifaili EXIF andmevälja andmed.
Peab tõdema, et märkimisväärne hulk fotoaparaati sisaldavatest ekspertiisidest on seotud
alaealiste väärkohtlemisega. Tuleb ette, et lapsporno tootjad kasutavad sama fotoaparaati ka
nö perepiltide tegemiseks. Mõnede ekspertiiside puhul on selgunud, et ekspertiisiks esitatud
arvutite andmekandjatel on erineva sisuga pilte (näit. perepildid ja lapspornograafilise sisuga
pildid), mille failipäises sisalduvad sama tüüpi fotoaparaadi tunnused.
1.4 Asitõendi esitlemine kohtuistungilAeg-ajalt soovib kohtunik soovib istungil arvutit isiklikult kui asitõendit vaadata ning näha,
kuidas selle arvutiga kuritegu toime pandi. Näiteks, kuidas võltsiti rahatähte. Puudub küll
kindel tõde, kas selline teguviis on õige või vale, kuid pigem on see ebasoovitatav. Peatüki
alguses kirjeldasin, et ekspertiisi läbiviimisel on esmane ülesanne originaalse andmekandja
andmete muutumatuse tagamine ning arvuti käivitamine rikub asitõendi. Kui võrrelda enne
käivitamist kõvaketta räsi ja peale käivitamist, siis need on kindlasti erinevad. Samas on
eksperdil olemas ekspertiisikoopia, millelt saab vajadusel originaalse ketta andmeala
üksüheselt taastada.
Juhul, kui asitõendiks olev arvuti on vaja käivitada, peaks seda tegema viisil, mis ei muudaks
arvutis olevaid originaalseid andmeid. Kasutada võiks arvuti andmekandja üks-ühest koopiat
või virtuaalmasinat. Siiski võib arvuti käivitamine osutuda võimatuks, sest kuigi eksperte ei
takista asitõendi andmekandja uurimisel arvuti alglaadimisparool ja operatsioonisüsteemi
sisenemise parool, takistavad need töötava arvuti süsteemi sisenemist ja selle vaatlemist. Kui
arvutisse sisenemist ei takista paroolid, võivad takistuseks saada hoopis kustutatud andmed.
Näiteks, kuigi ekspertiisi käigus taastati andmekandjal olevad kustutatud rahatähtede
kujutised, siis töötava originaalse arvutiga ei saaks neid sellegi poolest vaadelda, sest
originaalsel ekspertiisiks esitatud andmekandjal on need andmed kustutatud olekus. Selliste
andmete vaatlemiseks on vajalik taastamistöö ekspertiisitarkvaraga. Analoogne probleem
tekib, kui failid on küll loetavad, kuid arvutist on eemaldatud failide töötlemise tarkvara,
näiteks Adobe Photoshop.
Soovitatav ja vajalik on konsultatsioon ekspertiisi läbi viinud eksperdiga enne, kui ekspert
kutsutakse istungile ütlusi andma või kui soovitakse kohtusaalis töötavat asitõendit vaadelda.
20
Olen kogenud, et ütluste andmine on olnud tulemuslikum, kui võimalike küsimusi eelnevalt
konsulteeritakse. Näiteks saab selliselt välja jätta või ümber sõnastada spekulatiivset või
statistilist vastust eeldavad küsimused ning selgitada, kas küsimus on ikka seotud konkreetse
ekspertiisiga.
21
2 . Tänapäevane operatsioonisüsteem
Tänapäevaseid operatsioonisüsteeme iseloomustab rahvusvaheline ja nägus kasutajaliides,
kasutamise mugavus ning töökindlus. Windows, Linux ja MacOS operatsioonisüsteemide
paigaldamine ei ole enam aastaid entusiastide pärusmaa ning tihti pääseb inimene arvutit
ostes vaid süsteemis kasutajaprofiili seadistamisega. Uute lisaseadmete paigaldamisel peab
harva mõtlema ühilduvusele ning väliste andmekandjate süsteemi ühendamine toimub
kasutajale sama lihtsalt nagu elektripistiku seinakontakti ühendamine. Arvutit kasutades on
enesest mõistetav paljude rakendustega korraga töötamine ning erinevate väliste
andmekandjate kasutamine ilma, et tööd tehes kuidagi eristaks, et tegu on mobiilsete
andmekandjatega. Enda dokumendikausta, töölauda, ja prügikasti kasutades pole vaja mõelda
rohkemale, kui vaid sellele, et tööfailid paiknevad arvutis, programmid töölaual ning
ebavajalik rändab virtuaalsesse paberikorvi. Internetis toimetamine on muutunud piisavalt
kiireks ja mugavaks, et puudub vahe, kas kasutame enda arvutisse paigaldatud rakendusi või
teadmata kaugusel asuva serveri omi.
Operatsioonisüsteemide kasutamise mugavus on kasvanud koos süsteemi keerukusega.
Keeruline süsteem aga jätab enda kasutamisest maha ka küllalt palju jälgi. Järgnevates
peatükkides vaatlemegi, kuidas tuvastada operatsioonisüsteemis Windows XP kasutaja
tegevuse jälgi.
2.1 Kasutaja jäljed NT-põhistes operatsioonisüsteemides
Windows XP on 2001. aastal välja lastud NT-põhine operatsioonisüsteem, milles ühildati
aastatepikkuste pingutuste lõpuks Windows NT/2000 turvaline ja töökindel arhitektuur ning
Windows 98 universaalne kasutusmugavus. XP järeltulijana on turul 2007. aasta algusest
kasutajatele saada olev Windows Vista, millega loodetakse veelgi tõsta arvuti kasutamise
turvalisust ning võrgurakendustega integreeritust. Vistale ennustatakse siiski veel 2 aastast
üleminekuaega enne, kui laiem kasutajaskond sellega täielikult harjub. Ka Windows 98
22
võidutses kodu- ja kontoriarvutites veel 2003. aastal. Windows Server 2003'le avaldati aasta
alguses järeltulija Windows Server 2008, mille üks huvitavamatest uuendustest on ilma
alglaadimise abita NTFS'i vigade parandamine ehk iseparanev NTFS.
NT-põhise Windows operatsioonisüsteemi kasutaja jälgede uurimiseks peab mõistma selle
tehnilisi eripärasid, kuidas hallatakse süsteemi kasutajaga seotud kataloogistruktuure ning
süsteemifaile, mis aitavad kirjeldada kasutaja toiminguid. Käesolevas peatükis käsitletakse
Windows XP lihtsamaid omadusi, millele süsteemi esmasel uurimisel tähelepanu pöörata:
kataloogistruktuuri, linkfaile, prügikasti ja printimise jälgi. Selgitatakse, saada kiire ülevaade
paigaldatud Windows operatsioonisüsteemist ning valmistutakse järgmises peatükis käsitletud
Windows registri analüüsiks.
2.1.1 Operatsioonisüsteemi tüübi tuvastamine
Operatsioonisüsteemi tehniliste eripärade otsimisele eelneb süsteemi identifitseerimine, mis
võimaldab edaspidiselt uuringu läbiviijal konkreetsemaid valikuid langetada. Allpool on
ülevaatlik tabel operatsioonisüsteemide kiireks tuvastamiseks vaikeseadete korral. Võrreldes
omavahel operatsioonisüsteeme Windows 95/98, Windows NT, Windows 2000 ja Windows
XP/2003 näeme, et aja jooksul on muutunud süsteemide kasutajakataloogi, süsteemikataloogi
ja prügikastikataloogi nimetused.
Operatsioonisüsteemil Windows 95/98 puudub kasutajaprofiili kataloog. Süsteemikataloogiks
on C:\Windows ning prügikasti kataloogiks C:\Recycled. Prügikasti taastamist käsitlevas osas
näeme, kuidas \Recycled kataloog on seotud FAT failisüsteemiga. NT-põhistes Windows
süsteemides NT, 2000, XP, 2003 ja Vista on prügikastikataloogi nimeks \Recycler. Võib-olla
seetõttu, et seal tegeletakse kasutaja põhiselt prügi sorteerimisega. Kõigil NT-põhistel
süsteemidel on ka kasutajaprofiilide kataloog. NT'l on selleks \WINNT\Profile, alates
Windows 2000'st on see aga kataloogis \Documents and Settings. Süsteemikataloogiks on
NT'l ja 2000'l \WINNT ning alates XP'st jälle \Windows.
Kataloogide nimede võrdlemine annab esimese ettekujutuse, millise operatsioonisüsteemiga
tegu on. Lisaks näitab Windows 2000 ja XP süsteemikettal paikneva faili C:\boot.ini sisu
vaikimisi seadistuste korral laetava operatsioonisüsteemi tüübi nime. Windows registri kirjete
järgi süsteemi tuvastamist käsitletakse peatükis NT-põhise Windows'i register.
Järgnevad peatükid keskenduvad eelkõige Windows XP omaduste kirjeldamisele, mis on
väga sarnased Windows Server 2003 ja kattuvad suures osas ka Windows 2000 omadustega.
23
2.1.2 Kasutajat kirjeldavad failid ja kataloogid
Esimese viite NT-põhiste Windows operatsioonisüsteemide võimaliku kasutaja kohta saame
kataloogistruktuurist, mis luuakse kasutaja esimesel süsteemi logimisel. Nii lokaalsel
logimisel kui läbi serveri autentides loodava kataloogistruktuuri juurkataloog ehk kasutaja
juurkataloog nimetatakse kasutajanime järgi ning paigutatakse see kasutajaprofiilide
kataloogi. Vastavalt Windows XP süsteemis kataloogi \Documents and Settings”.
Loodava kataloogi struktuur võetakse aga operatsioonisüsteemi paigaldamise käigus loodud
vaikimisi kontolt \Default User, mis samuti paikneb kasutajaprofiilide kataloogis. Tööjaama
läbi Windows domeenikontrolleri autentimisel kasutatakse kasutajaprofiili loomiseks vastava
serveri \Default User kataloogistruktuuri.
Kasutajaprofiilide kataloogi loodav kasutaja juurkataloog nimetatakse loodud konto nime
järgi ning reeglina seda ei muudeta. Siiski on tegu vaikeseadega, mida saab muuta süsteemi
administraatori. Kasutajaprofiilide kataloogide avamine on teistele kasutajatele piiratud ning
isegi kasutajaspetsiifilised süsteemifailid on iga profiili kataloogis eraldi. Olulisim neist on
kasutaja juurkataloogis paiknev registrifail NTUSER.DAT, mis sisaldab erinevaid kasutaja
seadeid, näiteks keeleseaded. Töötavas registris vastab sellele failile registrikogum
HKEY_CURRENT_USER. Teiste registriseadete uurimist käsitletakse peatükis NT-põhise
Windows register. Faili uuendatakse operatsioonisüsteemi poolt igal kasutaja väljalogimisel,
seega saab faili viimati muutmise aja järgi kindlaks teha, millal kasutaja viimati välja logis.
2.1.2.1 Kohalikud seaded
Kohalike seadete kataloog \Local Settings on kasutaja tegevuste jälgimisel oluline. Selle
alamkataloogi \History salvestatakse index.dat failidena MS Internet Explorer (IE)
veebikülastuste ajalugu.
Huvitav on, et Windows Explorer salvestab index.dat failidesse ka kasutaja failide avamise
viited. Salvestamine toimub kasutajale nähtamatult ning üldiselt sõltumata failibrauserist.
Failide avamist salvestatakse valikuliselt ning see ei toimi kõigi teksti- ja dokumendifailide
puhul. Katsel selgus, et avatud failide ajalukku salvestati viited TXT, DOC ja ODT failide
avamisele ning välja jäeti PDF-failid ning pildi- ja videofailid. TXT-failide viidete
salvestamine kõigil kordadel ei toimunud. Hoolimata logimissüsteemi segasusest on sellisel
viisil võimalik ühe päeva täpsusega vaadelda, milliseid dokumendifaile mingi kasutajanime
alt avati. Index.dat failide kirjed algavad URL signatuuriga ning kirje viimati muutmise ja
viimati vaatamise aja leiab kirje 9. baidilt 16 baidi pikkuse Windows Date/Time ajakirjena.
Lisaks \History index.dat failidele on kasutajaprofiili kataloogides veel kahte tüüpi index.dat
24
faile. Üks neist paikneb samas kataloogi \Local Settings alamkataloogis \Temporary Internet
Files ning peab arvet IE internetisessiooni käigus alla laetud ajutiste failide kohta. Teine
index.dat paikneb kasutaja juurkataloogi kataloogis \Cookies ning peab arvet külastatud
veebilehtede küpsiste (ingl. k cookies) üle.
Küpsiste kataloogi salvestavad internetilehed tekstifailidena enda seadistuse kohalikus
masinas. Näiteks lehekülje seaded, kasutajanime, külastuste statistika või isegi parooli. IE
küpsised asuvad tavaliselt kataloogis \Cookies tekstifailidena. Mozilla küpsised paiknevad
kasutaja juurkataloogi alamkataloogi \Application Data\Mozilla kataloogisüsteemis
cookies.txt failis tekstikirjetena.
2.1.2.2 Rakenduste andmed
Programmide kasutajapõhised tööfailid salvestatakse vajadusel kataloogis \Application Data.
Windows 95 ja 98 masinatel paikneb see \Windows kataloogis. Windows XP kasutaja
profiilide kataloogistruktuuris olemas on kaks \Application Data kataloogi, millest üks
paikneb otse kasutaja juurkataloogis, teine \Local Settings kataloogis. Kahe sarnase kataloogi
pidamise põhjus tuleneb võimalusest, et kasutaja kataloogi või profiili saab seadistada liikuva
kasutajaprofiilina, mis paikneb serveris ning laetakse masinasse alles kasutaja sisselogimisel.
Välja logimisel laetakse uuendatud profiiliandmed taas serverisse.
Arvuti ja interneti kasutamise käigus tekib suures koguses kasutajaga seotud informatsiooni,
näiteks veebibrauserite ja teiste tarkvarede vahemälufailid ning serveripõhiste meilikontode
allalaetud sisu. Sellise pidevalt kasvava infohulga edasi-tagasi transportimine muudaks
arvutisse logimise protsessi järjest aeglasemaks ning koormaks võrguliiklust. Seetõttu
hoitakse kõik sellised transportimist mitte vajavad kasutajaga seotud andmed \Local Settings
kataloogis.
2.1.2.3 Dokumendid ja töölaud
Kasutaja juurkataloogis on kaks süsteemikataloogi, mille sisu on täiesti kasutaja enda päralt:
dokumendikaust \My Documents ja töölauakaust \Desktop. Visuaalsel töölaual paiknevad
ikoonid pärinevad kahest erinevast kataloogist kasutajaprofiilide kataloogist: \All
Users\Desktop ja kasutaja enda \Desktop kataloogist. Kui viimane on tühi, tähendab see, et
kasutaja töölaual pole midagi kasutajale spetsiifilist ning kasutusel on üldised, kõigile
süsteemi kasutajatele nähtavad failid, mida saavad töölauale paigaldada vaid
administraatoriõigustes kasutajad.
Uuringu käigus tuleb kontrollida mõlemat töölaua kausta, nii kasutaja enda oma kui üldist
\All Users\Desktop kataloogi. Kasutaja töölauakataloog võib sisaldada viiteid failidele või
25
tarkvaradele, mille kasutaja on teinud otsetee-ikoonide ehk linkfailide abil hõlpsamini
kättesaadavamaks. Näiteks dokumentide võltsimise juhtudel võib töölaualt leida viiteid
trükifailide töötlemise tarkvarade kasutamisele
2.1.2.4 Linkfailid – Favorites, Recent, Send To, Start Menu
Töölaual hoitakse otsetee-ikoone dokumentide, programmide ja kataloogide mugavamaks
kasutamiseks. Mõned neist tekivad sinna tarkvarade paigaldamise käigus, mõned luuakse
kasutaja enda poolt. Selliseid LNK-laiendiga otseteefaile (ingl. k shotrtcuts) võib nimetada
faililaiendist tulenevalt ka linkfailideks või linkideks. Need on tavalised failid, mida saab
vastavalt vajadusele paigutada suvalistesse kataloogidesse. Linkfailide ülesanne on olla
otseteeks rakendustele, failidele, kataloogidele või seadmetele, et säästa kasutajat rutiinsest
kataloogide sirvimisest. Arvuti uuringu seisukohalt on oluline linkfailide omadus viidata
arvuti kasutaja toimingutele. Nimelt on kasutajaprofiilis peale töölaua olemas veel neli
peamist süsteemikataloogi, kuhu linkfailid arvuti kasutamise käigus automaatselt tekivad..
Tüüpiline kataloog, millesse kasutamise käigus sihtfailid tekivad on kataloog \Recent. Tegu
on süsteemikataloogiga, millesse salvestatakse automaatselt kasutaja poolt viimati vaadatud
failide lingid Kasutajale on kataloogi \Recent sisust nähtav Start-menüüs Dokumentide valiku
all viimased 15 avatud faili. Kataloogi \Recent jäävad alles aga kõigi vaadatud failide
linkfailid. Kataloogis registreeritakse vaid õnnestunud failde ja kataloogide avamised, mis
annab omakorda viite, et failid, mille linkfailid paiknevad \Recent kataloog viitab on kindlasti
avatud ja seega tõenäoliselt vaadatud. Näiteks, kui kasutaja kasutab dokumentide trükifailide
töötlemiseks pilditöötlustarkvara, hiljem eemaldab tarkvara ja failid arvutist ning väidab, et ei
tea pilditöötlusest midagi. Sellisel juhul annab \Recent kataloogist leitav
pilditöötlustarkvarale spetsiifilise dokumendifaili linkfail viite, et arvutis on kunagi edukalt
avatud pilditöötluse tööfaili tüüpi fail, mis annab omakorda põhjuse keskenduda vastava
tarkvara ja failide kohta viidete otsimisele.
Kataloog \Favorites sisaldab peamiselt veebibrauseri MS Internet Explorer kasutaja poolt
salvestatud URL-laiendiga linkfaile internetilehtedele. Internet Explorer'i ja Windows'i
süsteemse failibrauseri Windows Explorer'i integreerituse tõttu on mõlemas programmis
eelistuste (ingl. k favorites) menüü ja seega võimalus sinna lisaks URL-linkidele tekitada
linke ka LNK-failidena. Kasutajale on salvestatud eelistused nähtavad veel Start-menüüs
Eelistused valiku all. Kõik need kolm menüüd loevad oma sisu kataloogist \Favorites, kuhu
saab lisaks linkfailidele kopeerida suvalisi faile, mis muutuvad seejärel Eelistuste menüüdest
nähtavateks. Internetibrauser Mozilla Firefox hoiab oma eelistused ehk järjehoidjad (ingl. k
bookmarks) \Application Data kataloogis bookmarks.html failis.
26
Kataloog \Send To sisaldab tavaliselt vaid otseteid pakkimis- ja meilitarkvarale, töölauale ja
kasutaja dokumendikataloogi. Kasutaja saab \Send To kataloogi lisada otseteid kataloogidele,
partitsioonidele ja tarkvaradele. Saada-menüü kaudu (töölaual rippmenüüst käsk "Send To")
faili avamiseks kindla tarkvaraga piisab, kui eelnevalt kopeerida \Send To kataloogi tarkvara
linkfail või programm ise.
Windows kasutajale tuttava Start menüü (ingl. k start menu) objektid paiknevad kataloogis
\Start Menu. Kataloogi omapäraks on, et kasutaja kataloogis paiknev \Start Menu sisaldab
sarnaselt kasutaja \Desktop kataloogile vaid konkreetsele kasutajale spetsiifilisi objekte.
Paigaldatud tarkvarade otseteed, mis on tehtud kättesaadavaks kõigile kasutajatele, paiknevad
kataloogi \Documents and Settings üldiste kasutajaseadete kataloogis \All Users\Start Menu.
Reeglina paigaldatakse tarkvara kõigile arvutis registreeritud kasutajatele, kuid mitme
kasutajaga süsteemides lubatakse tarkvara paigaldada ka ainult paigaldajale. Sellisel juhul
luuakse linkfailid vaid paigaldaja kasutaja Start-menüü ja töölaua süsteemikataloogidesse.
Start menüüsse on võimalik igasuguseid otseteid tekitada ning lisaks otseteefailidele on Start
menüü kasutajale nähtavad kõik kataloogi kopeeritud failid. Reeglina on Start menüüs siiski
paigaldatud tarkvarade lingid ning tarkvarade eemaldamisel eemaldatakse automaatselt ka
vastavad linkfailid. Eemaldamata jäävad hiljem kasutamise käigus \Start Menu kataloogi
alamkataloogiidest ümber tõstetud või eraldi töölauale kopeeritud linkfailid, mille leidmine
annab viite arvutis eksisteerinud rakendustele ja failidele.
2.1.2.5 Teadlikkus failide ja tarkvarade olemasolust
Kuna otseteefailid on tavalised failid, mis sisaldavad endas suunamisfunktsiooni, on neil
failiatribuudid nagu teistelgi failidel, seal hulgas failisüsteemis loomise, viimati muutmise ja
viimati avamise ajad. Otseteefailide viimati muutmise failiaeg tavakasutuse käigus ei muutu,
kuid selle kaudu dokumendi või programmifaili avamisel muudetakse järjest otseteefaili ja
sihtfaili viimati vaatamise kuupäevad. Sihtfaili muutmisel ja ülesalvestamisel muudetakse ära
vaid sihtfaili viimati muutmise aja atribuut, kuid otseteefaili oma ei muudeta, sest seda faili ei
muudeta. Otseteefaili failiajad annavad meile viite otseteefaili loomise aja kohta, mis võib
viidata näiteks rakenduse paigaldamise ajale või siis ajahetkele, millal otsustati mingit faili
või programmi aktiivsemalt kasutama hakata ning loodi sellele otsetee töölauale. Kuigi
tarkvarade vaikeseadetega paigaldamisel luuakse otseteefailid töölauale tihtipeale
automaatselt, annab selle paiknemine kasutaja töölaual siiski viite kasutaja teadlikkusest
vastava faili või rakenduse kohta uuritavas arvutis, sest otseteefaili ikoon töölaual on küllalt
silmatorkav. Linkfaili ja sihtfaili failiaegade erinevus viitab aga teadlikule otsetee loomisele.
Sellise uuringu korral on siiski soovitatav vastava tarkvaraga läbi viia katse, et kontrollida,
27
kas vastava tarkvara paigaldamisel luuakse otseteefail töölauale automaatselt. Veelgi parem
viide kasutaja teadlikkusele mingist tarkvarast või failist on, kui kasutaja on otseteeikoonid
kopeerinud või tõstnud näiteks Start-menüüst või tekitanud \Program Files kaustast. Üldiselt
pakuvad tarkvarad paigaldamisel, et programm paigaldatakse ainult vastavale kasutajale või
kõigile kasutajatele. Viimasel juhul tekitatakse Start-menüü ja töölaua lingid ainult
vastavatesse \All Users kataloogidesse. Nüüd, kui administraatoriõigustes kasutaja otsustab
otsetee optimeerimiseks tõsta Start-menüü programmide alt programmile viitava lingi otse
töölauale, kaob see reeglina menüüst. Selline toiming mõjutab kõiki kasutajaid, sest
otseteefail eemaldatakse \All Users kataloogist ning tõstetakse juba konkreetsesse kasutaja
\Desktop kataloogi.
2.1.2.6 Teadlikkus kettapartitsiooni olemasolust
Nagu eespool mainitud, kasutatakse otseteefaile ka kettapartitsioonidele viitamiseks. Kuna
otseteefailid paiknevad enamasti süsteemiketta süsteemikataloogides, siis on võimalik, et nii
mõnigi link viitab failile ja kettale, mida uuritavas arvutis hetkel olemas ei ole. Nimelt
sisaldavad otseteefailid enda andmealas sihtfaili nime ning täispikka kataloogiteed.
Linkfailid, mis viitavad partitsioonile või kataloogile, sisaldavad vastava partitsiooni ja
kataloogi asukohta kataloogiteena. Füüsilise ketta puudumisel annab see viite, et arvutiga on
kunagi ühendatud eemaldatav ketas, ning näiteks tühja ketta korral vihjab see, et sihtfail võis
paikneda puhastatud kettal. Kuigi sellisel juhul ei leia uuringu läbiviija näiteks otsitavaid
andmefaile, võib ta leida viited nende failide nimedele ja kataloogikirjetele ning failide
loomise, muutmise ja viimati kasutamise ehk LMA aegadele, mis omakorda viitavad, et
uuritavas arvutis on kasutatud failide käitlemiseks välist andmekandjat.
2.1.2.7 Linkfailide tehnilised omadused
Otseteefailide huvitav omadus on, et nende loomisel salvestatakse otseteefaili andmealale
sihtfaili atribuutidele vastavad loomise, viimati muutmise ja viimati vaatamise ajamärgid
(LMA). Ajamärgid jäävad andmealal fikseerituks ning hilisema kasutuse käigus need muutu,
mis tähendab, et koos sihtfaili asukohaga kataloogipuus jäädvustatakse otseteefaili ka selle
faili ajatemplid. Otseteefaili loomise aja saame aga faili enda atribuutidest.
Otseteefaili andmealal olevad ajamärgid asuvad 8-baidiste kirjetena vastavalt otseteefailis
bait-ofsetil 28, 36 ja 44, moodustades selliselt 24-baidise kirje. Otseteefaili andmealal
paiknevate ajamärkide järjekord erineb failiatribuutides esitatust ning need tähistavad
vastavalt sihtfaili loomise, viimati avamise ja viimati muutmise aega (LAM). [3]
Mõnikord võib tekkida vajadus otsida viiteid failide kasutamisele, näiteks dokumendifailide
28
avamisele. Sellisel juhul on esimene võimalus pärast kustutatud kataloogikirjete taastamist
LNK-laiendi järgi failinimede sorteerimine. Selleks, et tuvastada võimalikke kustutatud ning
hävinud failitunnustega otseteefailide andmealasid, tuleb läbi viia otsing failide poolt
hõivamata alalt ning soovtavalt ka virtuaalmälufailist pagefile.sys. Otseteefailide andmevälja
otsingu teeb suhteliselt mugavaks faili päise üldkuju. Otseteefaili esimesed 7 baiti on
fikseeritud ning moodustavad 16-süsteemis signatuuri (4C 00 00 00 01 14 02) [3].
Otseteefaili andmeala suurus ei ületa reeglina kahte sektorit, mis annab võimaluse leitud
andmeala järgi otseteefaili taastamiseks. Järgnevalt on ära toodud otseteefailide sisu täpsem
kirjeldus.
FO Suurus Kirjeldus
0 Dword Alati 4C 00 00 00 ehk ‘L’
4h 16 baiti Otseteefaili GUID
20 Dword Lipud
24 Dword Faili atribuudid
28 Qword Time 1
36 Qword Time 2
44 Qword Time 3
52 Dword Faili pikkus
56 Dword Ikooni number
60 Dword ShowWnd väärtus
64 Dword „Hotkey“
68 Qword Reserveeritud, alati nullväärtustega
Joonis 2: Otseteefaili kirjed [11][12]
Järgnevalt on toodud otseteefaili kasutamisel failide kataloogikirjes olevate failiaegade
(LMA) ja otseteefaili andmealal paiknevate aegade käitumine erinevatel toimingutel:
Sihtfailile otseteefaili loomine:
•Otseteefaili LMA'le omistatakse ajad vastavalt süsteemikella näidule otseteefaili loomise
hetkel ning kõik kolm aega saavad sama väärtuse
•Otseteefaili kataloogikirje muutmise aeg saab sama väärtuse
29
•Otseteefaili andmealale kantakse sihtfaili LMA aegadele täpselt vastavad ajamärgid
järjestuses LAM
•Otseteefaili loomise muutub käigus sihtfaili viimati vaatamise aeg vastavalt süsteemikella
näidule loomise toimepaneku hetkel, mis on mõned sekundid varasem aeg, kui otseteefaili
LMA ajad. Kusjuures sihtfaili kirje muutmise aeg sellest ei muutu.
Otseteefaili kataloogipuus ümber tõstmine:
•Otseteefaili andmeala ajad ei muutu
•Otseteefaili LMA loomise ja viimati muutmise aeg ei muutu
•Otseteefaili LMA viimati avamise aeg muutub vastavalt süsteemikella näidule tõstmise
hetkel. Mõnel katsel võib see ka mitte juhtuda.
•Otseteefaili kataloogikirje muutmise aeg muutub vastavalt süsteemikella näidule kirje
muutmise hetkel ning võib olla mõned sekundit hilisem tõstmise hetkest
Sihtfaili avamine otseteefaili kaudu:
•Otseteefaili LMA ei muutu
•Otseteefaili andmeala ajad ei muutu
•Sihtfaili LMA ei muutu!
Avatud sihtfaili muutmine ning salvestamine:
•Sihtfaili LMA's loomise aeg ei muutu
•Sihtfaili LMA's viimati muutmise ja viimati avamise ajad muutuvad vastavalt
süsteemikellale ning saavad ühesuguse väärtuse
Kõik eespool nimetatud viited omavad vaid abistavat rolli edasiste viidete otsimisel, sest
ajamärke ei saa kunagi kindla tõendina kasutada, juba seetõttu, et kõik arvuti kasutamise
käigus loodavad ajamärgid sõltuvad süsteemikella õigsusest ajamärgi loomise hetkel. Isegi
juhul, kui saame olla kindlad süsteemikella täpsuses, on failiaegade ajamärkide loomisel alati
võimalus vastuoludeks, mis tulenevad erinevate tarkvarade kasutamisest. Lisaks on
failiatribuute suhteliselt lihtne muuta, näiteks Windows Explorer'ga konkureeriv tarkvara
Total Commander võimaldab korraga muuta terve kataloogitäie failide viimati muutmise
aega, muutes sellega ka viimati vaatamise ning atribuudi viimati muutmise ajamärgid.
30
2.1.2.8 Kasutaja prügikast
Ekspertiise tutvustavas peatükis mainisime, et failide kustutamine tähendab failide
ülekirjutamiseks vabaks märkimist ning faili prügikasti tõstmisel tekitatakse sellesse faili
taastamiseks eraldi kirje. Kõigil Windows operatsioonisüsteemi kasutajatel on töölaual
prügikasti (ingl. k Recycle Bin) ikoon. Prügikast on peidetud süsteemikataloog, millesse
luuakse faili kustutamise käigus koopia kustutatavast failist. Faili tavapärasel kustutamisel
kaob fail enda algsest kohast ning tekib taas prügikasti, kuid faile saab kustutada ka otse, ilma
prügikasti vahenduseta Shift-Del klahvikombinatsiooniga. Sellisel juhul märgitakse fail
kustutatuks ning prügikasti selle koopiat ei tekitata. Iga NTFS partitsiooni juurkataloogis
paikneb süsteemikataloog \Recycler ja vastavalt FAT partitsioonil \Recycled. Kataloogi
\Recycler omapära on, et seal luuakse igale sisseloginud kasutajale kustutatud failide jaoks
eraldi kataloog ehk kasutaja isiklik prügikast. Igas sellises kataloogis on eraldi peidetud
INFO2 süsteemifail prügikasti haldamiseks ning desktop.ini fail mille sisu määrab, et tegu on
prügikastiga. Kataloog luuakse esimesel kustutamisel ja nimetatakse kasutaja SID-numbri
järgi ning õigused selle lugemiseks on vaid kasutajal või administraatoril. Selleks, et arvuti
uuringu käigus teada, millisele arvutis registreeritud kasutajale mingi prügikast kuulub, tuleb
SID-numbrid kasutajanimeks teisendada. Seda protsessi käsitletakse käesoleva töö Windows
Registri peatükis.
Kuna igal arvuti kasutajal on \Recycler kataloogis eraldi SID-numbri järgi nimetatud
kataloog, siis üks kasutaja töölaua prügikastis teise kasutaja kustutatud faile ei näe. Seda
omadust saab ära kasutada andmete lihtsaks peitmiseks kataloogi, tavakasutuse käigus kunagi
ära ei kustutata. Kui \Recycler kataloogis olev kasutaja SID-kataloog ümber nimetada, siis
töölaua prügikastis neid enam näha ei ole. Siiski on need alles ümber nimetatud kataloogis
ning neid faile ei sa kustutada töölaua prügikasti tühjendamise käsuga. Sama moodi võib
prügikasti erinevatesse süsteemikataloogidesse otse faile kopeerida. Need pole küll nähtavad
ühegi kasutaja töölaua prügikastis, kuid neid ei mõjuta prügikasti tühjendamise protsess. Kui
kasutaja prügikasti kataloog ümber nimetada või otse Shift-Del käsuga kustutada, luuakse
järgmisel faili kustutamisel \Recycler kataloogi uus kasutaja SID-numbri järgi nimetatud
kataloog ning prügikast toimib edasi. Selle omaduse järgi saab tühja \Recycled kataloogi järgi
viite, et kasutaja pole ühtegi faili veel kustutanud või on faile kustutanud otse ning jälgi
jätmata.
2.1.2.9 Prügikasti toimimine
Faili prügikasti abil kustutamise protsess on järgmine. Kui kasutaja tõstab faili prügikasti,
kustutatakse MFT'st vastava faili kirje ning luuakse uus kirje selle sama faili uue nimega.
31
Süsteemifaili INFO2 lisatakse kustutatud faili kohta kirje, mis sisaldab faili kustutamise
kellaaja ja kuupäeva ning algse kataloogitee.
Kustutamisel salvestatakse faili järjekorranumber ehk indeks \Recycler kataloogis, mille
loendamine algab pärast iga prügikasti tühjendamist uuesti nullist ning kustutatud fail saab
MFT kirjes uue nime. Nime vorming on järgmine: D[partitsioon][indeks].[faililaiend].
Näiteks, kui \Recycler tühjendatakse ja seejärel kustutatakse fail Thumbs.db, mis paikneb
kataloogis F:\Pildid\Minupildid, siis nimetatakse see fail ümber nimega DF0.db. Faili algne
nimi, asukoht kataloogipuus, kustutamise aeg ja järjekorranumber lisatakse 800 baidise
kirjena INFO2 faili [7]. Kustutamine ja prügikasti tõstmine ei toimi eemaldatavate ketaste
(ingl. k Removable Disk) ning võrguketaste puhul, siis märgitakse fail otse kustutatuks ning
INFO2 kirjet ei looda. Kohaliku kettana (ingl. k local disk) süsteemis olevale välisele kettale
luuakse prügikasti kataloog vastavalt failisüsteemile FAT'i korral \Recycled ja NTFS puhul
kataloog \Recycler ning selles paiknevad kustutatud failid on näha kohaliku töölaua
prügikastis. Välise ketta eemaldamisel kaovad prügikastist ka selle vastavad kustutatud failid,
mis on taas ühendamisel uuesti nähtavad. Kui kasutaja tühjendab prügikasti, kustutab
Windows kõigi süsteemi ühendatud kohalike ketaste INFO2 failis registreeritud kustutatud
failid ning märgib INFO2 failid väiksemaks. Seetõttu jäävad faililõpualasse eelmise INFO2
faili kirjed alles.
2.1.2.10 Teadlikkus failide olemasolust kustutamisel
Järgnevalt kirjeldatud viidete kontroll on vajalik peamiselt lapspornoga seotud uuringutes,
kus on oluline kindlaks teha, kas ja kuidas kollektsiooni omanik faile käitles. Selliseid
uuringuid tehakse siis, kui on juba tõsised tõendid, et kahtlustatav tegeles süstemaatiliselt
materjalide kollektsioneerimise, tootmise või levitamisega.
INFO2 kirje viitab, et kasutaja võis kustutada faili teadlikult ning seega olla teadlik faili
olemasolust. Failid, mis kustutatakse operatsioonisüsteemi poolt, ei jäta kirjeid INFO2 faili.
Kui kasutaja väidab, et uuritav fail on tahtmatult internetist alla laetud, saab faili algse
asukoha kirje järgi INFO2 failist väite tõepärasust kontrollida. Kui fail asus enne kustutamist
veebibrauseris seadistatud allalaadimiste kataloogis või brauseri ajutiste failide kataloogis, on
väite õigsus tõenäolisem kui juhul, kus fail paiknes kasutaja dokumendikausta suvalises
alamkataloogis.
Kustutamise kuupäeva järgi saab kontrollida kasutaja väiteid failide kasutamise ja
kustutamise kohta. Näiteks saab kontrollida kasutaja väidet, et ta küll nägi arvutis keelatud
faile, kuid kustutas need ammu, kohe pärast nägemist.
32
2.1.2.11 Prügikasti taastamine
Kuna prügikasti tühjendamine on tavaline toiming, ei saa piirduda vaid \Recycler kataloogi
INFO2 failide analüüsiga ning viiteid failide kustutamise kohta tuleb otsida failide poolt
hõivamata alalt. Kirjete otsimisel on kolm keerukuse astet: kui INFO2 fail on osaliselt üle
kirjutatud, kui INFO2 faili failitunnused on hävinud ja kui INFO2 faili andmeala signatuur on
hävinud.
Esimesel juhul näeme ketast madaltasemel vaadeldes, et INFO2 faili algus on eksisteeriva
faili andmeala, kuid sealt edasi jätkuvad kirjed faililõpualal (ingl. k slack space) oleval
eelmise kustutatud faili andmealal.
Teisel juhul, kui kustutatud INFO2 fail ise on kustutatud ning hävinud on ka selle MFT kirje,
tuleb otsida INFO2 faili algustunnust, mille leidmisel saab jätkata juba faili kirjete
analüüsimisega.
Kolmandal juhul, kui on hävinud ka INFO2 faili andmeala algustunnus, jääb üle vaid katse-
eksituse teel otsida failide poolt hõivamata ala oletatava sisu järgi, näiteks kataloogitee või
failinime järgi.
NT-süsteemides on INFO2 faili kirje pikkus on 800 baiti, Windows 95/98
operatsioonisüsteemis 280 baiti. Windows XP INFO2 faili 12 baidi pikkune algustunnus on
16'nd süsteemis (05 00 00 00 00 00 00 00 00 00 00 00). Seejärel tuleb FO:12 LE:8 märge
kirjete pikkuse kohta, mis on 16'nd süsteemis esitatud 32-bitine Little-endian täisarv (20 03
00 00 00 00 00 00) ehk 800 baiti. Kirje ise algab täispika kataloogiteega, mis sisaldab
kustutatud faili algset failinime. Kirje algusest lugedes 261. baidil asub 4 baidi pikkune
kustutatud faili kustutamise järjekorranumber ehk indeks ning sealt edasi 265. baidil asub 4
baidi pikkune faili päritolupartitsiooni kood, mis C: ketta puhul on vastavalt 02. 269. baidist
algab 8 baidi pikkune kirje kustutamise kuupäeva ja kellaaja kohta. Siis tuleb 4 baidine Int32,
mis näitab faili füüsilist suurust ehk siis faili loogilise suuruse ja faililõpuala summat.
Näiteks, kui faili suurus on 10 baiti, siis on kirjes märgitud suuruseks klastri suurus ehk 4096
baiti. Ülejäänud osas on kataloogitee ära toodud unikood formaadis. [3]
33
2.2 NT-põhise Windows'i register
Windows operatsioonisüsteemi register on väga keeruline erinevatest failidest koosnev
kataloog, mis sisaldab operatsioonisüsteemi seadeid ning paigaldatud tarkvarade, riistvara ja
kasutajate seadistusi ning valikuid. Lisaks sisaldab register ajatsooni infot, mis on vajalik
failiaegade analüüsimisel. Nagu eespool mainitud, on registris määratud kasutajate SID-
koodid ning pääsuõigused ressurssidele. Registrifailid ise on omapärased sisemist
failistruktuuri sisaldavad failid ning nende lugemiseks läheb vaja spetsiaalset tarkvara, mille
erinevaid variante võib leida internetist.
Windows’i registril on kaks olekut: töötav register (ingl. k online registry) ja ootel register
(ingl. k offline registry). Töötava registri sisu saadaval vaid süsteem töötamisel ning süsteemi
väljalülitamisel läheb register ooteseisundisse. Viimane olek on ühtlasi register, mida arvuti
uuringu käigus vaadelda tuleb.
2.2.1.1 Töötav register
Töötavat registrit saab sisselülitatud arvutis otse vaadelda ja ümber seadistada regedit.exe
abil, mis ei ole soovitatav, kuna vale seadistus võib rikkuda terve süsteemi. Ekspertiisi
seisukohalt on aga igasugune töötava arvuti uurimine lubamatu juhul kui see pole vältimatu
ainuvõimalik lahendus arvuti uurimisel.
Windows 2000 ja XP register on jagatud nelja sektsiooni: võtmed, nimed, tüüp, ja andmed
(vastavalt ingl. k: key, name, type, data). Kasutajatele näidatakse võtmeid kataloogidena, mis
sisaldavad registriväärtusi, millel omakorda on nimi, tüüp ja andmeosa. Andmeosa jaguneb
esituse tüübi järgi üldiselt kolmeks stringitüübiks (tavaline, multistring ja laiendatav string),
binaarkujul esitatud andmeosaks ning numbriliselt esitatud andmeosaks, mida saab samuti
kahendsüsteemis esitada.
2.2.1.2 Ootel register
Ootel olekus registri vaatlemiseks tuleb välja lülitatud arvuti andmekandjalt üles otsida
registrifailid, mis asuvad operatsioonisüsteemi juurkataloogi alamkataloogis
\system32\config. Nagu operatsioonisüsteemi tuvastamise peatükis nimetatud, on NT ja 2000
juurkataloogiks \Winnt ja XP'l \Windows. Üles leiab need ka faili andmeala signatuuri regf
järgi, mis 16-nd süsteemis esitatuna on (72 65 67 66). Registrifailid on ilma faililaienditeta
ning neile vastad järgmised registrikogumid:
Sam – HKEY_LOCAL_MACHINE\SAM
Security – HKEY_LOCAL_MACHINE\SECURITY
34
Software – HKEY_LOCAL_MACHINE\SOFTWARE
System – HKEY_LOCAL_MACHINE\SYSTEM
Default – HKEY_USERS\.DEFAULT
Userdiff – ei ole seotud ühegi registrikogumiga, kasutatakse vaid
operatsioonisüsteemi uuendamisel
Lisaks paiknevad kasutajate juurkataloogides registrifailid:
Ntuser.dat – HKEY_USERS\<kasutaja-SID> (lingitud registrikogumiga
HKEY_CURRENT_USER)
\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat – HKEY_USERS\<kasutaja-
SID>_Classes (lingitud registrikogumiga HKEY_CURRENT_USER\Software\Classes)
[3] [13]
2.2.2 Registri kirjed
Registrifailide analüüsimiseks on erinevaid tasuta tarkvarasid ning ekspertiisitarkvara poolt
pakutavaid otsinguskripte. Automaatse registriinfo tõlgendamise järel tuleks siiski tulemused
alati käsitsi üle kontrollida. Järgnevas peatükis on ära toodud loetelu registrialadest, mis
sisaldavad uurimisel kasulikku informatsiooni.
2.2.2.1 Turvainfo
Operatsioonisüsteemi turvainfot hallatakse kahes registrikogumis: SAM ja SECURITY.
Uurimisel tuleb vahet teha, kas vaadeldakse kasutaja seadeid serveris või kohalikus masinas.
Kohaliku masina SAM fail sisaldab ainult lokaalse NT-süsteemi kasutajate ja
kasutajagruppide andmeid, mitte domeeni loginud kasutajaid. Operatsioonisüsteemi
paigaldamisel luuakse kohalikus masinas kaks vaikimisi kontot: kohaliku administraatori
konto ja külalise konto. Need on lokaalsed kontod, mis ei ole seotud arvutivõrgu domeeni
kasutajatega. Kõik ülejäänud lokaalsed kontod registreeritakse samuti SAM registrifailis.
Tavaliselt on kohalikud kontod kasutusel koduarvutites.
Arvuti, mida kasutatakse arvutivõrgu domeeni kasutajaga tarvitsebki sisaldada vaid kaht
lokaalset vaikimisi kontot. Kui arvutit kasutatakse domeeni logimiseks, toimub kasutaja
autentimine domeeniserveris selle õnnestumisel annab server kohalikule masinale loa
sisselogimisega jätkamiseks.
Kuna domeenikontosid hoitakse domeeniserveri SAM failis, siis arvutivõrkudest arvutite
35
kaasa võtmisel tuleks hinnata, kas on vajalik eraldi ligipääs domeenikontrollerile sellest SAM
faili kättesaamiseks. Nimelt peab kasutajate, kasutajakontode, viimaste logimiskuupäevade,
kodukataloogide kohta info saamiseks hankima SAM faili serverist. Lokaalses tööjaamas on
palju informatsiooni, mille kasutajaõigustele viidatakse vaid kasutaja SID-numbriga ning SID
kasutajanimeks lahendamine on võimalik ainult autentimisserverist saadud SAM faili abil.
Kasutajakontod paiknevad registrikogumis HKEY_LOCAL_MACHINE\SAM võtme all
\SAM\Domains\Account\Users\Names. Võtme Names kohal on kataloogid nimedega, mis on
esitatud sarnaselt: 1F4. Kataloogid on otseses seoses kasutajanimedega, mis on võtme Names
all olevas nimekirjas. Iga nime tüübi (ingl. k type) välja identifitseerimisega luuakse link
katalooginime ja loetava kasutajanimega. [3]
Kataloogi nimi on kasutaja ID ehk UID (ingl. k user ID). Näites toodud UID on tegelikult 32-
bitine number Big-endian formaadis ehk siis 16-nd süsteemi arv (00 00 01 F4), mis teisendub
kümnendsüsteemis arvuks 500, mis omakorda esitab vaikimisi administraatori konto UID'd.
[3]
UID'd sisaldava võtme leiab võtme Names all olevate võtmete nimestikust. Võti sisaldab kaht
faili, milles on enamus infost talletatud binaarkujul:
„v“ fail sisaldab konto andmeid: kasutajanime SID'd, kodukataloogi, paroole jne
„f“ fail sisaldab kontoga seonduvaid kuupäevi.
Kasulik informatsioonikild „v“ failis on SID number, mida kasutatakse kasutaja
identifitseerimiseks arvutivõrgus ja mis eristab, milline server autendib kasutaja. Näiteks:
S-1-5-21-1911861664-3925631421-1273205461-3056.
SID number on lahendatav väiksemateks elementideks:
S – tegu turvaidentifikaatoriga (ingl. k security identifier)
1 – SID struktuuri versiooninumber. NT-põhistes süsteemides on alati 1.
5 – SID volituste taset. 1 viitab kõigile (ingl. k everyone), 5 viitab kindlale kasutajale.
21 - 1911861664-3925631421-1273205461 - unikaalne domeeni või arvuti identifikaator.
3056 – suhteline identifikaator RID (ingl. k relative identifier). Kasutaja või grupi ID.
Ülaltoodud näites vastab sellele vaikimisi administraatori UID 500. Kõik arvutisse ise loodud
kontode ID'd esitatakse alates numbrist 1000. [3]
36
2.2.2.2 SID numbrite kokkuviimine kasutajanimedega
Eelnevalt mainisin, et \Recycler kataloogi kasutajakataloogide nimede järgi saab tuvastada
kataloogi omaniku kasutajanime. SID numbrite domeeni kasutajanimedega kokkuviimine
toimub registrivõtme abil, mis paikneb ($$$PROTO.HIV) registrikogumis
HKEY_LOCAL_MACHINE\SOFTWARE võtme all \Microsoft\Windows
NT\CurrentVersion\ProfileList.
Võti ProfileList salvestab NT töömasinasse loginud kasutajatega seotud andmete asukoha
kataloogipuus ning omakorda kasutaja SID-numbrite järgi nimetatud alamvõtmeid. Iga
alamvõti sisaldab EXPAND_SZ (laiendatav string) tüüpi registriväärtust nimega
ProfileImagePath, mis näitab kasutaja kataloogi kohalikus süsteemis. Kuna kasutaja
juurkataloog on tavaliselt seotud kasutajanimega, saab selle järgi kindlaks teha,
kasutajanimedele vastavad SID'd NT 4.0 või Active Directory domeenis. Register sisaldab
täiendavat infot arvuti olemasolu kohta arvutivõrgus.
Registrikogumi HKEY_LOCAL_MACHINE\SECURITY võti \Policy\PolAcDmN\Default
sisaldab lokaalse masina võrgunime. Võti \Policy\PolAcDmS\Default sisaldab lokaalse
masina võrgu-SID. Võti \Policy\PolPrDmN\Default sisaldab arvuti peadomeeni nime, millega
kohalik masin ühendub ja läbi mille ta ennast vaikimisi võrgus autendib. [3]
Juhul, kui domeenis autentiv tööjaam peaks kaotama võrguühenduse, kasutab tööjaam
kasutaja autentimiseks logimise vahemälu. NT-põhised Windows'id salvestavad vaikimisi
seadistusena vahemällu viimased kümme sisselogimist. Alates Windows 2000'st salvestatakse
need logimised krüpteeritult. Krüpteerimata jäetakse logimise aeg ning UID. Vahemällu
salvestatud logimiskirjed leiab registrikogumi HKEY_LOCAL_MACHINE\SECURITY
võtme alt \Cache\NL$n, kus n tähistab vahemällu salvestatud logimise numbrit nullist
üheksani. [3]
Järgnevalt on toodud logimistega seonduvad täpsustused registris võtme alt:
\Software\Microsoft\WindowsNT\CurrentVersion\WinLogon\
CachedLogonsCount – vahemällu puhverdatud sisselogimiste summa unikoodis.
DefaultDomainName – domeeni nimi unikoodis, mille logimisi puhverdatakse.
DefaultUserName – viimati sisseloginud kasutaja nimi, seda näidatakse vaikimisi
järgmisel sisselogimisel.
Samas sektsioonis on järgnevalt veel kasulikku informatsioonikilde:
LegalNoticeCaption - märkuse pealkiri aknale, mis näidatakse korraks pärast
37
sisselogimist
LegalNoticeText – näidatava teate tekst.
ShutdownWithoutLogon – sulgemise valik sisselogimisaknas (1 lubab väljalülituse, 0
eemaldab valiku).
PasswordExpiryWarning – kasutajate hoiatamise päevade arv enne parooli kehtivuse
lõppemist. Salvestatakse binaarkujul 32-bitise integerina. Vaikimisi 14 päeva. [3]
2.2.2.3 Käivitatava süsteemi seaded
Register System sisaldab kontrollsätete võtmeid ControlSet, mis sisaldavad täielikku süsteemi
laadimiseks vajalikku informatsiooni. Vaikimisi on neid kaks: ControlSet001 ja
ControlSet002. Süsteemi laadimisel tehakse ühest neist koopia ning laetakse see töötava
registrina. Uurimise seisukohalt on olulisim kontrollsätete informatsioon ajaseaded. Windows
süsteemis salvestatakse ajaseaded reeglina binaarkujul universaalajas GMT. See tähendab, et
arvuti uurimisel on oluline teadvustada, millised on parasjagu uuritava arvuti ajatsooni
seadistused. Lahendus on uurimiseks kasutatav laboriarvuti seadistada uuritava süsteem
ajaseadete järgi, milleks omakorda peab teadma, milline ControlSet uuritavas arvutis viimati
kasutusel oli.
Vastavat infot sisaldavad registrikogumi HKEY_LOCAL_MACHINE\SYSTEM võtmed:
\Select – sisaldab vaikimisi ControlSet kontrollsätete seadistuste kogu.
\Select\Current - töötavas arvutis viimati kasutatud ControlSet kontrollsätte number.
\Select\Failed - viimase alglaadimisel rikke põhjustanud ControlSet kontrollsäte number.
Kui riket pole olnud, on selle väärtus 0.
\Select\LastKnownGood – teada olevalt töökorras oleva ControlSet kontrollsätte
number, mida kasutatakse, kui arvuti alglaadimisel hangub. [3]
2.2.2.4 Ajatsooni seaded
Kuupäevad ja kellaajad salvestatakse Windows süsteemis meediale universaalajana GMT
(Greenwich Mean Time) ajatsoonis mida nimetatakse ka UTC (Coordinated Universal Time).
Ajakirje salvestamisel kontrollib Windows registrist ajatsooni seadeid ehk arvuti ajanihet
(ingl. k bias ofset) GMT suhtes ning uuesti kirje lugemisel teisendab Windows või EnCase
ekspertiisitarkvara loetud GMT aja esitatavaks ajaks vastavalt kohaliku aja seadetele töötavas
masinas. Arvutiuuringu probleemiks on, et meedia võib pärineda erinevast ajatsoonist või
seadistatud valesse tsooni. Seetõttu peab alati kontrollima registrist ajatsooni ja aktiivset
38
ajanihet GMT suhtes ning seadma labori arvuti süsteemikella samasse aktiivsesse ajatsooni.
Kui viimati kasutuses olnud kontrollsätete number on kindlaks tehtud, tavaliselt 1 ehk
vastavalt registrivõti ControlSet001, leiab ajaseadete võtmed registrikogumist
HKEY_LOCAL_MACHINE\SYSTEM, kus need paiknevad väärtustena
\ControlSet001\Control\TimeZoneInformation võtme all:
ActiveTimeBias – nihe minutites GMT suhtes, hetkel kasutusel oleva ajaseade, millele
on juba liidetud DayLightBias väärtus. 32-bitine täisarv.
Bias – nihe minutites GMT suhtes ajatsooni seade jaoks. 32-bitine täisarv..
DaylightBias – minutite arv Bias väärtuse suhtes talve- ja suveaja seadistuse jaoks.
Tavaliselt FF FF FF 4C ehk –60 minutit
DaylightName – ajatsooni talve- ja suveaja seadete nimi unikoodis.
DaylightStart – vaata allpool
DisableAutoDaylightTimeSet – registriväärtus, mis näitab, kas talve- ja suveaja
automaatne seade on deaktiveeritud (1 – deaktiveeritud, 0 - aktiveeritud)
StandardBias – minutite arv Bias väärtuse suhtes standardse aja jaoks. Tavaliselt 0.
StandardName – standardse ajatsooni seadistuse nimi unikoodis.
StandardStart – vaata allpool [3]
ActiveTimeBias näitab hetkel aktiivset ajanihet GMT suhtes. Näiteks, kui ActiveBias kirje
madaltasemel esitatuna on Big-endian formaadis ehk 16-nd süsteemis (4C FF FF FF), mis
töötavas registris esitatakse 32-bitise Little-endian täisarvuna (FF FF FF 4C) ehk –180.
Järelikult on aktiivne nihe GMT suhtes –180 minutit ehk 3 tundi, mis tähistab suveaega
Eestis. Vastavalt tähendab (00 00 01 68), et nihe GMT suhtes on 360 minutit ehk –6 tundi,
mis on suveaeg Arizonas. Oluline on jälgida, kas süsteemis on aktiveeritud suveaeg, sest
talveajal on vastavad nihkeväärtused (FF FF FF 88) ehk +2 ja (00 00 01 A4) ehk –7.
Peale selle peab kindlaks tegema veel väärtused StandardStart ja DaylightStart, mille üldkuju
esitatakse little-endian formaadis: päev, kuu, nädal, tund:
Päev – nädalapäev, kuna nädal algab pühapäevaga ning see on ka kellakeeramise päev,
siis on selle 16-bitise täisarvu väärtus 0.
Kuu – kuu esitus 16-bitise täisarvuna 1-12, vastavalt on märtsi väärtus 3.
Nädal – nädala number kuus, 16-bitise täisarv, mis algab väärtusega 1.
39
Tund – 24-tunnise päeva kellakeeramise tund. [3]
Näiteks 2008. aastal keerati kell 30. märtsi öösel kell 3:00 suveajale minekuks ühe tunni võrra
edasi. Vastav DaylightStart väärtus registris on (00 00 03 00 05 00 03 00) ehk pühapäev,
kolmas kuu, viies nädal, kolmas tund.
2.2.2.5 Veel olulisi registriseadeid
Võtmed registrikogumist HKEY_LOCAL_MACHINE\SOFTWARE:
\Microsoft\Windows\CurrentVersion\Uninstall – nimekiri paigaldatud rakendustest
\Microsoft\Windows\CurrentVersion\AppPaths - nimekiri paigaldatud rakendustest ja
kataloogiteed rakenduste programmifailidele
\Microsoft\Windows\CurrentVersion\Run – alglaadimisel käivitatavad failid.
\Microsoft\Windows\CurrentVersion\RunOnce – järgmisel arvutisse sisselogimisel
ühekordselt käivitatavad failid.
\Microsoft\Windows\CurrentVersion\RunOnceEx – rakenduste paigaldamisel või
seadistamisel ühekordselt käivitatavad failid.
\Microsoft\Windows\CurrentVersion\Setup – sisaldab süsteemi alglaadimise kataloogi,
tavaliselt C:\ ja teisi süsteemi seadistuse väärtusi
\Microsoft\WindowsNT\CurrentVersion – süsteemi paigaldamise info. Sisaldab
registreeritud kasutaja andmeid, paigaldamise kuupäeva, süsteemi versiooni jne.
\Microsoft\WindowsNT\CurrentVersion\Network Cards – paigaldatud võrgukaardid
\Microsoft\WindowsNT\CurrentVersion\Profile List – viimati laetud profiilid.[3]
Võtmed registrikogumist HKEY_LOCAL_MACHINE\SYSTEM:
\Current:ControlSet001\Control\ComputerName – lokaalse arvuti nimi
\Current:ControlSet001\Control\Windows\ShutDownTime – viimane registreeritud
arvuti väljalülitamise aeg. Ekspertiisi läbiviimisel on oluline kontrollida, millal võetud
arvuti välja lülitati. Kui aegade võrdlemine viitab sündmuskohal väljalülitamisele, võib
oletada, et arvutit vaadeldi juba kohapeal ning ekspertiisi läbiviimisel tuleks konsulteerida
vaatlejaga arvutiga läbiviidud toimingute osas.
\Current:ControlSet001\ENUM\IDE – IDE ketta informatsioon. ENUM võtme all on
lisaks info erinevate paigaldatud seadmete kohta.
\Current:ControlSet001\Services\lanmanserver\Shares – teistele kasutajatele välja
40
jagatud kataloogid ja partitsioonid.
NTUSER.DAT failist registrikogumi HKEY_CURRENT_USER võtmed:
• \Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs – hiljuti avatud
failid grupeerituna failitüüpide kaupa.
• \Software\Microsoft\Windows\CurrentVersion\Explorer\Map Network Drive MRU –
kasutaja poolt arvutivõrgust külge võetud võrguketaste nimi.[3]
Peatükis kirjeldatud registriseaded moodustavad suhteliselt väikese osa kogu NT-põhiste
Windows operatsioonisüsteemide registrist. Kõiki registri lugemise reegleid ei olegi võimalik
ette anda, sest igal paigaldatud tarkvaral oma viis andmete salvestamiseks registris. Windows
registris vabalt orienteerumine ning registriseadete uurimine ja tõlgendamine on pidevat
süvenemist ja aega nõudev töö.
41
2.3 NT-põhise Windows'i logimissüsteem
Järgnev peatükk käsitleb NT-põhiste Windows operatsioonisüsteemide kaht erinevat
logimissüsteemi. Esimene neist, süsteemi sündmuste logimine toimub operatsioonisüsteemi
tasandil, teine aga on seotud NTFS failisüsteemi toimimisega.
2.3.1 Sündmuste logimine
Sündmuste logimine (ingl. k event log) võeti kasutusele esimese Windows NT’ga. See on
süsteem, kus tarkvarad ja operatsioonisüsteemi komponendid saavad kasutada
tsentraliseeritud logimisteenust, et raporteerida sündmustest, mis on aset leidnud, nagu
näiteks rikked, komponendi käivitamine või tegevuse lõpetamine. NT-põhised Windows
operatsioonisüsteemid tekitavad kolme tüüpi sündmuste logisid:
1. süsteemi logi (ingl. k system log)
2. rakenduste logi (ingl. k application log)
3. turvalogi (ingl. k security log)
Süsteemi logi sisaldab operatsioonisüsteemi sündmuste kirjeid, näiteks vigade kohta
süsteemikomponentide käivitamisel. Rakenduste logi sisaldab kirjeid rakenduste
operatsioonide kohta. Süsteemi- ja rakenduste logides salvestatud sündmused jagunevad tüübi
järgi: veaks, hoiatuseks ja infoks. Veasündmused on tõsised rikked, hoiatavad sündmused
teavitavad võimalikest probleemidest ning infosündmused on lihtsalt märkused. Turvalogi
sisaldab operatsioonisüsteemi sisse- ja väljalogimiste kirjeid, logimiste ebaõnnestunud
katseid, ligipääsuõiguste muudatusi ning süsteemi käivitamist ja väljalülitamist. Turvalogi
saab täita vaid lokaalse süsteemi volitatud teenus lsass.exe. Turvalogi kasutab kahte
sündmuse tulemuse hindamistüüpi: õnnestumine (ingl. k success) ja ebaõnnestumine (ingl. k
failure). Millegipärast on Windows NT/2000 süsteemides turvalogimine vaikimisi sisse
lülitatud vaid operatsioonisüsteemi serveriversioonis kõigil ülejäänud versioonidel on
turvalogi aktiivne.
2.3.1.1 Logide lugemine
Logide lugemiseks on NT-põhises Windows süsteemis programm Event Viewer. Sündmuste
logifailid on Evt-laiendiga ning paiknevad vaikimisi operatsioonisüsteemi juurkataloogi
alamkataloogis \System32\Config: SecEvent.Evt, AppEvent.Evt ja SysEvent.Evt.
Laborimasinas vaatlemiseks saab failid välja kopeerida ning avada Event Viewer
rakendusega eventvwr.exe.
Järgnevalt on toodud turvalogi informatsioon vaadelduna programmiga Event Viewer:
42
• Type –sündmuse hindamise tüüp
• Date, Time – sündmuse toimumise aeg
• Source – sündmuse loginud protsess või rakendus
• Category – sündmuse kategooria või toiming
• Event – sündmuse numbriline ID unikaalsete sündmuste identifitseerimiseks.
• User – kasutaja SID
• Computer – sündmusi logiva arvuti nimi
Logifailide vaatlemisel Event Viewer programmiga on oluline, et lokaalse arvuti regiooni- ja
ajaseaded vastaksid süsteemi seadetele, millest logi pärineb. Töötava arvuti turvalogi
vaatlemiseks peab kasutaja olema sisseloginud administraatorina. Teisest arvutist kopeeritud
turvalogi vaatlemise saab teha tavalise kasutajaga.
Sündmuste logid avatakse logimisteenuse käivitamisel operatsioonisüsteemi laadimisega.
Logifailide avamisel teeb teenuste kontrollhaldur (ingl. k service control manager) faili päises
turvamärke, mille tulemusena annab avatud logifaili kopeerimise ja Event Viewer’ga avamise
katse teate vigase faili kohta. Ekspert saab Event Viewer’it kasutada töötavast või
voolukatkestusega välja lülitatud arvutist kopeeritud failide vaatlemiseks alles pärast faili
päise modifitseerimist.
2.3.2 $LogFile
Järgnevalt uurime madaltasemel logimissüsteemi, mis on seotud vaid NTFS failisüsteemi
toimimisega. NTFS on tehingutepõhine failisüsteem, kus iga failisüsteemi toiming logitakse
failis $LogFile. See on kasutajale nähtamatu NTFS'i kolmas süsteemifail partitsiooni
juurkataloogis, mis luuakse NTFS failisüsteemi loomisel. Selle loogiline ja füüsiline suurus
on võrdsed. $LogFile failiajad on tekitatakse süsteemi paigaldamisel ning edaspidise kasutuse
käigus need ei muutu, mis võimaldab kontrollida partitsiooni NTFS failisüsteemiks
vormindamise aja.
$LogFile sisaldab failisüsteemi muudatuste logi, et tagada metaandmete terviklikkus ning
sellega süsteemi taastamisvõime. $LogFile's salvestatakse kindlad tegevused vastavalt nende
esinemisele süsteemis selliselt, et tegevusi saaks korrata või tagasi võtta. [3]
Logimise tsükkel koosneb järjestikustest sündmustest. Näiteks faili loomine koosneb kolmest
43
sündmusest: NTFS tekitab loodava faili jaoks vastava MFT kirje, märgib faili andmeala
kaardistamiseks vastavad bitid $BitMap faili ja lõpuks teeb sissekande indeks-kirjetesse,
millega luuakse faili kataloogikirje. Iga tsükkel märgitakse lõpetatuks alles siis, kui kõik
tsükli sammud lõpetatakse. Kui tekib viga ja näiteks viimane sündmus jääb lõpetamata,
märgitakse terve toimingutsükkel mittelõpetatuks. [3]
$LogFile salvestab iga toimingutsükli sammud, et neid vajadusel korrata või tagasi pöörata.
Lisaks peetakse failis arvet süsteemi järjestikuste toimingutsüklite kohta, et vea korral teada,
kui kaugele tagasi tuleb terviklik failisüsteemi taastamiseks minna. Süsteemivea taastamisel
otsustatakse $LogFile järgi, toimingutsüklite kordamine ja tagasivõtmine vastavalt sellele, kas
tsükkel on lõpetatud või mittelõpetatud. Lõpetatud tsükli korral korratakse logitud samme
ning mittelõpetatud tsükli sammud võetakse tagasi:
Tekkis süsteemiviga
Toiming lõpetamata – tsükkel võetakse tagasi
Toiming lõpetatud – tsükkel korratakse
Toiming lõpetatud – tsükkel korratakse
Toiming lõpetatud – tsükkel korratakse
Toiming lõpetamata – tsükkel võetakse tagasi
Toiming lõpetatud – tsükkel korratakse
Viimane süsteemi terviklik olek
2.3.2.1 $LogFile lugemine
$LogFile esimesed kaks kirjet on signatuuriga RSTR, ülejäänud kirjed algavad signatuuriga
RCRD. Ühe kirje pikkus on 4096 baiti ehk vaikimisi klastri suurus NTFS failisüsteemis. Faili
kirjed $LogFile's ei muutu prügikasti tõstmisel ega ka prügikasti tühjendamisel. Need
kirjutatakse üle alles süsteemi vajadusel. Võimalusel saab $LogFile'st taastada faili MFT
kirjed (mis MFT's endas on juba üle kirjutatud), indeks-puhvri ja seonduvad linkfailid. MFT
kirjed leiab signatuuriga FILE0 ehk (46 49 4C 45 30). Windows NT/2000 süsteemis vastavalt
signatuuriga (46 49 4C 45 2A). Indeks-puhvrid leiab signatuuriga INDX ehk (49 4E 44 58).
44
2.4 Failisüsteem NTFS
NTFS on väga huvitav failisüsteem, mille tunnuslauseks on: kõik andmed on failid ja kõik
failid on atribuutide kogum. See on disainilt keerukas ja võimaldab tugevaid turvatingimusi
ning on võimeline iseseisvaks veaparanduseks. Võrreldes FAT failisüsteemiga, mis on lihtne,
erilise turvalisuseta ning väga puuduliku veaparandusvõimalustega, ületab NTFS seda pea
kõiges. Siiski on NTFS'il üks miinus FAT'i ees. Kuna tegu on väga keerulise ja
failisüsteemiga, mille dokumentatsioon on suletud, ei ole seda võimalik usaldusväärselt
kasutada väljaspool NT-põhiste Windows operatsioonisüsteeme. Tänu entusiastide
uurimistööle on suudetud Linux operatsioonisüsteemides luua toimiv failisüsteemi lugemise
ja sellele kirjutamise funktsionaalsus, kuid täiesti usaldusväärseks seda pidada ei soovitata.
Sama moodi on NTFS suletud ka kohtuekspertidele. Veel 3 aastat tagasi toetasid
ekspertiisitarkvarad NTFS'i vähesel määral ning taastamisfunktsioonid sellelt failisüsteemilt
olid piiratud.
Nagu eespool mainitud, võib ekspert rutiinse töö vältimiseks automatiseeritud vahendeid,
kuid peab olema võimalikult teadlik, kuidas automatiseerimine ja info tõlgendamine toimib.
Käesolevas peatükis käsitletakse NTFS'i toimimise uuringut möödudes analüüsitarkvara
abistavast kihist.
2.4.1.1 Ülevaade FAT failisüsteemist
Selleks, et mõista NTFS'i toimimist tuleks eelnevalt üle vaadata, kuidas toimib FAT
failisüsteem. FAT on lihtne failisüsteem, mille funktsionaalsus on tuntud juba aastaid ning on
muutunud mõningal määral failisüsteemide alustaladeks. FAT kasutusala
operatsioonisüsteemide failisüsteemina on alla jäämas NTFS failisüsteemi levikule, kuid tänu
oma lihtsusele on sellel rakendus portatiivsetel andekandjate ning erinevate seadmete
failisüsteemina.
Failisüsteemi kirjeldamisel on oluline, et kõik failisüsteemid peavad täitma vähemalt nelja
ülesannet:
1.Faili nimi ja kellaaja/kuupäeva templid peavad kuhugi salvestatud saama
2.Faili alguspunkt peab kuhugi salvestatama
3.Faili fragmenteerumise info peab kuhugi salvestatama
4.Faili poolt kasutatavad klastrid peab kuhugi salvestatama
Näiteks FAT süsteem salvestab faili nime kataloogistruktuuri koos algusklastriga. FAT
45
failihõive süsteemi nimetataksegi tema organiseerimise meetodi järgi failihõive tabeliks, mis
paikneb partitsiooni alguses. Failihõivetabel salvestab fragmenteerumise informatsiooni ja
identifitseerib selleks kasutatud klastrid. Partitsiooni loogilise ketta kaitsmiseks hoitakse
tabelist kaht koopiat juhuks, kui üks neist peaks viga saama. Lisaks paiknevad failihõive
tabelid fikseeritud asukohas selliselt, et failid, mida vajatakse süsteemi käivitamisel, leitakse
alati üles.
Failihõivetabel sisaldab loogilise ketta iga klastri kohta järgnevat tüüpi võimalikku infot
(näide FAT16 kohta).
•Hõivamata klaster (00 00)
•Faili poolt hõivatud klaster
•Riknenud klaster (FF F7)
•Faili viimane klaster (FF F8 kuni FF FF)
FAT'i kataloogisüsteemis puudub organiseeritus ning kõigile failidele antakse loogilisel kettal
esimene vaba asukoht. Algusklastri number on aadressiks esimesele klastrile, mis on
kasutusel faili poolt ning iga faili poolt hõivatud klaster sisaldab viita faili järgmisele klastrile
failis või siis märget (FFFF), mis tähistab faili lõpuklastrit. Järgnevas näites on ära toodud
need viidad ja lõpumarker:
Joonis 3: Failid FAT failisüsteemis [8]
Joonisel on näha kolm faili. File1.txt on fail, mis hõivab kolm klastrit. Teine fail, File2.txt on
fragmenteerunud fail ning hõivab samuti kolm klastrit. Kolmas fail mahub ära ühte klastrisse.
Kõigil juhtudel viitab kataloogistruktuur faili esimesele klastrile. [8]
Järgnevalt vaatleme eespool nimetatud nelja failisüsteemi põhiomadust NTFS süsteemi puhul
koos täpsema failisüsteemi kirjeldusega.
2.4.1.2 Ülevaade NFTS failisüsteemist
NTFS on uus failisüsteem, mis arendati spetsiaalselt Windows NT jaoks ja mida kasutatakse
kõigi NT-põhiste operatsioonisüsteemide vaikimisi failisüsteemina. NTFS kasutab 64-bitist
46
kettaadresseerimist ning võimaldab teoreetiliselt tekitada kuni 264-baidiseid partitsioone.
Siiski Windows XP piirab selle 232 baidise uuruseni. [9]
Failinimed on NTFS'is piiratud 255 märgi pikkuseks ja täispikad kataloogiteed 32767 märgi
pikkusega [9]. Failinimed on unikoodis, mis võimaldab kasutada erimärgilisi tähestikke.
NTFS toetab tõusutundlikke nimesid, st Hei ja hei on kaks erinevat failinime. Kahjuks ei
toeta seda täielikult Win32 API, mistõttu on see omadus tänu Windows 95/98 toele ka
Windows XP's kadunud. NTFS'i fail ei ole lihtsalt lineaarne baidijada nagu FAT32 fail vaid
keerukas atribuutide kogum ning siinkohal erineb atribuudi mõiste täielikult FAT
failisüsteemis kasutusel olevast failiatribuudi mõistest.
2.4.1.3 Partitsioon ja alglaadesektor
NTFS failisüsteemi paigaldamisele eelneb partitsiooni loomine andmekandjale. Partitsiooni
loomine toimub universaalse fdisk-programmiga, mille tulemusena luuakse partitsioonitabel.
Tabelis määratakse vaid algussektori aadress ja sektorite arv partitsioonis nii, et selle saab
vormindada suvaliseks failisüsteemiks: FAT16, FAT32, NTFS, EXT2 jne. Partititsiooni
loomisega luuakse andmekandja esimesele sektorile alglaadesektor MBR, mis sisaldab
partititsioonitabelit ofsetil 446. Partitsioonitabelis saab olla maksimaalselt neli kirjet, igaüks
pikkusega 16 baiti.
Alglaadesektor koosneb ühest sektorist, mis on 512 baiti ning on ülesehitatud järgnevalt:
PS:0 SO:0 LE:446 baiti - alglaadimiskood
PS:0 SO:446 LE:16 baiti - esimene partitsioonikirje
PS:0 SO:462 LE:16 baiti - teine partitsioonikirje
PS:0 SO:478 LE:16 baiti - kolmas partitsioonikirje
PS:0 SO:494 LE:16 baiti - neljas partitsioonikirje
PS:0 SO:510 LE: 2 baiti - alglaadekirje signatuur (hex 55 AA)
Partitsioonikirje kirjeldus (PO: partitsioonikirje ofset):
PO:0 LE:1 bait - praegune olek: 80h alglaadiv, 00h ei alglae
PO:1 LE:1 bait - partitsiooni algus (lugemispea algus)
PO:2 LE:2 baiti - silindri/sektori algus
PO:4 LE:1 bait - partitsiooni tüübi/failisüsteemi indikaator
47
PO:5 LE:1 bait - lugemispea lõpppunkt partitsioonil
PO:6 LE:2 baiti - partitsiooni (silindri ja sektori) lõpp
PO:8 LE:4 baiti - sektorite arv MBR'i ja partitsiooni 1. sektori vahel
PO:12 LE:4 baiti - sektorite arv partitsioonil [4]
Partitsioonitabeli lugemisel madaltasemel on oluline tähele panna, et Intel protsessori, DOS ja
Windows süsteemide andmed on esitatud little-endian formaadis, kus kirjeid tuleks lugeda
tagumisest baidist ettepoole. Näiteks sektorite arv partitsioonil on esitatud little-endian
Laiendatud partitsioon on tabel, mis sisaldab lingitud nimekirja loogilistest partitsioonidest.
Kõvakettal saab korraga olla vaid üksainus laiendatud partitsioon, mida saab seejärel jaotada
loogilisteks partitsioonideks. Laiendatud alglaadimiskirjel, mida sellisel juhul kasutatakse, on
vaid kaks partitsioonikirjet. Laiendatud partitsiooni on vajalik 5 või enama loogilise ketta
tekitamiseks ühele füüsilisele kettale. Loogiliste ketaste arv on piiratud vaid Windows
süsteemis tähtede arvuga C kuni Z, mis võimaldab ühes arvutis luua kuni 24 kasutatavat
loogilist ketast.
2.4.2 NTFS vormindamine
Partitsioon vormindamine NTFS failisüsteemi toimub NT-põhise operatsioonisüsteemi
paigaldamisel. Võimalikud on järgmised valikud: Windows NT kasutab FAT16 või NTFS
failisüsteemi. Windows 2000 kasutab kas FAT32, mis on vaikimisi valitud või NTFS'i koos
FAT32. Windows XP kasutab FAT32 või NTFS'i, mis on vaikimisi valitud. NTFS
partitsiooni saab luua ka Windows NT, 2000 või XP keskkonnas ning vastavate eritarkvarade
abil.
NTFS failsüsteemi põhistruktuur luuakse vormindamise käigus. NTFS versioon 5 klastri
vaikimisi suurus on 8 sektorit. NTFS saab klastreid hõivata 32-bitises süsteemis, mis
võimaldab kokku luua 4 miljardit klastrit [3]. Selline suutlikkus võimaldaks NTFS'i
konfiguratsiooniga 1 sektor klastri kohta luua partitsiooni, mis on kuni 2 terabaidi suurune.
See on mõistlik muidugi juhul, kui oluline on ketta maht ning hallatakse enamuses faile, mis
on väiksemad kui 512 baiti. Järeleandmised tuleb teha vastavalt jõudluses, kui kasutusel on
suuremad failid ning arvestada tuleb suurema fragmenteerumisega. NTFS kasutab
automaatseks klastrisuuruse valimiseks järgmist tabelit.
48
Partitsiooni suurus Sektoreid klastris Klastri suurus
Väiksem kui 513 MB 1 512
513 – 1024 MB 2 1024
1025 – 2048 MB 4 2048
2049 – 4096 MB 8 4096
4097 – 8192 MB 16 NT3 / 8 8192 / 4096
8193 – 16384 MB 32 NT3 / 8 16384 / 4096
16385 – 32768 MB 64 NT3 / 8 32768 / 4096
Suurem kui 32768 MB 128 NT3 / 8 65536 / 4096
Joonis 4: Partitsiooni ja klastri suuruse vastavustabel [3]
Tabelist on näha, et NTFS3 klastrisuurus kasvab kahe astmetena vastavalt kõvaketta mahu
kasvule, NTFS4 tipneb suurusega 8. Kasutaja saab tabelit ignoreerida ning määrata
klastrisuuruse ka ise.
Vormindamisel luuakse partitsiooni alglaadesektor VBR ehk NTFS süsteemifail $Boot, mis
reserveerib 16 sektorit. VBR'i esimene sektor sisaldab informatsiooni vastavalt partitsioonile
ja viita laadurprogrammile NTLDR. Teisest sektorist alates järgneb kood NTLDR
käivitamiseks. Ketta taastamise eesmärgil on VBR koopia ka partitsiooni viimasel sektoril.
See on väga oluline omadus. Ketta taastamisel otsitakse partitsiooni lõpusektorit VBR
algustunnusega. VBR sektorite arv on esitatud little-endian vormingus.
Järgnevalt on toodud VBR esimese sektori kirjeldus. PS aadress sõltub MBR tabeli viidast,
reeglina paikneb partitsiooni esimene VBR ketta sektoril PS:63. Oluline on, et 64. sektorist
algab ka esimene klaster – CL:0:
PS:63 SO:0 LE:3 baiti - signatuur (.R.)
PS:63 SO:3 LE:8 baiti - OEM ID (NTFS_...)(LONGLONG)
PS:63 SO:11 LE:25 baiti - BPB
PS:63 SO:36 LE:48 baiti - Laiendatud BPB
PS:63 SO:84 LE:426 baiti - laadimiskood
PS:63 SO:510 LE:2 baiti - Sektori lõpumarker (WORD) [3]
49
BPB ja laiendatud BPB kirjeldus (SO: sektori ofset):
SO:11 LE:2 baiti –Baite sektorite kohta (00 02), kasutus küsitav (FAT)
SO:13 LE:1 bait – Sektoreid klastri kohta (FAT)
SO:14 LE:2 baiti – Reserveeritud sektor (00 00)
SO:16 LE:3 baiti – nullid (00 00 00)
SO:19 LE:2 baiti – pole NTFS'is kasutusel (00 00) (FAT)
SO:21 LE:1 bait – Meediumi kirjeldaja (F8), tähendus teadmata
SO:22 LE:2 baiti – nullid (00 00)
SO:24 LE:2 baiti – Sektorite arv raja (ingl. k track) kohta (FAT)
SO:26 LE:2 baiti -Lugemispeade arv (FAT)
SO:28 LE:4 baiti -Peidetud sektorid (DWORD)
SO:32 LE:4 baiti -pole NTFS'is kasutusel (00 00 00 00)
SO:36 LE:4 baiti -pole NTFS'is kasutusel (00 00 00 00)
SO:40 LE:8 baiti -Partitsiooni sektorite summa
SO:48 LE:8 baiti -Loogilise klastri aadress faili $MFT jaoks
SO:56 LE:8 baiti -Loogilise klastri aadress faili $MFTMirr jaoks
SO:64 LE:4 baiti -Klastreid failikirje segmendil (F6 00 00 00) - 246 klastrit
SO:68 LE:4 baiti -Klastreid indeksiploki kohta (01 00 00 00) - 1 klaster
SO:72 LE:8 baiti -Partitsiooni seerianumber
SO:80 LE:4 baiti -Kontrollsumma (00 00 00 00) [3]
2.4.3 NTFS'i süsteemifailid
Partitsiooni NTFS failisüsteemiks vormindamise käigus luuakse 16 spetsiaalset kirjet, mis
reserveeritakse NTFS süsteemifailide jaoks. Need süsteemifailid on meta-andmefailid, mis
moodustavad süsteemi alustalad. Reaalselt on kasutusel 10 süsteemifaili, mis on 10 esimese
kirjena kantud pea-failitabelisse MFT. Ülejäänud kuus kirjet on reserveeritud. Ära tuleb
märkida, et kirje number 9 saab sõltuvalt NTFS versioonist olla kas $Quota (NTFS v4) või
$Secure (NTFS v5 – Windows 2000/XP). Oluline on mõista, et need failid kuuluvad
failisüsteemi, mitte partitsioonile paigaldatud operatsioonisüsteemile.
50
Faili nimi Kirje nr Otstarve
$MFT 0
$MFTMirr 1 Esimese 4 MFT kirje koopia
$LogFile 2 Süsteemi taastefail
$Volume 3 NTFS versioon ja partitsiooni nimi
$AttDef 4 Atribuutide info
$. 5 Juurkataloog
$Bitmap 6 Bitmapfail klastrite hõivatuse haldamiseks
$Boot 7 Partitsiooni alglaadesektor
$BadClus 8 Riknenud klastrite asukohad partitsioonil
$Quota 9 Kvooditabel kasutajatele. Pole kasutusel.
$UpCase 10 Teisendab väiketähemärgid unikoodiks
$Secure 9 Windows 2000 failiõigused. Asendab $Quota kirje.
Joonis 5: NTFS süsteemifailid [9]
Kõik NTFS'i süsteemifailide nimed algavad märgiga $ ning kõigil on sama LMA kuupäeva-
aja tempel. Lisaks veel ajamärge kirje muudetud (ingl. k entry modified), mis tähistab MFT
kirjete uuendamise aega. Need ajatemplid luuakse partitsiooni NTFS vormindamisel ning
operatsioonisüsteemi paigaldamine neid aegu ei mõjuta. Ekspert saab siit kaks eraldi viidet,
millal partitsioon vormindati ning millal paigaldati süsteem. Neid aegu saab omavahel
võrrelda ning süsteemi loomisest järeldusi teha, sest reeglina käib Windows'i paigaldamisega
kaasas ka ketta vormindamine. Kuna need süsteemifailid kuuluvad NTFS süsteemile ja
tegemist ei ole tavaliste operatsioonisüsteemi poolt peidetud failidega, siis saab neid näha
vaid eritarkvara abil või lugeda nende andmeala madaltasemel, mida käsitletakse peatükis
hiljem.
2.4.4 Failisüsteemi struktuur
NTFS'i failisüsteem käsitleb failide hõivamist viisil, mis on täiesti erinev FAT süsteemist.
Peamine erinevus on, et kõik NTFS partitsioonil on fail. Peafailitabeli fail $MFT on kõige
tähtsam fail NTFS failisüsteemis. See jälgib kõiki faile partitsioonil, kaasaarvatud iseennast.
MFT fail ise kannab kirjet number 0 ja on esimene fail süsteemis. Reeglina on üks MFT kirje
2 sektori suurune ehk siis 1024 baidi pikkune. MFT'd analüüsitakse lähemalt edaspidi.
Järgmine fail identifikaatoriga 1 on $MFTMirr, mis on MFT esimese nelja kirje koopia ning
51
kannab endas taastamise eesmärki.
Sellele järgnev $LogFile, sisaldab endas nimekirja salvestatud toiminguid, millega tagatakse
failisüsteemi taastamisvõime süsteemivea korral. Ülesmärkimine tehakse süsteemi olekutena
siis, kui salvestatakse toimingud. Fail sisaldab ka MFT kirjete fragmente, indeks puhvrit ja
linkfaile. Faili toimimist käsitleti töö varasemas osas.
Fail $Volume sisaldab partitsiooni identifitseerivat informatsiooni nagu NTFS'i versioon ja
partitsiooni nimi. Failil puudub reaalne andmeala ning see on MFT resident, mis tähendab, et
kõik faili atribuudid paiknevad MFT 4. kirjes, kirjes number 3. Fail ise on tühi, sest selle
MFT kirje koosneb vaid atribuutidest ning ei sisalda andmeala. Fail $Volume paikneb
füüsilisel sektoril 101, mis on MFT failile kuuluv ala. Faili nimi MFT kirjes on näha
unikoodis SO 210 pikkusega 14 baiti.
MFT koosneb atribuutidest, mis igaüks omab unikaalset päist. Hilisemas osas käsitletakse
täpsemalt MFT atribuute ja residentset ning mitteresidentset andmeala. Siiski on $Volime
failil atribuut, mida ei leidu teistes MFT kirjetes, nimelt loogilise ketta nimi (ingl. k volume
name). Selle atribuudi päis on kuueteistkümnend süsteemis 60 00 00 00. Päis on leitav MFT
kirjes SO 392. Atribuudi dekodeerimisel on näha, et see on pikkusega 24 baiti ning sellele
lisandub nime osa 18 baiti.
NTFS partitsiooni nimi loetakse EnCase poolt ning esitatakse raportis, millele lisatakse
draiveri info ja kontrollseis (näiteks NTFS 3.0 Chkdsk 0). Chkdsk 0 tähendab, et vigu pole
ning see operatsioonisüsteem sulgeti ettenähtud viisil. Voolukatkestuse tekitamisel oleks
väärtus 1. See võimaldab kontrollida, kas sündmuskohal võeti ära töötav arvuti või kuidas
suleti enne mittetöötava arvuti äravõtmist see konkreetne arvuti.
Fail $ATTRDef ehk atribuutide defineerimise nimekiri sisaldab nimekirja kõikides
atribuutidest, mida partitsioonil kasutatakse. Iga MFT kirje koosneb atribuutidest nagu päis,
faili nimi, andmejooksud (ingl. k – data runs) ehk faili fragmenteerumisinfo jne. NTFS
failisüsteemis tähistab atribuudi mõiste keerukat faili osiseid erinevalt FAT süsteemi
atribuutidest read-only, system, hidden jne. Fail $ATTDef iga kirje pikkus on 160 baiti.
Juurkataloog ehk MFT kirje number 5 osutab kataloogipuu tipule. See on on kõigi
kataloogide vanem ning juurkataloogil puudub nimi. Vastavalt on selle kirje sisu nähtav MFT
tabeli 6. kirjes.
$Bitmap fail peab arvet partitsiooni klastrite üle. Iga klastri jaoks on eraldatud üks bit - 1
tähistab kasutamist ja 0 vaba klastrit. Vastavalt peetakse ühe baidiga arvet 8 klastri hõivatuse
üle. Näiteks 16-nd süsteemi väärtus 03 ehk binaarkujul 0000 0011 tähendab, et esimesed kuus
52
klastrit on hõivamata ja viimased kaks klastrit on failide poolt hõivatud ehk MFT poolt
eraldatud failile või kahele failile.
$Boot fail koosneb 16 sektorist, mida kasutatakse partitsiooni alglaadekirje VBR poolt.
Laadekood NTLDR (ingl. k NT Loader) paikneb $Boot faili teisel sektoril.
$BadClus fail haldab riknenud klastreid (ingl. k bad clusters). See on sarnane FAT
failisüsteemis klastrite riknenuks (B – bad) märkimisega. Faili andmed on residentsed ja
algavad sektorilt 111.
Fail $Quota pole veel kasutusele võetud. Seda faili kavatseti kasutada, et arvet pidada
kasutajate poolt kasutatava ruumi üle. Selle faili asukoht MFT's asendati Windows 2000 ja
XP süsteemides failiga $Secure.
Fail $Secure on kasutuses NTFS versioonis 5 ning see jälgib turvakirjelduse atribuuti. Failil
on kolm andmevoogu, mida kirjeldatakse selle peatüki hilisemas osas.
$Upcase fail teisendab suur- ja väiketähed vastavateks unikoodi suurtähtedeks. Unikood on
rahvusvaheline märgisüsteem, mis baseerub 16-bitisel kodeerimisel ja millega on võimalik
esitada praktiliselt kõikide keelte kirjamärke.
2.4.5 Peafailitabel MFT
NTFS süsteemis puudub lihtsasti kirjeldatav viis, mis jälgiks andmekandjal failile kuuluva ala
hõivamist ja faili fragmenteerumist. MFT on struktureeritud selliselt, et see saab viidata
failidele või kataloogidele või siis see saab sisaldada faile või katalooge. Faili asukoht,
kaasaarvatud selle fragmenteerumine sõltub MFT'st. MFT on jagatud 1024 baidisteks
kirjeteks. Iga fail NTFS partitsioonil omab eraldi kirjet MFT's. Tegelikult võib ka üks MFT
kirje olla terve fail. Sellest sõltuvalt jagatakse MFT andmeid residentseteks ja
mitteresidentseteks andmeteks.
2.4.5.1 Residentsed andmed
Igal MFT kirjel on struktuur ja sõltuvalt selle sisust ka ala, millele salvestada andmed. See
andmeala saab olla ainult andmete säilitamiseks, kui on täidetud kindlad tingimused:
1.Andmed peavad kuuluma vastavale MFT kirjele
2.Andmed peavad mahtuma olemas olevasse alasse. Fail ei saa alata näiteks andmealalt,
seejärel fragmenteeruda suvalisele kohale kõvakettal.
FAT failisüsteemi põhireegel on, et kõik failid algavad klastri algusest ja vastav fail,
hoolimata enda suurusest, hõivab terve klastri. See tekitas kolm ala:
53
1.Loogilise andmeala
2.Sektori slack-ala
3.Faili slack-ala
Residentsed andmed on küllaltki erinevad. Need ei alga klastri algusest. Tegelikult ei alga
need isegi sektori algusest. Need andmed algavad suvalisest kohast, kus vastav MFT kirje neil
seda käsib. Residentsetel andmetel puudub ka sektori ja faili slack. Kui residentseid andmeid
vaadelda EnCase tarkvaraga, näidatakse ainult loogilist andmeala ning puudub slack-ruum.
Tüüpilisteks residentseteks andmeteks on lühikesed failid nagu internetiküpsised (ingl. k
cookies), mis on piisavald väikesed, et mahuvad ära MFT kirjesse.
2.4.5.2 Mitteresidentsed andmed
Mitteresidentsed andmed toovad meid tagasi tuntud viisi juurde andmete salvestamiseks.
Mitteresidentsed andmed:
1.Algavad klastri algusega
2.Üks klaster saab olla korraga hõivatud vaid ühe faili poolt
3.On olemas sektori ja faili slack
Meetod andmete jälgimiseks on FAT süsteemist küll tunduvalt erinev, kuid seda käsitletakse
hiljem.
Andmed ei saa olla korraga residentsed ja mitteresidentsed. Kui andmed on liialt suured, et
mahtuda MFT kirjesse, siis salvestatakse need klastrisse ning andmete asemel salvestatakse
MFT kirjesse viidad. Kui fail on algselt residentne, kuid kasvab seejärel mitteresidentseks,
siis tõstetakse kõik andmed klastrisse ja MFT kirje uuendatakse vastavalt.
2.4.5.3 Kirje määramine
MFT kirjed on määratud igale failile kõvakettal ja kirjeid nummerdatakse tabelis ülalt alla.
MFT kirjed NTFS failisüsteemis, mis loodud Windows XP ja Windows 2003 Server all,
sisaldavad viidet nende oma kirjenumbrile, kusjuures need, mis loodud NT/2000 all, ei
sisalda seda viidet. Kirjed on leitavad nende positsiooni järgi tabelis. Kui kõik kirjed MFT's
on hõivatud, mitte kustutatud, siis MFT tabel kasvab, kui faile luuakse juurde. Sellel põhjusel
võib leida fragmenteerunud MFT.
Kui uus kirje määratakse, siis MFT paigutab selle esimesele vabale positsioonile. Uut kirjet ei
lisata tabelile juurde, kui eksisteerib kustutatud kirje tabelis. Kustutatud kirje kirjutatakse üle.
See protsess tekitab NTFS süsteemides erilise olukorra. Kustutatud failid, mis on ikka veel
54
saadaval taastamiseks, on tavaliselt väga hiljutised failid (sõltuvalt süsteemis kasutusest paari
päeva tagused). Samuti, kui erinevad failid luuakse, mis põhjustab MFT tabeli
märkimisväärse kasvu ja seejärel need failid kustutatakse, võivad need alles jääda näiteks
aastateks, kuni MFT jõuab samasse suurusesse tagasi. Peamiselt on sellisel juhul residentsete
kirjetega.
2.4.5.4 Kirje struktuur
MFT kirje sisemine struktuur jaguneb kaheks alaks, päiseks ja failiatribuutide alaks.
Päis võtab ära esimesed 48 baiti Windows NT ja 2000 süsteemides. Windows XP ja 2003
Serveri puhul on päise pikkus 56 baiti. Seda kasutatakse just MFT kirje kontrollimiseks, mitte
faili jaoks. Informatsioon, mis paikneb kirje päises sisaldab:
1.Ofset 10h[2] ehk 16 pikkusega 2: Näitab, mitu korda MFT kirjet on kasutatud. Pärast
esimest kirjutamist seatakse number 01h. Pärast, kui kirje on kustutatud või üle kirjutatud
uue kirjega, number muutub vastavalt 02h, siis 03h jne
2.Ofset 16h[2] ehk 22 pikkusega 2: Kasutatakse MFT kirje lippude jaoks. Näiteks
märkimiseks, kas MFT kirjes on fail või kataloog. See on asukoht, mis määratleb, kas
kirje on kustutatud jne. Näiteks:
Hex 00 – binaarkujul 0000 0000 – fail, kustutatud
Hex 01 – binaarkujul 0000 0001 – fail, hõivatud
Hex 02 – binaarkujul 0000 0010 – kataloog, kustutatud
Hex 03 – binaarkujul 0000 0011 – kataloog, hõivatud
3.Ofset 18h[2] ehk 24 pikkusega 2: MFT kirje hõivatud suurus. Seda kasutatakse, et
kontrollida MFT kirjet või slack'i. Eelmine sisestus võiv sisaldada residentseid andmeid,
mis kirjutati üle väiksema kirje poolt. Tulemuseks on slack MFT kirje sees.
4.Ofset 1Ch[2] ehk 28 pikkusega 2: MFT kirje täielik suurus.
5.Ofset 2Ah[6+] ehk 42 pikkusega alates 6 baidist: Tegu on kontrollsüsteemiga, mis
toimib MFT kontrollsummana ja hoolitseb MFT kirje terviklikkuse eest. Selle märgivälja
olemasolu põhjustab andmete ümbertõstmise kirje sees, mis madaltasemel vaadatuna võib
esialgu segadust tekitada. Windows XP puhul kontrollkood asub ofsetil 30h[48+]. [3]
Kontrollkoodid paiknevad iga MFT kirje poolt kasutuses oleva sektori lõpus (ning sektori
lõpus olevad viimased kaks baiti on tõstetud sektor ofsetile 44). Faili mällu laadimisel
vahetatakse baidid selliselt, et need oleks lugejale õiges asukohas.
55
2.4.6 Failid NTFS'is
Tavaliselt kujutletakse faili kui andmekogumit, mis on kindla loogilise suurusega. Kuid
NTFS failisüsteemis koosneb fail enamast, kui lihtsalt loogilisest andmehulgast. Erinevus
seisneb pigem tehnilisel tasandil ning ei paista kasutaja poolelt välja. Harilik arvutikasutaja
loob, kasutab ja muudab faile samal viisil nagu teistegi failisüsteemidega. Taustal toimuv
muutub oluliseks, kui tekib vajadus tõestada konkreetsete andmete olemasolu või taastada
osaliselt hävinud andmeid MFT failitabelis.
Iga MFT kirje algab päisega, mis peab järge informatsiooni kohta, mis on salvestatud MFT
kirjesse. Järelejäänud hõivatud ala MFT kirjes sisaldab failiatribuute. Kõik failid NTFS'is
koosnevad atribuutidest ning ei ole olemas ühtegi osa failist, mis poleks atribuut. Atribuudid
NTFS'is ei ole tüüpilised read-only, hidden, archived atribuudid. Tegu on väikeste
andmealadega, mis kirjeldavad faili koostisosasid. Näiteks on eraldi atribuut olemas faili
nime hoidmiseks. Tuleb mõista, et atribuudid on osa failist. Seda aitab mõista residentsete
failide olemus.
Kui fail on residentne, on kõik tema atribuudid residentsed. Järelikult sisaldub kogu faili info
MFT kirjes. Residentse faili loomisel luuakse ka kõik selle atribuudid. Faili kustutamisel
kustutatakse kõik selle faili atribuudid.
Eelnevalt käsitlesime residentseid ja mitteresidentseid andmed seoses MFT tabeliga.
Siinkohal vaatame neid faili vaatenurgast. Faili andmed moodustavad faili atribuudi, kuid
mõned, liiga mahukad atribuudid võidakse salvestada mitteresidentsetena. Samas on mõned
atribuudid on alati residentsed ja alati samas järjestuses.
56
Joonis 6: Mitteresidentne MFT kirje
2.4.6.1 Atribuudi päis
Iga MFT atribuut algab sama informatsiooniga ehk atribuudi päisega. Nagu eespool mainitud,
algab iga atribuut atribuudi tüübi identifikaatoriga. Järgnevalt on toodud 16-nd süsteemis
MFT atribuutide identifikaatorid ja neile vastavad nimetused:
10 00 00 00 - standard-informatsioon
20 00 00 00 - atribuudi nimekiri
30 00 00 00 – faili nimi
40 00 00 00 – partitsiooni versioon
50 00 00 00 – turvakirjeldus
60 00 00 00 – partitsiooni nimi
70 00 00 00 – partitsiooni informatsioon
80 00 00 00 – andmed
90 00 00 00 – indeks ruut
A0 00 00 00 – indeks hõive
B0 00 00 00 – bitmap
C0 00 00 00 – sümlink
D0 00 00 00 – HPFS laiendatud atribuudi informatsioon
57
Joonis 7: Residentne MFT kirje
E0 00 00 00 – HPFS laiendatud atribuudid [3]
Identifikaatorile järgneb atribuudi pikkus. Järgmine bait viitab lipule, mis identifitseerib, kas
atribuudi sisu on residentne või mitteresidentne. Väärtus 00 näitab, et sisu on residentne ja
vastavalt väärtus 01 näitab, et tegu on mitteresidentsete andmetega. Sellest järgmine bait
määrab atribuudi nime pikkuse. Kui see on andmeatribuut ja selle bait on 00, siis on see
samas ka primaarne andmeatribuut. Kui selle bait oli midagi muud, siis on tegu alternatiivse
andmevooga. Need kuuluvad nimega atribuutide hulka. [3]
Järgnevad tabelid aitavad interpreteerida üksikuid MFT kirje atribuute. Tabeli lugemine:
näiteks andmeatribuudi algusest 40 baiti, siis 8 järgmist näitavad, little-endian vormingus
atribuudi füüsilist suurust.
Atribuudi päise info, nii residentsete kui ka mitteresidentsete atribuutide kohta
Ofset Pikkus Kirjeldus
0 4 Atribuudi identifikaator (10 00 00 00, 20 00 00 00, 30 00 00 00 jne
4 4 Atribuudi pikkus
8 1 Atribuudi residentsuse lipp: 00 – residentne; 01 - mitteresidentne
9 1 Atribuudi nime pikkus
10 2 Ofset atribuudi nimele, kui see eksisteerib. Kui ei, eksisteeri ning andmed
on residentsed, võib viidata iseendale
12 2 Lipud: 01 00 – pakitud; 00 40 – krüpteeritud; 00 80 - hõre
14 2 Atribuudi ID
Lisa päiste info, mis on kasutusel residentsete atribuutide puhul
16 4 Atribuudi andmete pikkus
20 2 Ofset atribuudi andmete alguseni
22 1 Indekseeritud lipp
23 1 Täiendus
24 muutuv Atribuudi nimi, kui tegu on nimega atribuudiga
24 muutuv Atribuudi andmete algus, kui tegu on nimeta atribuudiga
Lisa päiste info, mis on kasutusel mitteresidentsete atribuutide puhul
16 8 Virtuaalse klastri algusnumber (VCN – Virtual Claster Number)
24 8 VCN'i lõpp
58
32 2 Ofset andmejooksudeni
34 2 Pakkimisüksuse suurus
36 4 Täiendus
40 8 Atribuudi füüsiline suurus
48 8 Atribuudi loogiline suurus
56 8 Atribuudi initsialiseeritud suurus
64 muutuv Atribuudi nimi, kui tegu on nimega atribuudiga
64 muutuv Atribuudi andmete algus, kui tegu on nimeta atribuudiga
Joonis 8: Atribuudi päise info residentsete ja mitteresidentsete atribuutide korral [3]
2.4.6.2 Standard-informatsiooni atribuut
Esimene atribuut kõigi failide jaoks on standardne informatsiooni atribuut, mis on alati
residentne. See atribuut järgib alati MFT päist. Sisaldab loomise, vaatamise, kirjutamise ja
muutmise kuupäevi ja aegu ning MS-DOS faili õigused salvestatakse alati pärast kuupäevi ja
kellaaegu. NTFS v5 puhul sisaldab see atribuut viidet turvafailile, mis sisaldab faili
turvakirjeldust. Standard-informatsiooni atribuut algab alati nelja-baidise signatuuriga (10 00
00 00), nii nagu eespool toodud. [3]
2.4.6.3 Failinime atribuut
Failinime atribuut järgneb alati standard informatsiooni atribuudile. See sisaldab ka faili
vanemat, mida kasutatakse selle faili asukoha määramiseks kogu failisüsteemis. Nagu
standard informatsiooni atribuut, sisaldab ka faili nime atribuut nelja kuupäeva ja kellaaega.
Selles hoitakse faili loogilist suurust, mis on faili andmeala loogiline suurus ilma faili
atribuutideta. Faili õiguste lippe hallatakse siin sarnaselt DOS'le. Õiguste lipud on: read-only,
hidden, system, compressed, directory. Isegi kui need näivad väga sarnased DOS'i
failiatribuutidele, kasutatakse neid vaid NTFS'i poolt. Neid lippe ei tohi segamini ajada faili
õigustega turvakirjelduste atribuudis. [3]
Ülejäänud osa atribuudist moodustab faili nimi koos nime tüübi ja faili nime suurusega. Nime
hoitakse reeglina unikoodis. Faili nime atribuut algab alati 16-nd süsteemis identifikaatoriga
(30 00 00 00) ja sellele järgneb atribuudi suurus. Tihti leidub ühes MFT kirjes mitu failinime
atribuuti, kus esimene atribuut on pikk failinimi ja teine nimi DOS versioonis.
Faili nime atribuut sisaldab:
59
Juurkataloogi MFT kirje numbrit, mis sisaldab seda nime
Faili muutmise aegu
Hõivatava ala suurust
Atribuudi suurust
Lippe: read-only, hidden, system, archive, compressed, directory
Failinime pikkust sõnades
Failinime tüüpi: 0 – Posix; 1 – unikood; 2 – DOS (8.3); 3 – unikood ja DOS
Faili nime pikkust unikoodis [3]
Seejärel tuleb juba andmeatribuut, mis sisaldab kas andmeid, kui tegu on residentse failiga
või viita andmetele.
2.4.6.4 Turvakirjelduse atribuut
Turvakirjelduste atribuut on kasutusel NTFS versioonides enne v5. Tavaliste failide puhul
paikneb see kohe pärast failinime atribuuti. Turvakirjelduste identifikaator 16-nd süsteemis
on (50 00 00 00), millele järgneb atribuudi suurus. Kui on tegu NTFS versiooniga 5, siis
hallatakse turvakirjelduse atribuuti $Secure süsteemifailis. Sellisel juhul salvestatakse
atribuudi number standard informatsiooni atribuudis. Edasiselt vaatlemegi $Secure faili.
$Secure süsteemifail jaguneb kolmeks alamosaks: Secure.SDH, Secure.SDS ja Secure.SII
Tegu on andmevoogudega, millest kaks on indeksivood ning üks andmevoog. Indeksivooge
kasutatakse andmevoo infole ligipääsemiseks. Secure.SDH indeksivoogu kasutatakse
turvaatribuute uute turvaatribuutide võrdlemiseks vanematega. Kui failile või kataloogi
turvataset muudetakse, arvutatakse uue turvaatribuudi räsi ning kontrollitakse olemasolevate
turvaatribuutide räsidega. Räside kattumisel puudub vajadus nende topelt salvestamiseks ning
selle asemel tagastatakse MFT kirjele atribuudi ID-number, mis annab faili või kataloogi
kasutamiseks ligipääsuõiguse. Uue atribuudi puhul määratakse uus ID-number ning
turvaatribuut salvestatakse SDS-andmevoos. Atribuudi räsi salvestatakse SDH indeks voos
koos ID-numbriga, mis omakorda edastatakse MFT kirjele ning salvestatakse standard
informatsiooni atribuudis. Secure.SDS andmevoog sisaldab tegelikke turvainfo atribuute.
Seda kasutataksegi vaid atribuutide salvestamiseks. Indeksivood vastutavad uute atribuutide
sisestamise ja olemasolevatele ligipääsemise eest, samal ajal kui SDS andmevoog lihtsalt
hoiab informatsiooni. Secure.SII indeksivoogu kasutatakse, et saada kätte turvalisuse
kirjelduse atribuuti faili või kataloogi jaoks, mille poole pöördutakse. Selles voos
salvestatakse ainult ID-numbrid ja ofsetid. Ofsetid on baitide arvud SDS'is, kus
60
turvakirjeldused asuvad. Standard informatsiooni atribuut saadab ID-numbri sellele
indeksivoole. Ofset asub SDS failis ja turvalisuse kirjeldus loetakse. Selline keeruline meetod
võtab vähem ruumi võrreldes sellega kui salvestada sama turvakirjeldust igas MFT kirjes. [3]
2.4.6.5 Andmeatribuudid ja andmejooksud
Andmeatribuut on viimane atribuut tüüpilises MFT kirjes. Andmeatribuut järgneb alati
failinime atribuudile või turvakirjelduse atribuudile, sõltuvalt kas, tegu on NTFS v5 või
varasemaga. Andmeatribuudi signatuur on alati (80 00 00 00) ning sellele järgneb atribuudi
suurus.
Atribuut sisaldab faili andmeala informatsiooni ehk siis tegelikke faili admeid, mida kasutaja
faili avades näeb. Nagu eespool mainitud, saavad need andmed olla residentsed või
mitteresidentsed. Kui andmed on residentsed, paikneb andmeatribuut atribuudi sees ja
vastupidisel juhul sisaldab andmeatribuudi päis viidet andmete alguspunktile.
Mitteresidentne fail andmeatribuudis salvestatakse atribuudist väljapoole partitsiooni
vabadele klastritele. See atribuut sisaldab siis viitasid faili andmete poolt hõivatud klastritele.
Neid viitasid nimetatakse andmejooksudeks (ingl. k data runs). Andmejooks on kompaktne
väärtuste kombinatsioon, mis näitab ära andmete asukoha kettal. Andmejookse seotakse
failidega, millel on liiga palju andmeid, et mahtuda enda MFT kirjesse. Kuid reaalselt on need
kasutusel kõigi atribuutide puhul, mis on liiga mahukad, et mahtuda enda MFT kirjesse. [3]
Esimene andmejooks salvestab alati andmete alguspunkti ja klastrite arvu, mida selles lõigus
kasutatakse. Näiteks, kui fail algab klastrist number 13500 ja kasutab 300 järjestikkust
klastrit. Järgnevad andmejooksud sisaldab vahemaad eelmistest andmejooksust ja samuti
klastrite arvu, mida iga segment hõivab. Vahemaa eelmise klastriga saab olla kas positiivne
või negatiivne arv. Näiteks, kui andmejooks algab klastrist 13500 ja kasutab järgnevat 300
klastrit. Seejärel hüppab edasi 5000 klastri võrra ja kasutab 15 klastrit. Siis see teeb
järgmiseks alguspunktiks 13500+500=18500. [3]
Andmejooksud on kõik lingitud kokku üheks jadaks, mis algab andmeatribuudi päise järel
reeglina baidiga 31. Järgnev näide demonstreerib 16-nd süsteemis esitatud andmejooksu, mis
koosneb kolmest osast: 31 0A D0 01 01 21 08 88 13 22 01 01 58 02. [3]
Iga andmejooks järgneb kohe eelmisele. Viis, kuidas leida erinevaid andmejookse on liita
kokku kaks numbrit esimesest baidist. Kuna esimene bait on 31, siis 3+1=4. Järelikult
järgmised neli baiti on kasutusel andmejooksu kirjeldamisel. Seejärel liida järgmise baidi
mõlemad numbrid, mis teeb 2+1=3, mis tähendab, et järgmised kolm baiti on kasutuses selle
andmejooksu kirjeldamiseks. See jada jätkub, kuni andmejooksude lõpuni. Näites saame selle
61
tulemusena järgmised andmejooksud:
31 0A D0 01 01
21 08 88 13
22 01 01 58 02. [3]
Iga andmejooks on omakorda jagatav väiksemateks osadeks esimese baidi piltlikul
poolitamisel. Näiteks, esimene bait selles andmejooksus on 31 ning poolitamisel saame 3 ja 1.
Parempoolne number näitab meile baitide arvu, mille peab teisendama little-endian kujule, et
välja võtta järgnevate kasutuses olevate klastrite arv selles andmesegmendis. Sellisel juhul
viitab 1 järgmisele baidile 0A, mis tähendab, et esimese andmejooksu kasutuses on 10
andmeklastrit. Vasakpoolne number näitab meile baitide arvu, mille peab teisendama little-
endian kujule, et saada algusklaster. Esimene andmejooks viitab algusklastrile ja kõik
järgnevad andmejooksud arvestavad vahemikuga eelmisest andmejooksust. Sellisel juhul on
järgmised kolm baiti D0 01 01 little-endian kujul 66000. [3]
See protsess näitab, kuidas toimub NTFS failisüsteemis fragmenteerumise haldamine.
Algusklaster tehakse kindlaks esimese andmejooksuga ja seejärel loetakse ülejäänud
andejooksud, kuni andmejooksu lõpumärgini 00. Kui fail ei ole fragmenteerunud, siis on
atribuudis vaid üks andmejooks.
2.4.6.6 Alternatiivsed andmevood
Ühel failil saab olla rohkem kui üks andmeatribuut. See võib olla segadust tekitav, sest
tavaliselt sisaldab fail vaid iseenda andmeid. Selliseid lisa andmeatribuute nimetatakse
alternatiiv-andmevoogudeks ning igal failil võib neid olla määramata kogus.
Tavaliselt kasutatakse neid faili lisainfo hoidmiseks. Näiteks pildi või dokumendifaili
eelvaade või ikooni jaoks. Sellised andmevood kuuluvad samuti selle sama faili juurde ning
tuvastada saab neid MFT kirjest. Fail ise nimetatakse failinime atribuudi järgi ning faili
andmeatribuudid paikneva samas MFT kirjes, sellest tulenevalt on neil sama faili nimi.
62
Joonis 9: Andmejooksu lugemine
Alternatiivsed andmevood saab tuvastada nime järgi. Igal atribuudil on bait, mis näitab ära
selle atribuudi nime pikkuse. See saab olla ka tühi. Primaarne andmeatribuut faili jaoks ei
oma nime. Kõik alternatiivsed andmeatribuudid sellele failile omavad aga nime ning see on
tuvastatav nime pikkuse alas.
63
3 . MeetodidKäesolevas peatükis rakendame eelmises peatükis kirjeldatud partitsioonide ja failisüsteemide
omadusi andmete taastamisel andmekandjalt, mille partitsioon või failisüsteem on hävinud.
Kuna operatsioonisüsteem näitab kasutajale vaid ketta faile ja kaustu, tuleb andmekandja
partitsiooni ja failisüsteemi andmete analüüsimiseks kasutada tarkvara, mis suudaks
andmekandjaid vaadelda madaltasemel ehk siis sektoriandmete tasemel. Vaid vaatlemiseks
sobib lisaks kommertstarkvaradele nagu EnCase Forensic ja HexWorkshop ka vabavaraline
DiskView. Käsitsi taastamiseks on vajalik näiteks HexWorkshop või mõni muu vahend,
millega saab otse andmekandjale kirjutada.
3.1 Kettapartitsioonide taastamine
Kettapartitsioonide taastamise meetod kasutab käesoleva töö peatüki „Partitsioon NTFS“
alateemades „Partitsioon ja alglaadesektor“ ning „NTFS vormindamine“ toodud andmeid
andmekandjate partitsioonide taastamise kirjeldamiseks.
3.1.1 Alglaadesektoril on partitsioonikirjed alles
Kui andmekandja ei lae operatsioonisüsteemi või mõni partitsioon on kadunud, tuleks
kadunud andmete otsinguid alustada andmekandja alglaadesektorist ehk MBR'ist. Esimene
asi on veenduda, kas partitsioonikirjed korrektsed ning viitavad partitsioonile. Selleks on
vajalik leida: partitsiooni staatus, tüüp, suhteline asukoht ning partitsiooni suurus:
1. Leia alglaadesektor MBR, mis on andmekandja esimene sektor ehk sektor 0.
2. Veendu, et andmekandja esimene bait oleks 16-nd süsteemis 33h.
3. Leia esimese partitsioonikirje algus baidil 446 ehk sektori 447. baidilt ja vali koos
sellega 16 baiti, mis on partitsioonikirje pikkus.
4. Kontrolli partitsiooni staatus, et selgitada, kas partitsioon seadistatud alglaadivaks.
Partitsioonikirje esimese baidi väärtus näitab olekut: 80h – alglaadiv, 00h – ei alglae.
64
5. Kontrolli partitsiooni tüüp, et selgitada, milline failisüsteem on partitsioonil.
Partitsioonikirje 5. baidi väärtus näitab tüübikoodi. Näiteks 07 – NTFS, 06 – FAT, 05
– laiendatud partitsioon, 00 – tühi partitsioonikirje.
6. Leia partitsiooni suhteline asukoht. Partitsioonikirje baidid 9-12 näitavad sektorite
arvu MBR'i ja partitsiooni esimese sektori vahel. Käivita HexWorkshop Base
Converter. Seadista baitide järjestuseks Intel ning andmetüübiks long ning sisesta
väärtus 16-nd arvuna. Näiteks väärtus 3F 00 00 00 esitub kümnendarvuna 63, mis
tähendab, et partitsiooni alglaadesektor paikneb 64. sektoril.
7. Leia partitsiooni suurus. Partitsioonikirje baidid 13 – 16 näitavad partitsiooni suuruse
baitides. Väärtuse 10-nd süsteemi teisendamiseks kasuta eelmises punktis kirjeldatud
viisi.
8. Kontrolli samal viisil üle MBR'i ülejäänud 4 partitsioonikirjet vastavalt baitidel 462,
478, 494.
9. Laiendatud alglaadekirje leidmisel näitab partitsiooni suhteline asukoht järgmise kirje
asukohasektori, mille analüüsimisel piisab esimese kahe kirje uurimisest. Seda seni,
kuni viimane laiendatud kirje viitab konkreetsele partitsioonile. Partitsiooni
alglaadesektori tunneme reeglina ära sõnade NTFS või MSWIN4.1 järgi.
Kontrolli tulemusena saame teada:
1. Mitu peamist partitsiooni on andmekandjal.
2. Kas andmekandjal on laiendatud partitsioon ja laiendatud alglaadekirjed.
3. Millised võimalikud failisüsteemid leiduvad andmekandjal.
4. Millistel sektoritel partitsioonid paiknevad.
5. Kui suured on andmekandjal paiknevad partitsioonid.
3.1.2 Alglaadesektori partitsioonikirjed on vigased
Eelmises punktis toodud meetodi järgi saame tuvastada, kas andmekandja alglaadesektoril on
partitsioonitabel korrektne. Kui analüüsitud väärtused ei anna mõistlikku tulemust või on
nullid, saab lisaks kontrollida alglaadesektori lõpus olevat alglaadekirje signatuuri, mis peab
olema 16-nd süsteemis 55 AA.
Sellisel juhul puudub meil küll korrektne partitsioonikirje, mis viitaks otsitava partitsiooni
koordinaatidele, kuid teades või aimates, milline on partitsiooni tüüp, on võimalik see üles
leida.
65
1. Kuna reeglina paikneb andmekandja esimene partitsioonikirje 64. sektoril, leiab sellelt
tihti esimese partitsiooni alglaadekirje VBR.
2. Partitsiooni alglaadesektori tunneme reeglina ära sõnade NTFS või MSWIN4.1 järgi.
3. Kui 64. sektorilt VBR'i ei leitud või on alust arvata, et andmekandjal paikneb rohkem
partitsioone, tuleks andmekandjalt otsida alglaadesekirje tunnuseid nagu .R.NTFS
(EB 52 90 4E 54 46 53), MSWIN4.1 (EB 58 90 4D 53 57 49 4E 34 2E 31) ning
alglaadekirje lõpusignatuuri 55 AA.
4. Kasutades partitsioonide omadust kopeerida VBR partitsiooni viimasele sektorile,
võib VBR'i leida näiteks andmekandja viimaselt sektorilt.
Vigaste partitsioonikirjete korral saab partitsioone taastada vaid virtuaalselt eritarkvaraga,
mitte käsitsi, sest meil puudub info kuue baidi kohta, mis kirjeldavad ketta lugemispea,
silindri ja sektori algus- ning lõpp-punkte. Ketta esimese partitsiooni alguspunktid on reeglina
teada (01 01 00), kuid lõpp-punktid sõltuvad partitsiooni suurusest ja ketta parameetritest
ning nende tagasiarvutamine ei ole teada.
3.1.3 Partitsiooni alglaadekirje analüüs partitsiooni taastamiseksUurides VBR'i koopiaid saab juba teada oleva partitsiooni järgi kontrollida teiste
partitsioonide olemasolu ning riknenud partitsioonikirje taastada leitud VBR koopia järgi,
seda juhul, kui on teada partitsiooni algussektor, millele VBR'i koopia taastada.
Alglaadesektori järgi partitsiooni asukohta tuvastamiseks ja taastamiseks on vajalik leida:
failisüsteemi tunnus ID ja partitsiooni suurus sektorites:
1. Leitud VBR'i baidid 4 – 11 sisaldavad partitsiooni failisüsteemi tunnust. Näiteks
NTFS või MSWIN4.1.
2. VBR'i baidid 41 – 49 sisaldavad partitsiooni suuruse sektorites. Suuruse 10-nd
süsteemi teisendamiseks tuleb kasutada eespool nimetatud Base Converter tarkvara.
VBR'i koopiast loetud partitsiooni suuruse järgi saab leida partitsiooni alguse arvestusega, et
partitsiooni esimene ja viimane sektor on identsed VBR'id ning originaalse VBR'i sektori
aadress on leitav lihtsa valemiga (VBR_koopia_aadress – partitsiooni_suurus + 1)
Partitsiooni failisüsteemi tunnuse abil saab veenduda, et leitud VBR'i koopia kirjeldab
otsitavat partitsiooni. Kui tunnus on NTFS ning leitud riknenud VBR'ist järgmine sektor
sisaldab loetavat tunnust NTLDR, võib eeldada, et VBR'i koopia kuulub leitud riknenud
kirjele ja selle taastamisel taastub partitsiooni töö, kui MBR on korrektne.
66
3.1.4 Partitsiooni alglaadekirje analüüs NTFS failitabeli leidmiseksNagu peatükis „Peafailitabel MFT“ kirjeldatud, sisaldab NTFS'i metafail $MFT
informatsiooni failisüsteemi failide ja kataloogide kohta ning teatud juhtudel ka failide
andmeala. Alapeatükis „Andmeatribuudid ja andmejooksud“ on kirjeldatud, kuidas MFT
kirjetest leida ja taastada mitteresidentseid failiadmeid nagu mahukamate failide andmealad.
MFT analüüs on keeruline ja aeganõudev ning suuremahuliseks NTFS'i taastamiseks on
mõistlik muretseda tarkvara, mis failisüsteemi tervikuna automaatselt analüüsib.
NTFS failisüsteemiga partitsiooni korrektsuse ja MFT olemasolu kontrollimiseks piisab meile
aga vaid kahest täiendavast kirjest VBR'is: partitsiooni klastrisuurus ja MFT asukoha aadress.
1. VBR'i baidilt 14 leiab partitsiooni klastrisuuruse sektorites
2. Baitidel 49 – 56 sisaldub $MFT loogiline klastri aadress
Faili $MFT algussektor on leitav lihtsa valemiga (VBR_aadress + MFT_klastri_aadress *
klastrisuurus). VBR_aadress on partitsiooni originaalse alglaadekirje VBR sektori aadress.
3.2 Andmete taastamine partitsiooni failide poolt hõivamata alaltPartitsiooni failide poolt hõivamata ala on andmekandja piirkond, mille andmetele puudub
failisüsteemis viide. Selline ala on partitsiooni vaba ruum, millelt võib leida eelnevalt
kasutuses olnud failide andmeid. Analoogne on olukord, kui failisüsteem on riknenud või
andmeandjalt on kadunud viited partitsiooni algusele ja lõpule. Sellisel juhul tuleb andmeid
otsida andmete sisu järgi. Partitsiooni kataloogisüsteemi taastamiseks on olemas automaatsed
vahendid (GS EnCase jne), kuid kui failitabel on riknenud või FAT partitsiooni kõik failid
paiknesid vaid hävinud juurkataloogis, siis pole automaatsetest vahenditest kasu.
3.2.1 Faili andmete taastamineKadunud failiandmete taastamiseks peab kõigepealt teadma, mida otsida soovitakse. Failide
poolt hõivamata alal asuvad enamasti faili andmealad ehk siis faili sisu ning puuduvad viited
nimedele, kataloogiteedele ning failiaegadele. Tinglikult saab failide andmealad jagada kolme
sisutüübi järgi: tekstiandmed (TXT, INI, EML jne), erivormingus tekstiandmed (HTML,
DOC) ja erivormingus andmed (JPG, ZIP, EXE, AVI jne). Otsingul tuleb lähtuda
võimalustest ning otsida andmeid loogilise sisu, failisignatuuri või mõlema tunnuse järgi:
1. Tekstiandmeid saab otsida vaid teada oleva sisu järgi – sõnad, märgikombinatsioonid,
sest sellistel failidel puudub konkreetne failisignatuur.
2. Erivormingus tekstiandmeid saab otsida nii sisu kui ka failisignatuuri järgi. Otsingul
67
loogiliste märksõnadega tuleb enne kontrollida, kas failitüüp hoiab andmeid unikood
formaadis (DOC)
3. Erivormingus andmeid saab üldiselt otsida vaid signatuuri järgi, kui me just ei tea
konkreetset mustrit või loogilist tekstilõiku, mis sisaldub otsitavates andmetes.
Otsingu tulemusena leitud andmealade taastamisel on kõige lihtsam tekstiandmetega, sest
nende sisu on inimesele loetav ülejäänud andmeala tüüpide lugemine on keeruline ja kohati
võimatu.
1. Tekstiandmete otsingu tulemusena saab taastada loogilise tekstikatke ilma
failiandmeteta, mille saab salvestada uue failina.
2. Erivormingus tekstiandmeid on võimalik osaliselt taastada sõltuvalt vormingu
keerukusest. Näiteks paljud HTML-failid on salvestatavad uue failina, kuid DOC faili
uue failina taastamine on segase lõputunnuse tõttu keerukas.
3. Erivormingus andmete taastamine on tundmatute lõputunnuste tõttu väga keeruline
ning sõltub kunagise kustutatud faili andmeala suurusest ning võrdlusmaterjalist.
Ainuke failitüüp, mille taastamine on suhteliselt lihtsalt automatiseeritav, on
pildifailid.
Töö esimeses peatükis on kirjeldatud digipiltide taastamise võimalusi ja kuidas digitaalseid
fotosid tõendamisvajadusel analüüsida saab. Otsingu tüüpprotsess on järgmine:
1. Veendu otsingu ulatuse vajaduses, liiga palju failitüüpe võivad anda liiga palju
vasteid süsteemipiltidest.
2. Veendu otsitavate pildifailide andmete maksimaalses suuruses ehk millise
maksimaalse suurusega võisid olla taastamist vajavad pildid.
3. Vali välja pildifaili signatuurid otsitava tüübi järgi. Näiteks JPG failisignatuur 16nd-
süsteemis on (FF D8 FF).
4. Alusta signatuuri otsingut.
5. Kasutades omadust, et pildifailide failisignatuurid asuvad alati sektori või klastri
alguses, saab oletatava pildifaili suuruse järgi kõikidele leitud signatuuridele
järgnevad andmealad välja kopeerida.
6. Salvesta välja kopeeritud andmealad otsitava signatuuri laiendiga. Näiteks JPG.
7. Failide ükshaaval avamisel alustab pildiprogramm (näit IrfanView) taastatud
failiandmete lugemist signatuurikontrolliga kuni arusaadava andmeala lõpuni.
68
8. Kui näidatav pilt vajalik, salvesta see uue failina.
Tulemuseks on taastatud või osaliselt taastatud pildid, mida saab sisu järgi edasi sorteerida.
Juhul, kui pildid on EXIF vormingus infoga, saab võimalusel taastada pildi tegemise suhtelise
ajamärgi.
69
4 . Rakendus andmekandjate madaltasemel sirvimiseks
Käesoleva magistritöö kirjutamisega paralleelselt loodi töös kirjeldatu katsetamise ning
omandamise eesmärgil Win32 API liidest kasutav tarkvararakendus süsteemis töötavate
andmekandjate madaltasemel sirvimiseks.
Töö kirjutamise ajal puudus avatud lähtekoodiga tarkvara, mis võimaldaks töötavas Windows
süsteemis füüsilist andmekandjat madaltasemel vaadelda ning mustriotsinguid teha ning mida
vajadusel täiendada saaks. Vabad või erialastel koolitustel jagatavad tarkvarad on piirdunud
failisüsteemist failide taastamisega või failisüsteemi baasil pildifailide otsinguga, mis pole
piisav andmekandjate uurimiseks.
Tarkvararakenduse peamisteks ülesanneteks on töötava Windows XP operatsioonisüsteemiga
arvuti andmekandja andmete madaltasemel sirvimine, esitamine paralleelselt 16-nd süsteemis
ja ASCII interpretatsioonina, andmekandja sektorite loendamine ning sirvimine. MBR
partitsioonitabelite tõlgendamine, NTFS partitsiooni VBR tõlgendamine ning $MFT
leidmine selle abil. Lisaks võimaldab tarkvara üle andmekandja sektorite viia läbi 16-nd
süsteemis etteantud signatuuride skaneerimist ning selle abil kustutatud failide andmealade
otsingut ja kaardistamist, sh pildifailde otsingut ja taastamist failide poolt hõivamata alalt.
Programm kirjutati Microsoft Visual Studio 2003 Visual C# arendusvahendit kasutades ning
töötab platvormil .NET Framework 1.1.
Loogilistest ketastest ei loeta süsteemiketast arendusplatvormi kitsenduste tõttu.
Süsteemiketast kandva füüsilise ketta lugemisega probleeme pole. Lisaks võimaldab
programm analoogselt ketastega vaadelda faile.
Kuna sektori kaupa kõvaketaste lugemine on sektorite skaneerimiseks ebaoptimaalne, leiti
katsete tulemusena optimaalseks korraga loetavaks ploki suuruseks 1024kB ehk 2048
70
sektorit. Katsete tulemusena saadi kõvaketta keskmiseks lugemiskiiruseks üle skaneeritud
ketta 16916 kB sekundis. Lugemiskiiruste vahe üle ketta väiksemate lõikude kaupa oli kuni
30 kordne ning loetavate lõikude suurendamisel esines aeglustumisi. Programm teeb
andmekandjalt mustriotsinguid ette antud plokkide kaupa, kuni viimase ketta lõpus oleva
lõiguni, mida skaneeritakse sektori kaupa.
Tarkvara toimingud käivitamisel:
1. Loeb füüsiliste ja loogiliste andmekandjate arvu süsteemis.
2. Kontrollib füüsiliste ketaste \\.\PhysicalDrive mahud sektorites
3. Avab järjekorras esimese füüsilise ketta ning loeb ning esitab selle esimese sektori
4. Jagab ketta mõttelisteks plokkideks ning arvutab ketta lõpus olevast viimasest plokist
järele jäänud sektorite arvu.
5. Kasutajale näidatakse laetud 512 baidise sektori andmeid
6. Logib kellaajaliselt programmi avamise andmed ja leitud kettad
Ketaste sirvimine:
1. Kasutajale näidatakse sektori andmeid paralleelselt kahes aknas 16-nd süsteemis ja
tekstikujul
2. 16-nd kujul või tekstikujul esitatud andmete märgistamisel hiirega kajastub see
vastavalt teises aknas.
3. Näidatakse aknas märgistatud ala ofseti ja märgistuse pikkust.
4. Üle kogu ketta sektorite saab liikuda kerimisribaga
5. Pöörduda saab otse suvalise olemas oleva sektori poole.
6. Valitud sektorist saab teha faili binaarkoopiaga
MBR ja VBR andmete analüüs:
1. Suvalist valitud sektorit saab analüüsida, kas sellel on alglaadekirje MBR tunnused ja
partitsioonitabel.
2. Programm väljastab leitud partitsiooni tüübi, suhtelise asukoha partitsioonitabeli
sektorist ja partitsiooni suuruse.
3. Suvalist valitud sektorit saab analüüsida, kas sellel on partitsiooni alglaadekirje VBR
tunnused.
71
4. Programm väljastab leitud partitsiooni tüübi ID, klastri suuruse, partitsiooni suuruse
sektorites, NTFS'i metafailide $MFT ja $MFTMirr klastri ning sektori aadressi.
5. Suvalise MFT failitabeli kirje puhul esitab kirje oleku ja järjekorranumbri.
Mustriotsing ja tulemuste kuvamine:
7. Programm arvutab etteantud väärtuse järgi keskmise andmekandja skaneerimise aja
vastavalt valitud ketta mahule. Väärtus on saadud katsete tulemusena 1025kB ploki
suurusega.
1. Mustriotsinguks saab väärtuse sisestada 16-nd süsteemis käsitsi või valida
konfiguratsioonifailist etteantud signatuur faili tüübi järgi.
2. Kasutaja saab katsetamiseks valida andmeploki suuruse, mille kaupa ketast lugema
hakatakse. Valik on 0,5kB kuni 1024kB sammuga 0,5kB ehk üks sektor.
8. Mustriotsingu käivitamisel logib programm skaneeritava ketta andmed – loetud ketas
ja selle suurus
9. Logib otsitava mustri 16-nd süsteemis
10. Logib valitud ploki suuruse, millega otsingut alustati
11. Genereerib kettanimelise logifaili, milles on ära toodud sektorite aadressid, mis
vastasid mustriotsingule.
12. Otsingu lõppedes laetakse tulemuste sirvimiseks leitud signatuuride aadressifail.
13. Tulemusi saab edasi-tagasi sirvida. Kui tegu on pildifailiga, kuvatakse see.
14. Kui pildifailil on EXIF väli , siis kuvatakse selle info.
15. Kasutaja saab sisse lülitada kuvatud piltide automaatse salvestamise, mis salvestab
ette antud suurusega andmeploki automaatselt kujule „sektori_aadress.jpg“
72
Kokkuvõte
Käesolev magistritöö käsitleb NT-põhiste operatsioonisüsteemide ning NTFS failisüsteemi
toimimist ning uurib süsteemi iseärasusi kohtuinfotehnoloogilise ekspertiisi vaatenurgast
ekspertarvamuse andmisel.
Infotehnoloogiliste kohtuekspertiiside ja uuringute läbiviimisel ei saa usaldada ainult masina
taastamistöö tulemusena saadut. Andmete taastamine on oluline osa kohtueksperdi tööst, kuid
tarkvara poolt pakutav andmete taastamise funktsioonist ei tarvitse piisata eksperdiarvamuse
andmiseks ning alati on võimalus, et arvuti tegi vea. Infotehnoloogilise ekspertiisi puhul peab
tulemust hindama ja arvamuse andma kogenud spetsialist võimega analüüsida üheaegselt nii
inimese kui arvutina.
Töö sissejuhatavas osas kirjeldatakse kohtuinfotehnoloogiliste uuringute hetkeolukorda ning
jätkatakse praktilise konspektiivse ülevaatega infotehnoloogilise kohtuekspertiisi
läbiviimisest kohtueelses menetluses ja kohtusaalis. Töös analüüsitakse Windows
operatsioonisüsteemi kasutajale näha olevaid eripärasid ja iseloomulikke andmete peitekohti.
ning NTFS failisüsteemi selle osa toimimise tõlgendamist, mis on vajalik andmete
taastamiseks.
Töö jätkab 2003. aastal valminud bakalaureusetööga alustatut, mis tol hetkel oli mõeldud
algmaterjaliks infotehnoloogiavaldkonna ekspertidele ning võimaldas läbi viia lihtsamaid
ekspertiise. Käesolev magistritöö on mõeldud keskmisel tasemel arvutiekspertiisidega
kokkupuutuvate menetluspoolte koolitamiseks ja kõrgemal tasemel NT-põhiste Windows
operatsioonisüsteemide vaatluste läbiviijatele ja ekspertidele juhendmaterjaliks ning teejuhiks
keerulises NTFS failisüsteemis orienteerumisel.
Töö kirjutati Politseiameti halduses asuvas Kohtuekspertiisi ja Kriminalistika Keskuse
(KEKK) dokumendiosakonna infotehnoloogiavaldkonna ekspertiisilabori arendustööga
73
paralleelselt ning lõpetati AS Proekspert kvaliteediinseneri ameti kõrvalt seose allakirjutanu
lahkumisega 2008. aastal loodud ühend-ekspertiisikeskusest. Töö autor tegeleb jätkuvalt
menetluspoolte konsulteerimise ja koolitamisega infotehnoloogilisi asitõendeid puudutavates
küsimustes ning viib läbi infotehnoloogilisi ekspertiise.
74
Kasutatud kirjandus
[1] EnCase Introduction to Computer Forensics. Pasadena: Guidance Software,
2005.
[2] Tanenbaum, A. S. Modern Operating Systems, Second Edition, Prentice Hall, 2001
[3] EnCase Advanced Computer Forensics. Pasadena: Guidance Software, 2005
[4] Sammes, T., Jenkinson, B. Forensic Computing. A Practitioner's Guide, Springer, 2004
[5] Kriminaalmenetluse seadustik — Riigi Teataja I, 2004, 46, 329.
[6] London, T. Infotehnoloogiliste ekspertiiside kvaliteedi tagamine :
bakalaureusetöö. Tallinna Tehnikaülikool, Tallinn, 2003.
[7] Casey, E. Digital Evidence and Computer Crime: Forensic Science, Computers, and the
Internet, Second Edition, Academic Press, 2004
[8] Active@ Data Recovery Software koduleht http://www.ntfs.com
[9] Wikipedia artikkel NTFS failisüsteemist http://en.wikipedia.org/wiki/Ntfs
[10] Wikipedia artikkel alglaadekirjest http://en.wikipedia.org/wiki/Extended_Boot_Record
[11] Hager, J. The Windows Shortcut File Format – uurimus linkfailidest http://www.i2s-
lab.com/Papers/The_Windows_Shortcut_File_Format.pdf
[12] Stdlib.com artikkel linkfailidest http://www.stdlib.com/art6-Shortcut-File-Format-
lnk.html
[13] Wikipedia artikkel Windws registrist http://en.wikipedia.org/wiki/Windows_registry
75
Lisad
76
Lisa 1 – Rakenduse kettalugemise lähtekood
Järgnevalt on ära toodud osa töö kirjutamise käigus katsetusteks koostatud programmi
lähtekoodist failist PhysicalDisc.cs, mille abil teostatakse NT-põhises Windows
operatsioonisüsteemis andmekandja andmete poole otse pöördumine ning etteantud sektorilt
andmejada puhvrisse lugemine:
using System;
using System.Runtime.InteropServices;
using System.Collections;
namespace SectorView
{
public class PhysicalDisk
{
#region Muutujad
public struct Muutujad
{
public static string driveType = "PhysicalDrive";
public static int driveNr;
public static string driveName; //Hoiab draivi nime näit. \\.\PhysicalDrive1
public static ArrayList driveArray = new ArrayList(); // Hoiab olemasolevaid PhysicalDiskide numbreid
// LoeSektorPuhvrisse kasutuses
public static long sektorNr;
public static uint iBlockSize; // vaikimisi Seadme ploki (sektori) suurus baitides
// sektoriPuhver hoiab endas loetud sektorit, sektoriPikkus - loetud sektori pikkus
public static byte[] sektoriPuhver; //HexBuffer
public static uint sektoriPikkus; //HexBytesRead
// viitBaidile hoiab "viitSektorile" väljastatud väärtust, ehk mitmendast baidist sektorit loetakse
//(baidi lugemist alustatakse nullist)
public static IntPtr viitBaidile;
public static long kettaMaht; // Ketta maht baitides
public static long kettaViimaneSektor; //Ketta viimase sektori aadress ehk "kettaMaht/512-1"
// Faili suurus
public static long failiSuurus; // Faili suurus baitides?
}
#endregion
#region Public constnts
//DesiredAccess values
public const uint GENERIC_READ = 0x80000000;
public const uint GENERIC_WRITE = 0x40000000;
public const uint GENERIC_EXECUTE = 0x20000000;
public const uint GENERIC_ALL = 0x10000000;
77
//Share constants
public const uint FILE_SHARE_READ = 0x00000001;
public const uint FILE_SHARE_WRITE = 0x00000002;
public const uint FILE_SHARE_DELETE = 0x00000004;
// DeviceIoControl
public const uint IOCTL_DISK_GET_LENGHT_INFO = 0x7405c; // IOCTL_DISK_GET_LENGHT_INFO kood
//CreationDisposition constants
public const uint CREATE_NEW = 1;
public const uint CREATE_ALWAYS = 2;
public const uint OPEN_EXISTING = 3;
public const uint OPEN_ALWAYS = 4;
public const uint TRUNCATE_EXISTING = 5;
public const short INVALID_HANDLE_VALUE = -1;
public const uint FILE_BEGIN = 0;
public const long DISK_BLOCK_SIZE = 512;
#endregion
#region CreateFile
//CreateFile
[System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError=true)]
public static extern IntPtr CreateFile
(
string Filename, //In order to read CD data FileName must be "\\.\\D:" where D is the CDROM drive letter
uint DesiredAccess, // Must be GENERIC_READ for CDROMs
uint ShareMode, // means exlusive access, FILE_SHARE_READ allow open the CDROM
IntPtr lpSecurityAttributes, // See Platform SDK documentation for details. NULL pointer could be enough
uint CreationDisposition, // Must be OPEN_EXISTING for CDROM drives
uint dwFlagsAndAttributes, //0 in fine for this case
IntPtr hTemplateFile // NULL handle in this case (IntPtr.null)
);
#endregion
#region CloseHandle
//CloseHandle
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError=true)]
public extern static int CloseHandle(IntPtr hObject);
#endregion
#region SetFilePointerEx
//SetFilePointerEx
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError=true)]
public static extern bool SetFilePointerEx
(
IntPtr driveHandle, //[in] Handle to the file whose file pointer is to be moved. The file handle must have been created with the GENERIC_READ or GENERIC_WRITE access right.
78
long liDistanceToMove, //[in] Number of bytes to move the file pointer. A positive value moves the pointer forward in the file and a negative value moves the file pointer backward.
out IntPtr lpNewFilePointer, //[out, optional] Pointer to a variable that receives the new file pointer. If this parameter is NULL, the new file pointer is not returned.
uint dwMoveMethod //[in] Starting point for the file pointer move. This parameter can be one of the following values:
//FILE_BEGIN The starting point is zero or the beginning of the file. If this flag is specified, then the liDistanceToMove parameter is interpreted as an unsigned value.
//FILE_CURRENT The start point is the current value of the file pointer.
//FILE_END The starting point is the current end-of-file position.
);
#endregion
#region ReadFile
//ReadFile
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError=true)]
public static extern bool ReadFile
(
IntPtr driveHandle, //[in] A handle to the file to be read.
byte[] lpBuffer, //[out] A pointer to the buffer that receives the data read from a file.
uint nNumberOfBytesToRead, //[in] The maximum number of bytes to read. (512)
out uint lpNumberOfBytesRead, //[out] A pointer to the variable that receives the number of bytes read. ReadFile sets this value to 0 (zero) before doing any work or error checking.
IntPtr lpOverlapped //[in] A pointer to an OVERLAPPED structure.(NULL)
);
#endregion
#region GetFileSizeEx
//GetFileSizeEx
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError=true)]
public static extern bool GetFileSizeEx
(
IntPtr driveHandle, //[in] Handle to the file whose size is to be returned.
out long lpFileSize //[out] Pointer to a LARGE_INTEGER structure that receives the file size.
);
#endregion
#region AvaFyysilineDraiv: CreateFile
public static int AvaFyysilineDraiv(string driveName, out IntPtr hDevice)
{
hDevice = CreateFile
(
driveName,
GENERIC_READ,
FILE_SHARE_READ,
IntPtr.Zero,
OPEN_EXISTING,
0,
IntPtr.Zero
79
);
if (hDevice.ToInt32() == INVALID_HANDLE_VALUE)
{
return 0;
}
return 1;
}
#endregion
#region ViitSektorile: SetFilePointerEx, CloseHandle
public static IntPtr ViitSektorile(IntPtr driveHandle, long liDistanceToMove, uint dwMoveMethod)
{
bool Tulem;
IntPtr lpNewFilePointer;
Tulem = SetFilePointerEx(driveHandle, liDistanceToMove*DISK_BLOCK_SIZE,out lpNewFilePointer, dwMoveMethod);
if (Tulem == false)
{
CloseHandle(driveHandle);
}
return lpNewFilePointer;
}
#endregion
#region LoeSektor: AvaFyysilineDraiv, ViitSektorile, HexTabel.JoonistaTabel, CloseHandle
public static int LoeSektor(string driveName, long sektorNr, bool joonistaHexTabel)
{
IntPtr driveHandle;
uint lpNumberOfBytesRead=0;
AvaFyysilineDraiv(driveName, out driveHandle);
ViitSektorile(driveHandle, sektorNr, FILE_BEGIN);
byte[] puhver = new byte[Muutujad.iBlockSize];
if (ReadFile(driveHandle, puhver, Muutujad.iBlockSize,out lpNumberOfBytesRead, IntPtr.Zero))
{
byte[] outPuhver = new byte[lpNumberOfBytesRead];
Array.Copy(puhver, outPuhver, lpNumberOfBytesRead);
if (joonistaHexTabel)
{
HexTabel.JoonistaTabel(lpNumberOfBytesRead,outPuhver);
}
else
{
Muutujad.sektoriPuhver = outPuhver;
Muutujad.sektoriPikkus = lpNumberOfBytesRead;
}
}
80
PhysicalDisk.CloseHandle(driveHandle);
return 1;
}
#endregion
#region driveName
public static int driveName(string driveType, int driveNr)
{
Muutujad.driveName = string.Format("\\\\.\\{0}{1}", driveType ,driveNr);
return 1;
}
#endregion
#region checkDriveNames()
// Kontrollitakse olemasolevad füüsilised kettad ja salvestatakse draivi nimed massiivi Muutujad.driveArray
public static int checkDriveNames()
{
IntPtr driveHandle;
ArrayList myObjArray = new ArrayList();
for (int i=0; i<10; i++)
{
driveName(Muutujad.driveType, i);
if (AvaFyysilineDraiv(Muutujad.driveName,out driveHandle) != 0)
{
myObjArray.Add(i);
}
}
Muutujad.driveArray = myObjArray;
return 1;
}
#endregion
#region DeviceIoControl
[System.Runtime.InteropServices.DllImport("Kernel32.dll", SetLastError=true)]
public static extern bool DeviceIoControl
(
IntPtr driveHandle, // [in] handle to device (HANDLE)
uint dwIoControlCode, // [in] IOCTL_DISK_GET_LENGHT_INFO
IntPtr lpInBuffer, // NULL (IntPtr.Zero)
uint nInBufferSize, // 0
out long lpOutBuffer, // [out] output buffer, (LPVOID)(byte[])
long nOutBufferSize, // [in] size of output buffer, (DWORD)
out uint lpBytesReturned, // [out] number of bytes returned, (LPDWORD)
IntPtr lpOverlapped // [in] OVERLAPPED structure, (LPOVERLAPPED)
);
#endregion
#region LoeSektoriteSumma: AvaFyysilineDraiv, DeviceIoControl, CloseHandle
// Kontrollitakse ketta sektorite arvu ja salvestatakse tulem muutujasse "long Muutujad.kettaMaht"
81
public static int LoeSektoriteSumma(string driveName)
{
IntPtr driveHandle;
long DiskSize = 0; // long lpOutBuffer
long nOutBufferSize = Marshal.SizeOf(typeof(long));
uint lpBytesReturned = 0;
AvaFyysilineDraiv(driveName, out driveHandle);
Console.WriteLine( "\nDrive handle {0}", driveHandle);
DeviceIoControl(driveHandle, IOCTL_DISK_GET_LENGHT_INFO,IntPtr.Zero,0,out DiskSize,nOutBufferSize,out lpBytesReturned,IntPtr.Zero);
Muutujad.kettaMaht = DiskSize;
Console.WriteLine( "Disk Size {0} bytes", DiskSize);
// Kui ketta suurus on 0, siis tekib probleem aadressiga (vol C)
Console.WriteLine( "Disk {0} Size {1} sectors", driveName ,Muutujad.kettaMaht/512);
CloseHandle(driveHandle);
return 1;
}
#endregion
//Loetakse avatud faili suurus ja salvestatakse tulem muutujasse "long Muutujad.kettaMaht"
public static int LoeFailiSuurus(string driveName)
{
IntPtr driveHandle;
long lpFileSize;
AvaFyysilineDraiv(driveName, out driveHandle);
Console.WriteLine( "File handle {0}", driveHandle);
GetFileSizeEx(driveHandle,out lpFileSize);
Muutujad.kettaMaht = lpFileSize;
Console.WriteLine( "File size {0} bytes", lpFileSize);
CloseHandle(driveHandle);
return 1;
}
}
}
82
Lisa 2 – Täiendav info Windows süsteemi uurimisel
Printimistööde tuvastamine
Printimistööde poolimine (ingl. k spooling) on trükiandmete ettevalmistamine printerisse
saatmiseks töötava rakenduse taustal. Poolifialid paiknevad NT-põhistes Windows
süsteemides vastavalt kataloogide \Winnt või \Windows alamkataloogis
\system32\spool\printers. Iga printimistöö jaoks luuakse SHD ja SPL-failid, mis kustutatakse
printimise lõpetamisel. Trükitavaid kujutisi esitatakse EMF ehk täiustatud metafaili (ingl. k
enhanced metafile) või RAW pildiformaadis.
SHD-fail ehk varifail (ingl. k shadow) sisaldab printimistööga kaasnevat informatsiooni:
kasutajakonto kasutajanime, printeri tüübi, programmi nime, faili nime, trükimeetodi (EMF
või RAW) ja mõnikord ka täielikku teed kataloogipuus. SPL-fail sisaldab RAW formaadi
puhul vaid prinditavaid andmeid, EMF-formaadi korral aga prinditava faili nime ja EMF-
trükikujutisi. Iga trükitava lehekülje kohta luuakse üks EMF-kujutis, mis paiknevad järjest
ühes või enamas SPL-failis.
SPL-failide viited võivad eksisteerida ka failide poolt hõivamata alal ja virtuaalmälufailis
ning leida saab neid EMF-signatuuride otsimisel, mille lõpuosa võib erinevates Windows
süsteemides erineda. Mõned näited 16-nd süsteemis:
01 00 00 00 18 17 (NT, 2000)
01 00 00 00 D8 17 (2000)
01 00 00 00 58 6E (2000)
01 00 00 00 5C 01 (XP)
Tavapärane päise algus on alati (01 00 00 00) ning võimalusel tasub kataloogist
\system32\spool\printers\ tuvastada üldkujulise signatuuri otsimise abil süsteemis levinud
EMF päis, et kitsendada otsingutulemusi. Otsingutulemuste sirvimist lihtsustab oluliselt, et
EMF-formaat sisaldab ka tähist EMF, mis paikneb FO: 41 EMF-kujutise signatuurist lugedes.
Trükifailide tuvastamine on oluline just dokumentide ning rahatähtede võltsimise juhtumitel,
kus arvutist leitav poolifail või EMF-formaadis kujutis on otsene viide vastava kujutise
printimisele.
Windows ajamärgi teisendamine
Windows salvestab ajamärgid FILETIME ehk Windows Date/Time formaadis. FILETIME
formaat koosneb 100 ns intervalliga tiksudest., mida liidetakse alates kellaajast 00:00 ja
83
kuupäevast 1 jaanuar 1601 UTC's. Kuna ülejäänud maailm kasutab Unix aega, mis loendab
sekundeid alates kellaajast 00:00 ja kuupäevast 1 jaanuar 1970, peab FILETIME formaadi
teisendama Unix ajaformaadiks, mida saab teha järgmise valemi abil:
(Unixaeg) = A * (NT aeg) + B
Kuna tiksud FILETIME formaadis on 100 ns intervalliga, teame me, et A on 10. Probleem on
B väärtuse leidmisega. B on sekundite arv 01.01.1601 ja 01.01.1970 vahel, milleks on
MSDN.com info järgi 11644473600.
Arvusüsteemid
Intel protsessorid ja sellest tulenevalt Windows kasutavad masinkoodis little-endian
arvuformaati. Näiteks Motorola kasutab big-endian formaati. Little-endian andmevälja
lugemisel tuleb arvestada, et madalamad numbrid loetakse enne. Piltlikult on kuupäeva
formaat little-endian ehk pp.kk.aaaa. Big-endian formaadis oleks see aaaa.kk.pp. Arvude
puhul tähendab see aga, et 10-nd süsteemi arvud, mida inimesed lugema on harjunud, on nö
big-endian formaadis ning little-endian kujul oleks 2008 esitatud kujul 8002. Big-endian
vormingut nimetatakse ka raw hex.
84
Recommended