hacktricks/network-services-pentesting/135-pentesting-msrpc.md
2023-06-06 18:56:34 +00:00

12 KiB
Raw Blame History

135, 593 - Pentesting MSRPC

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Siga HackenProof para aprender mais sobre bugs web3

🐞 Leia tutoriais de bugs web3

🔔 Receba notificações sobre novos programas de recompensas por bugs

💬 Participe de discussões na comunidade

Informações Básicas

Microsoft Remote Procedure Call, também conhecido como chamada de função ou chamada de sub-rotina, é um protocolo que usa o modelo cliente-servidor para permitir que um programa solicite serviços de um programa em outro computador sem precisar entender os detalhes da rede desse computador. O MSRPC foi originalmente derivado de software de código aberto, mas foi desenvolvido ainda mais e protegido por direitos autorais pela Microsoft.

Dependendo da configuração do host, o mapeador de ponto de extremidade RPC pode ser acessado por meio das portas TCP e UDP 135, via SMB com uma sessão nula ou autenticada (TCP 139 e 445) e como um serviço da web ouvindo na porta TCP 593.

135/tcp   open     msrpc         Microsoft Windows RPC

Como funciona o MSRPC?

O processo MSRPC começa no lado do cliente, com a aplicação cliente chamando um procedimento stub local em vez de código que implementa o procedimento. O código stub do cliente recupera os parâmetros necessários do espaço de endereço do cliente e os entrega à biblioteca de tempo de execução do cliente, que então traduz os parâmetros em um formato padrão de representação de dados de rede para transmitir ao servidor.

O stub do cliente então chama funções na biblioteca de tempo de execução do cliente RPC para enviar a solicitação e os parâmetros para o servidor. Se o servidor estiver localizado remotamente, a biblioteca de tempo de execução especifica um protocolo de transporte apropriado e um mecanismo e passa o RPC para a pilha de rede para transporte para o servidor.
A partir daqui: https://www.extrahop.com/resources/protocols/msrpc/

Imagem do livro "Avaliação de Segurança de Rede 3ª Edição"

Identificando Serviços RPC Expostos

Você pode consultar o serviço de localizador RPC e os pontos finais RPC individuais para catalogar serviços interessantes em execução em TCP, UDP, HTTP e SMB (por meio de pipes nomeados). Cada valor IFID coletado por meio desse processo denota um serviço RPC (por exemplo, 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc é a interface do Messenger).

As ferramentas rpcdump e ifids do Windows de Todd Sabin consultam tanto o localizador RPC quanto os pontos finais RPC específicos para listar os valores IFID. A sintaxe do rpcdump é a seguinte:

D:\rpctools> rpcdump [-p port] 192.168.189.1
IfId: 5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc version 1.0
Annotation: Messenger Service
UUID: 00000000-0000-0000-0000-000000000000
Binding: ncadg_ip_udp:192.168.189.1[1028]

Você pode acessar o serviço de localização RPC usando quatro sequências de protocolo:

  • ncacn_ip_tcp e ncadg_ip_udp (porta TCP e UDP 135)
  • ncacn_np (o pipe \pipe\epmapper nomeado via SMB)
  • ncacn_http (RPC sobre HTTP via porta TCP 80, 593 e outras)
use auxiliary/scanner/dcerpc/endpoint_mapper
use auxiliary/scanner/dcerpc/hidden
use auxiliary/scanner/dcerpc/management
use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
rpcdump.py <IP> -p 135

Nota que de todas as opções mencionadas, todas exceto tcp_dcerpc_auditor podem ser executadas apenas contra msrpc na porta 135.

Interfaces RPC notáveis

Valor IFID Named pipe Descrição
12345778-1234-abcd-ef00-0123456789ab \pipe\lsarpc Interface LSA, usada para enumerar usuários
3919286a-b10c-11d0-9ba8-00c04fd92ef5 \pipe\lsarpc Interface LSA Directory Services (DS), usada para enumerar domínios e relacionamentos de confiança
12345778-1234-abcd-ef00-0123456789ac \pipe\samr Interface LSA SAMR, usada para acessar elementos públicos do banco de dados SAM (por exemplo, nomes de usuário) e forçar a senha do usuário por meio de brute-force, independentemente da política de bloqueio de conta Biblioteca Oreilly
1ff70682-0a51-30e8-076d-740be8cee98b \pipe\atsvc Agendador de tarefas, usado para executar comandos remotamente
338cd001-2244-31f1-aaaa-900038001003 \pipe\winreg Serviço de registro remoto, usado para acessar o registro do sistema
367abb81-9844-35f1-ad32-98f038001003 \pipe\svcctl Gerenciador de serviços e serviços do servidor, usado para iniciar e parar serviços remotamente e executar comandos
4b324fc8-1670-01d3-1278-5a47bf6ee188 \pipe\srvsvc Gerenciador de serviços e serviços do servidor, usado para iniciar e parar serviços remotamente e executar comandos
4d9f4ab8-7d1c-11cf-861e-0020af6e7c57 \pipe\epmapper Interface DCOM, suportando WMI

Identificando endereços IP

Usando https://github.com/mubix/IOXIDResolver, que vem da pesquisa da Airbus, é possível abusar do método ServerAlive2 dentro da interface IOXIDResolver.

Esse método foi usado para obter informações de interface como endereço IPv6 do box HTB APT. Veja aqui o relato do 0xdf APT, que inclui um método alternativo usando rpcmap.py do Impacket com stringbinding (veja acima).

Referências:

Porta 593

O rpcdump.exe do rpctools pode interagir com esta porta.

Siga HackenProof para aprender mais sobre bugs web3

🐞 Leia tutoriais de bugs web3

🔔 Receba notificações sobre novos programas de recompensas por bugs

💬 Participe de discussões na comunidade

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