Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
asminject — Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc.. | Kitploit
Outils/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

Voir le dépôt
14815il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc..

Partager

asminject.py

asminject.py est un fork fortement modifié du projet dlinject de David Buchanan. Il injecte des charges utiles en assembleur arbitraire (ou des binaires précompilés) directement dans des processus Linux x86-64, x86 et ARM32 en accédant à /proc/<pid>/mem au lieu de s'attacher via ptrace. Utile pour altérer des processus de confiance, certains scénarios de post-exploitation, récupérer du contenu depuis la mémoire de processus et contourner certains contrôles de sécurité. Peut injecter dans des processus conteneurisés depuis l'extérieur du conteneur, tant que vous disposez d'un accès root sur l'hôte.

Vous pouvez également en apprendre davantage sur asminject.py et ses origines sur sa page d'outil Bishop Fox, notamment un article détaillé sur le travail qui a inspiré l'outil.

Dans ce document :

  • Argumentaires éclair ou TLDR
  • Origines
  • Exemples
  • Mais qu'en est-il des restrictions ptrace_scope de Yama ?
  • Objectifs futurs

Documentation séparée et plus détaillée :

  • Comment fonctionne asminject.py - une discussion architecturale de haut niveau avec des plongées approfondies dans certaines spécificités techniques, en particulier pour les lecteurs qui n'ont jamais travaillé avec des outils d'injection mémoire auparavant
  • Pour commencer
  • Différences par rapport à dlinject.py
  • Options spécialisées
  • Dépannage
  • Historique des versions

Argumentaires éclair ou TLDR

  • "asminject.py est comme dlinject, sauf qu'il permet d'injecter n'importe quelle charge utile au lieu de simplement charger une bibliothèque, et il fonctionne sur plusieurs architectures."
  • "asminject.py ressemble vaguement à Frida, sauf qu'il ne s'attache pas via l'interface ptrace, de sorte que les processus ne peuvent pas le bloquer en s'auto-traçant via ptrace."

Origines

asminject.py a été écrit pour deux scénarios principaux de test de pénétration dans des environnements Linux :

  • Attaquer les contrôles de sécurité au niveau des processus et des conteneurs depuis le point de vue d'un attaquant disposant d'un accès root à l'hôte
  • Éviter la détection après avoir réussi à exploiter une autre faille

Par exemple, considérons un test de pénétration dans lequel le testeur a obtenu un accès root à un serveur hébergeant de nombreux conteneurs. L'un des conteneurs traite des virements bancaires et dispose d'un produit de sécurité des points de terminaison très robuste installé à l'intérieur. Lorsque le testeur d'intrusion tente de modifier les données de virement depuis l'intérieur du conteneur, le logiciel de sécurité des points de terminaison détecte et bloque la tentative. asminject.py permet au testeur d'intrusion d'injecter du code arbitraire directement dans la mémoire du processus du logiciel bancaire, voire même dans le produit de sécurité des points de terminaison, depuis l'extérieur du conteneur. Comme une victime du « malin génie » de Descartes, le logiciel de sécurité dans le conteneur est impuissant, car il existe dans un environnement entièrement contrôlé par l'attaquant.

Le dlinject.py original a été conçu spécifiquement pour charger des bibliothèques partagées Linux dans un processus existant. asminject.py fait tout ce que l'original faisait et bien plus encore. Il exécute du code assembleur arbitraire et inclut des modèles pour une variété d'attaques. Il a également été repensé pour aider à éviter la détection par les mécanismes de sécurité qui se basent sur des activités potentiellement suspectes, comme les événements de chargement de bibliothèques.

Exemples

Le répertoire practice de ce dépôt contient un code de boucle de base qui affiche un horodatage et le numéro d'itération de la boucle sur la console, afin que vous puissiez vous entraîner à injecter différents types de code dans un environnement contrôlé. Ces boucles d'entraînement sont utilisées dans les exemples suivants.

La syntaxe de base pour appeler asminject.py est :

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

Dans la plupart des cas, toutes les charges utiles utilisées dans les exemples fonctionneront sur toutes les architectures prises en charge.

  • Exemples de base - des charges utiles simples qui, par exemple, amènent un processus existant à copier des fichiers pour vous
  • Injection de code Python
  • Injection de code PHP
  • Injection de code Ruby
  • Injection de shellcode/stager
  • Injection de bibliothèque partagée

Mais qu'en est-il des restrictions ptrace_scope de Yama ?

La plupart des distributions Linux incluent un module de sécurité du noyau nommé Yama qui contrôle l'accès à l'utilisation de la capacité ptrace contre d'autres processus. Bien que asminject.py ne s'attache pas à l'interface du débogueur, il nécessite toujours l'autorisation d'utiliser la capacité ptrace. Si vous recevez des erreurs concernant cette capacité, vérifiez le contenu de /proc/sys/kernel/yama/ptrace_scope. S'il est défini sur 2, exécutez la commande suivante en tant que root :

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

Les valeurs de 3 ou plus ne peuvent pas être désactivées sans un redémarrage. Cependant, si vous êtes un administrateur autorisé d'un système Linux où quelqu'un a accidentellement défini /proc/sys/kernel/yama/ptrace_scope sur 3, ou si vous menez un test de pénétration autorisé dans un environnement où cette valeur a été définie, consultez le répertoire ptrace_scope_kernel_module pour un contournement potentiel qui ne nécessite pas de redémarrage.

Objectifs futurs

  • Ajouter la prise en charge de l'ARM64 (Aarch64).
  • Permettre de passer le shellcode via stdin en plus de la méthode actuelle de lecture depuis un fichier.
  • Étudier l'utilisation de Keystone pour l'assemblage du shellcode au lieu d'appeler la commande gcc au niveau du système d'exploitation.
  • Pour Python et d'autres interpréteurs de scripts disposant d'API permettant de passer du bytecode compilé pour exécution (par opposition à l'exécution de style eval de code de script lisible par l'humain), fournir des charges utiles pour tirer parti de cette capacité pour encore plus de discrétion.
  • Si possible, injecter du code Java dans des processus Java via le JNI.
  • Ajouter des options pour accrocher une méthode spécifique (ou une adresse, etc.) en alternative à la technique actuelle « accrocher le prochain appel système » héritée de dlinject.py.
  • Fournir un moyen d'utiliser l'outil pour un quasi-débogage, par exemple accrocher une fonction et afficher les arguments qui lui sont passés à chaque appel.
    • Il serait peut-être plus judicieux de trouver un moyen d'injecter Frida en utilisant asminject.py - des recherches supplémentaires sont nécessaires.
  • Développer des charges utiles interactives, par exemple au lieu d'injecter une ligne particulière de code de script Python dans un processus Python, asminject.py pourrait demander à l'opérateur une ligne de code à injecter, l'injecter, renvoyer la sortie obtenue, puis demander une autre ligne de code à l'opérateur.
    • Cela pourrait également être plus pertinent à gérer avec Frida, si Frida peut être injectée dans un processus à l'aide de asminject.py d'une manière qui évite la nécessité pour Frida d'invoquer temporairement l'interface du débogueur.
Télécharger l’outil
  • Fournir un moyen d'interagir avec un processus cible fonctionnant sur une architecture de processeur qui ne correspond pas à celle sur laquelle asminject.py s'exécute. Par exemple, interagir avec un appareil distant à l'aide de matériel comme une « sangsue PCI », exploiter des cas limites extrêmes comme des appareils avec /proc/mem accessible en tant que root via un partage NFS, etc.
  • Ajouter des fragments d'obfuscation plus élaborés.