SDelete v2.05

Door Mark Russinovich

Gepubliceerd: 29 september 2023

DownloadSDelete downloaden(304 KB)

Introductie

Een functie van Windows NT/2000's (Win2K) C2-compliance is dat het object hergebruikbeveiliging implementeert. Dit betekent dat wanneer een toepassing bestandsruimte of virtueel geheugen toewijst, er geen gegevens kunnen worden weergegeven die eerder zijn opgeslagen in de resources die Windows NT/2K eraan toewijst. Windows NT vult het geheugen op nul en nullen de sectoren op schijf waarop een bestand wordt geplaatst voordat een van de typen resources aan een toepassing wordt gepresenteerd. Het hergebruik van objecten bepaalt echter niet dat de ruimte die een bestand in beslag neemt voordat het wordt verwijderd, nul wordt. Dit komt doordat Windows NT/2K is ontworpen met de veronderstelling dat het besturingssysteem de toegang tot systeembronnen beheert. Wanneer het besturingssysteem echter niet actief is, is het mogelijk om onbewerkte schijfeditors en herstelprogramma's te gebruiken om gegevens weer te geven en te herstellen die de toewijzing van het besturingssysteem ongedaan is gemaakt. Zelfs wanneer u bestanden versleutelt met Het EncryptIng File System (EFS) van Win2K, blijven de oorspronkelijke niet-versleutelde bestandsgegevens van een bestand achter op de schijf nadat een nieuwe versleutelde versie van het bestand is gemaakt.

De enige manier om ervoor te zorgen dat verwijderde bestanden, evenals bestanden die u versleutelt met EFS, veilig zijn voor herstel, is het gebruik van een beveiligde verwijdertoepassing. Veilige verwijdertoepassingen overschrijven de on-schijfgegevens van een verwijderd bestand met behulp van technieken die worden getoond om schijfgegevens onherstelbaar te maken, zelfs met behulp van hersteltechnologie die patronen in magnetische media kan lezen die zwak verwijderde bestanden onthullen. SDelete (Secure Delete) is een dergelijke toepassing. U kunt SDelete beide gebruiken om bestaande bestanden veilig te verwijderen, en om alle bestandsgegevens die aanwezig zijn in de niet-toegewezen delen van een schijf veilig te wissen (inclusief bestanden die u al hebt verwijderd of versleuteld). SDelete implementeert het Ministerie van Defensie voor het wissen en opschonen van standaard DOD 5220.22-M, zodat u er zeker van bent dat uw bestandsgegevens voorgoed zijn verwijderd met SDelete. SDelete verwijdert veilig bestandsgegevens, maar geen bestandsnamen die zich in vrije schijfruimte bevinden.

SDelete gebruiken

SDelete is een opdrachtregelprogramma dat een aantal opties gebruikt. In elk gegeven gebruik kunt u een of meer bestanden en/of mappen verwijderen of de vrije ruimte op een logische schijf opschonen. SDelete accepteert jokertekens als onderdeel van de map of bestandsaanduiding.

Gebruik:

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 Omschrijving
-C Maak vrije ruimte schoon.
-F Forceer argumenten die alleen letters bevatten die moeten worden behandeld als een bestand/map in plaats van een schijf.
Niet vereist als het argument andere tekens bevat (bijvoorbeeld padscheidingstekens of bestandsextensies).
-P Hiermee geeft u het aantal overschrijvingspassen op (standaard is 1).
-V Stille modus.
-R Kenmerk Alleen-lezen verwijderen.
-S Submappen recurse.
-Z Geen vrije ruimte (goed voor optimalisatie van virtuele schijven).
-nobanner Geef de opstartbanner en het copyrightbericht niet weer.
  • Schijven mogen geen volumes hebben om te worden opgeschoond.
  • Neem bijvoorbeeld D:voor stationsletters :op.

Hoe SDelete werkt

Het veilig verwijderen van een bestand met geen speciale kenmerken is relatief eenvoudig: het secure delete-programma overschrijft het bestand gewoon met het patroon beveiligd verwijderen. Wat lastiger is, is het veilig verwijderen van windows NT/2K gecomprimeerde, versleutelde en geparseerde bestanden, en het veilig opschonen van vrije schijfruimte.

Gecomprimeerde, versleutelde en sparse worden beheerd door NTFS in 16 clusterblokken. Als een programma naar een bestaand gedeelte van een dergelijk bestand NTFS schrijft, wijst nieuwe ruimte toe op de schijf om de nieuwe gegevens op te slaan en nadat de nieuwe gegevens zijn geschreven, wordt de toewijzing ongedaan gemaakt van de clusters die eerder door het bestand zijn bezet. NTFS gebruikt deze conservatieve benadering om redenen met betrekking tot gegevensintegriteit en in het geval van gecomprimeerde en geparseerde bestanden, in het geval van een nieuwe toewijzing groter is dan wat er bestaat (de nieuwe gecomprimeerde gegevens zijn groter dan de oude gecomprimeerde gegevens). Het overschrijven van een dergelijk bestand zal dus niet slagen in het verwijderen van de inhoud van het bestand van de schijf.

