
Patch dei binari tramite MITM: BackdoorFactory + mitmProxy.
BLOG: http://secureallthethings.blogspot.com/2017/08/closing-door-end-of-backdoor-factory.html
Solo per professionisti della sicurezza e ricercatori.
###ORA FUNZIONA SOLO CON v.0.17 >= MITMPROXY >= v.0.11
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
Per installare su 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
La parte su BDFProxy inizia verso il minuto 18.
Contatta lo sviluppatore su:
IRC:
irc.freenode.net #BDFactory
Twitter:
@midnite_runr
Questo script si basa su due librerie: The Backdoor Factory (BDF) e mitmProxy.
###Concetto: Applica patch ai binari durante il download, alla maniera di un MITM.
###Perché: Perché molti siti web di strumenti di sicurezza servono ancora i binari tramite canali non SSL/TLS.
Ecco un breve elenco:
sysinternals.com
Microsoft - MS Security Essentials
Almost all anti-virus companies
Malwarebytes
Sourceforge
gpg4win
Wireshark
etc...
Sì, alcune di quelle applicazioni sono protette da meccanismi di auto-controllo. Ho lavorato a un modo per bypassare automaticamente i controlli NSIS come prova di concetto. Tuttavia, questo non elimina il problema iniziale del bit flipping durante il download e dell'esecuzione di un payload dannoso. Inoltre, BDF di default elimina tramite patch il puntatore alla tabella dei certificati PE di Windows durante il download, rimuovendo così la firma dal binario.
##Dipendenze:
Pefile - most recent
ConfigObj
mitmProxy - Kali Build .10
BDF - most current
Capstone (part of BDF)
##Ambiente Supportato: Testato su tutte le build di Kali Linux: che si tratti di un potente laptop fisico, un Raspberry Pi o una VM, ciascuno può eseguire BDFProxy.
##Installazione: BDF si trova in bdf/
Esegui il seguente comando per scaricare la versione più recente:
./install.sh
OPPURE:
git clone https://github.com/secretsquirrel/the-backdoor-factory bdf/
Se ricevi un errore di certificato, esegui quanto segue:
mitmproxy
Ed esci con [Ctr+C] dopo che mitmProxy si è caricato.
##Utilizzo: Aggiorna tutto prima di ogni utilizzo:
./update.sh
LEGGI LA CONFIGURAZIONE!!!
-->bdfproxy.cfg
Dovrai configurare le impostazioni di host e porta C2 prima di eseguire BDFProxy. NON sovrapporre le impostazioni della PORTA C2 tra payload diversi. Invierai shell Linux a macchine Windows e le cose andranno in segfault ovunque. Dopo l'esecuzione, verrà creato uno script di risorse Metasploit per aiutarti a configurare le comunicazioni C2. Controllalo attentamente. Tra l'altro, tutto ciò che è al di fuori della sezione [Overall] viene aggiornato al volo, quindi non devi uccidere il proxy per cambiare le impostazioni in base al tuo ambiente.
Ma aspetta! Dovrai configurare la tua macchina mitm per fare mitm! Se stai usando un wifiPineapple, ho modificato uno script pubblicato da hack5 per aiutarti con la configurazione. Esegui ./wpBDF.sh e inserisci le configurazioni corrette per il tuo ambiente. Questo script configura iptables per instradare attraverso il proxy solo il traffico http (non-ssl). Tutto il resto del traffico viene inoltrato normalmente.
Poi:
./bdf_proxy.py
Ecco della simpatica ASCII art per le possibili configurazioni fisiche del proxy:
Uso in LAN:
<Internet>----<mitmMachine>----<userLan>
Uso in Wi-Fi:
<Internet>----<mitmMachine>----<wifiPineapple>))
##Test:
Supponiamo che tu voglia usare il tuo browser con Firefox e FoxyProxy per testare la tua configurazione.
Aggiorna la tua configurazione come segue:
transparentProxy = None
Configura FoxyProxy per usare BDFProxy come proxy.
La porta predefinita nella configurazione è 8080.
##Logging:
Ce l'abbiamo. La finestra del proxy si riempirà rapidamente con enormi quantità di cat links a seconda del client che stai testando. Usa tail -f proxy.log per vedere cosa viene patchato e bloccato dalle impostazioni della tua blacklist. Tuttavia, tieni d'occhio la finestra principale del proxy se hai scelto di patchare i binari manualmente: le cose vanno veloci e dietro le quinte c'è multi-threading del traffico, ma le richieste e risposte iniziali vengono bloccate per il tuo piacere di visualizzazione.
##Scenari di Attacco (tutti con il permesso dei bersagli): -Evil Wifi AP -Arp Redirection -Physical plant in a wiring closet -Logical plant at your favorite ISP
##Segnalazione di Bug
I bug capitano, ma se non capisco il tuo problema, non posso aiutarti.
Invia i problemi qui: https://github.com/secretsquirrel/BDFProxy/issues
Includi le seguenti informazioni dall'output di questi comandi (usa pastebin per i comandi più lunghi):
# bdfproxy only supports v11 -> v17
$ mitmproxy --version
$ uname -a
# Use pastebin perhaps
$ cat bdfproxy.cfg
$ ./bdf_proxy.py
###Registro delle modifiche:
####07/04/2016
Supporto per BDF Preprocessor e mitmProxy v17
####12/20/2015
Aggiunte opzioni di configurazione in bdfproxy.cfg per supportare la firma del codice PE da BDF => CODE_SIGN Vedi il README di BDF per i dettagli
####11/13/2015
Rimosse le dipendenze da python-magic perché esistono due librerie con lo stesso nome. Il che crea confusione.
####10/19/2015
Aggiunto supporto per BDF Import Directory Patching in una code cave invece di una nuova sezione. Imposta IDA_IN_CAVE su True nel file bdfproxy.cfg per questa funzione. SPERIMENTALE...
####8/12/2015
Aggiunto supporto per il metodo PE replace: sostituisce il binario scaricato con uno fornito dall'attaccante. Per usarlo, imposta PATCH_METHOD su replace e fornisci un SUPPLIED_BINARY
####8/6/2015
Aggiunto supporto per onionduke. Per usarlo, imposta PATCH_METHOD su onionduke e SUPPLIED_BINARY sul binario che desideri associare all'eseguibile di destinazione.
Aggiunto supporto per impostare il controllo e il patching di requestedExecutionLevel nel manifest PE come highestAvailable sia per i binari PE x86 che x86_64. Imposta RUNAS_ADMIN su True.
Aggiunto supporto per decidere se supportare le vecchie macchine XP tramite il flag XP_MODE impostato su True. Questo può avere capacità di evasione contro gli AV, poiché i loro emulatori potrebbero fallire se questa impostazione è FALSE.