AppCertDlls: замедление создания процесса на Win32, вызванное вирусом

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

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

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

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

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

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


person Lumi    schedule 04.12.2010    source источник
comment
Вы можете использовать Process Monitor (technet.microsoft.com/en-us/sysinternals/ bb896645.aspx), чтобы увидеть, где происходит задержка.   -  person Luke    schedule 04.12.2010
comment
Вы можете проверить подозрительные файлы здесь: virustotal.com   -  person ruslik    schedule 13.12.2010
comment
Спасибо, Руслик. Вот ссылка на анализ VirusTotal.com: virustotal.com сканирование файлов/   -  person Lumi    schedule 14.12.2010
comment
Еще две ссылки с информацией о звере: trustdefender.com/ и trustdefender.com/   -  person Lumi    schedule 15.12.2010
comment
Добро пожаловать на Stack Overflow, сайт вопросов и ответов по программированию. Если у вас есть вопросы по системному администрированию, задайте их на ServerFault. Если у вас есть вопросы об общем оборудовании или программном обеспечении, задайте их в SuperUser. Ваш вопрос не связан с программированием.   -  person Dan Grossman    schedule 24.12.2010


Ответы (1)


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

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, «клиентской библиотеки Windows IMM32 API» — чем бы она ни была.

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

person Lumi    schedule 12.12.2010