Last update: 29/05/2007


EtatStable
Version1.10
Mise à jour29/05/2007

Projet Injecter
"Injecter" est un projet WiShMaster permettant d'obtenir un shellcode injectant un autre shellcode dans un processus distant.

Principe de Injecter
"Injecter" un code qui permet d'exécuter un shellcode dans un processus distant.
Plusieurs modes d'injection sont possibles :
  • Injection dans une instance cachée du navigateur par défaut : Injecter recherche le navigateur par défaut dans la base de registre, lance une instance cachée de ce programme et l'injecte avec le shellcode.
  • Injection dans une instance cachée d'un programme : un chemin complet vers un exécutable est spécifié ; Injecter lance une instance cachée de ce programme et l'injecte
  • Injection dans un processus existant : le nom d'un exécutable est spécifié ; Injecter recherche une instance de ce programme et injecte la première qu'il trouve
Injecter et WiShMaster
Injecter est compatible avec WiShMaster et peut donc lui-même être shellcodisé. Dans ce mode, le shellcode à injecter doit immédiatement suivre le shellcode de "Injecter". La class library de Injecter permet de spécifier :
  • la taille du shellcode à injecter ;
  • le type d'encodage du shellcode (aucun, simple, complexe) qui correspond aux encodages effectués par WiShMaster ;
  • la clé de déchiffrement le cas échéant ;
  • le type d'injection (navigateur cachée, application cachée, processus existant) ;
  • le nom de l'application ou celui du processus à injecter le cas échéant.
Pour tester cette partie :
  • Installez WiShMaster
  • Récupérez l'archive de Injecter sur cette page, décompressez-la dans un répertoire quelconque, par exemple C:\temp\
  • Ouvrez le projet Injecter avec WiShMaster
  • Lancez la génération du shellcode
  • Un exécutable INJECTER_ROOT\injecter\integration\exe\Injecter.exe est créé. Celui-ci va créer un buffer formé du shellcode Injecter decodé, suivi d'un shellcode de test de 3 octets, commencant par une instruction "int 3", puis transférer l'exécution au premier octet de ce buffer (donc au shellcode Injecter). Le shellcode Inejcter va lancer une instance cachée du navigateur par défaut et l'injecter avec le shellcode de trois octets, provoquant aussitôt une exception dans ce processus (car l'instruction int 3 est exécutée).
Injecter, WiShMaster et RConnect
A titre d'exemple, voici une manipulation permettant d'obtenir une backdoor reverse connect fonctionnant sous forme de thread injecté dans une instance du navigateur par défaut en moins de 5 min...
  • Mise en place de l'environnement
    • Installez WiShMaster
    • Récupérez l'archive de RConnect sur ce site, décompressez-la dans un répertoire quelconque, par exemple C:\temp\
    • Récupérez l'archive de Injecter sur cette page, décompressez-la dans le même répertoire
  • Création du shellcode RConnect
    • Ouvrez le projet RConnect avec WiShMaster
    • Editez les options du projet et cliquez sur l'onglet "Optionnal steps"
    • Dans la partie "Xor shellcode" :
      • Use this key => abcdabcd
      • Advanced XOR
    • Dans la partie "Integrate" :
      • Path to integrated header directory => [XML_ROOT]\..\..\Injecter-1.10\Integration\headers\
      • Path to build command to launch => [XML_ROOT]\..\..\Injecter-1.10\Integration\build.bat
      • Path to integrated executable directory => [XML_ROOT]\..\..\Injecter-1.10\Integration\exe\
    • Editer les paramètres de génération et positionnez l'IP et le port aux valeurs désirées (ne pas modifier le nom)
    • Lancez la shellcodisation (ignorez l'éventuelle erreur lors de l'intégration). Notez au passage la taille totale du shellcode généré (normalement 1008 octets)
  • Création du shellcode Injecter
    • Ouvrez le projet Injecter avec WiShMaster
    • Editez les options du projet et cliquez sur l'onglet "Optionnal steps"
    • Dans la partie "Xor shellcode" :
      • Use this key => cafecafe
      • Advanced XOR
    • Dans la partie "Integrate" :
      • Path to integrated header directory => [XML_ROOT]\..\Integration\headers\
      • Path to build command to launch => [XML_ROOT]\..\Integration\build.bat
      • Path to integrated executable directory => [XML_ROOT]\..\Integration\exe\
    • Editer les paramètres de génération remplissez les en accord avec ceux de RConnect :
      • Shellcode name => laisser Injecter
      • Shellcode to inject size => 1008
      • Shellcode encoding => complex
      • Key => abcdabcd
      • Injection type => hidden default browser
    • Lancez la shellcodisation (Cette fois, vous ne devriez pas avoir d'erreur)
  • La backdoor a été généré dans INJECTER_ROOT\Integration\exe\Injecter.exe
Accès aux ressources
Cette archive contient tout le code source du projet et celui de la class library (ainsi qu'une version compilée de celle-ci)
Une remarque/un bug ?
Ce projet est réellement en développement intense. N'hésitez donc pas à me faire part de vos remarques/suggestions pour l'améliorer: Benjamin CAILLAT