2010-12-04 6 views
1

J'ai subi une lourde pénalité de création de processus sur mon Windows XP Home SP3 pendant environ deux mois. Le problème est le plus manifeste et ennuyant avec des tâches qui créent beaucoup de processus, tels que des scripts shell (par exemple, scripts bash sur Cygwin), Makefiles, ou décompresser un package IzPack tel que le programme d'installation SpringSource Tool Suite (beaucoup d'extracteurs JAR séparés). processus). Je suis sûr que c'est la création de processus en observant la sortie de diagnostic de script bash, ou en regardant les processus apparaissent dans le gestionnaire de tâches. Il n'y a pas de retard notable une fois qu'un processus est opérationnel.AppCertDlls: Ralentissement de la création de processus sur Win32 causé par un virus

J'ai signalé ce problème sur la liste de diffusion Cygwin comme je l'ai initialement et pensais à tort que seul Cygwin était affecté, soupçonnant un bug dans la DLL Cygwin, ou autre.

Slowdown after update on Win32 (XP Home) - (link to my post to the Cygwin list)

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 avec le security manager in Java.) Un virus ou un logiciel de sécurité? Je n'ai pas consciemment installé non plus. J'ai également soupçonné un problème de mise à jour de Microsoft, mais je pense qu'ils auraient réglé cela 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 prend autant de temps et que se passe-t-il exactement ici? Y a-t-il quelque chose comme strace pour Linux, ou peut-être même quelque chose de mieux?

+0

Vous pouvez utiliser Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645).aspx) pour voir où le retard se produit. – Luke

+1

Vous pouvez vérifier les fichiers suspects ici: http://www.virustotal.com/ – ruslik

+0

Merci, ruslik. Voici un lien vers l'analyse de VirusTotal.com: http://www.virustotal.com/file-scan/report.html?id=67a6c870fc0428f36ebefc423dfbba1643f002b296d92cbad8ec9ac6027b9452-1292351382 – Lumi

Répondre

4

Un grand merci à Luke pour m'avoir indiqué dans la bonne direction. Procmon est un outil fantastique. Littéralement, un nouveau monde à l'intérieur du système s'est 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 en surveillant simplement une seule commande ls. Il s'agissait d'un logiciel malveillant connecté à une clé de registre nommée AppCertDlls, dont je n'étais bien sûr pas au courant auparavant.

Une fois que j'ai déplacé le malware clipmote.dll sur system32, la vitesse de création de processus était immédiatement revenue à la normale. Je suppose que j'ai contracté ce virus en installant un freeware empoisonné. J'ai passé du temps à enquêter sur ce problème et je l'ai trouvé à la fois effrayant et intéressant, alors voici ce que j'ai trouvé, et bien sûr je serai reconnaissant pour toutes les informations supplémentaires ou des commentaires que vous pourriez avoir. La DLL de malware a été chargée dans chaque processus utilisateur, même Explorer, taskmgr et procmon elle-même. Seuls les processus sous SYSTEM (énumérés au paragraphe procexp.exe) semblent ne pas avoir été infectés. 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 si un binaire est autorisé à fonctionner ou pas en retournant une valeur d'une fonction appelée sur les:

NTSTATUS STDCALL CreateProcessNotify (LPCWSTR lpApplicationName, ULONG Reason); 

en fait, j'avais 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 trouvent sur le net, je conclus que le crochet AppCertDlls est une partie régulière du système d'exploitation Windows, et non une extension voyous.Si tel est le cas, il s'agit d'un point d'entrée de virus, car il permet de configurer de manière dynamique des logiciels malveillants dans un processus.

On dirait que c'est en fait - et ironiquement - censé être une fonctionnalité de sécurité, qui n'est pas sans rappeler le gestionnaire de sécurité de la JVM (voir ma question initiale). Un utilitaire Microsoft appelé appsec.exe utilise cette clé. La fonction qui est ensuite appelée sur la DLL de "sécurité" chargée est CreateProcessNotify, comme cité ci-dessus. D'après ce que j'ai compris, il est supposé dire oui ou non - mais il peut faire ce qu'il veut.

Dans mon cas et l'instance unique d'exécution ls.exe que j'ai analysé, il a créé cinq threads. Ils chargent ou essaient 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:

early mention in 01/2007 (Re5: Блокировка запуска приложений)

AppCertDlls reported on Sysinternals forum (Autoruns), 10/2007

About AppCertDlls - virus mentioned 01/2008

Mais Microsoft lui-même utiliser largement cette fonctionnalité , exactement, il était en fait conçu comme la chose "unique". utiliser uniquement comme - moyen de limiter les applications qui peuvent être exécutées sous le serveur terminal 2000. - Andrew Worobow

more details on the AppCertDlls key and CreateProcessNotify, 01/2008

06/2010 infection report providing some details

Le logiciel malveillant a essayé de voler la banque informations sur le compte (et l'argent, évidemment), mais il pourrait éventuellement être configuré pour faire d'autres choses, aussi. Il y avait des entrées de registre supplémentaires sous HKEY_CURRENT_USER\Software\AppDataLow\{some GUID here}. Il a dû faire un peu de grattage d'écran pendant que je faisais des opérations bancaires en ligne; il connaissait les TAN utilisés. Je me souviens d'une fois où j'ai eu l'impression que ma banque avait été piratée peu de temps auparavant ou (probablement) après la connexion, j'ai vu un écran demandant une vingtaine de TAN à la fois. WTF, j'ai pensé, le navigateur a eu la mauvaise URL, et j'ai fermé la fenêtre. J'aurais dû être plus concerné. Je n'aurais pas pensé que toute la question soit aussi dangereuse. Heureusement, pas de dégâts. Juste chanceux, je suppose.

Voici une liste des chaînes importantes prospectifs que 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 essaie 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 exécuté sfc.exe, "Vérificateur de fichiers système" de Microsoft. Fera plus de vérification sur mes fichiers de programme. Et obtenez un scanner de virus. Recommandations bienvenues.

+0

Deux autres liens avec des informations sur cette bête: – Lumi

Questions connexes