Confía solo en tus binarios

Uno de los principales problemas que nos encontramos ante un equipo infectado en una live response es la confianza con el mismo, a lo que nos preguntamos ¿Habrán sido modificados los binarios del sistema? ¿Qué binarios han podido ser eliminados?

Esas preguntas implican tener que desconfiar totalmente de los binarios del sistema y utilizar binarios de confianza. ¿Pero cómo obtenemos unos binarios de confianza en un sistema infectado? La mejor forma es llevándolos encima o en un pen drive. Con unos pocos pasos se puede instalar un S.O. en un disco extraíble y montar la unidad como solo lectura en el equipo afectado, de modo que dispondremos de las herramientas necesarias y podremos trabajar con plena confianza con el sistema.

Los requisitos para fabricar un sistema con binarios de confianza serán: un pendrive o disco extraíble, una distribución de confianza (Debian, por ejemplo) y VirtualBox. A continuación se van a exponer unos pasos que es recomendable ejecutar como administrador del sistema (root), pues se precisa de acceso completo al dispositivo extraíble (/dev/sdX).

El primer paso es crear un disco duro en formato vmdk, formato de VirtualBox, para que VirtualBox pueda instalar el sistema operativo en él. Además, habrá que indicar que este nuevo disco duro esté asociado al disco extraíble que usaremos en la asistencia en vivo. El comando a ejecutar es el siguiente:

VBoxManage internalcommands createrawvmdk -filename /Users/<usuario>/VirtualBox\ VMs/LiveResponse/usb.vmdk -rawdisk /dev/disk2

bin0

Nótese que en el caso de Mac OS X el disco debe de estar desmontado. Se puede utilizar el siguiente comando para desmontar el disco extraíble: diskutil unmountDisk /dev/diskX. Si no, dará un error al intentar crear la asignación: vmdkraw.

Para los usuarios de Mac OS X el comando de creación del fichero usb.vmdk provocará el montaje del disco extraíble en el sistema de ficheros. Este hecho producirá un error en el siguiente paso, así que se debe de desmontar la unidad otra vez como se indica anteriormente (diskutil unmountDisk /dev/diskX).

El segundo paso es instalar la distribución elegida mediante VirtualBox, yo he escogido una Debian 8.2.0. La diferencia de una instalación normal con ésta es la elección del disco donde se instalará el sistema operativo. En la siguiente imagen se puede ver, en la parte inferior, que se elige el disco duro usb.vmdk creado en el paso anterior. Después de esto la instalación sigue los pasos normales.

Personalmente he optado por instalar la Debian sin entorno gráfico, básicamente porque ocupa menos espacio en el dispositivo extraíble y porque las herramientas que se utilizan en un entorno de respuesta rápida no necesitan de interfaz gráfica en su gran mayoría.

bin1

Una vez terminada la instalación del sistema operativo en el disco extraíble, ya estamos listos para utilizar nuestros binarios de confianza. Lo mejor es montar el dispositivo extraíble en modo de solo lectura o protegido contra escritura, pues no queremos el equipo potencialmente infectado realice acciones malignas sobre nuestros binarios de confianza nada más conectar el pendrive. Se pueden modificar los parámetros del dispositivo para activar la protección contra escritura, por ejemplo con hdparam –r1 /dev/sdX.

El tercer y último paso es preparar el entorno hostil para que utilice nuestros binarios en vez de los del sistema. Para ello, y una vez montada la unidad extraíble, ejecutamos los siguientes comandos desde el directorio raíz del punto de montaje.

exec bin/bash
export PATH=$(pwd)/sbin:$(pwd)/bin:$(pwd)/usr/sbin:$(pwd)/usr/bin
export LD_LIBRARY_PATH=$(pwd)/lib64:$(pwd)/lib:$(pwd)/usr/lib:$(pwd)/usr/local/lib

A partir de ahora, todo comando ejecutado desde esta shell usará nuestros comandos en vez de los del sistema, potencialmente infectados.

Unas imágenes del resultado montando el dispositivo extraíble en el directorio /mnt:

bin2

Puede que algunos se pregunten: ¿si montas el dispositivo en solo lectura como obtienes/guardas las evidencias?

Una buena técnica es enviar la información obtenida a través de la red a un equipo de confianza. Por ejemplo, se puede utilizar netcat para enviar las evidencias. Por otra parte, es interesante indicar que con la configuración establecida es posible actualizar el pendrive y mantener todo el software actualizado. También se pueden instalar scripts o binarios propios para ser utilizados durante la intervención.

De esta forma podemos intervenir un equipo potencialmente infectado sin dudar de la validez de sus ejecutables.