Todos os programas em execução em um computador aparecem na aba de processos no Gerenciador de Tarefas? [duplicado]

35

A razão pela qual estou perguntando isso é porque estou curioso para saber se existe um vírus no computador sem que eu saiba que ele existe. Para ser mais específico, um vírus que não emite sinais de qualquer tipo.

    
por itzjustricky 05.10.2014 / 09:48

6 respostas

49

Existe uma classe de malware que pode se esconder completamente do sistema operacional conhecido como rootkit .

Os rootkits são usados para ocultar a evidência de outros malwares no trabalho e são incorporados muito profundamente no sistema operacional. Devido à sua integração profunda, eles são capazes de manipular listas de processos, tabelas de sistemas de arquivos e outras estruturas importantes on-the-fly.

Ao manipular as estruturas do sistema de arquivos na memória, elas podem retornar resultados falsos ou enganosos para diretórios, especificamente não mostrando arquivos relacionados ao próprio malware principal. Os arquivos estão lá, e a inicialização em um sistema operacional não infectado, como um LiveCD do Linux, mostrará os arquivos, já que eles precisam ser armazenados em algum lugar.

Da mesma forma, os rootkits podem simplesmente descartar certos processos de serem relatados para programas como o Gerenciador de Tarefas. O núcleo do sistema operacional sabe sobre eles, como precisa, a fim de programá-los, acaba de ser impedido de deixar o mundo exterior saber sobre eles.

    
por 05.10.2014 / 10:02
16

Todos os programas normal aparecerão lá, mas ...

  • sem uma conta de administrador, você só poderá ver seu próprio processo (as contas de administrador podem optar por visualizar os processos de todos)
  • rootkits tentará esconder sua existência escondendo seu processo da lista, comprometendo o gerenciador de tarefas (assim ele não o mostra), escondendo-se dentro de outro espaço de endereço do processo ...
  • Os serviços
  • serão executados como encadeamentos sob um processo svchost (na maioria dos casos), portanto, não há um pointint simples no qual o serviço está sendo executado em uma determinada instância do svchost.

Existem alguns programas projetados para detectar rootkits. Eles fazem isso verificando, por exemplo, a lista de encadeamentos programados para execução e a lista de processos no sistema (um encadeamento que não pertence a nenhum processo é um sinal de um processo oculto), ou a lista de arquivos vistos em alto nível, e comparando com os arquivos que lê manualmente a partir da partição do disco.

No entanto, uma vez que você está infectado, é possível que um vírus esconda sua presença tão bem que é quase impossível detectá-lo. Esses são geralmente denominados APTs (ameaça persistente avançada).

    
por 05.10.2014 / 18:25
5

Antecedentes

O sistema operacional possui um componente conhecido como kernel. Uma das responsabilidades do kernel é gerenciar a memória do sistema (física e virtual).

Como parte disso, o kernel divide a memória disponível em duas regiões distintas conhecidas como modo de usuário e modo kernel. O kernel e os drivers compartilham a memória do modo kernel, e os programas do usuário e componentes menos críticos do sistema residem na região de memória do modo de usuário.

Os processos no modo de usuário geralmente não podem se comunicar com aqueles no modo kernel, exceto através de canais especialmente designados e controlados.

Para completar, deve ser mencionado que os processos em execução no modo de usuário também são isolados uns dos outros, mas podem se comunicar mais livremente entre si usando os recursos fornecidos pelo sistema operacional, desde que os programas sejam projetados para isso.

Processos

O kernel fornece a capacidade de iniciar processos no modo de usuário. Quando um processo é criado, ele é adicionado a uma lista interna de processos que existem atualmente. Quando um programa como o Gerenciador de Tarefas solicita uma lista de processos, ele recebe um subconjunto das informações nessa lista, filtradas por permissões de usuário.

Um meio para o malware, como um rootkit, ocultar sua existência é remover-se diretamente dessa tabela. Feito isso, ele ainda pode ser executado, mas não aparecerá mais em uma lista de processos obtida por meios normais.

Como esses processos ainda existem e são executados, eles podem ser encontrados pela inspeção de outras estruturas de dados do kernel, como tabelas de manuseio, que armazenam informações sobre recursos abertos (por exemplo, arquivos) ou examinando as alocações de memória é mais difícil esconder sem prejudicar a capacidade do software de funcionar.

Drivers de modo do kernel

Os drivers do modo kernel são usados para muitas coisas, incluindo a interação com dispositivos físicos de hardware. Eles são executados sob o controle do kernel, conforme necessário, mas, como não são um processo no modo de usuário, eles não aparecem na tabela de processos. e, portanto, não aparecerá no Gerenciador de Tarefas ou em outras ferramentas relacionadas exclusivamente com processos.

