Question

J'ai bénéficié d'une pénalité de création de processus très lourd sur mon Windows XP SP3 pendant environ deux mois. Le problème est le plus manifeste et ennuyeux avec des tâches qui font créer beaucoup de processus, tels que les scripts shell (soit dit en passant, les scripts bash sur Cygwin), Makefile ou déballer un paquet IzPack tel que le programme d'installation SpringSource Tool Suite (beaucoup d'extracteur unpack200.exe séparé JAR processus). Je suis sûr que de la création du processus d'observation de sortie de diagnostic script bash, ou regarder les processus apparaissent dans le gestionnaire de tâches. Il n'y a pas de retard notable une fois qu'un processus est en marche.

J'ai signalé ce problème sur la liste de diffusion Cygwin que je pensais au départ et à tort que Cygwin a été affecté, soupçonnant un bogue dans la DLL Cygwin, ou tout le reste.

Ralentissement après la mise à jour sur Win32 (XP) - (lien vers mon poste à la liste Cygwin)

Je me demande si quelque chose a installé une merde dans un crochet de création de processus que je suppose que pourrait exister sous Windows. (Comme le gestionnaire de sécurité en Java .) Un virus ou un logiciel de sécurité? Je n'ai pas consciemment installé non plus. Je doutais aussi un petit problème de mise à jour Microsoft, mais je pense qu'ils auraient fixé que maintenant.

Pour autant que je sache, les processus sur Win32 sont créés par CreateProcess.

Comment puis-je savoir pourquoi la création de processus est si long et exactement ce qui se passe ici? Y at-il quelque chose comme strace pour Linux, ou peut-être même quelque chose de mieux?

Était-ce utile?

La solution

Un grand merci à Luc pour moi pointant dans la bonne direction. Procmon est un outil fantastique. Littéralement, un nouveau monde à l'intérieur du système ouvert pour moi. Et le coupable a été rapidement trouvé en définissant un filtre pour inclure parent process ID = WINPID of a Cygwin bash.exe puis suivi une seule commande ls. Il était accroché des programmes malveillants dans une clé de registre nommée AppCertDlls, dont j'étais bien sûr totalement pas au courant avant.

Une fois que je me suis déplacé le clipmote.dll des logiciels malveillants sur system32, la vitesse de création de processus a été immédiatement retour à la normale.

Je suppose que je contracté ce virus en installant freeware empoisonné.

J'ai passé quelque temps à enquêter sur cette question et a trouvé à la fois effrayant et intéressant, donc voici ce que j'ai trouvé, et bien sûr je serai reconnaissant pour toute information complémentaire ou des commentaires que vous pourriez avoir.

Le DLL fichier a été chargé dans chaque processus utilisateur, même Explorer, taskmgr et Procmon lui-même. Seuls les processus sous SYSTEM (comme indiqué dans dans procexp.exe) semblent être restées non infectées.

Le problème ici est que HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDlls est vérifiée (au moins sur mon système, mais peut-être sur de nombreux systèmes, et probablement même par défaut) pour charger les DLL qui peuvent avoir un mot à dire sur si oui ou non une partie binaire est autorisé à exécuter ou non en retournant une valeur d'une fonction appelée sur les:

NTSTATUS STDCALL CreateProcessNotify (LPCWSTR lpApplicationName, ULONG Reason); 

En fait, j'ai eu une entrée sous cette clé appelée sethdown, mais le nom pourrait être quelque chose.

RegEnumValue HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDlls

Index:  0
Name:   sethdown
Type:   REG_SZ
Length: 66
Data:   C:\WINDOWS\system32\clipmote.dll

D'après les rapports trouvés sur le net, je conclus que le crochet de AppCertDlls est une partie régulière du système d'exploitation Windows, et non pas une extension voyous. Si tel est le cas, il est un point d'entrée du virus, car il permet de configurer de manière dynamique les logiciels malveillants dans un processus.

