08/01/2025

Logiciels

Surveillez l’activité des processus Windows avec Process Monitor

I. Présentation

Dans cet article, nous allons découvrir Process Monitor de la suite SysInternals de Microsoft. Un outil très utile pour traquer avec une grande précision l’activité des programmes sous Windows.

La suite Sysinternals de Microsoft est un ensemble de 70 outils permettant de faciliter le diagnostic, le debug et la gestion des OS Microsoft et de leurs applications. Dans cette collection figure Process Monitor, aussi appelé “ProcMon”, un outil puissant qui traque les moindres faits et gestes des processus Windows pour faciliter l’analyse de leur comportement.

Nous allons à présent voir à quoi sert cet outil, comment il fonctionne et comment l’utiliser efficacement.

II. Qu’est-ce que Procmon ou Process Monitor ?

A. ProcMon : un outil des sysinternals

Process Monitor permet de surveiller et de tracer avec une grande précision l’ensemble des activités des programmes en cours d’exécution concernant l’accès au système de fichiers, aux disques, aux paramètres système, aux registres, le chargement de programme, l’activité réseau, etc.

Voici un exemple visuel d’analyse en temps réel faite par Process Monitor :

Exemple de vue des évènements journalisés par ProcessMonitor.
Exemple de vue des évènements journalisés par ProcessMonitor.

En l’utilisant, vous pourrez connaitre avec précision quelles clés de registres ont été lues ou modifiées, quels fichiers ont été créés, quels programmes ont été lancés, etc.

Nous allons voir que les capacités de Process Monitor permettent de répondre à plusieurs besoins et nous allons apprendre les bases afin de pouvoir l'utiliser sereinement par la suite. L'outil nécessite une petite phase d'apprentissage, car il permet l'affichage d'un grand nombre d'informations et détails techniques. ProcMon dispose également de nombreuses fonctionnalités permettant le tri, le filtre et gestion de l'affichage des évènements capturés.

B. Quels contextes d’utilisation pour ProcMon ?

Process Monitor est un outil qui peut être utilisé dans différents cas de figures : 

- Analyser le fonctionnement d’un logiciel pour le debug et la résolution de problème

La grande précision des traces collectées par ProcMon aide à comprendre en détail le fonctionnement d'un programme, notamment en cas de crash ou dysfonctionnement.

Visualisation d’un échec d’ouverture de fichier par dans Process Monitor.
Visualisation d’un échec d’ouverture de fichier par dans Process Monitor.

Dans cet extrait de capture ProcMon, il est, par exemple, très facile de constater que le programme “openvpn-gui.exe” a cherché à lire un fichier qui n’existe pas, ce qui peut être la cause d’un problème par la suite.

De manière courante, d’autres problèmes de ce type peuvent être facilement détectés via ProcMon : 

  • Les fichiers manquants ou inaccessibles.
  • Les permissions insuffisantes sur des clés de registre ou des dossiers.
  • Les conflits avec d'autres processus en cours.
  • DLL manquantes

Par extension, ce cas d’usage est aussi utile dans le cadre du développement, par exemple, pour analyser un cas de figure inattendu ou des fonctionnalités qui n’agissent pas correctement.

- Comprendre l’activité système

ProcMon peut notamment vous aider à comprendre ce que fait un programme lors de son installation, cela pour comprendre les endroits où il va s’installer, les fichiers qu’il va modifier, etc.

Il peut aussi être utilisé pour tracer toute l’activité du système dès son démarrage pour avoir une liste précise des programmes qui se lancent notamment. 

- Analyser les actions d’un processus pour la cybersécurité

Process Monitor est également beaucoup utilisé dans le domaine de la cybersécurité afin d’analyser avec précision les actions d’un programme suspect. Son utilisation permet de scruter avec attention chaque fait et gestes d’un programme, et donc d’avoir une meilleure idée de son caractère malveillant. 

