Don't understand german? Read or subscribe to my english-only feed.

Schädlingsbekämpfung mit Linux

Gegegeben: infizierte Dateien auf einer NTFS-Partition
Todo: infizierte Dateien ohne Zuhilfenahme von Windows/BartPE entfernen

Erster Schritt: grml booten. Einbinden der verseuchten Partition (‘mount /mnt/hda1’). Nun aktualisiert man die Datenbank von clamav und und startet anschliessend den Scanvorgang:

# freshclam
# clamscan -r --log=$HOME/clamscan.report --infected /mnt/hda1

Gegen captive-ntfs bin ich allergisch, also muss Ersatz her: ntfscp – “overwrite file on an NTFS volume”.

Um “NTFS-fs warning (device hda1): ntfs_setattr(): Changes in inode size are not supported yet, ignoring.” zu vermeiden, überschreiben wir die Originaldatei mit einer genullten Datei gleicher Größe. Mein 2-Minuten-Hack um eine Datei gewünschter Größe zu bekommen:

#!/bin/sh
if [ $# -eq 1 ] ; then
  SIZE=$(/usr/bin/stat -c '%s' $1)
  echo "creating /tmp/empty_$SIZE with size $SIZE"
  dd if=/dev/zero of=/tmp/empty_$SIZE count=1 bs=$SIZE
  echo "
Now run something like:

ntfscp /dev/ice /tmp/empty_$SIZE <file_to_overwrite>

Exiting."
else
  echo "Usage: $0 <filename>"
  exit 1
fi

Angewendet auf die einzelnen Dateien, die clamscan als infiziert gemeldet hat, bekommt man dann in /tmp leere Dateien, die genau der gewünschten Dateigröße entsprechen. Nun also noch ein:

ntfscp /dev/hda1 /tmp/empty_passende_dateigroesse_fuer_datei_zum_loeschen ordner/datei_zum_loeschen

Schon ist die infizierte Datei ausser Gefecht gesetzt. Word fangt mit einer genullten .doc-Datei nichts mehr an:

screenshot

Wer eine Warnung “Volume is dirty” bekommt (das passiert vornehmlich dann, wenn es die Systempartition ist), sollte – wie empfohlen – chkdsk auf die Partition loslassen. Wenn das nicht möglich ist, muss halt die force-Option von ntfscp ran. Aber wie bei jeder Dateisystem-Operation, sollte man vor dem Einsatz auf Produktivdaten natürlich ein Backup ziehen und das Ganze erstmal in einem Testlauf probieren.

Schön wäre jetzt natürlich ein Skript, das einen clamscan-Report einliest und ntfscp automatisch auf die infizierten Dateien anwendet. ;-) Mit Kernel 2.6.15 soll übrigens extended write support für NTFS verfügbar sein.

3 Responses to “Schädlingsbekämpfung mit Linux”

  1. Doomshammer Says:

    Cooler Tipp! Danke Mika! :)

  2. Karl Says:

    Sowas solltet ihr für grml in einer Sammlung wie zB “Nice things that can be accomplished using grml…” oder so archivieren bzw. mit grml mit ausliefern. Solche FAQs/HowTos kann man immer brauchen (und meistens genau dann, wenn man kein Internet hat).

    PS: btw, mit “infizierte Dateien überschreiben” habe ich leider schon sehr schlechte Erfahrung gemacht, als ein Wurm auch einige wichtige Systemdateien überschrieben hat …

  3. mika Says:

    @karl: “Nice things that can be accomplished using grml” ist schon in Arbeit. ;-) Nennt sich grml-tips: “grml-tips $KEYWORD” und du bekommst alle Tipps/Hints zu $KEYWORD gelistet. Kannst auch schon vor grml 0.6 bekommen: ‘apt-get install grml-tips’. Ist schon ein bisserl was beisammen, contributions sind aber natürlich willkommen!

    @”wichtige Systemdateien überschreiben:” deswegen hab ich es ja nicht automatisiert gemacht. ;-) Es gibt BTW auch wichtige Systemdateien, die man durchaus überschreiben darf und die Windows (aktuelles NT vorausgesetzt) dann selbst wiederherstellen kann. Man muß halt wissen, was man angreifen darf und was nicht. Und im Notfall fährt man halt mit einer Reparaturinstallation drüber.

    mfg,
    -mika-