hacktricks/network-services-pentesting/pentesting-smb/rpcclient-enumeration.md
2023-06-06 18:56:34 +00:00

11 KiB

Enumeração com rpcclient

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

O que é um RID

Um Identificador Relativo (RID) é um identificador único (representado em formato hexadecimal) utilizado pelo Windows para rastrear e identificar objetos. Para explicar como isso se encaixa, vamos olhar para os exemplos abaixo:

  • O SID para o domínio NAME_DOMAIN.LOCAL é: S-1-5-21-1038751438-1834703946-36937684957.
  • Quando um objeto é criado dentro de um domínio, o número acima (SID) será combinado com um RID para fazer um valor único usado para representar o objeto.
  • Então, o usuário do domínio john com um RID:[0x457] Hex 0x457 seria = decimal 1111, terá um SID completo do usuário: S-1-5-21-1038751438-1834703946-36937684957-1111.
  • Isso é único para o objeto john no domínio NAME_DOMAIN.LOCAL e você nunca verá esse valor emparelhado ligado a outro objeto neste domínio ou em qualquer outro.

Definição da qui.

Enumeração com rpcclient

Parte desta seção foi extraída do livro "Network Security Assesment 3rd Edition"

Você pode usar a ferramenta rpcclient do Samba para interagir com pontos finais RPC via named pipes. A seguir, são listados comandos que você pode emitir para as interfaces SAMR, LSARPC e LSARPC-DS após estabelecer uma sessão SMB (geralmente exigindo credenciais).

Informações do servidor

  • Informações do servidor: srvinfo

Enumeração de usuários

  • Listar usuários: querydispinfo e enumdomusers
  • Obter detalhes do usuário: queryuser <0xrid>
  • Obter grupos de usuários: queryusergroups <0xrid>
  • Obter SID de um usuário: lookupnames <username>
  • Obter aliases de usuários: queryuseraliases [builtin|domain] <sid>
# Brute-Force users RIDs
for i in $(seq 500 1100); do
    rpcclient -N -U "" 10.129.14.128 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";
done

# You can also use samrdump.py for this purpose

Enumeração de grupos

  • Listar grupos: enumdomgroups
  • Obter detalhes do grupo: querygroup <0xrid>
  • Obter membros do grupo: querygroupmem <0xrid>

Enumeração de grupos de alias

  • Listar alias: enumalsgroups <builtin|domain>
  • Obter membros: queryaliasmem builtin|domain <0xrid>

Enumeração de domínios

  • Listar domínios: enumdomains
  • Obter SID: lsaquery
  • Informações do domínio: querydominfo

Enumeração de compartilhamentos

  • Enumerar todos os compartilhamentos disponíveis: netshareenumall
  • Informações sobre um compartilhamento: netsharegetinfo <share>

Mais SIDs

  • Encontrar SIDs por nome: lookupnames <username>
  • Encontrar mais SIDs: lsaenumsid
  • Ciclagem de RID (verificar mais SIDs): lookupsids <sid>

Comandos extras

Comando Interface Descrição
queryuser SAMR Recuperar informações do usuário
querygroup Recuperar informações do grupo
querydominfo Recuperar informações do domínio
enumdomusers Enumerar usuários do domínio
enumdomgroups Enumerar grupos do domínio
createdomuser Criar um usuário do domínio
deletedomuser Excluir um usuário do domínio
lookupnames LSARPC Procurar nomes de usuário para valores SIDa
lookupsids Procurar SIDs para nomes de usuário (ciclagem de RIDb)
lsaaddacctrights Adicionar direitos a uma conta de usuário
lsaremoveacctrights Remover direitos de uma conta de usuário
dsroledominfo LSARPC-DS Obter informações do domínio primário
dsenumdomtrusts Enumerar domínios confiáveis dentro de uma floresta AD

Para entender melhor como as ferramentas samrdump e rpcdump funcionam, você deve ler Pentesting MSRPC.

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