AppCertDlls:病毒导致 Win32 上的进程创建速度减慢

2023-12-28

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

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

Win32 (XP Home) 更新后速度变慢 -(链接到我在 Cygwin 列表中的帖子) http://comments.gmane.org/gmane.os.cygwin/122546

我想知道是否有什么东西在进程创建挂钩中安装了一些垃圾,我认为 Windows 上可能存在这些垃圾。 (与Java 中的安全管理器 http://download.oracle.com/javase/6/docs/api/java/lang/SecurityManager.html#checkExec%28java.lang.String%29.) 病毒,还是安全软件?我也没有自觉地安装过。我还怀疑微软的更新出现了故障,但我认为他们现在已经修复了这个问题。

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

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


非常感谢卢克为我指明了正确的方向。 Procmon 是一个很棒的工具。毫不夸张地说,系统内部的新世界为我打开了。通过设置过滤器,很快就找到了罪魁祸首parent process ID = WINPID of a Cygwin bash.exe然后只监视一个ls命令。这是恶意软件挂接到名为AppCertDlls,我之前当然完全不知道。

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

我猜我是因为安装了有毒的免费软件而感染了这种病毒。

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

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

这里的问题是HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCertDlls检查(至少在我的系统上,但可能在许多系统上,甚至可能是默认情况下)加载 DLL,这些 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

根据网上的报道,我得出的结论是AppCertDllshook 是 Windows 操作系统的常规部分,而不是一些恶意扩展。如果是这样,那么它就是一个病毒入口点,因为它允许将恶意软件动态配置到进程中。

具有讽刺意味的是,看起来它实际上是一个安全功能,与 JVM 中的安全管理器没有什么不同(请参阅我原来的问题)。一个名为的 Microsoft 实用程序appsec.exe据报道使用此密钥。然后在加载的“安全”DLL 上调用的函数是CreateProcessNotify,如上面引用的。据我了解,它被认为只是说是或否 - 但它可以做任何它想做的事。

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

如果有人对这种危险机制有更多了解,我会洗耳恭听。

这是我发现的AppCertDlls:

01/2007 早期提及(重新 http://www.rsdn.ru/forum/asm/2308423.1.aspx5 http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/0b12875b-b98e-41d9-96fe-ffdc828c4134: Блокировка запуска приложений)

AppCertDlls 在 Sysinternals 论坛 (Autoruns) 上进行了报道,10/2007 http://forum.sysinternals.com/appcertdlls_topic12546_post121704.html

关于 AppCertDlls - 提到的病毒 01/2008 http://worobow.spaces.live.com/blog/cns!10AD8E948BFD5383!178.entry

但微软本身广泛使用这个 功能,确切地说,实际上是 被认为是“一次性”的事情。 仅用作 - 限制的方式 可以在以下环境下运行的应用程序 终端服务器 2000。-- Andrew Worobow

有关 AppCertDlls 密钥和 CreateProcessNotify 的更多详细信息,01/2008 http://worobow.spaces.live.com/blog/cns!10AD8E948BFD5383!180.entry

06/2010 感染报告提供了一些详细信息 http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/0b12875b-b98e-41d9-96fe-ffdc828c4134

该恶意软件试图窃取银行帐户信息(显然还有金钱),但它也可能被配置为执行其他操作。下面还有其他注册表项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

The Cicero函数对我来说看起来很流氓,但它是C:\WINDOWS\system32\imm32.dll、“Windows IMM32 API 客户端库”——无论是什么。

I ran sfc.exe,微软的“系统文件检查器”。将对我的程序文件进行更多检查。并获取病毒扫描程序。欢迎推荐。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AppCertDlls:病毒导致 Win32 上的进程创建速度减慢 的相关文章

  • 我需要为我的应用程序制作和加载多大尺寸的 ImageList 图标(考虑更高的 DPI)?

    我有一个CListCtrl http msdn microsoft com en us library hfshke78 aspx控制 或ListView http msdn microsoft com en us library wind
  • C++ win32设置光标位置

    我知道要使用哪个功能 但我无法让它正常工作 我用了SetCursorPos 唯一的问题是它将光标设置为屏幕坐标而不是窗口坐标 我也尝试过ScreenToClient 但它并没有起作用 这是我的代码 pt x 113 pt y 280 Scr
  • Windows Server / Datacenter:设置 CPU 关联性 > 64 个核心

    SetThreadAffinityMask 允许为 64 个逻辑核心 处理器 设置关联掩码 但是 Windows Datacenter 最多可以有 64 个 CPU 每个 CPU 都有多个内核 请参阅here http social tec
  • Windows下如何分配非分页内存

    当我使用 cudaHostAlloc 时 它将分配非分页 固定 页面锁定 内存 我想知道如何在没有 cuda 的情况下仅使用 Windows SDK 来做到这一点 None
  • 将注册表中的版本号转换为System.Version?

    我正在从注册表中检索版本号 如下所示 rKey GetValue Version 现在我想将其转换为System Version object 我该怎么做呢 假设这是一个字符串 string versionText string rKey
  • 将文件扩展名与应用程序关联

    我编写了一个编辑特定文件类型的程序 我想为用户提供在启动时将我的应用程序设置为该文件类型的默认编辑器的选项 因为我不需要安装程序 我尝试编写一个可重用的方法 通过向 HKEY CLASSES ROOT 添加一个键来为我关联一个文件 最好在任
  • 隐藏错误报告窗口

    我有以下问题 我的 ASP Net 应用程序接收简单控制台程序的 C 源代码 使用 cl exe 命令行 VC 编译器 对其进行编译 并使用 System Diagnostics Process 运行它 ASP Net应用程序运行在PC上
  • HWND 创建时间

    我是这个社区的新手 在使用我的自动化脚本 1 时遇到一个问题 我想获取 HWND 的创建时间 我在从 FindWindowEx 检索到的数组中有一组 HWND 我想在数组中找到最后根据系统时间创建的 HWND 我对窗口钩子没有足够的了解 但
  • 如果我被冒充,为什么 Win32 API 函数 CredEnumerate() 会返回 ERROR_NOT_FOUND?

    我编写了一些示例代码 当我在普通用户帐户的上下文中从 Windows 命令提示符调用这些代码时 会使用 CredEnumerate 转储所有用户保存的凭据 但是 我真的希望能够从 SYSTEM 用户上下文执行此操作 因此我从 SYSTEM
  • 如何获取当前所选键盘布局的显示名称

    我需要以语言栏显示输入语言的方式向用户显示输入语言列表 例如 目前我有 class Program static void Main string args var langs InputLanguage InstalledInputLan
  • 预注册 ATL 窗口类

    我在一个项目中使用了 ATL 和 WTL 的组合 并从中派生了我自己的类CWindowImpl 看起来像这样 class CMyControl public CWindowImpl
  • Windows.Automation 中的旧版 IAccessible

    如何使用C 获取AutomationElement的LegacyIAccessible State和其他LegacyIAccessibles 就像工具中的 Inspect exe 一样 The LegacyIAccessible是新的 并且
  • 屏幕截图忽略了一些窗口

    我正在 MFC 中工作 我正在尝试捕获桌面的 bmp 我正在使用 GetDC NULL 来执行此操作 但它似乎忽略了特殊的皮肤窗口 它似乎忽略了用 UpdateLayeredWindow 绘制的窗口 此行为似乎仅发生在 Vista x64
  • 低级挂钩/SetWindowsHookEx lParam 自动重复?

    在这里阅读 Windows PC 上如何实现键盘自动重复 https stackoverflow com questions 876852 how is keyboard auto repeat implemented on a windo
  • 检测注册表虚拟化

    我有一组 C v2 应用程序 并且在 Win7 以及较小程度上的 Vista 中的注册表虚拟化方面遇到了困难 我有一个共享注册表配置区域 我的应用程序需要在 HKLM Software Company 中访问该区域 在 Vista 之前 所
  • Windows 上的 wchar_t 和 char16_t 是一样的吗?

    我有一个实例std u16string 我可以通过它吗c str 到一个 Win32 API 它期望LPCWSTR 没有任何类型的转换 例如 我可以安全地这样做吗 auto u16s std u16string u Hello SetWin
  • 我可以在 C# 进程中使用 SetErrorMode 吗?

    我正在准备写一个在线法官核心 一个可以编译用户代码并运行程序来检查答案的程序 如uva online Judge 我在捕获提交程序的异常时遇到问题 如下所示 int main while scanf d d n m printf d n n
  • 尝试使用 LoadImage 加载应用程序的图标,但该函数返回 0

    我正在尝试使用加载应用程序的图标LoadImageWinAPI函数 但由于某种原因它总是返回0 我已阅读文档 https msdn microsoft com en us library windows desktop ms648045 v
  • Win32 自定义绘制树视图控件

    我正在尝试使用 NM CUSTOMDRAW 消息自定义树视图控件 我只是想用灰色绘制所有其他可见的项目 这是绘制的代码 INT CResourceOutliner On WM NOTIFY HWND hDlg WPARAM wParam L
  • 创建具有特定权限的线程C++

    我有一个多线程应用程序 我想创建一个具有不同用户权限的线程 例如 多域管理员权限 但我找不到任何 Win32 APICreateThread要做到这一点 如何创建具有特定用户权限的线程 thanks 调用 CreateThread CREA

随机推荐