Apprenez les tactiques, techniques et connaissances communes contradictoires (ATT @ CK). Tactiques d'entreprise. Partie 4

Escalade de privilèges


Liens vers toutes les parties:
Partie 1. Obtention de l'accès initial (accès initial)
Partie 2. Exécution
Partie 3. Fixation (persistance)
Partie 4. Escalade de privilèges
Partie 5. Évasion de la défense
Partie 6. Obtention des informations d'identification (accès aux informations d'identification)
Partie 7. Découverte
Partie 8. Mouvement latéral

L'escalade de privilèges est le résultat d'actions qui permettent à un attaquant ou à un programme malveillant d'obtenir un niveau plus élevé d'autorisations sur le système ou le réseau attaqué. Les techniques d'escalade de privilèges décrivent les méthodes par lesquelles un adversaire, après avoir obtenu un accès non privilégié à un système attaqué, en utilisant diverses «faiblesses» d'un système peut obtenir des droits d'administrateur local, système ou root. L'utilisation par des attaquants de comptes d'utilisateurs disposant de droits d'accès à des systèmes spécifiques ou d'autorisations pour effectuer certaines opérations peut également être considérée comme une escalade de privilèges.

L'auteur n'est pas responsable des conséquences possibles de l'application des informations énoncées dans l'article, et s'excuse également pour d'éventuelles inexactitudes faites dans certaines formulations et termes. Les informations publiées sont une nouvelle version gratuite du contenu de MITRE ATT & CK .

Il est important d'annuler que certaines des techniques décrites dans la matrice ATT @ CK sont simultanément incluses dans plusieurs étapes de la chaîne d'attaque, par exemple, l'interception de recherche de DLL peut être utilisée à la fois pour sécuriser l'accès par l'exécution non autorisée d'une DLL malveillante et pour augmenter les privilèges en lançant la DLL dans le processus, travaillant dans le contexte d'un utilisateur plus privilégié.

Manipulation du jeton d'accès


Système: Windows
Droits: utilisateur, administrateur
Description: les attaquants peuvent utiliser des jetons d'accès pour effectuer des actions dans divers contextes de sécurité des utilisateurs ou du système, évitant ainsi la détection d'activités malveillantes. Un adversaire peut utiliser les fonctions de l'API Windows pour copier des jetons d'accès à partir de processus existants (vol de jeton), pour cela, il doit être dans le contexte d'un utilisateur privilégié (par exemple, un administrateur). Le vol de jetons d'accès est généralement utilisé pour élever les privilèges de l'administrateur au système. Un adversaire peut également utiliser un jeton d'accès au compte pour l'authentification sur un système distant, si ce compte dispose des autorisations nécessaires sur le système distant.
Considérez plusieurs façons d'abuser des jetons d'accès:
  • Vol et usurpation d'identité de jetons. L'emprunt d'identité de jetons est la capacité du système d'exploitation à démarrer des threads dans un contexte de sécurité autre que le contexte du processus auquel ce thread appartient. En d'autres termes, la personnification des jetons vous permet d'effectuer toutes les actions au nom d'un autre utilisateur. Un adversaire peut dupliquer un jeton d'accès à l'aide de la fonction DuplicateTokenEX et utiliser ImpersonateLoggedOnUser pour appeler un thread dans le contexte d'un utilisateur connecté, ou utiliser SetThreadToken pour attribuer un jeton d'accès à un flux.
  • Créez un processus à l'aide d'un jeton d'accès. Un attaquant peut créer un jeton d'accès à l'aide de la fonction DuplicateTokenEX puis l'utiliser avec CreateProcessWithTokenW pour créer un nouveau processus qui s'exécute dans le contexte de l'utilisateur emprunté.
  • Obtention et usurpation d'identité de jetons d'accès. Un adversaire, disposant d'un nom d'utilisateur et d'un mot de passe, peut créer une session de connexion à l'aide de la fonction API LogonUser , qui renverra une copie du jeton d'accès à la session d'une nouvelle session, puis utilisera la fonction SetThreadToken pour attribuer un jeton au thread. Metasploit Meterpreter et CobaltStrike disposent d'outils pour manipuler les jetons d'accès afin d'élever les privilèges.

Recommandations de protection: Afin d'utiliser pleinement les tactiques ci-dessus, un attaquant doit avoir les droits d'administrateur système, alors n'oubliez pas de limiter les privilèges des utilisateurs ordinaires. Tout utilisateur peut tromper les jetons d'accès s'il possède des informations d'identification légitimes. Limitez la possibilité pour les utilisateurs et les groupes de créer des jetons d'accès:
GPO: Configuration ordinateur> [Stratégies]> Paramètres Windows> Paramètres de sécurité> Stratégies locales> Attribution des droits utilisateur: créer un objet jeton
Déterminez également qui peut remplacer les jetons de processus des services locaux ou réseau:
GPO: Configuration ordinateur> [Stratégies]> Paramètres Windows> Paramètres de sécurité> Stratégies locales> Attribution des droits utilisateur: remplacer un jeton de niveau de processus

