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.
Existe uma classe de malware que pode se esconder completamente do sistema operacional conhecido como rootkit .
Os rootkits são usados para ocultar as evidências de outros malwares no trabalho e são incorporados muito profundamente ao sistema operacional. Devido à sua profunda incorporação, eles são capazes de manipular listas de processos, tabelas de sistema de arquivos e outras estruturas importantes em tempo real.
Ao manipular as estruturas do sistema de arquivos na memória, eles 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 o Linux LiveCD, mostrará os arquivos, pois eles precisam ser armazenados em algum lugar.
Da mesma forma, os rootkits podem simplesmente deixar que certos processos sejam reportados a programas como o Gerenciador de Tarefas. O núcleo do sistema operacional sabe sobre eles, como é necessário para agendá-los, ele acabou de ser impedido de informar o mundo exterior sobre eles.
Estou curioso, como eles conseguem esse feito? Parece algo que o Windows não deve permitir em primeiro lugar. Quer dizer, mesmo "processo espectáculo de todos os usuários" são menos 'esconderijo' e mais 'categorização'
Raestloz
2
@Raestloz: Eles conseguem o feito obtendo acesso root e reescrevendo o Windows para remover os bits que não o permitem. Ouvi dizer que alguns deles fazem isso "inicializando" no rootkit como um sistema operacional, alterando o Windows e, em seguida, executam o Windows, para que nem o usuário nem o Windows tenham idéia de que algo é incomum.
Mooing Duck
3
bem Dang, talvez alguém deve inventar um anti-vírus que é executado no BIOS lol
Raestloz
1
@zyboxenterprises As atualizações reais do Windows são assinadas e não podem ser falsificadas, mas você pode forjar apenas a caixa de diálogo de solicitação de reinicialização, ou induzir o usuário a reiniciar de qualquer outra maneira, forçar uma reinicialização ( shutdown -r -t 0não são necessários privilégios) ou apenas aguardar a reinicialização do usuário.
gronostaj
4
@zyboxenterprises Talvez, talvez não;) O Flame explorou o Windows Update para seus próprios fins, forjando um certificado, mas essa vulnerabilidade já foi corrigida. Não há explorações de WU conhecidas publicamente, mas isso não significa que não exista. O usado por Flame não era conhecido antes também. (ver ataque de 0 dias
gronostaj
16
Todos os programas normais 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)
O rootkits tentará ocultar sua existência ocultando seu processo da lista, comprometendo o gerenciador de tarefas (para que ele não o mostre), ocultando-se dentro de outro espaço de endereçamento do processo ...
Os serviços serão executados como threads em um svchostprocesso (na maioria dos casos), portanto não há nenhum ponto fácil em que o serviço está sendo executado em uma determinada instância 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-o com os arquivos que ele lê manualmente da partição do disco.
No entanto, uma vez infectado, é possível que um vírus oculte sua presença tão bem que é quase impossível detectá-lo. Esses são geralmente denominados APTs (ameaça persistente avançada).
Alguns desses pontos são um pouco invalidados pelo Sysinternals Process Explorer - usuários limitados podem ver os nomes de arquivos dos processos executados por outro usuário, e as dicas de ferramentas do svchosts listam o que estão hospedando.
Kirb
Você quis escrever "ameaça" ou quis dizer "discussão"? Ele realmente funciona lá;)
Konerak
Como um detector de rootkit enumera os threads ou processos? Se for uma maneira típica / WinAPI, um rootkit não pode manipular a enumeração e o detector de rootkit não notará isso?
Ray
1
@DebugErr, eles analisam os níveis alto e baixo e relatam as diferenças (às vezes produzindo falsos positivos, como quando um arquivo é alterado no meio). Ao verificar a lista de threads programados para execução, eu estava me referindo à lista de vínculo duplo usada pelo planejador do SO, ou seja. nível completamente baixo: se não estiver lá, não haverá um intervalo de tempo (embora haja mais lugares para verificar, como o ISR).
Ángel
5
fundo
O sistema operacional possui um componente conhecido como kernel. Uma das (muitas) 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 usuário e modo kernel. O kernel e os drivers compartilham a memória no modo kernel, e os programas do usuário e os componentes menos críticos do sistema residem na região da memória no modo do usuário.
Os processos no modo 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-se mencionar que os processos em execução no modo de usuário também são isolados um do outro, mas podem se comunicar mais livremente entre si, usando 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 pelas permissões por usuário.
Um meio para 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 manipulação, que contêm informações sobre os recursos que um processo abriu (por exemplo, arquivos) ou examinando as alocações de memória das quais é mais importante. difícil esconder sem prejudicar a capacidade de funcionamento do software.
Drivers do modo kernel
Drivers do modo kernel usados para muitas coisas, incluindo a interação com dispositivos de hardware físico. 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 aos processos.
Ser capaz de executar código no modo kernel é uma etapa importante para poder ocultar efetivamente a existência de código em execução. Em circunstâncias normais, o Windows exige que o código no modo do kernel seja assinado para ser executado; portanto, o malware pode precisar usar explorações no sistema operacional, outro software ou até mesmo engenharia social para chegar aqui, mas depois que o código estiver sendo executado no modo do kernel, oculte-o fica mais fácil.
Sumário
Em resumo, é possível ocultar evidências de existência de processos, provavelmente sempre haverá alguma indicação de que o processo existe, porque geralmente sempre é necessário usar alguma forma de recurso para fazer o que foi projetado, quão difícil essa detecção depende do malware específico.
Atualmente, os vírus são bastante sofisticados. Não 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ê planeja confiar no Gerenciador de tarefas para verificar a presença de vírus, deve parar agora. Instale um antivírus, e mesmo um antivírus às vezes falha ao detectar um vírus no seu PC.
Há uma maneira mais simples de "ocultar um vírus", além de outras já explicadas em outras respostas:
Uma DLL comprometida (biblioteca vinculada dinamicamente)
Muitos programas - quase todos os não triviais - precisam de uma ou mais DLLs para serem executadas. Alguns pertencem ao próprio sistema operacional (por exemplo, hal.dll, que abstrai o acesso ao hardware do Windows), outros são usados apenas por um programa, que é dividido em partes menores (um arquivo .exe e mais .dll com a funcionalidade principal, plugins etc.) Você não consegue que seu vírus seja executado o tempo todo como um processo ou serviço comum, mas será difícil encontrá-lo, pois ele parecerá um programa ou componente de programa completamente inocente.
E há uma coisa muito atraente nesse tipo de criação de vírus: existem muitos sites que oferecem um download gratuito (não requer pagamento) de dlls que podem, por esse ou aquele motivo, desaparecer no seu computador. Como a possibilidade de comparar as somas de verificação do arquivo .dll original e do novo .dll é muito limitada e quase ninguém se importa, os vírus da dll podem entrar e permanecer no sistema por um longo período de tempo despercebidos (a menos que, é claro, um programa antivírus detecte eles e o usuário concorda com a exclusão - você já vê o padrão).
A partir da pergunta, entendemos que falamos do Windows aqui, mas essa técnica também pode se aplicar a outros sistemas operacionais.
TL; DR: O Gerenciador de tarefas do Windows é bastante limitado no que pode fazer e * nunca mostrará todos os processos em execução no seu sistema. Quer prova? Conte (aproximadamente) a quantidade de RAM que os processos mostrados no Gerenciador de Tarefas estão usando e compare-a com o uso de RAM do sistema; você deve ter pelo menos 100 MB de RAM não contabilizado e, às vezes, aumenta para cerca de 1 GB, dependendo do uso do sistema. As placas gráficas também podem receber um pouco de memória da RAM junto com sua própria RAM GDDR. *
Para expandir a resposta de Pavel Petman, devo acrescentar que muitos mecanismos sofisticados de truques para jogos dependem da injeção de código nas DLLs de jogos que ativam seus truques.
Esse tipo de comprometimento é bastante difícil de detectar e a mesma técnica pode ser aplicada nesta questão. Se, por exemplo, um vírus quiser passar despercebido, pode representar uma atualização do Windows do tipo que se extrai nos diretórios do sistema, o vírus pode substituir um arquivo crítico do sistema. 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 nos .exes).
Quando um cliente meu fala sobre comportamento incomum, eu 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 usando.
shutdown -r -t 0
não são necessários privilégios) ou apenas aguardar a reinicialização do usuário.Todos os programas normais aparecerão lá, mas ...
svchost
processo (na maioria dos casos), portanto não há nenhum ponto fácil em que o serviço está sendo executado em uma determinada instância 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-o com os arquivos que ele lê manualmente da partição do disco.
No entanto, uma vez infectado, é possível que um vírus oculte sua presença tão bem que é quase impossível detectá-lo. Esses são geralmente denominados APTs (ameaça persistente avançada).
fonte
fundo
O sistema operacional possui um componente conhecido como kernel. Uma das (muitas) 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 usuário e modo kernel. O kernel e os drivers compartilham a memória no modo kernel, e os programas do usuário e os componentes menos críticos do sistema residem na região da memória no modo do usuário.
Os processos no modo 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-se mencionar que os processos em execução no modo de usuário também são isolados um do outro, mas podem se comunicar mais livremente entre si, usando 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 pelas permissões por usuário.
Um meio para 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 manipulação, que contêm informações sobre os recursos que um processo abriu (por exemplo, arquivos) ou examinando as alocações de memória das quais é mais importante. difícil esconder sem prejudicar a capacidade de funcionamento do software.
Drivers do modo kernel
Drivers do modo kernel usados para muitas coisas, incluindo a interação com dispositivos de hardware físico. 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 aos processos.
Ser capaz de executar código no modo kernel é uma etapa importante para poder ocultar efetivamente a existência de código em execução. Em circunstâncias normais, o Windows exige que o código no modo do kernel seja assinado para ser executado; portanto, o malware pode precisar usar explorações no sistema operacional, outro software ou até mesmo engenharia social para chegar aqui, mas depois que o código estiver sendo executado no modo do kernel, oculte-o fica mais fácil.
Sumário
Em resumo, é possível ocultar evidências de existência de processos, provavelmente sempre haverá alguma indicação de que o processo existe, porque geralmente sempre é necessário usar alguma forma de recurso para fazer o que foi projetado, quão difícil essa detecção depende do malware específico.
fonte
Atualmente, os vírus são bastante sofisticados. Não 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ê planeja confiar no Gerenciador de tarefas para verificar a presença de vírus, deve parar agora. Instale um antivírus, e mesmo um antivírus às vezes falha ao detectar um vírus no seu PC.
fonte
Há uma maneira mais simples de "ocultar um vírus", além de outras já explicadas em outras respostas:
Uma DLL comprometida (biblioteca vinculada dinamicamente)
Muitos programas - quase todos os não triviais - precisam de uma ou mais DLLs para serem executadas. Alguns pertencem ao próprio sistema operacional (por exemplo, hal.dll, que abstrai o acesso ao hardware do Windows), outros são usados apenas por um programa, que é dividido em partes menores (um arquivo .exe e mais .dll com a funcionalidade principal, plugins etc.) Você não consegue que seu vírus seja executado o tempo todo como um processo ou serviço comum, mas será difícil encontrá-lo, pois ele parecerá um programa ou componente de programa completamente inocente.
Leitura adicional: http://msitpros.com/?p=2012
E há uma coisa muito atraente nesse tipo de criação de vírus: existem muitos sites que oferecem um download gratuito (não requer pagamento) de dlls que podem, por esse ou aquele motivo, desaparecer no seu computador. Como a possibilidade de comparar as somas de verificação do arquivo .dll original e do novo .dll é muito limitada e quase ninguém se importa, os vírus da dll podem entrar e permanecer no sistema por um longo período de tempo despercebidos (a menos que, é claro, um programa antivírus detecte eles e o usuário concorda com a exclusão - você já vê o padrão).
A partir da pergunta, entendemos que falamos do Windows aqui, mas essa técnica também pode se aplicar a outros sistemas operacionais.
fonte
TL; DR: O Gerenciador de tarefas do Windows é bastante limitado no que pode fazer e * nunca mostrará todos os processos em execução no seu sistema. Quer prova? Conte (aproximadamente) a quantidade de RAM que os processos mostrados no Gerenciador de Tarefas estão usando e compare-a com o uso de RAM do sistema; você deve ter pelo menos 100 MB de RAM não contabilizado e, às vezes, aumenta para cerca de 1 GB, dependendo do uso do sistema. As placas gráficas também podem receber um pouco de memória da RAM junto com sua própria RAM GDDR. *
Para expandir a resposta de Pavel Petman, devo acrescentar que muitos mecanismos sofisticados de truques para jogos dependem da injeção de código nas DLLs de jogos que ativam seus truques.
Esse tipo de comprometimento é bastante difícil de detectar e a mesma técnica pode ser aplicada nesta questão. Se, por exemplo, um vírus quiser passar despercebido, pode representar uma atualização do Windows do tipo que se extrai nos diretórios do sistema, o vírus pode substituir um arquivo crítico do sistema. 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 nos .exes).
Quando um cliente meu fala sobre comportamento incomum, eu 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 usando.
fonte