martes, 9 de abril de 2013

Análisis Forense en Android (Parte III)

Cómo comenté en la entrada anterior sobre análisis forense en Android y la obtención de evidencias sin tener rooteado el terminal, en esta nueva entrada voy a explicar cómo podemos obtener algunas evidencias básicas utilizando herramientas externas, eso si, open source.

Para este cometido disponemos de una pequeña aplicación desarrollada por la empresa ViaForensics. La aplicación en cuestión se llama AFLogical, la cual la podéis descargar desde aqui
Esta aplicación, una vez instalada sin ser root, nos permitirá obtener:
  • Información sobre las llamadas
  • Contactos del teléfono
  • Mensajes MMS y adjuntos
  • Mensajes SMS

Ya explicamos anteriormente el uso de adb y sus posibilidades, así que manos a la obra. Conectamos el terminal al equipo, nos abrimos una consola con nuestro adb instalado (voy a obviar los comandos previos ya que doy por echo de que los conoces. AH!!!! se me olvidaba, previamente hemos tenido que descargar la aplicación AFLogical.apk anteriomente mecionada.

$adb install e:\aflogical.apk
1251 KB/s (28794 bytes in 0.022s)
pkg: /data/local/tmp/aflogical.apk
Success

Pues ya tenemos la aplicación instalada, ahora bien, como no quiero tocar el terminal, vamos a ejecutarlo (eso si, mi terminal no tiene bloqueo, si el vuestro lo tuviera deberíais leer este post) mediante abd.
Como toda aplicación que instalamos en android hemos de llamar al ejecutable, todos los ejecutables en android suelen estar en el directorio data/app

$adb shell am start -n  com.viaforensics.android.aflogical_ose/com.viaforensics.android.ExtractAllData
Starting: Intent { cmp=com.viaforensics.android.aflogical_ose/com.viaforensics.android.ExtractAllData }

Con ese comando lo que hemos echo ha sido ejecutar la aplicación con todas las opciones marcadas. Eso si, he de comentar que esta aplicación dispone de unas veriones de pago que nos permite obtener más información.
Si vieramos la pantalla del terminal tendríamos un cartel que nos diría que la extracción de datos se ha completado, tal cual la siguiente:

Ahora sólo nos queda recuperar los datos que la aplicación ha obtenido. Estos datos se almacenan, por regla general, en la sdcard externa y crea el directorio (en mi caso):
forensics/20130409.1234
Si lo analizamos un poco podemos deducir que 20130409 es la fecha actual 2013/04/09 y 1234 es la hora 12:34
Así que si nos conectamos por shell al terminal y ejecutamos la orden ls nos devolverá algo parecido a lo siguiente (dependiendo de la versión de aflogical.apk):

  • CallLog Calls.csv
  • Contacts Phones.csv
  • DSC00295.jpg
  • MMS.csv
  • MMSParts.csv
  • SMS.csv
  • info.xml
Como podéis ver nos lo presenta en csv un formato más que legible para analizar los datos, así que sólo nos queda traernos esos datos a nuestra máquina para su posterior análisis:


$adb pull sdcard/forensics e:\aflogical
pull: building file list...
pull: sdcard/forensics/20130228.1158/Contacts Phones.csv -> e:\aflogical/20130228.1158/Contacts Phones.csv
pull: sdcard/forensics/20130228.1158/MMSParts.csv -> e:\aflogical/20130228.1158/MMSParts.csv
pull: sdcard/forensics/20130228.1158/MMS.csv -> e:\aflogical/20130228.1158/MMS.csv
pull: sdcard/forensics/20130228.1158/SMS.csv -> e:\aflogical/20130228.1158/SMS.csv
pull: sdcard/forensics/20130228.1158/CallLog Calls.csv -> e:\aflogical/20130228.1158/CallLog Calls.csv
pull: sdcard/forensics/20130228.1158/info.xml -> e:\aflogical/20130228.1158/info.xml
pull: sdcard/forensics/20130409.1234/Contacts Phones.csv -> e:\aflogical/20130409.1234/Contacts Phones.csv
pull: sdcard/forensics/20130409.1234/DSC00295.jpg -> e:\aflogical/20130409.1234/DSC00295.jpg
pull: sdcard/forensics/20130409.1234/SMS.csv -> e:\aflogical/20130409.1234/SMS.csv
pull: sdcard/forensics/20130409.1234/CallLog Calls.csv -> e:\aflogical/20130409.1234/CallLog Calls.csv
pull: sdcard/forensics/20130409.1234/MMS.csv -> e:\aflogical/20130409.1234/MMS.csv
pull: sdcard/forensics/20130409.1234/MMSParts.csv -> e:\aflogical/20130409.1234/MMSParts.csv
pull: sdcard/forensics/20130409.1234/info.xml -> e:\aflogical/20130409.1234/info.xml
13 files pulled. 0 files skipped.
705 KB/s (359236 bytes in 0.497s)

IMPORTANTE

No olvidéis desinstalar la aplicación:
$adb uninstall com.viaforensics.android.aflogical_ose
Success


Nos vemos en la siguiente entrada.

Things up!

lunes, 1 de abril de 2013

Android Simular pulsaciones por ADB (Input KeyCodes)

Después de unos días desconectado de todo volvemos a la carga, esta vez os voy a hablar de cómo podemos simular que pulsamos una tecla o realizamos una acción en un terminal Android.

Este método lo podremos aplicar para, por ejemplo, activar el modo avión en un terminal que no tiene bloqueo de seguridad.

De todos es bien sabido que el ADB de Android nos permite, entre otras cosas, instalar y desinstalar aplicaciones, recuperar/subir ficheros, etc. 


Todo esto está muy bien, pero además el ADB nos proporciona una serie de acciones con las que podemos simular que presionamos físicamente la pantalla. Para ello disponemos de la siguiente tabla de acciones:


Ahora bien, supongamos que nos llega a nuestras manos un terminal Android al que hemos de realizar un análisis forense, ya hablábamos en un post anterior que es recomendable tener activado el modo avión para realizar el análisis, así que vamos a ponernos manos a la obra.

Ya sabemos que lo primero es que el terminal tenga el modo depuración activado, de lo contrario poca cosa podremos hacer, bien, lo conectamos a nuestro equipo y ... "Ha habido suerte" tenemos el adb activo, así que vamos a "cacharrear", bueno ya sabéis cómo comprobar que tenemos acceso al terminal, no? de no ser así te recomiendo leer este post.

A lo que vamos, vamos a hacer uso de lo mencionado anteriormente, activar el modo avión sin tocar la pantalla, para ello:
#adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS

Veremos como se abre la ventana de configuración del modo avión :)

Bien, dependiendo de cada versión de android, la activación de la casilla correspondiente puede estar más arriba o más abajo, así que nos podremos mover con los keycodes tabla anterior hasta la opción deseada y luego:

adb shell input keyevent 23 
Ya tendremos el terminal en modo avión, curioso verdad?? :D

Espero que os sea de utilidad.

Things Up!