Los ataques a los sistemas se producen cada vez con más frecuencia. La complejidad de los mismos está en vías de ascenso y muchos de ellos transcurren sin que la víctima los detecte. Existen diversos mecanismos para prevenir los diferentes tipos de ataques, de los cuales muchos de ellos fueron cubiertos en el blog del laboratorio. Sin embargo, también es importante detectar aquellos que hayan ocurrido ya sea por falta de medidas preventivas adecuadas o simplemente porque no pudieron evitarse.
El compromiso de los servidores web es una de las actividades maliciosas que más abundan en Internet. La finalidad de estos ataques es variada y comprende desde alojar malware hasta obtener datos privados de la compañía detrás de los servidores. En esta instancia entra en juego la importancia de recurrir a los recursos que proveen los distintos servicios y sistemas operativos para llevar un control sobre las operaciones realizadas en el sistema.
¿Cómo verificar si existe compromiso en un servidor?
En el caso de un servidor web, es importante comprobar los logs. Estos archivos proveen un detalle de las operaciones realizadas sobre el servidor y los eventos ocurridos a modo de bitácora. Los logs existen para diversos servicios, como SSH, Telnet, FTP, entre otros. A partir de ellos es posible verificar, en la mayoría de los casos, si se comprometió el servidor. Asimismo, también es posible detectar los intentos fallidos para acceder a algunos de los servicios que se ejecutan.
A continuación se detalla un archivo log del servicio SSH donde el mismo fue atacado por fuerza bruta utilizando el usuario root:
Los intentos sucesivos de inicio de sesión utilizando el usuario root indican que se trató de comprometer el sistema. Cabe señalar que si el atacante inicia sesión exitosamente, tendrá los máximos privilegios sobre el sistema dejándolo a disposición del ciberdelincuente.
Asimismo, muchas veces estos archivos son difíciles de visualizar debido a la enorme cantidad de datos que puede tener. Es por esto que existen herramientas que permiten gestionar este tipo de tareas y facilitan la detección de actividades anómalas.
Los ataques de inyección SQL también son cosa común para muchos servidores que alojan sitios web. Una de las formas de prevenir este tipo de ataques es visualizando los intentos de inyección en tiempo y forma a fin de tomar las medidas necesarias antes de que el incidente ocurra. En la siguiente captura puede visualizarse el archivo log de un servidor Apache:
En la imagen puede contemplarse que se trata de pruebas sobre index.php intentando realizar la inyección sobre el parámetro id. En caso de que fuera vulnerado el servidor, esta bitácora permite conocer cuál fue el parámetro inyectado y de qué forma se comprometió el sistema. De aquí en adelante se deben llevar a cabo las acciones necesarias para remediar la situación.
En el caso de un usuario: ¿cómo verificar si su sistema ha sido comprometido?
Los sistemas de los usuarios también pueden ser comprometidos. Muchos ciberdelincuentes comprometen sistemas de usuarios hogareños para utilizar de forma remota sus computadoras con fines más complejos, que comprenden desde ataques de denegación de servicio distribuido hasta incluso el robo de su información personal, entre otros. En este escenario existen diversas formas de verificar si el sistema ha sido comprometido, siendo alguna de ellas más complejas que otras.
En el caso de un sistema Windows, una de las formas de detectar si existió un conjunto de tareas realizado por algún ciberdelincuente es a través del visor de eventos. Esta característica que posee el sistema operativo permite visualizar los eventos y acciones ocurridos en el mismo. Se clasifican principalmente en 3 categorías: Eventos de aplicación, eventos de sistema y eventos de seguridad. Cada categoría contiene diferentes tipos de sucesos acorde a su clasificación. Un dato para señalar es que el nivel de auditoría puede configurarse desde las directivas locales que provee el sistema operativo. De esta forma se tendrá mayor precisión en la auditoría de los procesos.
En el siguiente ejemplo puede observarse el visor de eventos de Windows XP:
Viendo las propiedades de un evento particular puede visualizarse el intento de inicio de sesión:
Tal como puede observarse en la captura, en el sistema ocurrió una serie de intentos de inicio de sesión en un período de tiempo muy acotado. Esto sugiere claramente que se realizó un ataque de fuerza bruta sobre el protocolo de autenticación del sistema.
Lo explicado anteriormente plantea algunas de las alternativas que proveen los diferentes sistemas operativos para recolectar la evidencia necesaria en el caso de un intento de intrusión o el éxito de la misma. Existen otros sistemas operativos que también tienen mecanismos de controles similares. Incluso existen herramientas que pueden instalarse para aumentar aún más el nivel de precisión en la bitácora de eventos.
Otro punto que vale la pena destacar, es que en muchos casos los eventos son borrados por quien realizó la intrusión. Sin embargo, esto no siempre ocurre por lo que es recomendable prestar atención a este tipo de información, sobre todo en el caso de contar con un servidor expuesto a Internet.
El concepto de prevención debe complementarse con la auditoría de forma periódica. De esta manera es posible gestionar la seguridad y estar preparados para cualquier incidente que ocurra.
Fernando Catoira
Analista de Seguridad