Remote Procedure Call (RPC / MSRPC)

RPCClient

Acessando host

Acessando o host. Caso dê certo, seu terminal deve ficar com o seguinte PS1: rpcclient $>

# Com autenticação
rpcclient -U '<user>%<pass>' <ip>

# Sem autenticação (Sessão Nula)
rpcclient -U "" -N <ip>

Caso o alvo esteja em um Domínio, é preciso deixar o comando da seguinte forma:

rpcclient -U '<user>' -P '<pass>' -W '<domain>' -I <ip>

Informações sobre o servidor

Retorna detalhes como IP, versão do SO, Wk (Workstation), Sv (Server), etc

srvinfo

Informações sobre o usuário atual

getusername

Enumerando Active Directory

Informações sobre o domí­nio

querydominfo

Quando for enumerar um domí­nio, pode trazer um Builtin na saí­da, que é um álias para groups

enumdomains

Detalhes de login, nomes dos usuários e descrição

querydispinfo 

Após o comando acima, iremos ter o RID dos usuários, então podemos pegar esse RID (por exemplo 0x465) e executar o seguinte comando:

queryuser 0x464

Exibindo os compartilhamentos

netshareenumall

Enumerando o domí­nio do AD

enumalsgroups builtin
enumalsgroups domain

Podemos também realizar alguns tipos de enumeração com os seguintes comandos:

# Grupos
enumdomgroups

# Usuários do sistema local
enumdomusers

# Impressoras
enumprinters

Agora que já conhecemos os usuários podemos utilizá-los no seguinte comando para retornar algumas informações:

lookupnames <user>

O retorno deve ser algo como <user> S-1-5-21-4254423774-1266059056-3197185112-1012 (User: 1). Feito isso vamos ir mudando somente o último dígito, que no nosso exemplo seria o 2 de 1012. Então podemos executar os sequintes comandos (até recebermos um *unknown\unknown* como resposta).

lookupsids S-1-5-21-4254423774-1266059056-3197185112-1012
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1013
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1014
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1015
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1016
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1017
lookupsids S-1-5-21-4254423774-1266059056-3197185112-1018
etc...

Quebrando essa "chave" em partes, temos o seguinte:

PARTE

DESCRIÇÃO

S-1-5-21

SID

4254423774-1266059056-3197185112

Domínio ou Identificador do Computador Local

1015

RID

Enumerando Informações de Usuário

queryuser <user>
queryuser <rid-user>

Caso queira fazer um brute force para descoberta de usuários através de uma wordist, utilize o comando abaixo:

cat <users.txt> | while read line ; do rpcclient -U "" --no-pass -c="queryuser $line" <ip_target> ; sleep 1 ; done

Enumerando Informações de Grupo

Pegue o <rid> com o comando acima ou com enumdomusers como vimos anteriormente.

queryusergroups <rid>
querygroup <rid-group>

A partir da saída do comando acima, iremos ver no resultado, o(s) group rid, que iremos utilizar no comando abaixo para cada group rid:

querygroup <group_rid>

Enumerando Usuários de determinado Grupo

É sempre uma boa idéia verificar os usuários que pertecem ao grupo "Administrators".

querygroupmem <rid-group>

Rpcdump

rpcdump.py <ip>

Rpcinfo

Instalando

sudo apt-get install rpcbind nfs-common

Enumeração RPC

rpcinfo <ip>
rpcinfo -p <ip>

Na última coluna pode sair informações como rusersd, NFS e NIS (porta 778 que pode ser o nome do servidor). Se encontrar um serviço NFS, provavelmente você será capaz de listar, fazer e talvez até realizar upload de arquivos.

Enumeração RPC (com determinado aplicativo)

Caso queira enumerar o alvo que está executando o TTDB (ToolTalk Database), que tem um conhecido problema de segurança, execute:

rpcinfo -n 32776 -t <ip> 100083

EXPLICAÇÃO: O número 100083 é o "número do programa" do RPC para o TTDB. A opção -n é útil quando está sendo barrado pelo firewall.

OBS.: Utilize NMAP caso não saiba o "número do programa" e utilize o parâmetro -sR, assim o NMAP irá fazer todo o "trabalho sujo".

Rusers

Enumerando Usuários conectados (UNIX)

rusers -l <ip>

OBS.: O parâmetro -l, serve para deixar a saída mais detalhada, incluindo a quantidade de tempo desde que o usuário digitou. Essas informações são fornecidas pelo rpc.rusersd (RPC), caso esteja em execução.

nmap

nmap -sV -p 111 --script=rpcinfo <ip>
nmap -p 111 --script nfs* <ip>
nmap -p 111 -sSUC <ip>

Last updated