Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Detección de intrusos en Unix (página 2)



Partes: 1, 2

  1. El comando "finger"

Otro comando que permite descubrir intrusos conectados
actualmente a su sistema, es
"finger". Un ejemplo de su salida es el siguiente:

Login Name TTY Idle When Where

rmt ??? console 8 Mon 13:29 :0

ramon ??? pts/21 16 Wed 11:26 caballero

ramon ??? pts/1 1 Thu 09:22 suntiago

ramon ??? pts/22 Thu 09:23 suntiago

El comando "finger" muestra
quién está conectado al sistema, qué
terminales está utilizando, cuándo se conectaron y
desde dónde están operando.

Debe comprobar que:

  • Todos los usuarios son válidos.
  • Los usuarios llevan conectados un intervalo de
    tiempo
    normal.
  • El sitio desde dónde se conecta el usuario es
    válido.

El problema que presenta el comando "finger" es que
puede ser fácilmente modificado para ocultar la existencia
de un intruso. Este comando, además, no sólo
muestra información útil para el administrador,
sino también para el posible intruso. Por ejemplo,
éste podría utilizar finger para encontrar el
momento oportuno para atacar el sistema, utilizando "finger" para
determinar la actividad de usuarios como root, manager, bin,
etc.

  1. El comando "who"

Con el comando "who" se obtiene información sobre
los usuarios conectados al sistema en el momento de su
ejecución. Ésta información es mantenida en
el fichero "/etc/utmp". Un ejemplo de su salida es presentado
continuación:

rmt console Jun 28 13:29 (:0)

ramon pts/21 Aug 18 11:26 (caballero)

rmt pts/5 Jun 28 13:30 (:0.0)

ramon pts/1 Aug 19 09:22 (suntiago)

ramon pts/22 Aug 19 09:23 (suntiago)

El comando devuelve una lista con los usuarios
conectados actualmente al sistema, qué terminal
están utilizando, cuándo se conectaron, y desde
donde están operando.

Deberá verificar que:

  • Los usuarios son válidos.
  • Los usuarios llevan conectados un intervalo de tiempo
    normal.
  • El sitio desde donde se conecta el usuario es
    válido.

De nuevo éste comando es vulnerable. Su salida
puede ser fácilmente modificada para ocultar la existencia
de un intruso, puesto que el comando obtiene la
información del fichero "/etc/utmp".

Determinar los procesos
activos

Incluso si un intruso ya no está conectado a una
máquina Unix ajena,
puede haber dejado un proceso en
ejecución para continuar con sus tareas de
usurpación de información o de ataque al sistema.
Esta sección enseña cómo utilizar estos
comandos para
comprobar cuáles son los procesos activos en el
sistema:

  • El comando "ps".
  • El comando "crash".
  1. El comando "ps"

El comando "ps –ef" devuelve una lista con los
procesos que están siendo ejecutados en el sistema. Las
opciones seleccionadas son las siguientes:

  • El parámetro "e" muestra todos los procesos
    ejecutándose en el sistema, no sólo los
    pertenecientes a usted.
  • El parámetro "f" muestra información
    detallada sobre los procesos.

El comando "ps -ef" es una manera segura de ver
qué programas
están en ejecución en el sistema. Un fragmento de
su salida es la presentada a continuación:

Lo siguiente podría indicar una actividad
indeseada:

  • Procesos que llevan ejecutándose mucho
    tiempo.
  • Tiempos de comienzo inusuales.
  • Nombres inusuales.
  • Procesos que están consumiendo un alto
    porcentaje de CPU
    (podría tratarse de sniffers).
  • Procesos sin un terminal de control que
    están ejecutando programas inusuales.
  • Elevado número de procesos en ejecución
    sin causa justificada.

En algunos casos, se ha encontrado en los sistemas
atacados, versiones alteradas de "ps" que no muestran los
procesos del intruso. Además, si está
ejecutándose un proceso inválido pero con un nombre
válido, es difícil distinguir los procesos
sospechosos. Por ejemplo, los intrusos a menudo ejecutan procesos
sniffers con nombres como "sendmail" o "inetd".

  1. El comando "crash"

El comando "crash" puede ser utilizado, sólo por
el usuario root, para listar todos los procesos
ejecutándose en el sistema. Debería utilizarlo para
confirmar la validez del resultado del comando "ps". Es decir,
para encontrar un proceso a su salida que no aparece en la salida
proporcionada por "ps" (buscando la correspondencia entre los
pids). Una vez que ejecute "crash", recibirá el prompt
">". Teclee "proc" y, una vez ejecutado, teclee "quit". La
salida del comando "crash" se muestra a
continuación:

