29 febrero 2008

SICUR

Hoy he estado en el SICUR (Salón Internacional de la Seguridad, Vigilancia y Prevención de Incendios) que se está celebrando estos días en Madrid.

Es la primera vez que voy. En el folleto explicativo decían que todo el módulo 9 estaba dedicado a la seguridad informática, así que me faltó tiempo para apuntarme para ir. La verdad es que ha sido muy interesante, había desde chalecos antibalas, armamento y cursos de formación para guardaespaldas y mercenarios, hasta robots para rescates y medidas de seguridad física. Sin embargo, he de reconocer que la seguridad informática prácticamente brillaba por su ausencia, más allá de las medidas de defensa física y de autentificación biométrica. No se cual es la razón de tan clamorosa ausencia pero al menos ha habido honrosas excepciones.

La primera excepción ha sido la gente de AccessData que me estuvo haciendo una extensa demostración de sus herramientas de análisis forense, concretamente el Forensic Toolkit (FTK). La herramienta es muy interesante. Admite imágenes de discos realizadas de multitud de formas (vía dd de Linux, a través de plataformas de replicación hardware como las de Tableau, etc). Una vez importada la imagen, el FTK indexa todos los archivos de la imagen incluidos aquellos archivos borrados que sea capaz de recuperar. Esta indexación permite búsquedas casi instantáneas por palabras clave o clasificaciones según distintos tipos de atributos. Otra opción con muchas posibilidades es que en caso de que detecte que la imagen es de un sistema Windows accederá al registro y lo decodificará presentándolo de manera clara y sencilla, de esta manera se pueden obtener usuarios o contraseñas en caso de que el anterior dueño del disco hubiese sido tan incauto como para guardarlas localmente. En lo referente a la ruptura de contraseñas parece ser que el FTK es bastante solvente al poder utilizar tablas rainbow de hasta 9 TB (según me contaron, mediante un appliance con el correspondiente array de discos). Según nos comentaron, la mayor parte de las contraseñas caen en menos de 5 minutos aunque bueno... las cosas como son, yo probé con la palabra "repollo" y el sistema tardó 15 minutos en sacarla, aunque a priori es una palabra de diccionario sencilla de romper. Para facilitar la ruptura de contraseñas y ficheros cifrados FTK permite utilizar computación paralela aprovechando la capacidad de proceso libre de una red de ordenadores, previa instlación de los respectivos programas clientes, sin que sus usuarios sean conscientes de lo que ocurre ni vean interrumpido su trabajo. Por último el FTK permite el borrado seguro de datos utilizando, según me dijeron, cumpliendo la norma 5220.22-M del DoD americano (sin embargo, a juzgar por el número 125 de @rroba el DoD sólo admite como borrado seguro la destrucción física o la desmagnetización desde noviembre de 2007). También me presentaron un appliance también de la casa Tableau para la ruptura de contenidos cifrados... sería interesante hacer una comparativa entra las capacidades de cálculo de la solución distribuida de AccessData y esta de Tableau. Por último también tenía bastantes posibilidades un sistema que me enseñaron de autentificación basado en reconocimiento facial a larga distancia llamado HBox. Es un sistema pensado para ponerlo en la parte superior de los arcos de entrada a instalaciones, admitiendo el paso de personas a algo menos de 2 metros del sensor y a una velocidad de hasta 30 personas por minuto.

Fuera de eso, el resto de las excepciones tuvieron mucha menos enjundia. Estaba la omnipresente Telefónica, ofreciendo servicios de Ingeniería de Seguridad, y algún que otro fabricante como Winkhaus con soluciones centralizadas de control de acceso en instalaciones... pero la verdad es que poco más. En fin, la feria ha sido entretenida por lo heterogéneo de lo que allí había, pero para ser honesto ha estado bastante flojo en lo que a seguridad informática se refiere...

26 febrero 2008

Bastille

La gestión de la seguridad local de los equipos de una organización puede ser extremadamente costosa. Algunas organizaciones están constantemente poniendo en marcha nuevos equipos, ya sea para su uso como PC de trabajo o como servidor. En teoría, el Departamento de Seguridad debería supervisar la creación y configuración de estos nuevos equipos pero en la práctica estos departamentos suelen estar saturados de trabajo y carecen de personal disponible para asignarlo a esta tarea. Es aquí donde entra en juego el uso de scripts que aseguren una correcta configuración del equipo antes de pasarlo a producción. El departamento de Seguridad le pasa estos scripts al de Sistemas y le urge a aplicarlo justo antes de la puesta en producción del equipo. De esta manera se automatiza la tarea y se gana en eficiencia.

