Detección de intrusos en sistemas UNIX Introducción - UNAM-CERT

Anuncio
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
Descargar