🐲persistence
La persistance consiste à maintenir l'accès à un système cible après avoir réussi à le compromettre.
🖥️ Obtenir les droits admin sans être admin
🕵️♀️ Ajouter un user à un groupe avec des droits important
Avoir les informations d'identification d'un administrateur serait le moyen le plus simple d'assurer la persistance sur une machine. Cependant, pour rendre plus difficile la détection de l'équipe bleue, nous pouvons manipuler les utilisateurs non privilégiés, qui ne seront généralement pas autant surveillés que les administrateurs, et leur accorder des privilèges administratifs d'une manière ou d'une autre.
Ajouter un user au groupe ADMIN
net localgroup administrators user /addL'utilisateur peut accéder au serveur à l'aide de RDP, WinRM ou tout autre service d'administration à distance disponible.
Cependant, cela peut être suspect et peut être détecté par les outils de sécurité, pour plus de discrétion vous pouvez :
Ajouter un user au groupe Backup Operators
net localgroup "Backup Operators" user /addÉtant donné qu'il s'agit d'un compte non privilégié, il ne peut pas se connecter à distance au système à moins d'être ajouté au groupe Remote Desktop Users (RDP) ou Remote Management Users (WinRM).
Ajouter au groupe Remote Desktop Users
net localgroup "Remote Management Users" user /addUne fois que l'utilisateur non privilégié a été ajouté au groupe Backup Operators, il peut copier le contenu des hives de registre SAM et SYSTEM. Ces fichiers sont généralement situés dans C:\Windows\System32\config.
Une fois que vous avez copié les fichiers, vous pouvez utiliser un outil tel que "pwdump" pour récupérer les hachages de mot de passe pour tous les utilisateurs.
Enfin, vous pouvez utiliser ces informations d'identification pour vous connecter en tant qu'utilisateur administratif et effectuer des actions avec des privilèges plus élevés.
Afficher les groupes d'un utilisateur
Pour élever les privilèges d'un utilisateur membre du groupe "Backup Operators" ou "Remote Management Users", il est nécessaire de désactiver la stratégie LocalAccountTokenFilterPolicy ( elle supprime tout compte local de ses privilèges administratifs lors de la connexion à distance) en utilisant la commande suivante :
Pour sauvegarder les fichiers SAM et SYSTEM et les télécharger sur la machine d'attaque :
Pour dumper les hashes de mots de passe à partir des fichiers SAM et SYSTEM :
Exemple :
Vous trouverez surement le hash admin, vous pouvez vous connectez en tant que admin :
🔎 Attribuer des privilèges sans changer le groupe
Pour attribuer des privilèges spéciaux à un utilisateur sans modifier son appartenance à un groupe, vous pouvez utiliser la commande "secedit" pour exporter la configuration de sécurité actuelle, modifier la configuration pour ajouter les privilèges souhaités à l'utilisateur, puis importer la configuration mise à jour dans le système.
Exportez la configuration de sécurité actuelle
Cela créera un fichier config.infcontenant la configuration de sécurité actuelle.
Modifier les privilèges
Ouvrez le fichier config.inf dans un éditeur de texte et recherchez les lignes concernant les privilèges que vous souhaitez ajouter à l'utilisateur, tels que SeBackupPrivilege et SeRestorePrivilege.
Ajoutez l'utilisateur aux lignes de configuration pour les privilèges souhaités en utilisant le format suivant :
Par exemple, pour ajouter l'utilisateur "user" aux privilèges "SeBackupPrivilege" et "SeRestorePrivilege", vous pouvez ajouter les lignes suivantes :
Assurez-vous de remplacer "<SID-PART-2>", "<SID-PART-3>", "<SID-PART-4>" et "1005" par les valeurs appropriées pour l'utilisateur "user".
Puis enregistrez les modifications apportées au fichier config.inf.
Convertissez le fichier "config.inf" en un fichier "config.sdb"
Cela créera un fichier config.sdb contenant la configuration de sécurité mise à jour.
Appliquez la configuration de sécurité mise à jour
Une fois que vous avez attribué les privilèges souhaités à l'utilisateur, vous pouvez modifier le descripteur de sécurité associé au service WinRM pour permettre à l'utilisateur de se connecter à distance.
Pour ce faire, vous pouvez utiliser la commande "Set-PSSessionConfiguration" dans PowerShell pour ouvrir la fenêtre de configuration du descripteur de sécurité de WinRM, puis ajouter l'utilisateur et lui attribuer tous les privilèges pour se connecter à WinRM.
🗝️ RID Hijacking
Pour chaque utilisateur sur un système Windows est assigné un identifiant unique appelé RID (Relative ID). Cet identifiant est stocké dans le registre Windows et est utilisé pour identifier l'utilisateur lors de la connexion au système.
Lorsqu'un utilisateur se connecte, le processus LSASS (Local Security Authority Subsystem Service) récupère son RID dans le registre et crée un jeton d'accès associé à ce RID. Si nous pouvons modifier la valeur du RID dans le registre, nous pouvons faire croire à Windows que nous sommes l'administrateur en associant le même RID à notre compte utilisateur non privilégié.
Compte administrateur par défaut RID = 500
Utilisateurs réguliers ont généralement un RID >= 1000.
Pour trouver les RID attribués à n'importe quel utilisateur :
Le RID est le dernier bit du SID.
Accéder au SAM (Security Account Manager) en tant que SYSTEM et modifier le RID d'un utilisateur :
Dans Regedit, allez à HKLM\SAM\SAM\Domains\Account\Users\ et recherchez la clé correspondant à l'utilisateur en utilisant son RID en hexadécimal. Exemple (1010 = 0x3F2)
Sous cette clé, vous trouverez une valeur appelée "F" qui contient le RID effectif de l'utilisateur à la position 0030. Remplacez les deux octets à cette position par le RID de l'administrateur en hexadécimal, en alternant les octets. 500 = 0x01F4 en alternant les octets (F401)

