En este puerto vive distccd, fue diseñado para la compilación distribuida de código C/C++. Su funcionamiento básico consiste en recibir código fuente de clientes de la red. compilarlo localmente en la máquina servidor utilizando compiladores como gcc, y devolver el binario resultante.

Hay una vulnerabilidad crítica asociada al CVE-2004-2687 proveniente de su diseño y configuración por defecto.

  • El demonio no tienen ningún mecanismo de autenticación o cifrado nativo.
  • Confía ciegamente en las instrucciones de compilación que recibe.
  • Permite a los clientes definir qué compilador o herramienta del sistema quieren invocar. Un atacante puede manipular los argumentos de la compilación para inyectar comandos del sistema e indicar al servidor que los ejecute en su lugar.

Explotación

Utilizamos un script de Nmap para realizar la explotación.

--script distcc-cve2004-2687: Carga el script oficial de Nmap que emula una solicitud de compilación legítima de distcc.

--script-args="cmd=id": Le indicamos al script que intente inyectar el comando id.

La respuesta nos mostró la salida del comando enviado. Con esto un atacante podría aprovecharse y generar una reverse shell para tomar control del servidor o lanzar algún comando del sistema que lo ayude a ganar acceso.

Hardening

Esta servicio es extremadamente peligroso por que, por diseño confía en cualquiera que pueda enviarle paquetes TCP. Entonces tendremos dos opciones:

  1. Deshabilitar si no se usa.
  2. Restringir quién pueda usarlo.

Tomaremos la primera opción, primero detendremos el demonio que está escuchando en el puerto 3632 de forma inmediata.

/etc/init.d/distcc stop

Matamos todos los procesos

killall distccd

Deshabilitamos el arranque automático

nano /etc/default/distcc

Debemos cambiar el valor a false

Al cambiar START_DISTCC a false, neutralizamos el servicio por completo.