05 julio 2015

Enlaces de la SECmana - 283


Leer más...

01 julio 2015

Análisis dinámico de apps Android por hooking

Cuando nos enfrentamos a un proceso de reversing sobre una app Android una de las dificultades que podemos encontrar al hacer un análisis estático es un código complejo de trazar, ya sea por intención propia del desarrollador al escribirlo, por el uso de algún sistema de ofuscación, o incluso porque el propio proceso de decompilación ha generado un código poco legible.



Para lograr encajar las piezas de estos puzzles difíciles de resolver nos podemos apoyar en un análisis dinámico para por ejemplo identificar qué ocurre en las comunicaciones, qué cambios se producen en el sistema de ficheros, qué eventos genera la app, a cuáles responde, etc. Pero seguiremos teniendo un código muy oscuro que en algunos casos requerirá de un gran esfuerzo para determinar por ejemplo si un fragmento de código malicioso se llega a ejecutar.

Hace tiempo comentaba en un artículo cómo podíamos alterar en tiempo de ejecución el código de una app Android haciendo uso de la librería para hooking Cydia Substrate para por ejemplo desactivar el certificate pinning en Android.
Vista la capacidad de la librería, ¿porque no utilizarla para reflejar métodos y parámetros recibidos en una app que queramos analizar?, de este modo podríamos construir un árbol con el flujo de ejecución de la app según interactuamos con ella (o mientras ella misma hace sus procesos en background), identificando qué métodos llamaron a qué otros métodos además de reflejando qué valores fueron pasados como parámetros.

Con la idea clara de representar el flujo de ejecución y parámetros recibidos, decidí dar un paso más y hacerlo todo más sencillo, ¿por qué no hacer una herramienta que automatice al máximo el proceso?, podría conectarse al dispositivo, listar las apps, enumerar todas las clases que participan en una app seleccionada y permitir al analista seleccionar cuáles quiere observar...

android-hooker

Para poder utilizar la herramienta necesitaremos el siguiente entorno:
  • Un dispositivo Android (físico o VM) rooteado, con Cydia Substrate instalado
  • En el equipo desde el que vamos a realizar el análisis, será necesario tener Java (JRE para ejecutar o JDK si queremos modificar el proyecto) y las SDK tools de Android (con las Build Tools y una versión de la API de Android compatible con la instalada en el dispositivo)
La herramienta funciona del siguiente modo:
  • Descargamos la app del repositorio de Github con el siguiente enlace (MD5: bbf563831e3d6be77c773c15f8a978e1 ) o clonamos el repositorio y lo compilamos con "mvn clean assembly:assembly" (nos generará el JAR a ejecutar en el directorio target)
  • Iniciamos la aplicación con "java -jar android-hooker-1.0-jar-with-dependencies.jar". La primera vez que iniciamos la app tendremos que configurar la ruta al directorio donde tengamos el Android SDK, seleccionar la versión de las build tools que queramos utilizar y la versión del SDK que se ajuste al dispositivo que vamos a analizar:

  • Lo siguiente que hacemos es introducir la IP del dispositivo a analizar (o dejarlo vacío si nos vamos a conectar a un dispositivo físico conectado en modo depuración) y seleccionamos la opción Connect, nos listará las apps instaladas en el dispositivo:

  • Seleccionamos la app que queremos analizar y seguimos con el botón Extract classes from APK, descargará la app del dispositivo y podremos seleccionar las clases que queremos hookear. Ya casi hemos terminado, seleccionamos las clases que nos interesen y le damos a Hook classes:


En este punto es donde sucede la magia, dentro de android-hooker hay incluida una app Android que será compilada e instalada en el dispositivo. La app Android está preparada con un plugin Substrate diseñado para recibir un listado de clases sobre los que aplicará reflection para hookear todos sus métodos y crear así una traza dejando un rastro en el logcat que posteriormente android-hooker utilizará para crear el árbol de ejecución.

  • Cuando se compile e instale la app Android veremos la notificación de Substrate en el dispositivo:
  • En este momento ya podemos seleccionar en android-hooker la opción Watch logcat y reiniciar el dispositivo para que se aplique el plugin. En cuanto los métodos hookeados sean llamados comenzaremos a verlos reflejados en pantalla:


Dejo también un vídeo para que lo podáis ver en marcha:

Detalles finales

En cuanto al uso de la tool en sí, como toda herramienta "automatizada", recomiendo hacer un uso controlado. Si decidís hookear clases a diestro y siniestro, especialmente sobre clases muy básicas del framework de Android, posiblemente dejéis colgado el dispositivo al generar una actividad elevada sobre el logcat. Recordar, en la mesura está la maestría ;) .

Y en cuanto al código:
  • Si queréis hacer vuestros propios ajustes sobre la app Android encargada del hooking, el código relevante lo tenéis en la clase LoggerPlugin
  • Si queréis modificar la app Android, tendréis que comprimir todo el directorio de la app en un zip con nombre substrateApp y guardarlo en el directorio de resources (podéis darle un vistazo al zip que hay ahora para haceros una idea). Con esto el siguiente empaquetado que hagáis con "mvn clean assembly:assembly" usará vuestra app modificada.
