
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.
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 BibliothekenSiehe LICENSE.txt für Details.
Diese Software wird „wie besehen“ zu Bildungszwecken bereitgestellt. Verwenden Sie sie verantwortungsvoll und ethisch. Holen Sie immer die entsprechende Genehmigung ein, bevor Sie Sicherheitstechniken auf Systemen testen, die Ihnen nicht gehören.
| 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 |