Telar 2.0 – Herramienta para pruebas de resistencia HTTP/HTTPS mediante técnicas de socket starvation

Telar 2.0 es una herramienta orientada a pruebas de estrés controladas sobre aplicaciones web. Su diseño modular en Python permite simular condiciones de agotamiento de recursos a nivel de capa de aplicación, explotando debilidades en la gestión de sockets HTTP persistentes.

⚠️ Advertencia ética y legal: Telar debe emplearse únicamente en entornos de prueba controlados, con autorización explícita del responsable del sistema objetivo. El uso inapropiado puede constituir un delito informático.

Objetivo técnico

Telar implementa una técnica conocida como socket starvation, inspirada en el ataque Slowloris. Su objetivo no es saturar ancho de banda ni enviar tráfico masivo, sino agotar los recursos del servidor web manteniendo conexiones abiertas e incompletas durante un periodo prolongado.

Esto genera presión sobre:

  • hilos/threads de atención HTTP
  • tablas de conexión en el kernel
  • buffers de respuesta
  • time-outs mal configurados

La herramienta permite evaluar de forma práctica la resiliencia de un servidor ante este tipo de vectores, proporcionando además métricas automáticas de rendimiento y resistencia.

Arquitectura técnica

Telar 2.0 está construido como un sistema modular de 10 componentes principales:

telar/
├── telar.py → Interfaz CLI asistida
├── terlar_shell.py → CLI directa
├── logica.py → Núcleo del ataque (ciclo persistente)
├── red.py → Generación de sockets TCP/SSL
├── utilidades.py → Métodos HTTP sobre sockets
├── metricas.py → Registro estructurado de rendimiento
├── configuracion.py → CLI parser (argparse)
├── configuracion_json.py → Persistencia (carga/guardado)
├── config_tel.json → Configuración en disco
└── README.md → Documentación y licenciamiento

Flujo de ejecución (visión global)

  1. El usuario lanza Telar en modo interactivo o por CLI.
  2. Se configuran parámetros clave (host, sockets, HTTPS, proxy, headers).
  3. Se generan múltiples sockets que simulan peticiones HTTP incompletas.
  4. Cada conexión envía encabezados de forma fragmentada en intervalos.
  5. Telar monitorea cuántos sockets siguen activos, cuántos se cierran y cuántos necesita regenerar.
  6. Se adaptan dinámicamente los tiempos de espera.
  7. Se registran métricas técnicas en tiempo real y se genera un informe final.

Módulos principales detallados

Menú interactivo CLI – telar.py

Implementa una interfaz en modo texto (tipo TUI) con menús estructurados que permiten:

  • Establecer el host (IPv4, dominio)
  • Configurar puerto TCP (80, 443, u otro)
  • Definir cantidad de sockets concurrentes
  • Alternar entre HTTP plano y HTTPS (SSL over TCP)
  • Activar un proxy SOCKS5 para canalizar el tráfico
  • Alternar uso de User-Agent aleatorios
  • Modificar el intervalo (sleeptime) entre encabezados HTTP

Ideal para: pentesters que desean configurar y lanzar pruebas iterativas sin recordar todos los argumentos CLI.

CLI directa – telar_shell.py

Permite lanzar Telar con parámetros explícitos. Ejemplo:

python terlar_shell.py 192.168.1.50 -p80 -s800 --https -v

Utiliza argparse para interpretar los parámetros y delega a logica.py para la ejecución del ataque.

Parser de argumentos – configuracion.py

Gestiona todos los parámetros de entrada del usuario:

FlagFunción técnica
-p, --portPuerto TCP destino
-s, --socketsNúmero total de sockets concurrentes
--httpsActiva ssl.wrap_socket()
--useproxyActiva SOCKS5 vía PySocks
--randuseragentsSelección aleatoria de headers User-Agent
--sleeptimeIntervalo entre headers (en segundos)

configuracion_json.py + config_tel.json

Este módulo permite persistir configuraciones previas en un archivo JSON local para facilitar pruebas repetitivas.

Ejemplo de estructura guardada:

json{
  "host": "192.168.56.101",
  "port": 443,
  "sockets": 500,
  "https": true,
  "usar_proxy": false
}

Generación y manipulación de sockets – red.py

  • Crea objetos socket.socket(AF_INET, SOCK_STREAM) para conexiones TCP.
  • Si está habilitado HTTPS, transforma en ssl.SSLSocket mediante wrap_socket() con hostname deshabilitado.
  • Permite canalizar el tráfico por un proxy SOCKS5 si está activado.

Además, inyecta dinámicamente funciones como:

socket.socket.enviar_encabezado(...)

Esto permite simular peticiones HTTP sin usar una librería de alto nivel (como requests o http.client), lo cual brinda mayor control de bajo nivel.

Métodos personalizados para headers – utilidades.py

Define dos métodos fundamentales:

def enviar_linea(self, linea):
def enviar_encabezado(self, nombre, valor):

Estos se agregan directamente a las instancias de socket para enviar cabeceras HTTP personalizadas, simulando un cliente web incompleto.

Núcleo de ataque (motor iterativo) – logica.py

Este es el corazón de Telar. Realiza lo siguiente:

  • Crea todos los sockets iniciales.
  • En cada ciclo, selecciona de 3 a 6 encabezados aleatorios (X-*) y los envía con retardos definidos.
  • Detecta sockets cerrados mediante excepciones (timed out, broken pipe, reset by peer) y los elimina.
  • Genera nuevos sockets para reemplazar los desconectados.
  • Si el porcentaje de sockets cerrados supera el 30%, reduce el sleeptime automáticamente.

Implementa un enfoque de ajuste adaptativo, similar al control de congestión en redes, pero aplicado a tiempos de envío de headers.

Registro estructurado – metricas.py

  • Genera un log detallado por iteración en logs/metricas_tel.log.
  • Registra:
    • sockets activos
    • cerrados
    • nuevos creados
    • duración en ms de cada ciclo
  • Al finalizar, calcula promedios y determina el nivel estimado de resistencia del objetivo:
Alta       → > 350 sockets cerrados/iteración
Moderada   → > 150
Deprimente → < 150

Esto permite evaluar si un servidor:

  • Tiene protecciones WAF activas
  • Cuenta con timeouts adecuados
  • Aplica limitación por IP o user-agent
  • Emplea reverse proxies con buffering inteligente

Aplicaciones en ciberseguridad ofensiva y defensiva

Telar permite experimentar en escenarios de ciberseguridad realistas sin comprometer redes de terceros. Algunos usos posibles:

  • Simulación de ataques de capa 7 (HTTP-level DoS)
  • Validación de reglas en firewalls tipo iptables o ufw
  • Evaluación de reverse proxies como Nginx, HAProxy
  • Pruebas de eficacia de mod_security, fail2ban, Apache TimeOut, etc.
  • Comparativas entre stacks de servidor (Apache vs Nginx, PHP-FPM vs Node.js)

Ejecución

Clonar el proyecto desde:

https://github.com/walthercurodelacruz/Telar

git clone https://github.com/walthercurodelacruz/Telar.git
cd Telar
python telar.py

Dependencias de Python para Telar

Telar está escrito en Python puro, sin frameworks ni librerías pesadas. Solo requiere:

  • pysocks: para habilitar el soporte de proxy SOCKS5 si se usa la opción --useproxy.
  • python 3.8 o superior

Instalación:

pip install pysocks

Nota: Si no usarás proxy SOCKS5, esta dependencia es opcional, pero se recomienda tenerla instalada para evitar errores si el flag se activa por accidente.