Lo siguiente podría indicar una actividad
indeseada:

  • Procesos que no aparecen en la lista devuelta por
    "ps" (utilice el pid para identificarlos).
  • Un valor muy
    alto en la columna donde se muestra el consumo de
    CPU por el proceso.
  • Comandos inusuales en la columna donde se muestra el
    nombre del proceso en ejecución.

No obstante, como puede ocurrir con cualquier comando,
"crash" puede haber sido sustituido por otro comando semejante
pero alterado.

Encontrando las huellas dejadas por un
intruso

Si sospecha que un intruso estuvo conectado a su
sistema, pero ya no lo está, deberá utilizar los
comandos y ficheros descritos en esta sección para
encontrar las huellas que pudiera haber dejado. En esta
sección aprenderá a cómo utilizar estos
comandos y ficheros:

  • El comando "last".
  • El comando "lastcomm".
  • El fichero "/var/log/syslog".
  • El fichero "/var/adm/messages".
  • El comando "netstat".
  • Buscar ficheros olvidados por el intruso.
  • Examinar otros ficheros importantes del
    sistema.
  1. El comando "last"

El comando "last" muestra información sobre las
conexiones y desconexiones al sistema, a través de los
datos
almacenados en el fichero "/var/adm/wtmp". Si puede descubrir el
nombre de usuario que el intruso utilizó para conectarse,
este comando puede mostrarle cuánto tiempo estuvo en el
sistema y desde dónde se conectó.

La opción "-n" es utilizada para ver las
últimas n entradas del fichero "/var/adm/wtmp".
Seguidamente se muestra un ejemplo de su salida:

La primera columna es el nombre de usuario, seguido por
el terminal desde el que está conectado. Si la
conexión se realizó a través de un
dispositivo de red, el nombre del sistema
remoto aparecerá en la siguiente columna. En el caso de
que la conexión se realizase a través de un
módem esta columna estaría en blanco. Finalmente
nos encontramos con el instante en que el usuario se
conectó y se desconectó y el tiempo total que
estuvo en el sistema.

Deberá fijarse en lo siguiente:

  • Examine las entradas al sistema cercanas al
    día y hora en que se sospecha que se efectuó el
    ataque para aquellos casos que no parezcan normales, incluyendo
    conexiones a cuentas que
    han estado
    previamente inactivas, conexiones desde ubicaciones
    inesperadas, conexiones a horas inusuales, y conexiones por
    cortos intervalos de tiempo.
  • La inexistencia del fichero "/var/adm/wtmp" o su
    existencia con huecos en su salida (esto podría indicar
    que un intruso trató de ocultar su existencia). Como
    regla general los administradores nunca borran este fichero.
    Por consiguiente, puede ser bastante grande y contener la
    actividad del sistema desde que fue arrancado por primera
    vez.

El problema es que un intruso puede ocultar sus huellas
en el sistema borrando o modificando el fichero
"/var/adm/wtmp".

  1. El comando "lastcomm" muestra los últimos
    comandos ejecutados por cualquier persona
    en el sistema. Este comando está disponible
    sólo si tiene procesos de contabilidad en ejecución, sobre lo
    cual puede informarse en el manual
    "man" accediendo a la entrada "acct".

    La orden "lastcomm" es excelente para percatarse
    de lo que hizo el usuario, ya que lista todos los comandos
    ejecutados por todos los usuarios. Por ejemplo, una salida
    con ejecuciones repetidas del programa
    "tftp", podría indicar el intento de robar ficheros
    de claves.

    Este comando produce un fichero que tiende a
    crecer muy deprisa, por lo que debería renombrarlo
    cada cierto tiempo, manejando así ficheros de un
    tamaño menor.

    La debilidad de "lastcomm" es que sólo
    guarda información de comandos que ejecutan un
    programa, pero no las acciones
    que fueron tomadas después de que el programa
    comenzase (por ejemplo, podría mostrar que el editor
    fue utilizado, pero no qué ficheros fueron abiertos
    con él).

    Muchas veces, los ataques no son descubiertos
    hasta pasados unos días de ocurrir los daños
    o descubrir la presencia de intrusos. En estos casos, el
    problema está en que el intruso puede haber borrado
    las huellas dejadas en el sistema, ya que la salida de
    "lastcomm" se basa en los datos almacenados en el fichero
    /var/adm/pacct, el cual puede ser fácilmente borrado
    y modificado si pueden ser obtenidos los privilegios
    adecuados.

    Determinados shells, como por ejemplo "tcsh",
    mantienen un registro de
    los comandos ejecutados recientemente por cada usuario.
    Esta información es generalmente almacenada en un
    fichero en el directorio casa del usuario denominado
    ".history". Mediante su análisis se podrían
    reconstruir la actividad de dicho usuario y verificar la
    información obtenida mediante "lastcomm".

  2. El comando "lastcomm"
  3. El fichero "/var/log/syslog"

