24 de febrero de 2022

Detección de vulnerabilidades de Log4J (CVE-2021-44228)

Por Elizabeth Fichtner
Análisis de amenazas

Si estás leyendo esto, supongo que ya has oído hablar de CVE-2021-44228, la vulnerabilidad de ejecución remota de código (RCE) que afecta a Apache Log4j, la biblioteca de registro de Java que gran parte de Internet utiliza en sus servidores web. Aunque en muchos blogs y comentarios se han publicado métodos para determinar si tus servidores web o sitios web son vulnerables, hay poca información sobre cómo detectar fácilmente si tu servidor web ha sido realmente explotado e infectado. Pero primero, un breve resumen:

CVE-2021-44228 Apache Log4J RCE

  • En primer lugar, como dicen la mayoría de los expertos en Twitter y en seguridad: esta vulnerabilidad es grave. Muy grave. Muchos sitios web destacados utilizan este registrador.
  • RCE = Ejecución remota de código. El atacante puede ejecutar cualquier código (por ejemplo, malware) que desee en su servidor web enviando una solicitud web a su sitio web con nada más que una cadena «mágica» + un enlace al código que desea ejecutar.
  • Afecta al servidor web Apache que utiliza versiones vulnerables del registrador log4j (el módulo de registro de Java más popular para sitios web que ejecutan Java).
  • Versiones vulnerables: 2.0 - 2.14.1 (Se recomienda actualizar a la versión 2.17.0)

¿Alguien ha intentado atacar mi servidor web?

Un comportamiento típico que cabe esperar si un atacante se aprovecha de su servidor es la instalación de un nuevo webshell (malware de sitio web que otorga acceso de administrador al servidor a través de una interfaz de administración oculta). Apache ejecutaría comandos curl o wget para descargar el webshell u otro malware que quisieran instalar.

Afortunadamente, hay varias formas de detectar intentos de explotación mientras se supervisa el servidor para descubrir intentos de explotación anteriores:

  1. Revisa los registros de Apache para jndi:ldap, jndi:rmi o jndi:dns. Estas son las cadenas mágicas que hacen que el registrador se vuelva loco y siga o ejecute la URL que viene a continuación.
  2. Escanear /var/log con firmas de Yara que coinciden con algunos de estos indicadores.
  3. Analiza el servidor web en busca de webshells genéricos.
  4. Si tienes EDR en el servidor web, supervisa si hay comandos sospechosos como curl, wget o similares. Es probable que el código que intentan ejecutar primero tras la explotación haga que el sistema se comunique con el servidor de comando y control utilizando utilidades integradas como estas.

NOTA: Si el servidor es explotado por escáneres automatizados (los buenos están ejecutando estos), es posible que obtengas un indicador de explotación sin malware o webshells posteriores. Algunos escáneres de investigación explotan la vulnerabilidad y hacen que el sistema envíe un solo ping o solicitud DNS para informar al investigador de quién era vulnerable.

Socios de Datto: Componente RMM

Datto ha lanzado tanto un componente de « Datto RMM » para sus socios como un script comunitario para todos los proveedores de servicios de gestión (MSP) que les ayudará a aprovechar el poder y el alcance de su RMM, sin importar el proveedor, para identificar los sistemas que son potencialmente vulnerables y aquellos que podrían haber sido atacados. La herramienta también puede intentar proteger contra ataques posteriores mediante la aplicación de una solución alternativa conocida.

No dude en ponerse en contacto con nuestro equipo de expertos si necesita ayuda.

ACTUALIZACIÓN 22/12:

Durante la última semana hemos observado una gran actividad de escaneo por parte de escáneres de seguridad, una actividad de explotación a gran escala procedente del espacio IP ruso y ucraniano, y numerosas explotaciones de sistemas que van desde servidores Elastic hasta servicios web personalizados.

Hemos actualizado nuestro escáner de log4shells para incluir una mejor cobertura de los métodos de ofuscación y también hemos dejado de utilizar las opciones de mitigación, ahora obsoletas, que Apache recomendaba anteriormente. La variable de entorno LOG4J_FORMAT_MSG_NO_LOOKUPS o el argumento de línea de comandos log4j2.formatMsgNoLookups=True no detendrán muchos vectores de ataque.

