
Une collection d'échantillons et de matériel liés à l'injection de processus.
Une collection complète de techniques d'injection de processus pour Linux, démontrant diverses méthodes d'injection de code dans des processus en cours d'exécution. Ces exemples sont destinés à des fins pédagogiques, à la recherche en sécurité et à la compréhension de la manipulation de processus Linux de bas niveau.
L'injection de processus est une technique utilisée pour exécuter du code dans le contexte d'un autre processus. Bien que souvent associée aux logiciels malveillants, ces techniques sont également utiles pour :
Répertoire : ptrace/
La méthode classique d'injection de processus utilisant l'appel système ptrace() pour écrire directement du shellcode dans la mémoire d'un processus et rediriger l'exécution.
Caractéristiques principales :
Cas d'utilisation : Comprendre le contrôle de processus de bas niveau et l'injection directe de code
Répertoire : ld_preload/
Interposition de fonctions utilisant la variable d'environnement LD_PRELOAD pour charger une bibliothèque malveillante avant toute autre bibliothèque.
Caractéristiques principales :
Cas d'utilisation : Accrochage de fonctions, surveillance d'API, modification de comportement
Répertoire : proc_mem/
Écriture directe en mémoire via l'interface du système de fichiers /proc/<pid>/mem, combinée à ptrace pour le contrôle du processus.
Caractéristiques principales :
Cas d'utilisation : Injection rapide de gros volumes en mémoire, contournement des limitations traditionnelles de ptrace
Répertoire : dlopen_inject/
Technique sophistiquée qui force un processus en cours d'exécution à charger une bibliothèque partagée en détournant l'exécution pour appeler dlopen().
Caractéristiques principales :
Cas d'utilisation : Injection persistante avancée, manipulation de bibliothèques en cours d'exécution
# Construire l'injection ptrace
cd ptrace && make all
# Construire l'injection LD_PRELOAD
cd ../ld_preload && make all
# Construire l'injection /proc/mem
cd ../proc_mem && make all
# Construire l'injection dlopen
cd ../dlopen_inject && make all
Chaque technique suit un schéma similaire :
Démarrer le processus victime :
cd <technique>/victim-process
./sample
Notez le PID affiché
Effectuer l'injection :
cd <technique>
sudo ./<injecteur> <PID> [arguments supplémentaires]
Observer les résultats : Vérifiez la sortie du processus victime pour l'exécution du code injecté
Consultez les fichiers README individuels pour les instructions spécifiques à chaque technique.
| Technique | Complexité | Furtivité | Persistance | Vitesse | Fonctionne sur un processus en cours |
|---|---|---|---|---|---|
| ptrace | Moyenne | Faible | Non | Moyenne | Oui |
| LD_PRELOAD | Faible | Très faible | Non | Rapide | Non |
| /proc/mem | Moyenne | Faible | Non | Rapide | Oui |
| dlopen | Élevée | Moyenne | Oui | Moyenne | Oui |
Yama ptrace_scope : Restreindre ptrace aux utilisateurs privilégiés
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
SELinux/AppArmor : Contrôles d'accès obligatoires
Surveillance : Utiliser auditd pour journaliser les tentatives d'injection de processus et d'utilisation de ptrace
auditctl -a exit,always -F arch=b64 -S ptrace
Vérification d'intégrité à l'exécution : Vérifier périodiquement la mémoire des processus
Signature de code : Vérifier les signatures des bibliothèques
/proc/<pid>/maps pour détecter des régions mémoire ou des bibliothèques inattendueslsof, pmap et les utilitaires de surveillance de processusIMPORTANT : Ces techniques ne doivent être utilisées que dans des contextes autorisés :
Ce dépôt est uniquement à des fins éducatives et de recherche. Les auteurs ne sont pas responsables d'un mauvais usage de ces techniques. Obtenez toujours une autorisation appropriée avant de tester sur un système.
Erreurs de permission refusée :
sudo/proc/sys/kernel/yama/ptrace_scopeL'injection échoue silencieusement :
Erreurs de segmentation :
Consultez les README de chaque technique pour des conseils de dépannage spécifiques.
Les contributions sont les bienvenues ! Ajouts potentiels :