Einblicke in (Security)-Themen ausm tiefen Wald

Kategorie: Anti-Malware

Scheduled Task erstellen

Unter Windows lassen sich PowerShell-Befehle auch ganz einfach in einen wiederkehrenden Task, sogenannte Scheduled Tasks, verwandeln. Folgendes Beispiel illustriert diese Vorgehensweise:

$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -Command "BEFEHL"';

$trigger = New-ScheduledTaskTrigger -AtStartup;

Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'Mein Task' -Description 'Beschreibung'

Man muss also lediglich das Feld “BEFEHL” durch den PowerShell-Befehl ersetzen.

Alias von Kommandos

Neben dem Verstecken von Kommandos gibt es auch noch die einfache Möglichkeit die vorhandenen PowerShell-Kommandos mit Aliasen zu versehen. Das kann praktische Gründe haben, kann aber auch im Rahmen von Malware vorkommen, wenn man Kommandos verstecken will.

Ein Alias geht wie folgt:

$alias = 'Get-Dir';

Set-Alias -Name $alias -Value Get-ChildItem;

Invoke-Expression $alias

Hier gilt es also auf die Stichwörter Set-Alias sowie erneut auf Invoke-Expression zu achten.

Pfad-Angaben verstecken

Auf der Suche nach Mustern für verdächtige PowerShell-Ausführungen (weitere Beispiele) findet sich auch oft die Nutzung von codierten Strings.

Beispiel ist die zuvor codierte Pfadangabe mittels Base64 dann beim “Opfer” wieder in eine lesbare Pfadangabe zu decodierten und dann auszuführen, wie folgt:

$path = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('QzpcVGVtcFxBZG1pblRvb2xz'));

Invoke-Item $path

Es gilt also auf die Befehle “Invoke-Item” zu achten.

Verstecken von Kommandos

Bei maliziösen PowerShells in freier Wildbahn sollte man auf der Hut. Allerdings muss man auch die besagten Kommandos erkennen, die schadhaft oder zumindest verdächtig sind.

Die “Endgegner” versuchen mit allen Methoden ihre Künste zu verstecken, sowohl vor der Abwehr als auch schon bei der Erkennung sowie Ausführung.

Ein beliebtes Beispiel sind die Obfuscation- Methoden, die man immer wieder findet. Da werden Strings zusammengebaut, Codierungen wie Base64 verwendet oder die Befehle über In-Memory-Runs ausgeführt. Besonders beliebt ist auch die “Living off the land”-Methode, also die Nutzung von validen DLLs bzw. APIs von Windows. Hier heisst das Stichwort “rundll32”, “svchost.exe” oder ganz einfach PowerShell 😉

Hier ein Beispiel für das Verstecken von Befehlssequenzen:

$o = 'Get'; $b = 'Process'; $cmd = $o + '-' + $b;

Invoke-Expression $cmd

Hier wird der PowerShell-Befehl “Get-Process” einfach bei der Ausführung zusammengesetzt. Die Methode nennt ich “Concatenierung” von “concat”.

Es gilt also speziell sein Augenmerk auf Befehle wie “Invoke-Expression” bzw. ganz allgemein auf “Invoke” zu legen.

Festplatte auf Ereignisse überwachen

Die PowerShell eignet sich auch dafür, dass man Ereignisse auf seinem Rechner im Detail überwacht, beispielsweise Aktivitäten auf der Festplatte.

Wenn eine Malware beispielsweise neue Dateien anlegt, so kann man dies mittels FileMon von SysInternals (migriert zu Process Monitor) mitbekommen. Es geht aber auch mittels PowerShell mit ein paar Befehlen, wie folgt:

$watcher = New-Object System.IO.FileSystemWatcher;
$watcher.Path = 'C:\';
$watcher.IncludeSubdirectories = $true;
$watcher.EnableRaisingEvents = $true;
Register-ObjectEvent $watcher 'Created' -Action { Write-Host 'File Created: ' $Event.SourceEventArgs.FullPath }

Man erzeugt ein neues Objekt, wählt den Pfad aus, gibt an ob es auch für Unterverzeichnisse gilt, legt fest dass man benachrichtig wird, und registriert dann dieses Objekt. Es gilt allerdings nur für die Anlage von neuen Dateien.

Weitere Infos zu dem Befehl Register-ObjectEvent lässt sich nachlesen.

Antivirus für Zuhause plus zentraler Steuerung plus bezahlbar

Es gibt ja bekanntlich zahlreiche IT-Sicherheitsprodukte für den Heimbereich. Schnell fündig wird man über av-test.org und sucht sich nach Betriebssystem dann das für einen beste Produkt aus.

Hat man aber mehrere Geräte und zudem verschiedene Betriebssysteme (beispielsweise iOS, Android, Windows, Linux, MacOSX), dann wird die Auswahl plötzlich wesentlich dünner. Dennoch findet man auch hier ein passendes Produkt, wobei es kaum preisliche Unterschiede zwischen 5 oder 10 zu schützenden Geräten gibt.

Nun habe ich aber die Anforderung, dass ich mit einer zentralen Konsole alle meine Geräte überwachen und entsprechend reagieren will. Denn wenn Familienmitglieder unbedarft ein Problem verursachen und man keine Alarmierung erhält, so kann man auch keine “sozialen” Gegenmaßnahmen treffen oder diejenigen Personen mittels Awareness-Maßnahmen aufklären.

Bleibt man bei diesen Anforderungen, so bleibt aktuell nur Sophos Home Premium sowie Bitdefender übrig. Bei beiden Tools gibt es jeweils eine mobile App, die einem die Möglichkeit bieten die Alarme zu erhalten.

Möchte man technisch direkt reagieren (fullscan, Isolierung, etc.), so bietet hier nur Bitdefender mit seiner Bitdefender Central Plattform eine ausgewogene Alternative.

In diesem Fall ist Sophos Home Premium völlig ausreichend. Bei Sophos Home Premium können alle Einstellungen für einen Client auf einer Web Konsole vorgenommen werden, sodass unerfahrene Nutzer die Einstellungen nicht ohne Zugang zur Web Konsole ändern können. Allerdings bietet Sophos keine Agenten-Unterstützung für iOS-Geräte, was Bitdefender in der Total Security Variante schlussendlich dann doch zur besten Option macht.

Präsentiert von WordPress & Theme erstellt von Anders Norén