Red Team Tactics: Fortgeschrittene Prozessüberwachungstechniken in offensiven Operationen

Hallo wieder. Am Vorabend des Pentest. Penetrationstestpraxis “hat ein weiteres interessantes Material für Sie übersetzt.




In diesem Artikel werden wir die Funktionen bekannter Dienstprogramme zur Prozessüberwachung verstehen und zeigen, wie die diesen Tools zugrunde liegende Technologie für offensive Operationen des Roten Teams verwendet wird.

Ein gutes technisches Verständnis des Systems, auf das wir uns verlassen, ist ein Schlüsselkriterium für Entscheidungen über den nächsten Schritt des Vorgangs. Die Erfassung und Analyse von Daten zur Ausführung von Prozessen in gefährdeten Systemen liefert uns eine Fülle von Informationen und hilft uns zu verstehen, wie die IT-Infrastruktur der Zielorganisation funktioniert. Darüber hinaus helfen uns regelmäßig angeforderte Prozessdaten, auf Umweltveränderungen zu reagieren und Triggersignale zu empfangen, wenn eine Untersuchung beginnt.

Um detaillierte Daten zu Prozessen an gefährdeten Endpunkten erfassen zu können, haben wir eine Reihe von Tools erstellt, die die Leistungsfähigkeit fortschrittlicher Prozessdienstprogramme und C2-Frameworks (wie Cobalt Strike) zusammenführen.

Tools (und deren Quellcode) finden Sie hier .

Windows-Dienstprogramme für interne Systeme


Zunächst werden wir herausfinden, mit welchen Dienstprogrammen Informationen zu Computerprozessen unter Windows erfasst werden können. Anschließend erfahren wir, wie diese Dienstprogramme Informationen sammeln, damit sie später in Red Team-Toolkits verwendet werden können.

Das Windows-Betriebssystem ist mit vielen vorgefertigten Dienstprogrammen zur Verwaltung des Systems ausgestattet. Obwohl die meisten der bereitgestellten Tools für grundlegende Systemverwaltungszwecke geeignet sind, verfügen einige von ihnen nicht über die erforderlichen Funktionen für die erweiterte Fehlerbehebung und Überwachung. Der Windows-Task-Manager gibt uns beispielsweise grundlegende Informationen zu allen im System ausgeführten Prozessen. Was ist jedoch, wenn wir detailliertere Informationen benötigen, z. B. Objektbeschreibungen, Netzwerkverbindungen oder Module, die als Teil eines bestimmten Prozesses geladen werden?

Um solche Informationen zu sammeln, gibt es ein erweitertes Tool. Zum Beispiel Systemdienstprogramme des Sysinternals- Pakets. Als Red Team-Mitglied mit umfassender Erfahrung in der Netzwerk- und Systemadministration war ich schon immer ein großer Fan von Sysinternals.

Bei der Fehlerbehebung bei einem langsam laufenden Serversystem oder einem infizierten Clientcomputer habe ich meistens mit der Fehlerbehebung mithilfe von Tools wie Process Explorer oder Procmon begonnen.
Aus Sicht der digitalen Forensik scheinen diese Tools auch sehr nützlich zu sein, um grundlegende dynamische Analysen von Malware-Beispielen durchzuführen und nach Artefakten in infizierten Systemen zu suchen. Warum sind diese Tools sowohl bei Systemadministratoren als auch bei Sicherheitsexperten so beliebt? Lassen Sie es uns herausfinden und einige Prozessinformationen untersuchen, die wir mit dem Prozess-Explorer-Tool erhalten können.

Prozess-Explorer verwenden


Das erste, was wir beim Starten von Process Explorer sehen, ist eine Liste / ein Baum aller laufenden Prozesse des Systems. Dies gibt uns Informationen über die Namen von Prozessen, ihre Kennungen, den Kontext des Benutzers und den Grad der Integrität der Prozess- und Versionsinformationen. Zusätzliche Informationen können auch durch entsprechende Anpassung der Spalten wiedergegeben werden.



Wenn wir das untere Bedienfeld verwenden, können wir alle von einem bestimmten Prozess geladenen Module anzeigen oder zur Anzeige von Deskriptoren wechseln, um uns mit allen benannten Deskriptorobjekten vertraut zu machen, die vom Prozess verwendet werden:



