Tproot

DockerLabs — Linux · Nmap → vsftpd 2.3.4 Backdoor (CVE-2011-2523) → Root directo

MUY FÁCIL DOCKERLABS LINUX NMAP VSFTPD 2.3.4 BACKDOOR RCE // Mayo 2026

Resumen

Tproot es una máquina de dificultad muy fácil de la plataforma DockerLabs. Corre sobre Linux Ubuntu y expone dos servicios: FTP (puerto 21) con vsftpd 2.3.4 y un servidor web HTTP (puerto 80) con Apache 2.4.58.

Esta máquina es un caso de estudio clásico sobre vulnerabilidades públicamente conocidas y la importancia de mantener el software actualizado. El vector de ataque es completamente directo: el servicio FTP ejecuta vsftpd versión 2.3.4, una versión que fue comprometida en su cadena de suministro en julio de 2011. Un atacante malicioso inyectó una backdoor en el código fuente oficial, haciendo que el servidor abriera una shell de comandos en el puerto 6200 al recibir una cadena específica durante el proceso de login FTP.

A diferencia de otras máquinas de la plataforma, aquí no hay escalada de privilegios: la backdoor otorga acceso como root directamente. El proceso completo —desde el despliegue hasta la flag— se ejecuta en menos de 5 minutos, lo que la convierte en una máquina ideal para entender el ciclo de reconocimiento → identificación de CVE → explotación con herramientas de la comunidad.

FaseTécnica / HerramientaResultado
Despliegueauto_deploy.sh + ping TTLMáquina activa en 172.17.0.2 · Linux confirmado
ReconocimientoNmap -p- -sSCV full scan → export XMLPuerto 21 vsftpd 2.3.4 · Puerto 80 Apache 2.4.58
Análisis de versiónInspección del reporte Nmap XML (xsltproc)vsftpd 2.3.4 marcado como potencialmente vulnerable
Búsqueda de exploitsearchsploit vsftpd 2.3.4CVE-2011-2523 — Backdoor Command Execution (49757.py)
Obtención del exploitsearchsploit -m 49757.pyScript Python copiado al directorio de trabajo
Explotaciónpython3 49757.py 172.17.0.2Shell interactiva abierta como root
Post-explotaciónscript /dev/null -c bash · whoami · ls · catTTY estabilizada · root@dockerlabs · flag obtenida

// CONTEXTO HISTÓRICO — CVE-2011-2523

En julio de 2011, el repositorio oficial de vsftpd en vsftpd.beasts.org fue comprometido. El atacante modificó el archivo fuente sysdeputil.c para que, al recibir un nombre de usuario que contuviera el carácter ":)" (carita feliz), el servidor ejecutara una shell en el puerto 6200/tcp con privilegios de root. La backdoor estuvo disponible públicamente por menos de un día antes de ser detectada, pero el impacto fue significativo dado que vsftpd era uno de los servidores FTP más usados en sistemas Linux de la época. Este incidente es un ejemplo de ataque a la cadena de suministro de software años antes de que el término se popularizara.


Reconocimiento

1
DESPLIEGUE DE LA MÁQUINA

El primer paso es desplegar el contenedor vulnerable. DockerLabs proporciona el script auto_deploy.sh que construye la imagen a partir del archivo comprimido tproot.tar, asigna automáticamente una dirección IP dentro de la red interna Docker (172.17.0.x) y mantiene el contenedor activo hasta que se presione Ctrl+C. Se requiere sudo porque Docker necesita privilegios elevados para gestionar interfaces de red y el daemon de contenedores.

DEPLOY
$ sudo bash auto_deploy.sh tproot.tar
Estamos desplegando la máquina vulnerable, espere un momento.
 
Máquina desplegada, su dirección IP es ——> 172.17.0.2
Presiona Ctrl+C cuando termines con la máquina para eliminarla
2
VERIFICACIÓN DE CONECTIVIDAD — PING

Con el contenedor desplegado, verificamos conectividad enviando 3 paquetes ICMP con la flag -c 3. Más allá de confirmar que el host está activo, el campo TTL de la respuesta nos permite inferir el sistema operativo sin usar ninguna herramienta adicional: un TTL=64 indica Linux (Windows devuelve 128, Cisco IOS devuelve 255). En redes Docker sin routers intermedios, el TTL recibido es idéntico al TTL original del host, haciendo la identificación directa y fiable. Este dato orienta todo el reconocimiento posterior hacia herramientas y técnicas específicas de Linux.