Una opción es que el diseñemos nosotros mismos estos scripts, la otra es no reinventar la rueda y utilizar lo que otros ya han creado. En este sentido Bastille es una de las aplicaciones más reconocidas. A lo largo de este artículo explicaremos su uso.

Si su sistema operativo es Ubuntu la instalación de Bastille es extremadamente sencilla por estar incluida en los repositorios por defecto de esta distribución:
dante@dante-desktop:~$ sudo aptitude search bastille [sudo] password for dante: c bastille - Security hardening tool dante@dante-desktop:~$ sudo aptitude show bastille Paquete: bastille Estado: sin instalar Versión: 1:2.1.1-13 Prioridad: opcional Sección: universe/admin Desarrollador: Ubuntu MOTU Developers Tamaño sin comprimir: 1544k Depende de: perl5, libcurses-perl Recomienda: whois, psad, bind9-host | host Sugiere: acct, perl-tk (>= 1:800.011) | libgtk-perl Tiene conflictos con: libcurses-widgets-perl Descripción: Security hardening tool Bastille Linux is a security hardening program for GNU/Linux. It increases the security of the system either by disabling services (if they are not necessary) or by altering their configuration. If run in the (recommended) Interactive mode, Bastille educates the administrator during the hardening process: in each step of the process, extensive descriptions are given of what security issues are involved. Each step is optional. If run in the quicker Automated mode, Bastille hardens the system according the profile chosen. Bastille Linux works for several Linux distributions. This package has been specifically modified to work for Debian GNU/Linux. Homepage: http://www.bastille-linux.org/ dante@dante-desktop:~$ sudo aptitude install bastille (...) Se instalarán los siguiente paquetes NUEVOS: bastille libbit-vector-perl libcarp-clan-perl libcurses-perl libdate-calc-perl libnetwork-ipv4addr-perl libunix-syslog-perl psad whois 0 paquetes actualizados, 9 nuevos instalados, 0 para eliminar y 107 sin actualizar. Necesito descargar 0B/1355kB de ficheros. Después de desempaquetar se usarán 6697kB. ¿Quiere continuar? [Y/n/?] Y (...) dante@dante-desktop:~$
Una vez instalado, ya se puede ejecutar Bastille. Se recomienda ejecutarlo en modo interactivo, de tal manera que el programa le vaya haciendo una serie de preguntas con el fin de averiguar el uso que se le piensa dar al equipo. En función de las respuestas, Bastille configurará el equipo de la manera más segura posible. Dichas preguntas se formularán a través de un sencillo interfaz basado en ncurses y por tanto fácilmente visualizable a través de una sesión de ssh. Gracias a Bastille bastará con que el departamento de Seguridad le de al de Sistemas una "chuleta" donde se diga qué responder a cada una de las preguntas de tal manera que ellos mismo puedan ejecutar Bastille en cada uno de los sistemas Linux que vayan instalando.