El fichero "/var/log/syslog" contiene mensajes relativos
a varios tipos de conexiones al sistema. El contenido de este
fichero está definido por el fichero
"/etc/syslog.conf".

La mayoría de los mensajes son del programa
"sendmail", y muestran el estado de
los mensajes enviados y recibidos en el sistema. Este fichero
también contiene mensajes de conexión de in.telnetd
y otros mensajes previamente definidos.

Cuando observe el contenido de "/var/log/syslog", debe
fijarse en las observaciones enumeradas seguidamente:

  • Puesto que este fichero guarda información
    sobre datos entrantes y salientes al sistema, especialmente la
    información correspondiente a "sendmail", una de las
    cosas a buscar son los emails enviados a servidores
    sospechosos. Esto podría indicar que un intruso ha
    traspasado información desde su sistema a otro sistema
    remoto.
  • Examine las conexiones vía "telnet", tanto
    entrantes como salientes.
  • Un fichero pequeño puede ser sospechoso, pues
    podría ser un indicio de que ha sido editado o borrado.
    Un hueco en blanco en el fichero (un largo intervalo de tiempo
    durante el cual no han aparecido mensajes) puede indicar que un
    intruso borró los mensajes relacionados con él
    durante el intervalo de tiempo que estuvo
    conectado.
  • En general, busque cosas que parezcan poco
    normales.

En muchos casos, el fichero "/var/log/syslog" tiene
derechos de
escritura
para todos los usuarios y debe permanecer así por
razones operativas. Por lo tanto, sus datos pueden ser
alterados fácilmente.

Este fichero suele ser muy grande, por lo que investigar
todas las conexiones, sobre todo los mensajes originados por
"sendmail", puede resultar tedioso. Esto es debido a que, para
cada mensaje de correo
electrónico, al menos una línea es escrita en
el archivo
"/var/log/syslog". Además, los usuarios acostumbran a
borrar los mensajes y olvidan quiénes se los enviaron,
cuando fueron recibidos, y sobre que trataban.

  1. El fichero "/var/adm/messages"

El fichero "/var/adm/messages" contiene, por lo general,
una lista de todos los mensajes enviados a la consola. Su
contenido está definido en el fichero
"/etc/syslog.conf".

Lo siguiente podría indicar una actividad
indeseada:

  • Un usuario no autorizado conectándose al
    directorio root.
  • Intentos de hacer un "su" al root o a una cuenta con
    privilegios.
  • Intentos fallidos de conexión podrían
    proceder de un usuario válido cometiendo errores o de un
    intruso.

Una vez que un intruso obtiene el acceso como root, este
fichero puede ser modificado o borrado fácilmente.
Además, por medio del fichero "syslog.conf", se pueden
suprimir las conexiones de este fichero.

  1. El comando "netstat"

El comando "netstat" muestra las conexiones abiertas en
el sistema. Es interesante comparar la salida de este comando con
la correspondiente a "last –n".

Utilizando la opción "-a" se muestra el estado de
todos los sockets abiertos. Un ejemplo de su uso es el mostrado a
continuación:

Lo siguiente podría indicar una actividad
indeseada:

  • Tiene una conexión vía "telnet" que no
    se corresponde con la salida de los comandos "who" y
    "w".
  • Otras conexiones de red.

No obstante, es posible que el intruso haya suplantado
la versión original de "netstat" por otras que no muestran
las conexiones a y desde el sistema donde se desarrolla el
ataque.

  1. Buscar ficheros olvidados por el
    intruso

Normalmente, el mejor indicador de si el sistema ha ido
atacado es examinar los ficheros del sistema, viendo si han sido
modificados o creados otros nuevos. No obstante, el intruso
podría haber alterado los programas del sistema para
ocultar su ataque. Por ejemplo, muchos administradores han
descubierto que comandos como "ps" han sufrido cambios para
ignorar los procesos lanzados por el intruso.

El comando "find", ejecutado preferentemente como root,
lista todos los ficheros que han sido modificados en los n
días anteriores:

find / -mtime –ndays -ls

El intruso podría cambiar el instante de
modificación del fichero, para ocultar los cambios hechos.
Muchas de estas modificaciones podrían aún ser
detectadas, comparándolas con el instante en que fue
cambiado el nodo-i del fichero. El siguiente comando lista todos
los ficheros cuyo instante de modificación del nodo-i ha
variado en los últimos n días:

find / -ctime –ndays
–ls

