Esta semana en seguridad: iPhone desactivado, Python Sensandboxed y Wizard Spider desenmascarado

Según las teorías de la conspiración, una de las más creíbles es que un teléfono móvil podría ejecutar firmware malicioso en su procesador de banda base y escuchar y transmitir datos incluso cuando está apagado. Hoy en día, este comportamiento se denomina función, al menos si su teléfono está hecho por Apple, con su función Find My. Incluso con el teléfono apagado, el chip Bluetooth funciona felizmente con poca energía, lo que hace que estas funciones funcionen. El problema es que este chip no hace un firmware firmado. Todo lo que se necesita es acceso de raíz al sistema operativo principal del teléfono para cargar una imagen de firmware potencialmente maliciosa en el chip Bluetooth.

Los investigadores de TU Darmstadt en Alemania demostraron el enfoque al escribir un excelente artículo sobre su trabajo (PDF). Hay algunas posibilidades realmente interesantes que sugiere esta investigación. La más simple es secuestrar el sistema Find Mine de Apple para rastrear a alguien con el teléfono apagado. El mayor peligro es que esto podría usarse para mantener el malware vigilante en un dispositivo incluso con ciclos poderosos. Los dispositivos tienden a estar bastante bien protegidos contra los ataques de la red externa y apenas contra los ataques que se originan en los propios chips. Desafortunadamente, debido a que el firmware no firmado es una restricción de hardware, una actualización de seguridad no puede hacer mucho para mitigar esto, aparte de los esfuerzos normales para evitar que los atacantes comprometan el sistema operativo.

Bluetooth de baja potencia

Este es otro problema relacionado con Bluetooth, esta vez con Bluetooth Low Energy (BLE) utilizado como token de autenticación. Probablemente haya visto esta idea de una forma u otra, como la opción de Android para permanecer desbloqueado siempre que esté conectado a sus auriculares BLE. Se usa para varios vehículos, para desbloquear una vez que el teléfono apropiado está dentro del rango BLE.

Siempre ha sido una mala idea usar BLE para este tipo de autenticación, ya que BLE es susceptible a ataques de retransmisión en vuelo. La mitad del ataque está al lado de tu teléfono, actuando como el chip BLE del auto, y la otra parte está al lado del auto, falsificando tu teléfono. Conecte los dos dispositivos falsos y el automóvil cree que el teléfono autorizado está allí. Para que esto sea "seguro", los proveedores han agregado funciones de encriptación, así como análisis de tiempo de señal para tratar de evitar una caída.

La verdadera innovación en el truco aquí es usar hardware dedicado que huele y reproduce en la capa de enlace. Esto evita el problema del cifrado, ya que la señal simplemente se transmite sin problemas. También acelera el proceso lo suficiente como para que las latencias sean bastante bajas incluso a través de Internet a cientos de millas de distancia. Es probable que la próxima iteración de esta técnica simplemente pueda usar radios definidas por programa para reproducir las señales a un nivel aún más bajo. La solución es solicitar autorización al usuario antes de desbloquear el vehículo o ingresar la información de ubicación en la carga útil encriptada.

Búfer de Python soplado

Esta es una de esas cosas que no es un problema importante y, sin embargo, podría ser un problema en ciertas situaciones. Todo comenzó en 2012, cuando se observó que Python memoryview un objeto podría bloquear un programa cuando apuntaba a una ubicación de memoria que ya no es válida. UN memoryview es esencialmente un puntero al búfer C subyacente y no recibe exactamente el mismo cálculo de referencia automático que un objeto de Python normal. Desasignar el objeto el memoryview indica, luego para referirse a ese "puntero" para algún comportamiento indefinido de estilo C. (Aquí no estamos apuntando a un código maldito, sino a una variedad de jardín UD: un puntero desreferenciado que ya no es un puntero válido). Un poco de manipulación de la memoria puede verificar cuál será el valor del puntero sin procesar y establecerlo en NULL chocar previsiblemente. el interprete.

Esto es en realidad lectura y escritura primitivas. Busque en la memoria de Python, encuentre los títulos ELF y luego descubra dónde está la glibc. system una biblioteca dinámica se encuentra en la tabla de procedimientos. Encuéntrelo, use el error de corrupción de memoria para saltar al lugar correcto en la memoria y explote, ¡ha roto el caparazón de Python!