Modification des fichiers exécutables des applications "fonctionnalités d'accessibilité de Windows" (fonctionnalités d'accessibilité)


Système: Windows
Droits: Administrateur
Description: les applications d'accessibilité (loupe d'écran, clavier à l'écran, etc.) peuvent être lancées à l'aide de combinaisons de touches avant qu'un utilisateur ne se connecte au système. Un attaquant peut remplacer les fichiers de démarrage de ces programmes ou changer la façon dont ils sont lancés et ouvrir une console de commande ou obtenir une porte dérobée sans se connecter.
  • C: \ Windows \ System32 \ sethc.exe - lancé en appuyant 5 fois sur la touche Maj;
  • C: \ Windows \ System32 \ utilman.exe - lancé en appuyant sur la combinaison de Win + U.

Dans WinXP et versions ultérieures, sethc.exe et utilman.exe peuvent être remplacés, par exemple, par cmd.exe, puis lorsque vous appuyez sur la combinaison de touches souhaitée, cmd.exe démarre avant d'accéder à Windows avec les privilèges système.
Dans Vista et les versions ultérieures, vous devez modifier la clé de Registre qui configure cmd.exe ou un autre programme en tant que débogueur, par exemple, pour ultiman.exe. Après avoir modifié le registre et appuyé sur la combinaison de touches souhaitée sur l'écran de connexion ou lors de la connexion à l'hôte via RDP, cmd.exe avec les droits système sera exécuté.
Il existe également des programmes Windows qui peuvent être utilisés pour implémenter cette technique d'attaque:
  • C: \ Windows \ System32 \ osk.exe;
  • C: \ Windows \ System32 \ Magnify.exe;
  • C: \ Windows \ System32 \ Narrator.exe;
  • C: \ Windows \ System32 \ DisplaySwitch.exe;
  • C: \ Windows \ System32 \ AtBroker.exe.

Recommandations de sécurité: configurez le début de l'authentification réseau obligatoire pour les utilisateurs distants avant de créer une session RDP et d'afficher l'écran de connexion ( activé par défaut dans Windows Vista et versions ultérieures ). Utilisez la passerelle Bureau à distance pour gérer les connexions et configurer la sécurité RDP.

Modification de la clé des DLL AppCert


Système: Windows
Droits: administrateur, système
Description: les DLL spécifiées dans la valeur de clé AppCertDLLs sont chargées dans chaque processus qui appelle les fonctions d'API fréquemment utilisées: CreateProcess, CreateProcessAsUser, CreateProcessWithLoginW, CreateProcessWithTokenW, WinExec . La valeur de la clé AppCertDLLs peut être utilisée de manière abusive en provoquant le chargement d'une DLL malveillante et en exécutant certains processus. AppCertDLLs est stocké dans la clé de registre suivante:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager .

Recommandations de protection: utilisez tous les moyens possibles pour bloquer les logiciels potentiellement dangereux et télécharger des DLL inconnues, comme AppLocker et DeviceGuard.

Modification de la clé des DLL AppInit


Système: Windows
Droits: administrateur, système
Description: les DLL spécifiées dans la valeur de clé AppInit_DLLs sont chargées dans chaque processus chargé par user32.dll. En pratique, c'est presque tous les programmes.
AppInit_DLLs est stocké dans les clés de registre suivantes:
  • HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows;
  • HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows.

La valeur de la clé AppInit_DLLs peut être utilisée abusivement pour dépasser les privilèges en chargeant des DLL malveillantes et en démarrant certains processus. La fonctionnalité AppInit_DLLs est désactivée dans Windows 8 et versions ultérieures lorsque Secure Boot est activé.

Recommandations de protection: envisagez d'utiliser une version du système d'exploitation antérieure à Windows 8 et d'activer un démarrage sécurisé. Utilisez toutes sortes de moyens pour bloquer les logiciels potentiellement dangereux et télécharger des DLL inconnues, telles que AppLocker et DeviceGuard.

Abus du sous-système de compatibilité des applications (Application Shimming)


Système: Windows
Droits: Administrateur
Description: l' infrastructure / l'infrastructure de compatibilité des applications Microsoft Windows a été créée pour garantir la compatibilité des programmes avec les mises à jour Windows et les modifications du code du système d'exploitation. Le système de compatibilité utilise les soi-disant shim ("joints") - des bibliothèques qui agissent comme un tampon entre le programme et le système d'exploitation. À l'aide du cache de shim, le système détermine le besoin de joints de shim (stockés en tant que base de données .sdb). Divers fichiers .sdb stockent diverses procédures pour intercepter le code d'application, le traiter, puis le rediriger vers le système d'exploitation. La liste de tous les joints shim installés par le programme d'installation (sdbinst.exe) est stockée par défaut dans:
  • % WINDIR% \ AppPatch \ sysmain.sdb ;
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB .

Les bases de données shim personnalisées sont stockées dans:
  • % WINDIR% \ AppPatch [64] \ Custom;
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom .

Pour garantir la protection en mode utilisateur, la possibilité de changer le noyau du système d'exploitation à l'aide de shim-gaskets est exclue et des droits d'administrateur sont requis pour les installer. Cependant, certains cales peuvent être utilisées pour contourner le contrôle de compte d'utilisateur (UAC), l'injection de DLL, désactiver la prévention de l'exécution des données et la gestion des exceptions de structure , ainsi que pour intercepter les adresses de mémoire. Un attaquant utilisant shim-gaskets peut augmenter les privilèges, installer des portes dérobées, désactiver la protection du système d'exploitation, comme Windows Defender.

Recommandations de protection: Il n'y a pas beaucoup de façons d'empêcher le shim d'application. La désactivation de la compatibilité des applications n'est pas recommandée afin d'éviter des problèmes avec la stabilité du système d'exploitation. Microsoft a publié KB3045645 , qui supprimera l'indicateur «élévation automatique» dans le fichier sdbinst.exe pour empêcher l'utilisation du système de shim pour contourner l'UAC.

Contourner le contrôle de compte d'utilisateur


Système: Windows
Droits: utilisateur, administrateur
Description: Il existe de nombreuses façons de contourner l'UAC, dont les plus courantes sont implémentées dans le projet UACMe . De nouvelles façons de contourner l'UAC sont régulièrement découvertes, telles que l'utilisation abusive de l'application système eventvwr.exe , qui peut exécuter un fichier binaire ou un script élevé. Les programmes malveillants peuvent également être intégrés dans des processus approuvés par lesquels l'UAC permet une élévation de privilèges sans inviter un utilisateur.
Pour contourner l'UAC à l'aide de eventvwr.exe, la clé est modifiée dans le registre Windows:
[HKEY_CURRENT_USER] \ Software \ Classes \ mscfile \ shell \ open \ command .
Pour contourner l'UAC à l'aide de sdclt.exe, les clés du registre Windows sont modifiées:
[HKEY_CURRENT_USER] \ Software \ Microsoft \ Windows \ CurrentVersion \ App Paths \ control.exe;
[HKEY_CURRENT_USER] \ Software \ Classes \ exefile \ shell \ runas \ command \ isolatedCommand.

Recommandations de protection: supprimez les utilisateurs du groupe d'administrateurs locaux sur les systèmes protégés. Si possible, activez le niveau de protection le plus élevé dans les paramètres UAC.

Interception de recherche de DLL (détournement de commande de recherche de DLL)


Système: Windows
Droits: utilisateur, administrateur, système
Description: La technique consiste à exploiter les vulnérabilités de l'algorithme pour trouver par les applications les fichiers DLL dont elles ont besoin pour fonctionner ( MSA2269637 ). Souvent, le répertoire de recherche de DLL est le répertoire de travail du programme. Les attaquants peuvent donc remplacer la DLL source par une DLL malveillante portant le même nom de fichier.
Des attaques à distance sur les recherches de DLL peuvent être effectuées lorsque le programme installe son répertoire actuel dans un répertoire distant, par exemple, un partage réseau. De plus, les attaquants peuvent modifier directement la méthode de recherche et de chargement des DLL en remplaçant les fichiers .manifest ou .local, qui décrivent les paramètres de recherche de DLL. Si le programme attaqué fonctionne avec un niveau de privilèges élevé, la DLL malveillante chargée par celui-ci sera également exécutée avec des droits élevés. Dans ce cas, la technique peut être utilisée pour augmenter les privilèges de l'utilisateur à l'administrateur ou au système.

Recommandations de protection: Empêchez le chargement de DLL à distance (activé par défaut dans Windows Server 2012+ et disponible avec les mises à jour pour XP + et Server 2003+). Active le mode de recherche sécurisé pour les DLL, ce qui limite les répertoires de recherche aux répertoires tels que % SYSTEMROOT% avant d'effectuer une recherche de DLL dans le répertoire d'application actuel.
Activation du mode de recherche de DLL sécurisée:
Configuration ordinateur> [Stratégies]> Modèles d'administration> MSS (hérité): MSS: (SafeDllSearchMode) Activez le mode de recherche DLL sécurisée.
Clé de registre correspondante:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SafeDLLSearchMode.

Envisagez d'auditer un système protégé pour corriger les déficiences des DLL à l'aide d'outils tels que PowerUP dans PowerSploit. N'oubliez pas de bloquer les logiciels malveillants et potentiellement dangereux, ainsi que de suivre les recommandations de Microsoft .

Interception de recherche Dylib (détournement de Dylib)


Système: macOS
Droits: utilisateur
Description: La technique est basée sur des vulnérabilités dans les algorithmes de recherche de bibliothèque dynamique dylib sur macOS et OS X. L'essentiel est de déterminer le dylib que l'application attaquée charge, puis de placer la version malveillante de dylib avec le même nom dans le répertoire de travail de l'application. Cela entraînera l'application à charger dylib, qui se trouve dans le répertoire de travail du programme. Dans ce cas, le Dylib malveillant sera exécuté avec les droits d'accès de l'application attaquée.

Conseils de sécurité : empêchez les utilisateurs d'écrire des fichiers dans les répertoires de recherche dylib. Audit des vulnérabilités à l'aide du scanner de piratage Dylib d'Objective-See.

Exploitation pour escalade de privilèges


Système: Windows, Linux, macOS
Droits: utilisateur
Description: les adversaires peuvent augmenter les privilèges du système attaqué en utilisant des vulnérabilités logicielles.

Recommandations de protection: mises à jour logicielles régulières sur tous les postes de travail, serveurs, équipements réseau et autres périphériques protégés connectés au réseau protégé. Analysez les types de menaces, les vulnérabilités et exploitez les programmes qui peuvent être utilisés contre l'organisation protégée. Des systèmes de protection contre les exploits tels que Windows Defender Exploit Guard (WDEG) pour Windows 10 ou Enhanced Mitigation Experience Toolkit (EMET) pour les versions antérieures de Windows sont également recommandés.

h3 Injection EWM (injection de mémoire extra-fenêtre)
Système: Windows
Droits: administrateur, système
Description: la technique consiste à abuser de la mémoire Windows supplémentaire, la mémoire dite Extra Window (EWM). La taille EWM est de 40 octets, adaptée pour stocker un pointeur 32 bits et est souvent utilisée pour indiquer une référence aux procédures. Les programmes malveillants au cours de la chaîne d'attaque peuvent placer un pointeur vers un code malveillant dans le EWM, qui sera ensuite lancé par le processus d'application infecté.

Recommandations de protection: Étant donné que les techniques d'injection EWM sont basées sur l'utilisation abusive des fonctions de développement du système d'exploitation, les efforts de protection doivent viser à empêcher le lancement de programmes malveillants et d'outils malveillants. Il est recommandé d'identifier et de bloquer les logiciels potentiellement dangereux à l'aide d'AppLocker, d'applications de liste blanche ou d'appliquer des stratégies de restriction logicielle.

Inconvénients des autorisations au niveau du système de fichiers (faiblesse des autorisations du système de fichiers)


Système: Windows
Droits: utilisateur, administrateur
Description: L'essence de la technique est la substitution de fichiers exécutables qui sont automatiquement lancés par divers processus (par exemple, lorsque le système d'exploitation démarre ou à un certain moment, si les droits sur les fichiers exécutables sont configurés de manière incorrecte). Après l'usurpation d'identité, le fichier malveillant sera lancé avec les droits du processus, donc si le processus a un niveau d'accès plus élevé, l'attaquant pourra augmenter les privilèges. Dans cette technique, les attaquants peuvent tenter de manipuler les fichiers binaires du service Windows.
Une autre variante de l'attaque est associée aux lacunes des algorithmes dans le travail des installateurs auto-extractibles. Au cours du processus d'installation, les installateurs décompressent souvent divers fichiers utiles, y compris .dll et .exe, dans le répertoire% TEMP%, cependant, ils ne peuvent pas définir les autorisations appropriées pour restreindre l'accès aux fichiers décompressés, ce qui permet aux attaquants d'effectuer une usurpation de fichier et, en conséquence, augmenter les privilèges ou contourner le contrôle de compte, comme certains installateurs s'exécutent avec des privilèges étendus.

Recommandations de protection: limitez les privilèges des comptes afin que seuls les administrateurs puissent gérer les services et interagir avec les fichiers binaires utilisés par les services. Désactivez les options d'escalade de privilèges UAC pour les utilisateurs standard. Les paramètres UAC sont stockés dans la clé de registre suivante:
  • [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System] .

Pour rejeter automatiquement les demandes d'escalade de privilèges, vous devez ajouter une clé:
  • "ConsentPromptBehaviorUser" = dword: 00000000.

Pour contrôler le travail des installateurs, vous devez ajouter une clé:
  • "EnableInstallerDetection" = dword: 00000001 , qui nécessitera un mot de passe pour installer les programmes.


Interception des appels de fonctionnalités de l'API Windows (accrochage)


Système: Windows
Droits: administrateur, système
Description: les fonctions de l'API Windows sont généralement stockées dans des DLL. La technique du hooking consiste à rediriger les appels vers les fonctions API en:
  • Procédures de hook - procédures intégrées au système d'exploitation qui exécutent du code lorsque divers événements sont appelés, par exemple, des frappes de touches ou le déplacement de la souris;
  • Modifications de la table d'adresses (IAT), qui stocke des pointeurs vers des fonctions API. Cela vous permettra de "tromper" l'application attaquée, la forçant à lancer une fonction malveillante;
  • Changement direct de fonction (épissage), au cours duquel les 5 premiers octets de la fonction sont modifiés, au lieu desquels la transition vers une fonction malveillante ou autre déterminée par l'attaquant est insérée.

