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’ --lengthopzione 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.txtsu 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 FILEparametro della riga di comando.

Esempio: ./android-pin-bruteforce --config ./config.samsung.s5 crack

È inoltre possibile modificare il configfile 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 configvariabili 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 configfile 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 fgcomando 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 diagvisualizzare 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-devicesscript, 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’ --verboseopzione per verificare che la configurazione sia come previsto. Ciò è particolarmente utile quando si modifica la configurazione.

Usa la corsa a secco

Utilizzare l’ --dry-runopzione 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_DEVICEHID_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

Twitter
Visit Us
LinkedIn
Share
YOUTUBE