1

大约两个月以来,我一直在 Windows XP Home SP3 上享受高额的进程创建惩罚。这个问题在创建大量进程的任务中最为明显和烦人,例如 shell 脚本(顺便说一下,Cygwin 上的 bash 脚本)、Makefile 或解压 IzPack 包,例如 SpringSource Tool Suite 安装程序(许多单独的unpack200.exeJAR 提取器进程)。我确定这是通过观察 bash 脚本诊断输出来创建进程,或者观察进程出现在任务管理器中。一旦进程启动并运行,就没有明显的延迟。

我在 Cygwin 邮件列表上报告了这个问题,因为我最初错误地认为只有 Cygwin 受到影响,怀疑 Cygwin DLL 中的错误,或者诸如此类。

Win32(XP Home)更新后速度变慢- (链接到我的帖子到 Cygwin 列表)

我想知道是否某些东西在我认为可能存在于 Windows 上的进程创建钩子中安装了一些垃圾。(与Java 中的安全管理器一样。)病毒还是安全软件?我也没有刻意安装。我还怀疑微软更新故障,但我认为他们现在已经解决了这个问题。

据我所知,Win32 上的进程是由CreateProcess.

我怎样才能找出为什么流程创建需要这么长时间以及这里到底发生了什么?有没有类似straceLinux 的东西,甚至可能有更好的东西?

4

1 回答 1

4

非常感谢卢克为我指明了正确的方向。Procmon 是一个很棒的工具。从字面上看,系统内部的一个新世界为我打开了。parent process ID = WINPID of a Cygwin bash.exe通过设置一个过滤器来包含然后只监视一个ls命令,很快就找到了罪魁祸首。它是挂在名为 的注册表项中的恶意软件AppCertDlls,我之前当然完全不知道。

一旦我将恶意软件clipmote.dll移出system32,进程创建速度立即恢复正常。

我想我是通过安装有毒的免费软件感染了这种病毒。

我花了一些时间调查这个问题,发现它既可怕又有趣,所以这就是我的发现,当然,我会感谢您提供的所有其他信息或任何评论。

恶意软件 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 中的安全管理器没有什么不同(请参阅我的原始问题)。据报道,一个名为的 Microsoft 实用程序appsec.exe使用此密钥。然后在加载的“安全”DLL 上调用的函数是CreateProcessNotify,如上所述。据我了解,假设只是说是或否-但它可以做任何想做的事。

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

如果有人知道更多关于这种危险机制的信息,我会全力以赴。

这是我发现的AppCertDlls

早在 01/2007 中提及(Re 5 : Блокировка запуска приложений)

AppCertDlls 在 Sysinternals 论坛 (Autoruns) 上报告,10/2007

关于 AppCertDlls - 提到的病毒 01/2008

但是微软自己广泛使用了这个功能,确切地说,它实际上被设想为“一次性”的东西。仅用作限制可在终端服务器 2000 下运行的应用程序的方式。 -- Andrew Worobow

有关 AppCertDlls 密钥和 CreateProcessNotify 的更多详细信息,01/2008

06/2010 感染报告提供了一些细节

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

这是我在病毒中发现的看起来很重要的字符串的列表:

  • 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“Windows IMM32 API 客户端库”的一部分——不管它是什么。

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

于 2010-12-12T22:00:01.310 回答