Найти, какой процесс запустил другой процесс

Найти, какой процесс запустил другой процесс

Допустим, у меня есть Process Explorer, показывающий, что у меня EvilAppsRUs.exeзапущено приложение.

Я его убиваю, но он просто запускается снова. Я проверил, нет ли у него службы (щелкнув правой кнопкой мыши -> Свойства в Process Explorer).

Итак, я почти уверен, что существует другой процесс (возможно, называемый как-то безобидно, например DisplayDriver.exe), который запускается (и перезапускается) EvilAppsRUs.exe.

Как узнать имя процесса, который перезапускает вредоносный процесс?

решение1

В Windows вам может помочь Process Monitor. Там инструмент Process Tree ( Ctrl+ T) показывает взаимосвязь между процессами.

Вы можете быстро попробовать его, загрузив с сайтаофициальная страница.

Очень полезный и работающий в режиме реального времени. Монитор процессов...

решение2

TL;DR:не доверяйте этой информации, представленной обычными инструментами, отображающими дерево процессов.

Без таких инструментов, какупомянул Монитор процессаили несколько связанныйСисМон ты не можешь этого знать.Сих, это теоретически возможно, пока соответствующий инструмент фиксирует событие создания процесса и используетчтособранная информация для (ре)конструирования дерева процессов.

Однако связь между родительскими и дочерними процессами непо мере необходимостикак в Windows, так и в Unix.В Unix родительский процесс должен собирать статус завершения дочернего процесса, чтобы дочерний процесс не превратился в зомби.Это важная информация, потому что она также объясняетпочемуWindows не делает такого акцента на связи родитель-потомок-процесс, как Unix в целом. Родительским процессам в Windows не нужно собирать статус выхода своих дочерних процессов.

Что еще хуже: во время создания процесса вы можете подделать родительский процесс, используяPROC_THREAD_ATTRIBUTE_PARENT_PROCESS, что в целом должно дать вам представление о том, насколько заслуживает доверия дерево процессов в ProcessИсследовательесть (подсказка: это не так). Эта информация можеттакжебыть подделанным в запущенных процессах, при условии, что процесс, выполняющий эту манипуляцию, имеет соответствующий уровень доступа к манипулируемому процессу.

Преимущество Process Monitor в том, что теоретически он может видеть создание процессов и не должен полагаться на информацию, которую вы можете извлечь.после фактаиз каждого соответствующего процесса (и который может быть подделан). Однако я не знаю, используется ли эта информация для заполнения его дерева процессов. Похоже, что нет. Учитывая, что дерево процессов может быть показано до того, как вы захватилилюбойсобытия в Process Monitor, само собой разумеется, что он похож на Process Explorer, что означает, чтоэтой информации также нельзя доверять.

Хотя PROC_THREAD_ATTRIBUTE_PARENT_PROCESSсвязь родитель-потомок-процесс появилась только в Windows 7 или около того, она никогда не была особенно актуальна даже в более ранних версиях Windows.


Дальнейшее чтение:

PS: обычные инструменты будут использовать либо документированные tlhelp32( CreateToolhelp32Snapshotи т. д. сPROCESSENTRY32W::th32ParentProcessID) функциональность или собственный API NTNtQuerySystemInformationс чем-тонравиться SystemProcessInformation(Неббетт назвал это SystemProcessesAndThreadsInformation). Это означает, что они вернут потенциально поддельный родительский PID.

Связанный контент