AppCertDlls: замедление создания процесса на Win32, вызванное вирусом - PullRequest
1 голос
/ 04 декабря 2010

Я получаю изрядное наказание за создание процессов на моем Windows XP Home SP3 около двух месяцев.Эта проблема наиболее очевидна и раздражает в задачах, которые создают множество процессов, таких как сценарии оболочки (между прочим, сценарии bash в Cygwin), файлы Makefile или распаковка пакета IzPack, такого как установщик SpringSource Tool Suite (множество отдельных unpack200.exeJAR экстрактор процессов).Я уверен, что это создание процесса из наблюдения диагностического вывода bash-скрипта или наблюдения за процессами, появляющимися в диспетчере задач.Нет заметной задержки, когда процесс запущен и запущен.

Я сообщил об этой проблеме в списке рассылки Cygwin, так как изначально и ошибочно полагал, что затронуто только Cygwin, подозревая ошибку в DLL-библиотеке Cygwin, илиwhatnot.

Замедление после обновления на Win32 (XP Home) - (ссылка на мой пост в списке Cygwin)

Мне интересноустановлено ли что-то дерьмо в хуке создания процесса, который, как я полагаю, может существовать в Windows.(Как с менеджером безопасности в Java .) Вирус или программное обеспечение безопасности?Я тоже сознательно не установил.Я также подозревал сбой обновления Microsoft, но думаю, что они уже исправили бы это.

Насколько я знаю, процессы в Win32 создаются CreateProcess.

Как я могуУзнайте, почему создание процесса занимает так много времени и что именно здесь происходит?Есть ли что-то вроде strace для Linux или, может быть, даже что-то лучше?

1 Ответ

4 голосов
/ 13 декабря 2010

Большое спасибо Люку за то, что он указал мне правильное направление.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

Но сама Microsoft широко использует эту функцию, именно она фактически была задумана как «одноразовая» вещь,Только для использования в качестве - способа ограничения приложений, которые могут быть запущены на сервере терминалов 2000. - Эндрю Воробов

подробнее о ключе AppCertDlls и CreateProcessNotify, 01/2008

06/2010 отчет о заражении с некоторыми подробностями

Вредоносная программа пыталась украсть информацию о банковском счете (и деньги, очевидно), но, возможно, ее можно было настроить наделай и другие вещи тоже.В разделе HKEY_CURRENT_USER\Software\AppDataLow\{some GUID here} были дополнительные записи реестра.Должно быть, он сделал некоторые снимки экрана, когда я занимался онлайн-банкингом;он знал, что использовал TAN.Я помню, однажды у меня сложилось впечатление, что мой банк был взломан, когда незадолго до или (вероятно) после входа в систему я увидел экран, запрашивающий около двадцати 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, «Клиентской библиотеки API Windows IMM32» - что бы это ни было.

Я запустил sfc.exe, Microsoft «Проверка системных файлов». Будет делать больше проверки файлов моей программы. И получите сканер вирусов. Рекомендации приветствуются.

...