Junto a cada pregunta Bastille incluye una detallada explicación acerca del motivo de la cuestión y lo que se hará en función de la respuesta que se le de. Aún así a continuación se mostrarán las preguntas que realiza Bastille y seintentará dar una explicación sencilla:
  1. Would you like to set more restrictive permissions on the administration utilities? [N] ---> Útil en máquinas con múltiples cuentas de usuario. Hay utilidades que, en general, sólo son ejecutadas por el administrador de la máquina aunque por defecto los usuarios habituales tienen acceso a ellas, al menos a parte de sus funcionalidades (¿que necesidad tiene el usuario de ejecutar herramientas de administración como top o ifconfig?). Para evitar los posible problemas de seguridad a los que podría dar lugar esto Bastille puede cambiar los permisos de las mencionadas aplicaciones con el fin de asegurar que sólo el administrador pueda ejecutarlas. Si usted es el único usuario de la máquina no tiene sentido que habilite esta opción. Si cuenta con otros usuarios que acceden a ella (por ejemplo para subir fichero a sus carpetas web) sí que sería interesante añadir esta opción.
  2. Would you like to disable SUID status for mount/umount? [Y] ---> En general, los programas que tienen el atributo SUID son muy peligrosos ya que aunque pueden ser invocados por usuarios normales, se ejecutan con privilegios de superusuario. Esto no entrañaría ningún riesgo si estos programas se limitasen a hacer aquello para lo que fueron diseñados, el problema está en que es relativamente habitual que se descubran bugs en estas aplicaciones que permitan "engañarlas" para que hagan cosas con privilegios de superusuario. Si dice que śi en esta pregunta Bastille se asegurará de que el comando mount/umount sólo pueda ser ejecutado por aquellos que conozcan la contraseña de superusuario, reduciendo así la exposición al riesgo del equipo.
  3. Would you like to disable SUID status for ping? [Y] ---> Similar al anterior.
  4. Would you like to disable SUID status for at? [Y] ---> Similar al anterior.
  5. Should Bastille disable clear-text r-protocols that use IP-based authentication? [Y] ---> Las llamadas r-tools son un conjunto de utilidades para la administración remota de equipos. El problema con ellas es que no usaban encriptación para el intercambio de datos y usaban las direcciones IP como método de autentificación. Esta carencia de confidencialidad y la facilidad para falsificar las direcciones IP de origen han llevado a que se desaconseje el uso de las r-tools y se usen en su lugar alternativas más seguras.
  6. Would you like to enforce password aging? [Y] ---> Habilita un tiempo de caducidad de las contraseñas de 180 días. Antes de que pase ese tiempo se pedirá al usuario que cambie su contraseña. Si se cumple el plazo y el usuario no ha cambiado su contraseña se procederá a bloquear su cuenta hasta que el administrador la vuelva a activar.
  7. Would you like to restrict the use of cron to administrative accounts? [Y] ---> Existen determinados ataques que pueden sacar provecho de la capacidad de los usuarios para utilizar la herramienta cron con el fin de lanzar tareas diferidas según una planificación determinada. Si los usuarios de un equipo no necesitan lanzar tareas planificadas, lo mejor es dejar que Bastille les restrinja el uso de cron, de tal manera que sólo esté disponible para el administrador.
  8. Do you want to set the default umask? [Y] ---> El umask son los permisos por defecto que se le ponen a los ficheros que vaya creando. Lo más aconsejable es dejar que Bastille lo fije a un valor seguro.
  9. What umask would you like to set for users on the system? [077] ---> Continuación de la cuestión anterior, lo mejor es usar la opción 077 de tal manera que se asegure tanto la confidencialidad de nuestros archivos como su integridad impidiendo que cualquiera que no sea sea su dueño pueda leerlos o escribir sobre ellos.
  10. Should we disallow root login on all ttys? [N] ---> Esta opción es extremadamente útil con equipos a los que se pueda acceder por SSH sin limitación en cuanto a la IP de origen, ya que suelen ser víctimas de ataques de diccionario desde bots de Internet. Estos bots lo primero que prueban es el usuario root, omnipresente en todos los servidores Unix/Linux. Sin embargo si se activa esta opción, Bastille se ocupará de que la única manera de acceder a root sea conectándose con un usuario normal y luego haciendo "su -". La ventaja es que de esta manera el bot se ve obligado a descubrir no sólo una contraseña, sino también el nombre del usuario dado de alta para conectarse. Lo más recomendable por tanto es activar esta opción.
  11. Would you like to password-protect the GRUB prompt? [N] ---> En caso de que un intruso tenga acceso físico al equipo puede obtener una consola de root rebotando el equipo y pasándole unos parámetros determinados al GRUB. Para evitar esto lo mejor es activar esta opción de tal manera que aunque se pueda reiniciar el equipo y arrancarlo normalmente, sólo se puedan pasar parámetros al GRUB previa autentificación con una contraseña.
  12. Would you like to disable CTRL-ALT-DELETE rebooting? [N] ---> Esta secuencia permite a un usuario con acceso físico a la máquina rebotarla limpiamente. A primera vista podría ser interesante decirle a Bastille que deshabilite esta secuencia de teclado. Sin embargo habría que plantearse que el que haga uso de esta secuencia de teclado puede acceder también al enchufe del equipo, llegado a este punto el intruso va a reiniciar el equipo por las buenas o por las malas ¿de verdad interesa forzarle a hacer un reinicio sucio que puede dañar el disco duro?. El mismo Bastille recomienda no deshabilitar esta secuencia de teclado.
  13. Would you like to password protect single-user mode? [Y] ---> El modo mono-usuario sirve para arrancar el sistema de manera que única y exclusivamente pueda acceder el superusuario. Es un tipo de acceso que se utiliza en casos de emergencia, como por ejemplo cuando no se recuerda la contraseña de root ya que en este modo no suele solicitarse autentificación... claro, esto supone un arma de doble filo que puede permitir el acceso no autorizado al sistema. Si se activa esta opción de Bastille se evitará esta situación solicitando contraseña al acceder por este modo... pero cuidado: ¡no se olvide de recordarla o ya si es cierto que no habrá manera de recuperarla!.
  14. Would you like to set a default-deny on TCP Wrappers and xinetd? [N] ---> Los servicios de inetd están permitidos por defecto, si se activa esta opción Bastille cambiará la configuración para que lo que se haga sea una denegación por defecto.
  15. Should Bastille ensure the telnet service does not run on this system? [y] ---> El servicio de telnet está obsoleto y supone un riesgo grave para la seguridad del sistema al transmitir los datos en claro. Lo recomendable en la actualidad es usar SSH que permite acceder a la consola pero a través de un canal cifrado.
  16. Should Bastille ensure inetd's FTP service does not run on this system? [y] ---> Lo dicho para el servicio de telnet es igualmente válido para el de FTP. En este caso lo mejor es sustituirlo por SCP o SFTP.
  17. Would you like to display "Authorized Use" messages at log-in time? [Y] ---> Esta opción habilitará un mensaje que aparecerá al comienzo de las sesiones de consola. Este mensaje advertirá de que se está accediendo a un sistema restringido y que cualquier acceso no permitido puede ser perseguido por vía legal. Posteriormente podremos editar dicho mensaje para adecuarlo convenientemente a lo que diga el Departamento Jurídico.
  18. Who is responsible for granting authorization to use this machine? ---> Esta una pregunta dirigida a redactar el mensaje mencionado antes. En este caso se trata de identificar al responsable del equipo encargado de autorizar los diferentes accesos a él.
  19. Would you like to disable the gcc compiler? [N] ---> Activar esta opción evitará que se pueda utilizar el compilador de C en este equipo lo que hará la vida mucho más difícil a aquellos intrusos que obtengan acceso al sistema y quieren descargarse en él el código fuente de herramientas de ataque con el fin de compilarlas in-situ. Además, anular el compilador de C no debería suponer un problema en equipos, como por ejemplo cortafuegos perimetrales, en los que no se tiene pensado realizar ningún tipo de desarrollo.
  20. Would you like to put limits on system resource usage? [N] ---> Permite establecer ciertos límites al número de procesos y memoria usados por usuario con el fin de evitar ataques de denegación de servicio.
  21. Should we restrict console access to a small group of user accounts? [N] ---> Se trata de denegar el acceso a la consola excepto a un grupo determinado de cuentas.
  22. Would you like to add additional logging? [Y] ---> Configura el equipo para que incremente el número de fuentes de log y para que muestre algunos de ellos en las terminales 7 y 8 (accesibles mediante Alt+F7 y F8 respectivamente).
  23. Would you like to disable printing? [N] ---> Si el equipo no cuenta con una impresora, dejar el demonio de impresión activado es dejar una puerta abierta al desastre.
  24. Would you like to install TMPDIR/TMP scripts? [N] ---> Activar esta opción hará que Bastille instale unos scripts en las cuentas de los usuarios que configuren las variables TMPDIR y TMP de tal manera que utilicen directorios de ficheros temporales completamente individuales, en vez de que todos usen el /tmp lo que puede ser extremadamente peligroso en entornos multiusuarios.
  25. Would you like to run the packet filtering script? [N] ---> Activa el cortafuegos nativo de Linux. Activarlo es lo más seguro pero tenga en cuenta que tendrá que configurarlo localmente (si lo hace en remoto puede que se "corte las manos") bien a través de la línea de comandos o bien mediante el GUI correspondiente. Así que tendrá que documentarse adecuadamente antes de activarlo.
  26. Are you finished answering the questions, i.e. may we make the changes? ---> Y por fin llegamos al final del camino. Si está seguro de la configuración especificada responda afirmativamente para que se apliquen los cambios en su sistema.