Cuando examine los resultados generados por estos
comandos, preste atención a los ficheros y directorios
ocultos (ficheros cuyo nombre empieza por "." y que no son
mostrados con el comando "ls", a menos que se utilice la
opción "-a". También debe prestar atención a
ficheros con extensiones poco comunes o software para la captura de
claves de acceso.

Los sistemas Unix permiten elevar sus privilegios a los
usuarios mediante un mecanismo conocido por setuid. Cuando un
fichero con el atributo setuid es ejecutado por un usuario, el
programa da los permisos de acceso correspondientes al
propietario de dicho fichero. Los ficheros setuid aparecen en los
listados de los directorios con una "s", en lugar de la "x", en
la posición correspondiente al bit de ejecución. No
obstante, tenga en cuenta que los sistemas Unix contienen varios
programas setuid necesarios para la operación normal del
sistema. Por ejemplo, el programa "login" es típicamente
un fichero setuid perteneciente al usuario root.

Los intrusos a menudo crean ficheros setuid que los
permiten obtener rápidamente el acceso como root durante
posteriores visitas al sistema. Generalmente, el fichero se
guarda en un directorio oculto, o se trata de un fichero oculto.
Los ficheros setuid potencialmente sospechosos son:

  • Ficheros que han sido modificados
    recientemente.
  • Ficheros que no le son familiares.
  • Ficheros almacenados en directorios de usuario o
    temporales.

Para listar los ficheros setuid en su sistema,
deberá utilizar el siguiente comando:

find / -user root –perm –
4000 –print

  1. Examinar otros ficheros importantes del
    sistema

Para examinar ficheros puede utilizar la orden "cat"
seguida por el nombre del fichero en cuestión.
También es interesante el comando "cmp", gracias al cual
podrá comparar dos ficheros. Éste último es
interesante para determinar, por ejemplo, si existen copias de
ejecutables del sistema en directorios de usuario, lo cual puede
ser un indicio de ataque al sistema.

El primer fichero a considerar es "/etc/passwd".
Deberá buscar en él, lo siguiente:

  • Nuevas cuentas de usuario.
  • Identificadores de usuario (uid)
    cambiados.
  • Usuarios sin passwords.
  • Una entrada "+::".

Otro fichero importante es "~
/.forward", que sirve para reenviar mensajes de correo
electrónico. Deberá fijarse en entradas
sospechosas.

El fichero "~ /.rhosts" puede
ser utilizado para permitir el acceso remoto al sistema y es
usado algunas veces por intrusos, para crear fácilmente
una puerta de acceso oculta al sistema. Compruebe
periódicamente que los servidores remotos y los nombres de
usuarios a los que deja conectarse son correctos. Fíjese
detenidamente en la entrada "+", pues permitiría a todos
los usuarios acceder al sistema local desde cualquier servidor.

Es recomendable sacar un listado del fichero
/etc/inetd.conf en condiciones totalmente seguras y compararla en
situaciones posteriores, cuando se hayan añadido nuevos
servicios.

Busque en "/etc/aliases", alias inusuales o aquellos que
redireccionan el correo electrónico a lugares indeseados.
Fíjese también en comandos sospechosos.

Compruebe también que no aparecen nuevas entradas
en el fichero de "cron", especialmente las relativas al root.
Mire los comandos que son lanzados periódicamente por el
sistema y por quién ha sido solicitada su
ejecución.

Detectar un sniffer

El comando "ifconfig" muestra la configuración de
la interfaz de red del sistema. La mayoría de los
adaptadores Ethernet
deberían estar configurados para aceptar sólo los
mensajes destinados a ellos. La persona que ataca su sistema,
podría establecer el adaptador de un ordenador a modo
promiscuo, para escuchar (y grabar) todo lo que circula por ese
segmento de red.

Un ejemplo de la salida proporcionada por este comando
es la siguiente:

lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu
8232

inet 127.0.0.1 netmask ff000000

hme0:
flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu
1500

inet 1.0.20.222 netmask ff000000 broadcast
1.255.255.255

ether 8:0:20:9e:9b:14

En conjunción con la aparición del en el
campo flags del argumento PROMISC, lo siguiente podría
indicar una actividad indeseada:

  • Nuevos ficheros creados.
  • Un proceso que utiliza un porcentaje de CPU muy
    alto.

El problema es que como cualquier comando, "ifconfig"
puede ser suplantado. Una forma fácil de asegurar su
correcto funcionamiento, y el de todos los comandos estudiados,
es hacer una copia de seguridad del
ejecutable y renombrarlo en una ubicación conocida
sólo por el administrador del sistema, siendo utilizada
esta versión en caso de sospecha. Sería conveniente
comprimir todos los comandos y ficheros juntos, para evitar que
la copia de seguridad de uno de ellos sea detectada por el
intruso mediante el comando "cmp".

 

Datos autor

Ramón Jesús Millán
Tejedor

Ingeniero de Telecomunicación y Master en
Tecnologías de Información

http://ramonmillan.blogspot.com

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter