Guider > Skydda din hårddisk

Varning: Den här guiden är under utveckling. aliceochbob.se 11 juli, 2008.

Skydda din hårddisk (avancerad)

Om Filradering

De flesta här vet förmodligen om att filer egentligen inte försvinner när de raderas i Windows. Detta är för att förbättra filsystemets prestanda. Nu är det nödvändigt att lära sig lite om hur ett filsystem fungerar. Som exempel kommer jag ta NTFS här då det är vanligast på Windowsburkar.

En fil - detta gäller oavsett om det är ett filsystem, en mp3 eller en jpeg - är bara en endimensionell lista av bytes (en byte är en siffra från 0-255). Beroende på vad det är för fil kommer olika delar av innehållet att betyda olika saker. En jpeg börjar exempelvis med en byte med värdet 255. För hårddisken är det ingen skillnad mellan en mp3 eller en jpeg eller ett filsystem, det är upp till datorprogrammen att tyda innehållet. Vanligtvis är det operativsystemet som tolkar filsystemet, och applikationer som tolkar mp3:or.

Det speciella med filsystem är att de är till för att innehålla andra filer. Filsystem kan därför liknas som zip eller rar-arkiv, som också är en fil som innehåller andra filer. En annan speciell egenhet med filsystem är att de ofta är utformade för att ge bra prestanda på mekaniska hårddiskar.

Olika bytes i filsystemet representerar olika saker. Av historiska anledningar brukar de bytes i filsystemet som representerar en fil kallas för en inode. En inode är en sekvens bytes som innehåller information som filnamn, storlek, var filen ligger i för mapp, när filen är skapad osv. inoden innehåller även information vart resten av filen, själva innehållet, ligger. En bra jämförelse är indexkort som biblioteken hade innan biblioteken datoriserades. Indexkortet innehåller information om bokens namn, författare, årtal och på vilken hylla boken ligger.

Ovan: En inode i NTFS, visad i en så kallad sektoreditor. Denna inode tillhör filen "44.1k.wav".

Mekaniska hårddiskar har vissa prestandaegenskaper. Det är exempelvis väldigt långsamt att enbart läsa 1 byte från en hårddisk. Av den här anledningen brukar filsystem gruppera bytes i områden som kallas för kluster, som är effektivare för hårddisken att läsa. Ett kluster kan exempelvis vara en del av filsystemet som är 4096 bytes och man säger därför att filsystemet är indelade i ett antal kluster i den storleken. Filinnehållet i filsystemet ligger därför i kluster. Om klusterstorleken är 4096 bytes kommer alla filer, även om de bara är 1 byte, ta upp så mycket utrymme i filsystemet. (Notera: i just NTFS kan väldigt små filer ligga direkt i inoden och behöver inte extra kluster).

Moderna filsystem innehåller fler komponenter än inodes och kluster, men det är tillräckligt att känna till dessa två koncept för att kunna radera filer på ett bra sätt. När man ”tömmer papperskorgen” så modifieras bara filens inode så att området som hör till inoden ser ut att vara ledigt. Att filsystemet enbart markerar området på hårddisken som ledigt är för det tar mycket snabbare än om området skulle skrivas över, vid varje filradering.

Det finns bra program för att radera filinnehåll ordentligt. Ett sådant program är Heidi Eraser. Det här är ett väldigt bra program, alltså skaparna har bra koll på hur Windows filsystem fungerar. Eraser kan skriva över både inode och filens innehåll så att den försvinner på riktigt.

Eraser har även en annan bra funktion. Eftersom filer alltid tar upp ett utrymme som är en multipel av klusterstorleken finns det ett litet utrymme i slutet av varje fil där känslig data kan ligga. Detta utrymme kallas för slack space och är ett problem. Ett exempel: Du kanske har ett textdokument som är 3500 bytes. Du råkar skriva 500 byte hemligheter i textdokumentet som du sedan skriver till disken. När du sedan raderar dessa 500 byte, är det enda som kommer att hända att positionen av den sista byten ändras i inode. Eraser kan radera slack space.