Comme les injections, les attaquants peuvent utiliser le hook pour exécuter du code malveillant, masquer son exécution, accéder à la mémoire du processus attaqué et augmenter les privilèges. Les attaquants peuvent capturer des appels d'API qui incluent des paramètres qui contiennent des données d'authentification. Le hooking est généralement utilisé par les rootkits pour masquer les activités malveillantes dans le système.

Recommandations de protection: l' interception d'événements dans le système d'exploitation fait partie du fonctionnement normal du système, donc toute restriction de cette fonctionnalité peut nuire à la stabilité des applications légitimes, telles que les logiciels antivirus. Les efforts visant à empêcher l'utilisation de techniques d'interception doivent se concentrer sur les premiers stades de la chaîne d'attaque. Vous pouvez détecter une activité de hook malveillante en surveillant les appels aux fonctions SetWindowsHookEx et SetWinEventHook, en utilisant des détecteurs de rootkit et en analysant le comportement anormal des processus.

Injection IFEO (injection d'options d'exécution de fichier image)


Système:
Droits Windows : Administrateur,
Description du système : Le mécanisme IFEO (Image File Execution Options) vous permet d'exécuter un débogueur de programme au lieu d'un programme, précédemment spécifié par le développeur dans le registre:
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Options d'exécution de fichier image / [exécutable]
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ [exécutable] , où [exécutable] est le binaire exécutable du débogueur.

