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:
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.
November 29th, 2005 at 18:56
Cooler Tipp! Danke Mika! :)
December 13th, 2005 at 10:45
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 …
December 13th, 2005 at 12:09
@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-