El libre pensamiento para un internet libre
No estas registrado.
Varios modelos de la marca Belkin forman su PIN por defecto usando el conocido algoritmo desvelado por ZaoChunsheng y popularizado con WPSPIN
Si echamos un ojo al tema "Algoritmo ComputePIN-C83A35 de ZaoChunsheng : La brecha en la brecha" podemos ver a uno de los modelos Belkin afectados
Hoy les presento el trabajo de devttys0 (Craig heffner, el mismísimo creador de reaver) quien publicó hace un poco más de una semana atrás un nuevo algoritmo para otros modelos.
Ampliamos así nuestra gama de modelos Belkin afectados por brechas conocidas y explotables.
La estrategia es en esencia la misma que en el épico fulldislcosure sobre routers D-link
Para "hackear" el firmware, craig ha operado del mismo modo que para el WRT120N ya que le sistema de ofuscación es en esencia el mismo que para los Belkin estudiados
El firmware en cuestión usa " SuperTask! RTOS"
Lo primero fue la necesaria intervención de binwalk para encontrar una dirección en el IDA que permita un "des-ensamblaje" correcto.
Lo que le llamó la atención para tener presa sobre su victima fue este bucle dedicado a rellenar con 0 la sección para datos BSS
Los bucles para generar 0 en el BSS son fáciles a localizar y usar para hacer "un reverse" ya que producen ceros en un espacio notable de la memoria y el bucle se encuentra generalmente en inicio de código.
En el caso presente se notó que desde 0x802655F0 hasta 0x80695574 todo era rellenado con ... 0
Además el BSS se situá en el código generalmente justo después los otros trozos de códigos para datos
Como el bucle se ha iniciado en el byte 0x2635EB podemos esperar encontrarnos el inicio de la sección BSS a este nivel :
Restando el tamaño de la sección justo antes del BSS al firmware entero; caemos en un valor sospechosamente muy cercano a 0x800002000 :
0x802655F0 - 0x2635EB = 0x800002005
Tenemos un "match" casi perfecto y usando 0x800002005 cómo dirección de inicio IDA se obtiene algo más que correcto :
¿Como legar hasta al algoritmo del PIN? Podemos empezar a buscar por la función que genera el Checksum wps.
Es poco probable que encontramos tal cual una función llamada wps_checksum() sin mesa de valores de símbolos.
Craig observo en sus estudios anteriores que las ensambladores MIPS en C tienden a producir un conjunto de valores predecibles al generar el PIN por defecto.
Así que ha sacado su script para buscar y localizar a estos valores que indican la generación del PIN por defecto : wpssearch.py
Y ¡Bingo! consigue localizar estos valores :
Pocas funciones hacen llamadas a wps_checksum y observando estas funciones nos encontramos a una cadena muy... interesante
GenerateDefaultPin
El código multiplica las operaciones con el operador XOR pero lo interesante a este momento es ver en base de que....
Y podemos ver a continuación que se usan dos cosas : elementos sacados de la dirección mac y elementos sacados del serial
GenerateDefaultPin(char *buf, int unused, char *mac, char *serial)
"char mac" y "char serial"
Conocer el BSSID de un router es cuestión de encender su adaptador wifi
El serial es otra historia y si las cosas son bien hechas (que no haya una relación directa y linear entre bssid y serial ) es imposible adivinarlo.
Pero si belkin lo regala en sus paquetes probes... la cosa cambia y tenemos todos los elementos para calcular el PIN por defecto
.... ¡Gracias Belkin!
Sobre 24 modelos testados, 80% fueron así derivados
A continuación tenéis una lista de los dispositivos afectados conocidos :
F9K1001v4
F9K1001v5
F9K1002v1
F9K1002v2
F9K1002v5
F9K1103v1
F9K1112v1
F9K1113v1
F9K1105v1
F6D4230-4v2
F6D4230-4v3
F7D2301v1
F7D1301v1
F5D7234-4v3
F5D7234-4v4
F5D7234-4v5
F5D8233-4v1
F5D8233-4v3
F5D9231-4v1
Podemos descargar un código PoC en los repositorios GitHub de devttys0 : Belkin pingen.c
Y les vuelvo a poner un vinculo hacía el tema de Craig: Reversing Belkin’s WPS Pin Algorithm
Desconectado
nice.. parece que compila bien en Windows.
muchos tanques kc
Desconectado
ya veo que ere imparable publica tema interesante, como siempre te explica muy bien, es una delicia leerte porque se te entiende a la primera en explica esta cosa tan compleja en algo sencillo de entender.
este Algoritmo tiene relacion con los otros Algoritmo que ya vemos visto y que esta implementado en alguna de nuestra aplicaciones, la diferencia entres arris y la vodafone arcadyan es que este parte de numero de serie y los dos digito de la mac. la operacion es casi iguales entres los otros dos Algoritmo.
puesto que ya los a explicado tu muy bien en el otros post me ahorro de explica los de codigo ademas para cualquier programador de c los entendera en seguida.
viver y ser libre
Desconectado
y si no sabemos C tenemos a tu curso con código pedagógico para ver el mecanismo
http://www.inforprograma.net/pagina-art … age_id1=65
Desconectado
¿Alguien tiene este router para probar?
He implementado esta función en reaver-t6x, pero no tiene este router para probar
Desconectado
desgrcaciadamente no....
adelantas nuestros deseos
si esta sen este tema debrías también mirrar el simple y sencilo "ZaoCheshung / WPSPIN·" :
https://www.wifi-libre.com/topic-9-algo … recha.html
Pues, pensaba justamente abrir un tickete en git hub sobre optimisación del fichero *.wpc que usa reaver.
mi idea era integrar los 6-7 algoritmos conocidos + los PIN genéricos conocidos....
veo que estas en ello...
Desconectado
Interesante, sería una buena opción también añadir esto, voy a echar un vistazo.
kcdtv, añadirme a través de Skype, el contacto más fácil
t6_skype
Desconectado
Te mando un MP
Desconectado
Tema | Respuestas | Vistas | Ultimo mensaje |
---|---|---|---|
|
26 | 7599 | 15-03-2023 16:57:32 por kcdtv |
Pegado: |
34 | 3711 | 12-03-2023 18:24:22 por Guybrush92 |
Pegado: |
436 | 63224 | 07-03-2023 12:35:27 por kcdtv |
0 | 389 | 23-02-2023 17:09:39 por kcdtv | |
114 | 258211 | 19-02-2023 17:36:14 por chuchof |
Ultimo usuario registrado: trdmexico
Usuarios registrados conectados: 0
Invitados conectados: 16
Número total de usuarios registrados: 2,431
Número total de temas: 1,632
Número total de mensajes: 15,528
Atom tema feed - Impulsado por FluxBB