En el desafiante proceso de desarrollo de software no solo tenemos que preocuparnos por el correcto funcionamiento del mismo, sino también por el nivel de seguridad a implementar en el código fuente. Dado que los smartphones son utilizados para una gran cantidad de actividades en línea, es importante auditar las aplicaciones antes de ponerlas en producción, ya que si se descuida este paso se estaría exponiendo a los usuarios a algún tipo de ataque.
Los elementos a revisar pueden tener que ver con validaciones o cifrado de información sensible como contraseñas del usuario, dependiendo de la aplicación que se esté desarrollando. No es lo mismo la versión móvil de una red social que una app para transacciones bancarias, por ejemplo.
En esta oportunidad, entonces, te mostraremos cómo auditar las acciones que realiza una aplicación. PidCat es un script en Python que nos brinda la posibilidad de observar en tiempo real los registros de los procesos de una manera más colorida y ordenada.
Los elementos necesarios para la auditoría
Para la siguiente demostración utilizaremos un sistema operativo Linux, un emulador de Android y una aplicación con bajo nivel en lo que respecta a seguridad. Previamente debemos tener configurados en el archivo “.bashrc” los directorios (paths) de adb (Android Debug Bridge) y Android tools, que se encuentran integrados en el paquete de instalación de Android Studio. Es importante verificar estas configuraciones, ya que de lo contrario PidCat no funcionará.
Para realizar ingeniería inversa sobre la aplicación haremos uso de Apktool, que nos permitirá extraer información y también el archivo AndroidManifest, como puedes ver en la siguiente captura:
Este archivo nos proporciona la configuración básica de la aplicación. Dentro podremos buscar la etiqueta “android.debuggable”, la cual nos indica si, dependiendo de su configuración, la aplicación es depurable o no. En la siguiente imagen observamos que dicha configuración se encuentra activada; este es un error grave, ya que se podría estar exponiendo información sensible de cualquier índole. Así, gracias a los registros o logs del sistema podremos extraer mucha información.
Una vez configurado el emulador de forma adecuada, lo iniciamos e instalamos la aplicación, abriendo una consola y usando el comando adb install Insecurebankv2.apk. Después de unos minutos observaremos que la aplicación vulnerable logró instalarse correctamente. En las siguientes capturas, observaremos que el aplicativo proporciona un formulario en donde solicita un usuario y una contraseña:
Para capturar los registros del sistema normalmente utilizaríamos el comando adb logcat, pero a veces puede ser más que desafiante tener que lidiar con una enorme cantidad de sucesos al momento de analizar o encontrar errores. Para ello, PidCat nos proporciona una vista más agradable y estructurada de los registros capturados.
Luego de haber descargado PidCat procedemos a ingresar al directorio en el que se encuentre el script, en donde le especificaremos qué aplicación queremos auditar. En caso de no conocer concretamente el nombre del aplicativo, utilizaremos el comando adb shell pm list packages –f <packageName>.
En la siguiente imagen podemos ver cómo esta poderosa herramienta comienza a registrar cada acción que se ejecuta. Por medio de etiquetas y colores, categoriza cada uno de los sucesos, con lo cual nos da la posibilidad de que nuestra labor sea más confortable y podamos ahorrar tiempo al analizar y encontrar bugs.
Contraseñas expuestas
A continuación, observaremos cómo PidCat logró capturar una grave falla, gracias a la cual se puede ver claramente un usuario y su correspondiente contraseña en texto plano. Estaríamos ante un error o vulnerabilidad de la que algún cibercriminal o usuario mal intencionado podría sacar provecho.
Existen muchos otros tipos de herramientas o aplicaciones que nos pueden ayudar a encontrar o incluso solucionar algún error de seguridad en el desarrollo de software. PidCat es una buena y eficiente opción al momento de auditar qué es lo que sucede mientras algún aplicativo se encuentra en estado de ejecución.
Es importante tomar conciencia de estas cuestiones porque, de omitirse, no solo se estaría poniendo en riesgo a los usuarios que utilizan estas aplicaciones sino también al negocio de la o las compañías que formen parte del proyecto.
Existen diferentes cuestiones al momento de preguntarnos por dónde comenzar a preocuparnos, o dónde podríamos tener un mal diseño o implementación en el código fuente del software. Por ejemplo, de qué forma viajan los datos a través de la red, los permisos que cada usuario tiene y la autenticación, de qué forma se validan los datos, la cantidad de intentos que tiene una persona al momento de ingresar al sistema, entre otros. Pero cómo abordar estos temas será tarea para otro post.
Sigue leyendo: 10 consejos para el desarrollo seguro de aplicaciones