Vulnerabilidades de seguridad: Cómo los atacantes se entran y se propagan por tu red
Imagina este escenario:
Corres al supermercado local para comprar un bocadillo rápido y beber entre reuniones en un día ajetreado. En el parqueadero, dejas la cartera en el asiento trasero, pero recuerdas pulsar el mando para cerrar el auto nuevo.
Resulta que tu modelo de auto tiene un fallo de software donde el mando remoto solo bloquea las dos puertas delanteras, pero no las dos traseras. Así que, mientras estás en la tienda, un ladrón se da cuenta de la cartera y prueba por la puerta trasera. Para su grata sorpresa, la puerta se abre y tienen acceso a tu cartera.
Ese escenario es la historia de una vulnerabilidad de seguridad en miniatura. El fallo era pequeño y, por sí solo, no hacía nada en absoluto. Se convirtió en un problema en cuanto alguien se dio cuenta de lo que le daba acceso.
El software funciona igual. Un fallo le gana tiempo al atacante en función del resultado que ofrece, y ese resultado moldea cada movimiento que sigue.
Los atacantes tratan un exploit como una línea de salida. Detrás, encadenan un conjunto de pasos previsibles: encontrar el fallo, ejecutar código que controlan, tomar el control de la máquina y expandir desde ahí. Ahora ejecutan esa cadena a velocidad de máquina, y la automatización sigue reduciendo la brecha entre un primer exploit y un problema a nivel de red.
Puedes seguir la cadena de ataque desde el punto de vista del atacante, desde la primera debilidad hasta el objetivo final, para que los defensores puedan ver dónde romperla.
¿Qué le da un exploit exitoso a un atacante?
Las vulnerabilidades se presentan en tres tipos principales. Un fallo puede estar en el código, en la forma en que se configura un sistema, o en la capa de identidad y usuario. Sea cual sea el tipo en el que empiece, un exploit exitoso suele conducir a uno o más resultados.
- Ejecución arbitraria de código (ACE). Un exploit exitoso que permite que un atacante acceda al flujo normal del programa de la aplicación vulnerable. Luego redirigen el flujo para ejecutar el propio código del atacante en lugar del código original de la aplicación. La ejecución remota de código (RCE) es un subconjunto de ACE: el mismo ataque que se ejecuta a través de una red.
- Elevación de privilegio (EoP). Esto permite que un atacante obtenga privilegios mayores que los que consiguió. Por ejemplo, los atacantes emplean EoP para pasar de un usuario estándar a una cuenta administrativa. Herramientas populares como Mimikatz permiten la escalada de privilegios.
- Divulgación de información (ID). Un exploit que proporciona al atacante información que no debería poder ver, a menudo datos personales sensibles o detalles sobre cómo está protegido el sistema.
- Bypass de características de seguridad. Un exploit que evade barreras de seguridad que bloquearon el acceso a una parte sensible de un sistema o paquete de software.
Para un atacante, una vulnerabilidad y su explotación son solo un medio para un fin: una forma de iniciar una brecha y ganar terreno.
Tenlo en cuenta desde el punto técnico: cada paso luego del exploit se ejecuta en conexiones de red, y los defensores tienen voz en cuáles permanecen abiertas.
¿Cómo emplean los actores amenazantes una vulnerabilidad para iniciar una brecha?
El atacante intentará inyectar código de explotación en la memoria a través de una aplicación vulnerable, como a través de un desbordamiento de búfer. Esto les permite redirigir el flujo normal del programa al código malicioso del atacante, también conocido como shellcode.
Ahora, el código malicioso del actor de amenazas (shellcode) toma el control de la máquina para obtener un punto de apoyo inicial y establecer mando y control (C&C o C2). En ese momento, el atacante inició con éxito la brecha.
Cada paso cumple un propósito crucial en la cadena de ataque global:
- Descubrimiento de vulnerabilidades. Este es el proceso de encontrar una debilidad en cómo se fabrica un sistema o software o cómo se emplea. Esto puede incluir ingeniería inversa, fuzzing, análisis de código (estático y dinámico) o análisis de dependencias.
- Explota un programa vulnerable. Los exploits son fragmentos de código de bajo nivel o nativo que aprovechan con éxito una vulnerabilidad. Esto puede incluir exploits que conducen a la ejecución arbitraria de código (ACE), bypass, elevación de privilegios (EoP) o divulgación de información (ID).
- Shellcode. El shellcode es el código malicioso de bajo nivel específico o un ataque especialmente diseñado que intenta secuestrar el flujo normal de un programa en ejecución y redirigir ese flujo al código malicioso de un atacante que también está en ejecución en la memoria. Esto puede incluir desbordamientos de búfer, pulverizaciones de montículo, secuestros VTable o programación orientada a retorno (ROP).
- Carcasa inversa. Un shell inverso inicia una conexión de vuelta a la infraestructura de escucha del atacante para obtener acceso no autorizado al programa o sistema vulnerable. Esto puede incluir comando (cmd), bash para descargar exploits adicionales y cargas útiles más capaces como la escalada de privilegios.
- Carga útil de malware. Las cargas útiles de malware son ejecutables maliciosos más capaces y escalonados o exploits que avanzan el ataque más allá del punto de apoyo inicial. Las capacidades y acciones que aporta un malware adicional en un sistema comprometido superan lo que un verdadero shellcode, a menudo pequeño, está diseñado para ofrecer. Esto puede incluir ataques multietapa mediante una explotación local de escalada de privilegios y luego malware para movimientos laterales tipo gusano.
Los pasos 2–4 ocurren en la memoria. Un atacante explota un programa vulnerable, emplea shellcode para tomar el control de su flujo de control y entrega un shell inverso. Puedes analizar esto usando la estructura de memoria virtual de un proceso (un ejecutable en ejecución). Esa estructura tiene cinco partes clave: la pila, el heap, los datos, el BSS y las secciones de texto.