24 febrero 2008

Keyloggers hardware

Muchas veces las abultadas inversiones en sistemas antivíricos o en cortafuegos de última generación desvían la atención de la necesidad de asegurar la correcta seguridad física de los equipos.

La gente se siente segura detrás de esos sistemas y olvida tomar las precauciones más elementales. Si ya es difícil conseguir que se acostumbren a bloquear las pantallas de sus ordenadores cuando se ausentan de sus mesas, generalmente resulta imposible convencerles de que cierren con llave la puerta al salir del despacho incluso cuando se trate de ir un minuto al cuarto de baño.

Sin embargo, incluso la exposición de un PC a un sólo minuto sin vigilancia puede suponer un grave descalabro para la seguridad del sistema... por ejemplo, instalar un keylogger hardware apenas requiere 20 segundos de tiempo.

Estos keyloggers se venden como una forma de hacer backup de lo que tecleamos, pero también es cierto que suponen una manera muy sencilla de que un intruso "pinche" nuestro teclado.


Estos dispositivos se colocan entre el conector macho del teclado y el hembra del PC capturando a partir de ahí todas las pulsaciones de teclado que se realicen. Lo reducido de su tamaño y el hecho de que la conexión del teclado generalmente quede fuera de la vista del usuario hace que estos aparatos pasen fácilmente inadvertidos. ¿Mira todos los días por detrás de la torre de su PC para asegurarse de que no le han instalado un keylogger?.