Ser capaz de executar código no modo kernel é um passo importante para poder efetivamente ocultar a existência de código em execução. Em circunstâncias normais, o Windows exige que o código no modo kernel seja assinado para ser executado, portanto, o malware pode precisar usar exploits no sistema operacional, outro software ou até mesmo engenharia social para chegar até aqui, mas quando o código estiver executando no modo kernel, torna-se mais fácil.

Resumo

Em resumo, é possível esconder evidências de uma existência de processos, provavelmente sempre haverá alguma indicação de que o processo existe, porque geralmente ele sempre precisará usar algum tipo de recurso para fazer o que foi projetado para , quão difícil é a detecção depende do malware específico.

    
por 07.10.2014 / 05:08
3

Os vírus são bem sofisticados hoje em dia. pode ser um vírus no seu computador, mas não aparecendo no Gerenciador de Tarefas . É possível que o Gerenciador de Tarefas (e outras partes do sistema operacional) fiquem comprometidos, ocultando o vírus. Por exemplo, um rootkit.

Se você está pensando em confiar no Gerenciador de Tarefas para verificar se há vírus, pare agora. Instale um antivírus e até mesmo um antivírus, por vezes, não consegue detectar um vírus no seu PC.

    
por 05.10.2014 / 10:02
0

TL; DR: O Gerenciador de Tarefas do Windows é bem limitado no que ele pode fazer, e ele * não nunca mostra todos os processos em execução no seu sistema. Quer uma prova? Conte (aproximadamente) a quantidade de RAM que os processos mostrados no Gerenciador de Tarefas estão usando e compare-o com o uso de RAM do sistema; você deve ter pelo menos 100MB de RAM não contabilizados, e às vezes aumenta para cerca de 1GB, dependendo do sistema para o qual você está usando. Placas gráficas também podem tirar alguma memória da RAM junto com sua própria RAM GDDR. *

Para expandir a resposta de Pavel Petman, devo acrescentar que muitos mecanismos de fraude sofisticados para jogos contam com a injeção de código em DLLs de jogos que ativam suas fraudes.

Este tipo de comprometimento é bastante difícil de detectar, e a mesma técnica pode ser aplicada nesta questão. Se, digamos, um vírus quiser passar despercebido, pode se passar por uma atualização do Windows do tipo que se extrai para os diretórios do sistema, o vírus pode sobrescrever um arquivo de sistema crítico. A maioria dos programas antivírus não detecta esse tipo de vírus, o que significa que o vírus pode injetar o código do vírus nas DLLs críticas do Windows (e também em .exes).

Quando um cliente meu fala sobre um comportamento incomum, sempre executo o Process Explorer (download da Microsoft) para detectar qualquer vírus em execução. O Process Explorer pode dizer exatamente quais processos estão em execução (mesmo aqueles que não estão no Gerenciador de Tarefas) e também quais módulos DLL estão sendo usados.

    
por 06.10.2014 / 13:20
0

Há mais uma maneira simples de "ocultar um vírus" para além dos outros já explicados em outras respostas:

Uma DLL comprometida (biblioteca vinculada dinamicamente)

Uma grande quantidade de programas - quase todos os não-triviais - precisam de uma ou mais DLLs para rodar. Alguns pertencem ao próprio sistema operacional (por exemplo, hal.dll, que abstrai o acesso ao hardware para o Windows), alguns são usados apenas por um programa, que é dividido em partes menores (um arquivo .exe e mais arquivos .dll com a funcionalidade principal, plugins etc.) Você não consegue que seu vírus rode o tempo todo como um processo ou serviço comum, mas seu vírus será muito difícil de encontrar, já que parecerá um programa completamente inocente ou um componente de programa.

Outras leituras: link

E há uma coisa muito atraente sobre esse tipo de criação de vírus: existem milhares de sites que oferecem um download gratuito (não requer pagamento) de DLLs que podem, por essa ou aquela razão, desaparecer no seu computador. Como a possibilidade de comparar as somas de verificação do original e do novo arquivo new .dll é muito limitada e quase ninguém se importa, os vírus dll podem entrar e permanecer no sistema por muito tempo despercebidos (a menos que claro, um programa antivírus os detecta e o usuário concorda com a exclusão - você já vê o padrão).

A partir da pergunta que defendo, falamos do Windows aqui, mas essa técnica pode muito bem se aplicar também a outros sistemas operacionais.

    
por 06.10.2014 / 11:20