Voor het afhandelen van deze typen bestanden is SDelete afhankelijk van de defragmentatie-API. Met behulp van de defragmentatie-API kan SDelete precies bepalen welke clusters op een schijf worden bezet door gegevens die behoren tot gecomprimeerde, geparseerde en versleutelde bestanden. Zodra SDelete weet welke clusters de gegevens van het bestand bevatten, kan deze de schijf openen voor onbewerkte toegang en deze clusters overschrijven.

Het schoonmaken van vrije ruimte biedt nog een uitdaging. Omdat FAT en NTFS geen middelen bieden voor een toepassing om rechtstreeks vrije ruimte te adresseren, heeft SDelete een van de twee opties. Het eerste is dat het, net als voor gecomprimeerde, geparseerde en versleutelde bestanden, de schijf kan openen voor onbewerkte toegang en de vrije ruimte kan overschrijven. Deze aanpak lijdt aan een groot probleem: zelfs als SDelete is gecodeerd om volledig in staat te zijn om de vrije ruimtegedeelten van NTFS- en FAT-schijven te berekenen (iets dat niet triviaal is), zou het risico lopen op conflicten met actieve bestandsbewerkingen die plaatsvinden op het systeem. Stel dat SDelete bijvoorbeeld bepaalt dat een cluster gratis is en op dat moment besluit het bestandssysteemstuurprogramma (FAT, NTFS) het cluster toe te wijzen aan een bestand dat door een andere toepassing wordt gewijzigd. Het bestandssysteemstuurprogramma schrijft de nieuwe gegevens naar het cluster en vervolgens komt SDelete langs en overschrijft de nieuw geschreven gegevens: de nieuwe gegevens van het bestand zijn verdwenen. Het probleem is nog erger als het cluster wordt toegewezen voor metagegevens van het bestandssysteem, omdat SDelete de on-diskstructuren van het bestandssysteem zal beschadigen.

De tweede benadering, en de ene SDelete neemt, is het indirect overschrijven van vrije ruimte. Eerst wijst SDelete het grootste bestand toe dat het kan. SDelete doet dit met behulp van niet-in de cache opgeslagen bestands-I/O, zodat de inhoud van de NT-bestandssysteemcache niet wordt weggegooid en vervangen door nutteloze gegevens die zijn gekoppeld aan het ruimte-hogging-bestand van SDelete. Omdat I/O-bestanden die niet in de cache zijn opgeslagen, moeten worden uitgelijnd (512-byte), is er mogelijk nog een restruimte die niet is toegewezen voor het SDelete-bestand , zelfs als SDelete het bestand niet verder kan uitbreiden. Als u de resterende ruimte wilt pakken, wijst SDelete vervolgens het grootste bestand in de cache toe dat het kan. Voor beide bestanden voert SDelete een veilige overschrijfbewerking uit, zodat alle schijfruimte die eerder vrij was veilig wordt opgeschoond.

Op NTFS-stations is de taak van SDelete niet noodzakelijkerwijs door nadat deze de twee bestanden toewijst en overschrijft. SDelete moet ook alle bestaande vrije delen van de NTFS MFT (Master File Table) vullen met bestanden die binnen een MFT-record passen. Een MFT-record is doorgaans 1 kB groot en voor elk bestand of elke map op een schijf is ten minste één MFT-record vereist. Kleine bestanden worden volledig in hun MFT-record opgeslagen, terwijl bestanden die niet binnen een record passen, clusters buiten de MFT worden toegewezen. Alle SDelete moet ervoor zorgen dat de vrije MFT-ruimte wordt toegewezen aan het grootste bestand dat het kan- wanneer het bestand alle beschikbare ruimte in een MFT-record NTFS in beslag neemt, voorkomt dat het bestand groter wordt, omdat er geen vrije clusters meer op de schijf zijn (ze worden bewaard door de twee bestanden die SDelete eerder toegewezen). SDelete herhaalt vervolgens het proces. Wanneer SDelete geen nieuw bestand meer kan maken, weet het dat alle eerder gratis records in de MFT volledig zijn gevuld met veilig overschreven bestanden.

Als u bestandsnamen wilt overschrijven van een bestand dat u verwijdert, wijzigt SDelete het bestand 26 keer, telkens wanneer u elk teken van de naam van het bestand vervangt door een opeenvolgend alfabetisch teken. De eerste naam van 'foo.txt' zou bijvoorbeeld 'AAA' zijn. AAA".

De reden dat SDelete bestandsnamen niet veilig verwijdert bij het opschonen van vrije schijfruimte is dat het verwijderen van deze bestanden directe manipulatie van mapstructuren vereist. Mapstructuren kunnen vrije ruimte hebben met verwijderde bestandsnamen, maar de vrije mapruimte is niet beschikbaar voor toewijzing aan andere bestanden. Daarom heeft SDelete geen manier om deze vrije ruimte toe te wijzen, zodat deze veilig kan worden overschreven.

DownloadSDelete downloaden(304 KB)

Wordt uitgevoerd op:

  • Client: Windows 10 en hoger.
  • Server: Windows Server 2012 en hoger.
  • Nano Server: 2016 en hoger.