Durante un ataque web shell, un ciberdelincuente inyecta un archivo malicioso en el directorio de un servidor web de destino y luego ejecuta ese archivo desde su navegador web.
Después de lanzar un ataque web shell exitoso, los ciberdelincuentes podrían obtener acceso a recursos confidenciales, reclutar el sistema de destino en una red de bots o crear vías para inyecciones de malware o ransomware.
Si no has implementado estrategias de defensa contra esta ciberamenaza, tus sistemas corren un alto riesgo de explotación. Según Microsoft, los ataques de shell web mensuales se han duplicado en el último año.
Aquí te contamos qué son los ataques web shell, cómo funcionan y cómo detectarlos y bloquearlos.
Indice
¿Qué es una Web Shell?
Una web shell es un script malicioso escrito en cualquiera de los lenguajes de aplicaciones web populares: PHP, JSP o ASP. Se instalan en un sistema operativo de servidor web para facilitar la administración remota.
Cuando se arma, un shell web podría permitir a los actores de amenazas modificar archivos e incluso acceder al directorio raíz del servidor web objetivo.
Tanto los servidores con acceso a Internet como los que no lo están (como los servidores de alojamiento de recursos) podrían ser víctimas de ataques web shell.
Los ataques web shell son una táctica conveniente de ciberataque porque su ejecución no requiere programas adicionales. Un canal de comunicación se puede lograr simplemente a través del protocolo HTTP en los navegadores web; por eso es tan importante dar preferencia a los protocolos HTTPS.
Los actores de amenazas usan shells web para una variedad de escenarios:
- Exfiltración y recolección de información confidencial y credenciales.
- Cargar malware, que potencialmente puede crear un abrevadero para una mayor infección y escaneo de otras víctimas.
- Desfigurar sitios web modificando o agregando archivos.
Un shell web puede servir como punto de retransmisión para emitir comandos a hosts ubicados dentro de la red, sin acceso directo a Internet. Los shells web también pueden participar en una infraestructura de comando y control; por ejemplo, se puede usar para comprometer un host e incorporarlo a una red de bots . Los atacantes pueden infectar otros sistemas en la red con el shell web para comprometer recursos adicionales.
Los actores de amenazas utilizan una amplia gama de vulnerabilidades y exploits de aplicaciones web para entregar shells web, incluida la inyección de SQL y las secuencias de comandos entre sitios (XSS). Los actores también explotan vulnerabilidades en servicios y aplicaciones, vulnerabilidades de procesamiento de archivos, interfaces de administración expuestas, así como vulnerabilidades de inclusión de archivos locales (LFI) y de inclusión de archivos remotos (RFI).
Ataques Web Shell en aumento
Microsoft ha identificado un aumento en los ataques de shell web por parte de varios grupos, que afectan tanto a organizaciones públicas como privadas. Estos incluyen equipos de amenazas persistentes avanzadas (APT) que utilizan shells web para afianzarse en las redes de destino.
Uno de esos ataques, descubierto por el equipo de detección y respuesta de Microsoft, involucró shells web instalados en varias carpetas en el servidor mal configurado de una organización, lo que permitió al atacante moverse lateralmente e instalar shells web en otros sistemas. Una puerta trasera DLL registrada como un servicio permitió al atacante persistir en el servidor de correo electrónico, descargar cargas útiles de malware y enviar comandos en forma de correos electrónicos.
Si un shell web se implanta con éxito en un servidor web, permite que un atacante remoto ejecute comandos maliciosos y robe datos. Los grupos de piratas informáticos que han utilizado shells web en sus ataques incluyen el grupo Gallium y el grupo Lazarus.
Cómo funciona
Los ataques web shell tienen varias etapas: primero, el atacante crea un mecanismo persistente en el servidor que permite el acceso remoto. Luego, intentan aumentar los privilegios y aprovechar la puerta trasera para atacar a la organización o utilizar sus recursos para actividades delictivas.
Los atacantes cibernéticos primero ubican servidores con exposiciones que son vulnerables a ataques de shell web a través de un software de escaneo, como Shodan.io.
Shodan muestra todos los dispositivos conectados a Internet, incluidos los servidores web y los puntos finales, que podrían servir como vectores de ataque a los servidores web ocultos.
Una vez que se descubre una vulnerabilidad, los atacantes cibernéticos lanzan inmediatamente un ataque web shell antes de que se instale un parche para la exposición.
La explotación de la vulnerabilidad CVE-2020-5902 es un ejemplo de la rapidez con la que los ciberdelincuentes aprovechan las exposiciones que facilitan las inyecciones de shell web.
El 30 de junio de 2020, F5 Networks lanzó un parche para su interfaz de usuario de gestión de tráfico (TMUI). La vulnerabilidad facilitó la ejecución remota de código (RCE), un tipo de ataque cibernético que involucra la inyección remota de códigos maliciosos en un sistema objetivo.
Después de publicar la vulnerabilidad el 30 de junio, el 4 de julio (solo cuatro días después), se descubrió un código de explotación que se usaba para abusar de la exposición.
Veamos las distintas etapas.
Acceso remoto persistente
Los scripts de shell web proporcionan una puerta trasera que permite a los atacantes acceder de forma remota a un servidor expuesto. Los atacantes persistentes no tienen que explotar una nueva vulnerabilidad para cada actividad maliciosa. Algunos atacantes incluso corrigen la vulnerabilidad que explotan para evitar que otros hagan lo mismo y evitar ser detectados.
Algunos shells web utilizan técnicas como la autenticación de contraseña para garantizar que solo los atacantes específicos puedan acceder a ellos. Los shells web generalmente se ofuscan, incluido el código que evita que los motores de búsqueda incluyan en la lista negra el sitio web donde está instalado el shell.
Escalada de privilegios
Los shells web normalmente se ejecutan con permisos de usuario, que pueden ser limitados. Los atacantes pueden aumentar los privilegios a través de shells web explotando las vulnerabilidades del sistema para adquirir privilegios de raíz. El acceso a la cuenta raíz permite a los atacantes realizar casi cualquier acción: pueden instalar software, cambiar permisos, agregar o eliminar usuarios, leer correos electrónicos, robar contraseñas, etc.
Ataques pivotantes y de lanzamiento
Los atacantes pueden usar shells web para pasar a objetivos adicionales tanto dentro como fuera de la red. El proceso de rastrear el tráfico de la red para identificar hosts activos, firewalls o enrutadores (enumeración) puede llevar semanas, durante las cuales los atacantes mantendrán un perfil bajo para evitar ser detectados.
Un atacante que persiste con éxito en una red se moverá con paciencia, posiblemente incluso utilizando un sistema comprometido para atacar a otros objetivos. Esto permite que el atacante permanezca en el anonimato, y pasar por varios sistemas puede hacer que sea prácticamente imposible rastrear los ataques hasta la fuente.
Pastoreo de bots
Los shells web se pueden usar para conectar servidores a una red de bots (una red de sistemas controlados por el atacante). Los servidores afectados ejecutan los comandos enviados por los atacantes a través de un servidor de comando y control conectado al shell web.
Esta es una técnica común para los ataques DDoS que requieren un gran ancho de banda. Los atacantes no se dirigen directamente al sistema en el que instalaron el shell web, sino que simplemente lo explotan por sus recursos para atacar objetivos más valiosos.
Ejemplo
El reciente gran ataque web shell que acaparó los titulares fue ejecutado por el grupo chino de ciberdelincuentes, Hafnium, en marzo de 2021. El web shell involucrado en el ataque era un malware conocido como China Chopper que se inyectó a través de una vulnerabilidad crítica en los servidores de Microsoft Exchange.
Lo que hizo que el shell web de China Chopper fuera particularmente venenoso fue que la puerta trasera que estableció en el sistema infectado permaneció, incluso después de que se corrigió la vulnerabilidad del servidor.
Los oponentes eligen con frecuencia shells web como China Chopper, WSO, C99 y B374K. Sin embargo, esto es solo una pequeña cantidad de shells web utilizadas.
- WSO: significa «Web Shell by orb» y puede mostrarse como una página de error que contiene un formulario de inicio de sesión oculto.
- C99: una versión de shell de WSO con características adicionales. Puede mostrar las medidas de seguridad del servidor y contiene una función de eliminación automática.
- B374K: un shell web basado en PHP con características comunes, como la visualización de procesos y la ejecución de comandos.
Cómo detectarlo
Los shells web son difíciles de detectar porque pueden ocultarse dentro de archivos aparentemente inocuos.
Por ejemplo, se podría incrustar un script de shell web en una foto y cargarlo en el servidor web de destino. Cuando se analiza esta carga, no se detecta nada inusual; después de todo, es solo una foto.
Pero debido a que los servidores web hacen referencia a los archivos multimedia para la ejecución del lado del servidor, la foto se puede solicitar desde un navegador web que luego activa su codificación maliciosa.
Para superar este desafío, se deben implementar controles de seguridad en la interfaz de los servidores conectados a Internet e Internet para analizar todas las escrituras de archivos de script y las ejecuciones de procesos.
Esta capa de protección se puede lograr a través de Defender for Endpoints de Microsoft.
Otro método con una precisión impresionante es comparar archivos sospechosos de corrupción con una base de datos de sintaxis de shell web conocida. Esto se puede lograr con Shell Detector.
¿Por qué Web Shell es difícil de detectar?
Es difícil detectar el shell web instalado en el servidor del sitio web y muchas razones contribuyen a esta dificultad.
- Como el shell web está escrito en varios lenguajes de programación, existen numerosos comandos de ejecución arbitrarios y entradas de atacantes, lo que dificulta su detección. El pirata informático puede ocultar el código de instrucción en cualquier parámetro dentro de la interacción del servidor web/navegador.
- El código de shell web contiene pocos contextos, por lo que es difícil localizar el código malicioso.
- El principal inconveniente es que estos códigos permanecen inactivos hasta que se ejecuta el pirata informático, lo que lo hace casi invisible. Como estos códigos no pueden ejecutarse de forma independiente, parecen ser código simple mientras se cargan en el servidor web. La amenaza que representa el código web shell depende de la intención del hacker.
- La manera fácil de ocultar y cargar el shell web es adjuntarlo con los formatos de archivo no ejecutables, como archivos multimedia, incluidas fotos, videos, archivos de audio, etc. Durante la carga de archivos multimedia, los servidores web escanean esos archivos para ejecutar el código del lado del servidor. Por lo tanto, el archivo multimedia parece normal en el proceso de escaneo y se vuelve dañino solo después de la ejecución de la solicitud del navegador web.
Cómo bloquear inyecciones de Web Shell
Es mucho más fácil abordar las vulnerabilidades que facilitan la inyección de shell web que interceptar los ataques de shell web.
Se deben usar los siguientes controles y herramientas de seguridad sugeridos para ubicar y remediar todos los posibles puntos de inyección de shell web en su ecosistema de TI.
Mantente actualizado con los últimos parches de seguridad
Las vulnerabilidades de seguridad son las vías más comunes para los ataques web shell. Para bloquear estos puntos de entrada, asegúrate de mantener todas las aplicaciones web, los sistemas de administración de contenido, el software del servidor web y el software de terceros actualizados con los parches de seguridad más recientes.
Consulta periódicamente el directorio de vulnerabilidades y exposiciones comunes para mantenerte informado sobre las últimas exposiciones que podrían afectar a tus soluciones de software.
Deshabilitar las funciones del servidor web innecesarias
Si se inyecta un shell web, su ejecución podría bloquearse si las funciones que se comunican con los scripts del servidor web están deshabilitadas en php.ini.
Tales funciones del servidor web incluyen:
- ejecutivo ()
- evaluar()
- shell _exec()
- afirmar()
Modificar los Nombres de los Directorios Sensibles
Para evitar la carga de archivos de imágenes corruptos, lo ideal es que los directorios que facilitan dichas cargas estén completamente deshabilitados.
Si es necesario un mecanismo de carga de este tipo, los nombres predeterminados de estos directorios confidenciales deben modificarse para que sean más difíciles de descubrir. Solo los usuarios privilegiados deben tener permiso para acceder a estas modificaciones para mitigar los ataques de amenazas internas.
Además de esto, especifica un filtro para los tipos de archivos permitidos que se pueden cargar en tu servidor web.
Deshabilita todos los complementos de WordPress innecesarios
Los complementos de WordPress son vectores de ataque comunes porque cualquiera puede desarrollarlos, incluso los ciberdelincuentes.
Para proteger estos vectores, asegúrate de instalar solo complementos de desarrolladores confiables y desinstala todos los complementos innecesarios.
Implementar un cortafuegos
Un firewall de aplicaciones web (WAF) está diseñado para evitar que los shells web y las cargas útiles maliciosas se inyecten en un ecosistema al filtrar todo el tráfico de la red.
Al igual que el software antivirus, es importante mantener tu firewall actualizado con los últimos parches de ciberseguridad.
Implementar la monitorización de integridad de archivos
Una solución de monitorización de integridad de archivos comparará las actualizaciones de directorio con las marcas de tiempo de los scripts de directorio limpios. Si se detecta una discrepancia, la instalación solicitada en el directorio de código del servidor web de destino se bloqueará o activará una alerta de seguridad.
Supervisa tu superficie de ataque
Una solución de monitorización de superficie de ataque completa los escaneos de vulnerabilidad de toda la superficie de ataque, tanto internamente como en toda la red del proveedor. Esto permite a los equipos de seguridad remediar la exposición antes de que los atacantes cibernéticos los descubran y los exploten.
Permisos de aplicaciones web
Al definir permisos para aplicaciones web, es importante emplear el concepto de privilegio mínimo. El principio principal detrás de este concepto es proporcionar a los usuarios el mínimo de privilegios necesarios para desempeñar su función. El objetivo es garantizar que cada usuario no tenga privilegios que no debería tener y que las cuentas comprometidas estén restringidas en sus acciones.
El principio de privilegios mínimos puede ayudar a evitar que los actores de amenazas carguen un shell web en aplicaciones vulnerables. Puedes configurarlo al no permitir que las aplicaciones web escriban directamente en un directorio accesible desde la web o modifiquen el código accesible desde la web. De esta manera, el servidor impide que el actor acceda al directorio accesible desde la web.
Detección y respuesta de punto final (EDR)
Ciertas soluciones de detección y respuesta de punto final (EDR) y registro de host pueden ayudar a proteger contra ataques de shell web. Estas soluciones monitorean las llamadas al sistema y procesan anomalías en el linaje y usan patrones de comportamiento malicioso para detectar shells web.
Las soluciones EDR con capacidades de protección de shell web pueden monitorizar todos los procesos en los puntos finales, incluidas las llamadas al sistema invocadas. Cuando los shells web provocan un comportamiento anormal dentro de un proceso de servidor web, la solución lo reconoce. Por ejemplo, la mayoría de los servidores web no suelen ejecutar la utilidad ipconfig. Esta es una técnica de reconocimiento común impulsada por shells web, que se puede reconocer a través del análisis de comportamiento.