Erpressungs-Trojaner wie Locky aussperren
Ein Heise-Admin hat mit wenigen Handgriffen einen zusätzlichen Schutz für unsere internen Datei-Server gebaut. Der sperrt via fail2ban infizierte Clients aus, bevor sie großen Schaden anrichten können.
Erste Verteidigungslinie gegen Erpressungs-Trojaner wie Locky sind natürlich möglichst aktuelle Backups und sinnvoll eingeschränkte Benutzerrechte. Die kann und soll der folgende Hack nicht ersetzen. Wer sich darum noch nicht gekümmert hat, sollte das lieber jetzt in Angriff nehmen.
Die Grundidee der folgenden Anleitung ist es, auf bestimmte Aktivitäten der Erpressungs-Trojaner zu reagieren. Prädestiniert dafür ist das Tool fail2ban, das eigentlich dazu dient, Rechnern, die durch massiv gehäufte Passwort-Eingaben auffallen, den Zugang zur Login-Seite zu sperren. Dazu überwacht es Log-Dateien auf Einträge zu fehlgeschlagenen Login-Versuchen und reagiert mit iptables-Block-Regeln.
Samba protokolliert
Wenn man dem Samba-Server beibringt, Schreib und Umbenenn-Aktionen zu protokollieren, kann man fail2ban auch auf Locky-Aktivitäten ansetzen und infizierte Rechner aussperren, bevor sie großen Schaden anrichten können.
Das erledigen folgenden Zeilen in der /etc/samba/smb.conf in der Sektion [global]
full_audit:failure = none
full_audit:success = pwrite write rename
full_audit:prefix = IP=%I|USER=%u|MACHINE=%m|VOLUME=%S
full_audit:facility = local7
full_audit:priority = NOTICE
und bei jedem zu überwachenden [Volume]
vfs objects = full_audit
Das führt dann zu solchen Zeilen im Log:
2016-02-29T11:07:36.162528+01:00 hort
smbd_audit:IP=1.2.3.4|USER=dha|MACHINE=win7dha|VOLUME=dha|pwrite|ok|bla/Q-Dir_Installer.zip
2016-02-29T11:08:43.945654+01:00 hort
smbd_audit:IP=1.2.3.4|USER=dha|MACHINE=win7dha|VOLUME=dha|pwrite|ok|bla/ganzböserverschlüsselungstrojaner.locky
Jetzt gilt es nur noch, den Wachhund fail2ban abzurichten. Das geht etwa unter Debian nach
apt-get install fail2ban
mit Filterdefinitionen in /etc/fail2ban/filter.d/samba.conf wie
[Definition]
failregex = smbd.*\:\ IP=<HOST>\|.*\.locky$
smbd.*\:\ IP=<HOST>\|.*_Locky_recover_instructions\.txt$
ignoreregex =
Das springt auf die für Locky typischen Dateien mit der Endung .locky
und die Lösegeldforderung _Locky_recover_instructions.tx
t
an. Man kann es jedoch einfach auf andere, Ransomware-typische Dateien erweitern. Beim Erstellen neuer Einträge muss man die Einrückungen beachten; fail2ban ist ein Python-Skript und dementsprechend pingelig, was führende Leerzeichen und Tabulatoren angeht. Schwierig wird es bei Dateien wie .mp3, wie sie die aktuelle Version von TeslaCrypt 3 anlegt. Da muss man dann als Admin entscheiden, ob Musik-Dateien auf dem Server etwas zu suchen haben.
fail2ban sperrt aus
Scharf schalten kann man die Filter dann mit einer Config-Datei namens samba.conf in /etc/fail2ban/jail.d/
[samba]
filter = samba
enabled = true
action = iptables-multiport[name=samba, port="135,139,445,137,138", protocol=tcp]
mail[name=samba, dest=admin@MYDOMAIN.DE]
logpath = /var/log/syslog
maxretry = 1 #Schon der erste Versuch ist strafbar
findtime = 600 #Schaut sich immer die letzen 10 Minuten an
bantime = 86400 #Ban für einen ganzen Tag
Das sorgt dafür, dass ein Locky-infizierter Client via iptables für 24 Stunden abgeklemmt und der Admin via Mail benachrichtigt wird. Wie bereits erwähnt, sollte man das nicht als Ersatz für Backups und sinnvoll eingeschränkte Benutzerrechte betrachten.
Alternativer Schutz auch für Windows-Server
Ein alternativer Ansatz ist das Anlegen von Schattenkopien – auch als Volume Snapshot Service, Volume Shadow Copy Service oder VSS bekannt. Das erfordert NTFS als Datei-System und funktioniert natürlich – aber nicht nur – mit Windows-Servern. Auch Samba unterstützt Schattenkopien in Zusammenarbeit mit LVM, ZFS oder btrfs. Damit hat man im Zweifelsfall auch nach dem Löschen durch den Erpressungs-Trojaner noch eine Kopie der Daten.
Frank Carius schlägt vor, Dateien, die eine gewisse Zeit nicht mehr verändert wurden, nur noch lesbar bereitzustellen. Das schützt dann zwar nicht alles; aber zumindest ältere Daten, etwa von längst abgeschlossenen Projekten, sind dem Zugriff der Erpressungs-Trojaner damit entzogen. Carius hat dafür im Rahmen seines Projekts CryptoProtect ein Powershell-Skript entwickelt, das man auf einem Server ausführen kann, um die Dateirechte passend zu setzen. Man kann das Skript im Prinzip auch auf einem Desktop einsetzen. Wir haben CryptoProtect jedoch bislang nicht selbst ausprobiert. (ju)