Erklären Sie gängige Prozessinjektions-Techniken und die API- und Verhaltenssignaturen, die sie verraten.
Kurzantwort
Prozessinjektion führt bösartigen Code in einem anderen Prozess aus, um sich zu verstecken und dessen Vertrauen zu erben. Die klassische Remote-Injektion reserviert Speicher in einem Ziel mit VirtualAllocEx, schreibt eine Payload per WriteProcessMemory und führt sie mit CreateRemoteThread aus. Varianten umfassen DLL-Injektion per LoadLibrary, Process Hollowing, das einen suspendierten legitimen Prozess aushängt und sein Image ersetzt, APC-Injektion, die Code in einen Thread einreiht, und reflektives oder manuell gemapptes Laden, das LoadLibrary ganz vermeidet. Man erkennt sie an den verräterischen API-Sequenzen, RWX-Speicher in einem normalerweise sauberen Prozess, Threads ohne Backing-Datei auf der Festplatte und Eltern-Kind-Anomalien.
Prozessinjektion erlaubt Malware, ihren Code in einem anderen Prozess auszuführen — um sich vor der Prozesslisten-Inspektion zu verstecken, Verteidigungen zu umgehen, die dem Host-Prozess vertrauen, und auf den Speicher eines anderen Programms zuzugreifen. Interviewer fragen Seniors danach, weil Injektion in moderner Malware allgegenwärtig ist und ihr Erkennen echtes Wissen über Windows-Internals erfordert.
Die klassische Technik
Die Remote-Thread-Injektion folgt einer erkennbaren API-Sequenz:
OpenProcess, um ein Handle auf das Ziel zu erhalten.VirtualAllocEx, um Speicher im Ziel zu reservieren — häufig als RWX (lesbar, schreibbar, ausführbar).WriteProcessMemory, um die Payload hineinzukopieren.CreateRemoteThread(oderNtCreateThreadEx/QueueUserAPC), um sie auszuführen.
Diese Kette in den Imports oder zur Laufzeit zu sehen, ist ein nahezu sicheres Injektions-Anzeichen.
Gängige Varianten
- DLL-Injektion. Einen DLL-Pfad in das Ziel schreiben und
LoadLibraryüber einen Remote-Thread aufrufen, damit der Loader Ihre DLL mappt. - Process Hollowing. Einen legitimen Prozess suspendiert starten (
CREATE_SUSPENDED), sein Original-Image aushängen, ein bösartiges Image an dessen Stelle schreiben, den Einsprungpunkt korrigieren und fortsetzen — der Prozess wirkt dem Namen nach legitim, führt aber Angreifercode aus. - APC-Injektion. Einen asynchronen Prozeduraufruf in einen vorhandenen alertable Thread einreihen, sodass die Payload läuft, wenn dieser Thread das nächste Mal in einen alertable Wait eintritt.
- Reflektives / manuelles Mapping. Die Payload mappt sich selbst in den Speicher und löst ihre eigenen Imports auf, ohne je LoadLibrary aufzurufen, und besiegt so Erkennungen, die den Loader hooken.
Wie man es erkennt
Verhaltensbasiert: privater RWX-Speicher in einem Prozess, der normalerweise keinen hat, Threads ohne Backing-Datei auf der Festplatte, eine Eltern-Kind-Beziehung, die keinen Sinn ergibt (z. B. winword.exe, der cmd.exe startet), und die oben genannten API-Sequenzen, die von EDR oder in einem Debugger erfasst werden. In der Speicherforensik markieren Werkzeuge wie Volatilitys malfind injizierte Regionen. Eine Senior-Antwort verknüpft jede Technik mit ihrem API-Fußabdruck und dem Artefakt, das sie hinterlässt.
Wahrscheinliche Anschlussfragen
- Wie unterscheidet sich Process Hollowing von der klassischen CreateRemoteThread-Injektion?
- Warum ist RWX-Speicher ohne Backing-Datei ein starker Injektions-Indikator?
- Wie umgeht reflektives DLL-Laden Erkennungen, die LoadLibrary hooken?