Locky: Verseuchte Clients identifizieren

In diesen beiden Artikeln hatte ich bereits eine Möglichkeit vorgestellt, um Windows Fileserver vor Locky und anderer Ransomware zu schützen:

Tobbi hat die Idee ebenfalls für Netapp Filer umgesetzt:

Es bleiben aber auch noch die Clients, von welchen ja die meiste Gefahr ausgeht. Umso schneller die Rechner identifiziert werden, welche sich mit Locky infiziert haben, umso schneller lässt sich der Client vom Netzwerk isolieren und der Trojaner unschädlich machen.

Ich habe daher noch mal ein bisschen nachgedacht und bin auf meiner Recherche zu Locky auf dem Blog von Fortinet gelandet. Fortinet hat sich Locky genauer angeschaut:

Der Artikel von Fortinet ist sehr lesenswert und enthält zudem wichtige Informationen die sich verwenden lassen. Locky kontaktiert Command & Control Server im Internet, Fortinet gibt sogar an, welche das sind:

Locky

Die C&C Server lassen sich ja einfach an der Firewall sperren, dann sind sie zwar nicht mehr erreichbar, aber das hindert Locky wahrscheinlich noch nicht Dateien zu verschlüsseln, zumal das wahrscheinlich noch nicht alle C&C Server sind.

Aber die C&C Server helfen dabei die Clients zu identifizieren, die sich Locky eingefangen haben, wenn das die Firewall nicht direkt melden kann, könnte man ja auch die Windows DNS Server protokollieren lassen, welche Rechner welche Domains auflösen. Das Log lässt sich dann nach den C&C Domains durchsuchen.Versucht ein Client einen C&C Server per DNS aufzulösen, wird er sich wohl Locky eingefangen haben.

Ich hab da mal was vorbereitet:

Damit das Script die Rechner identifizieren kann, welche versuchen die Locky C&C Server zu erreichen, muss auf den DNS Server die Debugprotokollierung eingeschaltet werden:

DNS Debugprotokollierung

Nach kurzer Zeit wird dann das DNS Debug Log befüllt:

DNS Log

Dieses Log Log lässt sich mit der PowerShell auswerten. Findet das Script einen der Command & Control Server von Locky im DNS Log, wird eine Mail verschickt:

Locky Alarm

Das Script muss noch etwas angepasst werden:

Script

In Zeile 1 muss der Pfad zum DNS Debuglog angegeben werden, Zeile 2 bis 5 enthalten die Daten für den Mailversand. Wenn das Script durchgängig laufen soll, kann in Zeile 7 der Wert für „LoopScript“ auf „$true“ gesetzt werden.

Das Script lässt sich jetzt entweder in Endlosschleife per PowerShell starten (LoopScript = $true) oder zyklisch per Taskplaner ausführen.

Hinweis: Wenn das Script in einer Endlos Schleife läuft und Treffer im Log gefunden werden, wird eine kleine Mail Flut losgetreten. Das muss ich noch etwas anpassen, aber lieber erst einmal zu viele Mails, als Montag das große Chaos…

Ab Zeile 10 sind übrigens alle C&C Server aufgelistet die sich bisher gefunden habe. Wer noch mehr kennt, bitte melden.

19 Kommentare zu “Locky: Verseuchte Clients identifizieren”

  1. Hey Franky,

    danke nochmals für die tollen HowTo’s. Sind direkt mal umgesetzt worden.
    Zum DNS-Skript ist zu sagen, dass die Zeile 7: $LoopScript nicht im Skript aus dem Download vorhanden ist.

    VG
    Daniel

  2. Also bei einem unserer Kunden konnte der befallene Rechner sehr schnell ausfindig gemacht werden, da die .txt Anleitungen zum entschlüsseln die Besitzerinformation des bestimmten AD Users zeigten.

    Diese Anleitungen werden in jedem Ordner erstellt, in dem auch Daten verschlüsselt wurden.

    In dem Fall war das der locky Virus

  3. Super, danke!

    Habe in die Liste der Server mal einen Testeintrag gemacht – Script findet im DNS Log diesen einen Eintrag, verschickt allerdings zwei Emails mit dem gleichen Inhalt.

    Loop steht dabei auf false.

  4. Top Beitrag – Getestet, ab genickt und für gut befunden! Das mit den 2 Emails kann ich bestätigen aber in Kombination mit dem FSRM Emailalarm ist ein nice to have. Dickes Danke aus NRW

  5. HI,

    irgendwas scheint bei uns falsch zu laufen. Habe via nslookup das „hazentrumsuedperlach.de“ aufgelöst, es erscheint auch in der Log mit folgendem Eintrag (nur das wichtigste): Name „(20)hazentrumsuedperlach(2)de(3)DOMAINNAME(5)local(0)“
    Aber es wird keine Mail ausgelöst. Ich denke, es liegt daran, dass der Domänen Name angehängt wird, richtig?

  6. Hey Franky,

    direkt mal eingebaut und klappt super – einziger Wermutstropfen ist bislang die Mail-Flut, die beim Loop ausgelöst wird.
    Danke dafür!

  7. @Alex

    z.B. kann man beim Server 2012 R2 den SMTP Server installieren. Dort kann man dann Daten zur Authentifizierung hinterlegen. Dann kann man im Ressourcen-Manager als SMTP-Server z.B. localhost angeben.
    Es finden sich Anleitungen im Netz wie man den konfiguriert. z.B. im mntechblog

  8. Hallo,

    erst einmal danke für das Script! Nur leider habe ich ein Problem beim protokollieren der Funde. Obwohl die Log-Datei nicht geöffnet ist, bekomme ich den nachfolgenden Fehler in der Ereignisanzeige.

    „Der DNS-Server konnte die Datei „C:\DNSLog\dns.log“ für den Schreibvorgang nicht öffnen. Wahrscheinlich handelt es sich um eine bereits geöffnete Zonendatei. Schließen Sie die Datei, und starten Sie den Schreibvorgang der Zone neu.“

    Woran könnte das problem liegen?

    Danke und Grüße!

  9. Hi,
    hier gibt es eine gute Liste der C&C Server. Die Domainnamen sind natürlich vorher angelegt und werden ja im Code je nach Datum generiert und kontaktiert. Durch die Codeanalyse haben die alle durch die in Locky enthaltene Routine zur generierung von Domainnamen (mit C&C Server dahinter) schon für den Rest von Februar generiert:

    https://blogs.forcepoint.com/security-labs/locky-ransomware-encrypts-documents-databases-code-bitcoin-wallets-and-more

    Auch sonst recht interessante Infos …

  10. Also läuft tadellos, hab in Line 191 (nach dem Send-MailMessage) innerhalb der LoopScript While ein Start-Sleep -s 600 eingebaut das wenn was gefunden wird nur maximal alle 10 Minute eine Mail pro DNS Server rausgeht.

    Die Liste der „bösen Server“ muss ja manuell geupdated werden.
    Gibts ne möglichkeit den von Atomspion genannten Artikel in dem der Domain-Create-Algorithmus aufgezeigt wird mit einzubauen?

  11. Hallo Franky und andere Mitleser,

    ich habe den DNSLogger mal mit Testseiten auf einem Windows Server 2008 R2 ausprobiert, leider kommt keine E-Mail. Das ist aber erstmal nicht schlimm. Danach dachte ich mir, ich lasse mir den DNS-Log einfach nur schön aufbereiten und extrahiere ihn dann in eine .txt-Datei.
    Das dauert aber verdammt lange. Der DNS-Log hat ca. 100 MB und der DNSLogger läuft über 4 Stunden. Wie lange genau, weiß ich nicht, da ich ihn immer nach 4 Stunden abgebrochen habe. Der powershell-Prozess frisst quasi auch allen RAM. Ist das normal und falls nicht, hat Jemand evtl. eine Idee, woran es liegen könnte?

    Viele Grüße
    Jojo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.