Das Durchsuchen der Module kann hilfreich sein, wenn Sie nach schädlichen Bibliotheken suchen, die im Prozess geladen wurden, oder wenn Red Team ein aktives Sicherheitsprodukt (z. B. EDR) ist, das ein Modul für die Verbindung über eine API im Benutzermodus implementiert hat.



Wenn Sie zur Anzeige von Deskriptoren wechseln, können Sie sich mit dem Typ und dem Namen aller im Prozess verwendeten benannten Objekte vertraut machen. Dies kann hilfreich sein, um herauszufinden, welche Dateien und Registrierungsschlüssel geöffnet sind und welche Named Pipes für die Interprozesskommunikation verwendet werden.
Wenn Sie auf den Prozessnamen doppelklicken, wird ein Fenster mit detaillierteren Informationen angezeigt. Schauen wir uns einige Registerkarten an, um mehr über die zusätzlichen Eigenschaften des Objekts zu erfahren:



Registerkarte BildZeigt Informationen zum Binärpfad, zum Arbeitsverzeichnis und zu den Befehlszeilenoptionen an. Darüber hinaus werden Informationen zum Benutzerkontext, zum übergeordneten Prozess, zum Bildtyp (x86 oder x64) und vielem mehr angezeigt.



Die Registerkarte Threads enthält Informationen zum Ausführen von Threads im Prozess. Wenn Sie einen Stream auswählen und dann darauf klicken, zeigt die Schaltfläche "Stapel" den Aufrufstapel für diesen bestimmten Stream an. Zum Anzeigen von Threads / Aufrufen, die im Kernelmodus gestartet wurden, verwendet Process Explorer den Kerneltreiber, der installiert wird, wenn im erhöhten Modus gearbeitet wird.

Aus Sicht von DFIR sind Thread-Informationen nützlich, um Injektionen in den Speicher zu erkennen, beispielsweise wenn die Gefahr von dateifreien Viren besteht. Daher können Streams, die nicht durch Dateien auf der Festplatte gesichert sind, verdächtiges Verhalten anzeigen. Für weitere Informationen zu Threads und Speicher empfehle ich dringend, das Process Hacker- Tool zu beachten .



Eine weitere interessante Registerkarte im Prozess-Explorer ist die Registerkarte TCP / IP. Darauf sehen Sie alle Netzwerkverbindungen, die mit diesem Prozess verbunden sind. Unter Angriffssicht kann dies hilfreich sein, um zu verstehen, wann eine Verbindung von einem kompromittierten System hergestellt wird. Eine eingehende PowerShell-Remotesitzung oder RDP-Sitzung kann signalisieren, dass eine Untersuchung bereits begonnen hat.

Verwenden Sie die für den Angriff beschriebenen Methoden


Nachdem wir einige interessante Dinge über Prozesse und die Informationen erfahren haben, die wir mit Process Explorer über sie sammeln können, fragen Sie sich möglicherweise, wie Sie über unsere bevorzugten C2-Frameworks auf diese Informationen zugreifen können. Natürlich könnten wir PowerShell verwenden, da dies uns die Möglichkeit geben würde, eine leistungsstarke Skriptsprache und eine Windows-API zu verwenden. Heute steht PowerShell jedoch unter ständiger Aufsicht des Sicherheitsdienstes. Daher versuchen wir, diese Methode zu vermeiden.

In Cobalt Strike können wir den Befehl ps im Kontext von Beacons verwenden. Dieser Befehl zeigt grundlegende Informationen zum Prozess basierend auf allen im System ausgeführten Prozessen an. In Kombination mit einem Skript @r3dQu1nn ProcessColorist diese Methode wahrscheinlich die beste, um Prozessdaten abzurufen.

Die Ausgabe des Befehls ps ist nützlich, um laufende Prozesse schnell zu sortieren. Sie enthält jedoch keine detaillierten Informationen, die Ihnen helfen würden, das System besser zu verstehen. Um detailliertere Informationen zu sammeln, haben wir eigene Dienstprogramme erstellt, um Informationen zu Prozessen zu erhalten. Mit ihrer Hilfe können wir Informationen sammeln und anreichern, die aus kompromittierten Systemen stammen.

Ps Tools


