
Binärdateien über MITM patchen: BackdoorFactory + mitmProxy.
BLOG: http://secureallthethings.blogspot.com/2017/08/closing-door-end-of-backdoor-factory.html
Nur für Sicherheitsexperten und Forscher.
Docker:
# sudo echo 1 > /proc/sys/net/ipv4/ip_forward # linux
# sudo sysctl -w net.inet.ip.forwarding=1 # macOS
docker pull secretsquirrel/bdfproxy
docker run -it -p 8080:8080 secretsquirrel/bdfproxy bash
# ./bdf_proxy.py
So installieren Sie auf Kali:
apt-get update
apt-get install bdfproxy
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
DerbyCon 2014:
Video: http://www.youtube.com/watch?v=LjUN9MACaTs
Nach etwa 18 Minuten kommt der BDFProxy-Teil.
Kontakt zum Entwickler:
IRC:
irc.freenode.net #BDFactory
Twitter:
@midnite_runr
Dieses Skript nutzt zwei Bibliotheken: The Backdoor Factory (BDF) und mitmProxy.
###Konzept: Patche Binärdateien während des Downloads nach Art eines MITM.
###Warum: Weil viele Sicherheitstool-Webseiten Binärdateien immer noch über nicht-SSL/TLS-Verbindungen ausliefern.
Hier eine kurze Liste:
sysinternals.com
Microsoft - MS Security Essentials
Fast alle Antiviren-Unternehmen
Malwarebytes
Sourceforge
gpg4win
Wireshark
usw.
Ja, einige dieser Apps sind durch Selbstprüfmechanismen geschützt. Ich habe an einer Möglichkeit gearbeitet, NSIS-Prüfungen als Machbarkeitsnachweis automatisch zu umgehen. Dies ändert jedoch nichts an dem grundlegenden Problem des Bit-Flippings während des Downloads und der Ausführung einer schädlichen Nutzlast. Außerdem entfernt BDF standardmäßig den Zeiger auf die Windows-PE-Zertifikatstabelle während des Downloads, wodurch die Signatur der Binärdatei entfernt wird.
##Abhängigkeiten:
Pefile – aktuellste Version
ConfigObj
mitmProxy – Kali Build .10
BDF – aktuellste Version
Capstone (Teil von BDF)
##Unterstützte Umgebungen: Getestet auf allen Kali Linux Builds, ob auf einem physischen leistungsstarken Laptop, einem Raspberry Pi oder einer VM – alle können BDFProxy ausführen.
##Installation: BDF befindet sich in bdf/
Führen Sie Folgendes aus, um die aktuellste Version zu laden:
./install.sh
ODER:
git clone https://github.com/secretsquirrel/the-backdoor-factory bdf/
Wenn Sie einen Zertifikatsfehler erhalten, führen Sie Folgendes aus:
mitmproxy
Und beenden Sie [Ctr+C], nachdem mitmProxy geladen ist.
##Verwendung: Aktualisieren Sie alles vor jeder Verwendung:
./update.sh
LESEN SIE DIE KONFIGURATION!!!
-->bdfproxy.cfg
Sie müssen Ihre C2-Host- und Port-Einstellungen konfigurieren, bevor Sie BDFProxy ausführen. ÜBERLAPPEN Sie KEINE C2-PORT-Einstellungen zwischen verschiedenen Payloads. Sie werden sonst Linux-Shells an Windows-Maschinen senden und es wird überall zu Segfaults kommen. Nach dem Ausführen wird ein Metasploit-Ressourcenskript erstellt, das Ihnen beim Einrichten Ihrer C2-Kommunikation hilft. Überprüfen Sie es sorgfältig. Übrigens, alles außerhalb des [Overall]-Abschnitts wird im laufenden Betrieb aktualisiert, sodass Sie Ihren Proxy nicht töten müssen, um die Einstellungen an Ihre Umgebung anzupassen.
Aber warten Sie! Sie müssen Ihre MITM-Maschine für das MITM konfigurieren! Wenn Sie eine WiFi-Pineapple verwenden, habe ich ein von hack5 veröffentlichtes Skript modifiziert, um Ihnen bei der Konfiguration zu helfen. Führen Sie ./wpBDF.sh aus und geben Sie die richtigen Konfigurationen für Ihre Umgebung ein. Dieses Skript konfiguriert iptables so, dass nur HTTP (nicht-SSL)-Verkehr durch den Proxy geleitet wird. Der gesamte andere Verkehr wird normal weitergeleitet.
Dann:
./bdf_proxy.py
Hier ist eine nette ASCII-Art für mögliche physische Einstellungen des Proxys:
LAN-Nutzung:
<Internet>----<mitmMachine>----<userLan>
WLAN-Nutzung:
<Internet>----<mitmMachine>----<wifiPineapple>)))
##Testen:
Angenommen, Sie möchten Ihren Browser mit Firefox und FoxyProxy verwenden, um Ihre Einrichtung zu testen.
Aktualisieren Sie Ihre Konfiguration wie folgt:
transparentProxy = None
Konfigurieren Sie FoxyProxy, um BDFProxy als Proxy zu verwenden.
Der Standard-Port in der Konfiguration ist 8080.
##Protokollierung:
Ja, gibt es. Das Proxy-Fenster füllt sich schnell mit riesigen Mengen an Cat-Links, je nachdem, welchen Client Sie testen. Verwenden Sie tail -f proxy.log, um zu sehen, was gepatcht und von Ihren Blacklist-Einstellungen blockiert wird. Behalten Sie jedoch das Haupt-Proxy-Fenster im Auge, wenn Sie sich entschieden haben, Binärdateien manuell zu patchen – die Dinge gehen schnell und hinter den Kulissen gibt es Multi-Threading des Datenverkehrs, aber die ersten Anfragen und Antworten werden zu Ihrem Vergnügen angehalten.
##Angriffsszenarien (alle mit Genehmigung der Ziele): -Böser WLAN-AP -ARP-Umleitung -Physische Platzierung in einem Verteilerraum -Logische Platzierung bei Ihrem bevorzugten ISP
##Fehlerberichte
Fehler passieren, aber wenn ich Ihr Problem nicht verstehen kann, kann ich Ihnen nicht helfen.
Reichen Sie Probleme hier ein: https://github.com/secretsquirrel/BDFProxy/issues
Fügen Sie die folgenden Informationen aus der Ausgabe dieser Befehle bei (verwenden Sie Pastebin für die längeren Befehle):
# bdfproxy only supports v11 -> v17
$ mitmproxy --version
$ uname -a
# Use pastebin perhaps
$ cat bdfproxy.cfg
$ ./bdf_proxy.py
###Änderungsprotokoll:
####07/04/2016
Unterstützung für BDF-Präprozessor und mitmProxy v17
####12/20/2015
Konfigurationsoptionen in bdfproxy.cfg hinzugefügt, um PE-Code-Signing von BDF zu unterstützen => CODE_SIGN Siehe BDF README für Details
####11/13/2015
Abhängigkeit von python-magic entfernt, da es zwei gleichnamige Bibliotheken gibt. Das ist verwirrend.
####10/19/2015
Unterstützung für BDF Import Directory Patching in einen Code-Cave anstelle eines neuen Abschnitts hinzugefügt. Setzen Sie dazu IDA_IN_CAVE in der bdfproxy.cfg-Datei auf True. EXPERIMENTELL...
####8/12/2015
Unterstützung für die PE-Ersetzungsmethode hinzugefügt: Heruntergeladene Binärdatei durch eine vom Angreifer bereitgestellte ersetzen. Verwenden Sie dazu PATCH_METHOD = replace und geben Sie eine SUPPLIED_BINARY an.
####8/6/2015
Unterstützung für OnionDuke hinzugefügt. Verwenden Sie dazu PATCH_METHOD = onionduke und SUPPLIED_BINARY auf die Binärdatei, die Sie an die Zielausführbare Datei binden möchten.
Unterstützung hinzugefügt, um die Prüfung und das Patchen von requestedExecutionLevel im PE-Manifest auf highestAvailable für x86- und x86_64-PE-Binärdateien zu setzen. Setzen Sie RUNAS_ADMIN auf True.
Unterstützung hinzugefügt, um festzulegen, ob Legacy-XP-Maschinen über das XP_MODE-Flag aktiviert werden sollen. Dies kann eine Umgehung von Antivirenprogrammen bewirken, da deren Emulatoren fehlschlagen können, wenn diese Einstellung auf FALSE gesetzt ist.