SDelete 2.05-ös verzió

Készítette: Mark Russinovich

Közzétéve: 2023. szeptember 29.

DownloadSDelete letöltése (304 KB)

Introduction

A Windows NT/2000 (Win2K) C2-megfelelőségének egyik funkciója, hogy objektum-újrafelhasználási védelmet valósít meg. Ez azt jelenti, hogy amikor egy alkalmazás fájlterületet vagy virtuális memóriát foglal le, nem tudja megtekinteni a korábban a Windows NT/2K által lefoglalt erőforrásokban tárolt adatokat. A Windows NT nullával tölti ki a memóriát, és nullára állítja a lemez azon szektorait, amelyekben egy fájl el van helyezve, mielőtt bármilyen típusú erőforrást bemutat egy alkalmazásnak. Az objektum újrafelhasználása azonban nem követeli meg, hogy a fájl által a törlés előtt elfoglalt terület nullára legyen adva. Ennek az az oka, hogy a Windows NT/2K úgy lett kialakítva, hogy az operációs rendszer szabályozza a rendszererőforrásokhoz való hozzáférést. Ha azonban az operációs rendszer nem aktív, nyers lemezszerkesztőkkel és helyreállítási eszközökkel megtekintheti és helyreállíthatja az operációs rendszer által felszabadított adatokat. Még akkor is, ha a Win2K titkosítási fájlrendszerével (EFS) titkosítja a fájlokat, a fájl eredeti titkosítatlan fájladatai a lemezen maradnak a fájl új titkosított verziójának létrehozása után.

A törölt fájlok, valamint az EFS-lel titkosított fájlok helyreállításának egyetlen módja a biztonságos törlési alkalmazás használata. A biztonságos törlési alkalmazások felülírják a törölt fájlok lemezen tárolt adatait olyan technikákkal, amelyekkel a lemezadatok helyreállíthatatlanok lesznek, még olyan helyreállítási technológia használatával is, amely képes a gyengén törölt fájlokat megjelenítő minták olvasására mágneses adathordozón. A SDelete (Biztonságos törlés) egy ilyen alkalmazás. A SDelete használatával biztonságosan törölheti a meglévő fájlokat, valamint biztonságosan törölheti a lemez nem áthelyezett részeiben található fájladatokat (beleértve a már törölt vagy titkosított fájlokat is). A SDelete implementálja a Védelmi Minisztérium standard DOD 5220.22-M törlési és fertőtlenítési szabványát, hogy biztos legyen abban, hogy a SDelete-vel való törlés után a fájladatok örökre elvesznek. Vegye figyelembe, hogy a SDelete biztonságosan törli a fájladatokat, de a szabad lemezterületen található fájlneveket nem.

A SDelete használata

A SDelete egy parancssori segédprogram, amely számos lehetőséget vesz igénybe. Bármely adott használat esetén lehetővé teszi egy vagy több fájl és/vagy könyvtár törlését, vagy a logikai lemez szabad területének megtisztítására. A SDelete a könyvtár vagy a fájlkijelölő részeként fogadja el a helyettesítő karaktereket.

Használat:

sdelete [-p passes] [-r] [-s] [-q] [-f] <file or directory [...]>
sdelete [-p passes] [-q] [-z|-c] <drive letter [...]>
sdelete [-p passes] [-q] [-z|-c] <physical disk number [...]>
Parameter Leírás
-C Szabad terület megtisztítva.
-F Kényszerítse ki a csak betűket tartalmazó argumentumokat, hogy lemez helyett fájlként/könyvtárként legyenek kezelve.
Nem kötelező, ha az argumentum más karaktereket (például elérési útelválasztókat vagy fájlkiterjesztéseket) tartalmaz.
-P A felülírásos átírások számát adja meg (az alapértelmezett érték 1).
-K Csendes mód.
-R Csak olvasható attribútum eltávolítása.
-S Ismétlődnek az alkönyvtárak.
-Z Nulla szabad terület (jó a virtuális lemezek optimalizálásához).
-nobanner Ne jelenítse meg az indítási szalagcímet és a szerzői jogi üzenetet.
  • A lemezeket nem szabad kötetekkel megtisztítani.
  • A meghajtóbetűjelek esetében például a következőket kell tartalmaznia:D::

A SDelete működése

A speciális attribútumokkal nem rendelkező fájlok biztonságos törlése viszonylag egyszerű: a biztonságos törlési program egyszerűen felülírja a fájlt a biztonságos törlési mintával. A trükkösebb a Windows NT/2K tömörített, titkosított és ritkán tárolt fájlok biztonságos törlése, valamint a lemezmentes helyek biztonságos tisztítása.

A tömörített, titkosított és ritkított fájlrendszert az NTFS kezeli 16 fürtblokkban. Ha egy program egy ilyen fájl egy meglévő részére ír, az NTFS új helyet foglal le a lemezen az új adatok tárolásához, és az új adatok megírása után felszabadítja a fájl által korábban elfoglalt fürtöket. Az NTFS ezt a konzervatív megközelítést az adatintegritással kapcsolatos okokból, a tömörített és ritkán használt fájlok esetében pedig a meglévőnél nagyobb foglalás esetén alkalmazza (az új tömörített adatok nagyobbak, mint a régi tömörített adatok). Így az ilyen fájlok felülírása nem sikerül törölni a fájl tartalmát a lemezről.

