Generalidades
Linux Malware Detect (LMD) es un escáner de malware para Linux liberado bajo la licencia GNU GPLv2, que está diseñado en torno a las amenazas que enfrentan en común los entornos hospedados. Este utiliza los datos de las amenazas de los sistemas de red de detección de intrusos para extraer el malware que está siendo utilizado activamente en los ataques y genera firmas para la detección. Adicionalmente, los datos de las amenazas también se derivan de envíos de los usuarios con la característica de Comprobación LMD y desde recursos de la comunidad malware. Las firmas que utiliza LMD son hashes MD5 de archivos y los coincidencias de parones hexadecimales, también se pueden exportar fácilmente a cualquier número de herramientas de detección, tales como ClamAV.
El panorama de amenazas en entornos de hospedaje compartido es distinto del manejado por las suites estándar de detección de virus, ya que dichos productos son principalmente para la detección de troyanos a nivel del sistema operativo, rootkits y virus que infectan archivos tradicionales, pero fallan en la detección de la variedad cada vez mayor de programas maliciosos a nivel de las cuentas de los usuarios que sirven como una plataforma de ataque.
Características:
- Detección de hash MD5 de archivos para la detección rápida e identificación de amenazas
- Análisis de patrones de base hexadecimal para la identificación de variantes de las amenazas
- Componente de análisis estadístico para la detección de amenazas ofuscado (por ejemplo: base64)
- Detección integrada del ClamAV para usarlo como motor de escáner para mejorar el rendimiento
- Actualización de firma integrada con la función -u |-update
- Actualización de versión integrada con la función -d |-update-ver
- Opción de Escanear Recientes para analizar sólo los archivos que se han añadido / cambiado en X días
- Opción de Escanear Todo para el análisis basado en la ruta completa
- Opción de Verificación para cargar el malware sospechoso hacia rfxn.com para su revisión / hashing
- Sistema de información completo para ver los resultados del análisis actual y el anterior
- Cola de cuarentena que almacena las amenazas de una forma segura, sin los permisos
- Opción de cuarentena por lotes para poner en cuarentena los resultados de un análisis actual o pasado
- Opción de Restauración de Cuarentena para restaurar los archivos a la ruta original, con su propietario y permisos correspondientes
- Opción de Suspención de Cuenta en Cuarentena para la suspender o revocar del Shell a usuarios del cPanel
- Reglas de Limpieza para intentar la eliminación de cadenas de inyección de malware
- Opción de Limpieza por Lotes para intentar la limpieza por informes de análisis previos
- Reglas de Limpieza para eliminar malware que utiliza base64 y gzinflate (malware inyectado por base64)
- Cron diario basado en la exploración de todos los cambios en las últimas 24 horas en los directorios Home de los usuarios
- Script del cron diario compatible con los sistemas HR, Cpanel y Ensim
- Rastreo de archivos en tiempo real basado en “Kernel inotify” para los archivos creados / modificados / movidos
- Monitor del Kernel inotify que puede tomar la ruta de datos del STDIN o ARCHIVO
- Monitor del Kernel inotify con característica conveniente para controlar a los usuarios del sistema
- Monitor del Kernel inotify puede ser restringido a una raíz html configurable por el usuario
- Monitor del Kernel inotify con límites dinámicos sysctl para un rendimiento óptimo
- Alerta de Kernel inotify a través de informes diarios y/o semanales opcionalmente
- E-mail de información después de la ejecución de análisis (manual y todos los días)
- Opciones para ignorar ubicaciones (patch), extensiones y la firmas
- Opción de escáner en segundo plano para las operaciones de exploración sin supervisión
- Registro detallado y salida de todas las acciones
Fuente de datos:
La diferencia clave con LMD es que no sólo sirve para la detección de malware basados en firmas / hashes que alguien genera sino que se trata de un proyecto global que activamente hace seguimiento de las amenazas y genera firmas basadas en dichas amenazas del mundo real que están circulando actualmente.
Hay cuatro fuentes principales de datos de malware que se utiliza para generar firmas LMD:
- IPS de la Red Eje: La red dispone de más de 35.000 sitios web, y como tal recibe una gran cantidad de abusos diarios, que se registran en la red EDGE del creador de LMD (rfxn.com). Los eventos IPS se procesan para extraer los url del malware, decodificar cargas POST y los datos abusivos codificados en base64/gzip y, finalmente, que el malware sea recuperado, examinado, clasificado y generadas las firmas en cada caso. La gran mayoría de las firmas LMD se han derivado de datos que se extrajeron de IPS.
- Datos de la Comunidad: Los datos son agregados desde múltiples sitios web de comunidades de malware, tales como clean-mx y malwaredomainlist luego se procesan para obtener nuevo malware su revisión, clasificación y luego generar las firmas.
- ClamAV: Las firmas de detección de hexadecimal y MD5 de ClamAV se monitorean para conocer las actualizaciones relevantes que se aplican al grupo de usuarios objetivo de LMD y se añaden al proyecto, según proceda. Hasta la fecha se han obtenido cerca de 400 firmas desde ClamAV mientras que el proyecto LMD ha contribuido hacia ClamAV con la presentación de más de 1.100 firmas y lo sigue haciendo en forma permanente.
- Envío de usuario: LMD tiene una función de emisión de verificaciones que permite a los usuarios enviar programas maliciosos sospechosos para su revisión, se ha convertido en una característica muy popular y genera una media de unos 30 a 50 envíos semanales.
Actualizaciones de firmas:
Las firmas de LMD se actualizan por lo general una vez al día o con mayor frecuencia en función de los datos de las amenazas entrantes de la función de comprobación LMD, la extracción de IPS malware y otras fuentes. La actualización de las firmas en las instalaciones de LMD se realiza diariamente a través de la ejecución del script cron.daily con la opción -update, que además se puede ejecutar manualmente en cualquier momento.
Vale decir que está disponible un canal RSS para el seguimiento de las actualizaciones de amenazas de malware: http://www.rfxn.com/api/lmd
Amenazas detectadas:
LMD 1.4.0 detecta a la fecha un total de 7.241 (5.393 MD5 / 1848 HEX) firmas, de las cuales las más comunes detectadas son:
base64.inject.unclassed perl.ircbot.xscan bin.dccserv.irsexxy perl.mailer.yellsoft
bin.fakeproc.Xnuxer perl.shell.cbLorD bin.ircbot.nbot perl.shell.cgitelnet
bin.ircbot.php3 php.cmdshell.c100 bin.ircbot.unclassed php.cmdshell.c99
bin.pktflood.ABC123 php.cmdshell.cih bin.pktflood.osf php.cmdshell.egyspider
bin.trojan.linuxsmalli php.cmdshell.fx29 c.ircbot.tsunami php.cmdshell.ItsmYarD
exp.linux.rstb php.cmdshell.Ketemu exp.linux.unclassed php.cmdshell.N3tshell
exp.setuid0.unclassed php.cmdshell.r57 gzbase64.inject php.cmdshell.unclassed
html.phishing.auc61 php.defash.buno html.phishing.hsbc php.exe.globals
perl.connback.DataCha0s php.include.remote perl.connback.N2 php.ircbot.InsideTeam
perl.cpanel.cpwrap php.ircbot.lolwut perl.ircbot.atrixteam php.ircbot.sniper
perl.ircbot.bRuNo php.ircbot.vj_denie perl.ircbot.Clx php.mailer.10hack
perl.ircbot.devil php.mailer.bombam perl.ircbot.fx29 php.mailer.PostMan
perl.ircbot.magnum php.phishing.AliKay perl.ircbot.oldwolf php.phishing.mrbrain
perl.ircbot.putr4XtReme php.phishing.ReZulT perl.ircbot.rafflesia php.pktflood.oey
perl.ircbot.UberCracker php.shell.rc99 perl.ircbot.xdh php.shell.shellcomm
Monitoreo en Tiempo Real:
La característica de monitoreo inotify está diseñada para controlar las ubicaciones / usuarios en tiempo real por las operaciones de crear / modificar / cambiar archivos. Esta opción requiere un núcleo que soporte inotify_watch (CONFIG_INOTIFY) que se encuentra en los núcleos 2.6.13 y 5 + CentOS / RHEL por defecto.
Hay tres modos para ejecutar el monitor y se refieren a lo que será objeto del seguimiento, que son: USUARIOS | RUTAS | ARCHIVO.
Ejemplo: maldet — monitor users
Ejemplo: maldet — monitor /root /monitor_paths
Ejemplo: maldet — monitor /home/juan, /home/jose
Las opciones se desglosan como sigue:
USUARIOS: La opción users tomará los directorios home de todos los usuarios del sistema que están por encima de lo configurado para inotify_minuid y los monitoreará. Si se ha configurado inotify_webdir entonces solo se monotorearán los directorios web de los usuarios, si es que existen.
RUTAS: Una lista de rutas separadas por comas a ser monitoreadas
ARCHIVO: Archivo con una lista de archivos separados por líneas a ser monitoreados
Una vez que comience maldet en modo monitor, se preprocesarán las rutas basadas en la opción especificada seguido por el inicio del proceso de inotify. La puesta en marcha del proceso de inotify puede ser una tarea que consuma mucho tiempo, ya que necesita configurar un gancho de monitoreo para todos los archivos en las rutas a controlar. Aunque el proceso de inicio puede afectar la carga de forma temporal, una vez iniciado el proceso este mantendrá todos los sus recursos dentro de la memoria del kernel y el espacio de usuario tendrá una huella muy pequeña en la memoria o uso de la CPU.
Instalación
Ingresar por SSH y ejecutar:
cd /usr/local/src
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xvzf maldetect-current.tar.gz
cd maldetect-*
./install.sh
Esto instalará el LMD y mostrará algo como
Linux Malware Detect v1.4.2-1
(C) 2002-2011, R-fx Networks <proj@r-fx.org>
(C) 2013, Ryan MacDonald <ryan@r-fx.org>
inotifywait (C) 2007, Rohan McGovern <rohan@mcgovern.id.au>
This program may be freely redistributed under the terms of the GNU GPL
installation completed to /usr/local/maldetect
config file: /usr/local/maldetect/conf.maldet
exec file: /usr/local/maldetect/maldet
exec link: /usr/local/sbin/maldet
exec link: /usr/local/sbin/lmd
cron.daily: /etc/cron.daily/maldet
maldet(5073): {sigup} performing signature update check...
maldet(5073): {sigup} local signature set is version 2010122710638
maldet(5073): {sigup} latest signature set already installed
Para configurarlo se debe ejecutar:
nano /usr/local/maldetect/conf.maldet
Buscar las siguientes variables y colocar los valores indicados:
email_alert=1
email_subj="Alerta de Analisis de Malware en $(hostname)"
email_addr="hostmaster@sudominio.com"
Para eliminar Falsos Positivos (Ignorar):
Hay cuatro archivos para ignorar los falsos positivos y se descomponen de la siguiente manera:
1. Excluir Rutas:
/usr/local/maldetect/ignore_paths
En este archivo se colocan en cada línea las rutas que se van a excluir de los resultados de búsqueda
Ejemplo:
/home/usuario/public_html/cgi-bin
2. Excluir Extensiones de Archivos:
/usr/local/maldetect/ignore_file_ext
En este archivo se colocan en cada línea las extensiones que se van a excluir de los resultados de búsqueda
Ejemplo:
.js
.css
3. Excluir Firmas:
/usr/local/maldetect/ignore_sigs
En este archivo se colocan en cada línea las firmas que se van a excluir de los resultados de búsqueda
Ejemplo:
base64.inject.unclassed
4. Excluir Rutas Regexp:
/usr/local/maldetect/ignore_inotify
En este archivo se colocan en cada línea las rutas regexp que se van a excluir del monitoreo inotify
Ejemplo:
^/home/user$
^/var/tmp/#sql_.*\.MYD$
Línea de Comandos:
Una vez LMD está instalado se puede ejecutar a través del comando ‘maldet’, la opción ‘– help’
ofrece un resumen detallado de las opciones de uso:
-u, –update
Actualiza las firmas de detección de malware desde rfxn.com
-m, –monitor USUARIOS|RUTAS|ARCHIVO
Ejecuta maldet con el monitoreo del kernel inotify al crear / modificar archivos
Si se han especificado USUARIOS (users), monitorea los directorios home para usuarios con UID > 500
Si se especifica un ARCHIVO, las rutas serán extraídas del archivo correspondiente
Si las rutas se especifican, deben estar separadas por comas, sin comodines!
Ej: maldet –monitor users
Ej: maldet –monitor /root/monitor_paths
Ej: maldet –monitor /home/mike,/home/ashton
-k, –kill
Cancelar el servicio de monitoreo inotify
-r, –scan-recent RUTA DIAS
Explorar los archivos creados / modificados en los últimos X DIAS (por defecto: 7d, comodín:?)
Ej: maldet -r /home/?/public_html 2
-a, –scan-all RUTA
Analizar todos los archivos en la RUTA (por defecto: /home, comodín:?)
Ej: maldet -a /home/?/public_html
-c, –checkout ARCHIVO
Cargar el malware sospechoso hacia rfxn.com para su revisión y hashing en firmas
-l, –log
Ver los eventos del archivo de registros de maldet
-e, –report SCANID email
Ver el informe de análisis de exploración más reciente o de un SCANID específico y, opcionalmente, enviar por e-mail el informe suministrando una dirección de correo electrónico
Ej: maldet –report
Ej: maldet –report list
Ej: maldet –report 050910-1534.21135
Ej: maldet –report SCANID usuario@dominio.com
-s, –restore FILE|SCANID
Restaurar el archivo de la cola de cuarentena a la ruta original o restaurar todos los elementos de un SCANID específico
Ej: maldet –restore /usr/local/maldetect/quarantine/config.php.23754
Ej: maldet –restore 050910-1534.21135
-q, –quarantine SCANID
Coloca en cuarentena todo el malware del informe SCANID
Ej: maldet –quarantine 050910-1534.21135
-n, –clean SCANID
Trata de limpiar y restaurar los malware del informe SCANID
Ej: maldet –clean 050910-1534.21135
-p, –purge
Borra los registros, la cola de cuarentena, la sesión y los datos temporales.
Ver http://www.rfxn.com/appdocs/README.maldetect para obtener más detalles.