Mostrando entradas con la etiqueta laboratorio. Mostrar todas las entradas
Mostrando entradas con la etiqueta laboratorio. Mostrar todas las entradas

06 octubre 2015

¡Hola criaturas de la noche varias!


Después de muchos años en IOActive, recorriendo medio mundo rompiendo cosas, tenemos la alegría de poder anunciar que IOActive va a abrir un laboratorio en Madrid, principalmente centrado en seguridad hardware.
Foto del interior del Hardware Research Lab de IOActive en Madrid
A medida que nos vayamos estableciendo esperamos poder contribuir con la comunidad. De momento este jueves 8 de octubre queremos invitaros a visitar nuestro laboratorio mientras os tomáis algo. Para los que quieran conocer la cara más lúdica de la seguridad ;) ese mismo día por la noche, y hasta que el cuerpo aguante, organizamos una fiesta con comida, bebida, banderas piratas y ¡música en directo!

Durante el jueves tendremos las siguientes actividades:
  • Hardware Lab Open House – Visita y presentación del laboratorio y su equipamiento a cargo de Ruben Santamarta y Gabriel Gonzalez.
  • Hardware Lab Launch Party – Fiesta al más puro estilo IOActive, con comida, bebidas y música en directo.

El laboratorio se encuentra en la siguiente dirección:

Calle del Conde de Serrallo, 1
Portal 3, 1° Puerta 7
Madrid


Además de todo esto, en IOActive actualmente tenemos vacantes disponibles por lo que, si lo tuyo es romper todo aquello que se te ponga por delante: web, binarios, redes, embebidos, etc.. ¡pásate y déjanos tu CV!

Las plazas para esta fiesta de apertura son limitadas y gratuitas, por lo que realizad el registro lo antes posible para que no os quedéis sin vuestra entrada, utilizando el siguiente enlace:


Contribución por: 
Ruben Santamarta (@reversemode)
Principal Security Consultant at IOActive
Leer más...

24 marzo 2014

Creando un entorno de análisis de aplicaciones Android (Parte 3)

En el artículo anterior vimos las posibilidades a nuestro alcance cuando trabajamos con un entorno virtualizado para realizar el análisis de una aplicación Android.

En este artículo vamos a acercarnos a algunas técnicas y herramientas que nos servirán para obtener unos buenos resultados en el análisis del ejemplo de App SMS, whatsapp, LLAMADA - SPY .

Analizando la información recuperada


Al final de la entrega anterior recuperamos cierta información que nos puede ser útil durante el resto del análisis, por ejemplo si revisamos el listado de procesos que realizamos al reiniciar el sistema tras instalar la aplicación nos encontraremos con que una nueva aplicación se ha iniciado automáticamente:


Por otro lado y a través de los ficheros modificados podemos ver los APKs instalados y como se ha descargado en la SD un paquete light.apk:


Si generamos un resumen con MD5 a los paquetes de spy2mobile y light veremos que se tratan del mismo fichero:


Y como vimos en las trazas de las comunicaciones del artículo anterior podemos deducir el proceso que ha seguido el troyano: a través de la aplicación com.supportcaptcha se realizó la descarga en la SD del paquete light.apk, que posteriormente se instaló bajo el nombre com.spy2mobile.light y el cual se inicia con el arranque del dispositivo.

Pero continuemos obteniendo información con otras herramientas.

apktoolkit


Nos sirve para extraer los recursos de la aplicación. Para usarla es necesario copiar el APK que queremos analizar en el directorio /usr/share/apktoolkit/ , en nuestro caso vamos a centrarnos en el troyano que se descargó vía Internet una vez instalada la aplicación:



El resultado de esta aplicación nos permitirá inspeccionar el código smali (código ensamblador para el formato dex) sobre el que podremos localizar comportamientos anómalos a través de comandos en el sistema:



Además utilizando el explorador del sistema de ficheros podremos revisar los recursos recuperados del APK donde encontraremos las imágenes, definición de pantallas, textos, ficheros incluidos en la aplicación (tenéis más información acerca de las estructuras de directorios utilizadas por Android aquí)...