Además, hemos ampliado el escáner para que revise todas las unidades (no solo las unidades del sistema o aquellas en las que está instalado log4j) y recomendamos ejecutarlo de nuevo si no lo ha hecho recientemente.

1. Busca cualquier archivo .jar que contenga el archivo JndiLookup.class problemático
2. Analiza el sistema en busca de archivos .log, tanto comprimidos como sin comprimir, que contengan indicadores de explotación relacionados con el exploit log4shells.
— La ruta principal en Linux y macOS es: /var/log
— Las rutas principales en Windows incluyen $env:SystemDrive\logs\, $env:SystemDrive\inetpub\, así como cualquier carpeta que contenga los términos java, log4j o apache.
3. También utiliza firmas Yara de código abierto para analizar los archivos de registro.

Debido a la gran cantidad de implementaciones de log4j integradas en diversos productos, no siempre es fácil encontrar la versión de la extensión log4j. La forma más sencilla es consultar el nombre del archivo o la carpeta del archivo .jar que se encuentra junto con JndiLookup.class, pero este no siempre está presente. Algunos productos requieren instrucciones específicas del proveedor.

ACTUALIZACIÓN 14/12:

Los ataques contra servidores Apache vulnerables continúan, pero esta vez con un nivel de ofuscación cada vez mayor. Parece que los atacantes están revisando las recomendaciones publicadas por los organismos de inteligencia y probando sus ataques contra ellas. Hemos actualizado significativamente nuestra extensión de detección de exploits log4shells/log4j para adelantarnos a ellos.

Las expresiones regulares son difíciles… pero potentes

La coincidencia de expresiones regulares en los registros puede ser difícil de lograr cuando los actores ocultan su actividad, pero sigue siendo uno de los métodos basados en el host más eficientes para detectar actividades de explotación como esta. Lo anterior muestra varias formas de ocultación que hemos observado y nuestra lógica de coincidencia las cubre todas. Nuestro enfoque con reglas como esta es tener una regla altamente ajustada y específica con pocos falsos positivos y otra regla más genérica que se esfuerza por minimizar los falsos negativos a costa de los falsos positivos. Nuestros cazadores generalmente se encargan de clasificar los resultados genéricos en nombre de nuestros clientes.

Además, el monitoreo genérico del comportamiento sigue siendo una capacidad principal que no requiere actualizaciones. Si Apache comienza a ejecutar nuevos comandos curl o wget (actividad estándar de la segunda etapa), se revisará.

Seguiremos monitoreando la evolución de la situación y recomendamos agregar la extensión log4j a sus escaneos programados.

ACTUALIZACIÓN 12/12:

Anoche, a última hora, trabajé con un par de nuestros socios y también actualizamos nuestra extensión para servidores Apache basados en Windows:

Un problema al escanear los registros en servidores Apache con Windows es que la carpeta de registros no es la estándar. Por lo tanto, nuestra extensión buscará en <em>[DriveLetter]</em>:\logs\ (también conocido como C:\logs\) primero, ya que es una carpeta común, pero si Apache/httpd están en ejecución y no se encuentra ahí, buscará en el resto del disco.

También se verifica si hay archivos .jar que importen el código vulnerable. Sugerencias de socios en el campo que buscan consultar una variable de entorno llamada log4j2.formatMsgNoLookups También hay que tener en cuenta que hay muchas implementaciones en las que este valor podría estar codificado directamente y no estar en una variable de entorno.

IMPORTANTE: Gran parte de la actividad que hemos observado proviene de escáneres automatizados (ya sean de investigadores o de otro tipo) que no incluyen un seguimiento de la entrega de webshells o malware, ni de sus efectos. La facilidad con la que se puede explotar este error puede hacer que este proceso genere muchas falsas alarmas; por lo tanto, instamos a todos los que busquen formas de explotarlo a que busquen otros indicadores de compromiso antes de declarar un incidente a partir de una coincidencia positiva en los registros. Por favor, contáctanos si tienes problemas con este paso.

¿Aún no eres socio de Datto? Ponte en contacto con nosotros para solicitar una demostración hoy mismo. 

Siguientes lecturas recomendadas