Es ist nicht einfach, die Funktionen und Informationen eines Tools wie Process Explorer zu replizieren. Zuerst müssen wir herausfinden, wie diese Tools unter der Haube (und im Benutzermodus) funktionieren, dann müssen wir verstehen, wie diese Informationen in der Konsole und nicht in der grafischen Oberfläche besser wiedergegeben werden können.

Nach der Analyse des Quellcodes wurde deutlich, dass viele einfache Tools zur Bereitstellung von Systeminformationen weitgehend auf der nativen NtQuerySystemInformation- API basieren . Obwohl die API und die zugehörigen Strukturen nicht vollständig dokumentiert sind, können Sie mit dieser API viele Informationen über das Windows-System sammeln. Verwenden Sie also NtQuerySystemInformationAls Ausgangspunkt für das Sammeln von Informationen zu den im System ausgeführten Prozessen verwenden wir die PEB einzelner Prozesse, um detaillierte Informationen zu jedem dieser Prozesse zu sammeln. Mit der NtQueryInformationProcess- API können wir die Struktur PROCESS_BASIC_INFORMATIONmithilfe des Prozessdeskriptors lesen und finden PebBaseAddress. Dann verwenden wir die NtReadVirtualMemoryAPI, um die Struktur zu lesen RTL_USER_PROCESS_PARAMETERS, wodurch wir die Parameter ImagePathNameund den CommandLineProzess herausfinden können.

Mit diesen APIs als Grundlage für unseren Code haben wir die folgenden Tools geschrieben, um Informationen zu Prozessen zu erhalten:

  • Psx : Zeigt eine detaillierte Liste aller auf dem System ausgeführten Prozesse an.
  • Psk : Zeigt Kernelinformationen an , einschließlich geladener Treiber.
  • Psc: TCP-.
  • Psm: ( , ).
  • Psh: (, , ).
  • Psw: .

Alle diese Tools sind in C als reflektierende DLLs geschrieben und können mithilfe eines C2-Frameworks wie Cobalt Strike (oder eines anderen Frameworks, das reflektierende DLL-Injektionen unterstützt) reflexiv in einen gespawnten Prozess eingebettet werden. Für Cobalt Strike haben wir ein Aggressor-Skript hinzugefügt, mit dem Tools mithilfe des Cobalt Strike-Skript-Managers geladen werden können.

Schauen wir uns jedes spezifische Tool an, das in Cobalt Strike gestartet wurde, um die Funktionalität zu demonstrieren und zu zeigen, welche Informationen damit gesammelt werden können:

Psx


Dieses Tool zeigt eine detaillierte Liste aller auf dem System ausgeführten Prozesse. Die Ausgabe kann mit den Informationen auf dem Hauptbildschirm des Prozess-Explorers verglichen werden. Psx zeigt den Namen des Prozesses, seine ID, die übergeordnete PID, die Erstellungszeit und Informationen zu den Binärdateien des Prozesses (Architektur, Firmenname, Version usw.) an. Wie Sie sehen können, werden auch einige interessante Informationen aus dem aktiven Kernel des Systems angezeigt, z. B. die Basisadresse des Kernels, die beim Betrieb des Kernels hilfreich ist (z. B. zum Berechnen der Offsets von ROP-Gadgets). Alle diese Informationen können aus einem normalen Benutzerkontext (ohne Erhöhung der Berechtigungen) erfasst werden.



Wenn wir über genügend Berechtigungen zum Öffnen des Prozessdeskriptors verfügen, können Sie zusätzliche Informationen lesen, z. B. den Kontext des Benutzers und die Integritätsstufe seines Tokens. Durch Auflisten von PEB und verwandten Strukturen können Sie Informationen über den Bildpfad und die Befehlszeilenparameter abrufen:



Wie Sie vielleicht bemerkt haben, lesen und zeigen wir Versionsinformationen aus binären Prozessabbildern an, z. B. Firmenname und Beschreibung. Wenn Sie den Namen des Unternehmens kennen, können Sie problemlos alle aktiven Sicherheitsprodukte im System auflisten. Mit diesem Tool vergleichen wir die Namen von Unternehmen aller aktiven Prozesse mit einer Liste bekannter Anbieter von Sicherheitsprodukten und zeigen die Ergebnisse an:



