Llamada a procedimiento remoto (RPC)

Llamada a procedimiento remoto (RPC) en Windows: análisis técnico completo

El servicio Llamada a procedimiento remoto (RPC), identificado internamente como RpcSs, es uno de los componentes más críticos del sistema operativo Windows. Constituye la base de la comunicación entre procesos tanto en el propio sistema como en entornos distribuidos, siendo imprescindible para el funcionamiento de la mayoría de servicios, aplicaciones y subsistemas internos.

Su importancia es tal que Windows depende estructuralmente de RPC: sin este servicio, el sistema pierde la capacidad de coordinar procesos, acceder a recursos remotos y ejecutar múltiples funciones esenciales.

Descripción técnica del servicio

El Remote Procedure Call (RPC) es un protocolo que permite a un proceso ejecutar código en otro proceso, ya sea en la misma máquina o en un sistema remoto, como si se tratara de una llamada local.

El modelo de funcionamiento se basa en:

  1. Un cliente realiza una llamada a un procedimiento
  2. RPC encapsula esa llamada
  3. Se envía al servidor correspondiente
  4. El servidor ejecuta la función con los parámetros recibidos
  5. Devuelve el resultado al cliente

Este mecanismo abstrae la complejidad de la comunicación en red y permite interoperabilidad entre sistemas heterogéneos.

Funcionamiento interno

RPC utiliza varios componentes clave:

  • RPC Runtime: gestiona las llamadas y su transporte
  • Endpoint Mapper: asigna servicios a puertos dinámicos
  • Marshalling/Unmarshalling: serialización de datos

El servicio RpcSs actúa como coordinador principal dentro del sistema, gestionando:

  • Registro de interfaces RPC
  • Resolución de endpoints
  • Comunicación entre procesos mediante RPC y DCOM

Información técnica

CampoValor
Nombre en inglésRemote Procedure Call (RPC)
Nombre del servicioRpcSs
DLL asociadarpcss.dll
Ejecutable%SystemRoot%\system32\svchost.exe -k rpcss
Puerto principalTCP 135 (RPC Endpoint Mapper) — también UDP 135 para resolución en redes locales
Tipo de inicioAutomático
Estado recomendadoIniciado
Cuenta de ejecuciónServicio de red

Dependencias

Este servicio no tiene dependencias explícitas para su inicio, lo que refleja su carácter fundamental dentro del sistema. Sin embargo, su funcionamiento pleno está ligado al servicio DCOM Server Process Launcher (DcomLaunch), con el que comparte espacio en el proceso svchost.exe. Si DcomLaunch falla, la estabilidad de RpcSs se ve comprometida, aunque técnicamente no aparezca como una dependencia clásica en el administrador de servicios.

Servicios dependientes

Un número muy elevado de servicios dependen de RPC, entre ellos:

  • Instrumental de administración de Windows (WMI)
  • Aplicación del sistema COM+
  • Servicios de red
  • Cola de impresión
  • Servicios de audio
  • Windows Installer
  • Servicios de cifrado
  • Programador de tareas
  • Servicios IPSEC
  • Restauración del sistema
  • Transferencia inteligente en segundo plano (BITS)

Esto implica que cualquier fallo en RPC provoca errores en cascada en gran parte del sistema.

Configuración en el registro

Clave principal:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs

Valor:

ImagePath = %SystemRoot%\system32\svchost.exe -k rpcss
Tipo: REG_EXPAND_SZ

Subclave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs\Parameters

Valor:

ServiceDll = %SystemRoot%\system32\rpcss.dll
Tipo: REG_EXPAND_SZ

La integridad de estos valores es esencial para el correcto funcionamiento del servicio.

Arquitectura de red

RPC utiliza un modelo mixto de comunicación:

  • Puerto fijo inicial: TCP 135 (y UDP 135 para descubrimiento)
  • Puertos dinámicos asignados para sesiones