PING
$ ping 172.17.0.2 -c 3
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.140 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.060 ms
 
--- 172.17.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2012ms
rtt min/avg/max/mdev = 0.060/0.090/0.140/0.035 ms
3
ESCANEO DE PUERTOS — NMAP

Con conectividad confirmada, lanzamos un escaneo exhaustivo con Nmap. Las flags utilizadas cubren el espectro completo de análisis: -p- escanea los 65,535 puertos TCP en lugar de solo los 1,000 más comunes, garantizando que no se nos escape ningún servicio. -sSCV combina SYN scan sigiloso (-sS), detección de versiones de servicios (-sV) y ejecución de scripts NSE de categoría default (-sC), que realizan checks automáticos como intentos de login anónimo en FTP, enumeración de headers HTTP, etc. -n desactiva la resolución DNS para acelerar el proceso, -Pn omite el host discovery (asumimos que el host está activo tras el ping previo), y --min-rate=5000 establece una tasa mínima de 5,000 paquetes por segundo para completar el escaneo en segundos en lugar de minutos.

Finalmente, -oX tproot.xml exporta los resultados en formato XML, lo que permite procesarlos posteriormente con herramientas como xsltproc para generar un reporte HTML visual y navegable — una práctica recomendada para documentar hallazgos de forma profesional.

NMAP
$ sudo nmap -p- -sSCV -n -Pn --min-rate=5000 --open 172.17.0.2 -oX tproot.xml
Starting Nmap 7.99 ( https://nmap.org ) at 2026-05-01 00:23 -0400
Nmap scan report for 172.17.0.2
Host is up (0.0000080s latency).
Not shown: 65533 closed tcp ports (reset)
 
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: got code 500 "OOPS: cannot change directory:/var/ftp".
80/tcp open http Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
MAC Address: 3E:AE:F1:BE:BE:D4 (Unknown)
Service Info: OS: Unix
 
Nmap done: 1 IP address (1 host up) scanned in 7.77 seconds

// HALLAZGO CRÍTICO

El escaneo revela vsftpd 2.3.4 en el puerto 21. Esta versión específica es notoriamente vulnerable: fue la versión infectada con una backdoor en 2011 y está catalogada en múltiples bases de datos de vulnerabilidades como explotable de forma trivial. La presencia de esta versión en un entorno expuesto es una señal de alerta inmediata que debe investigarse como primera prioridad.

4
ANÁLISIS DEL REPORTE XML — XSLTPROC

El archivo tproot.xml generado por Nmap puede transformarse en un reporte HTML interactivo y navegable utilizando xsltproc con la hoja de estilos que Nmap incluye en su instalación. Esto produce una vista tabular de todos los hosts, puertos y servicios descubiertos, facilitando la revisión rápida de resultados y su inclusión en informes de seguridad. En el reporte se confirma que el puerto 21 muestra vsftpd 2.3.4 con el estado de la versión destacado en rojo como señal de versión potencialmente vulnerable.

XSLTPROC
$ xsltproc tproot.xml -o tproot_report.html

Explotación

5
BÚSQUEDA DEL EXPLOIT — SEARCHSPLOIT

Con la versión vsftpd 2.3.4 identificada, el siguiente paso es verificar si existe un exploit público para ella. Searchsploit es la interfaz de línea de comandos para Exploit-DB, una base de datos de exploits mantenida por Offensive Security. Al buscar por nombre y versión, obtenemos dos resultados: un exploit en Python puro (49757.py) y su versión para Metasploit (17491.rb). En este writeup utilizaremos el script Python manual para entender el funcionamiento del exploit sin depender de frameworks externos.

El resultado confirma que esta vulnerabilidad está clasificada como "Backdoor Command Execution" y referenciada bajo el código CVE-2011-2523, lo que valida completamente el vector de ataque.

SEARCHSPLOIT
$ searchsploit vsftpd 2.3.4
Exploit Title | Path
--------------------------------------------------------|-----------------------
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
 
Shellcodes: No Results
6
OBTENCIÓN DEL EXPLOIT — SEARCHSPLOIT -M

La flag -m de searchsploit (mirror) copia el archivo del exploit directamente al directorio de trabajo actual, evitando tener que navegar manualmente hasta la ruta de Exploit-DB en el sistema. El output confirma la ruta original del exploit, el tipo de archivo (Python script), su URL en Exploit-DB para referencia, y el código CVE asociado. El campo Verified: True indica que el exploit ha sido probado y confirmado como funcional por el equipo de Exploit-DB, lo que aumenta la confianza en que la explotación será exitosa.

MIRROR EXPLOIT
$ searchsploit -m 49757.py
Exploit: vsftpd 2.3.4 - Backdoor Command Execution
URL: https://www.exploit-db.com/exploits/49757
Path: /usr/share/exploitdb/exploits/unix/remote/49757.py
Codes: CVE-2011-2523
Verified: True
File Type: Python script, ASCII text executable
Copied to: /home/kali/Desktop/HACKING_ETICO/semana_5/49757.py
7
EJECUCIÓN DEL EXPLOIT — ACCESO COMO ROOT

Ejecutamos el script Python proporcionando únicamente la IP del objetivo como argumento. El exploit funciona en dos fases: primero abre una conexión al puerto 21/tcp y envía un nombre de usuario que contiene la secuencia :) (el trigger de la backdoor), lo que hace que el servidor vsftpd lance una shell de root en el puerto 6200/tcp. Inmediatamente después, el script se conecta a ese puerto y nos entrega una shell interactiva ya como root.

