Windows Dienste mit Wildcards löschen

Bei uns in der Firma haben wir die letzten Tage damit verbracht eine doch recht hartnäckige Malware zu entfernen. Diese legte auf jedem Rechner eine Vielzahl von Windows-Diensten an, deren Namen komplett aus Ziffern bestanden. Einen einzigen Dienst hat man mittels

sc delete DIENSTNAME

ja flott gelöscht, aber bei bis zu 100 Diensten ist das zu nervig und zeitaufwändig. Es musste also eine Lösung her, bei der mehrere Dienste mittels Wildcards gelöscht werden können. Der sc-Befehl gibt das leider nicht her, also muss die Windows eigene Powershell ran.

Um alle Dienste, die mit Ziffern beginnen in einem Rutsch zu löschen, in der Powershell einfach

gwmi win32_service -filter "name like '[0-9]%'" | ForEach-Object {$_.delete()}

ausführen und weg sind sie. (Achtung: Es erfolgt keine Sicherheitsabfrage!)

6 Kommentare zu „Windows Dienste mit Wildcards löschen“

  1. Hallo,
    habe mit Interesse diesen Beitrag gelesen. Wir haben scheinbar diesen Virus/Malware auch. Ein Löschen der Dienste bringt aber nicht viel. Nach einiger Zeit werden die Dienste neu generiert. Wisst ihr zufällig, was gegen die Schadsoftware hilft. Wir sind mit unserem Latein am Ende 🙁

    1. Hallo Frank,

      wie eben am Telefon besprochen sind die „Zahlendienste“ zwar nervig, aber nicht die Ursache des Übels. Der Control-Dienst liegt bei einem 64-bit-Windows als exe-Datei unter c:\┴windows\syswow64 und ist zusätzlich als Task aktiv. Nach dem Löschen des Tasks können die exe und die Dienste gelöscht werden. Um einer Weiterverbreitung zu verhindern, sollten die administrativen Freigaben aufgehoben werden (Google nach AutoShareWks bzw AutoShareServer fragen) und lokale Adminrechte mittels Windows-Benutzerverwaltung sehr restriktiv gesetzt werden (hierbei natürlich auch an die lokale Gruppe der Administratoren denken!)

      Viel Erfolg!
      Ralf

  2. Hallo Ralf,

    sehr schöner und präziser Beitrag. Der Powershell-Befehl hilft mir sehr weiter.

    Unsere Rechner sind seid gestern auch davon betroffen. Unser Antivirenprogramm (McAfee) findet die Zahlen-exe-Dateien unter C:\Windows und löscht diese auch fleißig. Sie kommen aber immer wieder. Auf jedem Rechner gibt es eine exe-Datei mit einem anderen Namen unter C:\Windows\syswow64 bzw. .\system32. Dieser Name der exe-Datei ist auch als Dienst eingetragen und generiert die Zahlen-exe-Dateien immer weider neu. Gibt es einen Automatismus, um diese exe-Dateien zu löschen, welche auf jedem Rechner einen anderen Namen haben?

    1. Hallo Martin,

      bei uns hatten alle Viren-Exe das gleiche Erstellungsdatum und wir hatten uns überlegt das zu nutzen und per Powershell-Skript alle Dateien mit diesem Daten zu löschen. Da dann aber doch deutlich mehr als die zunächst angenommenen Rechner infiziert waren, haben wir das nicht weiter verfolgt und unter VMware die Maschinen von einem sauberen Master neu erstellen lassen. Entsprechendes Powershell-Skript um z.B. alle am 30.08.2018 erstellten Dateien im Pfad c:\test löschen zu lassen, wäre: Get-ChildItem -Path „C:\test\“ | Where-Object {(get-date $_.CreationTime -f „dd.MM.yyyy“) -eq „30.08.2018“ } | Remove-Item
      Das Skript ist ungetestet, sollte aber genau das machen.

      Viel Erfolg!
      Ralf

  3. Vielen Dank für deine schnelle Antwort und für das neue Powershell-Skript!

    Bei uns haben die Virus-exe auch immer ein ähnliches Erstellungsdatum. Die Datei kann ich solange nicht löschen, bis ich den Task von der exe im Task Manager beendet habe. Mit taskill könnte man es per Batch schaffen, aber der Names des Tasks ist immer anders.
    Wir haben bei uns keine VMs, alle Clients sind phsykalisch.

    Haben Sie einen Tipp über den Ursprung des Viruses oder wie er heißt? Im Internet bin ich nur auf Ihre Seite gestoßen.

    1. Hallo Martin,

      das ist eine Variante vom Emotet, einem Banking-Trojaner. Wir haben zunächst um die 100 Rechner manuell gesäubert und das mit den unterschiedlichen Tasknamen hat uns auch genervt. Im Endeffekt waren das geschätzt vielleicht 20 verschiedene Namen. Die einfach in eine Textdatei packen und Taskkill per Batch die Datei einlesen und pauschal alle beendenen lassen, egal ob sie existieren oder nicht. Über den zurückgegebenen Errorlevel kann man dann ja auswerten ob man überhaupt einen Task beendet hat oder man die Textdatei erweitern muss.
      Bei uns kam der Virus über eine infizierte Webseite rein und hat sich dann recht schnell in einer Abteilung ausgebreitet, da wir immer die ganze Abteilung als lokale Admins auf den Abteilungsrechnern eintragen. Andere Abteilungen waren nicht betroffenen, da die infizierten Rechner bzw. deren User dort nicht über lokale Adminrechte verfügten. Der Infektion ist übrigens in der Ereignisanzeige von Windows sehr gut nachverfolgbar, bei betroffenen Rechnern werden ja haufenweise Dienste angelegt. Problem war, dass der nach ein paar Stunden anfing Module nachzuladen (per Port 80 von einem Server in Polen) und da haben wir dann sicherheitshalber per VMware recompose den Stecker gezogen.

Kommentarfunktion geschlossen.