RPC
Explicación sobre el funcionamiento y los métodos de enumeración de RPC
Fuentes
Remote Procedure Call
Resumen
RPC es un protocolo que permite que un programa ejecute código o funciones en otro dispositivo remoto y reciba su output (return) como si ese código se hubiese ejecutado localmente.
Al hablar de los puertos hay que distinguir entre el Endpoint Mapper y los servicios RPC (Funciones) en sí, que pueden estar a la escucha en muchos puertos diferentes (TCP, UDP, HTTP, SMB...)
Puerto TCP/135 -> RCP Endpoint Mapper.
Indica a los clientes qué servicios RPC están disponibles y cómo acceder a ellos.
RPC puede usarse mediante diferentes métodos de comunicación entre cliente-servidor:
ncacn_ip_tcp: RPC sobre TCPLa función RPC estará en escucha en un puerto alto aleatorio que puede consultarse al mapper.
ncacn_np: RPC sobre SMBSe accede al servicio RPC sobre SMB (TCP/445) en el share oculto
IPC$.
ncacn_http: RPC sobre HTTP(S)Se accede al servicio RPC sobre HTTP(S), (TCP/80 & TCP/443)
ncacn_nb_tcp: RPC sobre NetBIOSSe accede al servicio RPC sobre NetBIOS (TCP/139).
ncacn_ip_udp: RPC sobre UDPSimilar al caso de TCP pero sobre UDP.
Enumeración del servidor
ncacn_np: RPC sobre SMB
ncacn_np: RPC sobre SMBEn este caso, aunque el mapper no esté en escucha (TCP/135 cerrado), sigue siendo posible enumerar mientras SMB esté en escucha porque las funciones RPC de SMB están hardcodeadas y son conocidas, así que no hace falta preguntárselas.
ncacn_ip_tcp: RPC sobre TCP
ncacn_ip_tcp: RPC sobre TCPEn máquinas Windows con el entorno de AD (o sus servicios comunes como SMB), suele poder verse en la enumeración una gran cantidad de puertos altos abiertos (alrededor del puerto 40000). Estos son los casos de RPC sobre TCP.
Aunque puede ser útil enumerarlos en casos específicos, los servicios de estos puertos suelen no dar demasiada info y aquellos relevantes suelen ser también accesibles mediante SMB (
IPC$).
Última actualización