Es posible que la primera ejecución no responda correctamente si el puerto 6200 tardó en abrirse; en ese caso basta con ejecutar el script una segunda vez para obtener la conexión estable. Una vez dentro, estabilizamos la TTY con script /dev/null -c bash, que reemplaza la pseudo-terminal básica de la backdoor por una bash completamente funcional con soporte para Ctrl+C, historial de comandos, y colores. El comando whoami confirma acceso como root sin necesidad de ninguna escalada de privilegios adicional.

EXPLOIT
$ python3 49757.py 172.17.0.2
Success, shell opened
Send `exit` to quit shell
 
script /dev/null -c bash
Script started, output log file is '/dev/null'.
 
root@dockerlabs:/tmp/vsftpd-2.3.4-infected# whoami
root

// CÓMO FUNCIONA LA BACKDOOR INTERNAMENTE

El código malicioso inyectado en vsftpd 2.3.4 se encuentra en la función vsf_sysutil_extra(). Al recibir un nombre de usuario que contiene ":)", el servidor ejecuta un fork() y el proceso hijo llama a execl("/bin/sh", "-sh", NULL) escuchando en el puerto 6200/tcp. Este proceso hijo hereda los privilegios del proceso padre de vsftpd, que normalmente corre como root durante la fase de autenticación para poder verificar credenciales contra /etc/shadow. El resultado es una shell root sin autenticación expuesta en la red.


Post-Explotación

8
ENUMERACIÓN DEL SISTEMA Y CAPTURA DE FLAG

Con acceso como root, realizamos una enumeración básica del sistema para orientarnos dentro del contenedor y localizar la flag. Desde el directorio /tmp donde aterrizamos inicialmente, navegamos a la raíz del sistema y desde ahí al directorio /root, que en Linux es el home del superusuario y el lugar habitual donde DockerLabs coloca las flags de root. Un ls revela el archivo root.txt, cuyo contenido es la flag en formato hash MD5.

POST-EXPL
root@dockerlabs:/tmp# ls
root@dockerlabs:/tmp# cd ..
root@dockerlabs:/# ls
root@dockerlabs:/# cd root
root@dockerlabs:~# ls
root@dockerlabs:~# cat root.txt
# ls /tmp
ls vsftpd-2.3.4-infected
 
# ls /
bin dev home lib.usr-is-merged media opt root sbin sys usr
boot etc lib lib64 mnt proc run srv tmp var
 
# ls /root
root.txt
 
# cat root.txt
261fd3f32200f950f231816b4e9a0594
FLAG ROOT
261fd3f32200f950f231816b4e9a0594
ACCESO OBTENIDO
root
CVE
CVE-2011-2523

// LECCIÓN APRENDIDA — GESTIÓN DE VERSIONES

