Melden Sie den gesamten in Ihrem Netzwerk ausgeführten Binärcode mit Sysmon-Ereignis-IDs
Von Randy Franklin Smith
Computer tun, was ihnen gesagt wird, egal ob gut oder schlecht. Eine der besten Möglichkeiten, Eindringlinge zu erkennen, besteht darin, zu erkennen, wann Computer fehlerhafte Anweisungen befolgen - sei es in Binärform oder in einer höheren Skriptsprache. Wir werden in Zukunft über Skripte sprechen, aber in diesem Artikel möchte ich mich auf die Überwachung der Ausführung von Binärdateien in Form von EXE-Dateien, DLLs und Gerätetreibern konzentrieren.
Das Windows-Sicherheitsprotokoll ist in diesem Bereich nicht sehr stark. Die Event-ID 4688 teilt Ihnen mit, wenn ein Prozess gestartet wird, und gibt den Namen der EXE-Datei an - in aktuellen Windows-Versionen erhalten Sie dankenswerterweise den vollständigen Pfad - in älteren Versionen nur den Dateinamen selbst. Aber selbst der vollständige Pfadname reicht nicht aus. Dies liegt daran, dass es sich lediglich um den Namen der Datei handelt; Der Name sagt nichts über den Inhalt der Datei aus. Und das ist es, worauf es ankommt, denn wenn wir sehen, dass c:windowsnotepad.exe ausgeführt wurde, woher wissen wir dann, ob es wirklich die harmlose notepad.exe von Microsoft war? Es könnte sich um ein völlig anderes Programm handeln, das durch einen Eindringling vollständig ersetzt wurde, oder bei komplexeren Angriffen um eine modifizierte Version von notepad.exe, die wie Notepad aussieht und sich verhält, aber auch anderen Schadcode ausführt.
Anstelle nur des Namens der Datei benötigen wir tatsächlich einen Hash ihres Inhalts. Ein Hash ist ein relativ kurzer mathematischer Auszug endlicher Länge des Bitstroms der Datei. Wenn Sie ein oder mehrere Teile der Datei ändern, erhalten Sie einen anderen Hash. (Aufmerksame Leser werden erkennen, dass das nicht immer wahr sein kann - aber im Hinblick auf die probabilistische Sicherheit ist es mehr als gut genug, um als wahr angesehen zu werden.)
Leider zeichnet das Sicherheitsprotokoll den Hash von EXE-Dateien in der Ereignis-ID 4688 nicht auf, und selbst wenn dies der Fall wäre, würden nur EXE-Dateien erfasst - was ist mit DLLs und Gerätetreibern? Die internen Sicherheitsteams von Microsoft erkannten diese Bedarfslücke sowie einige, die offenbar dazu führten, dass Mark Russinovich et al. Sysmon schrieben. Sysmon ist ein kleines und effizientes Programm, das Sie auf allen Endpunkten installieren und das eine Reihe wichtiger Sicherheitsereignisse generiert, die im Windows-Sicherheitsprotokoll „fehlen“. Insbesondere Sysmon-Protokolle:
- Ereignis-ID 1 - für die Prozesserstellung (d. h. eine EXE-Datei wurde gestartet)
- Ereignis-ID 6 - Treiber geladen
- Ereignis-ID 7 - Bild geladen (d. h. eine DLL wurde geladen)
Zusammen erstellten diese drei Ereignisse einen vollständigen Prüfdatensatz jeder Binärdatei, die auf einem System geladen (und wahrscheinlich ausgeführt) wurde, auf dem sysmon installiert ist.
Diese Ereignisse decken jedoch nicht nur DLLs und Treiber ab, sondern stellen auch den Hash des Dateiinhalts zum Zeitpunkt des Ladens bereit. Das folgende Ereignis zeigt beispielsweise, dass Chrome.exe ausgeführt wurde und teilt uns mit, dass der SHA-256-Bit-Hash 6055A20CF7EC81843310AD37700FF67B2CF8CDE3DCE68D54BA42934177C10B57 war.
Prozess erstellen:
UTC-Zeit: 28.04.2017 22:08:22.025
ProcessGuid: {a23eae89-bd56-5903-0000-0010e9d95e00}
Prozess-ID: 6228
Bild: C:Programme (x86)GoogleChromeApplicationchrome.exe
Befehlszeile: „C:Programme (x86)GoogleChromeApplicationchrome.exe“ -type=utility -lang=en-US -no-sandbox -service-request-channel-token=F47498BBA884E523FA93E623C4569B94 -mojo-platform-channel-handle=3432 /prefetch :8
Aktuelles Verzeichnis: C:Programme (x86)GoogleChromeApplication58.0.3029.81
Benutzer: LABrsmith
LogonGuid: {a23eae89-b357-5903-0000-002005eb0700}
Anmelde-ID: 0x7EB05
TerminalSessionId: 1
Integritätsniveau: Mittel
Hashes: SHA256=6055A20CF7EC81843310AD37700FF67B2CF8CDE3DCE68D54BA42934177C10B57
ParentProcessGuid: {a23eae89-bd28-5903-0000-00102f345d00}
ParentProcessId: 13220
Übergeordnetes Bild: C:Programme (x86)GoogleChromeApplicationchrome.exe
ParentCommandLine: „C:Programme (x86)GoogleChromeApplicationchrome.exe“
Vorausgesetzt, wir haben die Fähigkeit, Hashes zu analysieren und zu speichern, können wir erkennen, wann immer eine neue Binärdatei in unserem Netzwerk ausgeführt wird.
>Mit Sysmon können Sie Einschluss- und Ausschlussregeln erstellen, um zu steuern, welche Binärdateien protokolliert und welche Hashes basierend auf einer XML-Konfigurationsdatei berechnet werden, die Sie Sysmon zum Zeitpunkt der Installation oder jederzeit danach mit dem Befehl /c bereitstellen. Sysmon lässt sich einfach aus der Ferne installieren, indem Sie „Geplante Aufgaben“ im Abschnitt „Einstellungen“ der Gruppenrichtlinie verwenden. In unserer Umgebung speichern wir unsere Datei sysmon.xml zentral und lassen unsere Systeme diese Konfigurationsdatei regelmäßig erneut anwenden, falls sie sich ändert. Achten Sie natürlich darauf, die Berechtigungen dort, wo Sie diese Konfigurationsdatei speichern, sorgfältig zu kontrollieren.
Nur weil Sie einen neuen Hash sehen, heißt das nicht unbedingt, dass Sie gehackt wurden. Windows-Systeme werden ständig mit Patches von Microsoft und Drittanbietern aktualisiert. Eine der besten Möglichkeiten, zwischen legitimen Patches und böswilligen Dateiersetzungen zu unterscheiden, besteht darin, bekannte Programme von Systemen, die frühzeitig gepatcht wurden, regelmäßig auf die Whitelist zu setzen - beispielsweise Patch-Testsysteme.
Sobald Sysmon installiert ist, müssen Sie das Sysmon-Ereignisprotokoll von jedem Endpunkt erfassen und diese Ereignisse dann analysieren, um neue Software zu erkennen. EventTracker ist eine großartige Technologie zur Erfüllung dieser beiden Aufgaben.