AppCertDlls:由病毒引起的 Win32 上的进程创建速度减慢
Posted
技术标签:
【中文标题】AppCertDlls:由病毒引起的 Win32 上的进程创建速度减慢【英文标题】:AppCertDlls: Process creation slowdown on Win32 caused by virus 【发布时间】:2011-05-20 06:14:37 【问题描述】:大约两个月来,我一直在 Windows XP Home SP3 上享受高额的进程创建惩罚。对于创建大量进程的任务,问题最为明显和烦人,例如 shell 脚本(顺便说一下,Cygwin 上的 bash 脚本)、Makefile 或解压缩 IzPack 包,例如 SpringSource Tool Suite 安装程序(很多单独的 unpack200.exe
JAR 提取器进程)。我确定这是通过观察 bash 脚本诊断输出来创建进程,或者观察进程出现在任务管理器中。一旦进程启动并运行,就没有明显的延迟。
我在 Cygwin 邮件列表中报告了这个问题,因为我最初错误地认为只有 Cygwin 受到影响,怀疑 Cygwin DLL 中存在错误,或者诸如此类。
Slowdown after update on Win32 (XP Home) - (link to my post to the Cygwin list)
我想知道是否某些东西在我认为可能存在于 Windows 上的进程创建挂钩中安装了一些垃圾。 (与security manager in Java 一样。)是病毒还是安全软件?我也没有刻意安装。我还怀疑是 Microsoft 更新故障,但我认为他们现在应该已经修复了。
据我所知,Win32 上的进程是由CreateProcess
创建的。
我怎样才能找出为什么流程创建需要这么长时间以及这里到底发生了什么?有没有类似strace
的 Linux 或者更好的东西?
【问题讨论】:
您可以使用 Process Monitor (technet.microsoft.com/en-us/sysinternals/bb896645.aspx) 查看延迟发生的位置。 您可以在这里查看可疑文件:virustotal.com 谢谢,鲁斯利克。这是 VirusTotal.com 分析的链接:virustotal.com/file-scan/… 另外两个关于野兽信息的链接:trustdefender.com/… 和 trustdefender.com/… 欢迎来到 Stack Overflow,一个编程问答网站。如果您对系统管理有任何疑问,请在 ServerFault 上提问。如果您对一般硬件或软件有疑问,请在 SuperUser 上提问。您的问题与编程无关。 【参考方案1】:非常感谢卢克为我指明了正确的方向。 Procmon 是一个很棒的工具。从字面上看,系统内部的一个新世界为我打开了。通过设置一个过滤器来包含parent process ID = WINPID of a Cygwin bash.exe
,然后只监视一个ls
命令,很快就找到了罪魁祸首。它是挂在名为AppCertDlls
的注册表项中的恶意软件,我之前当然完全不知道。
将恶意软件clipmote.dll
移出system32
后,进程创建速度立即恢复正常。
我猜我是通过安装有毒的免费软件感染了这种病毒。
我花了一些时间调查这个问题,发现它既可怕又有趣,所以这就是我的发现,当然我会感谢您提供的所有其他信息或任何 cmet。
恶意软件 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. -- Andrew 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。 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
,Microsoft 的“系统文件检查器”。将对我的程序文件进行更多检查。并获得病毒扫描程序。欢迎提出建议。
【讨论】:
以上是关于AppCertDlls:由病毒引起的 Win32 上的进程创建速度减慢的主要内容,如果未能解决你的问题,请参考以下文章