Dentro de los recursos que encontraremos cabe destacar el fichero AndroidManifest.xml. donde se definen versiones, permisos, servicios, actividades... información esencial para que Android tenga conocimiento de cuándo y cómo ejecutar los componentes de la aplicación.
En el caso de la aplicación que estamos analizando podemos ver como nos hacen un all-in de permisos:


En ese mismo fichero también se reflejarán los broadcast receivers:


Como podemos ver la aplicación se declara a la escucha de llamadas salientes y del arranque del dispositivo. Cualquiera de estas dos acciones desencadenará que la clase com.source.MainReceiver gestione el evento, dato que en términos del arranque ya habíamos identificar al listar los procesos al inicio del sistema.

Herramientas d2j


Esta herramienta se utiliza de forma habitual para convertir un fichero en formato dex (los APK) en un fichero en formato jar:


Una vez realizado el paso anterior es posible decompilar el contenido del jar con las herramientas jd-gui o jad.
Es interesante comentar también que este conjunto de herramientas dispone de otras utilidades que nos permitirán:

Modificar el contenido de un APK a través de código Jasmin.
No profundizo en esta opción ya que se escapa del objetivo del artículo, aunque podéis imaginar el uso de esta herramienta para modificar aplicaciones y publicarlas en mercados alternativos.

Des-ofuscar código bajo un criterio establecido de forma manual.
Vamos a ver esta opción más en detalle. Primero abrimos el fichero jar generado con jd-gui:


Si exploramos las clases encontraremos que el código que nos interesa se encuentra ofuscado:


El siguiente paso será extraer los nombres de paquetes, clases, métodos y atributos para editarlos:


Modificamos su contenido para hacerlo más legible (aunque con sólo extraerlos se generarán nombres aleatorios que serán algo más sencillos de identificar que los ofuscados):



A continuación insertaremos estos nombres dentro del fichero jar y volveremos a abrirlo desde jd-gui:


El resultado que veremos será el siguiente:


sqlitebrowser


Con esta herramienta podremos ver de forma gráfica las bases de datos de tipo SQLite, de modo que lo primero que haremos será instalar el paquete en la máquina de análisis con:

apt-get install sqlitebrowser

Una vez instalada la herramienta la encontraremos en Applications > Programming > SQLite Database Browser.
El siguiente paso es disponer de la base de datos que queremos analizar, de modo que continuando con el ejemplo que teníamos entre manos vamos a intentar localizar su base de datos.

En Android lo habitual es que para gestionar las bases de datos se cree una clase que herede de la clase SQLiteOpenHelper, de modo que vamos a intentar localizar esta cadena en el código:


Tenemos una clase ganadora: com.source.b.f . Esta misma búsqueda la podemos realizar desde jd-gui para ver el código de forma más clara:


Si curioseamos esa clase nos encontraremos el siguiente método:


De modo que todo apunta a que tendremos una base de datos con nombre system.bd, la descargamos desde su directorio por defecto (/data/data/com.spy2mobile.light/databases/) y la abrimos con sqlitebrowser:


Y aunque ya sabíamos desde el principio que estábamos analizando una aplicación para espiar el uso del dispositivo, confirmamos a través de la base de datos las múltiples tablas preparadas para capturar la información del usuario.

Conclusiones

Como veis tenemos a nuestro alcance múltiples herramientas que nos permitirán transformar la aplicación para que la podamos analizar desde distintas perspectivas, haciendo que los resultados del proceso de análisis se reduzcan a una cuestión de habilidad, experiencia y el tiempo que le queramos/podamos dedicar.

Finalmente os dejo una captura de la pinta que tiene el panel de administración Web del software espía que al final he podido configurar desde un dispositivo físico:




Artículo cortesía de Miguel Ángel García
Twitter: @nodoraiz
Leer más...

18 marzo 2014

Creando un entorno de análisis de aplicaciones Android (Parte 2)

En el artículo anterior vimos la estructura que tendría nuestro entorno de análisis de aplicaciones Android.