En viktig fråga är hur många gånger en fil måste skrivas över för att verkligen raderas från hårddisken. Dessvärre finns det lite mysticism kring detta, till och med i det bra programmet Eraser finns det ett läge som skriver över en fil 35 gånger. Detta är helt och hållet onödigt! Siffran 35 kommer från en artikel av en person som heter Gutmann. Siffran är baserad på summan av Gutmanns speciella överskrivningsmetoder konstruerade för att motverka magnetfältmikroskopi på vissa typer av hårddiskar.

Magnetic field microscopy är en teoretisk attack mot magnetiska hårddiskar som går ut på att använda speciell hårdvara för att lista ut vilket värde en överskriven byte hade innan den skrevs över. Gutmann konstruerade vissa överskrivningsmetoder för att motverka användningen av den här hårdvaran. Olika överskrivningsmetoder utvecklades för olika typer av hårddiskar. Exempelvis kanske hårddisk av en typ ska skrivas över med en viss sekvens av bytes, och hårddiskar av en annan typ ska skrivas över med en annan sekvens. Om man vet vilken typ av hårddisk man äger räcker det att använda den motsvarande överskrivningsmetoden. Om man inte vet det kan man köra allihop som Gutmann utvecklade, och det är härifrån siffran 35 kommer ifrån.

Problemet med 35: många av överskrivningsmetoderna är utvecklade för magnetisk media som inte går att köpa i butik längre. Det finns dessutom inga bra bevis att denna mikroskopteknik faktiskt används i verkligheten. Gutmann själv säger nu att på moderna hårddiskar räcker det att skriva över en byte ett par två-tre gånger (och det förutsatt att MFM fungerar i praktiken).

Hela kontroversen är egentligen baserad på vad som menas med att en fil raderats. Ibas kan exempelvis återskapa raderade filer - om man med raderad menar att inode är borttagen, men inte filinnehållet (detta kan även ”GetDataBack” göra). När jag söker på Flashbacks forum ser jag (overifierade) belägg att svenska polisen lyckats återskapa en fil som skrivits över tre gånger. Det kan stämma, om enbart början eller slutet av filen skrivits över och början av filen inte är helt nödvändig för att tolka filen (exempelvis textdokument). Det skulle ha kunnat gå till att brottslingen ”tog bort” sin fil genom att tömma papperskorgen i Windows, sedan skrevs vissa kluster över när han använde hårddisken normalt.

Jag har faktiskt inte hittat ett enda belägg att ett kluster som skrivits över komplett kan återskapas. Jag är inte ensam om det heller, se exempelvis den här artikeln.

Den som vill gardera sig mot undelete/forensikprogram behöver enbart skriva över filen en gång. Då ska dock hela filens innehåll inklusive slack space och filens inode skrivas över helt och hållet, vilket Eraser gör. Den som är lite paranoid och tror att attackeraren har resurser att undersöka hårddiskens plattor med avancerade mikroskop kan skriva över med slumpmässiga bytes ett par gånger.

Den bästa lösningen är dock att kryptera hela filsystemet. Då hamnar ingen känslig data alls på hårddiskens plattor, och inte ens mikroskop kan återskapa annat än krypterad data, om det ens är möjligt. Detta kan göras med TrueCrypt. Det är framförallt vettigt att kryptera partitionen där operativsystemet ligger eftersom temporära mappar, swapfil och så vidare krypteras.

Om du har en ganska gammal dator och först på senare tid börjat kryptera dina filer, så kommer ditt filsystem förmodligen vara fullt av gamla filrester. Dessa bör du ta bort. Eraser har en funktion som kan skriva över det lediga utrymmet på en hårddisk. En kul grej som du bör göra är att installera ett ”undelete”-program exempelvis GetDataBack och köra det före och efter du har gjort detta.

Om Antiforensik

Seriösa attackerare kommer att gå lös på din hårddisk med specialistmjukvara som Encase eller Ilook (eller andra liknande program). Forensikprogrammen går igenom hårddisken efter intressanta detaljer. Microsoft har börjat distribuera små bootbara USB-minnen som innehåller enklare forensikprogram. Dessa kommer förmodligen börja användas på flygplatser snart.

En funktion som sådana här program brukar ha är att leta reda på raderade filer och utrymme i slack space. Detta löses genom att köra Eraser på hårddisken. Eraser har en bra funktion som raderar ledigt område, alltså programmet raderar runt filerna som just nu ligger på disken.

Den viktigaste funktionen med forensisk mjukvara är dock att hitta det som inte är raderat. Program som Encase kan på ett smidigt vis presentera för attackeraren intressanta delar i datorn. Windows sprider ut väldigt mycket intressant information. Exempel:

C:\Documents and Settings\Användarnamn\Recent
C:\Documents and Settings\Användarnamn\Lokala inställningar\Tidigare
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

De två första exemplena sparar på hårddisken vilka filer som användaren tittat på senast. Det tredje exemplet är en del i registret där innehållet i ”Öppna/spara fil”-fönstret sparas. Det sista exemplet är en väldigt skum del av Windows register som sparar information om vissa program och filer som öppnats. Informationen är av någon anledning transformerad med Cesarskiffret. För att se vad som finns där kan ni exempelvis använda sajten www.rot13.com

Annan väldigt intressant information är innehållet i swapfilen. Swapfilen är en fil på hårddisken där innehållet i datorns RAM-minne kan hamna. Om funktion som viloläge/hibernate används kommer RAM dessutom dumpas till en annan speciell fil. Detta är ett sådant allvarligt problem att många linuxdistributioner, även sådana som inte är speciellt till för säkerhet, krypterar swapfilen som standard. Funktionen systemåterställning kan även spara intressant information på hårddisken mot användarens vilja. I Windows kan alla dessa problem motverkas genom att kryptera hela systempartitionen med TrueCrypt.

Bortsett från Windows så kommer även applikationsprogram sprida ut en massa information. I exempelvis Excel eller Word finns det en liten lista i arkivmenyn som sparar de senaste öppna dokumenten. Detta kan vara intressant för attackeraren, framförallt om sökvägarna pekar på en partition som inte existerar (isåfall kanske användaren krypterat data).

Nu har jag varken tid eller lust att gå igenom vartenda program som finns men generellt kan man väl säga att i princip alla program sparar information om tidigare öppnade filer. Detta sparas antingen i registret eller kanske i konfigurationsfiler. En wiki som dokumenterar var program sparar denna information kan vara en idé för uttråkade webbkodare.

Bortsett från information om filer som öppnats finns det ju annan, intressantare information som givetvis bör krypteras. Detta kan vara allt från epost till chattloggar till webbläsarens profil osv. Även operativsystemets tempmappar kan vara värda att kryptera (brukar också vara standard på vissa linuxsystem). Systemkrypteringsfunktionen i TrueCrypt är en bra idé med andra ord.

Avslutningsvis finns det en sista grej som är bra att vara medveten om och det är filsystemets timestamps. Ordet timestamp skulle egentligen kunna översättas till tidsangivelse eller tid/datum, men ordet är så användbart att jag försöker föra in det i svenska språket. De flesta filsystem sparar tre stycken tidpunkter i inode: tid/datum när filen skapades, när den ändrades och när den accesserades. NTFS är dock lite speciellt och det är att det filsystemet sparar en fjärde timestamp: när inode själv ändrades. Det finns många program som kan ändra de tre vanliga tidsangivelserna, men det enda programmet jag känner till som ändrar alla fyra är programmet ”timestomp”.

För den som inte krypterar hela hårddisken är det bra att veta att forensisk mjukvara är väldigt bra att skapa en ”tidslinje” hur datorn används genom att presentera i vilken ordning filer ändratts. Av just denna anledning är det vettigt att kryptera så mycket som möjligt.

Mer läsning

File System Forensic Analysis – Brian Carrier.
The Official Ence Encase Certified Examiner Study Guide – Sybex.
Cyber Crime Investigator’s Field Guide.
... med flera.


aliceochbob.se | Creeper