La prochaine fois que l'utilisateur non privilégié se connectera, le système d'exploitation l'associera au même RID que l'administrateur et lui accordera les mêmes privilèges.
L'UAC limite le passage du hachage
L'UAC (User Account Control) limite les utilisateurs locaux qui peuvent effectuer des opérations d'administration à distance. Et comme la plupart des attaques exploitant le pass-the-hash reposent sur des opérations d'administration à distance, cela affecte cette technique..
la clé de registre
LocalAccountTokenFilterPolicyest réglé sur0par défaut. Cela signifie que le compte d'administrateur local intégré (RID-500, « Administrateur ») est le seul compte local autorisé à effectuer des tâches d'administration à distance. Le régler sur1permet également aux autres administrateurs locaux.la clé de registre
FilterAdministratorTokenest réglé sur0par défaut. Il permet au compte d'administrateur local intégré (RID-500, « Administrateur ») d'effectuer des tâches d'administration à distance. Si réglé sur1, ce n'est pas le cas.
🔐 Backdoor
Une méthode pour établir la persistance consiste à falsifier certains fichiers avec lesquels l'utilisateur interagit régulièrement.
💾 Falsification de fichier executable :
Il est important de noter que cette méthode peut être détectée par des outils de sécurité tels que les antivirus, et qu'elle peut également être perturbée si le fichier exécutable légitime est mis à jour ou remplacé.
Trouver un exécutable fréquemment utilisé par l'utilisateur (par exemple, PuTTY)
Télécharger l'exécutable sur la machine de l'attaquant et le modifier pour exécuter une charge utile (par exemple, avec msfvenom)
Commande pour créer un exécutable de porte dérobée avec msfvenom :
Renvoyer le fichier exécutable malveillant vers la machine cible, en utilisant le même nom de fichier et le même emplacement que le fichier exécutable légitime.
Vérifier que le fichier exécutable malveillant fonctionne correctement pour l'utilisateur cible, de sorte qu'il ne soupçonne pas qu'il a été falsifié.
Il est important de noter que cette méthode peut être détectée par des outils de sécurité tels que les antivirus, et qu'elle peut également être perturbée si le fichier exécutable légitime est mis à jour ou remplacé
📝 Modification du raccourci
Trouver un raccourci fréquemment utilisé par l'utilisateur (par exemple, la calculatrice)
Créer un script (
backdoor.ps1) dans un emplacement discret (par exemple,C:\Windows\System32) et lancé dans une fenêtre cachée avec Powershell :
Modifier le raccourci pour pointer vers un script qui exécutera une porte dérobée puis lancera le programme habituel (clique droit > propriété > target)