Psk


Dieses Tool enthält Informationen zum laufenden Kernel, einschließlich aller geladenen Treibermodule. Wie das Psx-Tool bietet es auch eine Zusammenfassung aller geladenen Kernelmodule bekannter Sicherheitsprodukte.



Psc


Dieses Tool verwendet dieselben Methoden zum Anzeigen von Informationen zu aktiven Prozessen wie Psx , außer dass nur Prozesse mit einer aktiven Netzwerkverbindung (IPv4, IPv6 TCP, RDP, ICA) angezeigt werden:



Psm


Mit diesem Tool können Sie detaillierte Informationen zu einem bestimmten Prozess abrufen. Es wird eine Liste aller Module (DLLs) angezeigt, die vom Prozess und der Netzwerkverbindung verwendet werden:



Psh


Wie Psm , jedoch anstelle der geladenen Module wird eine Liste der Prozessdeskriptoren angezeigt :



Psw


Das letzte wichtige Psw- Tool . Dieses Tool zeigt eine Liste von Prozessen mit aktiven Fensterhandles an, die auf dem Desktop des Benutzers geöffnet sind, einschließlich Fenstertiteln. Dies ist nützlich, um festzustellen, welche grafischen Anwendungsoberflächen der Benutzer öffnet, ohne Screenshots vom Desktop machen zu müssen:



Anwendungsfälle


Sie fragen sich vielleicht: "Und wie hilft uns das alles bei offensiven Operationen?" Nachdem wir Zugriff auf ein gefährdetes Asset erhalten haben, verwenden wir diese Informationen normalerweise für folgende Zwecke:

  • Erkennen Sie Sicherheitstools für ein gefährdetes Asset. Nicht nur nach Prozessinformationen, sondern auch nach geladenen Modulen.
  • Benutzerdefinierte Hakenmotoren erkennen.
  • Suchen Sie nach Möglichkeiten für Manöver (durch Netzwerksitzungen) und die Eskalation von Berechtigungen.

Nach dem ersten Kompromiss können Sie regelmäßig ähnliche Informationen zu den Prozessen anfordern und mit der Erstellung von Triggern beginnen. Beispielsweise geben wir diese Informationen automatisch in RedELK ein . Anschließend können Sie Warnungen zu verdächtigen Änderungen an Prozessinformationen erstellen, z.

  • Starten Sie ein Sicherheitsüberprüfungstool oder installieren Sie ein neues Endpunkt-Sicherheitsprodukt.
  • Eingehende Netzwerkverbindungen von der Sicherheitsabteilung über eine RDP-Sitzung oder Remote-PowerShell.
  • Öffnen eines Handles durch einen anderen Prozess für eines unserer schädlichen Artefakte (z. B. eine Datei, mit der die Präsenz erhalten bleibt).

Fazit


In diesem Artikel haben wir gezeigt, wie Tools wie Sysinternals Process Explorer verwendet werden können, um detaillierte Informationen zu den auf dem System ausgeführten Prozessen abzurufen, und wie diese Informationen Administratoren und Sicherheitsexperten bei der Fehlerbehebung und Überprüfung des Systems auf Sicherheitsprobleme oder helfen können Performance.

Dieselben Informationen sind auch für Red Team relevant und nützlich, die während des Betriebs Zugriff auf gefährdete Systeme haben. Es hilft, das System und die IT-Infrastruktur Ihres Ziels besser zu verstehen, und die regelmäßige Befragung eines solchen Systems ermöglicht es dem Roten Team, auf mögliche Änderungen in der Umgebung (z. B. einen Auslöser für Ermittlungen) zu reagieren.

Wir haben einige der Funktionen von Tools wie Process Explorer repliziert, damit wir dieselben Informationen bei anstößigen Vorgängen verwenden können. Zu diesem Zweck wurden mehrere Tools zur Prozessüberwachung erstellt, die als Teil des C2-Frameworks verwendet werden können, z. B. Cobalt Strike. Wir haben gezeigt, wie Sie diese Tools verwenden und welche Informationen Sie zum Sammeln verwenden können.

Diese Tools sind auf unserer GitHub-Seite verfügbar und können als Teil von Cobalt Strike verwendet werden.



Erfahren Sie mehr über den Kurs.



All Articles