El proceso es el siguiente:

  1. El cliente contacta con el Endpoint Mapper en el puerto 135
  2. Solicita el servicio deseado
  3. El sistema devuelve un puerto dinámico
  4. La comunicación continúa en ese puerto

Este diseño permite flexibilidad, pero también introduce complejidad en configuraciones de firewall.

Naturaleza síncrona y asíncrona

Por defecto, RPC trabaja de forma síncrona: el cliente queda bloqueado hasta recibir respuesta. Sin embargo, la implementación de RPC en Windows también soporta de forma nativa llamadas asíncronas (asynchronous RPC), donde:

  • El cliente no se bloquea
  • La llamada devuelve el control inmediatamente
  • El cliente recibe una notificación (evento, callback o sondeo) cuando la respuesta está disponible

En entornos avanzados, pueden gestionarse múltiples llamadas concurrentes, especialmente si comparten espacio de direcciones o usan hilos independientes.

Problemas comunes

Uno de los errores más habituales es:

“RPC server unavailable”

Este error no suele deberse directamente a RpcSs, sino a:

  • Fallos en servicios dependientes (especialmente DcomLaunch o WMI)
  • Problemas de red
  • Bloqueos por firewall
  • Errores en WMI o COM+

Diagnóstico técnico

Para analizar problemas relacionados con RPC:

  1. Verificar servicios relacionados
  • Instrumental de administración de Windows (WMI)
  • Aplicación del sistema COM+
  • DCOM Server Process Launcher
  1. Comprobar conectividad
  • Puerto 135 accesible (TCP y UDP)
  • Puertos dinámicos no bloqueados
  1. Visor de eventos
   eventvwr.msc

Buscar errores en:

  • System
  • DCOM
  • Service Control Manager

Seguridad y vulnerabilidades

RPC ha sido históricamente un objetivo crítico de ataques debido a su exposición en red. Uno de los casos más conocidos fue:

  • Vulnerabilidad MS03-026
  • Gusano Blaster

Este exploit aprovechaba fallos en RPC para ejecutar código remoto sin autenticación.

Mejoras de seguridad en Windows XP SP2

Con la llegada de Service Pack 2, Microsoft introdujo medidas clave:

  • Reducción de superficie de ataque
  • Restricción de clientes remotos
  • Nuevas políticas de seguridad

Una de las claves añadidas fue:

RestrictRemoteClients

Esta configuración limita el acceso remoto a interfaces RPC. En versiones modernas de Windows, la autenticación es obligatoria por defecto para llamadas remotas, lo que mitiga gran parte de los riesgos históricos, aunque exponer RPC a Internet sigue siendo una mala práctica.

Recuperación del servicio

En condiciones normales, RPC:

  • No puede detenerse desde la interfaz gráfica
  • No puede deshabilitarse mediante comandos estándar

Si se desactiva (caso raro), se puede recuperar desde la consola de recuperación:

enable rpcss service_auto_start

Sin RPC activo, Windows queda prácticamente inutilizable.

Consideraciones avanzadas

  • RPC es la base de DCOM
  • Es esencial para WMI
  • Permite comunicación entre procesos distribuidos
  • Soporta múltiples protocolos de transporte
  • Está definido formalmente desde el RFC 1050, lo que evidencia su madurez y estandarización

Buenas prácticas

  • No deshabilitar nunca RPC
  • Mantener actualizado el sistema
  • Configurar correctamente el firewall (limitar el acceso al puerto 135 a redes de confianza)
  • Supervisar los servicios dependientes, especialmente DcomLaunch y WMI

Conclusión técnica

El servicio RPC (RpcSs) es uno de los pilares fundamentales de Windows, responsable de la comunicación entre procesos locales y remotos mediante un modelo eficiente, abstracto y altamente integrado.

Su diseño permite la interoperabilidad entre componentes del sistema y aplicaciones distribuidas, pero también lo convierte en un punto crítico tanto a nivel funcional como de seguridad.

