Automatisches Prüfen von Dateien in Downloads-Ordner

Mometan macht ja ein Crypto-Trojaner die Runde.

Clam AntiVirus
Flickr: Clam AntiVirus
von Linux Screenshots (CC BY)

Die nachfolgende Anleitung eines Gentoo-Nutzers sollte auch auf anderen GNU/Linux-Distributionen funktionieren. Sie überwacht den Downloads-Ordner und scannt automatisch Dateien auf Viren mit ClamAV. Gefunde Fehler gehen auf meine Kappe 😉

Ich nutze Linux schon seit ungefähr einem Jahrzehnt und hab mir nie übermäßig Gedanken über Viren auf meiner Maschine gemacht. Ich erhalte allerdings auch Dateien von Nutzern, die Windows und Mac OS verwenden und diese könnten Viren für Windows oder Mac OS enthalten. Als eine Geste des Entgegenkommens und Unterstützung für andere ergibt es Sinn, diese Dateien zu scannen, bevor sie weiter geteilt fehlen. Daneben benutze ich auch einige Windows-Anwendungen unter WINE, so dass ich schon deswegen erhalte Dateien nach Windows-Viren durchsuchen sollte, wenn ich vorhabe, sie mit einer Windows-Anwendung unter WINE zu verwenden.

Externe Dateien könnten über USB-Sticks, Memory Cards, CDs, E-Mails, meinem Dropbox-Verzeichnis und Downloads aus dem Web auf meine Gentoo Linux-Installation gelangen. In diesem Artikel werde ich mich auf die letzten drei Möglichkeiten konzentrieren. Alle von mir genutzten E-Mail-Provider scannen bereits meine E-Mails nach Viren auf ihrem Server, bevor ich sie überhaupt auf den E-Mail-Client meines Laptops herunterladen kann (das ist heutzutage Standard), so dass man sich insbesondere über E-Mails nicht Gedanken machen muss.

Ich hatte ClamAV und seine GUI (ClamTk) schon lange installiert. Während ClamTk so eingestellt werden kann, dass es täglich Viren-Signaturen herunterlädt und das eigene $HOME-Verzeichnis scannt, kümmere ich mich normalerweise selber darum. Andererseits sehe ich einen gewissen Vorteil darin, ClamAV automatisch aufzurufen, wenn ich eine Datei aus dem Internet herunterlade, so dass ich beschloss, folgendes zu tun …

Automatisches Scannen einer mit einem Browser heruntergeladenen Datei

Ich benutze Firefox zum Surfen und hab ihn so konfiguriert, dass er Dateien in das Verzeichnis /home/fitzcarraldo/Downloads/ herunterlädt. Ich beschloss, das Downloads-Verzeichnis auf neue Dateien hin überwachen zu lassen. Weil ich ein ext4-Dateisystem benutze, benutze ich dafür inotify, genauer gesagt den inotifywait-Befehl, welcher mit dem Paket sys-fs/inotify-tools bereitgestellt wird.

Es ist überraschend einfach, ein Shell-Skript zu erstellen, welches Dateien aufspürt, die in ein Verzeichnis heruntergeladen werden. Das folgende Skript, wenn es permanent in einem Terminal läuft, würde alle Dateien in meinem /home/fitzcarraldo/Downloads-Verzeichnis entdecken, diese mit ClamAV scannen und eine Meldung im Terminal ausgeben:

#!/bin/bash

echo
DIR=$HOME/Downloads

inotifywait -q -m -e create --format '%w%f' $DIR | while read FILE
do
     date
     echo "Datei $FILE wurde erkannt. Scanne es jetzt nach Viren ..."
     clamscan $FILE
     echo
done

Ein nützliches Skript müsste etwas anspruchsvoller denn das obige sein, denn eine bestehende Datei in einem Verzeichnis könnte durch eine andere mit dem selben Namen überschrieben oder geöffnet und verändert werden. Darüberhinaus müsste das obige Skript ständig in einem offenen Terminal laufen. Daher habe ich ein Skript geschrieben, das im Hintergrund ausgeführt wird und einen GUI-Dialog öffnet, welches die Ergebnisse des Virenscans enthält, wenn es eine neue oder geänderte Datei im Downloads-Verzeichnis entdeckt. Weil dieser Laptop KDE4 benutzt, verwende ich KDialog, aber ich hätte genauso gut auch Zenity benutzen können. Das fertige Skript sieht so aus:

#!/bin/bash

DIR=$HOME/Downloads

# Lösche alte Log-Datei
rm $HOME/virus-scan.log 2> /dev/null