On dirait qu'il est en fait - et ironiquement - censé être une caractéristique de sécurité, pas différente de la crèche de la sécurité dans la machine virtuelle Java (voir ma question initiale). Un utilitaire Microsoft appelé appsec.exe est signalé à utiliser cette touche. La fonction qui est ensuite appelé la DLL « de sécurité » qui est chargé est CreateProcessNotify, cité ci-dessus. D'après ce que je comprends, il est supposé dire oui ou non -. Mais il peut faire ce qu'il veut

Dans mon cas, et l'instance unique de l'exécution ls.exe que j'ai analysé, il a créé cinq fils. Ils chargent ou essayez de charger d'autres DLL et d'interagir avec le registre. Et qui sait quoi d'autre.

Si quelqu'un en sait plus sur ce mécanisme dangereux, je suis tout ouïe.

Voici ce que j'ai trouvé sur AppCertDlls:

mention au début de 01/2007 (Re 5 : ?????????? ??????? ??????????)

AppCertDlls rapporté sur le forum Sysinternals (Autoruns), 10/2007

A propos AppCertDlls - virus mentionné 01/2008

  

Mais Microsoft lui-même largement utilisé cette   fonction, exactement, il était en fait   conçue comme la chose « unique ».   Seulement pour comme - moyen de limiter la   les applications qui peuvent être exécutées sous la   Terminal Server 2000. - Andrew Worobow

plus de détails sur la touche AppCertDlls et CreateProcessNotify, 01/2008

06/2010 rapport d'infection fournissant quelques détails

Le logiciel malveillant a tenté de voler des informations de compte bancaire (et de l'argent, évidemment), mais il pourrait peut-être configuré pour faire autre eIngs, aussi. Il y avait des entrées de registre supplémentaires sous HKEY_CURRENT_USER\Software\AppDataLow\{some GUID here}. Il doit avoir fait quelques screen scraping pendant que je faisais la banque en ligne; il savait TANs occasion. Je me souviens une fois que j'avais l'impression ma banque a été piraté quand peu de temps avant ou (probablement) après la connexion, j'ai vu un écran demandant une vingtaine TANs à la fois. WTF, je pensais, le navigateur a la mauvaise URL, et je fermai la fenêtre. Je devrais être plus concerné. Je ne pensais pas que la question soit si dangereux. Heureusement, aucun dommage. Juste la chance, je suppose.

Voici une liste des chaînes importantes prospectifs je trouve à l'intérieur du virus:

  • client.dll
  • EAPSFILT.dll
  • KERNEL32.dll

Je pense que les deux premiers peut-être d'autres bibliothèques de virus, il tente de charger.

  • _aullshr
  • CompareStringA
  • CreateEventA
  • CreateFileA
  • CreateFileMappingA
  • CreateProcessNotify
  • CtfImmIsCiceroStartedInThread
  • CtfImmTIMActivate
  • DllCleanupServer
  • DllStartupServer
  • ExitProcess
  • GetThreadContext
  • ImmDisableIme
  • ImmDisableIME
  • ImmGetConversionListA
  • ImmGetVirtualKey
  • ImmRegisterWordA
  • ImmSetCandidateWindow
  • InterlockedExchangeAdd
  • iswlower
  • lstrcmpA
  • MapViewOfFile
  • memset
  • OpenThread
  • ReadFile
  • RealDriveType
  • RegenerateUserEnvironment
  • RestartDialog
  • SetFilePointer
  • Sleep
  • strchr
  • TerminateThread
  • UnmapViewOfFile
  • vDbgPrintExWithPrefix
  • VirtualQueryEx
  • WaitForMultipleObjects

La fonction Cicero avait l'air coquin pour moi, mais il fait partie de C:\WINDOWS\system32\imm32.dll, la "API Windows IMM32 Client Library" -. Quel qu'il soit

J'ai couru sfc.exe, "Vérificateur des fichiers système" de Microsoft. Fera plus le contrôle sur mes fichiers de programme. Et obtenir un scanner de virus. Recommandations de bienvenue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top