gringouno
Goto Top

Erpresser Prävention

Grüezi Mitenand face-smile

Leider wird einer unserer Kunden regelmässig von diesen Erpresser- Trojanern befallen. Bei einem Angriff (Immer von einem Domänen User aus) werden alle Dateien auf die der Benutzer auf dem Share Zugriff hat, verschlüsselt und in die Dateiendung auf .MP3 geändert.

Ich bin nun seit letztem Freitag auf der Suche nach einem Programm, Script oder Boardmittel welches mir helfen würde zu reagieren wenn es die Benutzer dieser Domäne mal wieder schaffen (Es sind über 100 User und alle ziemliche DAUs)

Konkret stelle ich mir vor, dass ein Script die Dateien überwacht und einen User sperrt sobald er innerhalb von 10 Sekunden bei mehr als 5 Dateien die Dateiendung ändert. Das wäre die Premium -Variante die es wohl einfach nirgends gibt.

Ich wäre aber auch schon zufrieden wenn ich eine Überwachung einrichten könnte die jede Änderung von Dateiendungen in das Event log schreibt, sodass ich dort meinen Monitor drauf ansetzen kann.

Kennt jemand ein Tool? Oder hat jemand Erfahrung mit dieser Situation und einen anderen Ansatz für mich?

Gruss
Gringo

Content-ID: 297686

Url: https://administrator.de/forum/erpresser-praevention-297686.html

Ausgedruckt am: 22.12.2024 um 13:12 Uhr

114757
Lösung 114757 29.02.2016 aktualisiert um 09:36:28 Uhr
Goto Top
Moin,
benutze mal die Suchfunktion des Forums, das wurde hier in letzter Zeit schon sehr oft diskutiert inkl. Skripten.
Suche nach Dateien mit doppelter Dateiendung
Locky Verschlüsselungstrojaner Vorbeugende Maßnahme
Das hier sollte dir ebenfalls helfen
https://www.frankysweb.de/windows-fileserver-vor-ransomware-crypto-locke ...

Gruß jodel32
gringouno
gringouno 29.02.2016 aktualisiert um 09:37:14 Uhr
Goto Top
Jawoh! fettes Merci face-smile

Die Sufu habe ich benutzt, nur wohl zu oberflächlich

Ich wünsche dir einen Guten Start in die Woche
choffmeister
choffmeister 29.02.2016 um 10:45:20 Uhr
Goto Top
Ich würde mal darüber nachdenken das Filserver Berechtigungskonzept zu überarbeiten.
Bei uns in der Firma sind wir auch ein paar mal von deinem Problem betroffen worden, jedoch konnte aufgrund des Fileserver Sicherheitskonzeptes der Trojaner keinen Schaden anrichten.
Selbst betroffene Daten haben wir innerhalb von 5 Minuten wiederhergestellt.
Im übrigen bieten bereits die ersten Virenscanner genau so eine Verhaltensüberwachung wie du Sie dir wünscht an.
Robbn-MB
Robbn-MB 29.02.2016 um 11:03:58 Uhr
Goto Top
Wir sind ebenso gerade dabei die gesamte Fileserver Architektur abzuändern bzw. komplett neu aufzusetzen ;)

Sicherungen laufen nun vernünftig strukturiert und komplett neu angesetzt, sauber durch und sind wiederherstellbar.
Hatten gerade am Freitag einen Infekt mit der neuesten Tesla-Crypt Variante...

Er war nicht in einem Anhang, sondern kam durch den Besuch einer völlig normalen Website eines Autohauses am Bodensee .....


Heute haben wir begonnen den Fileserver fit zu machen und auf Datenveränderungen und teilweise auch Erstellung automatisiert zu reagieren und uns eine Mail zu senden.

Eine bessere Lösung zur aktuellen Lage ist uns nicht eingefallen (bisher).
Das Problem welches wir nun seit Freitag haben ist, dass es über völlig normale Webseiten reinkommen kann, über einfachstes PHP, wenn wir das sperren geht nichts mehr.....
Dilbert-MD
Dilbert-MD 29.02.2016 um 14:54:40 Uhr
Goto Top
Hallo Gringo,