inotifywait -q -m -e close_write,moved_to --format '%w%f' $DIR | while read FILE
do
     # Prüfe auf nicht-null, ansonsten könnten Befehle wiederholt werden
     if [ -s $FILE ]; then
          date > $HOME/virus-scan.log
          clamscan $FILE > $HOME/virus-scan.log
          kdialog --title "Viren-Scan von $FILE" --msgbox "$(cat $HOME/virus-scan.log)"
     fi
done

Wenn ich jetzt eine Datei im Firefox herunterlade, öffnet sich ein Fenster mit etwa folgendem Inhalt:

Viren-Scan von /home/fitzcarraldo/Downloads/eicar_com.zip – KDialog

Fri 19 Feb 23:42:02 GMT 2016
/home/fitzcarraldo/Downloads/eicar_com.zip: Eicar-Test-Signature FOUND

———– SCAN SUMMARY ———–
Known viruses: 4259980
Engine version: 0.98.7
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 4.595 sec (0 m 4 s)

Wie du oben sehen kannst, hat ClamAV einen Virus in der Datei eicar_com.zip entdeckt, die ich von der European Expert Group for IT Security-Webseite (ursprünglich ‘European Institute for Computer Antivirus Research’) heruntergeladen habe. Tatsächlich beinhaltet das Programm eicar.com keinen echten Virus; es wurde so konstruiert, dass es eine bekannte Signatur enthält, die Hersteller von Viren-Scanner und Nutzer verwenden können, um Anti-Viren-Software zu testen. Du kannst mehr Virus-Testdateien auf der EICAR-Webseite erfahren.

Natürlich muss ich, wenn ich eine andere Anwendung als Firefox zum Herunterladen von Dateien benutze, sicher stellen, dass sie diese im entsprechenden Verzeichnis speichern, damit das Skript sie finden und scannen kann.

fitzcarraldo@clevow230ss ~ $ cd Downloads/
fitzcarraldo@clevow230ss ~/Downloads $ youtube-dl -o Carnavalito.mp4 -f 18 https://www.youtube.com/watch?v=ZDUL3w7zFD4
ZDUL3w7zFD4: Downloading webpage
ZDUL3w7zFD4: Downloading video info webpage
ZDUL3w7zFD4: Extracting video information
ZDUL3w7zFD4: Downloading MPD manifest
[download] Destination: Carnavalito.mp4
[download] 100% of 16.61MiB in 00:05

Jetzt hab ich ein Shell-Skript, das ein Fenster öffnet, dass mir mitteilt, ob eine Datei einen Virus enthält, wenn ich sie in $HOME/Downloads/ ablege. Aber ich würde gerne, dass es automatisch startet, wenn ich mich anmelde. Deswegen, weil ich KDE 4 benutze, gehe ich in ‘Systemverwaltung’ > ‘Starten und Beenden’ und klicke im Reiter ‘Bei der Anmeldung’ auf ‘Skript hinzufügen …’ und gebe den Pfad zu meinem Shell-Skript an (ich hab ‘einen SymLink erstellen’ ausgewählt gelassen). Jetzt wird jedes Mal, wenn ich KDE verwende und eine Datei (automatisch oder manuell) in $HOME/Downloads/ abgelegt wird, diese automatisch nach Viren gescannt und das Ergebnis in einem sich öffnenden Fenster ausgegeben.

Weil mein Laptop nicht ständig mit dem Internet verbunden ist, bevorzuge ich es, die ClamAV Virus-Signaturen-Datenbank manuell zu aktualisieren, was ich entweder über die ClamTk GUI oder über die Kommandozeile mittels freshclam erledige:

fitzcarraldo@clevow230ss ~ $ su
Password:
clevow230ss fitzcarraldo # freshclam
ClamAV update process started at Sat Feb 20 10:51:01 2016
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.98.7 Recommended version: 0.99
DON'T PANIC! Read http://www.clamav.net/support/faq
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-21375.cdiff [100%]
Downloading daily-21376.cdiff [100%]
Downloading daily-21377.cdiff [100%]
Downloading daily-21378.cdiff [100%]
Downloading daily-21379.cdiff [100%]
Downloading daily-21380.cdiff [100%]
Downloading daily-21381.cdiff [100%]
Downloading daily-21382.cdiff [100%]
Downloading daily-21383.cdiff [100%]
Downloading daily-21384.cdiff [100%]
Downloading daily-21385.cdiff [100%]
Downloading daily-21386.cdiff [100%]
Downloading daily-21387.cdiff [100%]
Downloading daily-21388.cdiff [100%]
Downloading daily-21389.cdiff [100%]
Downloading daily-21390.cdiff [100%]
Downloading daily-21391.cdiff [100%]
daily.cld updated (version: 21391, sigs: 1850214, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (4274486 signatures) from db.UK.clamav.net (IP: 129.67.1.218)
WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.sock: No such file or directory

Quelle: Automatically detecting files placed in my Downloads directory in Gentoo Linux and scanning them for viruses

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s