Artículo cortesía de Miguel Ángel García
Leer más...

29 junio 2015

How-to: Bypass Ley Mordaza (o parte de ella)



Uno de los temas que más está dando que hablar últimamente es que a partir del 1 de Julio, entra en vigor la Ley de Seguridad Ciudada, última del paquete de leyes conocido como Leyes Mordaza, por la influencia que tiene la misma en la privacidad de los internautas, a la hora de actitudes que hasta ahora nos parecen “normales”, que serán consideradas un delito.

Todos somos conscientes también que cierta regulación tiene que existir y que no haya posibilidad que actitudes que pueden calificarse como deleznables, igualmente deberán ser perseguidas y castigadas de forma ejemplar.

Dicho esto, sin embargo, para aquellos que están en el limbo en sus hábitos, que no les parece que lo que se hace está mal cuando se trata de ayudar a los demás (aunque quede en manos de un juez calificarlo como "terrorismo"), así como aquellos que no les da la gana que se les pueda espiar o categorizar, en base a su navegación, así como prohibir qué es lo que puedes y lo que no puedes ver, hay diferentes maneras de evitarlo, que quiero sumarizar en este post:

1.-) Cámbiate de país…

Bueno, tampoco hay que pasarse. No digo que haya que hacerlo literalmente, y que tengas que mudarte físicamente, pero al menos sí virtualmente. ¿Cómo se hace esto? La solución más sencilla es mediante la contratación de un servicio VPN fuera de España… incluso diría que fuera de la Unión Europea.  

Este tipo de servicios modifican el “default gateway” de la máquina, de manera que hacen que TODO, salga enrrutado a través del túnel, haciendo que la navegación vaya cifrada hasta el punto de salida. Desde ahí ya sale a la superficie del mar, pero a través de otro país…. Y el ISP, no se enterará de qué tráfico estás generando.

“Oye pero es que entonces la navegación me irá más lenta… y no me servirá de nada tener 100 Megas de bajada y….” Bueno, entonces, para aquello que no te importe que te vean utiliza tu vida normal, pero cuando quieras privacidad, entonces usa la VPN. 

“Uffff, que coñazo, tener que estar quitando y poniendo la VPN, etc,…” 
Vale,… te doy otra opción

2.-) Cómprate una VPS,… sí, en un ISP de otro país

Al igual que en el caso anterior, puedes pagar el servicio con Bitcoins, haciendo que sea muy complicado de tracear el origen de la compra. En ese VPS, monta un proxy, securiza bien la máquina, y haz un SSH (habiéndolo configurado de la forma más estricta posible) con una redirección de puertos a tu proxy local. Instala una extensión en tu navegador como SwitchySharp en el que podrás generar hasta reglas para que la navegación que quieras salga por un proxy, por otro o de forma directa incluso. 




Ojo, de esta manera, si en tu navegador no has tomado medidas de protección como las que te conté en un post anterior… puede que por técnicas de WebRTC tu navegador esté dejando tu IP real.

3.-) Say goodbye al DNS de tu proveedor… o a los de Google

Uno de los mecanismos de espionaje más centralizados para perfilar tipos de navegación es mediante las peticiones DNS que llegan a los servidores… y que pasan a través de tu ISP. Si en vez de utilizar estos, usas otros, ya no les dejas esos logs en los DNS que te proveen. Si usas los del todopoderoso Google, 8.8.8.8 y 8.8.4.4, le estás regalando tu navegación a Google. 

En este punto, alguno dirá,… claro pero es que aunque uses un DNS de la otra punta del planeta, el protocolo va en texto claro y es posible que, si me esniffan, puedan identificar mi navegación igualmente. Cierto… entonces, la solución se llama OpenDNS. 

En el timeline de @la9deanon, que de búsqueda de la privacidad, controlan un rato largo, leí un post que me resultó sumamente interesante, relacionado con la vigilancia en Internet en que se recomienda la utilización de DNSCrypt, además de con el objetivo de evadir las decisiones impuestas por un juez, para bloquear "el acceso” a páginas web a los ISPs, para hacer que tu tráfico DNS vaya cifrado hasta unos servidores provistos por OpenDNS.

Sinceramente, si estos logs se los entregan o no la NSA, es lo de menos, pero al menos tu ISP no puede ver pasar las solicitudes ni las respuestas. 

El funcionamiento es sencillo: Instalas un programa que hace de proxy, levanta un servicio DNS ficticio en tu máquina que reencamina mediante HTTPS (con cifrado de Curvas Elípticas) hacia los servidores, y devuelve las peticiones de manera muy eficiente en tiempos.

De esta manera, si navegas hacia https://www.opendns.com/welcome/ de forma normal, verás un aviso como este:


En cambio, si navegas usando el proxy de OpenDNS, verás una web más positiva, y aquel tráfico que vaya por HTTPS, así como las peticiones DNS necesarias irán cifradas. 