Cuanto más astuto seas, más probable es que pienses, ¡ay! os.system(). Y sí, así es, ahora puedes ser conocido como El Señor de los Anillos. [kn32], Nuestro guía turístico sobre esta rareza de Python señala que podría usarse para escapar de una caja de arena de Python, pero este es un caso de uso muy específico. Incluso si llegamos a la conclusión de que esto no es realmente una explotación, es un gran tutorial y un poco de pirateo divertido.

Araña hechicera

¿Qué sucede cuando un grupo de investigadores inteligentes y altamente motivados, como la gente de PRODRAFT, pone sus sitios web en el carro del ransomware? Bueno, primero, tienen que pensar en un nombre atractivo. Decidieron llamar a esta banda de malware que lanza Conti Wizard Spider, obteniendo algunas vibraciones fuertes de D&D de eso.

El informe en PDF detalla los resultados, y son impresionantes. La investigación mapeó las herramientas seleccionables de WS, así como parte de su infraestructura, como la red de túneles Wireguard que utilizan para realizar sus acciones. Lo más interesante fue el descubrimiento de un servidor de copia de seguridad que se cree que está en Rusia, que también contenía copias de seguridad correspondientes a los ataques de REvil. Abundan las teorías sobre lo que indica exactamente este hallazgo. Hay otra versión del informe que se entregó a la policía, que probablemente incluya más información de identificación.

Hay una serie de técnicas notables discutidas aquí, incluido un motor de aprendizaje automático que analiza la escritura e intenta determinar el idioma nativo del autor. Hay explicaciones para esto, cómo omitir artículos, como "el", y usar el tiempo verbal incorrecto. Algunas oraciones en inglés de aspecto extraño son traducciones literales palabra por palabra de expresiones comunes en la lengua materna. En una conclusión que no sorprendió a nadie, PRODRAFT determinó que el portavoz oficial de WS era un hablante nativo de ruso. Con suerte, el resto de la historia detrás de la extracción de esta pila de información se puede compartir. Promete ser toda una historia de hackeo de piratas, y tal vez también de alguna artesanía antigua.

Revelando el truco paralelo

Dum Pwn2own 2021, [Jack Dates] de RET2 Systems logró romper la VM de Parallels. Para nuestro deleite, escribió el proceso de explotación de nuestra educación. Una serie de errores en el código adicional del invitado permite que una cadena se escape del invitado. El primer error utilizado es un flujo de información, donde se escriben 0x20 bytes en un búfer de tamaño 0x90 y luego todo el búfer se expone al invitado. Eso es 0x70 bytes de memoria de almacenamiento dinámico de VM del host que se pueden leer a la vez, solo lo suficiente para calcular algunas direcciones básicas.

El siguiente error es un desbordamiento de búfer en el código de tratamiento de arrastrar y soltar. La estructura que se pasa al host contiene una cadena destinada a terminar en cero, y omitir el cero permite un desbordamiento del búfer en la pila. Este excedente se puede utilizar para interrumpir el uso excepcional del código complementario de invitado que se ejecuta en el host. Un tercer error, el llamado "megasmash", no parece muy útil, ya que desborda un número entero para desencadenar un flujo de búfer masivo. El problema de usar esto es que cuando se desborda, intenta escribir 0xffffffff bytes por encima de la memoria del programa. La cadena usa esto para modificar un puntero de revocación para mostrar código malicioso. Sin embargo, se garantiza que parte de la memoria sea de solo lectura, lo que desencadena una excepción.

La clave aquí es que el manejo de excepciones se ha manejado mal, por lo que cuando se activa la excepción, el código de manejo falla y se bloquea inmediatamente, lo que impide la limpieza normal del programa. Otros subprocesos pueden golpear el puntero de función mal manejado, lo que provoca la ejecución del código. Todos los errores descubiertos se corrigieron a fines del año pasado y [Jack] Hizo unos buenos $ 40,000 para la cadena operativa. ¡Disfrutar!

Ricardo Vicente
Ricardo Vicente

Deja una respuesta

Tu dirección de correo electrónico no será publicada.