Cualquier fallo en RPC no es un problema aislado, sino un evento que compromete el funcionamiento global del sistema operativo.

Perfecto. Entonces voy a crear una FAQ de problemas comunes y soluciones como sección adicional al análisis. Queda estructurada de forma práctica, con diagnóstico y acciones concretas.

FAQ: Problemas comunes con RPC y sus soluciones

1. ¿Qué significa el error «RPC server unavailable»?

Síntoma:
Aplicaciones como WMI, impresoras, administración remota o herramientas de gestión fallan con el mensaje «RPC server unavailable».

Causas más frecuentes:

  • El servicio RpcSs no está ejecutándose (raro)
  • Fallo en servicios dependientes (DcomLaunch, WMI)
  • Firewall bloqueando el puerto 135 o los puertos dinámicos
  • Problemas de red (resolución DNS, conectividad)
  • El equipo remoto tiene RPC restringido por política

Soluciones:

PasoAcción
1Verificar que RpcSs está en ejecución: sc query RpcSs
2Verificar DcomLaunch: sc query DcomLaunch
3Comprobar conectividad al puerto 135: Test-NetConnection -Port 135 (PowerShell)
4Revisar firewall local: asegurar que la regla «Windows Management Instrumentation (WMI)» está habilitada
5Examinar el Visor de eventos: eventvwr.msc → Registros de Windows → Sistema, filtrar por origen «DCOM» o «Service Control Manager»

2. ¿Por qué no puedo detener el servicio RPC desde servicios.msc?

Respuesta:
El servicio RpcSs está protegido por el sistema. Desde Windows XP en adelante, no puede detenerse ni deshabilitarse mediante herramientas gráficas o comandos estándar. Windows lo impide porque el sistema operativo dejaría de funcionar correctamente.

Excepción:
En entornos de recuperación (WinRE, consola de recuperación), es posible modificar su estado mediante comandos específicos si el registro ha sido manipulado manualmente.

3. El servicio RPC consume muchos puertos dinámicos. ¿Cómo puedo controlarlo?

Contexto:
Por defecto, RPC en Windows utiliza un rango amplio de puertos dinámicos (desde 49152 a 65535 en Windows Vista y posteriores; en versiones anteriores era un rango más amplio aún).

Solución:
Se puede restringir el rango de puertos dinámicos mediante el registro o comandos, especialmente útil en servidores con firewalls estrictos.

Comando (PowerShell como administrador):

netsh int ipv4 set dynamicport tcp start=50000 num=10000
netsh int ipv4 set dynamicport udp start=50000 num=10000

Para ver el rango actual:

netsh int ipv4 show dynamicport tcp

Alternativa vía registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Internet

Crear valores Ports (REG_MULTI_SZ) y PortsInternetAvailable (REG_SZ = «1»).

4. Recibo errores de RPC en equipos remotos al usar WMI o PowerShell Remoting

Causa típica:

  • Firewall de Windows bloqueando la administración remota
  • La cuenta no tiene permisos suficientes
  • La política RestrictRemoteClients está activa limitando el acceso

Soluciones:

ProblemaSolución
FirewallHabilitar regla «Windows Management Instrumentation (WMI-In)» en el equipo remoto: Enable-PSRemoting -Force
PermisosAsegurar que el usuario pertenece al grupo «Administradores» local o tiene delegación WMI
RestrictRemoteClientsRevisar clave HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC → valor RestrictRemoteClients = 0 (si el escenario lo permite)

5. ¿Cómo comprobar si el problema es RPC o es otro servicio?

Diagnóstico rápido:

  1. Comprobar estado de servicios críticos:
   sc query RpcSs
   sc query DcomLaunch
   sc query RpcEptMapper
  1. Verificar si el Endpoint Mapper responde localmente:
   netstat -an | findstr:135