OJO,... ¿quiere decir esto que esta navegación es perfecta desde el punto de vista de la privacidad a ojos de tu ISP? NO... Todo el tráfico que vaya por HTTP seguirá yendo en claro, y tu ISP seguirá sabiendo, aunque sea por HTTPS, las direcciones IP con las que te estás comunicando, aunque no pueda interceptar el tráfico sin que te enteres,... al menos, no lo puede hacer, de forma conocida y pública. 


Leer más...

28 junio 2015

Enlaces de la SECMana - 282



Leer más...

25 junio 2015

Abierto Call For Papers para RootedSatellite: Valencia 2015

RootedSatellite: Valencia es un Congreso de seguridad que se realizará en Valencia (España) el día 12 de Septiembre de 2015.


El evento matriz, RootedCON es el congreso especializado más importante que se realiza en el país, y uno de los más grandes de Europa, con perfiles de asistentes que varían desde estudiantes, a Fuerzas y Cuerpos de Seguridad del Estado, pasando por profesionales dentro del mercado de la Tecnología y la Seguridad en TI o, simplemente, entusiastas de la tecnología.

Tras la gran acogida que tuvo la primera edición de RootedSatellite en Valencia, RootedCON ha vuelto a apostar por esta ciudad para fomentar la seguridad de las TI en Valencia, descubrir el talento local y poner en contacto a estudiantes y profesionales interesados en la materia para que colaboren y de esa manera fortalecer los lazos de la comunidad de seguridad. 

En la siguiente dirección encontraréis el formulario de solicitud de ponencias para RootedSatellite: Valencia 2015:



Muy pronto actualizaremos rootedcon.com/vlc con toda la información necesaria acerca de esta nueva edición, incluyendo la localización, patrocinadores, primeros ponentes confirmados ¡y mucho más! 

Para hacer más amena la espera, tenéis disponible en esta lista de reproducción de nuestra cuenta de Youtube los videos de las charlas de la pasada edición de RootedSatellite: Valencia.

 

[->] Álbum de fotos RootedSatellite: Valencia 2014
[->] Lista de reproducción de videos RootedSatellite: Valencia 2014
[->] Call For Papers RootedSatellite: Valencia 2014

Artículo cortesía de Asociación Rooted (@rootedcon)
Leer más...

24 junio 2015

c00kiesD00r, ocultando una backdoor en una cookie

Muchas veces, a la hora de investigar una intrusión, se suele tener una check-list de sitios y técnicas que han podido ser empleadas para ocultar una backdoor por parte de un atacante para mantener el acceso.

De lo buena/mala que sea esa check-list depende el número de horas que vas a pasar intentando localizar el 'regalo' del visitante.

Aquí ya hemos hablado alguna vez sobre cómo 'backdoorizar' un servidor apache y decíamos que algo muy común era el uso de peticiones POST en vez de GET para intentar no salir en la foto.

Otra forma de comunicarse con un backdoor que se encuentre en un servidor web es enviando los comandos en una cookie, esta técnica se puede ver implementada en la herramienta c00kiesD00r que cuenta con una parte para el servidor y un cliente que funciona en Windows y Linux para comunicarse con él.

La parte del servidor se puede implementar en muy pocas líneas de PHP


Tal y como está implementada, la herramienta es un muy buen PoC aunque relativamente fácil de detectar. Si sobre ella construimos algo que lleve ofuscación, y la parte del servidor la añadimos a algún fichero .php legítimo, podemos encontrarnos en un escenario bastante más complicado de abordar desde el punto de vista de un analista forense
Leer más...

22 junio 2015

Certificar correos entrantes y salientes con eGarante

Mucha gente, (especialmente colectivos profesionales), ha enviado multitud de correos a eGarante preguntando por la posibilidad de, no solo certificar correos salientes, sino también poder certificar la recepción de un correo.

Viene muy bien disponer de la capacidad de poder demostrar, con plena validez jurídica, que te ha llegado un correo. Y no solo a nivel profesional. Como particular, poder demostrar que la compañía X te ha enviado un correo con unos datos concretos, tiene un valor bastante importante, sobre todo si recibes tus facturas en correo o compras por internet.

Por eso, nos hemos puesto a pensar cómo poder ofrecer un servicio que cubriese esa demanda y el resultado ha sido eG-inbox 

eG-inbox es, básicamente, una cuenta de correo que tiene la particularidad de certificar todos los correos que llegan y además, mediante el uso de un servidor SMTP especial, auto-certificar todos los correos que se envíen desde esa cuenta. Sin necesidad de poner en copia a eG-email, todo de forma automática.

De esa forma, puedes tener tu correo principal, de uso cotidiano, y además una cuenta de correo que puedes usar para comprar online, relacionarte con la administración o como cuenta para gestionar la facturación de tu empresa.

El servicio se puede probar enviando un correo a test@eginbox.egarante.com 

Y para los amantes de Gmail, decir que el servicio es 100% compatible. Puedes configurar la segunda cuenta de correo desde Gmail y usarla desde la interface web

Si estás interesado, quieres probarlo sin compromiso o más información, ponte en contacto con nosotros
Leer más...