Se necesita un descuido del usuario para instalar un keylogger y otro para recuperarlo. Una vez hecho esto el dueño del keylogger puede utilizar una palabra clave para descifrar su contenido de pulsaciones capturadas. Este contenido puede ser realmente extenso ya que la memoria de algunos keyloggers puede alcanzar hasta los 2 MB, más que suficiente para almacenar las pulsaciones de una víctima el periodo de tiempo necesario para conseguir la totalidad de sus nombres de usuario y sus contraseñas.

Existen distintos modelos con diferentes capacidades y funcionalidades. Los de la casa Keyghost son modelos exclusivamente para teclados PS/2 pero cuentan con una amplia variedad de tamaños de almacenamiento entre los que elegir. Los de la casa Keykatcher abarcan tanto modelos para PS/2 como para USB aunque es cierto que carecen de opciones con capacidades de almacenamiento intermedias. En ambos casos el rango de precio oscila entre los 100 y los 300 dólares.


22 febrero 2008

Uso de antivirus como vector de entrada

Las casas de antivirus prometen con sus productos la panacea a los riesgos para la seguridad de nuestros sistemas. Sin embargo, los antivirus, al igual que cualquier obra humana, pueden padecer de errores que sirvan de vectores de ataque para alguien con los suficientes conocimientos para ello.

Sirva de ejemplo el siguiente correo, enviado a la lista de incidentes de security-focus el pasado 13 de Febrero. El correo, traducido al español es el siguiente:

El 4 de Febrero mandé un correo preguntando una serie de cosas acerca de una posible intrusión en un servidor de correo. Recibí algunas muy buenas aportaciones y bastante ayuda, algunas de esas aportaciones llevaron finalmente al descubrimiento de lo que había pasado realmente.
(...)
Aquí viene lo que descubrimos tras correlar los distintos logs, eventos, capturas y flujos de datos. Los datos que salían del servidor eran correos pero no eran el tipo de correo usual de dicho servidor. Se trataban de gigabytes de mensajes. No hemos podido revisarlos todos, pero podemos suponer que la mayor parte de los que capturamos eran fraudulentos. ¿Cómo puede haber pasado esto usando QMail como MX y Exchange como servidor de correo corporativo?.

Durante el análisis del log de eventos vimos muchas entradas que indicaban que el escáner del antivirus se había reiniciado multitud de veces a lo largo de las horas previas a la inundación de correos salientes desde nuestro servidor. Aunque puedan decir que esto no es anormal, que ocurre de vez en cuando, lo cierto es que nos condujo a la idea de pasarle el antivirus a los buzones con el resultado de que al hacerlo volvía a producirse la inundación de salida. ¿Qué era lo que iniciaba el proceso?. El escáner del antivirus. De hecho repetimos el escaneo varias veces y siempre comenzaba a hacer cosas raras al analizar un fichero concreto. Lo que habíamos descubierto era un exploit contra el escáner del antivirus que se ejecuta cuando el escáner intenta analizar el adjunto de un correo en particular... desde luego no esperábamos algo así.
(...)
Lo que también me preocupa es que en su momento permitimos que el antivirus pudiera tener acceso a Internet para actualizarse, abriendo así una vía de salida para los datos. De todos modos tampoco estoy seguro de que un servidor interno de actualizaciones hubiera mejorado la seguridad al respecto ya que al fin y al cabo los servidores de correo deben tener permitida la salida para el intercambio de correos... como mucho el uso de un servidor de actualizaciones habría permitido dificultar un poco la salida a Internet del atacante.
(...)

Lógicamente, este tipo de incidentes se ven omitidos por la publicidad de las casas desarrolladoras de antivirus pero resulta imprescindible tenerlos presentes a la hora de realizar una correcta valoración de riesgos. En general, ningún producto antivírico está exento de fallos, aunque unos sufren más que otros:

Para los que quieran profundizar en este tema aquí van un par de enlaces con documentación relacionada: