Skip to main content

[Windows/Persistence] Cheat-sheet

Introduction

Cette page est un mémo des techniques et outils que l'on peut utiliser sur un système compromis à des fins de persistence.

image.png

Cheat-sheet

Mettre l'utilisateur dans un groupe privilégié

Il s'agit d'une technique simple qui consiste à utiliser un utilisateur non privilégié pour le mettre dans le groupe administrateur et passer sous les radars :

net localgroup administrators <USER> /add

Si ce groupe vous semble suspect, vous pouvez utiliser le groupe Backup Operators qui ne bénéficie pas des privilèges administrateurs mais profite d'un accès en lecture/écriture à tout le système :

net localgroup "Backup Operators" <USER> /add

Sinon, deux autres groupes non privilégiés mais ayant le droit d'utiliser RDP et WinRM (pour evil-winrm) sont :

  • Remote Desktop Users
  • Remote Management Users

Par défaut, le groupe Backup Operator est désactivé à cause de l'UAC. Son activation passe par une clé de registre :

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /t REG_DWORD /v LocalAccountTokenFilterPolicy /d 1

Ajouter un privilège à un utilisateur

Exporte la configuration actuelle dans le fichier config.inf :

secedit /export /cfg config.inf

Ensuite on peut éditer ce fichier pour ajouter un utilisateur sur les privilèges souhaités :

image.png

Ici, l'utilisateur thmuser2 bénéfiera des privilèves SeBackupPrivilege et SeRestorePrivilege.

Ensuite, on peut importer la nouvelle configuration et actualiser la base de donnée:

secedit /import /cfg config.inf /db config.sdb
secedit /configure /db config.sdb /cfg config.inf

Autoriser WinRM

On peut autoriser l'accès par WinRM à certains utilisateurs en exécutant la commande suivante depuis un environnement graphique afin d'ouvrir la boîte de dialogue adéquate :

Set-PSSessionConfiguration -Name Microsoft.PowerShell -showSecurityDescriptorUI

On peut ensuite sélectionner l'utilisateur souhaité et cocher la case Full Control :

image.png

Ainsi, l'utilisateur thmuser2 pourra utiliser le service WinRM sans être dans le groupe Remote Management Users.

Changer le RID d'un utilisateur

L'objectif de la manoeuvre va être de changer le RID (Relative ID) de l'utilisateur souhaité pour le définir sur 500 (utilisé par l'administrateur).

Pour cela, ouvrez la base de registre avec PsExec pour bénéficier des droits System depuis un shell administrateur :

PsExec64.exe -i -s regedit

On peut ensuite se rendre à l'emplacement HKLM\SAM\SAM\Domains\Account\Users\ dans la base de registre :

image.png

Dans notre cas, le RID de l'utilisateur est 1010 en décimal, ce qui donne 0x3F2 en hexadécimal.

On sélectionne la clé F et on édite l'entrée à la ligne 0x30 (voir la capture ci-dessus) où on retrouve le RID de l'utilisateur.

On peut ensuite l'éditer en sélectionnant les deux octets et en faisant clic droit puis Cut.

Ensuite, nous devons entrer la valeur 500 en décimal ce qui donne 0x01F4 en hexadécimal.

Il faut noter que c'est du Little Endian donc la notation est inversée. On doit donc entrer la valeur F401.

De cette manière, l'utilisateur sera considéré comme un administrateur par le système.