Dateianalyse

Wenn wir Privatpersonen und die lokalen Festplatten erst einmal außen vor lassen, dann ist das interessanteste Ziel der Dateiserver einer Firma, auf der möglichst viele Personen gemeinsam mit Dateien arbeiten. Natürlich gibt es hier unterschiedliche Bereiche (Shares) und abgestuften Berechtigungen. Aber wenn wir einmal die Realität betrachten, dann gibt es oft wenige dieser Bereiche mit einer weit verzweigten Verzeichnisstruktur, in der es nicht allzu viele Berechtigungen gibt. Es gibt also recht viele Dateien sie als Anwender erreichen und ändern können. Das faszinierende dabei ist, dass viel Dateien schon recht "alt" sind und eigentlich auch gar nicht mehr geändert werden müssten. Niemand geht aber hin uns ändert die Einstellungen dieser Dateien derart, dass sie auch wirklich nicht mehr geändert werden können.

Um das Potential zu ermitteln, habe ich mir ein kleines Powershell-Script geschrieben was mit "Get-ChildItem" alle Dateien aufliest und die relevanten Eigenschaften in eine CSV-Datei extrahiert. Die Spalten sind:

Spalte Wert

Name

Dateiname mit Erweiterung

Extension

Extension (mit Punkt). Einfach um z.B. nach Typen zu filtern oder zu gruppieren, z.B. wie viele Dateien sind PDF-Dateien und wie viel Platz belegen diese. Oder eine Suche nach COM, EXE,BAT im Datenverzeichnis

Directory

Der Verzeichnispfad, in der diese Datei liegt

Length

Größe der Datei in Bytes

Sizegroup

10er Logarithmus der Größe, z.B.: 3 = 100-999 Bytes, 4= 1000-9999 Bytes etc. Damit lassen sich schon Gruppen von Größen zusammenfassen und filtern.

LastWriteTimeUTC

Zeitstempel, wann die Datei das letzte Mal beschrieben wurde.

Age

Das Alter in Tagen ausgehend von heute. Viele Auswerteprogramme können mit "integer"-Werten besser umgehen als mit Strings mit einem Zeitstempel

Agegroup

Vorklassifizierung des Alters:

  • 0=0-7 Tage
  • 1=8-30 Tage
  • 2=31-365 Tage
  • 3=älter als ein Jahr

Damit sind erste Auswertungen schon einmal schnell möglich

cryptoprotect-report-filesstats.ps1
beim Download bitte als "report-filesstats.ps1" abspeichern

Ein Verzeichnis können Sie dann wie folgt analysieren:

.\report-filesstats.ps1 `
   -basepath C:\group `
   | export-csv `
      -path c:\temp\report.csv `
      -notypeinformation

Die Analyse einer Dateistruktur mit >100.000 Dateien auf einer flotten lokalen SSD dauert weniger als eine Minute. Allerdings darf die Verzeichnisstruktur nur mehr als 260 Zeichen lang sein. Sie sollten aber bei der Analyse durchaus mit "Sonderfällen" rechnen. Ich konnte es nicht mehr nachvollziehen aber es gab vier Dateien, die ziemlich weit in der Zukunft beschrieben sein sollten.

Genauso gab es Dateien, die 1980 erstellt sein wollten. Ich kann aber auch gut sehen, dass irgendwann in 2003 eine größere Anzahl von Dateien anscheinend neu geschrieben wurden ( Ein Restore?).

Die CSV-Datei kann man natürlich auch per Powershell auswerten. Über die AgeGroup bekommen Sie die genauen Zahlen.

PS C:\> import-csv c.\temp\report.csv | group agegroup -NoElement | sort count  | ft -AutoSize

 Count Name
 ----- ----
   121 0
   702 1
  5669 2
108911 3

Gerade mal 121 Dateien sind in der letzten Wochen geschrieben worden und bezogen auf den Monat sind des 121+702 = 823 Dateien. Dem stehen hunderttausend Dateien gegenüber, die über ein Jahr nicht mehr angefasst wurden. Wer mag, dann die Daten natürlich auch nutzen, um eine Auswertung nach Größe der oder Erweiterung zu machen. Hier die passenden Aufrufe ohne Ergebnisse:

# Ausgabe nach Größengruppe
PS C:\> import-csv c.\temp\report.csv | group sizegroup -NoElement | sort name

# Ausgabe der Häufigkeit von Extensionas
PS C:\> import-csv c.\temp\report.csv | group extension -NoElement  | sort count | select -last 10

Ich habe aber einen anderen Weg gewählt: Die Daten habe ich in Power Bi Desktop ausgewertet. Die Anzahl nach dem LastWriteTimeUTC ist schon interessant.

Die AgeGroup Gruppiert die Dateien nach dem Alter mit der Bedeutung

  • 0=0-7 Tage
  • 1=8-30 Tage
  • 2=31-365 Tage
  • 3=älter als ein Jahr

Hier st gut zu sehen, dass auf diesem Share mit über 100 Tausend Dateien die meisten älter als 1 Jahr sind:

 

Es ist unzweifelhaft zu sehen, dass es sehr viele Dateien gibt, die schon lange nicht mehr geschrieben wurden. und vermutlich auch nie mehr beschrieben werden. Das sind 100%-Kandidaten, den Benutzer das Schreibrecht auch einfach zu entziehen, damit kein Schadcode diese schützenswerten Daten mehr beschädigen kann.

Da muss ich die Frage stellen, warum es dann überhaupt noch erforderlich sein sollte, solche Dateien beschreibbar zu lassen?. Nur damit ein Crypto-Trojaner die Dateien überschreiben können oder ein unbedarfter Benutzer diese vielleicht löscht?