🔎MS-RPC - ports 135-593

Techniques d'exploitation des services MS-RPC

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:

$ 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:

$ 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:

$ 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:

$ 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

Nécessite les identifiants d'un compte utilisateur du domaine sur la machine cible.

Connexion

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

Reconnaissance

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

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

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

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

Changement de mot de passe

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

Création de compte LSA

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

Création d'un groupe

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

Suppression d'un groupe

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

Dernière mise à jour