Trasformate il vostro telefono Kali Nethunter in uno strumento per sbloccare dispositivi Android.
Come funziona
Utilizza un cavo USB OTG per collegare il telefono bloccato al dispositivo Nethunter. Emula una tastiera, prova automaticamente i PIN e attende dopo aver provato troppe ipotesi sbagliate.
[Telefono Nethunter] <–> [Cavo USB] <–> [Adattatore USB OTG] <–> [Telefono Android bloccato]
Il driver del gadget USB HID fornisce l’emulazione di dispositivi HID (Human Interface Device) USB. Ciò consente a un dispositivo Android Nethunter di emulare l’input della tastiera sul telefono bloccato. È proprio come collegare una tastiera al telefono bloccato e premere i tasti.
Questo richiede poco più di 16,6 ore con un Samsung S5 per provare tutti i possibili PIN a 4 cifre, ma con l’elenco dei PIN ottimizzato dovrebbe impiegare molto meno tempo.
Avrai bisogno di
- Un telefono Android bloccato
- Un telefono Nethunter (o qualsiasi Android con root con supporto kernel HID)
- Cavo / adattatore USB OTG (On The Go) (da USB maschio Micro-B a USB A femmina) e un cavo di ricarica standard (USB maschio Micro-B a maschio A).
Benefici
- Trasforma il tuo telefono NetHunter in una macchina per crackare il PIN Android
- A differenza di altri metodi, non è necessario abilitare il debug ADB o USB sul telefono bloccato
- Il telefono Android bloccato non ha bisogno di essere rootato
- Non è necessario acquistare hardware speciale, ad esempio Rubber Ducky, Teensy, Cellebrite, XPIN Clip, ecc.
- Puoi facilmente modificare il tempo di backoff per violare altri tipi di dispositivi
- Funziona
Caratteristiche
- Crack PIN di qualsiasi lunghezza da 1 a 10 cifre
- Utilizza i file di configurazione per supportare diversi telefoni
- Elenchi PIN ottimizzati per PIN 3,4,5 e 6 cifre
- Ignora i popup del telefono incluso l’avviso di basso consumo
- Rileva quando il telefono è scollegato o spento e attende mentre riprova ogni 5 secondi
- Ritardi configurabili di N secondi dopo ogni X tentativi di PIN
- File di registro
Installazione
TBC
Esecuzione dello script
Se hai installato lo script in / sdcard /, puoi eseguirlo con il seguente comando.
bash ./android-pin-bruteforce
Nota che Android monta / sdcard con il flag noexec. Puoi verificarlo con mount
.
Utilizzo
Android-PIN-Bruteforce (0.1) is used to unlock an Android phone (or device) by bruteforcing the lockscreen PIN.
Find more information at: https://github.com/urbanadventurer/Android-PIN-Bruteforce
Commands:
crack Begin cracking PINs
resume Resume from a chosen PIN
rewind Crack PINs in reverse from a chosen PIN
diag Display diagnostic information
version Display version information and exit
Options:
-f, --from PIN Resume from this PIN
-a, --attempts Starting from NUM incorrect attempts
-m, --mask REGEX Use a mask for known digits in the PIN
-t, --type TYPE Select PIN or PATTERN cracking
-l, --length NUM Crack PINs of NUM length
-c, --config FILE Specify configuration file to load
-p, --pinlist FILE Specify a custom PIN list
-d, --dry-run Dry run for testing. Doesn't send any keys.
-v, --verbose Output verbose logs
Usage:
android-pin-bruteforce <command> [options]
Telefoni / dispositivi Android supportati
Questo è stato testato con successo con vari telefoni tra cui Samsung S5, S7, Motorola G4 Plus e G5 Plus.
Può sbloccare le versioni Android dalla 6.0.1 alla 10.0. La capacità di eseguire un attacco bruteforce non dipende dalla versione di Android in uso. Dipende da come il fornitore del dispositivo ha sviluppato la propria schermata di blocco.
Controlla il database del telefono per maggiori dettagli https://github.com/urbanadventurer/Android-PIN-Bruteforce/wiki/Phone-Database
Elenchi PIN
Gli elenchi di PIN ottimizzati vengono utilizzati per impostazione predefinita a meno che l’utente non selezioni un elenco di PIN personalizzato.
Perni di cracking di diverse lunghezze
Usa l’ --length
opzione della riga di comando.
Usa questo comando per decifrare un PIN di 3 cifre, ./android-pin-bruteforce crack --length 3
Usa questo comando per decifrare un PIN di 6 cifre ./android-pin-bruteforce crack --length 6
Da dove provengono gli elenchi di PIN ottimizzati?
Gli elenchi di PIN ottimizzati sono stati generati estraendo le password numeriche dalle perdite di database e quindi ordinandole in base alla frequenza. Tutti i PIN che non apparivano nelle fughe di password sono stati aggiunti all’elenco.
Gli elenchi di PIN ottimizzati sono stati generati da Ga $$ Pacc DB Leak (21 GB decompressi, 688 milioni di account, 243 database, 138920 password numeriche).
L’elenco dei PIN a 4 cifre
Il motivo per cui l’elenco di PIN a 4 cifre viene utilizzato da una fonte diversa è perché fornisce risultati migliori rispetto all’elenco generato da Ga $$ Pacc DB Leak .
optimised-pin-length-4.txt
è un elenco ottimizzato di tutti i possibili PIN a 4 cifre, ordinati per ordine di probabilità. Può essere trovato con il nome del file pinlist.txt
su https://github.com/mandatoryprogrammer/droidbrute
Questo elenco viene utilizzato con il permesso di Justin Engler e Paul Vines del Senior Security Engineer, iSEC Partners, ed è stato utilizzato nel loro discorso Defcon, Electromechanical PIN Cracking with Robotic Reconfigurable Button Basher (e C3BO)
Rompere con le maschere
Le maschere usano espressioni regolari con il formato esteso standard grep.
./android-pin-bruteforce crack --mask "...[45]" --dry-run
- Per provare tutti gli anni dal 1900 al 1999, usa una maschera di
19..
- Per provare i PIN che hanno un 1 nella prima cifra e un 1 nell’ultima cifra, usa una maschera di
1..1
- Per provare i PIN che terminano con 4 o 5, usa
...[45]
Configurazione per diversi telefoni
I produttori di dispositivi creano le proprie schermate di blocco diverse da quelle predefinite o di serie di Android. Per scoprire di quali tasti ha bisogno il tuo telefono, collega una tastiera al telefono e prova diverse combinazioni.
Carica un file di configurazione diverso, con il --config FILE
parametro della riga di comando.
Esempio: ./android-pin-bruteforce --config ./config.samsung.s5 crack
È inoltre possibile modificare il config
file personalizzando i tempi e le chiavi inviate.
Le seguenti variabili di configurazione possono essere utilizzate per supportare la schermata di blocco di un telefono diverso.
# Timing
## DELAY_BETWEEN_KEYS is the period of time in seconds to wait after each key is sent
DELAY_BETWEEN_KEYS=0.25
## The PROGRESSIVE_COOLDOWN_ARRAY variables act as multi-dimensional array to customise the progressive cooldown
## PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________ is the attempt number
## PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN is how many attempts to try before cooling down
## PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____ is the cooldown in seconds
PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________=(1 11 41)
PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN=(5 1 1)
PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____=(30 30 60)
## SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END defines how many seconds before the end of the cooldown period, keys will be sent
# set to 0 to disable
SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END=5
## SEND_KEYS_DISMISS_POPUPS_AT_COOLDOWN_END configures the keys that are sent to dismiss messages and popups before the end of the cooldown period
SEND_KEYS_DISMISS_POPUPS_AT_COOLDOWN_END="enter enter enter"
## KEYS_BEFORE_EACH_PIN configures the keys that are sent to prompt the lock screen to appear. This is sent before each PIN.
## By default it sends "escape enter", but some phones will respond to other keys.
# Examples:
# KEYS_BEFORE_EACH_PIN="ctrl_escape enter"
# KEYS_BEFORE_EACH_PIN="escape space"
KEYS_BEFORE_EACH_PIN="escape enter"
## KEYS_STAY_AWAKE_DURING_COOLDOWN the keys that are sent during the cooldown period to keep the phone awake
KEYS_STAY_AWAKE_DURING_COOLDOWN="enter"
## SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS how often the keys are sent, in seconds
SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS=5
## DELAY_BEFORE_STARTING is the period of time in seconds to wait before the bruteforce begins
DELAY_BEFORE_STARTING=2
## KEYS_BEFORE_STARTING configures the keys that are sent before the bruteforce begins
KEYS_BEFORE_STARTING="enter"
Popup
Inviamo le chiavi prima della fine del periodo di cooldown o, facoltativamente, durante il periodo di cooldown. Questo serve per mantenere attiva l’app della schermata di blocco e per ignorare eventuali popup sul numero di tentativi di PIN errati o un avviso di batteria scarica.
Prova l’invio di chiavi dal telefono NetHunter
Testare l’invio di chiavi dal terminale
Usa ssh dal tuo laptop al telefono NetHunter e usa questo comando per testare l’invio delle chiavi:
In questo esempio, viene inviata la chiave di invio.
echo "enter" | /system/xbin/hid-keyboard /dev/hidg0 keyboard
In questo esempio, viene inviato ctrl-escape.
echo "left-ctrl escape" | /system/xbin/hid-keyboard /dev/hidg0 keyboard
Nota: l’invio di combinazioni di chiavi nelle config
variabili di file è diverso. Attualmente ctrl_escape
è supportato solo .
In questo esempio, vengono inviate le chiavi a, b, c.
echo a b c | /system/xbin/hid-keyboard /dev/hidg0 keyboard
Prova l’invio di chiavi da un’app
Questa app per Android è una tastiera USB virtuale che puoi utilizzare per testare l’invio di chiavi.
https://store.nethunter.com/en/packages/remote.hid.keyboard.client/
Come inviare chiavi speciali
Usa questo elenco per le seguenti variabili:
- KEYS_BEFORE_EACH_PIN
- KEYS_STAY_AWAKE_DURING_COOLDOWN
- KEYS_BEFORE_STARTING
Per inviare chiavi speciali utilizzare le seguenti etichette. Questo elenco può essere trovato nel codice sorgente di hid_gadget_test.
Etichetta chiave | Etichetta chiave |
---|---|
ctrl sinistro | f6 |
ctrl destro | f7 |
tasto maiuscolo di sinistra | f8 |
spostamento a destra | f9 |
sinistra-alt | f10 |
right-alt | f11 |
left-meta | f12 |
right-meta | inserire |
ritorno | casa |
Esc | pagina su |
bckspc | del |
tab | fine |
barra spaziatrice | pagina giù |
blocco maiuscole | giusto |
f1 | sinistra |
f2 | giù |
f3 | kp-enter |
f4 | su |
f5 | bloc num |
Per inviare più di una chiave contemporaneamente, utilizzare il seguente elenco:
- ctrl_escape (Questo invia ctrl sinistro ed escape)
Se hai bisogno di più combinazioni di tasti, apri un nuovo numero nell’elenco dei problemi di GitHub.
Personalizzazione del recupero progressivo
La sezione seguente del config
file controlla il cooldown progressivo.
## The PROGRESSIVE_COOLDOWN_ARRAY variables act as multi-dimensional array to customise the progressive cooldown
## PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________ is the attempt number
## PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN is how many attempts to try before cooling down
## PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____ is the cooldown in seconds
PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________=(1 11 41)
PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN=(5 1 1)
PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____=(30 30 60)
La matrice è la stessa di questa tabella.
numero di tentativo | tentativi fino al tempo di recupero | Calmati |
---|---|---|
1 | 5 | 30 |
11 | 1 | 30 |
41 | 1 | 60 |
Perché non puoi usare un laptop?
Funziona da un telefono Android perché le porte USB non sono bidirezionali, a differenza delle porte di un laptop.
Come Android emula una tastiera
Le chiavi vengono inviate utilizzando /system/xbin/hid-keyboard
. Per testarlo e inviare la chiave 1 che puoi usareecho 1 | /system/xbin/hid-keyboard dev/hidg0 keyboard
In Kali Nethunter, /system/xbin/hid-keyboard
è una copia compilata di hid_gadget_test.c
. Questo è un piccolo programma per testare il driver del gadget HID incluso nel kernel Linux. Il codice sorgente di questo file può essere trovato su https://www.kernel.org/doc/html/latest/usb/gadget_hid.html e https://github.com/aagallag/hid_gadget_test .
Risoluzione dei problemi
Se non sta forzando i PIN
1. Verificare l’orientamento dei cavi
Il telefono Nethunter dovrebbe avere un normale cavo USB collegato, mentre il telefono bloccato dovrebbe avere un adattatore OTG collegato.
Il cavo OTG deve essere collegato al telefono Android bloccato. Il normale cavo USB dovrebbe essere collegato al telefono Nethunter.
Fare riferimento al grafico su come collegare i telefoni.
2. Controlla che stia emulando una tastiera
È possibile verificare che il telefono NetHunter stia emulando correttamente una tastiera collegandolo a un computer utilizzando un normale cavo USB di ricarica / dati. Apri un editor di testo come Blocco note mentre si rompe e dovresti vederlo inserire i numeri PIN nell’editor di testo.
Nota che non avrai bisogno di un cavo OTG per questo.
3. Prova a riavviare i telefoni
Prova a spegnere i telefoni e persino a estrarre le batterie, se possibile.
4. Prova nuovi cavi
Prova a utilizzare nuovi cavi / adattatori poiché potresti avere un cavo / adattatore difettoso.
Se non sblocca il telefono con un PIN corretto
Potresti inviare le chiavi troppo velocemente perché il telefono possa elaborarle. Aumenta la variabile DELAY_BETWEEN_KEYS nel file di configurazione. 💡 Se non vedi 4 punti sullo schermo del telefono, forse non sta ricevendo 4 tasti.
Gestione del consumo energetico
Se il telefono si scarica troppo presto, segui questi passaggi:
- Assicurati che entrambi i telefoni siano completamente carichi al 100% prima di iniziare
- Riduci la luminosità dello schermo sia sul telefono della vittima che sul telefono NetHunter, se possibile
- Metti entrambi i telefoni in modalità aereo, tuttavia potresti voler abilitare il WiFi per accedere al telefono NetHunter tramite SSH.
- Il telefono bloccato alimenterà il telefono NetHunter, perché appare come un accessorio della tastiera
- Utilizzare un cavo USB OTG con uno splitter a Y per un alimentatore esterno, per consentire la ricarica del telefono NetHunter durante il cracking
- Fai delle pause per caricare i tuoi dispositivi. Metti in pausa lo script con CTRL-Z e riprendi con il
fg
comando della shell. - Evita l’opzione di configurazione SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS. Ciò farà sì che il telefono bloccato utilizzi più batteria per mantenere lo schermo alimentato. Utilizza invece l’opzione SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END (predefinita).
Controlla il rapporto di diagnostica
Utilizzare il comando per diag
visualizzare le informazioni di diagnostica.
bash ./android-pin-bruteforce diag
Se ricevi questo messaggio quando il cavo USB è collegato, prova a rimuovere la batteria dal telefono Android bloccato e spegnilo e riaccendilo.
[FAIL] HID USB device not ready. Return code from /system/xbin/hid-keyboard was 5.
Come funziona il comando usb-devices
Il comando di diagnostica utilizza lo usb-devices
script, ma è necessario solo per determinare se i cavi USB sono collegati in modo errato. Questo può essere scaricato da https://github.com/gregkh/usbutils/blob/master/usb-devices
Usa output dettagliato
Utilizzare l’ --verbose
opzione per verificare che la configurazione sia come previsto. Ciò è particolarmente utile quando si modifica la configurazione.
Usa la corsa a secco
Utilizzare l’ --dry-run
opzione per verificare come funziona senza inviare alcuna chiave a un dispositivo. Ciò è particolarmente utile quando si modifica la configurazione o durante lo sviluppo.
La marcia a secco:
- Non inviare chiavi
- Continuerà invece di interrompersi se manca il
KEYBOARD_DEVICE
oHID_KEYBOARD
.
Modalità USB NASCOSTA
Prova questo comando in una shell sul telefono NetHunter: /system/bin/setprop sys.usb.config hid
Problemi sconosciuti
- Questo non è in grado di rilevare quando viene indovinato il PIN corretto e il telefono si sblocca.
- I tuoi telefoni potrebbero esaurirsi 🔋 batteria prima di trovare il PIN corretto.
- Non fidarti dei file di configurazione del telefono da fonti sconosciute senza prima esaminarli. I file di configurazione sono script della shell e potrebbero includere comandi dannosi.
Roadmap
- [FATTO] Funziona
- [FATTO] Rileva guasti USB HID
- [FATTO] Migliora l’utilizzo e le opzioni della riga di comando / i file di configurazione
- [FATTO] Aggiungi forza brute per PIN a n cifre
- [FATTO] Maschera per cifre note
- [FATTO] Cracking l’elenco dei PIN al contrario (per trovare quale PIN recente ha sbloccato il dispositivo)
- [FATTO] Implementa il prompt della schermata di blocco configurabile
- [FATTO] Implementa la modifica del tempo di recupero dopo 10 tentativi
- [WORKING] Trova / testa più dispositivi per la forza bruta
- Aggiungi barra di avanzamento
- Aggiungi ETA
- ASCII art
- GUI più bella per NetHunter
- Implementa per iPhone
- Rileva quando un telefono è sbloccato (usi la fotocamera di Nethunter come sensore?)
- Crack Android Patterns (prova prima i modelli comuni)
Ulteriori info su https://github.com/urbanadventurer/Android-PIN-Bruteforce/blob/master/README.md