Heim >Betrieb und Instandhaltung >Sicherheit >Drei Prozessinjektionstechniken in der Mitre ATT&CK-Matrix
Drei Prozessinjektionstechniken in der Mitre ATT&CK-Matrix: klassische Prozessinjektion, Process Hollowing
und Process Doppelgänging
.
Der Hauptzweck von Malware mithilfe von Prozessinjektion besteht im Allgemeinen darin, die Erkennung durch Antivirensoftware zu vermeiden oder Vorgänge zur Rechteausweitung durchzuführen. Hier werden wir hauptsächlich die drei Methoden im ersten Fall ausführlich besprechen.
1: Klassische Prozessinjektion (DLL-Injektion)
Dies ist die klassischste Methode, und der Prozess ist auch sehr einfach und klar:
OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread
2: Process Hollowing
Dies ist eine sehr alte Methode, die im Chinesischen allgemein mit „Erstellen einer Puppe“ übersetzt wird Prozess“ „Der mit dieser Methode erstellte Prozess kann als jeder legale Prozess getarnt werden, z. B. als IE. Wenn er mit dem Prozess-Hacker im Speicher angezeigt wird, sind seine Symbolressourcen, seine Beschreibung und seine digitale Signatur alle die Werte des IE. Dies kann für Rettungskräfte während der Untersuchung schwierig zu erkennen sein.
Fassen Sie diese Methode in prägnanter Sprache zusammen: Der böswillige Prozess erstellt zunächst einen Prozess im angehaltenen Zustand, bricht dann seine ursprüngliche Speicherzuordnung ab, ersetzt sie durch vorbereiteten bösartigen Code und führt dann Vorgänge auf dem aus Geänderte Bilddatei. Stellen Sie den laufenden Status des Prozesses nach der Umleitung wieder her.
Implementierungsideen:
1. Erstellen Sie den Zielprozess über CreateProcess und übergeben Sie den Parameter CREATE_SUSPENDED, um den Prozess anzuhalten
2 . Durch NtQueryProcessInformation Holen Sie sich die Basisadresse der Bilddatei im Speicher des Zielprozesses. (PEB-Blockdatenstruktur)
3. Löschen Sie die Speicherdaten (Abschnitt) des Zielprozesses über NtUnmapViewOfSection. Die eingehenden Parameter sind das Prozesshandle und die Basisadresse des Bilddatei
4 Beantragen Sie neuen Speicher über VirtualAllocEx (die Startadresse ist die Basisadresse der vorherigen Bilddatei und die Größe ist die Größe der Nutzlast)
5. Schreiben Sie die Nutzlast in den Speicher
6. Leiten Sie die Basisadresse der in den Speicher geschriebenen Nutzlast um
7 Ziel-Thread über GetThreadContext und ändern Sie das EAX-Register des Kontexts in „Code-Einstiegspunkt korrigieren“
8. Legen Sie den Einstiegspunkt über „SetThreadContext“ fest
9
Konfrontationsideen:
Aus der Umsetzung Aus der Idee geht hervor, dass die Schritte 1, 4, 5, 6, 7, 8 und 9 herkömmliche Methoden zum Erstellen eines Prozesses und anschließenden Injizierens sind es selbst. Lediglich die Schritte 2 und 3 sind etwas Besonderes. Es kann mithilfe herkömmlicher Erkennungsmethoden wie Hook-Key-Funktionen erkannt werden.
Drei: Prozess-Doppelgänging
Dies ist eine relativ neue Injektionsmethode, die erstmals 2017 auf der europäischen Black-Hat-Konferenz vorgeschlagen wurde. Diese Methode ähnelt im Prinzip und in der Leistung dem Process Hollowing. Wenn der mit Process Doppelgänging erstellte Prozess mit Process Hacker im Speicher angezeigt wird, sind seine Symbolressourcen, Beschreibung und digitalen Signatur alle angegebenen Zielprogramme.
Diese Methode nutzt die Eigenschaften der Windows-Transaktion (TxF) und überschreibt mit schädlichen Dateien legitime Dateien in der Transaktion. Zu diesem Zeitpunkt wird die Transaktion nicht übermittelt (d. h. das Überschreiben findet nicht statt). der Festplatte) und dann wird ein Abschnitt erstellt (derzeit Kopie der Transaktion). Nach Erhalt des Abschnittshandles wird die Transaktion zurückgesetzt, um zu verhindern, dass schädliche Dateien tatsächlich legitime Dateien auf der Festplatte überschreiben. Danach wird das Handle des Abschnitts im Speicher zum Erstellen des Prozesses verwendet. Der erstellte Prozess verfügt über Informationen zu legalen ausführbaren Dateien.
Wie Sie sehen können, erfordert diese Methode eine Schreibberechtigung für die Zieldatei, da die Datei in der Transaktion überschrieben werden muss.
Implementierungsideen:
1. Erstellen Sie ein TxF-Transaktionsobjekt (NtCreateTransaction)
2. Öffnen Sie legal ausführbare Dateien mit der Transaktions-API. das heißt, Hinzufügen der Datei zum Transaktionsobjekt (CreateFileTransacted)
3. Öffnen Sie die schädliche Datei und weisen Sie ihr Speicherplatz zu (CreateFile, GetFileSizeEx -> NtAllocateVirtualMemory -> ; ReadFile)
4. Überschreiben Sie die legitime ausführbare Datei in der Transaktion mit der schädlichen Datei im Speicher (WriteFile)
5 die aktuelle Transaktion (NtCreateSection)
6. Setzen Sie die Transaktion zurück und stellen Sie die gerade überschriebene Datei in einer legalen ausführbaren Datei wieder her (NtRollbackTransaction)
7. Verwenden Sie den Abschnitt im Speicher, um den Prozess zu erstellen Objekt (NtCreateProcessEx)
8. Ermitteln Sie den Eintrittspunkt der Schaddatei, erstellen Sie einen Prozessparameterblock und schreiben Sie dann den Prozessblock in den Prozessspeicher (NtQueryInformationProcess -> ;RtlInitUnicodeString -> RtlCreateProcessParametersEx)
9. Aktualisieren Sie den Prozessparameterblock im PEB, erstellen Sie einen Thread für das Zielprozessobjekt und führen Sie Schadcode aus (NtCreateThreadEx)
Gegenmaßnahmen:
Anhand der Schritte kann Hook diese Technik erkennen, indem er Schlüsselfunktionen beurteilt (z. B. NtCreateThreadEx).
Zusammenfassung
Aus der Entwicklung der oben genannten drei Techniken lassen sich mehrere Trends erkennen.
Der erste Punkt ist, dass die Fähigkeit zur Verschleierung im Gedächtnis immer stärker wird. Von Anfang an gab es überhaupt keine Verschleierung, bis jetzt kann es sich im Gedächtnis im Einklang mit dem rechtlichen Programm verhalten.
Zweitens: Die Methode zum Freigeben von Nutzlasten in den Speicher wird immer schwieriger zu erkennen. Ursprünglich wurden Nutzlasten direkt in den Speicher kopiert. Jetzt können Angreifer einige Funktionen (z. B. TxF) nutzen, um den Freigabevorgang noch weiter zu verbergen.
Der dritte Punkt ist, dass die Schlüsselfunktionen in der Endphase fast keine Änderungen aufweisen. Auch wenn die Freigabe der Nutzlast immer mehr verborgen bleibt, wird sie dennoch in den Speicher freigegeben und zur Ausführung aufgerufen. Durch die Einbindung einer begrenzten Anzahl wichtiger Funktionen sollte die endgültige Nutzlast entsorgt werden.
Weitere verwandte Tutorial-Empfehlungen: Webserver-Sicherheit
Das obige ist der detaillierte Inhalt vonDrei Prozessinjektionstechniken in der Mitre ATT&CK-Matrix. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!