De todas formas el concepto de virus es muy amplio, ya que abarca a una gran variedad de elementos dañinos para un sistema, como por ejemplo troyanos, gusanos, hoaxes, etc., y sus métodos de propagación también pueden llegar a ser innumerables: enlaces o URLs maliciosas, adjuntos en los correos electrónicos, solapados a otros ejecutables, aprovechamiento de vulnerabilidades, etc.
De todo el malware conocido, el único que presenta un peligro real para los sistemas Linux son los llamados rootkits o encubridores, que viene a ser un tipo de software que tiene la finalidad de permanecer oculto y permitir a un intruso (uno vez que ya ha atacado un sistema) volver a acceder posteriormente.
Por ejemplo, un atacante ha podido aprovechar una vulnerabilidad de Apache y a través de un exploit alcanzar privilegios de root. Con estos privilegios, el atacante ha podido instalar un rootkit con el que se garantizará futuros accesos, ya que dicha vulnerabilidad podrá ser corregida en cualquier momento.
Un rootkit puede llegar a instalarse en el kernel (a través de un nuevo código, un módulo, etc.) o bien dentro de una aplicación normal del sistema (un atacante puede eliminar el comando mount y reemplazarlo por otro mount con la misma funcionalidad, pero que además, contenga el backdoor).
Existe una herramienta open source llamada Rootkit Hunter, también conocido como RKhunter, el cual permite detectar rootkits, backdoors y exploits locales. Para ello Rkhunter emplea distintas técnicas de escaneo:
- Algoritmo MD5: construye inicialmente, una base de datos con los MD5 de los principales binarios del sistema (bash, cp, mount, etc.). De esta forma, cada vez que realice un escaneo podrá comparar los valores MD5 de dichos archivos con los ya existentes en su base de datos, con el objetivo de poder detectar posibles alteraciones.
- Archivos por defecto: escanea una serie de archivos y directorios que pueden ser utilizados por los rootkits.
- Archivos ocultos: rastrea la existencia de ficheros ocultos en lugares que normalmente no deben estar.
- Procesos existentes: compara los procesos obtenidos por el comando 'ps' con los realmente existentes dentro del directorio /proc.
- Permisos de los archivos: comprueba que los permisos de los principales archivos del sistema no hayan sido modificados.
- Módulos del kernel: verifica los módulos cargados en el kernel.
- Puertos abiertos: escanea los puertos abiertos.
No comments:
Post a Comment