2010-12-04 127 views
1

我在Windows XP Home SP3上享受了大约两个月的巨大进程创建惩罚。这个问题最明显并且令人烦恼的是创建大量进程的任务,例如shell脚本(顺便说一下,Cygwin上的bash脚本),Makefiles或者拆开IzPack软件包,比如SpringSource Tool Suite安装程序(大量单独的unpack200.exe JAR提取器流程)。我确信它是通过观察bash脚本诊断输出来创建流程,还是观察进程出现在任务管理器中。一旦进程启动并运行,没有明显的延迟。AppCertDlls:由病毒引起的Win32进程创建速度减慢

我已经在Cygwin邮件列表上报告过这个问题,因为我最初和错误地认为只有Cygwin受到影响,怀疑Cygwin DLL中的错误,或者是什么。

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

我想知道的东西是否已经安装了一些废话成进程创建挂钩,我相信在Windows上可能存在。 (与security manager in Java一样。)病毒或安全软件?我也没有有意识地安装。我也怀疑微软更新故障,但我认为他们现在已经修复了这个问题。

据我所知,Win32上的进程是由CreateProcess创建的。

我怎样才能找出为什么过程创建需要这么长时间,这里究竟发生了什么?有没有像Linux的strace,或者甚至可能更好?

+0

你可以使用进程监视器(http://technet.microsoft.com/en-us/sysinternals/bb896645。aspx)查看延迟发生的位置。 – Luke 2010-12-04 18:30:35

+1

你可以在这里检查可疑文件:http://www.virustotal.com/ – ruslik 2010-12-13 03:56:53

回答

4

非常感谢卢克指出我正确的方向。 Procmon是一个很棒的工具。从字面上看,系统内部的一个新世界为我打开了。通过设置一个筛选器来迅速找到罪魁祸首,包括parent process ID = WINPID of a Cygwin bash.exe,然后只监视一个单一的ls命令。这是一个挂在名为AppCertDlls的注册表项中的恶意软件,其中我当然完全没有意识到。

当我将恶意软件clipmote.dllsystem32中移出后,进程创建速度立即恢复正常。

我想我通过安装中毒免费软件来感染这种病毒。

我花了一些时间调查这个问题,发现它既可怕又有趣,所以这里是我找到的,当然我会感谢所有额外的信息或您可能有的任何意见。

恶意软件DLL被加载到每个用户进程中,甚至是Explorer,taskmgr和procmon本身。只有在SYSTEM(如procexp.exe中列出)下的过程似乎仍未受感染。

这里的问题是,HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDlls是(即使在默认情况下,至少在我的系统,但可能在很多系统中,并有可能)检查加载可能有发言权了一些二进制是否被允许运行DLL或不是由一个被称为他们函数返回一个值:

NTSTATUS STDCALL CreateProcessNotify (LPCWSTR lpApplicationName, ULONG Reason); 

其实,我有叫sethdown该键下的条目,但该名称可以是任何东西。

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

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

从报告中的净我的结论是AppCertDlls钩子是Windows操作系统的常规部分,而不是一些流氓推广中。如果是这样的话,这是一个病毒入侵点,因为它允许动态地将恶意软件配置到一个进程中。

看起来它实际上是 - 讽刺的是 - 意味着是一个安全功能,没有什么不同的JVM安全管理器(见我原来的问题)。据报道称为appsec.exe的Microsoft实用程序使用此密钥。如上所述,然后在加载的“安全”DLL上调用的函数是CreateProcessNotify。根据我的理解,它被假定只是说是或否 - 但它可以做任何想要的事情。

在我的情况和运行ls.exe我分析的单一实例,它创建了五个线程。他们加载或尝试加载其他DLL并与注册表进行交互。谁知道还有什么。

如果有人知道更多关于这个危险的机制,我全都耳闻。

这里是我的AppCertDlls发现:

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

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

About AppCertDlls - virus mentioned 01/2008

但微软本身广泛使用 功能,准确地说,它实际上是 构想为“一次性”的事情。 只有使用它作为 - 的方式来限制可以在 终端服务器2000下运行的应用程序 - 安德鲁Worobow

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

06/2010 infection report providing some details

恶意软件试图窃取银行帐户信息(显然是金钱),但它也可能被配置为做其他事情。还有HKEY_CURRENT_USER\Software\AppDataLow\{some GUID here}下的其他注册表项。在我做网上银行的时候,它一定做了一些屏幕截图;它知道使用TAN。我记得有一次我印象中我银行在不久之前遭到黑客入侵,或者(可能)登录后我看到一个屏幕一次要求大约20个TAN。跆拳道,我想,浏览器得到了错误的网址,我关上了窗户。我应该更关心。我不会认为整个问题如此危险。幸运的是,没有伤害。我猜,幸运的是。

这是我发现的病毒内部的显著前瞻性字符串列表:

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

我觉得前两个可能是其他病毒库它试图加载。

  • _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

Cicero功能流氓看着我,但它是C:\WINDOWS\system32\imm32.dll一部分, “视窗IMM32 API客户端库” - 不管它是什么。

我跑sfc.exe,微软的“系统文件检查器”。将做更多的检查我的程序文件。并获得病毒扫描程序。建议欢迎。