Esta máquina ilustra perfectamente por qué la gestión de versiones y parcheo es una de las prácticas más críticas en seguridad. vsftpd 2.3.4 tiene una vulnerabilidad pública desde 2011 — hace más de una década. Un atacante no necesita ninguna habilidad especial: basta con ejecutar Nmap, identificar la versión, buscar en Exploit-DB y lanzar el script. En entornos reales, cualquier servicio expuesto a Internet con esta versión representa una puerta de entrada inmediata a root. La solución es simple: actualizar a versiones mantenidas activamente y aplicar el principio de mínima exposición de servicios.


Referencia de Comandos

nmap
nmap -p- -sSCV -n -Pn --min-rate=5000 --open <IP> -oX out.xml
Escáner de red y puertos. Permite descubrir servicios activos, sus versiones y ejecutar scripts NSE de enumeración automática sobre cada puerto abierto.
  • -p- — Escanea los 65,535 puertos TCP
  • -sS — SYN scan (sigiloso, no completa el handshake)
  • -sC — Scripts NSE de categoría default
  • -sV — Detección de versión de servicios
  • -n — Sin resolución DNS (más rápido)
  • -Pn — Omite host discovery previo
  • --min-rate — Tasa mínima de paquetes/segundo
  • --open — Muestra solo puertos abiertos
  • -oX — Exporta resultados a formato XML
searchsploit
searchsploit <servicio> <versión>
Interfaz CLI para Exploit-DB. Permite buscar exploits conocidos por nombre de software, versión o CVE, y copiar los scripts al directorio de trabajo.
  • -m <ruta> — Copia (mirror) el exploit al directorio actual
  • -u — Actualiza la base de datos local de exploits
  • -t — Busca solo en el título del exploit
  • -w — Muestra URL de Exploit-DB en lugar de ruta local
  • --id — Muestra el ID de Exploit-DB junto al nombre
python3 49757.py
python3 49757.py <IP_objetivo>
Exploit para CVE-2011-2523. Abre una conexión FTP al puerto 21, activa la backdoor enviando ":)" en el nombre de usuario, y se conecta al puerto 6200 donde vsftpd abre una shell root.
  • Argumento único: IP o hostname del objetivo
  • Conecta al puerto 21/tcp (FTP)
  • Activa backdoor con usuario user:)
  • Recibe shell en 6200/tcp
  • Ejecutar 2 veces si la primera no responde
script /dev/null -c bash
script /dev/null -c bash
Técnica de estabilización de TTY. Reemplaza la shell básica de la backdoor (sin TTY completa) por una bash interactiva con soporte para Ctrl+C, historial, autocompletado y colores ANSI.
  • /dev/null — Descarta el log de sesión (no guarda nada)
  • -c bash — Ejecuta bash como shell dentro del script
  • Habilita Ctrl+C sin matar la conexión
  • Necesario para tools interactivas (vim, sudo, etc.)
  • Alternativa: python3 -c 'import pty; pty.spawn("/bin/bash")'
xsltproc
xsltproc <archivo.xml> -o <reporte.html>
Procesador XSLT de línea de comandos. Transforma el XML de Nmap en un reporte HTML navegable usando la hoja de estilos incluida con Nmap, facilitando la revisión visual de resultados.
  • Requiere el archivo XML generado por nmap -oX
  • -o — Nombre del archivo HTML de salida
  • La stylesheet de Nmap está en /usr/share/nmap/
  • Útil para documentación e informes de pentest
ping
ping <IP> -c <n>
Herramienta ICMP para verificar conectividad y estimar el sistema operativo del objetivo mediante el análisis del campo TTL en la respuesta. TTL=64 indica Linux, TTL=128 indica Windows.
  • -c <n> — Limita a n paquetes (evita loop infinito)
  • -i <segundos> — Intervalo entre paquetes
  • -s <bytes> — Tamaño del paquete ICMP
  • TTL recibido ≈ 64 → Linux/Unix
  • TTL recibido ≈ 128 → Windows

Glosario

