[Archives des newsletters ^] [< Volume 2, Numéro 3] [Volume 2, Numéro 5 >]
Bulletin d’information System Internals Volume 2, Numéro 4
www.sysinternals.com
Copyright (C) 2000 Mark Russinovich
30 août 2000 - Dans ce numéro :
ÉDITORIAL
NOUVEAUTÉS DE SYSINTERNALS
- ListDlls v2.23
- HandleEx v2.26
- ElogList v2.02
- LoggedOn v1.1
- Bluescreen v2.21
- PageDefrag v2.01
- LoadOrder v1.1
- ClockRes v1.0
- BgInfo v1.0
- Inside Windows 2000, 3e édition.
- Sysinternals chez Microsoft
INFORMATIONS INTERNES
- Puissance du privilège DEBUG
- Nouvelles API dans Win2K SP1 ?
- WinDev 2000 Ouest
NOUVEAUTÉS À VENIR
- Tokenmon
CO-SPONSOR : WINTERNALS SOFTWARE
Le bulletin Sysinternals est sponsorisé par Winternals Software, sur le Web à www.winternals.com. Winternals Software est le principal développeur et fournisseur d’outils de systèmes avancés pour Windows NT/2K. Les produits Winternals Software incluent FAT32 pour Windows NT 4.0, NTFSDOS Professional Edition (un pilote NTFS en lecture/écriture pour DOS) et la Remote Recover.
ERD Commander 2000 de Winternals Software est la dernière version de sa gamme de produits primée ERD Commander. Les nouvelles fonctionnalités d’ERD Commander 2000, notamment les éditeurs de fichiers et de Registre intégrés, en font l’outil de récupération Windows NT et Windows 2000 le plus avancé existant. Vous pouvez installer ERD Commander 2000 sur des disquettes, un CD-ROM et même le disque dur d’un système pour un accès rapide, et son Assistant d’installation facilite l’ajout de pilotes SCSI et d’autres pilotes de stockage de masse tiers. ERD Commander 2000 coûte 349 $, ou seulement 49 $ pour les propriétaires d’ERD Commander Professional. En savoir plus et télécharger la version d’évaluation sur www.winternals.com/products/erdcommander2000.shtml.
CO-SPONSOR : MAGAZINE WINDOWS 2000
Le magazine Windows 2000 contient des solutions pratiques pour les personnes qui travaillent avec Windows NT/2000 tous les jours. Commandez un exemple de numéro gratuit maintenant et sans risque. Si vous décidez de continuer votre abonnement, vous recevrez 13 autres numéros à 40 % de remise par rapport au prix du kiosque. Abonnez-vous dès aujourd’hui à l’adresse : http://www.win2000mag.com/sub.cfm?code=fs00inhs13
Bonjour,
Bienvenue dans le bulletin Sysinternals. Le bulletin compte actuellement 25 000 abonnés.
Je passe beaucoup de temps dans Regmon, Filemon et DebugView, des outils que Bryce et moi avons développés chez Sysinternals. Regmon est un moniteur d’accès au Registre (www.sysinternals.com/regmon.htm), Filemon est un moniteur d’accès aux fichiers (www.sysinternals.com/filemon.htm) et DebugView est un moniteur de débogage-sortie (www.sysinternals.com/dbgview.htm). Parfois, je rencontre un pilote d’application ou de périphérique installé sur l’un de mes systèmes qui génère une activité continue visible dans l’un de ces outils. Je ne parle pas de l’activité nécessaire, mais les actions effectuées par le logiciel sont généralement de nature répétitive et l’examen des traces de sortie révèle que le logiciel utilise une technique d’interrogation où l’utilisation d’un autre mécanisme moins intrusif est possible.
Par exemple, différents analyseurs de virus commerciaux interrogent leur fichier de signature de virus plusieurs fois par seconde pour voir s’il a été mis à jour. L’un de mes systèmes dispose d’un pilote d’imprimante d’un grand fabricant d’imprimantes qui génère en continu des instructions de débogage qui, par leur inclusion du mot « interrogation », annoncent qu’ils interrogent. Dans l’un de mes exemples préférés, un utilitaire annoncé comme améliorant les performances système d’un fournisseur d’utilitaire majeur interroge plusieurs clés de Registre du fournisseur plusieurs fois par seconde. Un autre type de codage bâclé est une carte réseau d’un fournisseur de réseau populaire qui inclut un composant logiciel en mode utilisateur contenant des points d’arrêt de débogage incorporés qui se déclenchent en continu à mesure que le logiciel s’exécute. Si une application doit détecter une modification du fichier, elle peut demander une notification de modification d’annuaire. De même, si elle a besoin de détecter les modifications apportées à une clé de Registre, elle peut demander une notification de modification de clé, et les logiciels commerciaux ne doivent jamais contenir de sortie de débogage ou de points d’arrêt de débogage activés par défaut.
L’exemple l’exemple le plus flagrant, cependant, est peut-être le service de programme Microsoft Windows Media fourni avec Windows 2000 Server (\Winnt\System32\Windows Media\Server\Npsm.exe
) : il lit les 2 premiers Ko de \Winnt\System32\Windows Media\Server\ASDB\mdsas.mdb
au rythme d’environ 60 fois par seconde sur un système où il n’y a pas d’activité (y compris aucun service de média). Il n’y a aucune excuse à cela, d’autant plus que cela peut avoir un impact négatif sur les performances globales du serveur.
Je suis sûr que si vous avez utilisé Regmon, Filemon ou DebugView pendant un certain temps, vous avez probablement rencontré des exemples similaires. Lorsque vous en voyez un, ne définissez pas simplement un filtre pour l’oublier, envoyez un e-mail au fournisseur en vous plaignant de sa programmation bâclée.
Veuillez transmettre le bulletin d’informations à des amis que vous pensez être intéressés par son contenu.
Merci !
Mark
NOUVEAUTÉS DE SYSINTERNALS
LISTDLLS V2.23
ListDLLs est un utilitaire de ligne de commande qui vous montre des informations détaillées sur les DLL que les processus ont chargées. Par exemple, ListDLLs affiche l’adresse de mémoire de base, la taille, la version et le chemin complet de chaque DLL. Cette nouvelle version vous montre la ligne de commande qui a été utilisée pour lancer un processus, y compris tous les paramètres qui ont été passés sur la ligne de commande. Cela peut vous aider à faire la distinction entre plusieurs processus et à résoudre les problèmes liés à des options de ligne de commande spécifiques.
Téléchargez ListDLLs v2.23 à l’adresse www.sysinternals.com/listdlls.htm.
HANDLEEX V2.26
HandleEx est une application qui présente des informations sur les handles et les processus DLL ouverts ou chargés. Son affichage se compose de deux sous-fenêtres. La fenêtre supérieure affiche toujours une liste des processus actuellement actifs, y compris les noms de leurs comptes propriétaires, tandis que les informations affichées dans la fenêtre inférieure dépendent du mode dans lequel HandleEx se trouve : si HandleEx est en mode handle, vous verrez les handles que le processus sélectionné dans la fenêtre supérieure a ouverts ; s’il est en mode DLL, vous verrez les DLL et les fichiers mappés en mémoire que le processus a chargés.
La dernière version de HandleEx inclut plusieurs nouvelles fonctionnalités. Tout d’abord, comme ListDLLs, il affiche désormais la ligne de commande qui a été utilisée pour lancer un processus lorsque vous affichez les propriétés du processus.
L’une des lacunes de HandleEx avant cette version était que, bien qu’il affichait le nom du compte dans lequel les processus système et les processus de votre session de connexion s’exécutaient, il était incapable de contourner le modèle de sécurité Windows NT/2000 pour montrer le propriétaire des processus démarrés à partir d’autres comptes d’utilisateur (le programme Pview des kits de ressources Windows NT/2000 souffre également de cette limitation). Cela était douloureusement évident dans les environnements Terminal Server NT 4 et Windows 2000 Terminal Services, où HandleEx a indiqué que les processus démarrés à partir d’autres sessions utilisateur avaient des propriétaires inconnus. HandleEx v2.26 implémente une astuce qui lui permet de déterminer le compte propriétaire de tous les processus, sans exception, ce qui en fait un outil idéal pour les environnements Terminal Services.
La dernière nouvelle fonctionnalité de HandleEx v2.26 vous permet de forcer la fermeture de tout handle ouvert. J’ai ajouté cette fonctionnalité après avoir reçu de nombreuses demandes. Je vous recommande toutefois de l’utiliser avec une extrême prudence, car les applications ne sont généralement pas écrites pour s’attendre à ce que les handles deviennent soudainement non valides, et les applications avec des handles fermés forcés peuvent se comporter de manière erratique ou se bloquer en conséquence.
Téléchargez HandleEx v2.26 sur www.sysinternals.com/handleex.htm.
ELOGLIST V2.02
Le kit de ressources Windows 2000 inclut un outil nommé ELogDmp qui vous permet de vider les enregistrements d’un journal des événements sur l’ordinateur local ou distant. ELogList est plus puissant que ElogDmp, car il vous permet également de spécifier un nom de compte et un mot de passe facultatifs afin que vous puissiez accéder aux journaux des événements d’un ordinateur à partir d’un compte différent de celui à partir duquel vous exécutez l’outil. En outre, alors que l’outil ElogDmp affiche les entrées du journal des événements dans leur forme brute, ce qui rend la sortie difficile à interpréter, cette mise à jour ElogList met en forme les entrées du journal des événements pour afficher le texte tel qu’il apparaît dans les observateurs d'événements Windows NT/2000. Même lorsque vous affichez les journaux des événements à partir de systèmes distants, ElogList utilise les fichiers de messages appropriés sur le système distant pour sa mise en forme des données de chaîne.
Téléchargez ElogList v2.02 sur www.sysinternals.com/eloglist.htm.
LOGGEDON V1.1
LoggedOn est une applet de ligne de commande qui vous indique qui est connecté à un ordinateur particulier, localement ou via des partages de ressources. La mise à jour de la version 1.1 vous permet de rechercher dans votre réseau les sessions de connexion associées à un utilisateur particulier. Cette fonctionnalité est utile dans les situations où vous souhaitez effectuer des mises à jour d’un compte d’utilisateur et que vous devez vérifier que l’utilisateur n’est pas connecté.
Téléchargez LoggedOn v1.1 avec la source complète sur www.sysinternals.com/misc.htm.
BLUESCREEN V2.21
La plupart d’entre vous sont maintenant sans doute familiarisés avec le célèbre écran de veille Blue Screen Sysinternals, qui représente avec précision un incident et un redémarrage de Windows NT ou Windows 2000. Depuis sa version initiale, j’ai continuellement reçu des demandes d’utilisateurs Windows 9x qui veulent exécuter l’écran de veille sur leur ordinateur, donc je l’ai finalement porté vers Windows 9x. Sur Windows 9x, il simule un plantage et un redémarrage de Windows 2000.
La seule exigence pour utiliser l’écran de veille Blue Screen Sysintenals sur Windows 9x est d’obtenir une copie d’un fichier de Ntoskrnl.exe Windows 2000 à placer dans le répertoire \Windows\System
- Blue Screen nécessite le fichier pour l’écran de démarrage Windows 2000.
Maintenant, vous pouvez vraiment confondre les utilisateurs de Windows 9x qui reviennent sur leur ordinateur uniquement pour découvrir qu’il est bloqué dans un cycle de blocage et de redémarrage de Windows 2000.
Téléchargez l’écran de veille Bluescreen v2.21 sur www.sysinternals.com/bluescreen.htm.
PAGEDEFRAG V2.01
PageDefrag est un utilitaire de défragmentation qui s’exécute au démarrage pour défragmenter les fichiers de pagination et les hives du Registre de votre système. PageDefrag a été le premier utilitaire capable de défragmenter des hives de registre, mais depuis sa publication, cette fonctionnalité a été ajoutée à plusieurs défragmenteurs commerciaux. Toutefois, PageDefrag est toujours gratuit et la version 2.01 fonctionne sur Windows 2000 et Windows NT 4.
Si vous êtes intéressé par l’interface de défragmentation fournie par Windows NT 4 et Windows 2000, vous pouvez en savoir plus et télécharger le code source dans un défragmenteur de fichiers interactif sur www.sysinternals.com/defrag.htm. Sysinternals a documenté l’interface de défragmentation des années avant que Microsoft ne l’inclue dans le kit de développement Platform SDK, et plusieurs défragmenteurs commerciaux utilisent notre documentation et notre exemple de code.
Téléchargez PageDefrag v2.01 à l’adresse www.sysinternals.com/pagedfrg.htm. Consultez la documentation de l’interface de défragmentation sur www.sysinternals.com/defrag.htm.
LOADORDER V1.1
Vous êtes-vous déjà demandé dans quel ordre les pilotes de périphérique et les services se chargent et initialisent ? Maintenant, vous pouvez facilement le savoir. LoadOrder est un utilitaire qui traite les informations sous HKLM\System\CurrentControlSet\Services
pour créer une image de l’ordre de chargement des pilotes et des services.
Téléchargez LoadOrder v1.1 à l’adresse www.sysinternals.com/misc.htm.
CLOCKRES V1.0
Dans mes articles sur le planificateur, j’ai parlé du fait que le thread quanta Windows NT/2000 (la longueur du tour d’un thread à exécuter sur un processeur) est basé sur la résolution de l’horloge système. La résolution de l’horloge affecte également la latence des événements basés sur le minuteur Windows. L’article à www.sysinternals.com/timer.htm décrit même la façon dont les applications peuvent manipuler la résolution de l’horloge. Sur la plupart des SPM, la résolution est de 15 ms, et sur les monoprocesseurs, 10 ms. Ces valeurs sont définies par le SMP standard et les couches d’abstraction matérielle (HAL) monoprocesseurs.
Bien que la plupart des systèmes utilisent les valeurs courantes répertoriées ci-dessus, comment pouvez-vous déterminer la résolution réelle de l’horloge sur vos ordinateurs ? La réponse se trouve dans l’API Win32 GetSystemTimeAdjustment, qui vous indique si le système applique un ajustement périodique à l’heure de la journée. Il se trouve que cette API retourne également l’intervalle de l’horloge. L’applet ClockRes utilise l’API pour vous indiquer la résolution de l’horloge d’un système.
Téléchargez ClockRes plus source sur www.sysinternals.com/misc.htm.
BGINFO V1.0
Si vous êtes un administrateur responsable de plusieurs serveurs, vous passez probablement beaucoup de temps à ouvrir diverses boîtes de dialogue d’informations pour vous rappeler les valeurs de diverses propriétés système, telles que la version du Service Pack installé, les adresses IP, le nom de l’ordinateur, la taille de la mémoire et la vitesse du processeur. Vous pouvez maintenant avoir toutes ces informations directement sur le bureau de chaque serveur à l’aide de l’utilitaire BgInfo développé par Bryce.
Lorsque vous l’exécutez, BgInfo crée un arrière-plan de bureau qui signale automatiquement diverses caractéristiques système utiles. Vous pouvez placer BgInfo dans votre dossier Démarrer afin que les informations soient disponibles chaque fois que vous vous connectez, et vous pouvez modifier les données que BgInfo affiche, même en ajoutant les vôtres. L’installation de BgInfo sur vos serveurs vous permet de gagner du temps à rechercher à plusieurs reprises des informations facilement oubliées.
Téléchargez BgInfo v1.0 sur www.sysinternals.com/misc.htm.
INSIDE WINDOWS 2000, 3e ÉDITION
Le livre officiel sur les composants internes de Windows 2000 est maintenant disponible ! Cette édition, co-auteure par David Solomon (www.solsem.com) et Mark Russinovich, est plus de 40 % supérieure à la précédente, avec une nouvelle couverture des réseaux, plug-and-play, gestion de l’alimentation, services, registre, WMI, démarrage et arrêt, et stockage. Il inclut également un CD avec plusieurs outils puissants, qui ne sont disponibles nulle part ailleurs, pour examiner les éléments internes de Windows 2000.
Consultez la table des matières du livre et commandez maintenant via www.sysinternals.com/insidew2k.htm.
SYSINTERNALS SUR WWW.MICROSOFT.COM
Je n’ai pas de nouveaux articles de la base de connaissances qui font référence à Sysinternals à signaler, mais Microsoft a ajouté des liens assez importants vers Sysinternals dans la partie TechNet de son site. Le premier est dans la colonne « Demandez-nous à propos de... la sécurité » dans www.microsoft.com/TechNet/security/au022800.asp, où le chroniqueur Joel Scambray avertit les lecteurs que NTFSDOS (www.sysinternals.com/ntfspro.htm) peut être utilisé par un utilisateur malveillant pour modifier le contenu de l’annuaire Active Directory d’un contrôleur de domaine Windows 2000.
La deuxième référence se trouve dans la colonne « À l’intérieur de Microsoft » à www.microsoft.com/technet/inside/default.asp. La colonne est de style Q&R et commence par deux questions liées à la détermination de l’application dans laquelle un fichier particulier est ouvert. Au cours de la réponse, où les lecteurs sont dirigés vers HandleEx (www.sysinternals.com/handleex.htm) et NtHandle (www.sysinternals.com/nthandle.htm), l’auteur de l’article (la « Taupe ») déclare ceci à propos de Sysinternals: « Il y a juste une tonne de grands utilitaires là-bas qui ne vous coûteront pas un centime. Même la Taupe fait référence à Sysinternals de temps en temps (Quoi ? Vous pensiez peut-être que la Taupe garde toutes ces informations dans sa tête ?). Une fois de plus, c’est là qu’il va vous envoyer. » C’est à peu près aussi proche d’une approbation officielle du site par Microsoft que nous pouvons nous en attendre.
INFORMATIONS INTERNES
LA PUISSANCE DU PRIVILÈGE DEBUG
Contrairement à d’autres moniteurs de sortie de débogage, notamment dbmon, mon moniteur de débogage-sortie DebugView (www.sysinternals.com/dbgview.htm) nécessite des privilèges d’administrateur local pour l’exécution, car il installe un pilote de périphérique qui capture la sortie de débogage en mode noyau. Par conséquent, j’ai reçu des dizaines d’e-mails de développeurs se plaignant que leur direction ne leur accorderait pas de privilèges d’administrateur local, mais uniquement le privilège Debug. L’argument est que le privilège Debug est là pour une raison, et que tous les développeurs d’applications doivent développer. Ces développeurs me demandent de modifier DebugView afin qu’il installe le pilote uniquement si l’utilisateur dispose de privilèges d’administrateur et qu’il collecte simplement la sortie de débogage Win32.
Ces demandes me font toujours rire, car ce que la direction qui utilise l’argument du privilège Debug ne parvient pas à réaliser, c’est que ce privilège ouvre la porte aux privilèges d’administrateur local. À l’aide du privilège Debug, un développeur peut attacher un débogueur au processus LSASS (Local Security Authority) et le manipuler afin de lui accorder des privilèges d’administrateur local lors de sa prochaine connexion. Il peut également injecter du code dans n’importe quel processus en cours d’exécution dans le compte Système qui ajouterait son compte au groupe Administrateurs locaux. Quand j’explique cela aux développeurs qui se plaignent, ils répondent parfois que leur direction n’achète pas l’argument. Jusqu’à présent, je n’avais rien eu pour qu’ils reviennent à leur direction pour défendre leur cause, mais une récente éruption de tels e-mails m’a incité à prendre des mesures.
LogonEx, un utilitaire que vous pouvez télécharger à www.sysinternals.com/logonex.zip, montre graphiquement l’influence du privilège Debug. LogonEx fonctionne sur Windows NT et Windows 2000. Pour mieux démontrer ses capacités, créez un compte d’utilisateur normal avec l’ajout du privilège « Debug Programs ». Déconnectez-vous et connectez-vous sous ce compte, puis exécutez LogonEx. Vous aurez besoin du ou des fichiers de symboles pour msv1_0.dll pour votre installation particulière (les développeurs ont généralement installé des symboles système), que LogonEx utilise pour localiser le point d’entrée de la fonction MsvpPasswordValidate
et le corriger. Une fois que LogonEx a effectué son correctif, vous pouvez vous connecter au système à l’aide de n’importe quel compte sans spécifier de mot de passe. Terminez la démonstration en vous connectant en tant qu’administrateur et en ajoutant le compte que vous avez créé au groupe Administrateurs locaux.
LogonEx n’est qu’un exemple de la façon dont le privilège Debug permet à un développeur de prendre le contrôle d’un système, mais il y en a beaucoup d’autres. J’espère que LogonEx convaincra la direction qu’il n’est pas logique de ne pas accorder aux développeurs des privilèges d’administrateur local (notez, toutefois, que je ne parle pas de privilèges d’administrateur de domaine, ce qui est une autre histoire qu’un administrateur local règne en maître uniquement sur son propre ordinateur, pas sur les autres, alors qu’un administrateur de domaine règne sur un réseau).
NOUVELLES API DANS WIN2K SP1 ?
Après que de nombreux utilisateurs ont rencontré des problèmes avec les Service Packs (SP) NT 4 provoquant de nouveaux bogues, Microsoft a adopté une stratégie de ne pas inclure de nouvelles fonctionnalités dans un SP afin de réduire le risque qu’ils introduisent de nouveaux problèmes tout en corrigeant les anciens. Du moins c’est ce que nous pensions. Windows 2000 SP 1 a été publié récemment et ne semblait pas avoir de nouvelles fonctionnalités. Toutefois, une inspection détaillée de Ntoskrnl.exe, le fichier qui contient les composants exécutifs et noyau de Windows 2000, et Ntdll.dll, la bibliothèque qui contient l’API native et le chargeur, révèle qu’une nouvelle API a fait ses débuts dans SP 1.
La nouvelle API se compose des fonctions suivantes :
RtlTraceDatabaseAdd
RtlTraceDatabaseCreate
RtlTraceDatabaseDestroy
RtlTraceDatabaseEnumerate
RtlTraceDatabaseFind
RtlTraceDatabaseLock
RtlTraceDatabaseUnlock
RtlTraceDatabaseValidate
Les noms des fonctions étant assez descriptifs, il s’agit clairement d’une API pour la journalisation des événements. Un aspect intéressant de l’API est que son implémentation est dupliquée dans Ntdll et Ntoskrnl, ce qui est différent des autres API Ntdll qui appellent les services d’une implémentation dans Ntoskrnl.
L’examen de l’implémentation de l’API montre qu’elle est utilisée comme suit : une application crée une base de données de traces, qui est stockée dans la mémoire virtuelle de l’application, et ajoute des entrées à la base de données. À un moment donné, l’application peut énumérer le contenu de la base de données, et lorsqu’elle a terminé avec la base de données, elle la supprime. Curieusement, il ne semble pas y avoir de moyen de supprimer des entrées de base de données.
Qu’est-ce qui utilise cette nouvelle API ? Rien qui est installé sur mon installation Windows 2000 Advanced Server assez complète, il n’est donc pas clair si quelque chose l’utilise. Il s’agit peut-être d’une API de débogage qui a été accidentellement incluse dans le code de version SP 1.
Publié le mercredi 30 août 2000 à 19h07 par ottoh
[Archives des newsletters ^] [< Volume 2, Numéro 3] [Volume 2, Numéro 5 >]