Rootkit - Rootkit

Um rootkit é uma coleção de software de computador , normalmente malicioso, projetado para permitir o acesso a um computador ou a uma área de seu software que de outra forma não é permitida (por exemplo, a um usuário não autorizado) e muitas vezes mascara sua existência ou a existência de outro software . O termo rootkit é um composto de " root " (o nome tradicional da conta privilegiada em sistemas operacionais semelhantes ao Unix) e a palavra "kit" (que se refere aos componentes de software que implementam a ferramenta). O termo "rootkit" tem conotações negativas por causa de sua associação com malware .

A instalação do rootkit pode ser automatizada ou um invasor pode instalá-lo após obter acesso root ou de administrador. A obtenção desse acesso é resultado de um ataque direto a um sistema, ou seja, a exploração de uma vulnerabilidade conhecida (como escalonamento de privilégios ) ou uma senha (obtida por cracking ou táticas de engenharia social como " phishing "). Uma vez instalado, é possível ocultar a intrusão, bem como manter o acesso privilegiado. Controle total sobre um sistema significa que o software existente pode ser modificado, incluindo software que poderia ser usado para detectá-lo ou contorná-lo.

A detecção de rootkit é difícil porque um rootkit pode ser capaz de subverter o software que se destina a localizá-lo. Os métodos de detecção incluem o uso de um sistema operacional alternativo e confiável , métodos baseados em comportamento, varredura de assinaturas, varredura de diferenças e análise de despejo de memória . A remoção pode ser complicada ou praticamente impossível, especialmente nos casos em que o rootkit reside no kernel ; a reinstalação do sistema operacional pode ser a única solução disponível para o problema. Ao lidar com rootkits de firmware , a remoção pode exigir a substituição do hardware ou equipamento especializado.

História

O termo rootkit ou root kit originalmente se referia a um conjunto de ferramentas administrativas modificadas de forma maliciosa para um sistema operacional do tipo Unix que concedia acesso " root ". Se um intruso pudesse substituir as ferramentas administrativas padrão em um sistema por um rootkit, ele poderia obter acesso root no sistema enquanto simultaneamente ocultava essas atividades do administrador legítimo do sistema . Esses rootkits de primeira geração eram fáceis de detectar usando ferramentas como o Tripwire, que não tinham sido comprometidas para acessar as mesmas informações. Pista Davis e Steven Dake escreveu o primeiro rootkit conhecido em 1990 por Sun Microsystems ' SunOS sistema operacional UNIX. Na palestra que deu ao receber o prêmio Turing em 1983, Ken Thompson, da Bell Labs , um dos criadores do Unix , teorizou sobre a subversão do compilador C em uma distribuição Unix e discutiu o exploit. O compilador modificado detectaria tentativas de compilar o logincomando Unix e geraria um código alterado que aceitaria não apenas a senha correta do usuário, mas uma senha " backdoor " adicional conhecida pelo invasor. Além disso, o compilador detectaria tentativas de compilar uma nova versão do compilador e inseriria os mesmos exploits no novo compilador. Uma revisão do código-fonte do logincomando ou do compilador atualizado não revelaria nenhum código malicioso. Este exploit era equivalente a um rootkit.

O primeiro vírus de computador documentado para atingir o computador pessoal , descoberto em 1986, usava técnicas de camuflagem para se esconder: o vírus Brain interceptava tentativas de ler o setor de inicialização e as redirecionava para outro lugar no disco, onde uma cópia do setor de inicialização original foi mantido. Com o tempo, os métodos de camuflagem de vírus do DOS tornaram-se mais sofisticados. Técnicas avançadas incluídas enganchando disco de baixo nível 13H BIOS interrupção chamadas para esconder modificações não autorizadas de arquivos.

O primeiro rootkit malicioso para o sistema operacional Windows NT apareceu em 1999: um trojan chamado NTRootkit, criado por Greg Hoglund . Foi seguido pelo HackerDefender em 2003. O primeiro rootkit direcionado ao Mac OS X apareceu em 2009, enquanto o worm Stuxnet foi o primeiro a direcionar controladores lógicos programáveis (PLC).

Escândalo de rootkit de proteção contra cópia Sony BMG

Captura de tela do RootkitRevealer , mostrando os arquivos ocultos pelo rootkit Extended Copy Protection