vsftpd — Very Secure FTP Daemon
vsftpd (Very Secure FTP Daemon) es uno de los servidores FTP más utilizados en sistemas Linux/Unix, diseñado originalmente con un fuerte enfoque en seguridad, rendimiento y estabilidad. La versión 2.3.4 fue comprometida en julio de 2011 cuando un atacante desconocido logró modificar el código fuente en el repositorio oficial del proyecto, insertando una backdoor que activa una shell root al recibir el carácter ":)" en el campo de usuario durante el proceso de login FTP. Fue detectada y eliminada del repositorio en menos de 24 horas, pero las copias infectadas continuaron circulando y siendo usadas en sistemas sin actualizar. Este incidente sigue siendo uno de los ejemplos más citados de ataque a la cadena de suministro de software (supply chain attack).
CVE — Common Vulnerabilities and Exposures
El sistema CVE es un estándar internacional para la identificación unívoca de vulnerabilidades de seguridad en software y hardware. Cada entrada recibe un identificador único con el formato CVE-AÑO-NÚMERO. CVE-2011-2523 corresponde a la backdoor de vsftpd 2.3.4: el año 2011 indica cuándo fue descubierta y reportada, y el número 2523 es el índice secuencial asignado. El sistema CVE es mantenido por MITRE Corporation y financiado por el gobierno de EE.UU. a través de CISA. Bases de datos como NVD (National Vulnerability Database) y Exploit-DB indexan estas vulnerabilidades junto con puntuaciones de riesgo (CVSS), parches disponibles y exploits conocidos, siendo herramientas fundamentales en el ciclo de reconocimiento de un pentest.
Backdoor — Puerta Trasera
Una backdoor es cualquier método que permite el acceso no autorizado a un sistema, aplicación o red, generalmente sin pasar por los controles de autenticación normales. En el contexto de vsftpd 2.3.4, la backdoor es de tipo hardcoded trigger: el código malicioso es parte del binario compilado del servidor y se activa ante una condición específica (usuario con ":)"), sin necesidad de credenciales. Existen varios tipos de backdoors: de compilador (inyectadas en el toolchain), de repositorio (como este caso), de paquetes (en gestores de dependencias), y de configuración (cuentas ocultas, puertos abiertos). Su detección requiere análisis de código fuente, auditoría de binarios, o monitoreo de tráfico de red anómalo.
FTP — File Transfer Protocol
FTP (File Transfer Protocol, RFC 959) es un protocolo de red estándar para la transferencia de archivos entre sistemas. Opera en dos canales: el canal de control (puerto 21/tcp) para comandos y el canal de datos (puerto 20/tcp activo, o puerto negociado en modo pasivo) para la transferencia de archivos. FTP transmite credenciales y datos en texto plano, sin cifrado, lo que lo hace inherentemente inseguro en redes no confiables. Sus alternativas seguras son SFTP (FTP sobre SSH, puerto 22) y FTPS (FTP sobre TLS/SSL). El modo anónimo (ftp-anon) permite acceso sin credenciales para distribución pública de archivos, aunque el error "OOPS: cannot change directory" observado en el escaneo indica que el FTP anónimo está habilitado pero mal configurado, lo que no impide la explotación de la backdoor.
Nmap — Network Mapper
Nmap es la herramienta de exploración de redes y auditoría de seguridad más utilizada en la industria. Permite descubrir hosts activos, puertos abiertos, versiones de servicios y sistemas operativos mediante técnicas como SYN scan, UDP scan, y OS fingerprinting. Su motor de scripts NSE (Nmap Scripting Engine) permite extender su funcionalidad con scripts en Lua para realizar enumeraciones especializadas (SMB, HTTP, FTP, bases de datos, etc.), detección de vulnerabilidades conocidas, y ataques básicos. El output en formato XML (-oX) facilita la integración con otras herramientas del pipeline de pentest como Metasploit, que puede importar directamente los resultados para poblar su base de datos de hosts. En esta máquina, el script ftp-anon de Nmap intentó acceso anónimo al FTP automáticamente durante el escaneo con -sC.
Searchsploit y Exploit-DB
Exploit-DB (exploit-db.com) es el archivo público más grande de exploits y software vulnerable, mantenido por Offensive Security (los creadores de Kali Linux). Contiene exploits categorizados por tipo (remote, local, web, shellcode), plataforma y CVE asociado. Searchsploit es la interfaz de línea de comandos que permite buscar en la copia local de Exploit-DB sin conexión a Internet, ideal para entornos de pentest aislados. La flag -m (mirror) copia el exploit al directorio actual, mientras que -p muestra solo la ruta del exploit. Cada exploit en Exploit-DB tiene un estado de verificación: Verified: True significa que el equipo ha probado el exploit en un entorno controlado y confirmado su funcionamiento. Es importante destacar que los exploits de Exploit-DB son herramientas de investigación y pruebas de seguridad — su uso fuera de entornos autorizados es ilegal.
TTY — Teletipo y Estabilización de Shell
Una TTY (Teletypewriter) es una interfaz de terminal que proporciona una sesión de usuario completa con soporte para señales de control (Ctrl+C, Ctrl+Z), historial de comandos, edición de línea, y renderizado correcto de interfaces basadas en curses (vim, nano, htop, sudo). Las shells obtenidas mediante backdoors o reverse shells suelen ser dumb shells sin TTY completa, lo que causa que Ctrl+C mate la sesión en lugar de interrumpir el proceso actual, que sudo falle pidiendo contraseña sin mostrar el prompt, y que editores como vim no funcionen correctamente. El comando script /dev/null -c bash es la técnica más común para obtener una TTY estabilizada: script es una utilidad que graba sesiones de terminal, y al apuntarla a /dev/null descartamos el log; la opción -c bash le indica que el comando a ejecutar y registrar es una sesión bash interactiva, lo que fuerza la asignación de una pseudo-TTY.
TTL — Time To Live y Fingerprinting de SO
El TTL (Time To Live) es un campo de 8 bits en el encabezado IP que indica cuántos saltos de router puede atravesar un paquete antes de ser descartado, evitando que paquetes errantes circulen indefinidamente por la red. Cada router que procesa el paquete decrementa el TTL en 1; si llega a 0, el paquete es descartado y se envía un mensaje ICMP "Time Exceeded" al origen. Cada sistema operativo tiene un TTL inicial diferente: Linux/Unix → 64, Windows → 128, Solaris/AIX → 254, Cisco IOS → 255. Al recibir una respuesta ping, el TTL observado puede ser menor que el inicial si hay routers intermedios, pero en redes Docker sin enrutamiento adicional el TTL recibido es igual al inicial, permitiendo identificar el SO directamente. Esta técnica de fingerprinting pasivo no genera alertas porque es simplemente la lectura de un campo estándar de cualquier respuesta de red.
Ataque a la Cadena de Suministro (Supply Chain Attack)
Un ataque a la cadena de suministro de software es un vector de ataque que apunta a elementos menos seguros de la cadena de distribución de software en lugar de al objetivo final directamente. Incluye comprometer el repositorio oficial del código fuente (como en vsftpd 2.3.4), inyectar código malicioso en dependencias de terceros (npm, PyPI, RubyGems), atacar el proceso de compilación (compiladores troyanizados, como el ataque de Thompson de 1984 "Trusting Trust"), o comprometer los servidores de distribución de actualizaciones. El incidente de vsftpd 2.3.4 (2011) fue uno de los primeros casos ampliamente documentados, pero el vector se popularizó con casos posteriores como SolarWinds Orion (2020) y el backdoor en XZ Utils (2024, CVE-2024-3094). La defensa incluye: verificación de firmas criptográficas de paquetes, reproducible builds, y monitoreo de integridad de dependencias.
Puerto y Servicio — Conceptos Fundamentales de Red
Un puerto es un número de 16 bits (0-65535) que identifica un proceso o servicio específico dentro de un host. Los puertos del 0 al 1023 son well-known ports asignados por IANA para servicios estándar: 21/tcp → FTP, 22/tcp → SSH, 80/tcp → HTTP, 443/tcp → HTTPS. Los puertos 1024-49151 son registered ports para aplicaciones específicas, y los 49152-65535 son dynamic/private ports usados para conexiones efímeras. En el caso de vsftpd, la backdoor usa el puerto 6200/tcp, que no tiene asignación estándar — un puerto inusual escuchando en un servidor FTP sería una señal de alerta en un análisis forense. La enumeración completa de puertos (-p- en Nmap) es esencial en pentesting porque los servicios pueden correr en puertos no estándar deliberadamente para dificultar el reconocimiento básico.