Vous pouvez aussi changer l'icone afin que l'utilisateur ne voit pas la différence.
➡️ Détournement d'associations de fichiers
Cela consiste à forcer le système d'exploitation à exécuter un shell chaque fois que l'utilisateur ouvre un type de fichier spécifique.
Les associations de fichiers par défaut du système d'exploitation sont conservées dans le registre, où une clé est stockée pour chaque type de fichier sous HKLM\Software\Classes.
Pour vérifier quel programme est utilisé pour ouvrir les fichiers .txt, vous pouvez simplement aller vérifier la sous-clé .txt et trouver quel ID programmatique (ProgID) y est associé. (dans notre cas, il s'agit de txtfile)

Naviguez jusqu'à la clé de registre pour le ProgID que vous avez trouvé et modifier le logiciel qui exécute les fichier texte par défaut par un lien vers votre backdoor :
Avant :

Le %1 dans la commande C:\Windows\system32\WORKPAD.EXE %1 représente le premier argument passé à la commande. Dans ce cas, l'argument est le nom de fichier que l'utilisateur a essayé d'ouvrir.
Après :

Enregistrer votre backdoor sous C:\Windows\backdoor.ps1
Il ne vous reste plus qu'a mettre un écouteur sur votre machine attaquante et à exécuter un fichier texte sur la cible.
🔄 Service au démarrage
Les services Windows sont des programmes qui s'exécutent en arrière-plan s,ils peuvent être configurés pour démarrer automatiquement au démarrage, ce qui les rend utiles pour maintenir l'accès à un système compromis.
Il existe deux manières principales d'abuser des services pour établir la persistance : soit créer un nouveau service, soit modifier un service existant pour exécuter notre charge utile..
📎 Créer un service
Linux
Créer un reverse shell :
Créer un serveur :
et un handler
Windows
Récupérer le fichier malveillant :
Créer un service
Le lancer :
📝 Modifier un service
Afin de moins se faire remarquer par la BlueTeam.
Lister les services existants :
Voir la configuration du service :
3 choses importantes :
L'exécutable
BINARY_PATH_NAMEdevrait pointer vers notre payload.Le service
START_TYPEdoit être enAUTO_STARTLe
SERVICE_START_NAME, qui est le compte sous lequel le service sera exécuté, doit de préférence être défini sur localSystème pour obtenir les privilèges SYSTEM.
Afficher les droits de modification d'un service :
Linux
Générer payload :
Faire serveur + handler
Windows
Récupérer payload
reconfigurer les paramètres du service :
🕒 Tâches planifié
Cette commande crée une tâche nommée TaskBackdoor qui est exécutée toutes les minutes (/sc minute /mo 1) et execute un reverse shell :
📌 Rendre la tâches discrète
Le descripteur de sécurité ou Security Descriptor (SD) est une liste de contrôle d'accès (ACL) qui indique quels utilisateurs ont accès à la tâche planifiée. Si vous supprimez la SD, aucun utilisateur ne pourra voir la tâche, y compris les administrateurs.
Supprimez la dans : Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Tâche_nom

Vérifiez la tâche (normalement elle n’apparaît pas :
🔃 Malware au démarrage
📁️ Dossier de démarrage
Spécifique à un utilisateur C:\Users<your_username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Général : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Déposer un payload dans ces dossiers :
Pour un utilisateur spécifique :
Pour tous les utilisateurs :
🗓️ Via le registre
Exécuter un programme lors de sa connexion via le registre
HKCU\Software\Microsoft\Windows\CurrentVersion\RunHKCU\Software\Microsoft\Windows\CurrentVersion\RunOnceHKLM\Software\Microsoft\Windows\CurrentVersion\RunHKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
💻 Winlogon
Winlogon gère l'interface d'ouverture de session et d'authentification. Il est également responsable de la création de la session utilisateur et de la sécurité de la station de travail.
Modifie soit shell ou Userinit dans HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ :
Modifier avec cette ligne :
C:\Windows\system32\userinit.exe, C\Windows\reverse_shelle.exe

🌐️ Serveur WEB
Le shell web est écrit en ASP.NET, un framework de développement web pour le langage de programmation .NET. Le fichier shell.aspx est le script ASP.NET qui contient le code du shell web. En déposant ce fichier dans le répertoire web du serveur (par défaut C:\inetpub\wwwroot), l'attaquant peut accéder et exécuter des commandes sur le serveur en se connectant à l'URL du shell web.
l'envoyé sur la cible
Sur la cible, déplacé le vers :
move shell.aspx C:\inetpub\wwwroot\Donné les droits :
icacls shell.aspx /grant Everyone:FSur l'attaquant :
http://ip_cible/shell.aspx
Last updated