wenn es auch ein Software-Tool sein kann, hat Frank hier einen interessanten Link :
Krypto-Trojaner Locky: Batch-Dateien infizieren Windows, Tool verspricht Schutz

In dem Artikel stehen aber auch entsprechende Warnungen und weitere Hinweise.

Gruß
Holger
DerWoWusste
DerWoWusste 01.03.2016 um 09:58:42 Uhr
Goto Top
@114757 Der frankysweb-Link ist doch mal ein super Ansatz.
Du bist doch gut im Skripten, erstelle doch mal eine Verfeinerung, die bei Auftreten am Filesever ein Skript startet, das ausliest, welche IP die geblacklisteten Dateiendungen erstellen wollte und dann für diese eine Firewall-Blockregel aktiviert face-smile Das wäre dann nun wirklich mal einen Tipp-Beitrag wert.
Auch könnte man das Datei-Template noch pimpen, indem man keine Blacklist, sondern eine Whitelist daraus macht (nur *.pdf/*.docx/... zulassen).
114757
114757 01.03.2016 aktualisiert um 10:37:51 Uhr
Goto Top
indem man keine Blacklist, sondern eine Whitelist daraus macht (nur *.pdf/*.docx/... zulassen).
@DerWoWusste Das kann der Ressourcen-Manager doch schon von Haus aus mit dem Ausschlussfilter...

Besser ist IMHO noch immer einer vernünftige Rechtevergabe auf den Fileservern und regelmässige Schattenkopien! Dann hat man diese Probleme erst gar nicht.

Ich weis auch nicht warum hier wegen Locky so eine Welle gemacht wird ?? Die die solche Probleme haben, haben einfach kein vernünftig geplantes Fileserver-Netz oder keine ausgereifte Backupstrategie.
Dilbert-MD
Dilbert-MD 01.03.2016 um 10:33:38 Uhr
Goto Top
was aber wenn Locky von einem lokalen Client aus auf das Share zugreift, um dort die Dateien zu manipulieren?
Wird dann nicht die lokale IP ermittelt, also der User als Verursacher "abgestempelt" ?
Wichtig wäre noch ein Timeout im Script zu integrieren, damit - wenn Locky nach max 10 Dateien nicht mehr agieren kann - kein zweiter und dritter Versuch (Schleife, next i) gestartet werden kann, die Dateien zu manipulieren.
Klar muss der User-PC als Verursacher gesperrt werden. Würde es reichen ihm die Schreibrechte auf den Shares zu entziehen? Dann kommt müsste doch die Meldung auftauchen "Zugriff verweigert" und der User wird die IT-Hotline anrufen.
Muss man eventuell berücksichtigen, dass Locky möglicherweise die Dateien erst umbenennt, dann verschlüsselt und dann wieder zurückumbenennt? Oder wenn Locky die Dateien öffnet, ändert ud unter neuem Namen speichert?
Demnach müsste das Script überwachen, ob in einer vorgegeben Zeit (z.B. 10 sec.)
- mehr als 8 Änderungen
- mehr als 8 Umbenennungen
- mehr als 8 Erstellungen
- mehr als 8 Löschungen
vorgenommen werden
UND
das Script müsste Ausnahmen berücksichtigen, weil es auch Programme gibt, die mehrere Dateien speichern/ändern/löschen, wenn zum Beispiel zu einem CAD-Projekt auch noch ini's, conf's, pen's, Blöcke, Macros, hatches, usw. gehören, die im Projektordner mitgespeichert werden.
Außerdem gibt es auch Grafikprogramme, mit denen man zum Beispiel Fotos stapelweise verkleinern kann. Ich kenne da zum Beispiel ACDSee: hier markiert man einen Order voll Fotos, klickt auf Stapel-Größenänderung, wählt eine Zielgröße (pixel oder %) und schwupps werden 30 Bilder auf 25%verkleinert, um zum Beispiel in eine Dokumentation eingefügt zu werden.
Auch beim Auslesen von Messgeräten werden oft viele Dateien in einem Rutsch gespeichert.

Ich fürchte, hier müssen viele Randbedingungen berücksichtigt werden oder das Script muss sich auf bestimmte Aktionen beschränken.

In die Scriptfalle würden dann wahrscheinlich auch Programme / Batchbfehlsfolgen tappen, die viele Dateien umbenennen, um zum Beispiel Leerzeichen zu entfernen, Umlaute zu ersetzen, Punkte im Dateinamen zu entfernen, ...

Nevertheless finde ich die Überwachung via Script mit Blockade bei Alarm einen guten Ansatz.

Gruß
Holger
DerWoWusste
DerWoWusste 01.03.2016 um 10:52:14 Uhr
Goto Top
@114757
Das kann der Ressourcen-Manager doch schon von Haus aus mit dem Ausschlussfilter...
Sag ich doch selbst. Das hat Frankysweb jedoch nicht betont.
Ich weis auch nicht warum hier wegen Locky so eine Welle gemacht wird ?
Weil die Leute unerfahren sind, was diesen Fall angeht. Und deshalb brauchen sie solche Hilfestellungen dringend. Bevor Leute kapieren, wie Application Whitelisting ordentlich gemanaget wird oder wie eine Backupstrategie auszusehen hat, die im eigenen Unternehmen passt, wäre es doch eine gute Übergangslösung, die Anleitung von fw ist doch sehr gut, bis auf dass sie beim Skript schwächelt und dort nur erwägt, die Dateidienste ganz abzuschalten.
Vielleicht skripte ich das mal demnächst, sollte einfach sein.

@Dilbert-MD
Hast Du die Anleitung verstanden? Alles kein Problem. Wird versucht, eine Datei eines gesperrten Typs zu erstellen, dann wird das geblockt und danach kannst Du alles machen, was Du willst. Lies sie noch einmal durch.
114757
114757 01.03.2016, aktualisiert am 11.03.2016 um 17:38:59 Uhr
Goto Top
@DerWoWusste
Mögliches Powershell-Skript für den Ressourcen-Manager:
param([string]$sharepath,[string]$username)
Get-SmbShare | ?{$_.Path -eq $sharepath} | Block-SmbShareAccess -AccountName $username -Force
Auf dem Tab zum Ausführen des Befehls gibt man als Befehl an:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
und als Argumente:
-ExecutionPolicy ByPass -File "C:\share_access_blocker.ps1" "[File Screen Path]" "[Source Io Owner]"
(Pfad zum Skript anpassen)

Alternativ kann man es auch ohne Skript machen indem man den Befehl einfach direkt in die Argumente packt:
-ExecutionPolicy ByPass -command "Get-SmbShare | ?{$_.Path -eq '[File Screen Path]'} | Block-SmbShareAccess -AccountName '[Source Io Owner]' -Force"

Dem Script wird der Dateisystem-Pfad ([File Screen Path]) des Shares und der Username der den Schreibzugriff verursacht hat ([Source Io Owner]) über die speziellen Variablen des Ressourcenmanagers übergeben. Damit fügt das Skript bei einem nicht erwünschten Zugriff den User der den Zugriff verursacht hat in den Share-Berechtigungen mit einem Deny-Eintrag hinzu, et voilà dem User wird sofort jeglicher Zugriff auf das Share verweigert.

ca12e0d86e48d0d8f2df7d041e0e7d1d

Hat man dann den betroffenden Client gesäubert, entfernt man einfach den Deny-Eintrag im Share wieder.

Habe ich hier gerade mal erfolgreich auf einem 2012R2-Filer und einem Windows 10 Enterprise Client getestet.

Gruß jodel32

-edit- Nachtrag:

Für ältere Server (z.B. SERVER 2008R2) kann man mit diesem Skript die Berechtigung des Shares setzen:
(Aufruf erfolgt wie im ersten Beispiel geschrieben)
param([string]$sharepath,[string]$username)
# Share-Object holen
$share = gwmi "win32_share" | ?{$_.Path -eq $sharepath}  
# Security-Descriptor des Shares ermitteln
$sd = (Get-WMIObject Win32_LogicalShareSecuritySetting | ?{$_.Name -eq $share.Name}).GetSecurityDescriptor().Descriptor
# Trustee User für die neue ACE erstellen
$trustee = ([wmiclass]'Win32_trustee').psbase.CreateInstance()  
# Domain und Username des Trustee's setzen 
$trustee.Domain = $username.split('\')  
$trustee.Name = $username.split('\')[1]  
# FullAccess Deny ACE erstellen
$ace = ([wmiclass]'Win32_ACE').psbase.CreateInstance()  
$ace.AccessMask = 2032127; $ace.AceFlags = 0; $ace.AceType = 1;$ace.Trustee = $trustee
# ACE dem SD hinzufügen
$sd.DACL += $ace
# Share mit neuem SD versehen
$share.SetShareInfo(0,$share.Description,$sd)
DerWoWusste
DerWoWusste 01.03.2016 um 12:47:29 Uhr
Goto Top
Auch gut. Aber die Firewallregel wäre einfacher, da man danach nicht bei evtl. x Shares den deny-Eintrag wieder entfernen müsste, sondern lediglich die eine Regel.
114757
114757 01.03.2016 aktualisiert um 13:04:26 Uhr
Goto Top
Zitat von @DerWoWusste:

Auch gut. Aber die Firewallregel wäre einfacher, da man danach nicht bei evtl. x Shares den deny-Eintrag wieder entfernen müsste, sondern lediglich die eine Regel.
Hmm. ich finde im Ressourcenmanager aber keine Variable die mir den Computernamen bzw. IP des auslösenden Clients übergibt, den müsste man aufwendig ermitteln. Ebenso würde das IMHO auf Terminal-Servern mit der Firewall nicht funktionieren wenn das Share auf dem selben Server liegt.
DerWoWusste
DerWoWusste 01.03.2016 aktualisiert um 13:42:22 Uhr
Goto Top
Joa, TS und Fileserver auf einer Maschine ist eh nicht so das Wahre sicherheitstechnisch. Das Ermitteln würde mittels net session ja recht einfach gehen und dass der Nutzer dann gleich von allen IPs aus gesperrt wird, sollte auch nicht schaden. Oder man nutzt ipsec-Firewallregeln, dann kann man tatsächlich auch Nutzer gezielt aussperren.
Aber Dein Ansatz ist ja auch super, ob man danach ein paar denials wieder ausbügeln muss oder nicht, ist ja auch egal.
PiLoT
PiLoT 04.03.2016 um 15:57:20 Uhr
Goto Top
Hallo zusammen,

hat das jemand auch schon mit 2008 R2 hinbekommen?
Das GET-SMB* gibts ja für die 2008er nicht face-confused

Gruß
114757
114757 04.03.2016 aktualisiert um 16:10:59 Uhr
Goto Top
Zitat von @PiLoT:
hat das jemand auch schon mit 2008 R2 hinbekommen?
Das GET-SMB* gibts ja für die 2008er nicht face-confused
Das geht auch ist nur mit dem Hinzufügen der Berechtigungen etwas aufwändiger ...http://www.experts-exchange.com/questions/28257139/Creating-a-share-wit ...
DerWoWusste
DerWoWusste 04.03.2016 aktualisiert um 16:11:18 Uhr
Goto Top
Ich denke, wenn Du Powershell 5 installierst, dann läuft das. https://www.microsoft.com/en-us/download/details.aspx?id=46889
114757
114757 04.03.2016 aktualisiert um 16:14:27 Uhr
Goto Top
Zitat von @DerWoWusste:

Ich denke, wenn Du Powershell 5 installierst, dann läuft das. https://www.microsoft.com/en-us/download/details.aspx?id=46889
Das nützt leider nichts, diese CMDLets sind an das OS gebunden. Da bringt auch das Installieren einer aktuellen Powershell nichts.
https://technet.microsoft.com/de-de/%5Clibrary/jj635726%28v=wps.630%29.a ...
Braucht man aber auch nicht, wenn Berechtigungen lassen sich auch ohne diese CMDLets zu einem Share hinzufügen. Sind wie gesagt nur etwas mehr Zeilen.

Gruß jodel32
PiLoT
PiLoT 04.03.2016 um 16:22:13 Uhr
Goto Top
Hallo,

hm - mal probieren.
Die CMD-Lets gehen wirklich nicht - das hatte ich gestern schon gesucht...

Hier Tipp bei Lanwerk wird auch noch eine Lösung
vorgeschlagen - wollte bei mir gestern aber nicht so.
Muss ich nochmal probieren.
Bei uns heißen auch die Freigaben leider nicht immer wie die Ordner...

Gruß
114757
114757 04.03.2016 um 16:36:35 Uhr
Goto Top
Bei uns heißen auch die Freigaben leider nicht immer wie die Ordner...
Das ist doch wurscht:
gwmi win32_share | ?{$_.Path -eq 'C:\Pfad\xyz'} | select Name  
liefert dir den Sharenamen frei Haus face-smile
PiLoT
PiLoT 04.03.2016 um 17:44:09 Uhr
Goto Top
jodel32, vielen Dank!!

Konnte mir das jetzt zusammenwurschteln - funktioniert für mich auf unserem 2008 R2.

$logfile = "c:\Scripts\logfile.csv"  
$events = Get-EventLog -LogName application -Source SRMSVC -After (get-date).AddMinutes(-10) | select ReplacementStrings -Unique
if ($events.count -gt 50)
    {
	#Test nicht runterfahren...
        #stop-computer -force
    }
else
    {
        foreach ($event in $events)
            {
                $sourceuser = $event.ReplacementStrings
                $smbsharepath = $event.ReplacementStrings[1]
                
                $pos = $smbsharepath.LastIndexOf("\")  
                $rightPart = $smbsharepath.Substring($pos+1)
		
		# Name der Freigabe über Lokalen Pfad...
		$freigabeName = gwmi win32_share | ?{$_.Path -eq $smbsharepath} | select Name
	
		
		$strFreigabe = "$freigabeName"  
		$strFreigabe = $strFreigabe.replace("@{Name=","").replace("}","")  

                
                $smbcacl1 = "C:\Scripts\subinacl /verbose=1 /share \\127.0.0.1\" + "$strFreigabe" + " /deny=" + "$sourceuser"  
                
		# not in use 
		#$smbcacl2 = "C:\Scripts\subinacl /verbose=1 /share \\127.0.0.1\" + "$strFreigabe" + "$" + " /deny=" + "$sourceuser" 
	                            
                cmd /c $smbcacl1
                
              
                $log = "$sourceuser" + ";" + "$smbsharepath" + ";" + "$strFreigabe" + ";" + $smbcacl1   
                $log | add-content $logfile
            }
    }
goodbytes
goodbytes 11.03.2016 um 15:28:05 Uhr
Goto Top
Hallo,
@Robbn-MB
Und wie genau überwacht ihr nun euren Fileserver auf Dateiveränderungen bzw. Erstellungen?
Auf einem Fileserver wäre aus meiner Sicht der beste Ansatz massenhafte Schreibzugriffe für jeden Userzugriff auf eine Freigabe des Servers zu überwachen, da der Prozess ja nicht auf dem Server selbst läuft. Man müsste den "Process Monitor" von Sysinternals doch eigentlich verwenden können? Nur so ein Gedanke... Hier sieht man welcher User aus der Domäne gerade schreibend auf welche Dateien zugreift. Man müsste es nur irgendwie in ein Script packen um dauerhaft mitzuloggen wenn ein User innerhalb kurzer Zeit in sehr viele Dateien schreibt. Ein User dürfte ja nicht von Hand ein paar tausend Dateien in der Minute bearbeiten, dann wäre er ja sehr fleißig... face-wink Im Falle einer Auffälligkeit könnte man ihm eiskalt per psexec eine lokale Shell auf seiner Maschine starten und seine Netzwerkkarte sozusagen von innen heraus deaktivieren. Möglich wäre es. Nur das in ein Script zu packen... face-plain Sind nur so wilde Ideen von mir...

Gruß
Torsten
114757
114757 11.03.2016 aktualisiert um 17:36:06 Uhr
Goto Top
@PiLoT
Habe im Kommentar oben noch ein Skript ergänzt das auch unter SERVER2008R2 die Share-Berechtigung setzen kann, ohne den externen batch subinacl krams. Damit bist du unabhängig von den SMB-CMDLets der neueren Versionen.

Gruß jodel32