Debe mostrar el puerto 135 en estado LISTENING.

  1. Probar conectividad RPC con herramientas específicas:
  • rpcdump (herramienta antigua de Windows SDK) para enumerar endpoints
  • Get-WmiObject -Class Win32_ComputerSystem desde PowerShell local y remoto para validar WMI/RPC
  1. Revisar Eventos críticos:
  • ID 1000, 1001 en origen «DCOM» → fallos de activación COM/RPC
  • ID 7000, 7009 en «Service Control Manager» → servicios que no arrancan por dependencia RPC

6. ¿Es seguro exponer RPC (puerto 135) a Internet?

Respuesta corta: No.

Razones:

  • Históricamente ha sido vector de exploits críticos (Blaster, Conficker)
  • Aunque las versiones modernas de Windows tienen mejoras de seguridad, exponer RPC directamente a Internet sigue siendo una mala práctica
  • Permite a atacantes enumerar servicios y potencialmente autenticarse si hay credenciales débiles

Recomendación:

  • Bloquear el puerto 135 en firewalls perimetrales
  • Para administración remota, usar alternativas más seguras como VPN, WinRM sobre HTTPS (puerto 5986) o soluciones de administración modernas

7. El sistema arranca pero muchos servicios no inician. ¿Puede ser RPC?

Síntoma:
Al iniciar Windows, aparecen errores de servicios que no arrancan, la interfaz puede funcionar parcialmente pero impresión, audio, WMI y otras funcionalidades fallan.

Diagnóstico:

  • RpcSs puede estar iniciado pero en estado inconsistente
  • DcomLaunch puede haber fallado al arrancar

Solución:

  1. Arrancar en Modo seguro con funciones de red. Si en modo seguro funciona, el problema suele ser un servicio de terceros o controlador que interfiere.
  2. Restaurar sistema a un punto anterior si está disponible.
  3. Desde Símbolo del sistema (modo recuperación):
   reg add "HKLM\SYSTEM\CurrentControlSet\Services\RpcSs" /v Start /t REG_DWORD /d 2 /f
   reg add "HKLM\SYSTEM\CurrentControlSet\Services\DcomLaunch" /v Start /t REG_DWORD /d 2 /f

8. ¿Qué registros debo revisar ante problemas de RPC?

UbicaciónQué buscar
Visor de eventos → SistemaEventos ID 7023, 7024 (servicios que fallan), ID 1000-1005 DCOM
Visor de eventos → AplicaciónErrores de aplicaciones que usan COM/WMI
%windir%\debug\Archivos como dcom.log o wmi.log si se ha habilitado logging detallado

9. ¿Cómo habilitar logging avanzado de RPC para depuración?

Advertencia: Solo para diagnóstico controlado; puede generar gran cantidad de logs.

  1. Crear clave:
   HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\Debug
  1. Crear valor DebugFlags (REG_DWORD) con valor FFFFFFFF (hexadecimal)
  2. Reiniciar el servicio RpcSs (requiere reinicio del sistema o detener procesos críticos, no recomendado en producción)

Los logs se registrarán en el Visor de eventos dentro del canal «Applications and Services Logs → Microsoft → Windows → RPC».

10. Resumen rápido: acciones ante fallos de RPC

NivelAcción
LocalVerificar servicios RpcSs y DcomLaunch. Comprobar puerto 135 con netstat. Revisar eventos de sistema.
RedProbar Test-NetConnection al puerto 135 del destino. Verificar firewall. Comprobar resolución DNS.
RemotoValidar que el firewall remoto permite WMI/RPC. Confirmar permisos de administrador. Revisar políticas de restricción RPC.
RecuperaciónArrancar en modo seguro. Desde consola de recuperación, restaurar valores de registro del servicio.

¿Quieres que añada algún otro escenario concreto, como problemas con RPC en controladores de dominio, clústeres o entornos con redes segmentadas?