martes, 4 de octubre de 2011

Securizando Android para un uso corporativo (parte 3)

Contribución de Angel Alonso-Párrizas que continúa el post anterior.

Continuando con el post anterior en el que explicamos como deshabilitar la instalación de software, es necesario deshabilitar el software preinstalado para Android así como los ejecutables del sistema operativo que son innecesarios. 

Para deshabilitar los binarios es tan sencillo como borrarlos o bien revocar los permisos.  Esto ser hará con un script de manera automática que pondremos mas abajo.
Este mismo proceso se seguirá de manera análoga para deshabilitar el software preinstalado que no necesitamos.

Controles adiciones de seguridad

Para implementar una política de contraseñas seguras de manera centralizada, Google ha desarrollado una herramienta disponibles para empresas accesible desde el Google Apps. La herramienta va vinculada a una cuenta de Google Business que cuestan 40$ anuales.
Con esta herramienta se puede definir:
  • Forzar a usar contraseñas para acceder al dispositivo
  • Forzar a crear una contraseña segura
  • Forzar a cambiar la contraseña
  • Forzar a no rehusar las N contraseñas últimas
  • Bloquear el dispositivo después de N minutos
  • Umbral en el número de contraseñas erróneas hasta que el dispositivo se borra
  • Permitir el uso de cámara o no

Además de la política de contraseñas es posible también:
  • Localizar el dispositivo por GPS con Google Maps
  • Borrar el dispositivo remotamente
  • Bloquear el dispositivo remotamente

Otra herramienta útil para añadir seguridad al dispositivo es Autowipe. Las funcionalidades que usamos en este proyecto, que no son las únicas de ésta aplicación,  son:
  • Borrado del dispositivo mediante SMS con una contraseña
  • Borrado del dispositivo si la SIM es cambiada


La última herramienta que usamos es el conocido antivirus de AVG. Este antivirus tiene varias funcionalidades, pero las que no son de utilidad son:
  • Escaneo de aplicaciones en busca de malware
  • Navegación segura



Securizando el dispositivo 

El proceso de boot de Android es similar al de linux. Existen una serie de scripts de inicio que se ejecutan cuando el sistema se inicia. Sin embargo, el principal script de arranque init.rc  se encuentra en la ramdisk por lo que para modificarlo habría que modificar la imagen de arranque. Para evitar esto, la versión de la ROM, hace una llamada a un script llamado userinit.sh almacenado en /data/local. Así, tan solo necesitamos crear nuestro propio script, subirlo a ese directorio del Android y darle permisos de ejecución.

#!/system/bin/sh
# Customize some parameters and lockout the SO

mount -o rw,remount /system
# run dropbear / SSH
/system/xbin/dropbear -g -s
# Disable Bluetooth
chmod 000 /dev/ttyMSM0
chmod 000 /dev/ttyHS0
# stop market if running
killall com.android.vending
# hardening TCP/IP stack for IPV4
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 #ICMP broadcast
sysctl -w net.ipv4.conf.all.accept_redirects=0 # ICMP redirects ipv4
sysctl -w net.ipv6.conf.all.accept_redirects=0 #ICMP redirects ipv6
sysctl -w net.ipv4.conf.all.send_redirects=0 # ICMP redirects
sysctl -w net.ipv4.conf.all.accept_source_route=0 #source routing disable
sysctl -w net.ipv4.conf.all.forwarding=0 #Forwarding traffic
sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.all.log_martians=1 #filter martians
sysctl -w net.ipv4.tcp_max_syn_backlog=1280 # TCP syn half-opened
sysctl -w net.ipv4.ip_forward=0
# Removing/ disabling unnecessary binaries. Some of them have access to Internet
rm -f /system/xbin/irsii
rm -f /system/xbin/nano
rm -f /system/xbin/nc
rm -f /system/xbin/netserver
rm -f /system/xbin/netperf
rm -f /system/xbin/opcontrol
chmod 740 /system/xbin/scp
chmod 740 /system/xbin/rsync
chmod 740 /system/xbin/sdptest
chmod 740 /system/xbin/ssh
chmod 740 /system/xbin/strace
chmod 000 /system/xbin/tcpdump
chmod 740 /system/xbin/vim
chmod 000 /system/bin/bluetoothd
chmod 750 /system/bin/iptables
chmod 750 /system/bin/ping
chmod -s /system/bin/ping
# Run Iptables
/data/local/iptables.sh
## This is the last step of the hardening
## This will be uncommented only when the system is configured
## This will lockout the system and will only give access through SSH
# Removing unnecessary software
# This must be uncomment at last step
# do a backup before
/data/local/removesoftware.sh
# disable the Packet Management binary
chmod -x /system/bin/pm
# Disable the adbd daemon
mount -o rw,remount -t rootfs rootfs /
chmod -x /sbin/adbd
mount -o ro,remount -t rootfs rootfs /
# disable the SD card
umount /mnt/sdcard/.android_secure
umount -l /mnt/sdcard
mount -o ro,remount /system

