# MS-RPC - ports 135-593

## Modules Metasploit

### Endpoint Mapper

Le module **endpoint\_mapper** interroge le service EndPoint Mapper d'un système distant pour déterminer quels services sont disponibles.

Utilisation:

```bash
$ msfconsole
msf > use auxiliary/scanner/dcerpc/endpoint_mapper
msf auxiliary(scanner/dcerpc/endpoint_mapper) > set RHOST <target IP>
msf auxiliary(scanner/dcerpc/endpoint_mapper) > run
```

### Hidden

Le scanner **dcerpc/hidden** se connecte à une plage d'adresses IP donnée et essaie de localiser tous les services RPC qui ne sont pas répertoriés dans Endpoint Mapper et de déterminer si l'accès anonyme au service est autorisé.

Utilisation:&#x20;

```bash
$ msfconsole
msf > use auxiliary/scanner/dcerpc/hidden
msf auxiliary(scanner/dcerpc/hidden) > set RHOST <target IP>
msf auxiliary(scanner/dcerpc/hidden) > run
```

### Management

Le module **dcerpc/management** analyse une plage d'adresses IP et obtient des informations de l'interface de gestion à distance du service DCERPC.

Utilisation:

```bash
$ msfconsole
msf > use auxiliary/scanner/dcerpc/management
msf auxiliary(scanner/dcerpc/management) > set RHOST <target IP>
msf auxiliary(scanner/dcerpc/management) > run
```

### tcp\_dcerpc\_auditor

Le module **dcerpc/tcp\_dcerpc\_auditor** analyse une plage d'adresses IP pour déterminer quels services DCERPC sont disponibles sur un port TCP.

Utilisation:

```bash
$ msfconsole
msf > use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
msf auxiliary(scanner/dcerpc/tcp_dcerpc_auditor) > set RHOST <target IP>
msf auxiliary(scanner/dcerpc/tcp_dcerpc_auditor) > run
```

ressource: <https://www.offensive-security.com/metasploit-unleashed/scanner-dcerpc-auxiliary-modules/>

## Active Directory Énumération

{% hint style="warning" %}
Nécessite les identifiants d'un compte utilisateur du domaine sur la machine cible.
{% endhint %}

### Connexion

```bash
$ rpcclient -U <Domaine>/<Username> <target IP>
Enter <Domaine>\<Username>'s password: <password>
rpcclient $>
```

### Reconnaissance

```bash
rpcclient $> srv info   #informations serveur
platform_id: ...
os_version: ...
server_type: ...

rpcclient $> querydominfo    #informations domaine sur le serveur
domain: ...
Total users: ...
Total groups: ...
server Role: ...
...
...

rpcclient $> enumdomusers    #Enumeration des utilisateurs
user:[Administrateur] rid:[...]
user: ...
...

rpcclient $> enumdomgroups    #Enumeration des groupes
group: ... rid: ...
...
...

rpcclient $> enumprivs    #Enumeration des privilèges
found ... privileges
...
...

rpcclient $> getdompwinfo    #informations sur la politique de mdp
min_password_length: ...
password_properties: ...

rpcclient $> getusrdompwinfo <user_rid>    #getdompwinfo ciblé pour un utilisateur speécifique
min_password_length: ...
password_properties: ...

rpcclient $> lsaenumsid    #Enumeration des SID
found ... SIDs
...
...

rpcclient $> enumalsgroups builtin
rpcclient $> enumalsgroups domain    #Enumeration des alias de groupes dans le domaine
group:[Administrators] rid:[...]
...
...

rpcclient $> netshareenum    #Enumeration des partages réseaux
netname: ...
    remark: ...
    path: ...
    password: ...
netname: ...
...
...

rpcclient $> enumdomains    #Enumeration des domaines
name: [...] idx:[...]
...
...

rpcclient $> lsaquery
Domain Name: ...
Domain SID: ...

rpcclient $> dsroledominfo    #Informations Directory Service
Machine Role = ...
Directory Service is running | is not running

rpcclient $> lsaquerysecobj    #Visualisation des autoraisations, privilèges etc
```

### Details

```bash
rpcclient $> queryuser <nom d'utilisateur>
User Name: ...
Full Name: ...
Description: ...
Comment: ...
Password last set time: ...
...
...

rpcclient $> enumdispinfo    #enumdomuser détaillé
index: ... acb: ... Account: ... Name: ... Desc: ...
...
...

rpcclient $> querygroup <nom du groupe>
Group Name: ...
Description: ...
...
...

rpcclient $> netshareenumall    #Enumeration totale des partages réseaux
netname: ...
    remark: ...
    path: ...
    password: ...
netname: ...
...
...

rpcclient $> netsharegetinfo <partage>    #détails sur un partage spécifique
Permissions: ...
SID: ...
Owner SID: ...
Group SID: ...
...
...

rpcclient $> lookupdomain <domaine>    #détails sur un domaine
Domain Name: <domaine> Domain SID: ...

rpcclient $> samlookupnames domain <user>    #SAM d'un utilisateur spécifique
name <user>: <SAM>

rpcclient $> lookupsids <SID>    #A qui appartient ce SID
<SID> <user>
```

### Création d'un utilisateur

```bash
rpcclient $> createdomuser <user>
rpcclient $> setuserinfo2 <user> 24 <password>
rpcclient $> enumdomusers
...
...
...
user:[<user>] rid:[...]

rpcclient $> lookupnames <user>    #Vérifier si l'utilisateur créé a un SID
<user> <SID>

```

### Supprimer un utilisateur

```bash
rpcclient $> deletedomuser <user>
rpcclient $> enumdomusers
...
...
```

### Changement de mot de passe

```bash
rpcclient $> chpasswd <user> <password> <new password>
```

### Création de compte LSA

```bash
rpcclient $> lookupnames <user>
<user> <SID>
rpcclient $> lsacreateaccount <SID>
```

### Création d'un groupe

```bash
rpcclient $> createdomgroup <nom du groupe>
rpcclient $> enumdomgroups
...
...
group:[<nom du groupe>] rid:[...]
```

### Suppression d'un groupe

```bash
rpcclient $> deletedomgroup <nom du groupe>
rpcclient $> enumdomgroups
...
...
```
