
Digamos que eu tenha um explorador de processos mostrando que tenho um aplicativo chamado em EvilAppsRUs.exe
execução.
Eu o mato, mas ele simplesmente recomeça. Verifiquei se ele não possui um serviço (clicando com o botão direito-> Propriedades no Process Explorer).
Portanto, tenho quase certeza de que existe outro processo por aí (talvez chamado de algo benigno como DisplayDriver.exe
) que está iniciando (e reiniciando) EvilAppsRUs.exe
.
Como posso descobrir qual é o nome do processo que está reiniciando o processo maligno?
Responder1
No Windows, usar o Process Monitor pode ajudá-lo. Lá, a ferramenta Process Tree ( Ctrl+ T) mostra o relacionamento entre os processos.
Você pode fazer uma tentativa rápida baixando doPágina Oficial.
Um tempo muito útil e real. Monitoramento de Processo...
Responder2
DR:não confie nessas informações apresentadas pelas ferramentas usuais que mostram uma árvore de processos.
Sem ferramentas como omencionado Monitor de Processoou algo relacionadoSysMon você não pode saber disso.Comeles, é teoricamente possível desde que a respectiva ferramenta capturou o evento de criação do processo e utilizaqueinformações capturadas para (re)construir a árvore de processos.
No entanto, o relacionamento entre processos pai e filho não étão relevanteno Windows como no Unix.No Unix, o pai deve coletar o status de saída do filho para que o filho não acabe como um zumbi.Essa é uma informação importante, porque também explicapor queO Windows não dá a mesma ênfase ao relacionamento pai-filho-processo que o Unix em geral. Os processos pais no Windows não precisam coletar o status de saída dos processos filhos.
O que é pior: durante a criação de um processo você pode falsificar o processo pai através do uso dePROC_THREAD_ATTRIBUTE_PARENT_PROCESS
, o que em geral deve dar uma ideia de quão confiável é a árvore de processos em ProcessExploradoré (dica: não é). Esta informação podetambémser falsificado em processos em execução, desde que o processo que faz essa manipulação tenha o nível apropriado de acesso ao processo que está sendo manipulado.
O Process Monitor tem a vantagem de - em teoria - poder ver os processos sendo criados e não precisar depender das informações que você pode extrairdepois do ocorridode cada respectivo processo (e que podem ser falsificados). No entanto, não sei se essa informação é usada para preencher sua árvore de processos. Parece que não. Dado que a árvore do processo pode ser mostrada antes de você capturarqualquereventos no Process Monitor, é lógico que seja semelhante ao Process Explorer, o que significa queesta informação também não é confiável.
Embora PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
tenha sido introduzido apenas no Windows 7, o relacionamento pai-filho-processo nunca foi muito relevante, mesmo em versões anteriores do Windows.
Leitura adicional:
PS: as ferramentas convencionais usarão o documentado tlhelp32
( CreateToolhelp32Snapshot
et. al. comPROCESSENTRY32W::th32ParentProcessID
) funcionalidade ou a API nativa do NTNtQuerySystemInformation
com alguma coisacomo SystemProcessInformation
(Nebbett chamou isso SystemProcessesAndThreadsInformation
). Isso significa que eles retornarão o PID pai potencialmente falsificado.