«Los valores hash? No necesitamos ningún hashes apestosos!»

/ * <[CDATA [* / var asciidoc = {/ / Namespace!. / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Indice generador / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / * Autor: Mihai Bazon , septiembre de 2002 * http://students.infoiasi.ro/ ~ mishoo ** Tabla de generador de contenido * Versión: 0.4 ** Siéntase libre de utilizar esta secuencia de comandos en los términos de la GNU General Public License *, siempre y cuando lo hace no suprimir o alterar este aviso. * / / * Modificado por Troy D. Hanson, septiembre de 2006. Licencia: GPL * / / * modificado por Stuart Rackham, 2006, 2009. Licencia: GPL * / / / toclevels = 1 .. 4. toc: function (toclevels) {function getText (el) {var text = ""; for (var i = el.firstChild; i = null; i = i.nextSibling!) {if (== i.nodeType 3 / * Node.TEXT_NODE * /) / / IE no habla constantes. texto + = I.Data; else if (i.firstChild = null!) Texto + = getText (i);} texto return;} function TocEntry (el, texto, toclevel) {this.element = el; this.Text = texto; this.toclevel = toclevel;} tocEntries función (EL, toclevels) {var result = new Array; var re = new RegExp ('[HH] ([1 -' + (toclevels 1) + '])') / / Función que escanea el árbol DOM para elementos de encabezado (la API DOM2 / / NodeIterator sería una mejor técnica, pero no con el apoyo de todos / / los navegadores). iterate var = function (el) {for (var i = el.firstChild;! i = null; i = i.nextSibling) {if (== i.nodeType 1 / * Node.ELEMENT_NODE * /) {var = mo re . exec (i.tagName); if (mo && (i.getAttribute ("clase") | | i.getAttribute ("className")) = "float"!) {resultado [result.length] = new TocEntry (i , getText (i), mo [1] -1);} iteración (i);}}} iterate (el); return resultado;} var toc = document.getElementById ("toc"); if (toc) {! vuelta;} / / Eliminar entradas de la TDC existentes en caso de que estamos volviendo a cargar el TOC. var tocEntriesToRemove = []; var i; for (i = 0; i «+» «+ n «.» + + nota + «

«; var id = palmos [i] getAttribute («id»);. if (id = nulos!) refs [«#» + id] = n;}} si (n == 0) noteholder.parentNode.removeChild (Bonista); else {/ / Proceso footnoterefs. for (i = 0; i

Nota

Este es sin duda un largo post. Espero que usted lo encontrará digno de su tiempo. Demuestra una metodología para la obtención de imágenes de los dispositivos Android que están bloqueados depuración USB desactivado. Un popular dispositivo, el Samsung Galaxy S3 se utiliza para la demostración. Esto es no una guía paso a paso para todos los dispositivos Android, pero puede ser utilizado como marco para adaptarse a su situación.

Samsung ha subido recientemente la apuesta cuando se trata de cerraduras PIN / Contraseña Android en Jelly Bean. Versiones anteriores de Android concatenan el del pin / password con la sal de contraseña y se calculan tanto SHA1 y MD5 hash de cadena. Los hashes se concatenan y se almacenan en el 72-byte / data / system / password.key del archivo. Hablé de descifrar el password.key aquí y aquí. Pero ahora, Samsung ha cambiado el juego.

Tiempos de Cambio

Mi primer encuentro con el cambio en marzo. Se puso en contacto para ayudar a una agencia de aplicación de la ley con el agrietamiento de un pin de Samsung S2. Yo planeaba usar hashcat para romper el pin, y la agencia tenía esos archivos en la lista. Pero, para mi sorpresa, el archivo password.key tenía sólo 40 bytes de longitud. Yo no voy a aburrir con los pasos que tomé para intentar romperlo, pero basta con decir que no romperlo.

Más tarde se supo que Samsung había cambiado el esquema de hash pin / contraseña en sus lanzamientos JellyBean Android. El nuevo esquema prevé la pin / contraseña que se concatenan como antes, pero el hash SHA1 se repite 1024 veces así:

  • sha1 (lastHash + iteración + pin / password + saltHex)

Asumamos un alfiler de 1234 . Teniendo en cuenta que en computerese, contando comienza en cero y no hay lastHash en la primera iteración, el proceso sería algo como esto:

Tabla 1. Nuevo esquema de Samsung hash

iteración

Concatentated Elementos

Ejemplo

0

0 + 1234 + a1b2c3d4e5f6abbc

01234a1b2c3d4e5f6abbc

1

SHA1 + 1 + 1.234 + a1b2c3d4e5f6abbc

monospaced»> class=»tableblock

2

SHA1 + 2 + 1.234 + a1b2c3d4e5f6abbc

44f1 … 3ba321234a1b2c3d4e5f6abbc

1023

SHA1 class=»tableblock»>

monospaced»> class=»tableblock

Conocer el esquema hace que descifrar el hash resultante posible, aunque mucho más lento que el esquema androide de valores. Pero, este post no se trata de descifrar el hash-corre el rumor de que Samsung está planeando cambiar su método de hash de nuevo ahora que el secreto está hacia fuera – se trata de ignorar por completo

!

viajar en el tiempo

Volver a marzo … mencioné que No romper el pin que se envió a mí, ut, que me hizo pensar: ¿hay otra manera de hacer frente a los dispositivos Android bloqueados. Sabía por experiencia y estudio que el patrón de bloqueo de Android se almacena como un hash SHA1 de los datos / system / gesture.key de archivos binarios y el pin / password se almacena en los datos / sistema / gesture.key del archivo de texto. Así que, me fui a trabajar en emuladores de Android para Android 2.3, 4.0 y 4.1

Y lo que descubrí fue esta:. Simplemente el cambio de nombre (prefirió borrar por lo que los datos todavía pueden ser examinadas) gesture.key o password.key del archivo (por ejemplo, «gesture.key.bak») desactivado las cerraduras! Un reinicio elimina los valores hash de la memoria y no se vuelve a cargar el sistema operativo, ya que ya no existen. En el emulador, todavía estaba presentado con las pantallas de bloqueo, pero mediante la introducción de cualquier patrón, o al tocar Aceptar / Hecho en la pantalla de pin / contraseña, tuve acceso al dispositivo. En los dispositivos del mundo real, las pantallas de bloqueo fueron anuladas por completo.

La agencia de policía me estaba ayudando tenía acceso root en el dispositivo en cuestión, o lo harían no han sido capaces de enviarme los archivos password.key y settings.db. En contacto con ellos y les aconsejé que cambiar el nombre del password.key y como se esperaba, se evitaron los lock pin.

Got Root

Ahí está el problema, sin embargo:? conseguir acceso root . En Android 2.3, esto se podría hacer, en su mayor parte, con exploits de escalada de privilegios como rageagainstthecage, GingerBreak y ZergRush, por nombrar algunos de los más populares. Las hazañas, en términos generales, se estrellaron los servicios en los dispositivos y les impidieron descalating privilegios en el reinicio. Para las hazañas al trabajo, la depuración USB se necesita para estar habilitado para que el software podría ser empujado a través de la http://developer.android.com/tools/help/adb.html [Android depuración Bridge] (adb) desde el escritorio hasta el dispositivo. Mientras que recibo algunos dispositivos con USB depuración habilitada, la gran mayoría no están en esa condición. Y, los días de Android 2.3 están disminuyendo; ahora veo Android 4.0 + dispositivos más que se han fortalecido en contra de tales ataques

¿Qué, pues se puede hacer. acerca de un dispositivo Android cerrada donde la depuración USB está desactivado, o en una versión de Android que no es vulnerable a un privilegio explotar ataque? ¿Cómo nos comunicamos con un dispositivo que se niega simplemente a hablar con nosotros?

recuperación no es sólo para Adictos

El sistema operativo Android se basa en varias particiones para separar y proteger los datos. Es probable que haya excepciones a la regla, pero se puede esperar encontrar una partición de arranque, una partición del sistema (el sistema operativo que es la experiencia del usuario), una partición de datos (aplicaciones de usuario y datos), una partición de caché, y una partición de recuperación . Hay, de hecho, muchos más particiones en la mayoría de los dispositivos. Pero nos vamos a centrar en la partición de recuperación en esta discusión.

Recovery es un sistema operativo propio. Es pequeño y limitado y la mayoría de los fabricantes a limitar su funcionalidad. En recuperaciones de valores, las funciones se limitan a las actualizaciones del sistema de instalación, conocida como ROM y el limpieza de los datos y las particiones de caché (por ejemplo, para eliminar los datos del usuario antes de vender o devolver el dispositivo).

menos conocido es que muchas recuperaciones de valores tienen la depuración USB activada, es decir, un sistema de escritorio puede comunicar con el dispositivo a través del adb. Los privilegios a través de la recuperación de la población son limitados, pero algunos datos pueden extraerse del sistema. Echemos un vistazo a un Galaxy S3 Samsung que está bloqueado-pin sin depuración USB habilitado …

arrancado en la ROM del sistema (el sistema operativo estándar), se espera que para que no pueda conectar con el dispositivo a través de adb.

ADB
$ adb
Lista de dispositivos conectados

$

Efectivamente, el dispositivo no se detecta porque el demonio adb en el dispositivo no se está ejecutando. Después de apagar el dispositivo, arrancamos en la recuperación manteniendo pulsado el hogar + hasta + el volumen de energía.

src

Suelte el botón de encendido después de los dispositivo vibra pero continúe sosteniendo los otros botones de hardware hasta que aparezca el gráfico Android.

Después de que aparezca el gráfico Android, se visualiza el menú de recuperación del stock. El menú tiene la funcionalidad limitada descrita anteriormente, pero no estamos aquí para mirar el menú, pero para determinar si el demonio adb se está ejecutando.

ADB
 $  adb 
Lista de dispositivos conectados
e7bc4973 recuperación

$

Nice! Ahora tenemos comunicación con el dispositivo. Si dejamos caer a un shell con el adb shell class=»monospaced»> de comandos o registramos nuestros privilegios con Identificación adb shell , veríamos que hemos privilegios limitados como el usuario del shell. Pero hay una cosa que podemos hacer, lo que puede ser muy útil en la búsqueda de maneras de derrotar a la seguridad, es determinar qué versión de Android está instalado.

ADB
 $  adb shell cat default.prop 

# # # ADDITIONAL_DEFAULT_PROPERTIES

ro.secure = 1
ro.allow.mock.location = 0
ro.debuggable = 0
...

el archivo de texto default.prop en el arranque y muestra muchos de los ajustes del dispositivo. Lo primero que vemos es lo que ya sabemos: el dispositivo está bloqueado (ro.secure = 1), y la depuración USB está desactivado en el sistema ROM (ro.debuggable = 0). Pero más adelante en el archivo que vemos algunas cositas interesantes (exerpted):

ADB
 ro.build.id = JZ054K 
ro.build.version.incremental = I535VRBMB1
ro.build.version.release = 4.1.2 />
ro.product.model = SCH-I535
ro.product.brand = Verizon
ro.product.device = d2vzw

Ahora sabemos los detalles importantes del dispositivo: marca, modelo y versión de Android. Investigando el dispositivo, encontramos que hay sistemas operativos de recuperación personalizada tanto ClockWorkMod (CWM) y el Proyecto de Recuperación de victorias del equipo (TWRP). Ambas recuperaciones están arraigados, lo que significa que arranque con privilegios administrativos en su lugar. Y en nuestro caso, esa es la única característica en la que estamos interesados.

dispositivos de Samsung tienen un modo de descarga, también conocido como modo de «Odin», por cargar los datos en particiones. La herramienta de descargas propietaria pero filtrado «Odin» se utiliza para realizar esta tarea. No es una herramienta de código abierto, Heimdall, que es el equivalente funcional de Odin. Odin es sólo para Windows de software, pero Heimdall es multiplataforma. Nuestro objetivo es utilizar Odin o Heimdall para instalar una de las recuperaciones personalizados. No queremos erradicar completamente el dispositivo como un usuario final podría, como que hace que los cambios en el sistema de y los datos particiones.

poderosos dioses nórdicos

Odín y Heimdall se nombran para Norse Gods. El software tiene el poder para impulsar el software a un dispositivo de Samsung Android, mientras el dispositivo está en modo de descarga. Llegan a ser paralizado cuando el gestor de arranque está bloqueado, sin embargo. Por suerte, un gestor de arranque desbloqueado se puede instalar primero para permitir la instalación de la recuperación personalizado. No, en absoluto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *