Registry configurations designed to be used for troubleshooting and development are now a means of covert persistence due to the lack of visibility by security tools like Autoruns. Here, we highlight three key ways Tanium modules, including Trace and Detect, can be used to rapidly determine the existence of this relatively unknown persistence mechanism.

(Image : Bruno Glätsch / Pixabay)
Que faites-vous lorsque vous découvrez du jour au lendemain sur Twitter qu'une nouvelle méthode de persistance a été signalée ? Une idée : utilisez Tanium pour passer rapidement en revue toute activité en cours et configurer des alertes immédiates dès qu'elle se produit. Tout cela avant le petit-déjeuner.
Le 10 avril, Oddvar Moe (@oddvarmoe) a publié sur Twitter un lien vers son article de blog intitulé « Persistence Using Globalflags in Image File Execution Options – Hidden from autoruns.exe », qui traite d’un mécanisme de persistance via la configuration du registre permettant d’exécuter silencieusement un processus après la fin d’un autre processus « surveillé ». Cette méthode ne figure pas actuellement parmi les emplacements de persistance répertoriés par l'outil Autoruns de Sysinternals, édité par Microsoft.
L'utilisation des indicateurs globaux permet aux développeurs de lancer un processus après la fin d'un autre processus. Cela constitue actuellement un angle mort, car Autoruns ne répertorie pas ces configurations. Elles peuvent être définies soit à l'aide de l'utilitaire gflag.exe, disponible dans les outils de développement de Microsoft, soit en modifiant le registre à l'aide d'un compte administrateur.
À moins qu'un ordinateur ne soit utilisé à des fins de dépannage ou de développement, la présence de ces configurations de registre est hautement suspecte et doit faire l'objet d'une enquête. C'est ce que nous allons voir ci-dessous ; il s'agit d'un exemple illustrant à quelle vitesse vous pouvez exploiter les informations récemment divulguées pour évaluer votre propre environnement.
Nous vous expliquons ici comment les modules Tanium, notamment Trace et Signals, peuvent être utilisés pour détecter rapidement l'existence de ce mécanisme de persistance relativement méconnu, et ce de trois manières principales :
- En examinant l'état actuel des paramètres du registre ;
- En examinant l'historique des modifications apportées au registre à l'aide de Trace ; et
- En mettant en place un système d'alerte en temps réel pour signaler toute modification future de ces paramètres du registre.
À propos de ce numéro
Dans son article de blog, Moe met en avant trois modifications du registre qui définissent un déclencheur d'exécution permettant de lancer un processus dès qu'un processus surveillé s'arrête. De plus, lorsque le processus surveillé s'arrête, le deuxième processus est lancé en arrière-plan. Cela signifie que s'il y a une interface graphique, celle-ci se lance en arrière-plan. Les attaquants peuvent utiliser cette fonctionnalité pour assurer la persistance de leur code ; celui-ci continuera ainsi à s'exécuter après la fermeture d'un processus de leur choix, jusqu'à ce que les clés de registre soient supprimées.
Les détails relatifs à cette fonctionnalité de Windows sont documentés par Microsoft à l'adresse , et ici :.
À des fins de test, le script ci-dessous effectue les modifications du registre qui provoquent l'exécution de evil.exe chaque fois que notepad.exe se ferme.
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe” /v GlobalFlag /t REG_DWORD /d 512 reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe” /v ReportingMode /t REG_DWORD /d 1 reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe” /v MonitorProcess /d "C:\temp\evil.exe"
Activité actuelle
Grâce à Tanium, il est possible de rechercher des indices indiquant que cette technique est déjà utilisée au sein de l'entreprise.
Cette technique peut avoir des utilisations légitimes dans certains environnements ; il convient donc de procéder à un examen minutieux afin de déterminer si les configurations existantes sont malveillantes ou inoffensives. Un premier point de départ consiste à rechercher la branche de registre « SilentProcessExit ». Dans la plupart des environnements, cette clé devrait être vide ou inexistante. Trois capteurs seront utilisés dans le cadre de cette étude :
- Sous-clés de registre : cette section répertorie tous les processus qui déclenchent une exécution lors de leur arrêt. La figure 1 ci-dessous montre que « notepad.exe » est la seule sous-clé sous SilentProcessExit.
- Noms des valeurs de clés de registre - Cette liste indique les sous-clés existantes. La figure 1 présente « MonitorProcess » et « ReportingMode » comme les deux entrées de nom de valeur du Registre.
- Données de la valeur du registre — Ces données indiquent le processus configuré pour se lancer lorsque le processus surveillé s'arrête. La figure 1 présente les données relatives à ces deux entrées.

Figure 1 : Exemple d'entrée utilisée à des fins de test dans cet article.
Dans la figure 2 ci-dessous, le capteur « Tanium Registry Key Subkeys » affiche l'entrée de sous-clé « notepad.exe » sous la clé « SilentProcessExit ».

Figure 2 : Recherche de « SilentProcessExit » à l'aide du capteur « Sous-clés du Registre ».
Capteur : sous-clés de registre Sous-clés de registre [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit] sur tous les ordinateurs
Pour toutes les sous-clés renvoyées par le capteur « Sous-clés de registre », les enquêteurs doivent copier la valeur « KeyPath » et l'utiliser comme paramètre du capteur « Noms des valeurs de clé de registre » afin de vérifier qu'une entrée « MonitorProcess » existe (voir figure 3). Si une entrée « MonitorProcess » existe, l'entrée « ReportingMode » doit également être présente.

Figure 3 : Valeur de clé de registre « sensor » utilisée pour détecter les sous-clés.
Capteur : Noms des valeurs de clés de registre Noms des valeurs de clés de registre [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe] sur tous les ordinateurs
Pour déterminer quel processus s'exécutera pour une entrée « MonitorProcess » donnée, il convient de fournir à la fois la valeur « KeyPath » issue de la sortie « Sous-clés de clé de registre » et le nom de la valeur issu de la sortie du capteur « Noms des valeurs de clé de registre » en tant que paramètres au capteur « Données de valeur de registre » (voir figure 4).

Figure 4 : Sortie du capteur de données de valeur de registre.
Capteur : Données des valeurs de registre Données des valeurs de registre [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe,MonitorProcess] provenant de tous les ordinateurs
En utilisant le « KeyPath » et le « Value Name » issus de la sortie du capteur comme paramètres du capteur « Registry Value Data », vous pouvez voir, sur la figure 4, l'entrée de données correspondant à ce « MonitorProcess », y compris le chemin d'accès à l'emplacement où le processus est stocké sur le disque.
La figure 4 illustre également un exemple de dissimulation d'un fichier binaire de processus au sein d'un flux de données alternatif (ADS). La fonctionnalité ADS du système de fichiers NTFS permet aux pirates d'y intégrer des fichiers binaires de manière à ce qu'ils ne soient pas visibles dans l'Explorateur Windows ni dans les listes de répertoires affichées via cmd.exe et PowerShell.exe. Veuillez noter la présence du « : » dans le nom du fichier binaire du processus.
Notre fichier exécutable caché est intégré dans le dossier ou l'entrée de répertoire NTFS C:\Windows et a été nommé « cmd.exe ».
Activités passées
Grâce aux capteurs Tanium, il est possible d'effectuer une recherche dans ces emplacements spécifiques du registre sur des centaines de milliers de terminaux en quelques secondes.
Mais que se passerait-il si les entrées de registre avaient été supprimées après l'activité initiale ? Ils ne s'afficheront pas avec les capteurs « d'état actuel » présentés ci-dessus. Pour effectuer une recherche dans les données historiques à l'échelle de l'entreprise, nous allons examiner le registre à l'aide des données de Tanium Trace.
Nous commençons par examiner la clé de registre « SilentProcessExit » afin de vérifier si des événements « SetRegistryKey » ont été enregistrés (voir figure 5).

Figure 5 : Clés de registre de la sortie du capteur « Trace Registry Keys of Values ».
Capteur : Clés ou valeurs de registre de trace Récupérer les clés ou valeurs de registre de trace [illimité, 1523639748493|1523643347493, 0, 0, 10, 0, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit, , SetValueKey, , , ] sur tous les ordinateurs
La colonne « key » contient une entrée correspondant à l'exécutable qui, lorsqu'il s'arrête, déclenche le lancement de l'exécutable MonitorProcess. Les données de la colonne « Clé » développée sont les suivantes : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe
Étant donné que Trace n'enregistre pas les données de valeur, nous savons à ce stade qu'un processus a été configuré pour déclencher un autre processus, mais nous ne savons pas où se trouve ce dernier. Cependant, nous pouvons établir une connexion en direct via Trace et jeter un œil.
Alerte
Outre l'analyse de l'état actuel et des données historiques de l'entreprise, un signal Tanium Detect peut générer des alertes en temps réel lorsque ces clés de registre sont configurées comme décrit ci-dessus.
group(Registry.key_path contient « \\SilentProcessExit\\ » ET Registry.value_name contient « MonitorProcess »)
Une fois ce Signal déployé, chaque fois qu’un processus établit une persistance sous la clé « SilentProcessExit » en créant une entrée « MonitorProcess », une alerte en temps réel se déclenchera dans l’interface Tanium Detect et ces alertes pourront être transmises à un système SIEM ou à des systèmes de notification.
Comme pour toute alerte Tanium Detect, vous pouvez sélectionner l'alerte et basculer vers une connexion « Trace Live » afin d'examiner l'activité plus en détail (voir la figure 6). Nous allons ici examiner en détail le déroulement du processus. Dans ce cas précis, notre processus malveillant est à nouveau intégré sous la forme d'un ADS, mais cette fois-ci dans une entrée du répertoire C:\System.

Figure 6 : Alerte de signaux et option permettant d'établir une connexion en temps réel avec Trace.
Nous voyons ensuite l'arborescence des processus dans Trace (voir la figure 7). Il convient de noter que le processus parent du processus malveillant est WerFault.exe, le service de signalement des erreurs de Windows. Veuillez également noter que le processus malveillant se lance sous le même compte utilisateur et non sous le compte SYSTEM.

Figure 7 : Visualisation des processus dans Trace.
Le hachage du processus est surligné en rouge, ce qui indique que le service Tanium Reputation a classé ce fichier comme malveillant.
À présent, nous pouvons utiliser l'hachage et les informations spécifiques au fichier pour passer à Tanium Protect afin d'empêcher toute exécution future de ce processus. Nous pouvons également nettoyer le registre et mettre fin à tous les processus en cours à l'aide des actions standard de Tanium.
Exemples de signaux
Ci-dessous, vous pouvez voir des alertes « Tanium Detect Signal » correspondant à différentes méthodes d'activation de ce mécanisme de persistance (voir les figures 8-13).

Figure 8 : Message d'alerte lors de l'ajout de l'entrée « MonitorProcess » via un fichier batch.

Figure 9 : Message d'alerte lors de l'ajout de l'entrée « GlobalFlag » à l'aide d'un fichier batch.

Figure 10 : Message d'avertissement concernant l'ajout manuel de l'entrée « MonitorProcess » à l'aide de l'interface graphique de Regedit.exe.

Figure 11 : Message d'avertissement lors de la modification du registre à l'aide de PowerShell.

Figure 12 : Fichier de registre contenant les modifications de configuration.

Figure 13 : L'intégration du fichier de registre de la figure 12 a généré cette alerte.
Une autre remarque. Une alerte IOC affichera l'ADS dans la vue détaillée, avec notamment un enrichissement des couleurs par hachage, comme illustré à la figure 14.

Figure 14 : Résultat positif d'une analyse IOC pour le fichier binaire, sur la base de la valeur de hachage.
Résumé
Le processus décrit dans cet article montre comment Tanium peut rapidement détecter l'existence d'un mécanisme de persistance relativement méconnu en analysant l'état actuel des paramètres du registre, en examinant l'historique des modifications apportées au registre à l'aide de Trace, et enfin en mettant en place des alertes en temps réel pour signaler toute modification future de ces paramètres. Si vous souhaitez en savoir plus, rejoignez-moi sur , , la communauté des utilisateurs de Tanium, , et discutons-en ensemble.
Vous souhaitez découvrir Tanium en action ? Prenez rendez-vous pour une démonstration individuelle ou participez à notre webinaire hebdomadaire. Venez échanger avec nos experts Tanium lors de nos prochains événements organisés dans le cadre de l' :.
À propos de l'auteur : Scott Langendorf est directeur au sein de l'équipe EDR de Tanium. Il a rejoint Tanium à l'automne 2015 après avoir occupé le poste de responsable senior au sein d'une entreprise internationale d'ingénierie victime d'attaques menées par des groupes liés à des États. Fort de huit ans d'expérience dans le domaine de la cybersécurité, Scott a rejoint Tanium afin de contribuer au développement des produits de sécurité, conscient de l'importance d'une visibilité rapide sur les terminaux, d'un système d'alerte efficace et d'une agilité des données pour les équipes de défense et de détection. Il a également travaillé à la NASA sur le système d'alimentation électrique de la Station spatiale et en tant que responsable informatique dans le secteur de l'énergie, à l'époque où le APT1 venait tout juste d'être découvert.
