Ataques de Arranque Custom by GeekLock
Ataques de Arranque Custom by GeekLock
Ataques de Arranque Custom by GeekLock
fábrica fastboot oem config bootmode (N6) Vulnerabilidad 2. Fuga de memoria no inicializada del kernel
fastboot oem enable-hw-factory (N6P)reinicio de usbnet de Nexus 6 a través de USB (CVE-2016-6678)
fastboot El controlador del kernel f usbnet de Motorola filtra 4-5 bytes de
datos del kernel no inicializados por cada marco que envía a través
Esto significa que el atacante ni siquiera necesita poseer el de USB, lo que permite al adversario extraer información del
dispositivo para atacarlo. Por lo tanto, el malware solo necesita dispositivo.
esperar a que la víctima habilite ADB una vez, y luego cualquier los usb_ether_xmit función (Figura 4) recibe el búfer de
arranque futuro tendrá habilitado el modo de arranque socket (skb) y lo pone en cola en el punto final USB. La
peligroso. Cabe señalar que puede aparecer un cuadro de función agrega otros 4-5 bytes al búfer del socketlen fi
diálogo de autorización ADB en el dispositivo. Otra opción para campo, con el fin de reservar espacio para el CRC de la trama
el malware sin acceso a ADB es esperar de manera oportunista a que se transmitirá próximamente. Dado que la función no
que el dispositivo esté en elfastbootmodo, y luego simplemente calcula y establece el CRC en el espacio reservado, el campo
emita el comando correspondiente. se envía sin inicializar (y puede contener datos de
Una vez más, la capacidad de cambiar el modo de arranque a asignaciones anteriores) a través del cable USB. La Figura 5
través de un comando fastboot se ha conocido dentro del desarrollo muestra una fuga exitosa.
2
III. Ataques
Describimos algunos ataques que pueden surgir de las
vulnerabilidades enumeradas anteriormente. La siguiente
stat ic int usb ether xmi t estructura sk bu ff ∗skb,
estructura ne t de vicio ∗dev) {
tabla resume los requisitos de ataque y las vulnerabilidades
estructura contexto usbnet ∗contexto = ne tdev pr iv ( explotadas, para cada uno de los ataques descritos.
dev);
estructura USB solicitud ∗req;
no firmado largo banderas Ataque Nexus 6 Nexus 6P Vulnerabilidad
no firmado l en;
En t rc;
1 χ∨ϕ - 1
req = usb obtener xmi tr eque st (DETENER COLA, dev); 2 χ∨ϕ χ∨ϕ 1
....
/ ∗ Agregar 4 bytes CRC ∗ /skb->l
3 χ∨ϕ - 1,2
en + = 4; 4 χ∨ϕ - 1
/ ∗ asegúrese de que terminemos con un paquete corto ∗ /l en 5 - φ∧ϕ 1
= skb->l en; 6 - METRO ∧ F 1
si (! (l en & 63) | |! (l en y 511))
l en ++; Leyenda: φ - Acceso físico a la PC bloqueada autorizada
req->context = skb; req->buf =
skb->datos ; req->l ength = l en; por ADB de la víctima. ϕ- Acceso físico al dispositivo Android.
χ - PC / cargador malicioso infectado con malware con (al
rc = cola ep usb (contexto->a granel, req, menos) acceso ADB / fastboot una vez a un dispositivo.
NÚCLEO GFP); METRO - PC autorizada por ADB infectada con malware. F -
....
regreso 0; dispositivo en modo fastboot.
}
Ataque 1. Acceso no autenticado a la interfaz de diagnóstico del
módem de Nexus 6 a través de USB
Figura 4. f función usb ether xmit de usbnet
Configuración y requisitos previos: Este ataque explota Vuln 1 y
funciona solo en Nexus 6, por lo que requiere un atacante (malware
de PC / cargador / atacante físico) que pueda reiniciar en uno de los
modos de arranque especiales como se explicó anteriormente.
banderas
frag 0L
ttl
proto
64
icmp
estragos antes de abandonar el dispositivo.
chksum 0x336b
src 1.2.3.4
También debe tenerse en cuenta que nuestro modelo de propiedad (
dst 1.2.3.1
opciones [] XT1100)es el internacional. El otro modelo (XT1103) podría impedir el
ICMP
escribe dest-unreach
acceso de diagnóstico al módem y / o tener un código de proveedor de
puerto inalcanzable
servicios (SPC) y una contraseña de diagnóstico diferentes.
código
chksum 0x553
reservado 0
largo 0 Impacto: El acceso a la interfaz de diagnóstico permite al
nexthopmtu 0
IP en ICMP adversario poseer prácticamente el módem. Logramos con éxito (1)
versión 4L
ihl 5L Interceptar llamadas telefónicas. En nuestro entorno de prueba, se
tos 0x0
len
identificación
80
1
trataba de tramas de codificador de voz UMTS RX / TX con audio
banderas
frag 0L
codificado en AMR 12.2 [3]. Luego los ensamblamos en un archivo
ttl 64
proto udp AMR [1], el resultado se muestra en la Figura 6 como una forma de
chksum 0x7294
src 1.2.3.1 onda. (2) Olfatear paquetes de datos. (Figura 7) (3) Encuentre las
dst 1.2.3.4
opciones [] coordenadas GPS exactas con información satelital detallada. (4)
UDP en ICMP
deporte 1234 Obtenga información de llamadas. (5) Iniciar llamadas telefónicas. (6)
dport 51
len 60 Acceder / Cambiar elementos NV. (7) Acceder / Cambiar el EFS.
chksum 0xe85
Crudo
3
2 otros
Figura 6. Forma de onda 'IBM' interceptada (con acento hebreo)
(UMTS RX)
A Descripción
+ CLCC Mostrar llamada actual
4
ip = socket.inet_aton (IP_ADDR) ipwords = adb_auth_client.cpp). Un problema, como con Poison-Tap
struct.unpack ("HH", ip) sn = socket.inet_aton [17], es que el host ADB firma un token determinado, incluso
(SUBNET_MASK) snwords = struct.unpack ("HH", sn)
host = socket.inet_aton (HOST) hostwords = en hosts bloqueados. Otro problema fundamental con el
struct.unpack ("HH", host) protocolo ADB que permite ataques es el hecho de que solo
el apretón de manos es seguro. Por lo tanto, un atacante de
dev = usb.core.find () Manin-the-Middle (MiTM) puede colocar algún hardware
dev.ctrl_transfer (0x40, 0x5, ipwords [1], ipwords [0]) dev.ctrl_transfer (0x40, especial entre el dispositivo de la víctima y el host para
0x6, snwords [1], snwords [0]) dev.ctrl_transfer (0x40, 0x7, hostwords [1], secuestrar / monitorear la sesión de ADB.
hostwords [0])
Configuración y requisitos previos: Nuestro ataque supone un
acceso físico a la PC y al dispositivo Android de la víctima. La PC se
Figura 10. Nexus 6 usb0 configuración vía USB
puede bloquear. El ataque requiere que la PC de la víctima esté
autenticada con adbd, sin embargo, no requiere que ADB se esté
shell @ shamu : / $ ifconfig usb0 usb0 ejecutando en el dispositivo antes de hacerlo. Un ejemplo factible de
Encapsulado de enlace: UNSPEC
inet addr: 1 .2.3.4 Bcast: 1 .2.3.255 Máscara: 255 una configuración de este tipo con los requisitos previos antes
.0.0.0 mencionados es un atacante interno, dirigido a un compañero
inet6 addr: fe80 :: dcb9: c8ff: fee0: e04b / 64 Alcance: Link UP BROADCAST
EJECUTANDO MULTICAST MTU: 1500 desarrollador, que dejó su dispositivo bloqueado desatendido. El
Métrica: 1 desarrollador había autorizado ADB permanentemente a su PC, pero
Paquetes RX: 10 errores: 96 descartados: 2 desbordamientos: 0 trama: 0
paquetes TX: 394 errores: 0 descartados: 0 desbordamientos: 0 portadora: 0 luego desactivó ADB en el dispositivo.
colisiones: 0 txqueuelen: 1000 Flujo de ataque: (1) Al explotar Vuln 1, un atacante no
Bytes RX: 176 bytes TX: 50601
autenticado habilita adbd en el dispositivo. (2) El atacante
conecta el dispositivo a través de un proxy USB. (3) La PC de
Figura 11. Nexus 6 con configuración USB usb0 adaptador
la víctima (ADB HOST) firma ciegamente el token ADB
generado por el dispositivo, incluso si está bloqueado. (3) El
Ataque 4. Fugas limitadas de paquetes a través de USB atacante ahora tiene una sesión adb autenticada con el
dispositivo de la víctima.
Configuración y requisitos previos: A partir del Ataque 3.Flujo Impacto: El atacante ahora tiene un shell (ejecutándose como el
de ataque: De manera similar al Ataque 3, el adversario usuario 'shell' capaz que es miembro de varios grupos) en el
interactúa y configura, a través de USB, el adaptador de red dispositivo. Por lo tanto, puede instalar aplicaciones maliciosas,
usb0, pero esta vez con configuraciones de red arbitrarias para copiar archivos desde / hacia el dispositivo, generar un informe de
exfiltrar / inyectar tráfico de red desde / hacia el dispositivo. errores y más. Tenga en cuenta que Direct Boot [10] no protege
contra la instalación de malware.
Impacto: (1) Nuestro breve análisis demostró que podemos
capturar paquetes de transmisión y multidifusión (como Googlecast Ataque 6. Obtener una sesión ADB de un dispositivo Nexus 6P mediante
mensajes de descubrimiento). No hemos logrado que los paquetes software malicioso para PC
de unidifusión con puertos TCP / UDP por debajo de 1024 se enruten
Configuración y requisitos previos: El ataque requiere que la PC de
al dispositivo USB, excepto los generados porraíz. (2) Hemos logrado
la víctima esté autenticada con adbd, sin embargo, no requiere que
capturar conexiones de unidifusión a cualquier IP, apuntando a los
ADB se esté ejecutando en el dispositivo antes de hacerlo. Un
puertos 1024 y superiores, mediante el uso de una aplicación
ejemplo factible de tal configuración es un desarrollador que había
maliciosa sin permiso (a excepción del permiso INTERNET otorgado
autorizado ADB permanentemente a su PC, pero luego deshabilitó
automáticamente) que escucha en los puertos por encima de 1024.
ADB en el dispositivo.
Luego, el atacante puede configurar el adaptador usb0 con la IP de
Flujo de ataque: (1) El malware para PC espera a que la víctima
su objetivo (por ejemplo, la IP de www.ibm.com). Esto hará que
coloque el dispositivo en el fastboot modo, luego explota Vuln 1
cualquier tráfico dirigido a esa IP se recupere en un bucle de retorno,
usando el comando fastboot mencionado anteriormente. (2) El
que el atacante escucha. Este ataque puede permitir Universal XSS en
atacante ahora tiene una sesión adb autenticada con el
sitios sin HSTS [15], o en sitios HSTS nunca visitados / antiguos que
dispositivo de la víctima.
no están en la lista de precarga de HSTS [2].
Impacto: Similar al Ataque 5.
Ataque 5. Obtener una sesión ADB de un dispositivo Nexus 6P IV. Divulgación coordinada
por parte de un atacante físico
Todos los problemas se comunicaron de manera responsable a Google
Fondo: Como parte del apretón de manos de ADB [22], antes de la publicación de este documento.
adbd, que se ejecuta en el dispositivo móvil, genera un Google calificó a Vuln 1 (CVE-2016-8467) con Elevadogravedad y la
token aleatorio de 20 bytes (adb_auth_generate_token mitigó al prohibir que un cargador de arranque bloqueado arrancara
debajoadb_auth_client.cpp) que es entonces RSA-firmado con los modos de arranque peligrosos. La primera versión de
por el anfitrión de ADB (adb_auth_sign debajo cargador de arranque no vulnerable de Nexus 6 es 71.22 (publicada
adb_auth_host.cpp).El primero devuelve el token firmado en el Boletín de seguridad de Android de noviembre de 2016 [11]). La
a adbd, que valida la firma (adb_auth_verify debajo primera versión de gestor de arranque no vulnerable de
5
Nexus 6P es 03.64, lanzado como parte del boletín de seguridad [dieciséis] Palanqueta. ADB Comandos. https:
de enero de 2017 [13]. // sitios.Google.com / site / jimmy1115kk / engineering /
Google calificó a Vuln 2 (CVE-2016-6678) con Moderar android / adb-commands.
severidad y la mitigó mediante el compromiso 3f3c8a8 [23]. El [17] Kamkar, S. PoisonTap: extrae cookies, expone el enrutador
relleno ahora se pone a cero para que los bytes no inicializados interno e instala una puerta trasera web en computadoras
no se filtren. El parche se publicó como parte del boletín de bloqueadas, 2016. https: // samy.pl / poisontap /.
seguridad de Android de octubre de 2016 [12]. [18] Krebs, B. Cuidado con el Juice-Jacking, 2011.
https: // krebsonsecurity.com / 2011/08 / cuidado-con-la-
extracción-de-jugo /.
Referencias [19] Lau, B., Jang, Y. y col. MACTANS, inyección de malware
en dispositivos iOS a través de cargadores maliciosos.
[1] Formato de archivo AMR. http: // hackipedia.org / File% En BlackHat Estados Unidos (2013), Instituto de
20formats / Containers / AMR,% 20Adaptativo% Tecnología de Georgia. https: // medios.sombrero
20MultiRate / AMR% 20format.pdf. negro.com / us-13 / US-13-Lau-Mactans-Injecting-
[2] Envío de lista de precarga HSTS. // https: Malware-in-iOS-Devices-via-Malicious-Chargers-WP.pdf.
hstspreload.org /. [20] Motorola, Inc. Controlador de gadget para Motorola
[3] Códec AMR en UMTS, 2007. // http: USBNet, 2009. https: // android.googlesource.com /
onlinelibrary.wiley.com / doi / 10. kernel / msm.git / + / android-msm-shamu-3.10-
1002/9780470612279.aplicación1 / pdf. marshmallow / drivers / usb / gadget / f usbnet.C.
[4] Beniamini, G. Privilegio QSEE escalada [21] Shen, D. Explotación de Trustzone en Android. En
vulnerabilidad y explotación (CVE-2015-6639). http: // Sombrero negro (2015).
bits-por favor.blogspot.com / 2016/05 / qseeprivilege- [22] Styan, C. Documentación del protocolo ADB. https: //
escalation-vulnerabilidad.html. github.com / cstyan / adbDocumentation.
[5] CodeAurora. El comando de arranque Fastboot omite [23] Tjin, P. usb: gadget: f usbnet:
la verificación de firmas (CVE-2014-4325), 2014. relleno de cero.CRC https: //
https: // www.codigo aurora.org / projects / androide.googlesource.com / kernel / msm / + /
securityadvisories / fastboot-boot-command- 3f3c8a8313ff7995498d6e794f67650c8ba8072d.
bypassessignature-verify-cve-2014-4325. [24] Desarrolladores XDA. Breve guía para conectarse al
[6] Google. Cifrado basado en archivos. https: puerto diag con QPST y QXDM para Nexus 6P, 2016.
//fuente.androide.com / security / encryption / https: // foro.desarrolladores xda.com / nexus-6p /
filebased.html. general / guide-biref-guide-to-connect-to-
[7] Google. Cifrado de disco completo. https: diagt3354938.
//fuente.androide.com / security / encryption / [25] Xiao, C. DualToy: El nuevo troyano de Windows transfiere
fulldisk.html. aplicaciones riesgosas a dispositivos Android e iOS,
[8] Google. Almacén de claves respaldado por hardware. https: // 2016. http: // researchcenter.paloaltonetworks.com /
fuente.androide.com / security / keystore / index.html. 2016/09 / dualtoy-new-windows-trojan-sideloads-
[9] Google. Asegúrese de que su dispositivo esté riskyapps-to-android-and-ios-devices /.
tected. https: // soporte.Google.com / nexus / answer /
6172890? hl = es.
[10] Google. Secundario directo bota.
https: // desarrollador.androide.com / training / articles /
direct-boot.html.
[11] Google. Boletín de seguridad de Android: noviembre de
2016, 2016. https: // source.androide.com / security /
bulletin / 2016-11-01.html.
[12] Google. Boletín de seguridad de Android: octubre
2016, 2016. https: // fuente.androide.com / security /
boletín / 2016-10-01.html.
[13] Google. Boletín de seguridad de Android: enero
2017, 2017. https: // fuente.androide.com / security /
boletín / 2017-01-01.html.
[14] Hay, R. Vulnerabilidad parcheada no documentada en Nexus
5X permitida para volcado de memoria a través de USB,
2016. http: // ibm.co / 2i2HVlK.
[15] Hodges, J., Jackson, C. y Barth, A. RFC 6797: HTTP
Strict Transport Security (HSTS), 2012. https: //
herramientas.ietf.org / html / rfc6797.