Em 2005, a Sony BMG publicou CDs com software de proteção contra cópia e gerenciamento de direitos digitais denominado Extended Copy Protection , criado pela empresa de software First 4 Internet. O software incluía um reprodutor de música, mas instalava silenciosamente um rootkit que limitava a capacidade do usuário de acessar o CD. O engenheiro de software Mark Russinovich , que criou a ferramenta de detecção de rootkit RootkitRevealer , descobriu o rootkit em um de seus computadores. O escândalo que se seguiu aumentou a conscientização do público sobre os rootkits. Para se disfarçar, o rootkit escondeu do usuário qualquer arquivo que comece com "$ sys $". Logo após o relatório de Russinovich, apareceu um malware que se aproveitou da vulnerabilidade dos sistemas afetados. Um analista da BBC chamou isso de " pesadelo de relações públicas". A Sony BMG lançou patches para desinstalar o rootkit, mas expôs os usuários a uma vulnerabilidade ainda mais séria. A empresa acabou fazendo o recall dos CDs. Nos Estados Unidos, uma ação coletiva foi movida contra a Sony BMG.

Caso grego de escuta telefônica 2004-05

O caso de escutas telefônicas gregas de 2004-05 , também conhecido como Greek Watergate, envolveu a grampeamento telefônico ilegal de mais de 100  telefones celulares na rede da Vodafone Grécia pertencentes principalmente a membros do governo grego e funcionários públicos de alto escalão. As escutas começaram perto do início de agosto de 2004 e foram removidas em março de 2005 sem que se descobrisse a identidade dos perpetradores. Os invasores instalaram um rootkit voltado para a central telefônica AX da Ericsson . De acordo com o IEEE Spectrum , esta foi "a primeira vez que um rootkit foi observado em um sistema de uso especial, neste caso, uma central telefônica da Ericsson". O rootkit foi projetado para corrigir a memória da troca enquanto estava em execução, permitir escuta telefônica enquanto desativa os logs de auditoria, corrigir os comandos que listam processos ativos e blocos de dados ativos e modificar o comando de verificação de soma de verificação do bloco de dados . Um "backdoor" permitia que um operador com status de administrador de sistema desativasse o registro de transações da bolsa, alarmes e comandos de acesso relacionados à capacidade de vigilância. O rootkit foi descoberto depois que os invasores instalaram uma atualização defeituosa, que fez com que os textos SMS não fossem entregues, gerando um relatório de falha automatizado. Os engenheiros da Ericsson foram chamados para investigar a falha e descobriram os blocos de dados ocultos contendo a lista de números de telefone monitorados, junto com o rootkit e o software de monitoramento ilícito.

Usos

Os rootkits modernos não elevam o acesso, mas são usados ​​para tornar a carga útil de outro software indetectável, adicionando recursos furtivos. A maioria dos rootkits é classificada como malware , porque as cargas com as quais estão agrupados são maliciosas. Por exemplo, uma carga útil pode roubar secretamente senhas de usuários , informações de cartão de crédito , recursos de computação ou conduzir outras atividades não autorizadas. Um pequeno número de rootkits pode ser considerado aplicativos utilitários por seus usuários: por exemplo, um rootkit pode ocultar um driver de emulação de CD-ROM , permitindo que os usuários de videogame derrotem as medidas antipirataria que exigem a inserção da mídia de instalação original em uma unidade física unidade óptica para verificar se o software foi adquirido de forma legítima.

Os rootkits e suas cargas úteis têm muitos usos:

  • Fornece a um invasor acesso total através de uma porta dos fundos , permitindo acesso não autorizado para, por exemplo, roubar ou falsificar documentos. Uma das maneiras de fazer isso é subverter o mecanismo de login, como o programa / bin / login em sistemas do tipo Unix ou GINA no Windows. A substituição parece funcionar normalmente, mas também aceita uma combinação secreta de login que permite a um invasor acesso direto ao sistema com privilégios administrativos, contornando a autenticação padrão e os mecanismos de autorização .
  • Ocultar outros malwares , nomeadamente para roubo de senhas keyloggers e vírus de computador .
  • Aproprie a máquina comprometida como um computador zumbi para ataques a outros computadores. (O ataque se origina do sistema ou rede comprometida, em vez do sistema do invasor.) Os computadores "zumbis" são normalmente membros de grandes botnets que podem, entre outras coisas, lançar ataques de negação de serviço , distribuir spam por e-mail e conduzir fraude de cliques .

Em alguns casos, os rootkits fornecem a funcionalidade desejada e podem ser instalados intencionalmente em nome do usuário do computador:

  • Detecte e evite trapaças em jogos online com softwares como o Warden e o GameGuard .
  • Detecta ataques, por exemplo, em um honeypot .
  • Aprimore o software de emulação e o software de segurança. Alcohol 120% e Daemon Tools são exemplos comerciais de rootkits não hostis usados ​​para derrotar os mecanismos de proteção contra cópia, como SafeDisc e SecuROM . O software antivírus Kaspersky também usa técnicas semelhantes a rootkits para se proteger de ações mal-intencionadas. Ele carrega seus próprios drivers para interceptar a atividade do sistema e, em seguida, evita que outros processos prejudiquem a si mesmo. Seus processos não são ocultados, mas não podem ser encerrados por métodos padrão.
  • Proteção anti-roubo: Os laptops podem ter um software rootkit baseado em BIOS que se reportará periodicamente a uma autoridade central, permitindo que o laptop seja monitorado, desabilitado ou apagado de informações no caso de ser roubado.
  • Ignorando a ativação de produtos Microsoft

Tipos

Existem pelo menos cinco tipos de rootkit, desde aqueles no nível mais baixo no firmware (com os privilégios mais altos), até as variantes baseadas no usuário menos privilegiadas que operam no Anel 3 . Combinações híbridas destes podem ocorrer abrangendo, por exemplo, modo de usuário e modo kernel.

Modo de usuário

Anéis de segurança do computador (observe que o Anel -1 não é mostrado)

Os rootkits de modo de usuário são executados no Ring 3 , junto com outros aplicativos como usuário, em vez de processos de sistema de baixo nível. Eles têm vários vetores de instalação possíveis para interceptar e modificar o comportamento padrão das interfaces de programação de aplicativos (APIs). Alguns injetam uma biblioteca vinculada dinamicamente (como um arquivo .DLL no Windows ou um arquivo .dylib no Mac OS X ) em outros processos e, portanto, são capazes de executar dentro de qualquer processo de destino para falsificá-lo; outros com privilégios suficientes simplesmente sobrescrevem a memória de um aplicativo de destino. Os mecanismos de injeção incluem:

  • Uso de extensões de aplicativo fornecidas pelo fornecedor. Por exemplo, o Windows Explorer possui interfaces públicas que permitem que terceiros estendam sua funcionalidade.
  • Interceptação de mensagens .
  • Depuradores .
  • Exploração de vulnerabilidades de segurança .
  • Função hooking ou patching de APIs comumente usadas, por exemplo, para ocultar um processo ou arquivo em execução que reside em um sistema de arquivos.

... uma vez que os aplicativos do modo de usuário são executados em seu próprio espaço de memória, o rootkit precisa executar esse patch no espaço de memória de cada aplicativo em execução. Além disso, o rootkit precisa monitorar o sistema para quaisquer novos aplicativos que executam e corrigem o espaço de memória desses programas antes de serem totalmente executados.

-  Visão geral do rootkit do Windows, Symantec

Modo kernel

Os rootkits no modo kernel são executados com os privilégios mais altos do sistema operacional ( Ring 0 ), adicionando código ou substituindo partes do sistema operacional principal, incluindo o kernel e os drivers de dispositivo associados . A maioria dos sistemas operacionais oferece suporte a drivers de dispositivo no modo kernel, que são executados com os mesmos privilégios do próprio sistema operacional. Assim, muitos rootkits de modo kernel são desenvolvidos como drivers de dispositivo ou módulos carregáveis, como módulos de kernel carregáveis no Linux ou drivers de dispositivo no Microsoft Windows . Essa classe de rootkit tem acesso de segurança irrestrito, mas é mais difícil de escrever. A complexidade torna os bugs comuns, e quaisquer bugs no código operando no nível do kernel podem afetar seriamente a estabilidade do sistema, levando à descoberta do rootkit. Um dos primeiros rootkits de kernel amplamente conhecidos foi desenvolvido para Windows NT 4.0 e lançado na revista Phrack em 1999 por Greg Hoglund . Os rootkits de kernel podem ser especialmente difíceis de detectar e remover porque operam no mesmo nível de segurança que o próprio sistema operacional e, portanto, são capazes de interceptar ou subverter as operações mais confiáveis ​​do sistema operacional. Qualquer software, como software antivírus , em execução no sistema comprometido é igualmente vulnerável. Nessa situação, nenhuma parte do sistema pode ser confiável.

Um rootkit pode modificar estruturas de dados no kernel do Windows usando um método conhecido como manipulação direta de objetos do kernel (DKOM). Este método pode ser usado para ocultar processos. Um rootkit de modo kernel também pode conectar a Tabela de descritor de serviço do sistema (SSDT) ​​ou modificar as portas entre o modo de usuário e o modo kernel, a fim de se ocultar. Da mesma forma para o sistema operacional Linux , um rootkit pode modificar a tabela de chamadas do sistema para subverter a funcionalidade do kernel. É comum que um rootkit crie um sistema de arquivos criptografado e oculto, no qual pode ocultar outro malware ou cópias originais dos arquivos infectados. Os sistemas operacionais estão evoluindo para combater a ameaça de rootkits no modo kernel. Por exemplo, as edições de 64 bits do Microsoft Windows agora implementam a assinatura obrigatória de todos os drivers no nível do kernel para dificultar a execução de códigos não confiáveis ​​com os privilégios mais altos em um sistema.

Bootkits

Uma variante de rootkit em modo kernel chamada bootkit pode infectar o código de inicialização, como Master Boot Record (MBR), Volume Boot Record (VBR) ou setor de inicialização e, dessa forma, pode ser usado para atacar sistemas de criptografia de disco completo . Um exemplo desse tipo de ataque à criptografia de disco é o " ataque de empregada malévola ", no qual um invasor instala um bootkit em um computador autônomo. O cenário imaginado é uma empregada entrando sorrateiramente no quarto do hotel onde as vítimas deixaram seu hardware. O bootkit substitui o carregador de boot legítimo por um sob seu controle. Normalmente, o carregador de malware persiste durante a transição para o modo protegido quando o kernel é carregado e, portanto, é capaz de subverter o kernel. Por exemplo, o "Stoned Bootkit" subverte o sistema usando um carregador de boot comprometido para interceptar chaves de criptografia e senhas. Em 2010, o rootkit Alureon subverteu com sucesso o requisito de assinatura de driver no modo kernel de 64 bits no Windows 7 , modificando o registro mestre de inicialização . Embora não seja malware no sentido de fazer algo que o usuário não deseja, certos softwares "Vista Loader" ou "Windows Loader" funcionam de maneira semelhante, injetando uma tabela ACPI SLIC (Código Interno Licenciado do Sistema) na versão em cache de RAM do BIOS durante a inicialização, a fim de impedir o processo de ativação do Windows Vista e Windows 7 . Esse vetor de ataque tornou-se inútil nas versões (não-servidor) do Windows 8 , que usam uma chave única e específica da máquina para cada sistema, que só pode ser usada por aquela máquina. Muitas empresas de antivírus fornecem utilitários e programas gratuitos para remover bootkits.

Nível de hipervisor

Os rootkits foram criados como hipervisores do tipo II na academia como provas de conceito. Explorando recursos de virtualização de hardware, como Intel VT ou AMD-V , esse tipo de rootkit é executado em Ring -1 e hospeda o sistema operacional de destino como uma máquina virtual , permitindo que o rootkit intercepte chamadas de hardware feitas pelo sistema operacional original. Ao contrário dos hipervisores normais, eles não precisam ser carregados antes do sistema operacional, mas podem ser carregados em um sistema operacional antes de promovê-lo para uma máquina virtual. Um rootkit hipervisor não precisa fazer nenhuma modificação no kernel do destino para subvertê-lo; entretanto, isso não significa que não possa ser detectado pelo sistema operacional convidado. Por exemplo, diferenças de tempo podem ser detectáveis ​​nas instruções da CPU . O rootkit de laboratório "SubVirt", desenvolvido em conjunto por pesquisadores da Microsoft e da Universidade de Michigan , é um exemplo acadêmico de rootkit baseado em máquina virtual (VMBR), enquanto o software Blue Pill é outro. Em 2009, pesquisadores da Microsoft e da North Carolina State University demonstraram um anti-rootkit de camada de hipervisor chamado Hooksafe , que fornece proteção genérica contra rootkits de modo kernel. O Windows 10 introduziu um novo recurso chamado "Device Guard", que aproveita a virtualização para fornecer proteção externa independente de um sistema operacional contra malware do tipo rootkit.

Firmware e hardware

Um rootkit de firmware usa firmware de dispositivo ou plataforma para criar uma imagem de malware persistente no hardware, como um roteador , placa de rede , disco rígido ou BIOS do sistema . O rootkit se esconde no firmware, porque o firmware geralmente não é inspecionado quanto à integridade do código . John Heasman demonstrou a viabilidade de rootkits de firmware em ambas as rotinas de firmware ACPI e em uma ROM de placa de expansão PCI . Em outubro de 2008, os criminosos adulteraram as máquinas europeias de leitura de cartões de crédito antes de serem instaladas. Os dispositivos interceptaram e transmitiram detalhes do cartão de crédito por meio de uma rede de telefonia móvel. Em março de 2009, os pesquisadores Alfredo Ortega e Anibal Sacco publicaram detalhes de um rootkit do Windows em nível de BIOS que foi capaz de sobreviver à substituição do disco e à reinstalação do sistema operacional. Poucos meses depois, eles descobriram que alguns laptops são vendidos com um rootkit legítimo, conhecido como Absolute CompuTrace ou Absolute LoJack for Laptops , pré-instalado em muitas imagens do BIOS. Este é um sistema de tecnologia antifurto que os pesquisadores mostraram que pode ser usado para fins maliciosos.

A Intel Active Management Technology , parte do Intel vPro , implementa gerenciamento fora de banda , dando aos administradores administração remota , gerenciamento remoto e controle remoto de PCs sem envolvimento do processador host ou BIOS, mesmo quando o sistema está desligado. A administração remota inclui ligar e desligar remotamente, reinicialização remota, inicialização redirecionada, redirecionamento de console, acesso pré-inicialização às configurações do BIOS, filtragem programável para tráfego de rede de entrada e saída, verificação de presença de agente, baseado em política fora de banda alerta, acesso a informações do sistema, como informações de ativos de hardware, logs de eventos persistentes e outras informações que são armazenadas na memória dedicada (não no disco rígido) onde podem ser acessadas mesmo se o sistema operacional estiver inativo ou o PC desligado. Algumas dessas funções requerem o nível mais profundo de rootkit, um segundo computador espião não removível construído em torno do computador principal. Sandy Bridge e futuros chipsets têm "a capacidade de matar e restaurar remotamente um PC perdido ou roubado via 3G". Os rootkits de hardware integrados ao chipset podem ajudar a recuperar computadores roubados, remover dados ou torná-los inúteis, mas também apresentam problemas de privacidade e segurança de espionagem e redirecionamento indetectáveis ​​por parte da gerência ou hackers que podem obter o controle.

Instalação e camuflagem

Os rootkits empregam uma variedade de técnicas para obter o controle de um sistema; o tipo de rootkit influencia a escolha do vetor de ataque. A técnica mais comum aproveita vulnerabilidades de segurança para alcançar escalonamento de privilégios sub-reptícios . Outra abordagem é usar um cavalo de Tróia , enganando o usuário de computador, fazendo-o acreditar que o programa de instalação do rootkit é benigno - neste caso, a engenharia social convence o usuário de que o rootkit é benéfico. A tarefa de instalação fica mais fácil se o princípio do menor privilégio não for aplicado, uma vez que o rootkit não precisa solicitar explicitamente privilégios elevados (nível de administrador). Outras classes de rootkits podem ser instaladas apenas por alguém com acesso físico ao sistema de destino. Alguns rootkits também podem ser instalados intencionalmente pelo proprietário do sistema ou por alguém autorizado pelo proprietário, por exemplo, para fins de monitoramento de funcionários , tornando tais técnicas subversivas desnecessárias. Algumas instalações mal-intencionadas de rootkit são conduzidas comercialmente, com um método de compensação de pagamento por instalação (PPI) típico para distribuição.

Depois de instalado, um rootkit toma medidas ativas para ocultar sua presença no sistema host por meio da subversão ou evasão das ferramentas de segurança do sistema operacional padrão e da interface de programação de aplicativo (APIs) usada para diagnóstico, varredura e monitoramento. Os rootkits conseguem isso modificando o comportamento das partes centrais de um sistema operacional por meio do carregamento do código em outros processos, da instalação ou modificação de drivers ou módulos do kernel . As técnicas de ofuscação incluem ocultar processos em execução de mecanismos de monitoramento do sistema e ocultar arquivos do sistema e outros dados de configuração. Não é incomum para um rootkit desabilitar a capacidade de registro de eventos de um sistema operacional, na tentativa de esconder evidências de um ataque. Os rootkits podem, em teoria, subverter qualquer atividade do sistema operacional. O "rootkit perfeito" pode ser considerado semelhante a um " crime perfeito ": um que ninguém percebe que ocorreu. Os rootkits também tomam uma série de medidas para garantir sua sobrevivência contra detecção e "limpeza" por software antivírus, além da instalação comum no Ring 0 (modo kernel), onde têm acesso completo a um sistema. Isso inclui polimorfismo (mudar para que sua "assinatura" seja difícil de detectar), técnicas furtivas, regeneração, desativação ou desativação de software anti-malware e não instalação em máquinas virtuais onde pode ser mais fácil para os pesquisadores descobri-los e analisá-los.

Detecção

O problema fundamental com a detecção de rootkit é que, se o sistema operacional foi subvertido, particularmente por um rootkit no nível do kernel, não se pode confiar nele para encontrar modificações não autorizadas em si mesmo ou em seus componentes. Ações como solicitar uma lista de processos em execução ou uma lista de arquivos em um diretório não são confiáveis ​​para se comportar conforme o esperado. Em outras palavras, os detectores de rootkit que funcionam durante a execução em sistemas infectados são eficazes apenas contra rootkits que têm algum defeito em sua camuflagem ou que são executados com privilégios de modo de usuário mais baixos do que o software de detecção no kernel. Assim como acontece com os vírus de computador , a detecção e eliminação de rootkits é uma luta contínua entre os dois lados desse conflito. A detecção pode assumir uma série de abordagens diferentes, incluindo a procura de "assinaturas" de vírus (por exemplo, software antivírus), verificação de integridade (por exemplo, assinaturas digitais ), detecção baseada em diferenças (comparação de resultados esperados vs. reais) e detecção comportamental (por exemplo, monitoramento Uso da CPU ou tráfego de rede).

Para rootkits no modo kernel, a detecção é consideravelmente mais complexa, exigindo um exame cuidadoso da Tabela de Chamadas do Sistema para procurar funções interceptadas em que o malware pode estar subvertendo o comportamento do sistema, bem como verificação forense da memória em busca de padrões que indiquem processos ocultos. As ofertas de detecção de rootkit Unix incluem Zeppoo, chkrootkit , rkhunter e OSSEC . Para o Windows, as ferramentas de detecção incluem Microsoft Sysinternals RootkitRevealer , Avast Antivirus , Sophos Anti-Rootkit, F-Secure , Radix, GMER e WindowsSCOPE . Quaisquer detectores de rootkit que se mostrem eficazes contribuem, em última análise, para sua própria ineficácia, à medida que os autores de malware adaptam e testam seu código para escapar da detecção por ferramentas bem utilizadas. A detecção por meio do exame do armazenamento enquanto o sistema operacional suspeito não está operacional pode perder rootkits não reconhecidos pelo software de verificação, pois o rootkit não está ativo e o comportamento suspeito é suprimido; o software anti-malware convencional executado com o rootkit operacional pode falhar se o rootkit se ocultar efetivamente.

Meio confiável alternativo

O método melhor e mais confiável para detecção em nível de sistema operacional rootkit é desligar o computador suspeito de infecção, e, em seguida, para verificar o seu armazenamento por inicialização a partir de uma alternativa confiável médio (por exemplo, um "resgate" CD-ROM ou unidade flash USB ) A técnica é eficaz porque um rootkit não pode ocultar ativamente sua presença se não estiver em execução.

Com base no comportamento

A abordagem baseada em comportamento para detectar rootkits tenta inferir a presença de um rootkit procurando por um comportamento semelhante ao de um rootkit. Por exemplo, ao criar o perfil de um sistema, as diferenças no tempo e na frequência das chamadas de API ou na utilização geral da CPU podem ser atribuídas a um rootkit. O método é complexo e é dificultado por uma alta incidência de falsos positivos . Os rootkits com defeito às vezes podem introduzir mudanças muito óbvias em um sistema: o rootkit Alureon travou sistemas Windows depois que uma atualização de segurança expôs uma falha de design em seu código. Os registros de um analisador de pacotes , firewall ou sistema de prevenção de intrusão podem apresentar evidências do comportamento do rootkit em um ambiente de rede.

Baseado em assinatura

Os produtos antivírus raramente detectam todos os vírus em testes públicos (dependendo do que é usado e em que extensão), embora os fornecedores de software de segurança incorporem a detecção de rootkit em seus produtos. Se um rootkit tentar se esconder durante uma varredura antivírus, um detector furtivo pode notar; se o rootkit tentar se descarregar temporariamente do sistema, a detecção de assinatura (ou "impressão digital") ainda poderá localizá-lo. Essa abordagem combinada força os invasores a implementar mecanismos de contra-ataque, ou rotinas "retro", que tentam encerrar os programas antivírus. Os métodos de detecção baseados em assinatura podem ser eficazes contra rootkits bem publicados, mas nem tanto contra rootkits de raiz personalizados especialmente criados.

Baseado em diferenças

Outro método que pode detectar rootkits compara dados brutos "confiáveis" com conteúdo "contaminado" retornado por uma API . Por exemplo, os binários presentes no disco podem ser comparados com suas cópias na memória operacional (em alguns sistemas operacionais, a imagem na memória deve ser idêntica à imagem no disco) ou os resultados retornados do sistema de arquivos ou APIs do Registro do Windows podem ser verificada em relação às estruturas brutas nos discos físicos subjacentes - no entanto, no caso do primeiro, algumas diferenças válidas podem ser introduzidas por mecanismos do sistema operacional, como realocação de memória ou shimming . Um rootkit pode detectar a presença de um scanner baseado em diferenças ou máquina virtual (o último sendo comumente usado para realizar análises forenses) e ajustar seu comportamento para que nenhuma diferença possa ser detectada. Detecção baseada diferença foi usado por Russinovich 's RootkitRevealer ferramenta para encontrar o rootkit da Sony DRM.

Verificação de integridade

O utilitário rkhunter usa hashes SHA-1 para verificar a integridade dos arquivos do sistema.

A assinatura de código usa infraestrutura de chave pública para verificar se um arquivo foi modificado desde que foi assinado digitalmente por seu editor. Como alternativa, um proprietário ou administrador do sistema pode usar uma função hash criptográfica para calcular uma "impressão digital" no momento da instalação que pode ajudar a detectar alterações não autorizadas subsequentes em bibliotecas de código em disco. No entanto, esquemas simples verificam apenas se o código foi modificado desde o momento da instalação; a subversão anterior a esse momento não é detectável. A impressão digital deve ser restabelecida cada vez que alterações são feitas no sistema: por exemplo, após a instalação de atualizações de segurança ou um service pack . A função hash cria um resumo da mensagem , um código relativamente curto calculado a partir de cada bit no arquivo usando um algoritmo que cria grandes mudanças no resumo da mensagem com alterações ainda menores no arquivo original. Ao recalcular e comparar o resumo da mensagem dos arquivos instalados em intervalos regulares com uma lista confiável de resumos da mensagem, as alterações no sistema podem ser detectadas e monitoradas - desde que a linha de base original tenha sido criada antes da adição do malware.

Rootkits mais sofisticados são capazes de subverter o processo de verificação, apresentando uma cópia não modificada do arquivo para inspeção ou fazendo modificações de código apenas na memória, registradores de reconfiguração, que são posteriormente comparados a uma lista branca de valores esperados. O código que executa as operações de hash, comparação ou extensão também deve ser protegido - neste contexto, a noção de uma raiz de confiança imutável afirma que o primeiro código para medir as propriedades de segurança de um sistema deve ser confiável para garantir que um rootkit ou bootkit não compromete o sistema em seu nível mais fundamental.