Az ilyen típusú fájlok kezeléséhez a SDelete a töredezettségmentesítési API-ra támaszkodik. A töredezettségmentesítési API használatával a SDelete pontosan meg tudja határozni, hogy a lemezen lévő fürtök mely fürtöket foglalják el a tömörített, ritka és titkosított fájlokhoz tartozó adatok. Ha az SDelete tudja, hogy mely fürtök tartalmazzák a fájl adatait, megnyithatja a lemezt nyers hozzáférésre, és felülírhatja ezeket a fürtöket.

A szabad terület tisztítása újabb kihívást jelent. Mivel a FAT és az NTFS nem biztosít lehetőséget az alkalmazások számára a szabad terület közvetlen kezelésére, a SDelete két lehetőség közül választhat. Az első az, hogy a tömörített, ritka és titkosított fájlokhoz hasonlóan megnyithatja a lemezt a nyers hozzáféréshez, és felülírhatja a szabad területet. Ez a megközelítés nagy problémát okoz: még akkor is, ha a SDelete kódolása teljes mértékben képes az NTFS- és FAT-meghajtók szabad területrészeinek kiszámítására (ami nem triviális), akkor is fennáll annak a kockázata, hogy ütközés történik a rendszeren zajló aktív fájlműveletekkel. Tegyük fel például, hogy a SDelete megállapítja , hogy egy fürt ingyenes, és éppen abban a pillanatban a fájlrendszer-illesztőprogram (FAT, NTFS) úgy dönt, hogy lefoglalja a fürtöt egy másik alkalmazás által módosított fájlhoz. A fájlrendszer-illesztőprogram az új adatokat a fürtbe írja, majd megjelenik a SDelete , és felülírja a frissen írt adatokat: a fájl új adatai eltűntek. A probléma még rosszabb, ha a fürt a fájlrendszer metaadataihoz van lefoglalva, mivel a SDelete megrongálja a fájlrendszer lemezen lévő struktúráját.

A második megközelítés, és az egyetlen SDelete , az, hogy közvetetten felülírja a szabad helyet. Először is a SDelete lefoglalja a legnagyobb fájlt. A SDelete ezt nem gyorsítótárazott fájl I/O használatával végzi, így az NT fájlrendszer gyorsítótárának tartalma nem lesz kidobva, és a SDelete szóköz-gyűjtési fájljával társított haszontalan adatokra cserélődik. Mivel a nem gyorsítótárazott fájl I/O-jának szektor (512 bájt) igazításával kell rendelkeznie, előfordulhat, hogy a SDelete-fájlhoz még akkor sem lesz lefoglalt hely, ha az SDelete nem tudja tovább növelni a fájlt. Ha a SDelete legközelebb lefoglalja a legnagyobb gyorsítótárazott fájlt, a SDelete lefoglalja a fennmaradó helyet. Mindkét fájl esetében a SDelete biztonságos felülírást végez, biztosítva, hogy a korábban szabad lemezterület biztonságosan megtisztítva legyen.

Az NTFS-meghajtókon a SDelete feladata nem feltétlenül halad át, miután lefoglalta és felülírta a két fájlt. Az SDelete-nek az NTFS MFT (master file table) meglévő ingyenes részeit is ki kell töltenie az MFT-rekordba illeszkedő fájlokkal. Az MFT-rekordok általában 1KB méretűek, és a lemez minden fájlja vagy könyvtára legalább egy MFT rekordot igényel. A kis méretű fájlok teljes egészében az MFT-rekordjukon belül vannak tárolva, míg a rekordon belül nem férő fájlok az MFT-n kívüli fürtök. Az összes SDelete-nek gondoskodnia kell az ingyenes MFT-területről, a legnagyobb fájl lefoglalása – ha a fájl egy MFT-rekord NTFS-rekordjában az összes rendelkezésre álló helyet elfoglalja, megakadályozza a fájl méretének növekedését, mivel a lemezen nincsenek szabad fürtök (ezeket a korábban lefoglalt két SDelete fájl tárolja). A SDelete ezután megismétli a folyamatot. Ha a SDelete már nem is tud új fájlt létrehozni, tudja, hogy az MFT összes korábban ingyenes rekordja teljesen megtelt biztonságosan felülírt fájlokkal.

A törölt fájlok fájlneveinek felülírásához az SDelete 26 alkalommal nevezi át a fájlt, minden alkalommal, amikor a fájl nevének minden karakterét egy egymást követő betűrendes karakterre cseréli. A "foo.txt" első átnevezése például az "AAA" lesz. AAA".

A SDelete azért nem törli biztonságosan a fájlneveket a lemezterület megtisztításakor, mert a törlésük a címtárstruktúrák közvetlen kezelését igényli. A címtárstruktúra rendelkezhet törölt fájlneveket tartalmazó szabad területtel, de a szabad könyvtárterület más fájlok számára nem foglalható le. Ezért a SDelete nem tudja lefoglalni ezt a szabad helyet, hogy biztonságosan felülírhassa azt.

DownloadSDelete letöltése (304 KB)

Futtatás:

  • Ügyfél: Windows 10 vagy újabb.
  • Kiszolgáló: Windows Server 2012 és újabb.
  • Nano Server: 2016 és újabb.