Einrichten einer Sandbox für die Malware-Analyse mit Elastic Security
Als Security Analyst im InfoSec-Team von Elastic erlebe ich immer wieder, dass sich Nutzer mit der Frage an unser Team wenden, ob es sicher sei, diese oder jene Datei zu öffnen. Es kommt auch vor, dass ein Nutzer eine Phishing-E‑Mail mit einem Anhang meldet, den er nicht geöffnet hat, während ausweislich unserer Logdaten zehn andere Nutzer diese E‑Mail ebenfalls erhalten haben, ohne sie zu melden und ohne dass die Systeme bei ihnen Alarm geschlagen hätten. Zu den häufigeren Angriffen gehören Phishing-E‑Mails, deren Anhänge keinen Schadcode enthalten, sodass die Alarmsysteme nicht anschlagen, die aber per Social Engineering versuchen, den Nutzer zur Herausgabe seines Passworts zu bewegen.
In solchen Situationen muss das Security-Team schnell herausfinden, was bei Ausführung der Datei auf einem seiner Systeme passiert ist, um ermitteln zu können, ob der Angriff entdeckt oder gestoppt worden wäre. Wäre er es nicht, gilt es, unverzüglich zu verstehen, welche Schritte auf dem Host ausgeführt wurden. Für diese Fälle benötigt das Team eine gut instrumentierte VM-Sandbox, in der es die fragliche Datei sicher ausprobieren und beobachten kann, was passiert. Da das InfoSec-Team von Elastic stets darauf aus ist, Elastic-Produkte im Rahmen der „Customer Zero“-Initiative immer maximal sicher zu machen, haben wir uns entschieden, mit Elastic-Produkten eine Sandbox einzurichten.
In diesem Blogpost zeige ich, wie das InfoSec-Team von Elastic mithilfe von Fleet und Elastic Security eine vollständig instrumentierte Malware-Sandbox erstellt hat. Elastic ist nicht nur bestens geeignet, eine Sandbox zu instrumentieren und Daten aus einer Sandbox zu erfassen, sondern bietet auch alles, um diese Sandbox in Minutenschnelle aufzusetzen und einzurichten.
Was bedeutet „dynamische Malware-Analyse“?
Der Begriff „dynamische Malware-Analyse“ beschreibt den Prozess der Ausführung und Beobachtung von verdächtigem Softwarecode innerhalb einer isolierten VM. Das Ziel der dynamischen Analyse besteht darin zu lernen,
- welche Prozesse die Malware ausführt,
- welche Änderungen die Malware am Host vornimmt,
- welche Netzwerkverbindungen die Malware herstellt und
- welche Dateien die Malware für die zweite und dritte Phase des Angriffs herunterlädt.
Nach dem Beobachten der Malware können die so gewonnenen Informationen für die Entwicklung neuer Erfassungsregeln und Verteidigungsmaßnahmen oder für die Jagd auf andere Schadaktivitäten im Netzwerk verwendet werden.
Warum Elastic?
Wenn Sie schon einmal eine Sandbox-Umgebung für die Beobachtung und Analyse von Malware erstellt haben, wissen Sie bestimmt auch, dass das Einrichten sehr zeitaufwendig sein kann und mit der Installation und Konfiguration Dutzender Softwarekomponenten einhergeht. So kann es nötig sein, Programme wie Wireshark, Regshot und ProcMon zu installieren und zu konfigurieren, die ein manuelles Prüfen der einzelnen Schritte der Malware-Ausführung ermöglichen, damit Sie beobachten und dokumentieren können, was die Software alles tut.
Es gibt sehr ausgefeilte Sandbox-Systeme für die Malware-Analyse, wie z. B. Cuckoo Sandbox, die mit einer Vielzahl von Funktionen und Merkmalen aufwarten und beispielsweise Automatisierung anbieten. Deren Installation und Konfiguration ist jedoch deutlich zeitaufwendiger, und für so manches InfoSec-Team dürften diese Systeme über den Bedarf hinausschießen. Viele der Phishing-Angriffe, die wir in letzter Zeit gesehen haben, waren Social-Engineering-Versuche zum Zweck des Passwortdiebstahls, die nur funktionieren, wenn der Nutzer interagiert. In diesen Fällen kann es passieren, dass die automatisierten Systeme nicht alle Angriffsindikatoren erfassen.
Mitunter ist Schadsoftware so programmiert, dass sie erst einmal schaut, ob sich auf dem System viele solcher Tools befinden, und die Ausführung einstellt, wenn sie fündig wird. Das erschwert die Analyse dieser Malware. Andere Schadsoftware macht aktiv solche Tools ausfindig und stoppt deren Prozesse oder überschreibt die Logdaten in der Sandbox. Aus diesem Grund kann die dynamische Malware-Analyse zeitaufwendig werden, wenn es darum geht, einen aktiven Vorfall zu bearbeiten, der die sofortige Aufmerksamkeit verlangt.
Elastic Endpoint Security ist ein einzelner Agent, der Informationen über die im System vor sich gehenden Aktivitäten sammelt und innerhalb kürzester Zeit den Prozessbaum visualisiert, um eine Analyse zu ermöglichen. Auf diese Weise lässt sich schnell und einfach untersuchen, was genau passiert ist, und Sie erhalten so die Indikatoren an die Hand, die Sie zur Verbesserung Ihrer Erkennungsregeln und Schutzmaßnahmen benötigen. Der gesamte Prozessbaum, inklusive der untergeordneten Prozesse und der vom ursprünglichen Malware-Prozess erstellten zugehörigen Indikatoren, wird in der Analyzer-Ansicht von Elastic Security grafisch dargestellt.
Erstellen der Sandbox
Für die Nutzung einer Malware-Analyse-Sandbox kann es verschiedene Gründe geben. Im Rahmen dieses Anwendungsfalls benötigen wir eine virtuelle Umgebung, die einem Standard-Enterprise-Build nachgestellt ist. Durch gründliche Instrumentierung soll sichergestellt werden, dass wir jede Aktivität beobachten können, die von der Malware eingeleitet wird.
Für Sandbox-Analysen werden in der Regel zwei Images pro Build verwendet: ein Image eines gehärteten Systems, das mit denselben Schutzmaßnahmen wie das Unternehmenssystem ausgerüstet ist, und ein Image eines verwundbaren Systems, bei dem die meisten Schutzmaßnahmen ausgeschaltet sind. Der Vorteil von zwei Images besteht darin, dass Ihnen das Image des gehärteten Systems die Auswirkungen auf Ihre Umgebung zeigt, wenn jemand die Datei ausführen würde, während das Image des verwundbaren Systems die Auswirkungen einer uneingeschränkten Ausführung der Malware vor Augen führt. Ab einer bestimmten Größe gibt es in fast jeder Umgebung Systeme, bei denen einigen Schutzmaßnahmen nicht aktiv sind. Daher empfehle ich, beide Methoden zu verwenden.
Erstellen von Testsystemen
Der erste Schritt besteht darin, die für die Ausführung der Dateien verwendeten VMs zu erstellen. Zum Erstellen der Images kann beliebige Virtualisierungssoftware verwendet werden. Ich werde hier nicht in die Einzelheiten der Installation der Virtualisierungssoftware gehen, es ist bei der Ausführung von Malware aber wichtig, die Systeme weitestmöglich von Ihrem Host und vom Unternehmensnetzwerk zu isolieren. In diesem Szenario erstelle ich eine Windows-10-VM und ein MacOS-Image. Wenn Sie für Ihr Unternehmen einen Standard-Linux-Build haben, können Sie ebenfalls eines davon erstellen.
Nach dem Erstellen der VMs sollten Sie alle in Ihrer Domain häufig verwendeten Programme installieren, also so etwas wie MS Office, Adobe Reader, Python und so weiter. Die Sandbox sollte alles enthalten, was Ihre Nutzer zur Ausführung von Dateien nutzen. Ich empfehle, auf den Windows-VMs das PowerShell-ScriptBlock-Logging zu aktivieren. Beim ScriptBlock-Logging wird in den Windows-Ereignisprotokollen der gesamte Text aller ausgeführten PowerShell-Skripte gespeichert; diese können anschließend mit Elastic Agent erfasst werden. Wenn Sie Ihre VM eines verwundbaren Systems konfigurieren, müssen Sie zum Deaktivieren aller integrierten Betriebssystem-Schutzvorrichtungen mehrere Einstellungen ändern. Es gibt ausgefeilte Windows-Malware, die vor dem Herunterladen der zweiten Phase prüft, ob der Host Teil einer Domain ist. Daher kann es empfehlenswert sein, die VM so zu konfigurieren, dass sie Teil einer Fake-Domain ist, deren Namen so klingt, als gehöre sie zu Ihrem Unternehmen.
Wenn auch Sysmon-Daten vom Windows-Host erfasst werden sollen, können Sie dies ebenfalls konfigurieren. Der Elastic-Endpoint-Agent erfasst die meisten der Informationen, die auch Sysmon erfasst, weshalb es sinnvoll sein kann, bei der Sysmon-Konfiguration darauf zu achten, dass es nicht zu Datendopplungen kommt. Nachdem Sie Sysmon installiert und konfiguriert haben, kann der Elastic Agent über die Windows-Integration die entsprechenden Ereignisse an Ihr Cluster senden.
Konfigurieren des Elastic Security-Clusters
Für diese Tests habe ich Elastic 7.10 in Elastic Cloud verwendet. Das Einrichten eines Clusters in Elastic Cloud ist die einfachste Möglichkeit, einen neuen Cluster für das Testen zu erstellen und zu hosten. Auf diese Weise sind Sie innerhalb von wenigen Minuten arbeitsbereit und profitieren von allen Features eines „Platinum“-Abonnements. Wenn Sie lieber mit einer komplett isolierten Sandbox arbeiten möchten, können Sie Ihren eigenen On-Premises-Elastic Stack einrichten. Das Installieren des Elastic Stack für ein On-Premises-Szenario wird hier beschrieben. Alles, was in unserem Blogpost hier besprochen wird, kann dank der kostenlosen „Basic“-Tier kostenlos nachvollzogen werden.
Nachdem Sie Ihr Cluster in Elastic Cloud erstellt haben, müssen Sie sich anmelden und Elastic Security konfigurieren. Eine Videotour durch die Einrichtungsschritte finden Sie hier.
Einrichtung
Der erste Schritt besteht darin, sich als Administrator bei Kibana anzumelden und „Security“ > „Administration“ > Tab „Endpoints“ >Add Endpoint Security zu wählen.
Als Erstes müssen Sie eine Security-Integration erstellen. Geben Sie einen Namen für die Integration ein und wählen Sie Save integration. Sie können mehrere Integrationen und Agent-Richtlinien erstellen, aber im Fall dieser Sandbox ist es am einfachsten, für alle Ihre Sandbox-Systeme eine einzige Richtlinie zu verwenden. Mit nur einer Richtlinie können Linux-, Windows- und MacOS-Systeme abgedeckt werden.
Wählen Sie Ihre Integration aus und klicken Sie dann auf Enroll Agent. Bestätigen Sie durch Klicken auf Enroll in Fleet, dass die Agents in Fleet registriert werden sollen. Auf diese Weise können Sie Ihre Agents komplett über Kibana konfigurieren und steuern.
Wenn Sie auch Windows-Ereignisprotokolle erfassen möchten, klicken Sie auf Add integration, wählen Sie aus der Liste der verfügbaren Integrationen Windows aus, übernehmen Sie die Standardeinstellungen und klicken Sie dann auf Save Integration. Daraufhin werden die Windows-Sicherheitsereignisse, Sysmon-Ereignisse, PowerShell-Scriptblock-Logdaten und alle Logdaten für Windows-Ereignisse erfasst, die laut Konfiguration weitergeleitet werden sollen.
Sie sollten jetzt eine konfigurierte Standardrichtlinie haben, die Logdaten für Endpoint-Security, das Systemmodul und Windows-Ereignisse aus Windows-Systemen bereitstellt.
Jetzt können Sie damit beginnen, Ihre Agents in Ihren Sandbox-Systemen bereitzustellen. Klicken Sie auf den Tab Agents. Wenn dies Ihr erster Agent ist, müssen Sie Admin-Rechte haben und auf die Schaltfläche zum automatischen Erstellen des Fleet-Nutzers in Kibana klicken. Wenn Sie dann Add Agent wählen, gelangen Sie direkt zur Download-Seite für den Elastic Agent, auf der Ihnen auch erklärt wird, wie Sie den Agent auf Ihren VMs installieren können. Nachdem Sie den Agent heruntergeladen und installiert haben, erscheint er automatisch in der Liste der Agents.
In Elastic Security müssen Sie die Integrationsrichtlinie der Elastic Endpoint-Agents konfigurieren. Die Agent-Richtlinie (Agent policy) enthält die Vorgaben für den Elastic Agent, während die Integrationsrichtlinie (Integration Policy) die Vorgaben für die vom Agent bereitgestellte Endpoint-Security-Integration enthält. Die Integrationsrichtlinie für die Endpoint-Security kann auf dem Elastic Security-Tab Administration festgelegt werden. Wählen Sie dazu unter Integration Policy die Integrationsrichtlinie für den gewünschten Agent aus.
Daraufhin wird die Seite mit den Einstellungen für die Integrationsrichtlinie geöffnet. Sorgen Sie dafür, dass die Einstellung Malware Protections Enabled eingeschaltet und für Protection Level die Option Detect ausgewählt ist (nicht Prevent). Wenn Sie „Malware Protections Enabled“ eingeschaltet haben und den Modus „Detect“ verwenden, werden Ihnen zwar entsprechende Malware-Alerts angezeigt, aber Elastic Security unternimmt nichts, die Malware zu stoppen.
Der nächste Schritt besteht darin, die Erkennungs-Engine in Elastic Security einzurichten sowie alle vordefinierten Elastic-Erkennungsregeln zu installieren. Das ist zwar für die Sandbox nicht unbedingt erforderlich, aber es geht schnell und trägt sehr häufig zur Erkennung der Aktivitäten der Malware bei, was die Gefahreneinschätzung vereinfacht. Klicken Sie zu diesem Zweck in Elastic Security auf den Tab Detections und klicken Sie dann auf Manage detection rules. Klicken Sie anschließend auf Load Elastic prebuilt rules and timeline templates. Beim ersten Mal müssen Sie dafür über Administratorrechte verfügen.
Nach dem Laden der Regeln müssen Sie alle Regeln aktivieren, die eingeschaltet werden sollen. Sie können die einzuschaltenden Regeln einzeln auswählen oder alle auf einmal einschalten. Alle Regeln einzuschalten, ist die einfachste Methode. Es schadet nichts, wenn alle Regeln aktiviert sind, auch wenn es für eine Regel gar keine Daten gibt.
Erfassen des Netzwerkverkehrs (optional)
Neben der Erfassung der Malware-Aktivität auf einem Host können Sie auch dessen von einem externen Host stammende Netzwerkaktivität erfassen. Das hat den Vorteil, dass Sie nicht nur sehen, dass etwas passiert ist, sondern auch welche Daten in den Netzwerkereignissen übertragen wurden. Das lässt sich auf verschiedene Art und Weise realisieren, aber ich verwende dafür gern eine separate VM, die den Netzwerkverkehr im selben virtuellen Netzwerk „belauscht“.
Zu diesem Zweck können Sie Packetbeat oder TShark und Filebeat verwenden. Mit Packetbeat erhalten Sie eine gute Übersicht über die Daten, ohne dass Ihr Stack von Ereignissen überschwemmt wird, während TShark und Filebeat eine komplette Paketerfassung an Elasticsearch senden. Für die Packetbeat-Konfiguration empfiehlt es sich, für die meisten Protokolle sowohl Anfrage als auch Reaktion und für den gesamten TLS-Verkehr die Rohzertifikate zu erfassen. Bei Malware kommen sehr häufig wiederverwendete TLS-Zertifikate zum Einsatz und diese können sich als Schatzgrube für die Namen von Schaddomains erweisen.
Sie haben jetzt eine fertige und testbereite Sandbox für die Malware-Analyse. Denken Sie daran, Snapshots Ihrer „sauberen“ VMs zu erstellen, bevor Sie damit beginnen, Malware auszuführen.
Analysieren von Malware
Hinweis: Denken Sie daran, niemals Live-Malware auf Ihrem Hostsystem zu öffnen. Wir empfehlen, die verdächtige Malware in einer passwortgeschützten ZIP-Datei zu speichern, um ein versehentliches Öffnen auszuschließen. Wenn möglich, laden Sie die Malware direkt in das Sandbox-System herunter. |
Für diesen Test habe ich ein Mitglied der Emotet-Malware-Familie zur Ausführung gebracht. Im konkreten Fall handelt es sich um ein Office-Dokument. Damit der Schadcode gestartet wird, muss der Nutzer Makros aktiviert haben. Wenn Sie die Malware-Schutzmaßnahmen in der Endpoint-Richtlinie nicht ausgeschaltet haben, wird die Malware von Elastic Security sofort unter Quarantäne gestellt – und Ihr Test ist zu Ende.
Nachdem Sie die Emotet-Malware in Ihrer VM gezündet haben, können Sie zu Elastic Security in Kibana zurückkehren und sich das Feuerwerk ansehen. Auf dem Tab „Detections“ werden wegen der Malware-Aktivität auf dem Host wahrscheinlich etliche neue Alerts zu sehen sein. Dem Screenshot unten können Sie entnehmen, dass es mehrere Alerts wegen der erstmaligen Entdeckung von Malware gab. Wenn wir in der Endpoint-Security-Richtlinie statt „Detect“ die Option „Prevent“ festgelegt hätten, wäre die Malware an diesem Punkt gestoppt und unter Quarantäne gestellt worden, sodass uns all die zusätzlichen Daten fehlen würden.
Wenn Sie auf das Symbol Ereignis analysieren für einen Alert klicken, wird die Analyzer-Ansicht geöffnet, in der in einem Baumdiagramm dargestellt wird, was passiert ist.
In diesem Beispiel habe ich mich entschieden, den merkwürdig aussehenden PowerShell-Befehl auszuwählen, um zu sehen, wie er in die Ausführungskette passt. Die Analyzer-Ansicht ist eine interaktive, hierarchische Ansicht der Ausführung der Software, die auf dem übergeordneten Prozess basiert. Die Linien, mit denen die Prozesse verbunden sind, zeigen den Zeitunterschied zwischen der Anfangszeit des übergeordneten Prozesses und dem untergeordneten Prozess. Wenn Sie in einen Knoten hineinzoomen, können Sie die Zahl der mit diesem Prozess verknüpften Ereignisse sehen.
Da ich herausfinden möchte, welche Schritte der PowerShell-Prozess ausgeführt hat, wähle ich den Knoten aus und sehe, dass mit diesem einen Prozess 27 separate Ereignisse verknüpft sind. Ich kann jede Kategorie einzeln auswählen, um zu sehen, welche Dateien dieser Prozess erstellt, welche Netzwerkverbindungen er hergestellt, welche Registry-Einträge er geändert und welche Bibliotheken er in den Arbeitsspeicher geladen hat.
Es gibt Malware, die nach einem Neustart nur bestimmte Funktionen lädt. Daher empfiehlt es sich, die VM neu zu starten und nach weiteren Alerts Ausschau zu halten, um eventuelle zusätzliche Aktivitäten aufzuspüren.
Da sich alle diese Informationen bereits in Elastic befinden, kann ich mir diese Ereignisse auch in einer der anderen Kibana-Apps, wie Dashboard oder Discover, ansehen und sie visualisieren. Wenn Sie zum Erfassen des Netzwerkverkehrs Packetbeat verwenden, stehen Ihnen in Kibana standardmäßig viele integrierte Dashboards und Visualisierungen für die verschiedenen Netzwerkprotokolle zur Verfügung.
Fazit
In diesem Blogpost haben wir uns damit beschäftigt, wie Sie mit Elastic schnell und einfach eine eigene Sandbox für die Malware-Analyse einrichten können. Innerhalb weniger Minuten erhalten Sie eine Sandbox, mit der Sie sicher Dateien öffnen und beobachten können, während alle auftretenden Ereignisse zur sicheren Offline-Analyse an Ihren Elastic Stack gesendet werden. Im InfoSec-Team von Elastic nutzen wir die Informationen aus diesen Dateien, um neue Erkennungsregeln aufzustellen und bisher noch unentdeckt gebliebene Angriffe auf das Netzwerk zutage zu fördern.
Sind Sie bereit loszulegen? Probieren Sie Elastic Cloud 14 Tage kostenlos aus (keine Kreditkarte erforderlich). Wenn Sie eine On-Premises-Bereitstellung bevorzugen, können Sie unsere Produkte auch herunterladen.