Despejos de memória

Forçar um despejo completo de memória virtual irá capturar um rootkit ativo (ou um despejo de kernel no caso de um rootkit em modo kernel), permitindo que uma análise forense offline seja realizada com um depurador contra o arquivo de despejo resultante , sem que o rootkit seja capaz de tome todas as medidas para se encobrir. Essa técnica é altamente especializada e pode exigir acesso a código - fonte não público ou símbolos de depuração . Despejos de memória iniciados pelo sistema operacional nem sempre podem ser usados ​​para detectar um rootkit baseado em hipervisor, que é capaz de interceptar e subverter as tentativas de nível mais baixo de ler a memória - um dispositivo de hardware, como aquele que implementa uma interrupção não mascarável , pode ser necessário para despejar memória neste cenário. As máquinas virtuais também facilitam a análise da memória de uma máquina comprometida do hipervisor subjacente, portanto, alguns rootkits evitarão infectar máquinas virtuais por esse motivo.

Remoção

A remoção manual de um rootkit costuma ser extremamente difícil para um usuário de computador típico, mas vários fornecedores de software de segurança oferecem ferramentas para detectar e remover automaticamente alguns rootkits, normalmente como parte de um pacote de antivírus . A partir de 2005, a Ferramenta de Remoção de Software Malicioso do Windows mensal da Microsoft é capaz de detectar e remover algumas classes de rootkits. Além disso, o Windows Defender Offline pode remover rootkits, pois é executado em um ambiente confiável antes de o sistema operacional iniciar. Alguns scanners antivírus podem ignorar APIs do sistema de arquivos , que são vulneráveis ​​à manipulação por um rootkit. Em vez disso, eles acessam as estruturas do sistema de arquivos brutos diretamente e usam essas informações para validar os resultados das APIs do sistema para identificar quaisquer diferenças que possam ser causadas por um rootkit. Há especialistas que acreditam que a única maneira confiável de removê-los é reinstalar o sistema operacional a partir de uma mídia confiável. Isso ocorre porque as ferramentas de remoção de antivírus e malware em execução em um sistema não confiável podem ser ineficazes contra rootkits de modo kernel bem escritos. A inicialização de um sistema operacional alternativo a partir de uma mídia confiável pode permitir que um volume de sistema infectado seja montado e potencialmente limpo com segurança e que dados críticos sejam copiados - ou, alternativamente, um exame forense realizado. Sistemas operacionais leves como Windows PE , Console de Recuperação do Windows , Ambiente de Recuperação do Windows , BartPE ou Live Distros podem ser usados ​​para este propósito, permitindo que o sistema seja "limpo". Mesmo que o tipo e a natureza de um rootkit sejam conhecidos, o reparo manual pode ser impraticável, enquanto a reinstalação do sistema operacional e dos aplicativos é mais segura, simples e rápida.

Defesas

A proteção do sistema representa uma das primeiras camadas de defesa contra um rootkit, para evitar que ele seja instalado. Aplicar patches de segurança , implementar o princípio do menor privilégio , reduzir a superfície de ataque e instalar software antivírus são algumas das melhores práticas de segurança padrão eficazes contra todas as classes de malware. Novas especificações de inicialização segura, como a Unified Extensible Firmware Interface , foram projetadas para lidar com a ameaça de bootkits, mas mesmo eles são vulneráveis ​​se os recursos de segurança que oferecem não forem utilizados. Para sistemas de servidor, o atestado de servidor remoto usando tecnologias como Intel Trusted Execution Technology (TXT) fornece uma maneira de verificar se os servidores permanecem em bom estado. Por exemplo, a criptografia de dados em repouso do Microsoft Bitlocker verifica se os servidores estão em um "bom estado" conhecido na inicialização. PrivateCore vCage é uma oferta de software que protege os dados em uso (memória) para evitar bootkits e rootkits, verificando se os servidores estão em um estado "bom" conhecido na inicialização. A implementação do PrivateCore funciona em conjunto com o Intel TXT e bloqueia as interfaces do sistema do servidor para evitar bootkits e rootkits potenciais.

Veja também

Notas

Referências

Leitura adicional

links externos

  • Mídia relacionada a rootkits no Wikimedia Commons