Comme pour les injections, la valeur [exécutable] peut être utilisée abusivement en exécutant du code arbitraire pour augmenter les privilèges ou prendre pied dans le système. Les programmes malveillants peuvent utiliser IFEO pour contourner la protection en enregistrant des débogueurs qui redirigent et rejettent diverses applications système et de sécurité.

Recommandations de protection: La technique décrite est basée sur l'utilisation abusive des outils de développement de système d'exploitation courants, de sorte que toute restriction peut provoquer l'instabilité de logiciels légitimes, par exemple, des applications de sécurité. Les efforts visant à empêcher l'utilisation des techniques d'injection IFEO doivent se concentrer sur les premiers stades de la chaîne d'attaque. Vous pouvez détecter une telle attaque en surveillant les processus avec Debug_process etDebug_only_this_process .

Launch Daemon (Launch Daemon) >


Système: macOS
Droits: Administrateur
Description: La technique consiste à modifier les paramètres des services de lancement du système - Launch Daemon, spécifié dans les fichiers plist, par l'attaquant. Au démarrage du système, le processus Launchd charge les paramètres des services (démons) à partir des fichiers plist situés dans les répertoires suivants:
  • / System / Library / LaunchDeamons;
  • / Bibliothèque / LaunchDeamons.

Launch Daemon peut être créé avec des privilèges d'administrateur, mais exécuté sous le compte root, de sorte qu'un attaquant peut augmenter les privilèges. Les autorisations des fichiers plist doivent être root: alors que, cependant, le script ou le programme spécifié peut avoir des autorisations moins strictes. Par conséquent, un attaquant peut modifier les fichiers exécutables spécifiés dans plist, et ainsi modifier les services système actuels pour sécuriser le système ou augmenter les privilèges. Conseils de

sécurité: limitez les privilèges des utilisateurs afin que seuls les administrateurs autorisés puissent créer Launch Daemon. Pensez à surveiller la façon dont les fichiers plist sont créés sur votre système à l'aide d'applications telles que KnockKnock.

De nouveaux services


Système:
Droits Windows : Administrateur,
Description du système : Nom d'accès au système, les attaquants peuvent créer de nouveaux services et les configurer pour démarrer automatiquement. Le nom du service peut être masqué à l'aide de noms spécifiques au système d'exploitation. Les services peuvent être créés avec des privilèges d'administrateur, mais exécutés au nom du système. Les services peuvent être créés à partir de la ligne de commande, à l'aide d'outils d'accès à distance avec interopérabilité avec l'API Windows ou à l'aide d'outils de gestion Windows et PowerShell standard.

Recommandations de sécurité: limitez les droits des utilisateurs à créer de nouveaux services afin que seuls les administrateurs autorisés puissent le faire. Appliquer AppLocker et la politique de restriction logicielle .

Interception de chemin


Système: Windows
Droits: utilisateur, administrateur, système
Description: La technique d'interception d'un chemin consiste à placer le fichier exécutable dans un répertoire à partir duquel l'application le lancera à la place du fichier cible. Un attaquant peut employer les méthodes suivantes:
  • Chemins inexistants. Les chemins d'accès aux fichiers exécutables du service sont stockés dans les clés de registre et peuvent avoir un ou plusieurs espaces, par exemple, C: \ Program Files \ service.exe , si l'attaquant crée le fichier C: \ Program.exe dans le système , Windows le démarrera au lieu de traiter le chemin d'accès fichier cible de service.
  • . PATH C:\example c:\Windows\System32 C:\example\net.exe , net, C:\example\net.exe , c:\Windows\System32\net.exe .
  • (Search order hijacking). , Windows, , , . , «example.exe» cmd.exe net use. example.exe net.exe c:\Windows\System32\net.exe . , net.com net.exe, Windows net.com , PATHEXT.

L'interception de l'ordre de recherche de fichiers est également utilisée pour exécuter des DLL à l'aide de la technique de DLL de piratage de recherche .

Recommandations de sécurité: les guillemets indiquent les chemins d'accès spécifiés dans les fichiers de configuration, les scripts, la variable PATH, les paramètres de service et les raccourcis. N'oubliez pas l'ordre de recherche des fichiers exécutables et n'utilisez que des chemins d'accès complets. Nettoyez les anciennes clés de registre laissées par le logiciel distant afin qu'aucune clé ne soit laissée dans le registre qui pointe vers des fichiers inexistants. Interdire l'écriture par les utilisateurs du système dans le répertoire racine C: \ et les répertoires système Windows, limiter les autorisations d'écriture aux répertoires contenant des fichiers exécutables.

Modification des fichiers Plist (Plist Modification)


Système: macOS
Droits: utilisateur, administrateur
Description: Les attaquants peuvent modifier les fichiers plist, en y indiquant leur propre code pour son exécution dans le contexte d'un autre utilisateur. Les fichiers de propriétés plist situés dans / Library / Preferences sont exécutés avec des privilèges élevés, et le plist de ~ / Library / Preferences sont exécutés avec des privilèges utilisateur. Conseils de sécurité

: Empêchez la modification des fichiers plist en les rendant en lecture seule.

Modification des moniteurs de port dans le gestionnaire d'impression (moniteurs de port)