A través de las siguientes entregas vamos a ver cómo sacarle el máximo provecho virtualizando la ejecución  del dispositivo en una máquina virtual, además de explorar algunas herramientas y técnicas que nos vendrán muy bien para la realización del análisis.

Virtualizando el laboratorario

Si no disponéis de un dispositivo físico donde probar esta será vuestra mejor opción, pero incluso teniéndolo merece la pena virtualizar el laboratorio ya que os permitirá una mayor agilidad en la restauración del sistema además de facilitaros obtener el root.

Recuerdo los pasos para crear la máquina virtual y os dejo algunas indicaciones adicionales:

  • Instalación y configuración de VM Android 4.3 x86 en VirtualBox:

  • Rooteo completo de la VM: enlace.
  • Instalar una herramienta para la gestión de la ejecución con privilegios de root, por ejemplo SuperSU
  • Instalar y configurar ProxyDroid y el certificado de Burp como se describía en Preparando el dispositivo Android
  • Instalar un servidor FTP en la máquina Kali de análisis, por ejemplo vsftpd
  • Instalar un cliente FTP en el dispositivo virtual, por ejemplo AndFTP. Configurar un perfil con el servidor de la máquina de análisis
  • Crearemos una carpeta para el contenido de nuestros análisis en la SD, para ello accedemos a la terminal presionando ALT+F1 y hacemos un mkdir /sdcard/analisis
  • Apagar la VM del dispositivo Android y guardar una instantánea que poder restaurar finalizado el análisis.
Finalmente utilizaremos Kali como máquina de análisis de comunicaciones y de la aplicación en sí.

Trabajando con la VM

Os dejo algunos trucos interesantes para manejarnos con el entorno virtualizado:


  • Para controlar correctamente el ratón dentro de la VM seleccionar la opción Máquina > Inhabilitar integración del ratón
  • Podéis acceder a la terminal con ALT+F1. En este modo echaréis en falta más de un símbolo, aquí tenéis el juego que utiliza.
  • Podéis volver a la interfaz gráfica con ALT+F7
  • Si analizáis una aplicación que gire la pantalla y cuando volváis a acceder a la HOME no se recupera la vista en horizontal, presionar 2 veces seguidas F9



    • Si se queda la pantalla en negro (se ha bloqueado el dispositivo), seleccionar la opción Máquina > Apagado ACPI y se desbloqueará:

    Recogiendo información


    El primer paso es arrancar en la máquina Kali las aplicaciones Wireshark y Burp para inspeccionar las comunicaciones. También activamos ProxyDroid en el dispositivo virtual.

    Lo siguiente que vamos a hacer es crear en el dispositivo un fichero que nos sirva de hito histórico para detectar más adelante variaciones con el comando find, de modo que presionamos ALT+F1 y escribimos touch /sdcard/analisis/instante .

    Para continuar con el artículo he escogido la aplicación SMS, whatsapp, LLAMADA - SPY a la cual sólo le falta auto-declararse troyano:


    Instalamos e iniciamos la aplicación. Si seguimos el proceso que indica nos pedirá que habilitemos la instalación desde orígenes desconocidos. Vemos que la cosa se anima en cuanto nos refleja todos los permisos que pide el segundo APK que quiere descargar:


    Como estamos dentro de la VM podemos aceptar sin miedo, y si continuamos con el proceso que propone llegaremos a un punto en el que nos pide la dirección de correo sobre la que queremos vincular la actividad espía..., proceso que indica siempre que no hay conexión a internet, aunque sí que la haya. Sospechoso, ¿verdad?.

    Finalizado el proceso anterior reiniciamos el dispositivo (para que se agarre bien el troyano) y seguimos nuestra tarea de recogida de información lanzando algunos comandos desde la terminal, para ello presionamos ALT+F1 y obtenemos algunos datos:



    En resumen:
    • Obtenemos el APK y todos los datos de la aplicación para analizarlos
    • Obtenemos todos los ficheros modificados a partir de la fecha de creación del fichero creado antes de iniciar el análisis
    • Obtenemos los procesos y conexiones activas del dispositivo

    De vuelta al entorno gráfico (ALT+F7) podemos utilizar AndFTP para enviar toda la información recogida en el directorio /sdcard/analisis a la máquina Kali donde podremos analizarla con más detalle.


    Además desde Burp podremos ver que la aplicación ha generado dos peticiones al dominio spytomobile.com:


    Y desde Wireshark con File > Export objects > HTTP podremos exportar el APK descargado para su posterior análisis:



    Conclusiones

    Hemos visto como la versión VM del escenario satisfará en gran medida todas las necesidades que se nos ocurra pedirle a un entorno de análisis, además de por incluir una instalación completamente funcional de Play Store, lo bien que responde y todas las herramientas que incluye la ROM que nos facilitarán el desarrollo del análisis.

    En su contra decir que como todo entorno virtual, es susceptible de ser detectado por la aplicación analizada, además de que esta ROM está preparada por defecto para ser un tablet


    No os perdáis el siguiente artículo, en él continuaremos explorando sobre este ejemplo las posibilidades de algunas herramientas y técnicas que nos darán más información sobre la aplicación analizada.

    Artículo cortesía de Miguel Ángel García
    Twitter: @nodoraiz
    Leer más...

    10 marzo 2014

    Creando un entorno de análisis de aplicaciones Android

    A estas alturas todos sabemos que la plataforma Android es un auténtico caldo de cultivo para el malware por diversos motivos:
    • Escasos controles en el momento de la publicación de aplicaciones en Google Play
    • Ventanas de tiempo entre publicación de malware y su eliminación que permiten obtener un beneficio de estas actividades ilícitas
    • Facilidad de distribución de aplicaciones a través de métodos alternativos a los canales oficiales
    • Necesidad de una mayor granularidad en los permisos
    • Un muy largo etcétera...
    Pero de esta situación también podemos sacar algo positivo, donde reina el malware nosotros tenemos campo donde investigar (como nos han enseñado en el blog www.elladodelmal.com a través de los artículos linterna molona y malware en Android), así que vamos a dedicar unas líneas a construir un entorno de análisis para jugar con el malware además de con todo tipo de aplicaciones Android.

    Descripción del entorno

    Con la idea de tener controlado el comportamiento de la aplicación a analizar vamos a crear un entorno repetible (a través de backups), en un dispositivo sobre el que tengamos pleno control (debe estar rooteado) y enrutando las comunicaciones que genere por una máquina que nos permita su análisis (utilizando iptables, wireshark y burp).

    De forma gráfica el escenario que vamos a recrear es el siguiente:


    Y para crear este entorno partiremos de los siguiente pre-requisitos:
    1. Tener un dispositivo rooteado donde hacer las pruebas (tenéis más documentación en los foros xda-developers en inglés y htcmania en español), y aunque estoy seguro de que esto sobra decirlo, si lo vais a utilizar para el análisis de malware no utilicéis vuestros dispositivo de uso diario.
    2. Instalación del Android SDK (tenéis más documentación en la Web oficial de Android ).
    3. Red Wifi a la que conectar el dispositivo.
    4. Disponer de una máquina con iptables, Wireshark y Burp instalados. En el ejemplo usaré una distribución Kali.
    Empecemos con la configuración del entorno.

    Preparando la distribución Kali

    Como vamos a enrutar el tráfico del dispositivo a la máquina Kali, lo primero será configurarla:
    • Iniciamos y configuramos Burp
      • En Proxy > Options, editamos el Proxy que está escuchando para que atienda a todas las interfaces:

      • Actúe de forma invisible:

      • Genere un certificado de CA por host:

    • Exportamos el certificado de la CA de Burp codificado en DER, para ello podemos configurar el cliente Web de Kali para que pase por el proxy y acceder a una página Web por HTTPS:

    • Configuramos las reglas de pre-routing con iptables que nos permitirán analizar el tráfico HTTP/HTTPS en Burp:
      • echo 1 > /proc/sys/net/ipv4/ip_forward
      • iptables -F
      • iptables -t nat -F
      • iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
      • iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080
    • Iniciamos Wireshark y le ponemos a la escucha en la interfaz de red por la que entre el tráfico del dispositivo

    En este momento ya tenemos preparado el entorno de la máquina Kali, continuemos con el dispositivo.

    Preparando el dispositivo Android

    Antes de realizar el backup, vamos a hacer algunos ajustes previos en el dispositivo Android:
    • Instalamos la aplicación ProxyDroid para enrutar correctamente el tráfico HTTPS a nuestra máquina de análisis de comunicaciones y la configuramos del siguiente modo:



    • Importamos el certificado de la CA que habíamos exportado desde Burp, para ello lo copiamos a la SD (o memoria interna del dispositivo) y accedemos a Ajustes > Seguridad > Almacenamiento de credenciales > Instalar desde la tarjeta SD (o alamcenamiento). Tener en cuenta que estas opciones de menú pueden variar según la versión instalada de Android.
    • Configuramos la Wifi en el dispositivo y establecemos como puerta de enlace la dirección IP de la máquina Kali
    Con esto ya tenemos el dispositivo listo para su castigo, así que vamos a realizar un backup que poder restaurar finalizados nuestros análisis. Tenemos las siguientes opciones:
    • Nandroid, os dejo un enlace a un tutorial.
    • Herramienta adb del Android SDK:
      • Para hacer backup:   adb backup -apk -shared -all -system -f C:\estado0.ab
      • Para hacer restore:    adb restore C:\estado0.ab
    Ya tenemos preparada la máquina Kali para capturar el tráfico y el entorno sobre el que vamos a realizar las pruebas, de modo que sólo queda activar la aplicación ProxyDroid en el dispositivo:


    Y empezaremos a capturar el tráfico del dispositivo en el Wireshark y Burp de la máquina Kali:

    Algunas herramientas útiles

    Encontraréis de gran utilidad para la realización del análisis las siguientes herramientas:
    Tenéis un ejemplo de uso de las 3 primeras herramientas en el artículo de reversing de Pixel Dungeon.

    Otros recursos de información

    Por último, en los siguientes enlaces podéis encontrar información de mucha utilidad para vuestros análisis:

    Artículo cortesía de Miguel Ángel García
    Twitter: @nodoraiz
    Leer más...

    13 junio 2013

    Laboratorios para prácticar Hacking

    Aquí mi fusil, aquí mi pistola; uno da tiros, la otra consuela

    Es increíble la velocidad que llevamos, antes no había campos de batalla para probar y desarrollar  armas y ahora, todos los días aparece uno nuevo; que si D-ICE S1.140, que si VulnVPN, que si ejercicios de PentesterLab... ¡¡estamos saturados!! y eso hablando solo de sistemas virtuales.

    En aplicaciones web es mucho peor. OWASP parece que todos los meses tiene que patrocinar la creación de una nueva web vulnerable con los mismos fallos de siempre. 

    Hay recopilatorios bastante amplios con decenas de ellas, como este fabuloso MindMap. El problema viene en que en su gran mayoría de los laboratorios, no están documentados los fallos o lo están parcialmente. Al final uno acaba haciéndose los suyos propios.
    Un sitio interesante del que hablamos en enero es VulnHub, una página web/comunidad que se dedica exclusivamente a recopilar este tipo de sistemas, así como los solucionaros que circulan por Internet.

    También disponen de una curiosa herramienta "VulnInjector", que permite crear un laboratorio en Windows, mucho menos habitual por los problemas de distribución que tiene este sistema operativo y por lo menos, más original.

    Estos sitios al final se convierten en incubadoras para jugadores de CTFs, donde con retos más sencillos, se introduce a los aspirantes en el apasionante mundo de romperse los cuernos en busca de una solución.

    Todo esto de los laboratorios siempre me acaba recordando al proyecto NETinVM , que ya en el 2008 había creado Carlos Perez y David Perez, y  y que para mi sorpresa mientras escribía este artículo y buscaba el enlace, está actualizado de este año.





    Leer más...