Ataques, conceitos e técnicas

Este capítulo aborda as formas como os profissionais de cibersegurança analisam o que aconteceu após um ciberataque. Explica as vulnerabilidades do hardware e do software de segurança, bem como as diversas categorias de vulnerabilidades de segurança.

São debatidos os diferentes tipos de software maligno (conhecido como malware) e os sintomas de malware. São abordadas as diversas formas pelas quais os atacantes podem infiltrar-se num sistema, bem como os ataques de negação de serviço.

Os ciberataques modernos são, na sua maioria, considerados ataques mistos. Os ataques mistos utilizam várias técnicas de infiltração e ataque a um sistema. Quando não é possível impedir um ataque, é da responsabilidade de um profissional de cibersegurança reduzir o impacto desse ataque.

Encontrar vulnerabilidades de segurança

Vulnerabilidades de segurança são qualquer tipo de defeito de software ou de hardware. Depois de tomarem conhecimento de uma vulnerabilidade, os utilizadores mal intencionados tentam explorá-la. Um exploit (exploração) é o termo utilizado para descrever um programa escrito para tirar partido de uma vulnerabilidade conhecida. O ato de utilizar um exploit contra uma vulnerabilidade designa-se por ataque. O ataque tem como objetivo a obtenção de acesso a um sistema, aos dados que aloja ou a um recurso específico.

Vulnerabilidades de software

As vulnerabilidades de software são normalmente introduzidas por erros no sistema operativo ou no código de uma aplicação e, apesar de todos os esforços que as empresas realizam para encontrar e corrigir vulnerabilidades de software, é comum surgirem novas vulnerabilidades. A Microsoft, a Apple e outros produtores de sistemas operativos lançam patches e atualizações quase todos os dias. As atualizações de aplicações são igualmente comuns. Aplicações como browsers, aplicações móveis e servidores Web são frequentemente atualizados pelas empresas ou organizações responsáveis pelos mesmos.

Em 2015, foi descoberta uma grande vulnerabilidade denominada SYNful Knock no Cisco IOS. Esta vulnerabilidade permitiu aos atacantes obterem o controlo de routers de nível empresarial, tais como os routers descontinuados Cisco 1841, 2811 e 3825. Os atacantes conseguiram, assim, monitorizar toda a comunicação de rede e infetar outros dispositivos de rede. Esta vulnerabilidade foi introduzida no sistema quando foi instalada uma versão alterada do IOS nos routers. Para evitar este tipo de situações, verifique sempre a integridade da imagem do IOS transferida e limite o acesso físico do equipamento apenas a pessoal autorizado.

As atualizações de software têm o objetivo de manterem os sistemas atualizados e evitar a exploração de vulnerabilidades. Embora muitas empresas tenham equipas de teste de penetração que se dedicam a pesquisar, encontrar e corrigir vulnerabilidades de software antes que possam ser exploradas, alguns investigadores de segurança de terceiros também são especializados em encontrar vulnerabilidades em software.

O Project Zero da Google é um excelente exemplo dessa prática. Após a descoberta de diversas vulnerabilidades em vários softwares utilizados por utilizadores finais, a Google formou uma equipa permanente dedicada a encontrar vulnerabilidades de software. Poderá encontrar a Google Security Research aqui.

Vulnerabilidades de hardware

Muitas vezes, as vulnerabilidades de hardware são introduzidas por defeitos na conceção, i.e., no design do hardware. A memória RAM, por exemplo, é constituída por condensadores instalados muito próximos uns dos outros. Descobriu-se que, devido à proximidade, a aplicação de alterações constantes a um destes condensadores pode influenciar os condensadores adjacentes. Com base nesse defeito de design, foi criado um exploit denominado Rowhammer. Ao reescrever repetidamente a memória nos mesmos endereços, o exploit Rowhammer permite a obtenção de dados de células de memória de endereços próximos, mesmo que as células estejam protegidas.

As vulnerabilidades de hardware são específicas de modelos de dispositivo e, normalmente, não são exploradas através de tentativas aleatórias de comprometimento. Embora os exploits de hardware sejam mais comuns em ataques altamente direcionados, a proteção contra malware tradicional e uma segurança física são a proteção suficiente para o utilizador comum.

 

Categorização de vulnerabilidades de segurança

A maioria das vulnerabilidades de segurança de software enquadra-se numa das seguintes categorias:

Capacidade da memória intermédia excedida – Esta vulnerabilidade ocorre quando são escritos dados além dos limites de uma memória intermédia. As memórias intermédias são áreas da memória atribuídas a uma aplicação. Ao alterar dados para além dos limites de uma memória intermédia, a aplicação acede a memória atribuída a outros processos. Tal pode levar a uma falha do sistema, ao comprometimento de dados ou disponibilizar escalamento de privilégios.

Entrada não validada – Os programas trabalham frequentemente com entrada de dados. Estes dados que entram no programa podem incluir conteúdo maligno, concebido para forçar o programa a comportar-se de forma indesejada. Considere um programa que recebe uma imagem para processamento. Um utilizador mal intencionado pode criar um ficheiro de imagem com dimensões de imagem inválidas. As dimensões criadas de forma mal intencionada podem forçar o programa a atribuir memórias intermédias de tamanhos incorretos e inesperados.

Condições de corrida – Esta vulnerabilidade ocorre quando a saída de um evento depende de saídas ordenadas ou temporizadas. Uma condição de corrida torna-se uma fonte de vulnerabilidade quando os eventos ordenados ou temporizados não ocorrem pela ordem ou dentro da temporização correta.

Fraquezas em práticas de segurança – Os sistemas e dados sensíveis podem ser protegidos por técnicas como a autenticação, autorização e criptografia. Os programadores não devem tentar criar os seus próprios algoritmos de segurança, pois é provável que estes introduzam vulnerabilidades. Aconselha-se vivamente que os programadores utilizem bibliotecas de segurança que já tenham sido criadas, testadas e verificadas.

Problemas de controlo de acesso – O controlo de acesso é o processo que controla a ação de cada elemento e vai desde a gestão do acesso físico a equipamento à indicação de quem tem acesso a um recurso como, por exemplo, um ficheiro, e o que é possível fazer com o mesmo, como ler ou alterar o ficheiro. Muitas vulnerabilidades de segurança são criadas pelo uso indevido de controlos de acesso.

Quase todos os controlos de acesso e práticas de segurança podem ser ultrapassados se o atacante tiver acesso físico ao equipamento alvo. Por exemplo, independentemente das permissões que definir para um ficheiro, o sistema operativo não pode impedir que uma pessoa contorne o sistema operativo e leia os dados diretamente do disco. Para proteger o computador e os dados que contém, é necessário restringir o acesso físico e utilizar técnicas de criptografia para proteger contra roubo ou corrupção de dados.