Système:
Droits Windows : Administrateur,
Description du système : Un attaquant peut organiser l'exécution d'une DLL arbitraire au nom du Système chaque fois que Windows démarre en utilisant abusivement les paramètres du Gestionnaire d'impression (Spoolsv.exe). Pour interagir avec les périphériques d'impression, Spoolsv.exe utilise les soi-disant moniteurs de port - ce sont des DLL qui utilisent des commandes de bas niveau à envoyer aux périphériques d'impression via une interface LAN, USB, LPT ou COM. Les DLL ci-dessus sont stockées dans C: \ windows \ system32 et enregistrées dans le registre:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors .
Port Monitor peut être installé à l'aide de l'API AddMonitor ou directement en modifiant la clé de registre ci-dessus.

Recommandations de protection: organisez le blocage des logiciels potentiellement dangereux et utilisez des outils de contrôle de lancement d'applications.

Injection de code dans un processus (injection de processus), dix techniques d'injection de processus


Système: Windows, Linux, macOS
Droits: utilisateur, administrateur, système, racine
Description: l'injection de processus est une méthode d'exécution de code arbitraire dans l'espace d'adressage d'un processus vivant distinct. L'exécution de code dans le contexte d'un autre processus vous permet d'accéder à la mémoire du processus injecté, aux ressources système / réseau et éventuellement à des privilèges élevés. Les injections de processus peuvent également être utilisées pour éviter la détection éventuelle d'activités malveillantes par des moyens de sécurité. Les techniques de mise en œuvre des injections dans les processus sont basées sur l'utilisation abusive de divers mécanismes qui assurent le multithreading de l'exécution du programme dans le système d'exploitation. Voici quelques approches pour injecter du code dans un processus.

Windows
• Injections de DLL. Ils sont effectués en écrivant le chemin vers la DLL malveillante à l'intérieur du processus, puis en l'exécutant en créant un thread distant (thread distant - un thread qui s'exécute dans l'espace d'adressage virtuel d'un autre processus). En d'autres termes, le logiciel malveillant écrit la DLL sur le disque, puis utilise une fonction comme CreateRemoteTread, qui appellera la fonction LoadLibrary dans le processus injecté.
• Les injections PE (injection exécutable portable) sont basées sur l'abus des fonctionnalités d'exécution de la mémoire des fichiers PE, tels que DLL ou EXE. Le code malveillant est écrit dans le processus sans écrire de fichiers sur le disque, puis l'exécution est appelée à l'aide du code supplémentaire ou en créant un flux distant.
• Le détournement de l'exécution des threads implique l'injection de code malveillant ou de chemins DLL directement dans le thread de processus. Comme la technique Process Hollowing, l'écoulement doit d'abord être suspendu.
• L'injection dans une injection APC (Asynchronous Procedure Call) implique l'incorporation de code malveillant dans la file d'attente APC d'un thread de processus. L'une des méthodes d'injection APC, appelée «injection Earle Bird», implique la création d'un processus suspendu dans lequel du code malveillant peut être écrit et lancé au point d'entrée du processus via APC. AtomBombing est une autre option d'injection qui utilise APC pour appeler du code malveillant précédemment écrit dans la table atomique globale.
• Les injections d'injection TLS (Thread Local Storage) impliquent la manipulation de pointeurs de mémoire dans un fichier PE exécutable pour rediriger le processus vers du code malveillant.

Mac et Linux
• Les variables système LD_RPELOAD, LD_LIBRARY_PATH (Linux), DYLIB_INSERT_LIBRARIES (macOS X) ou l'interface de programmation d'application (API) dlfcn peuvent être utilisées pour charger dynamiquement une bibliothèque (objet partagé) dans un processus, qui à son tour peut être utilisé pour intercepter des appels d'API à partir de processus en cours.
• L'appel système Ptrace peut être utilisé pour se connecter à un processus en cours d'exécution et le modifier pendant son exécution.
• / proc / [pid] / mem donne accès à la mémoire du processus et peut être utilisé pour lire / écrire des données arbitraires, cependant cette méthode est rarement utilisée en raison de la complexité de sa mise en œuvre.
• La capture VDSO (Virtual shared shared object) vous permet d'injecter du code lors de l'exécution des binaires ELF en manipulant les talons de code de linux-vdso.so.
Les programmes malveillants utilisent généralement l'injection de code dans un processus pour accéder aux ressources du système, ce qui permet à un attaquant de prendre pied dans le système et d'effectuer d'autres modifications dans l'environnement attaqué. Des échantillons plus complexes peuvent effectuer plusieurs injections de processus pour les rendre difficiles à détecter.

Recommandations de protection:Les méthodes d'injection de code dans les processus sont basées sur l'utilisation abusive des fonctions régulières du système d'exploitation qui peuvent avoir un impact direct sur le fonctionnement instable des logiciels et produits de sécurité légitimes. Les efforts visant à empêcher l'utilisation de techniques d'interception doivent se concentrer sur les premiers stades de la chaîne d'attaque. Utilisez des outils pour bloquer les logiciels potentiellement dangereux, tels que AppLocker. Utilisez Yama comme mesure préventive contre l'injection de code dans ptrace, en limitant l'utilisation de ptrace aux utilisateurs privilégiés uniquement. Des mesures de sécurité supplémentaires peuvent inclure le déploiement de modules de sécurité du noyau qui fournissent un contrôle d'accès avancé et une restriction de processus. Ces outils incluent SELinux, grsecurity, AppArmor.

Injection d'historique SID


Système: Windows
Droits: Administrateur, système
Description: Chaque fois qu'un objet est déplacé d'un domaine à un autre, un nouveau SID est créé, qui devient le objectSID principal. Les SID précédents continuent d'être stockés dans la propriété sIDHistory, garantissant ainsi que les droits que l'objet avait avant la migration interdomaine sont préservés. Les attaquants disposant de droits d'administrateur peuvent insérer des SID précédemment collectés dans SID-History pour effectuer une action au nom de groupes ou comptes d'accès plus privilégiés, tels que des administrateurs de domaine.

Recommandations de protection:Sur Windows Server OS version 2003 et versions ultérieures, le filtrage SID est activé par défaut, ce qui implique la suppression ou le filtrage de tous les SID à l'exception d'un domaine approuvé, mais cette option peut être délibérément désactivée pour autoriser l'accès interdomaine.
Les principales méthodes de filtrage SID:
• Désactivation de SIDHistory dans les paramètres d'approbation (approbations) entre les forêts de domaine à l'aide de la commande: netdom trust / domain: / EnableSIDHistory: no ;
• Application de la mise en quarantaine du filtre SID . Cela garantit qu'un objet contenant un SID autre que le domaine approuvé ne peut pas s'authentifier auprès du domaine approuvé. La mise en quarantaine du filtre SID est appliquée aux approbations externes en exécutant la commande:approbation / domaine de netdom: / quarantaine: oui .
L'utilisation du filtrage SID entre les domaines de la même forêt n'est pas recommandée. Si le domaine de la forêt n'est pas fiable, il ne doit pas être membre de la forêt, dans une telle situation, vous devez d'abord diviser les domaines approuvés et non fiables en forêts distinctes, puis appliquer le filtrage SID pour les approbations entre les forêts.

Tâche planifiée


Système:
Droits Windows : Utilisateur, Administrateur,
Description du système : Des utilitaires tels que at, schtasks et le Planificateur de tâches Windows peuvent être utilisés pour planifier des programmes et des scripts à exécuter à une date et une heure spécifiques. Une tâche peut être planifiée sur un système distant, à condition que RPC soit utilisé pour l'authentification et que le partage d'imprimantes et de fichiers soit activé. La planification des tâches sur un système distant nécessite des privilèges d'administrateur. Un attaquant pourrait utiliser l'exécution de code à distance pour obtenir des privilèges système ou pour démarrer un processus sous un compte spécifique.

Recommandations de protection:Limitez les privilèges des utilisateurs. L'utilisation d'outils, tels que le module PowerUP dans PowerSploit, qui peuvent être utilisés pour trouver des faiblesses dans la résolution des tâches planifiées. Désactiver la possibilité de démarrer des tâches au nom du système, désactiver l'option " Autoriser les opérateurs de serveur à planifier des tâches " dans la politique de sécurité et activer le paramètre " Attribution des droits utilisateur: augmenter la priorité de planification ".

Faiblesses dans les autorisations de registre de services Faiblesse


Système:
Droits Windows : Administrateur,
Description du système : Si les autorisations des utilisateurs et des groupes permettent de modifier les valeurs des clés dans lesquelles les paramètres de service sont stockés dans le registre Windows, les attaquants peuvent directement modifier les clés dans lesquelles les chemins d'accès aux fichiers exécutables pour le lancement des services sont stockés ou utiliser divers outils de gestion services - sc.exe, PowerShell ou Reg. Les attaquants peuvent également modifier les paramètres liés à une défaillance du service, par exemple, FailureCommand, indiquant une commande qui sera exécutée en cas de défaillance du service ou de dommages intentionnels. Les paramètres de service sont stockés dans HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services .

Recommandations de protection:Assurez-vous que les utilisateurs du système protégé ne peuvent pas modifier les clés du registre qui stockent les paramètres des composants du système. Utilisez tous les moyens possibles pour bloquer les logiciels potentiellement dangereux, par exemple Windows AppLocker.

Setuid et Setgid


Système: Linux, macOS
Droits: Description de l' utilisateur
:Setuid et Setgid sont des indicateurs d'autorisation sur les systèmes Unix qui permettent à l'utilisateur d'exécuter des fichiers exécutables avec les droits du propriétaire ou du groupe du fichier exécutable. Si l'application doit être exécutée en tant que root, au lieu de créer une entrée dans le fichier sudo, l'utilisateur peut spécifier l'indicateur Setuid ou Setgid. Les adversaires peuvent abuser des indicateurs Setuid et Setgid pour effectuer un échappement du shell (lorsqu'une application console utilise un fichier ouvert dans une autre application) ou profiter de la vulnérabilité de l'application avec les indicateurs Setuid et Setgid et exécuter du code dans le contexte de divers utilisateurs. Lorsque vous affichez les attributs de fichier avec la commande ls -l, les indicateurs ci-dessus sont indiqués par le symbole "s" au lieu de "x". L'utilitaire chmod peut définir les drapeaux Setuid et Setgid à l'aide de la commande chmod 4777 [fichier]ou chmod u + s [fichier] .

Recommandations de protection: Gardez le nombre de programmes avec les drapeaux Setuid et Setgid définis au minimum.

Éléments de démarrage


Système: macOS
Droits: Administrateur
Description: Un attaquant peut utiliser le mécanisme obsolète, mais toujours en cours d'exécution de macOS Sierra, pour le démarrage automatique des applications à l'aide de StartupItems pour configurer le lancement de son code avec les privilèges root au démarrage. StartupItems est un répertoire dans / Library / Startupitems , un script de commande et un fichier de propriétés StartupParameters.plist. Le script et le fichier de propriétés doivent se trouver en haut de la hiérarchie: / Library / Startupitems / [MyStartupItem] .

Recommandations de protection: le mécanisme StartupItems étant obsolète, l'interdiction d'écrire dans le répertoire / Library / Startupitems / vous permettra d'éviter de créer des éléments de démarrage.

Sudo


Système: Linux, macOS
Droits:
Description de l' utilisateur : les opposants peuvent tirer parti des failles de configuration de Sudo pour exécuter des commandes au nom d'autres utilisateurs ou générer des processus avec des privilèges plus élevés. Les options de Sudo sont stockées dans le fichier / etc / sudoers , des privilèges élevés sont requis pour éditer ce fichier. Le fichier sudoers décrit les commandes que les utilisateurs peuvent exécuter au nom d'autres utilisateurs ou groupes, ce qui permet aux utilisateurs de travailler la plupart du temps avec des privilèges minimaux et d'augmenter les privilèges uniquement si nécessaire. Cependant, dans le fichier sudoers, vous pouvez spécifier les utilisateurs pour lesquels un mot de passe ne sera pas demandé: nom d'utilisateur ALL = (ALL) NOPASSWD: ALL .

Conseils de sécurité: le fichier sudoers doit être modifié afin que les utilisateurs saisissent toujours un mot de passe lors de l'exécution de sudo. Auditd sous Linux peut générer un avertissement lorsque les ID utilisateur réels et effectifs ne correspondent pas (cela se produit lorsque l'utilisateur utilise sudo).

Mise en cache Sudo


Système: Linux, macOS
Droits: utilisateur
Description: divers logiciels malveillants, comme OCX Proton Malware , peuvent abuser des paramètres sudo pour exécuter du code en tant que root sans entrer de mot de passe. Étant donné que la boîte à outils sudo a été créée pour l'administration système, elle possède certaines fonctions utiles telles que timestamp_timeout - ce paramètre stocke le temps en minutes entre les démarrages sudo pendant lequel la commande ne demandera pas le mot de passe root. Sudo a pu mettre en cache les informations d'identification depuis un certain temps. L'horodatage du dernier démarrage de Sudo est stocké dans / var / db / sudo et est utilisé pour déterminer le délai spécifié. En outre, il existe une variable tty_tickets qui traite chaque nouvelle session de terminal de manière isolée, de sorte que le délai d'expiration dans une instance de la console n'affectera pas le délai d'expiration dans une autre instance.

Recommandations de protection: définissez le paramètre timestamp_timeout = 0 pour que le système nécessite un mot de passe root à chaque exécution de sudo. Activez le paramètre tty_tickets pour empêcher l'implémentation de l'attaque via des sessions de ligne de commande.

Comptes valides


Description: les attaquants peuvent voler les informations d'identification d'un compte d'utilisateur ou de service spécifique à l'aide des informations d'identification d'accès, capturer les informations d'identification dans le processus de renseignement à l'aide de l'ingénierie sociale. Les informations d'identification compromises peuvent être utilisées pour contourner les systèmes de contrôle d'accès et accéder aux systèmes distants et aux services externes, tels que VPN, OWA, Remote Desktop, ou pour obtenir des privilèges élevés sur des systèmes et des zones spécifiques du réseau. Si le scénario réussit, les attaquants peuvent refuser les logiciels malveillants et les rendre difficiles à détecter. En outre, les attaquants peuvent créer des comptes en utilisant des noms et des mots de passe prédéfinis pour maintenir l'accès à la sauvegarde en cas de tentatives infructueuses d'utiliser d'autres moyens.

Recommandations de protection: appliquez une politique de mot de passe, suivez les recommandations de conception et d'administration d'un réseau d'entreprise pour limiter l'utilisation des comptes privilégiés à tous les niveaux administratifs. Vérifications régulières des comptes de domaine et locaux et de leurs droits afin d'identifier ceux qui pourraient permettre à un attaquant d'obtenir un large accès. Suivi de l'activité du compte à l'aide des systèmes SIEM.

Web shell


Système: Windows, Linux, macOS
Description: Web Shell peut être utilisé par un attaquant comme passerelle pour accéder à votre réseau ou un accès redondant au système attaqué, comme mécanisme de sauvegarde à sécuriser en cas de détection et de blocage des principaux canaux d'accès à l'environnement attaqué.

Recommandations de protection: assurez-vous que vos serveurs Web externes sont régulièrement mis à jour et qu'aucune vulnérabilité connue ne permet aux attaquants de télécharger un fichier ou un script sur le serveur avec une exécution ultérieure. Vérifiez que les autorisations des comptes et des groupes avec des droits de gestion de serveur ne correspondent pas aux comptes du réseau interne qui peuvent être utilisés pour se connecter au serveur Web, lancer le shell Web ou épingler au serveur Web. Web Shell est difficile à détecter car ils n'initient pas de connexion et leur côté serveur peut être petit et inoffensif, par exemple, la version PHP du shell Web China Chopper ressemble à une ligne:
[? php eval ($ _POST ['mot de passe']);]

Source: https://habr.com/ru/post/fr428602/


All Articles