Showing posts with label trasversal. Show all posts
Showing posts with label trasversal. Show all posts
Thursday, September 28, 2017
Hacking Android Ataques de Directory Trasversal con ficheros ZIP
Hacking Android Ataques de Directory Trasversal con ficheros ZIP
En la BlackHat London 2015 el investigador Ryan Welton mostr� c�mo se pod�a hacer directory traversal a trav�s de inyecciones ZIP en dispositivos Android. Mi compa�ero Fran Ramirez (@cyberhadesblog) y yo hemos estado ojeando esta t�cnica estos d�as. La idea es muy sencilla, un archivo ZIP creado de forma maliciosa puede permitir a un potencial atacante escribir un archivo arbitrario en secciones no controladas del sistema operativo Android. Y cuando decimos arbitrario, queremos decir en una ubicaci�n para la cual la app que lo ejecuta no tendr�a acceso a priori.
Como se puede ver, la idea presentada por Ryan Welton es sencilla a la vez que interesante. Podemos generar un ZIP que extraiga los archivos subiendo varios niveles de la carpeta d�nde se encuentra. Esto ser�a f�cil a trav�s de la sintaxis �../�. Si el fichero ZIP no es gestionado de forma adecuada, esto podr�a permitirnos escribir fuera del directorio de extracci�n, es decir, escribir un archivo en otra ubicaci�n, incluida otra aplicaci�n. Esta t�cnica no es nueva, y en el a�o 2010, en el blog Seguridad Apple, ten�amos ejemplos de estos trucos en herramientas como ZipEg para MacOS.
C�mo se explic� en la charla de BlackHat muchas apps descargan recursos en formato ZIP, por lo que un atacante podr�a intentar colocarse en medio de una comunicaci�n en una red y obtener ventaja modificando el ZIP que se descarga la app leg�tima y sustituirlo por un ZIP malicioso. Hay que tener en cuenta siempre los permisos de la carpeta donde queremos ubicar los ficheros inyectados. Si las rutas son directorios de sistema, ser� necesario que la aplicaci�n o proceso que descomprima el fichero ZIP tenga permisos necesarios.
En el ejemplo mostrado por Ryan Welton, �ste inyecta un fichero en unos de los ZIP que se descarga una aplicaci�n de la Google Play Store (�My Talking Tom�) y que luego se descomprime autom�ticamente al ejecutarse (desde el proceso �PackageInstaller� de Android) el fichero APK donde se encuentra la misma. De esta forma garantizamos que al menos en la carpeta donde se instala la aplicaci�n podemos inyectar nuestro c�digo modificado o incluso sustituir alguna librer�a o m�dulo del programa original como hemos mencionado antes.
Escenarios posibles
Los escenarios pueden ser distintos, por lo que vamos a ver distintos casos que se detallan en la charla de Ryan Welton:
En primer lugar, hablamos del entorno que se ha montado para llevar a cabo esta prueba.
En el siguiente video se puede ver MITMProxy mostrando las peticiones que se realizan, y en el instante en el que se quiere descargar un ZIP de una ubicaci�n X, se lleva a cabo la modificaci�n o inyecci�n del ZIP malicioso por el leg�timo.
Viendo esto est� claro que se puede manipular de forma sencilla este tr�fico. Una vez la aplicaci�n descarga el archivo ZIP modificado, depende de los permisos o mecanismos de seguridad que se tengan para proteger la extracci�n y la ubicaci�n d�nde se pondr�n los ficheros que se encuentran en el interior del ZIP.
Para esta PoC hemos utilizado el c�digo publicado en la art�culo de We Live Security cambiando solamente el formato de decodificaci�n de UTF-8 a ISO-8859-1 y el �payload�. Este script de mitmproxy detecta el tr�fico de red, en concreto analiza las cabeceras GET de http/https y cuando detecta un fichero con los caracteres �PK� en los primeros dos bytes (cualquier fichero en formato ZIP) activa inyecci�n.
La rutina �response� se encarga de detectar los ficheros y tambi�n es aqu� donde definimos las rutas de inyecci�n. La rutina �injectIntoZip� por otro lado, se encarga de insertar el fichero con nuestro payload (en nuestro caso el fichero �zipizape�) dentro del fichero ZIP interceptado. En vez de utilizar directamente mitmproxy hemos optado por la versi�n mitmdump, para poder mostrar los mensajes de salida (�Found ZIP� y �Zip injected�) una vez se ha realizado la inyecci�n como puede observarse en la imagen anterior. El funcionamiento de mitmproxy y mitmdump es id�ntico, s�lo tienen como diferencia la informaci�n que muestran en pantalla.
Unzip en BusyBox
En todos los sistemas Android donde hemos realizado las pruebas se ha utilizado el programa �unzip� integrado en Busybox. �ste es b�sicamente un paquete de aplicaciones que re�ne las utilidades y comandos m�s comunes de UNIX (como por ejemplo el mencionado �unzip�) en un �nico fichero binario. Muchos sistemas GNU/Linux llevan por defecto una versi�n de este paquete debido a su gran utilidad.
La primera curiosidad que nos encontramos es que en funci�n de la versi�n de Busybox que se est� utilizando, la inyecci�n a trav�s del ZIP funciona o no lo hace. En estos videos se pueden ver las diferentes posibilidades, con la versi�n 1.22 y con la versi�n 1.26.2.
Interesante charla y concepto de inyecci�n a trav�s de los ficheros ZIP. La posibilidad de tener o aprovechar un Directory Traversal en sistemas como Android es un concepto interesante. Por supuesto, hay sistemas parcheados y otros muchos Android que est�n expuestos a este tipo de ataques o t�cnicas, y, l�gicamente, dependiendo de las medidas de seguridad que pongan las apps para descargar los ZIP ser�n vulnerables o no a estos ataques. Adem�s, estos trucos podr�an empezar a ser utilizados por el malware para Android para ocultarse mejor en el sistema.
Autores: Pablo Gonz�lez P�rez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y �Pentesting con Powershell�, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths y Fran Ramirez (@cyberhadesblog) escritor de libro "Microhistorias: an�cdotas y curiosidades de la historia de la inform�tica" e investigador en ElevenPaths
![]() |
Figura 1: Hacking Android. Ataques de "Directory Trasversal" con ficheros ZIP |
Como se puede ver, la idea presentada por Ryan Welton es sencilla a la vez que interesante. Podemos generar un ZIP que extraiga los archivos subiendo varios niveles de la carpeta d�nde se encuentra. Esto ser�a f�cil a trav�s de la sintaxis �../�. Si el fichero ZIP no es gestionado de forma adecuada, esto podr�a permitirnos escribir fuera del directorio de extracci�n, es decir, escribir un archivo en otra ubicaci�n, incluida otra aplicaci�n. Esta t�cnica no es nueva, y en el a�o 2010, en el blog Seguridad Apple, ten�amos ejemplos de estos trucos en herramientas como ZipEg para MacOS.
![]() |
Figura 2: Ejemplo de manipulaci�n de fichero ZIP con nombres ../../../../ |
C�mo se explic� en la charla de BlackHat muchas apps descargan recursos en formato ZIP, por lo que un atacante podr�a intentar colocarse en medio de una comunicaci�n en una red y obtener ventaja modificando el ZIP que se descarga la app leg�tima y sustituirlo por un ZIP malicioso. Hay que tener en cuenta siempre los permisos de la carpeta donde queremos ubicar los ficheros inyectados. Si las rutas son directorios de sistema, ser� necesario que la aplicaci�n o proceso que descomprima el fichero ZIP tenga permisos necesarios.
![]() |
Figura 3: Remotely Abusing Android [PDF] |
En el ejemplo mostrado por Ryan Welton, �ste inyecta un fichero en unos de los ZIP que se descarga una aplicaci�n de la Google Play Store (�My Talking Tom�) y que luego se descomprime autom�ticamente al ejecutarse (desde el proceso �PackageInstaller� de Android) el fichero APK donde se encuentra la misma. De esta forma garantizamos que al menos en la carpeta donde se instala la aplicaci�n podemos inyectar nuestro c�digo modificado o incluso sustituir alguna librer�a o m�dulo del programa original como hemos mencionado antes.
Escenarios posibles
Los escenarios pueden ser distintos, por lo que vamos a ver distintos casos que se detallan en la charla de Ryan Welton:
� El caso base: Aplicaci�n vulnerable y que no comprueba nada en la extracci�n del ZIP. Ante este caso la escritura del archivo malicioso en la ubicaci�n deseada es casi segura.
� Comprobaci�n del hash del ZIP esperado: En algunas aplicaciones se descubri� que comprobaban el hash del ZIP a descargar, por lo que, si �ste era manipulado en su descarga, no se proced�a con la extracci�n.
![]() |
Figura 4: Validaci�n de Hash en fichero descargado |
� Manifest: En algunas aplicaciones que comprobaban el hash del ZIP, se enviaba una especie de manifest, un archivo JSON, en el que se pod�a ver el hash esperado. Esta petici�n tambi�n se realizaba por HTTP, por lo que se pod�a llevar a cabo la modificaci�n previa de dicho JSON.Probando la inyecci�n
En primer lugar, hablamos del entorno que se ha montado para llevar a cabo esta prueba.
� M�quina con Kali Linux 2.El procedimiento llevado a cabo es utilizar MITMProxy para ver el tr�fico generado por la app. Nosotros hemos querido ejemplificar este hecho, para que se vea claro.
� MITMProxy versi�n 0.18.2 para la inyecci�n del ZIP manipulando el tr�fico.
� Dispositivo m�vil Android.
� 4 m�quinas virtuales de Android, entre las que est�n la 7.1, 6.0, 5.1.0 Y 4.4.1.
� BusyBox 1.22 en las m�quinas virtuales.
� BusyBox 1.26.2 en el dispositivo Android.
![]() |
Figura 5: Interceptando el tr�fico con MITMProxy |
En el siguiente video se puede ver MITMProxy mostrando las peticiones que se realizan, y en el instante en el que se quiere descargar un ZIP de una ubicaci�n X, se lleva a cabo la modificaci�n o inyecci�n del ZIP malicioso por el leg�timo.
Figura 6: V�deo de manipulaci�n de ZIP con MITMProxy
Viendo esto est� claro que se puede manipular de forma sencilla este tr�fico. Una vez la aplicaci�n descarga el archivo ZIP modificado, depende de los permisos o mecanismos de seguridad que se tengan para proteger la extracci�n y la ubicaci�n d�nde se pondr�n los ficheros que se encuentran en el interior del ZIP.
Para esta PoC hemos utilizado el c�digo publicado en la art�culo de We Live Security cambiando solamente el formato de decodificaci�n de UTF-8 a ISO-8859-1 y el �payload�. Este script de mitmproxy detecta el tr�fico de red, en concreto analiza las cabeceras GET de http/https y cuando detecta un fichero con los caracteres �PK� en los primeros dos bytes (cualquier fichero en formato ZIP) activa inyecci�n.
![]() |
Figura 7: Script para hacer inyecci�n de ZIP en MITMProxy |
La rutina �response� se encarga de detectar los ficheros y tambi�n es aqu� donde definimos las rutas de inyecci�n. La rutina �injectIntoZip� por otro lado, se encarga de insertar el fichero con nuestro payload (en nuestro caso el fichero �zipizape�) dentro del fichero ZIP interceptado. En vez de utilizar directamente mitmproxy hemos optado por la versi�n mitmdump, para poder mostrar los mensajes de salida (�Found ZIP� y �Zip injected�) una vez se ha realizado la inyecci�n como puede observarse en la imagen anterior. El funcionamiento de mitmproxy y mitmdump es id�ntico, s�lo tienen como diferencia la informaci�n que muestran en pantalla.
Unzip en BusyBox
En todos los sistemas Android donde hemos realizado las pruebas se ha utilizado el programa �unzip� integrado en Busybox. �ste es b�sicamente un paquete de aplicaciones que re�ne las utilidades y comandos m�s comunes de UNIX (como por ejemplo el mencionado �unzip�) en un �nico fichero binario. Muchos sistemas GNU/Linux llevan por defecto una versi�n de este paquete debido a su gran utilidad.
Figura 8: PoC de inyecci�n de fichero ZIP en Android con Busybox 1.22
La primera curiosidad que nos encontramos es que en funci�n de la versi�n de Busybox que se est� utilizando, la inyecci�n a trav�s del ZIP funciona o no lo hace. En estos videos se pueden ver las diferentes posibilidades, con la versi�n 1.22 y con la versi�n 1.26.2.
Figura 9: PoC de inyecci�n de fichero ZIP en Android con BusyBox 1.26.2
Interesante charla y concepto de inyecci�n a trav�s de los ficheros ZIP. La posibilidad de tener o aprovechar un Directory Traversal en sistemas como Android es un concepto interesante. Por supuesto, hay sistemas parcheados y otros muchos Android que est�n expuestos a este tipo de ataques o t�cnicas, y, l�gicamente, dependiendo de las medidas de seguridad que pongan las apps para descargar los ZIP ser�n vulnerables o no a estos ataques. Adem�s, estos trucos podr�an empezar a ser utilizados por el malware para Android para ocultarse mejor en el sistema.
Autores: Pablo Gonz�lez P�rez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y �Pentesting con Powershell�, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths y Fran Ramirez (@cyberhadesblog) escritor de libro "Microhistorias: an�cdotas y curiosidades de la historia de la inform�tica" e investigador en ElevenPaths
Sigue Un inform�tico en el lado del mal - Google+ RSS 0xWord

download file now
Subscribe to:
Posts (Atom)