On peut notamment citer les comportements de détection d’évasion de sandbox, l’implantation de portes dérobées, le dépôt de composants supplémentaires, etc. En cela, il permet de compléter les analyses d’autres outils comme Wireshark ou l’étude des journaux d’évènement, précisément parce qu’il peut capturer des évènements qui leur sont inaccessibles.

- Optimisation des performances système

ProcMon peut également aider à identifier les processus ou applications qui surchargent le système par leur comportement, comme des accès disque fréquents, des lectures/écritures excessives ou des appels système inutiles. Cela aide à optimiser les performances globales en ciblant les composants problématiques.

C. Comment ProcMon agit-il sur le système Windows ?

Avant de voir en détail l’utilisation de ProcMon, nous pouvons nous intéresser à son fonctionnement général pour mieux comprendre ce qu’il peut ou pas nous montrer.

ProcMon utilise un filter driver nommé “PROCMON24” qui s’exécute au niveau du noyau (kernel) pour capturer les événements système. Ce pilote est chargé dès le lancement de l’application et utilise une technique appelée hooking (crochet) pour intercepter les appels système et les journaliser.

Le hooking est une technique qui consiste à intercepter et rediriger le flux d'exécution d'un programme pour exécuter un code personnalisé à chaque appel ou événement spécifique. Par exemple, lorsqu'un programme effectue un appel système, un hook peut être utilisé pour interposer un bout de code, comme un compteur, afin de surveiller ou modifier son comportement sans altérer directement le programme d'origine.

L'activité de ce driver peut être visualisée à l'aide de la commande “fltmc.exe” depuis un terminal ayant des privilèges administratifs :

Visualisation du driver Process Monitor depuis un terminal privilégié.
Visualisation du driver Process Monitor depuis un terminal privilégié.

Cette méthode est également employée par des outils de surveillance avancés, comme les EDR (Endpoint Detection and Response), car elle permet de surveiller en temps réel les activités système sans perturber leur fonctionnement.

Les données capturées par ProcMon sont stockées temporairement en mémoire vive, ce qui permet leur traitement et filtrage rapide avant d’être exportées au besoin dans des fichiers pour une analyse ultérieure.

ProcMon nécessite des droits administrateurs pour fonctionner, ces privilèges permettent d’accéder aux ressources système à bas niveau et intercepter les événements au niveau du noyau.

III. Utilisation de Process Monitor

A. Télécharger et exécuter ProcMon

Les outils Sysinternals de Microsoft sont disponibles gratuitement sur le site officiel de Microsoft, je vous conseille de vous les procurer sur ce site et nulle part ailleurs : 

Depuis cette page du site officiel, cliquez sur  “Download Process Monitor” pour télécharger une archive ZIP nommée “ProcessMonitor.zip” :

Téléchargement de Process Monitor.
Téléchargement de Process Monitor.

Cette archive ZIP contient différents fichiers, dont 3 exécutables en fonction de votre architecture système et les conditions d’utilisation (fichier “eula.txt”).

Une fois ces fichiers extraits de l’archive, aucune installation n’est nécessaire, il suffit d’exécuter la version compatible avec votre système. L’exécutable “ProcMon.exe” se chargera de lancer la bonne version selon votre architecture (x86 ou x64).

Nous pouvons le lancer en double-cliquant sur l’exécutable. Celui-ci vous demandera immédiatement de valider l’utilisation des privilèges administrateurs sur le système :

Demande d’autoriser UAC lors du lancement de ProcMon.
Demande d’autoriser UAC lors du lancement de ProcMon.

Une fois lancé, voici ce que vous aurez devant les yeux  :

Interface visuelle principale de ProcMon.
Interface visuelle principale de ProcMon.

C’est donc l’interface principale de Process Monitor. Vous pouvez voir au niveau de la flèche 1 un ensemble d’icônes qui permettent de gérer les filtres, les vues et le comportement de ProcMon, et au niveau de la flèche 2, les évènements journalisés. 

L’utilisation d’icônes au lieu de menus textuels peut-être un peu difficile au début, notamment lorsque l’on ne connait pas les capacités de ProcMon. Heureusement, passer son curseur devant chaque icône indique son action. Également, voici une liste des principaux boutons qui pourront vous intéresser pour une première utilisation :

Par défaut, la section centrale de visualisation comprend les colonnes suivantes  : 

  • Time of Day: Affiche l'horodatage précis de chaque événement, utile pour suivre la chronologie des actions.
  • Process Name: Montre le nom du processus à l'origine de l'événement, permettant d'identifier facilement les applications ou les services impliqués.
  • PID : Indique l'ID unique du processus (Process Identifier), facilitant le suivi des processus lorsque plusieurs instances d'une application sont actives.
  • Operation : Spécifie le type d'opération effectuée (par ex. lecture, écriture, création de fichier) pour comprendre l'action réalisée.
  • Path : Fournit le chemin complet de la ressource (fichier, clé de registre, etc.) affectée par l'événement.
  • Result : Affiche le résultat de l'opération (succès, échec, accès refusé, etc.)
  • Detail : Donne des informations supplémentaires sur l'événement, comme les paramètres utilisés

Il est possible d’ajouter ou supprimer des colonnes comme Thread ID, Duration, Parent Process ID, etc. pour personnaliser les informations affichées en fonction des besoins.

B. Cas d’utilisation concrets des filtres ProcMon

Nous allons à présent apprendre à utiliser les filtres de ProcMon, car vous vous êtes déjà surement aperçu que le grand nombre d’évènements qui sont capturés rend difficile leur exploitation. C’est toujours le cas, même si visuellement, il semble ne rien se passer sur votre système !

L'utilisation des filtres est très importante sous ProcMon, ils permettent de cibler précisément les éléments intéressants et d'exclure les bruits inutiles en fonction de vos recherches. Sans eux, les évènements capturés par ProcMon sont inexploitables.

Pour accéder aux filtres, il faut utiliser l’icône suivante de ProcMon (ou le raccourci CTR + L) : 

Interface des filtres de Process Monitor.
Interface des filtres de Process Monitor.

Vous pouvez donc voir (1) un formulaire pour paramétrer votre propre filtre d’exclusion ou d’inclusion et (2) la liste des filtres déjà paramétrés. Ici, cette longue liste d’exclusion est paramétrée par défaut par ProcMon afin d’éviter de journaliser ses propres actions ainsi que celles sans intérêt particulier de tout système Windows.

Nous pouvons dès à présent commencer à jouer avec ces filtres, en cliquant sur “PID”, vous pourrez avoir un aperçu de l’ensemble des opérations sur lesquelles il est possible de positionner un filtre : 

Liste des opérations filtrables dans ProcMon.
Liste des opérations filtrables dans ProcMon.

Ensuite, il faut spécifier si l’élément recherché doit être présent, absent, en fin de chaine de caractère ou parfaitement également à notre recherche, puis le pattern ou mot avec lequel on souhaite le comparer.

Le dernier élément est le plus important, puisqu’il indique s’il s’agit d’une recherche d’inclusion (on souhaite voir uniquement les évènements qui correspondent avec notre recherche), ou d’exclusion (on ne souhaite pas voir ces évènements).

Une fois que vous aurez cliqué sur “Add” puis “Apply”, votre filtre s’ajoutera à ceux déjà présents et s’appliquera automatiquement aux évènements déjà journalisés et à ceux qui le seront par la suite : 

Exemple d’application d’un filtre sur le PID dans Process Monitor.
Exemple d’application d’un filtre sur le PID dans Process Monitor.

Dans cet exemple, l’application d’un filtre “PID is 5180 then Include” me permet de visualiser uniquement l’activité du process ayant le Process ID 5180, ce qui est bien plus lisible pour une analyse précise.

Voici d’autres exemples de filtre couramment utilisés : 

# Filtre pour afficher uniquement les événements liés à un processus spécifique
Process Name is "notepad.exe" then Include  

# Exclure les événements réussis pour se concentrer sur les erreurs
Result is "SUCCESS" then Exclude  

# Afficher uniquement les événements liés à des fichiers dans un dossier spécifique
Path begins with "C:\Users\Mickael\Documents" then Include  

# Exclure les événements liés au registre pour réduire le bruit
Operation begins with "Reg" then Exclude  

# Afficher uniquement les événements qui échouent avec un accès refusé
Result is "ACCESS DENIED" then Include  

# Afficher les lectures effectuées par les processus
Operation is "ReadFile" then Include  

# Exclure les événements provenant du système
User begins with "AUTORITE NT" then Exclude  

# Inclure uniquement les événements liés à un fichier spécifique
Path is "C:\Windows\System32\cmd.exe" then Include  

# Exclure les événements avec des durées courtes d’exécution pour identifier les lenteurs
Duration less than 0.01 then Exclude

Bien sûr, ces filtres peuvent s’additionner entre eux pour encore plus de précision : 

Utilisation d’une combinaison de filtre sur ProcMon.
Utilisation d’une combinaison de filtre sur ProcMon.

Ces trois filtres additionnés permettent, par exemple, de visualiser toutes les ouvertures de fichiers réalisées par le processus “openvpn-gui.exe” en dehors du répertoire “C:\Windows\”.

C. Sauvegarder et réimporter son analyse et ses filtres 

La dernière fonctionnalité principale de ProcMon que je souhaite vous partager est la possibilité de sauvegarder à la fois la capture des évènements journalisés, mais aussi la liste de vos filtres.

- Sauvegarder et importer vos captures d’évènements ProcMon

Une fois que vous avez capturé les évènements souhaités, il peut parfois être nécessaire de les sauvegarder pour pouvoir les analyser plus tard, les comparer à une autre analyse, ou simplement les archiver pour des raisons métiers ou légales. Cette opération peut être effectuée à l’aide de la fonction “File > Save” qui fait apparaitre le menu suivant :

Sauvegarde d’une capture d’évènement avec Process Monitor.

Vous aurez ici la possibilité de sauvegarder vos évènements (avec ou sans filtres appliqués) au format “.PML”, propre à Process Monitor, CSV ou encore XML. Si l’objectif est de faciliter le traitement des évènements dans d’autres outils, il peut être intéressant d’utiliser les formats CSV ou XML, car ils ont facilement compréhensibles par les parsers de nombreux langages de développement. Cependant, si votre objectif est de pouvoir les réimporter dans ProcMon plus tard, il vous faut utiliser le format “.PML”. Il ne sera pas possible de rouvrir vos évènements capturés dans ProcMon à partir des formats XML ou CSV.

Si au contraire, vous souhaitez rouvrir une capture précédente au format “.PML”, il vous suffit d’utiliser la fonction “File > Open” et d’aller chercher votre fichier.

- Sauvegarder et réutiliser vos filtres ProcMon 

Pour sauvegarder vos filtres et pouvoir les réutiliser rapidement au cours de vos prochaines analyses, il faut se rendre dans le menu “Filter” puis “Save Filter”, vous devrez alors choisir un nom pour ce filtre.

Vos filtres seront alors sauvegardés localement et pourront être réutilisés au cours d’autres analyses sur ce même système. Vous pourrez d’ailleurs les réutiliser en allant dans “Filter > Load Filter”, ou les retrouver et les gérer en vous rendant dans “Filter > Organize Filters” : 

Réutiliser et gestion des filtres dans Process Monitor.
Réutiliser et gestion des filtres dans Process Monitor.

Si vous souhaitez exporter vos filtres dans un fichier pour les réutiliser sur d’autres systèmes, il faut de nouveau vous rendre dans le menu “Filter > Organize Filter”. Vous trouverez alors la liste de vos filtres, ainsi qu’un bouton “Export”, ou “Import” pour ajouter des filtres existants à la liste des filtres de votre session actuelle de Process Monitor, c’est alors le format de fichiers “.PMF” (Procmon filter) qui sera utilisé.

IV. Quelques astuces d’utilisation de ProcMon

A. Cibler une fenêtre active et isoler son activité

Il peut être intéressant de vouloir isoler toutes les activités d’un processus qui apparait à l’écran, pour aller plus vite et éviter d’avoir à chercher son PID, il est possible d’utiliser l’icône en forme de cible et, sans relâcher son clic, de glisser son curseur jusqu’à la fenêtre souhaitée :

Utilisation de pointage de fenêtre dans Process Monitor.
Utilisation de pointage de fenêtre dans Process Monitor.

Cela aura pour effet d’appliquer automatiquement un filtre sur le PID du processus ciblé, ce qui est bien pratique pour des programmes qui provoquent un affichage intempestif ou des erreurs dont on a du mal à déterminer la provenance, par exemple.

B. Afficher un résumé d’activité

Il vous est aussi possible d’afficher des résumés d’activités concernant l’accès au registre, au système de fichier, au réseau, etc. parmi les évènements capturés et filtrés par ProcMon. Pour cela, il faut se rendre dans “Tools”, vous aurez alors plusieurs résumés d’activité proposés : 

Accès aux résumés d’activités de Process Monitor.
Accès aux résumés d’activités de Process Monitor.

Voici, en exemple, le résumé d’activité par processus, qui permet d’avoir le nombre d’évènements capturés pour chaque processus (PID), ainsi que de visualiser cette activité en fonction des types d’évènements (fichier, registre, réseau, etc.).

Visualisation du résumé d’activité par processus dans ProcMon.
Visualisation du résumé d’activité par processus dans ProcMon.

Comme vous le voyez, nous avons accès à différentes informations synthétisées dans des tableaux. Cela peut être utile à la fois pour avoir une vue globale des évènements capturés, mais aussi pour isoler des exceptions et activités “anormales” sur le système.

C. Afficher l’arbre des processus de la capture

Une autre astuce concernant l’utilisation de ProcMon consiste en l’utilisation de l’icône suivante :

Vue du Process Tree générée lors d'une capture ProcMon.
Vue du Process Tree générée lors d'une capture ProcMon.

Cette vue “Process Tree” permet notamment de visualiser l’existence de processus avec un temps de vie très court ainsi que les relations parents-enfant de certains processus.

V. Conclusion

Process Monitor est un outil incontournable pour quiconque souhaite explorer, diagnostiquer ou analyser l'activité des processus sous Windows avec précision. Que ce soit pour du debugging, de l'optimisation des performances ou des investigations en cybersécurité, grâce à sa facilité de déploiement et ses filtres, il peut s'adapter à de multiples cas d'utilisation.

Nous avons vu les bases du fonctionnement et de l’utilisation de ProcMon. Cet outil regorge de fonctionnalités et astuces d’utilisation que nous ne pouvons pas toutes traiter ici, par exemple : 

  • Analyse de l’activité au démarrage système 
  • Utilisation des filtres de surlignage
  • Affichage avancé des évènements
  • Visualisation des détails de chaque évènement
  • Ajout rapide de filtres à partir d’un évènement ou d’une propriété
  • Accès rapide à l’objet concerné par un évènement
  • Et plus encore !

Je vous encourage à être curieux et à vous rendre dans tous les menus de ProcMon pour aller plus loin. La meilleure façon d’apprendre reste-la pratique ! Sur le thème des processus, vous pouvez également lire cet article :

N’hésitez pas à partager avec nous vos cas et astuces d’utilisation de ProcMon dans les commentaires ou sur notre serveur Discord.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.