Detección de intrusos en sistemas UNIX Busca señales para determinar si tu sistema ha sido comprometido • Introducción • Examina los archivos log • Busca archivos setuid y setgid • Checa los archivos binarios del sistema • Inspecciona si hay packet sniffers • Examina archivos que estén corriendo como 'cron' y 'at'. • Sondea si hay servicios no autorizados • Examina el archivo /etc/passwd • Revisa la configuración del sistema y la red • Indaga por todos lados archivos escondidos o inusuales • Reconoce todas las máquinas en la red local • Referencias • Revisión histórica Introducción Hay que recalcar que toda acción tomada durante el curso de la investigación debe estar de acuerdo con las políticas y procedimientos de la organización. Específicamente, los pasos a tomar para reducir el riesgo de que su archivo de contraseñas (con contraseñas en él) pueda caer en las manos de un intruso. Examina los archivos log Examina archivos log a conexiones de lugares inusuales u otra actividad inusual. Por ejemplo, busca tu último acceso al sistema, conteo de procesos, o todos los accesos generados por syslog y otros accesos de seguridad. Si tu firewall o ruteador escribe accesos a una localidad diferente que la del sistema comprometido, recuerda checar estos accesos también. Nota que esto no es infalible a menos que accedas a un medio en el que sólo se pueda añadir, muchos intrusos editan archivos log en un esfuerzo por esconder su actividad. Busca archivos setuid y setgid Busca archivos setuid y setgid (especialmente archivos setuid root) en todo el sistema. Los intrusos frecuentemente dejan copias setuid de /bin/sh o /bin/time para así autorizarles el acceso como root a una ocasión posterior. El comando find puede usarse para buscar estos archivos. Por ejemplo, puedes usar los siguientes comandos para encontrar los archivos setuid root y los archivos setgid kmem en el complejo sistema de archivos: find / -user root -perm -4000 -print find / -group kmem -perm -2000 -print Los ejemplos anteriores buscan en el directorio completo incluyendo NFS/AFS montados en el sistema de archivos. Algunos comandos find soportan la opción "-xdev" para evitar buscar esas jerarquías. Por ejemplo: find / -user root -perm -4000 -print -xdev Otro modo de indagar archivos setuid, es usar el comando ncheck en cada partición de disco. Por ejemplo, usa el siguiente para ubicar archivos setuid y equipos especiales en la partición de disco /dev/rsd0g: ncheck -s /dev/rsd0g Checa los archivos binarios del sistema Checa los archivos binarios del sistema para asegurarte que no han sido alterados. En ocasiones, los intrusos cambian programas en sistemas UNIX tales como login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, archivos binarios referentes a /etc/inetd.conf, y otros programas críticos de sistema y la red y librerías de objetos compartidas. Compra sólo las versiones de copias del sistema bien conocidas, tales como las de su instalación inicial. Se cuidadoso al confiar en los respaldos, éstos podrían contener también Troyanos. Los programas troyanos pueden producir el mismo checksum y timestamp estándar como la versión legítima. Por ello, el comando estándar sum de UNIX y los timestamps asociados a los programas no son suficientes para determinar si los éstos han sido reemplazados. El uso de herramientas checksum como cmp, MD5, tripwire y otras herramientas checksum criptográficas son suficientes para detectar programas troyanos, las herramientas provistas checksum, son mantenidas seguras y no están disponibles para modificación por el intruso.Adicionalmente, puedes querer considerar usar una herramienta (PGP por ejemplo) para "firmar" la salida generada por MD5 o Tripwire, para futura referencia. Inspecciona si hay packet sniffers Checa en tus sistemas si se emplea sin autorización el programa de monitoreo de red, comúnmente llamado sniffer o packet sniffer. Los intrusos pueden usarlo para capturar información de la cuenta y el password de un usuario. Examina archivos que estén corriendo como 'cron' y 'at' Examina todos los archivos que estén corriendo como los archivos "cron" y "at". Hay indicio de que los intrusos dejan back doors en archivos corriendo como "cron" o enviados como "at". Estas técnicas pueden heredar un back intruso en el sistema. Verifica adicionalmente, que todos los archivos/programas relacionados (directa/indirectamente) por tareas del 'cron' y 'at', y las tareas recibidas por sí mismas no sean escribibles. Sondea si hay servicios no autorizados Checa si existen servicios no autorizados. Inspecciona /etc/inetd.conf por si tiene añadiduras o cambios no autorizados. En particular busca entradas que ejecuten un programa shell (por ejemplo /bin/sh o /bin/csh ) y revisa todos los programas que estén especificados en /etc/inetd.conf para corroborar que sean correctos y que no han sido reemplazados por programas troyanos. Además cerciora la legitimidad de los servicios que hayas comentado en el archivo /etc/inetd.conf. Los intrusos pueden habilitar un servicio supuestamente deshabilitado con anterioridad, o reemplazar el programa inted con uno troyano. Examina el archivo /etc/passwd Explora el archivo /etc/passwd en el sistema y sondea las modificaciones de éste. En particular busca la creación no autorizada de nuevas cuentas, cuentas sin password o cambios de UID (específicamente UID 0) a cuentas existentes. Revisa la configuración del sistema y la red Checa las entradas no autorizadas a los archivos de configuración de tu sistema y de tu red. En particular busca las entradas con signo '+' y nombres de host no locales inapropiados en /etc/hosts.equiv, /etc/hosts.lpd, y en todos los archivos .rhosts (especialmente root, uucp, ftp, y otras cuentas de sistema) en el sistema. Estos archivos no deberían de ser escribibles para todo el mundo. Por lo tanto confirma que si éstos existan antes de cualquier intrusión y que no fueron creados por un intruso. Indaga por todos lados archivos escondidos o inusuales Busca en todas partes archivos ocultos o inusuales (archivos comenzados con un punto y normalmente no mostrados por el "ls"'), como éstos pueden usarse para esconder herramientas e información (programas de crackeo de password, archivos de password de otros sistemas, etc). Una técnica común en sistemas UNIX es poner un directorio oculto en una cuenta de usuario con un nombre inusual, algo como '...' o '.. ' o '..^G' . De nuevo el comando find puede utilizarse para buscar archivos ocultos, por ejemplo: find / -name ".. " -print -xdev find / -name ".*" -print -xdev | cat -v Además, archivos con nombres como '.xx' y '.mail' han sido usados (con esto se indica que son archivos que pueden parecer normales). Reconoce todas las máquinas en la red local Examina todas las máquinas en la red local cuando busques signos de intrusión. La mayoría de las veces, si un host ha sido comprometido, otros en la red lo han sido también. Esto es especialmente cierto para redes donde está corriendo NIS o los hosts confían uno en otro a través del uso de archivos .rhosts y/o archivos /etc/hosts.equiv. Además, checa los hosts para los cuales tus usuarios comparten acceso .rhosts. Referencias Para mayor información puedes consultar la página siguiente: http://www.cert.org/tech_tips/intruder_detection_checklist.html Revisión histórica • Liberación original: • Última revisión: 7 de octubre de 2010 La Subdirección de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a: • Galvy Cruz Valencia • Andrés Leonardo Hernández Bermúdez Para mayor información acerca de éste documento de seguridad contactar a: UNAM-CERT Equipo de Respuesta a Incidentes UNAM Subdirección de Seguridad de la Información Dirección General de Cómputo y de Tecnologías de Información y Comunicación Universidad Naciónal Autónoma de México E-Mail: [email protected] http://www.cert.org.mx http://www.seguridad.unam.mx ftp://ftp.seguridad.unam.mx Tel: 56 22 81 69 Fax: 56 22 80 43