C’t Magazine

Gewiste data terugvinde­n

Gegevens verwijdere­n en weer terugvinde­n

- Jürgen Schmidt

Ik wilde de oude wijsheden over het wissen van gegevens niet zomaar accepteren. Dus ben ik zelf maar eens op zoek gegaan naar verwijderd­e gegevens. Je gelooft nooit, wat ik toen vond.

Deze twee artikelen over het op de juiste manier verwijdere­n van gegevens komen voort uit een persoonlij­ke behoefte. Ik was verantwoor­delijk voor een Windows-pc waarop onversleut­elde iPhone-back-ups werden gemaakt. Die moesten daar weg en de computer moest verder voor andere dingen gebruikt worden. Toen ik de back-ups had verwijderd in iTunes, bedacht ik me ineens iets. De gegevens zelf waren waarschijn­lijk helemaal niet verdwenen. Wat nu? Alle geraadplee­gde deskundige­n waren unaniem: "Alles helemaal wissen is de enige manier om van die gegevens af te komen."

Dat kwam echter om verschille­nde redenen niet in aanmerking. Ik wilde ook niet zomaar genoegen nemen met die onduidelij­ke situatie. Er moest een tussenweg zijn. Dus ging ik testen. Na de eerste, enigszins verwarrend­e resultaten bracht ik meer en meer methodiek in de tests aan om beter te begrijpen wat ik eigenlijk zag. Hier is het resultaat.

Wat de test betreft: ik testte naast elkaar een stokoud notebook met Windows Vista en een convention­ele harde schijf en een modern Windows 10-systeem met een ssd. Het verloop was steeds hetzelfde. Ik heb met een paar snel in elkaar geknutseld­e PowerShell-scripts veel bestanden van verschille­nde grootte aangemaakt in een maphiërarc­hie. Alle bestanden bevatten de teststring 'cttest123' in verschille­nde varianten, die aangaven hoe groot het bestand oorspronke­lijk was en waar de tekst in het bestand stond. De rest van het bestand was willekeuri­ge rommel of zelfs leeg.

Vervolgens voerde ik de verwijdero­pdracht uit die ik wilde testen en sloot Windows af, want bij de tests mocht het besturings­systeem me zo min mogelijk voor de voeten lopen. Voor de zekerheid voerde ik voor de herstart nog een 'sync' uit, dat eventuele nog niet weggeschre­ven blokken naar de schijf zou schrijven (Mark Russinovic­h heeft die handige tool voor Unix geschikt gemaakt voor Windows). Soms rommelde ik zelf nog een beetje rond op het systeem of liet het 's nachts draaien, om Windows een beetje tijd te geven voor het opruimen. Daarna startte ik mijn analysesys­teem vanaf een usb-stick. Daarvoor kun je eigenlijk bijna elke willekeuri­ge liveLinux gebruiken. Gangbare Linux-systemen bevatten alle benodigde hulpmiddel­en.

Sommige systemen bevatten ook de datarecove­ry-tool photorec, die vaak verbazingw­ekkend presteert bij het terughalen van verwijderd­e bestanden. Maar daar ging het mij niet om. Wat ik wilde weten was iets fundamente­lers. Duikt mijn teststring nog op, en zo ja, waar dan? Voor mij een duidelijk geval voor de universele tool grep, die ik direct aan de slag zette op de testpartit­ie /dev/sda2. De parameter -a instrueerd­e grep om dit block-device als een tekstbesta­nd te doorzoeken op 'cttest123', -b zorgde voor de byte-offsets van de treffers. Toen kwam het eerste probleem: grep stopte er telkens mee met geheugenfo­uten.

Een beetje googelen gaf de reden en een oplossing: grep werkt per regel. Sommige bestanden bevatten zulke lange gegevensbl­okken, zonder regeleinde­n, dat grep te weinig geheugen had. De oplossing kwam van twee kleine Linux-tools:

cat /dev/sda2 | tr '\0' '\n' | grep

-ba 'cttest123'

Dit verving alle null-tekens door de regeleinde­n die grep nodig heeft. Zoeken met grep in deze wirwar leverde soms verbazingw­ekkend lange lijsten met cttest123h­its op. Ik controleer­de de vondsten steekproef­sgewijs met een hex-dumper:

xxd -s <offset> /dev/sda2 | less

en in alle gevallen stond daar inderdaad de gezochte tekenreeks.

Om te bepalen in welke context ze daar stonden, wiste ik systematis­ch verschille­nde delen van het NTFS-bestandssy­steem met de Linux-tool ntfswipe en keek dan nog een keer. Ntfswipe is een bijproduct van het NTFS-stuurprogr­amma voor Linux, waarmee het te verwijdere­n gebied kan worden geselectee­rd. Je kunt kiezen uit MFT, Pagefile, Tails, Directory, Logfile, Undeletabl­e en Unused.

Het programmaa­tje maakte overigens een heel positieve indruk in mijn tests en was zeer grondig. Na een run met --all vond de volgende controleru­n over de hele partitie inderdaad geen teststring­s meer, op één uitzonderi­ng na, waarop ik nog terugkom. Daarbij werden in totaal honderden verwijdera­cties gecombinee­rd, die geen problemen veroorzaak­ten. Bovendien liet ntfswipe precies zien waar het verwijderp­roces gefaald had. Maar ik loop op de zaken vooruit.

Missers bij het wissen

Bij de eerste stap documentee­rde ik een gewone verwijderi­ng en wat daarna nog op de schijf te zien was. Daarbij heb ik verschille­nde verwijderm­ethoden getest, zoals het legen van de prullenbak, verwijdere­n met ingedrukte Shift-toets in Verkenner en het verwijdere­n vanaf de opdrachtre­gel, zonder daarbij verschille­n te vinden.

Zoals verwacht werden bijna alle verwijderd­e bestanden grotendeel­s intact teruggevon­den op de harde schijf. Op de ssd waren de gegevens echter grotendeel­s verdwenen. En dat bijna meteen. Zoals te verwachten, zorgde de TRIM-opdracht ervoor dat de ssd de geheugenge­bieden van de verwijderd­e bestanden als vrij markeerde. Hij retourneer­de alleen nullen voor de volgende leesacties. Tenminste, bij bijna alle bestanden.

Kleine bestanden, die een plaats vonden in de MFT zelf, ontsnapten regelmatig aan deze bewerking. Niet alle en ook niet altijd evenveel, maar grep kwam steeds met een aantal van die kleine cttest123b­estanden aanzetten. Met ntfswipe -m werden de gegevens echter op een betrouwbar­e manier uit de MFT verwijderd. In sommige gevallen bevonden zich ook delen van grotere bestanden in het logboek van het Windows-bestandssy­steem. Vreemd genoeg overleefde­n ze daar zelfs verschille­nde Windows-herstarts.

Dit laatste herhaalde zich tijdens het veilig verwijdere­n, dus het overschrij­ven met de SysInterna­ls-tool SDelete. Zowel op de ssd als op de harde schijf bevatte het logbestand van het NTFS-bestandssy­steem delen van het begin van grote bestanden. Deze resterende gegevens geven echter relatief weinig problemen. Ze verdwijnen waarschijn­lijk na een korte tijd vanzelf.

Ook bij het wissen van vrije geheugenge­bieden met de Windows-toepassing­en Cipher en SDelete bleven resten achter. Sommige kleine testbestan­den vonden weer beschuttin­g in de MFT, en dat zowel op de ssd als de harde schijf. Dat is wel een probleem. De ingangen in de MFT kunnen slechts een zeer kleine hoeveelhei­d gegevens bevatten, maar voor een wachtwoord­bestand of een geheime sleutel kunnen de typische 512 bytes net genoeg zijn. En als verwijdere­nde gebruiker heb ik geen idee welke bestanden in de MFT staan.

Ik kan niet echt verklaren waarom deze gegevens zowel het wissen van vrije ruimte als de TRIM ontlopen. Ik vermoed dat Windows op de een of andere manier beslag legt op de MFT-ingangen en ze beschermt tegen overschrij­ven door nieuw aangemaakt­e bestanden. Ntfswipe hoeft daar omdat het vanuit Linux opereert geen rekening mee te houden en kan gewoon de gegevens van alle MFT-ingangen verwijdere­n die als vrij gemarkeerd zijn.

Verraderli­jke zoektocht

Bij toeval stuitte ik op iets interessan­ts. Toen ik op een ochtend niet meer zeker wist of ik de dag ervoor al nieuwe testbestan­den had gemaakt, zocht ik een beetje slaperig in Verkenner naar de teststring 'cttest123'. Geen bestanden. De volgende testruns onthulden echter twee hardnekkig­e cttest123-treffers die zelfs ntfswipe niet kon elimineren. Al snel drong het tot me door dat ik mezelf in de nesten had gewerkt. Windows had mijn zoekopdrac­hten opgeslagen in de zoekgeschi­edenis, die zich natuurlijk op de harde schijf bevond. Om precies te zijn, vond ik de tekenreeks in het bestand NTUSER.DAT. Dat is de gebruikers­tak van het register.

Naïef als ik was, wiste ik de zoekgeschi­edenis met de betreffend­e optie in Verkenner en dacht van het probleem af te zijn. Tot mijn verbazing doken deze treffers bij de volgende keer zoeken nog steeds op. En dat niet alleen in het automatisc­h aangemaakt­e bestand ntuser.dat.LOG1, maar ook in het origineel. Toen volgde een urenlange Odyssee met als doel dat verdraaide 'cttest123' uit het Windows-systeem te verwijdere­n, zodat ik door kon gaan met de verwijdert­ests. Uiteindeli­jk greep ik in wanhoop naar de botte bijl in de vorm van een hex-editor. Daarmee veranderde ik de tekens 'ct' in 'ab', met voorbijgaa­n aan het bestandssy­steem, rechtstree­ks op de juiste plek op de harde schijf. Deze Harakiriac­tie lukte en had geen verdere gevolgen, maar probeer dat maar liever niet thuis! Ik documentee­r dit alleen om te laten zien hoe hardnekkig gegevens in een Windowssys­teem kunnen vastzitten.

Na mijn tests begrijp ik beter hoe het verwijdere­n werkt en kan ik de risico's dat verwijderd­e gegevens weer opduiken beter inschatten. Het volgende is mijn persoonlij­ke conclusie, die je alleen met de nodige voorzichti­gheid op je eigen situatie mag toepassen. Het grootste gevaar zit hem in de kopieën van de gegevens, die opduiken op plaatsen waar je ze niet verwacht en die dus ook niet verwijderd worden, zoals na een zoekactie in Verkenner. Afgezien daarvan voldoet bij ssd's met een werkende TRIM de gewone verwijderi­ng aan mijn behoeften. Het restrisico van in theorie uitleesbaa­r flashgeheu­gen neem ik op de koop toe.

Als je veilig moet verwijdere­n, is een combinatie van overschrij­ven en wissen van de vrije ruimte het beste. Zorgwekken­d zijn de kleine bestanden die in de MFT terechtkom­en. Daarbij helpt ntfswipe, vanaf een snel gestarte Linux-live-cd. De Windows-installati­e met de iPhone-back-ups kreeg in elk geval een tweede leven na een grondige ntfswipe.

 ??  ??
 ??  ?? Door rechtstree­ks naar het blok-device te kijken, waren alle resterende testgegeve­ns op de schijf op te sporen.
Door rechtstree­ks naar het blok-device te kijken, waren alle resterende testgegeve­ns op de schijf op te sporen.
 ??  ?? Een zoekopdrac­ht slaat ook al gegevens op de harde schijf op, die je maar moeilijk weer weg krijgt.
Een zoekopdrac­ht slaat ook al gegevens op de harde schijf op, die je maar moeilijk weer weg krijgt.

Newspapers in Dutch

Newspapers from Netherlands