
Eine Sammlung von Samples und Material im Zusammenhang mit Process Injection
Eine umfassende Sammlung von Prozessinjektions-Techniken für Linux, die verschiedene Methoden zur Injektion von Code in laufende Prozesse demonstriert. Diese Beispiele dienen zu Bildungszwecken, für Sicherheitsforschung und zum Verständnis der Low-Level-Prozessmanipulation unter Linux.
Prozessinjektion ist eine Technik, um Code im Kontext eines anderen Prozesses auszuführen. Obwohl sie oft mit Malware in Verbindung gebracht wird, sind diese Techniken auch wertvoll für:
Verzeichnis: ptrace/
Die klassische Methode der Prozessinjektion, die den Systemaufruf ptrace() verwendet, um Shellcode direkt in den Speicher eines Prozesses zu schreiben und die Ausführung umzuleiten.
Hauptmerkmale:
Anwendungsfall: Verständnis der Low-Level-Prozesssteuerung und direkter Code-Injektion
Verzeichnis: ld_preload/
Funktionsinterposition mithilfe der Umgebungsvariable LD_PRELOAD, um vor allen anderen Bibliotheken eine schädliche Bibliothek zu laden.
Hauptmerkmale:
Anwendungsfall: Funktion-Hooking, API-Überwachung, Verhaltensänderung
Verzeichnis: proc_mem/
Direktes Schreiben in den Speicher über die Dateisystemschnittstelle /proc/<pid>/mem, kombiniert mit ptrace zur Prozesssteuerung.
Hauptmerkmale:
Anwendungsfall: Schnelle Massen-Speicherinjektion, Umgehung der Einschränkungen von ptrace
Verzeichnis: dlopen_inject/
Anspruchsvolle Technik, die einen laufenden Prozess dazu zwingt, eine gemeinsame Bibliothek zu laden, indem die Ausführung gekapert wird, um dlopen() aufzurufen.
Hauptmerkmale:
Anwendungsfall: Fortgeschrittene persistente Injektion, Laufzeit-Manipulation von Bibliotheken
# Ptrace-Injektion erstellen
cd ptrace && make all
# LD_PRELOAD-Injektion erstellen
cd ../ld_preload && make all
# /proc/mem-Injektion erstellen
cd ../proc_mem && make all
# dlopen-Injektion erstellen
cd ../dlopen_inject && make all
Jede Technik folgt einem ähnlichen Muster:
Opferprozess starten:
cd <technique>/victim-process
./sample
Die angezeigte PID notieren
Injektion durchführen:
cd <technique>
sudo ./<injector> <PID> [zusätzliche Argumente]
Ergebnisse beobachten: Die Ausgabe des Opferprozesses auf die Ausführung des injizierten Codes prüfen
Technikspezifische Anweisungen finden Sie in den jeweiligen README-Dateien.
| Technik | Komplexität | Tarnung | Persistenz | Geschwindigkeit | Funktioniert bei laufendem Prozess |
|---|---|---|---|---|---|
| ptrace | Mittel | Niedrig | Nein | Mittel | Ja |
| LD_PRELOAD | Niedrig | Sehr niedrig | Nein | Schnell | Nein |
| /proc/mem | Mittel | Niedrig | Nein | Schnell | Ja |
| dlopen | Hoch | Mittel | Ja | Mittel | Ja |
Yama ptrace_scope: ptrace auf privilegierte Benutzer beschränken
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor: Obligatorische Zugriffskontrollen
Überwachung: auditd verwenden, um ptrace- und Prozessinjektionsversuche zu protokollieren
auditctl -a exit,always -F arch=b64 -S ptrace
Laufzeit-Integritätsprüfung: Prozessspeicher regelmäßig verifizieren
Codesignierung: Signaturen von Bibliotheken verifizieren
/proc/<pid>/maps auf unerwartete Speicherbereiche oder Bibliotheken überwachenlsof, pmap und Prozessüberwachungsprogramme verwendenWICHTIG: Diese Techniken sollten nur in autorisierten Kontexten verwendet werden:
Dieses Repository dient ausschließlich Bildungs- und Forschungszwecken. Die Autoren sind nicht verantwortlich für Missbrauch dieser Techniken. Holen Sie immer die entsprechende Genehmigung ein, bevor Sie Systeme testen.
Fehlermeldungen "Permission denied":
sudo ausführen/proc/sys/kernel/yama/ptrace_scope prüfenInjektion schlägt still fehl:
Segmentation Faults:
Technikspezifische Hinweise zur Fehlerbehebung finden Sie in den jeweiligen README-Dateien.
Beiträge sind willkommen! Mögliche Ergänzungen:
man 2 ptrace – Systemaufruf zur Prozessverfolgungman 5 proc – Dokumentation des /proc-Dateisystemsman 3 dlopen – Dynamisches Laden von Bibliotheken