De especial interés será la sección de pilas. Profundizaremos en estas secciones de memoria en la segunda parte, con un ejemplo de una de las siguientes técnicas de exploit.
Técnicas principales para explotar vulnerabilidades
Algunas de las mejores técnicas de explotación incluyen:
- Ataques basados en identidad dirigidos a cuentas comprometidas.
- Los ataques de fallos lógicos que aprovechan fallos dispares en la lógica de programación para crear una vulnerabilidad explotable.
- Desbordamiento de búfer, donde se sobrecarga un búfer para sobreescribir la dirección de retorno.
- El heap spray ataca que intenta llenar (spray) el heap con código malicioso ejecutable, lo que aumenta las probabilidades de ejecutar ese código después de que el exploit impacte. Los heap sprays intentan superar las protecciones de aleatorización de la disposición del espacio de direcciones (ASLR) de memoria.
Una vez que un actor amenazante explota una vulnerabilidad y obtiene un punto de apoyo inicial, está a mitad de camino de una estrategia previsible. Ahora necesitan usar ese acceso para pivotar de máquina en máquina, repartir el ataque y alcanzar sus objetivos.
¿Cómo emplean los actores maliciosos una vulnerabilidad para propagar una brecha?
La fase de expansión del ataque cae en territorio más familiar. Normalmente sigue la segunda mitad de las tácticas y técnicas del marco MITRE ATT&CK. Estos cuatro pasos retoman donde terminaron los primeros cinco — nueve pasos en total.
- Descubrimiento. Descubrir significa aprender más sobre el sistema en el que cayeron y la red a la que se conecta. Esto puede incluir el descubrimiento de cuentas, información de red, descubrimiento de navegadores y descubrimiento de infraestructura en la nube.
- Movimiento lateral. El movimiento lateral significa conectarse y tomar el control de sistemas remotos para expandirlos por la red. Esto puede incluir secuestros de RDP/SSH, compartidos administrativos, pymes, hash de pasar, herramientas de despliegue de software y técnicas de vida en la tierra.
- Mando y control. El mando y control es la forma en que los atacantes se comunican y controlan sistemas infectados a través de su propia infraestructura de escuchas. Esto puede incluir canales de shell inverso, canales sitio web, algoritmos de generación de dominios (DGA), canales de texto DNS y fronteo de dominio (CDNs).
- Objetivos. Los objetivos son los objetivos finales del ataque. Esto puede incluir robo o exfiltración de datos (pyexfil o icmpexfil), ransomware, denegación de servicio o botnets.
Técnicas principales para abrir una brecha
Los atacantes rara vez necesitan herramientas exóticas para expandir. Las mismas rutas que permiten a los administradores gestionar sistemas y que los equipos compartan archivos también conllevan una brecha de máquina en máquina:
- Puertos administrativos y protocolos. RDP, SSH y WinRM ofrecen a los atacantes el mismo control remoto que los equipos de TI.
- Archivos y carpetas compartidas. Las acciones de pymes transmiten malware tan fácilmente como documentos.
- Instrumentación. Herramientas como WMI permiten a los atacantes ejecutar comandos en sistemas remotos sin perder ni un solo archivo nuevo.
- Canales basados en el sitio web. El tráfico HTTP y DNS permite que el comando y control se oculten en el ruido de la navegación normal.
Por qué el flujo de ataque importa más que el defecto
Las nuevas vulnerabilidades aparecen más rápido de lo que cualquier equipo puede parchear, y las que causan más daño rara vez son las que tienen el puntaje más alta. Lo que determina el daño es todo lo que ocurre después de que el exploit impacta: hasta dónde puede recorrer el atacante, cuántos sistemas puede alcanzar y cuánto tiempo tiene para trabajar.
Eso es una buena noticia para los defensores, porque la fase de spread es la parte previsible. El descubrimiento, el movimiento lateral, el mando y control, y el objetivo final dependen de las conexiones entre sistemas que la mayoría de las redes permiten por defecto. Cierra esos caminos y un punto de apoyo se queda como un apoyo. La segmentación, un control estricto sobre puertos administrativos y protocolos, y una clara visibilidad de cómo se comunican las cargas de trabajo entre sí pueden convertir una cadena de nueve pasos en una que se detiene en el paso cinco.
Recuerda el auto en el parqueadero. El ladrón solo importaba porque se abrió una puerta. La segmentación es cómo mantienes todas las demás puertas cerradas con llave, incluso cuando falla una cerradura.
Los atacantes ahora automatizan toda esta secuencia y la ejecutan a velocidad de máquina. La detección y la respuesta siguen siendo importantes, y funcionan mejor cuando el radio de la explosión ya es pequeño. Contener la brecha en el punto de entrada es lo que da tiempo a un equipo de seguridad para actuar.
En la segunda parte, profundizaremos en los exploits de memoria, cómo funcionan las cadenas y entradas especialmente diseñadas dentro de un exploit, y las técnicas que los defensores pueden usar para frustrarlos.
Prueba de conducción Illumio Segmentation Para ver cómo puedes cerrar caminos de movimiento lateral y contener brechas en el punto de entrada.





