O **RPC (Remote Procedure Call)** é um **protocolo de comunicação** que permite que um programa execute procedimentos (funções) em outro computador na rede como se fossem locais. Esse protocolo é amplamente utilizado em sistemas distribuídos, especialmente em ambientes cliente-servidor, para facilitar a comunicação entre processos em diferentes máquinas. ## Portas Utilizadas pelo RPC O RPC utiliza diferentes portas para estabelecer e gerenciar conexões:​ - **Porta 135 (TCP/UDP)**: Conhecida como **Endpoint Mapper** ou **Portmapper**, é a porta padrão usada inicialmente para localizar os serviços RPC disponíveis em uma máquina.​ - **Portas Dinâmicas (Ephemeral Ports)**: Após a conexão inicial via porta 135, o RPC aloca dinamicamente portas para comunicação adicional. O intervalo dessas portas varia conforme o sistema operacional. Essas portas dinâmicas são atribuídas conforme necessário e podem ser configuradas para se adequar a políticas de segurança e firewall. ### RPC Client Se conectando ao RPC usando RPCClient: ``` rcpclient -W dominio -U usuario <IP> ``` ```shell # Enumerando usuários do computador: rcpclient gt; enumdomusers # Visualizar os dados do usuário atual que está logado: rcpclient gt; getusername # Visualizar informações do usuário: rcpclient gt; queryuser 0x45a # Visualizar os grupos do computador: rcpclient gt; enumdomgroups # Visualizar informações do grupo: rcpclient gt; querygroup 0x100a # Visualizar os membros do grupo: rcpclient gt; querygroupmen 0x100a # Obter informações do domínio: rpcclient gt; querydominfo # Criar um usuário no domínio: rpcclient gt; createdomuser novo_usuario # Deletar um usuário do domínio: rpcclient gt; deletedomuser 0x3e8 # Obter SID a partir de um nome de usuário: rpcclient gt; lookupnames usuario # Obter nome de usuário a partir de um SID: rpcclient gt; lookupsids S-1-5-21-XXXXX-XXXXX-XXXXX-500 # Adicionar direitos de conta a um usuário: rpcclient gt; lsaaddacctrights usuario SeRemoteInteractiveLogonRight # Remover direitos de conta de um usuário: rpcclient gt; lsaremoveacctrights usuario SeRemoteInteractiveLogonRight # Enumerar domínios confiáveis em uma floresta AD: rpcclient gt; dsenumdomtrusts ```