Este script llama a dos scritpts: iptables.sh y removesoftware.sh. (iptables.sh ya se comentó en el primer post)

#!/system/bin/sh
# Remove and disable unnecessary software
cd /system/app/
rm /system/app/AndroidTerm.apk
rm /system/app/Bluetooth.apk
rm /system/app/Development.apk
rm /system/app/FM.apk
rm /system/app/CarHomeGoogle.apk
rm /system/app/GoogleFeedback.apk
rm /system/app/GoogleQuickSearchBox.apk
rm /system/app/FileManager.apk
rm /system/app/HTMLViewer.apk
rm /system/app/MarketUpdater.apk
rm /system/app/Music.apk
rm /system/app/RomManager.apk
rm /system/app/SoundRecorder.apk
rm /system/app/Talk.apk
rm /system/app/Torch.apk
rm /system/app/Vending.apk
chmod 000 /data/data/com.android.bluetooth
chmod 000 /data/data/jackpal.androidterm2
chmod 000  /data/data/com.android.development
chmod 000 /data/data/com.android.fm
chmod 000 /data/data/com.android.htmlviewer
chmod 000  /data/data/com.android.music
chmod 000 /data/data/com.android.musicvis
chmod 000  /data/data/org.openintents.cmfilemanager
chmod 000 /data/data/com.android.soundrecorder
chmod 000 /data/data/com.google.android.carhome
chmod 000  /data/data/com.google.android.apps.books
chmod 000 /data/data/com.google.android.googlequicksearchbox
chmod 000 /data/data/com.android.vending
chmod 000 /data/data/com.android.vending.updater
chmod 000  /data/data/com.koushikdutta.rommanager

Una vez se ejecuten estos scripts el sistema esta securizado y solo sera accesible por SSH a través del túnel.
Lo que hay que hacer para configurar el dispositivo desde el principio es lo siguiente:

1.     Instalar Cyanogenmod
2.     Instalar Google Apps
3.     Instalar la aplicación Google App Device Policy
4.     Instalar el Antivirus
5.     Instalar Autowipe
6.      Configurar la cuenta de Google enterprise. Se introduce una contraseña segura en el dispositivo.
7.      Configurar el antivirus: frecuencia de autoscan, de actualización y  la navegación segura. 
9.     Configurar el  VPN: importar el certificado y configurar los parámetros del VPN
10.  Configurar SSH
11.  Copiar iptables.sh, removesoftware.sh y userinit.sh script a /data/local. Cambiar los permisos de estos ficheros a 700.
12.  Reiniciar el sistema.

Con esto finalizamos esta serie de artículos sobre la securización de android para entornos corporativos. No dudéis en dejar comentarios sobre cualquier duda que pueda haberos surgido.

3 comentarios :

Amcx dijo...

Excelente!!!

carlos dijo...

Brillante. Gracias.

Anónimo dijo...

Muchas gracias por compartirlo. Excelente.