Blog

Detección de Web Shells en los registros de acceso HTTP

Aprenda a detectar web shells en los registros de acceso HTTP de la mano de los expertos en ciberseguridad de Anomali. Esta publicación explica las características del tráfico de web shell para ayudarlo a detectarlo.

Aaron Shelmire
September 3, 2015
Table of contents

Si bien la detección de intrusos se centra en gran medida en los mensajes de suplantación de identidad y los canales de comando y control del malware, una cantidad considerable de intrusiones se basan en compromisos del lado del servidor con el actor como cliente. Una de las principales herramientas de un buen actor es el webshell. Un webshell permite al actor tener esencialmente acceso por línea de comandos al servidor web a través de un script ejecutable colocado en el servidor web. Los actores suelen colocar estos scripts en el propio servidor web, ya sea después de un movimiento lateral desde otros hosts y cuentas de usuario comprometidos, o después de aprovechar una vulnerabilidad de inclusión remota de archivos o inclusión de archivos local en el propio servidor web. Otras veces, el actor puede encontrar un script útil dejado por un administrador web que le da la posibilidad de ejecutar comandos.

Los Web Shells se pueden crear en todos los lenguajes web programables, pero la mayoría de los webshells que he encontrado son scripts .asp, .aspx, .js, .jsp o .php. Los Web Shells pueden ser extremadamente simples y dependen de una pequeña cantidad de código para ejecutarse.

Web Shell Example

En este ejemplo, «pass» se sustituye por la contraseña que el actor utiliza para acceder al webshell.

Detección

La detección de webshells se puede realizar de muchas maneras diferentes. El método más sólido es establecer una política regular de administración de cambios para sus servidores web y supervisar cualquier cambio en el contenido que se puede servir con un sistema de integridad de archivos como Samhain o TripWire. Otro método consiste en ejecutar scripts en sus servidores web para buscar patrones de shell web comunes, como el «%eval (requestItem» anterior). Este método puede generar una cantidad sorprendente de falsos positivos en las aplicaciones web.

Direcciones IP maliciosas del lado del cliente

Este método parece sencillo al principio. En la práctica, los actores tienden a provenir de direcciones IP asignadas dinámicamente o de grupos de hosts VPN. La búsqueda de direcciones IP de clientes conocidas puede resultar muy eficaz en un flujo de trabajo de búsqueda, pero no son muy útiles para generar alertas.

Ubicación del script Web Shell del lado del servidor

La primera característica a tener en cuenta es que los actores suelen colocar el código de ejecución del shell web del lado del servidor en su propio archivo. El script web shell a menudo se encuentra en lo profundo de la estructura de directorios de los servidores web.

Un grupo de actores de APT específico tiende a asignar nombres a sus web shells con una combinación de dos extensiones (por ejemplo: deaspx.js o bonjs.asp). Algunos actores colocan sus webshells dentro de scripts ya existentes; en estos casos, los siguientes métodos de detección de webshells siguen siendo útiles.

Agentes de usuario

La mayoría de los programas diseñados para interactuar con los webshells permiten al actor cambiar el agente de usuario del que se informa. La mayoría de las veces el actor no lo hace. Un buen indicador del programa web shell de China Chopper es la entrada del agente de usuario «Mozilla/4.0+ (compatible; +MSIE+6.0; +Windows+NT+5.1)» en los registros de acceso de IIS. Muchos de los agentes de usuario que los actores introducen manualmente tienden a ser variaciones cortas del tema de Mozilla, a veces tan simples como «Mozilla/5.0».

Un método menos preciso para buscar accesos malintencionados es buscar agentes de usuario que sean un poco más antiguos y desactualizados, como «Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/31.0.1623.0 Safari/537.36". La mayoría de los actores que cambian los agentes de usuario predeterminados de sus herramientas por un valor válido tienden a configurarlo y olvidarlo durante algunos años. Este método puede ser propenso a generar falsos positivos, pero después de aprender cómo es el comportamiento normal de los clientes en sus propiedades web, es fácil darse cuenta de la actividad maliciosa.

Referente

Uno de los métodos más sencillos para buscar la actividad de Web Shell es buscar en los registros de acceso web el tráfico al que le falta una referencia. El tráfico de la mayoría de los programas de Web Shell no deja un referente.

Nuevos URIs

Si su organización cuenta con un sistema de supervisión sólido, buscar los URI a los que se ha accedido que no se hayan visto antes es una buena forma de detectar los web shells recién instalados.

Características del cliente

Se pueden descubrir otras características del tráfico típico de Web Shell de los atacantes mediante un análisis diario de los registros de acceso a la web. Una característica que destaca de los web shells es que el host del cliente a menudo accederá al script web shell y SOLO al script web shell. Esto es extremadamente extraño, ya que la mayoría de los URI suelen cargar contenido adicional del servidor web y, por lo general, se navega a través de una página vinculada.

A menudo, los actores malintencionados acceden al script web shell utilizando solo uno o dos hosts de clientes por día. Muchos hosts de clientes accederán a la mayoría de los URI válidos de un servidor web. Con frecuencia, puede descubrir web shells (y archivos de exfiltración por etapas) realizando un análisis de frecuencia en los registros de acceso web y evaluando cualquier URI a la que accedan solo uno o dos hosts de clientes.

En los casos en los que los actores malintencionados utilizan muchas direcciones IP del lado del cliente en un solo día, el análisis de frecuencia de los pares de URI y usuario-agente puede hacer que aparezcan web shells. Muchos clientes diferentes accederán a la mayoría de los URI legítimos de un servidor web, cada uno con su propio agente de usuario. Al buscar URI a los que solo acceden el menor número de agentes de usuario, a menudo puede encontrar un shell web malicioso.

Aaron Shelmire

Aaron Shelmire is the former Principal Threat Researcher at Anomali.

Propel your mission with amplified visibility, analytics, and AI.

Learn how Anomali can help you cost-effectively improve your security posture.