São requisitos para essa aula o conhecimento de:
Na publicação do NIST 800-83 Guide to Malware Incident Prevention and Handling de novembro de 2005, temos a seguinte definição de Malware (tradução Stallings):
Malware: um programa que é inserido em um sistema, usualmente às escondidas, com a intenção de comprometer a confidencialidade, a integridade ou a disponibilidade dos dados, aplicações ou sistema operacional da vítima ou, possivelmente, apenas aborrecer ou perturbar a vítima.
Não há concordância geral na área sobre os termos, dado que há sobreposição entre as diversas categorias de malware. Uma guia útil de Stallings:
Propaganda que é integrada ao software. Pode resultar em pop-ups de propaganda ou no redirecionamento de um navegador para um site comercial. Veja wiki: https://en.wikipedia.org/wiki/Adware
Conjunto de ferramentas para gerar um novo malware automaticamente usando uma variedade de mecanismos de propagação e cargas úteis fornecidos.
Ferramentas maliciosas de hackers usadas para invadir remotamente novas máquinas.
Qualquer mecanismo que burle uma verificação de segurança normal; pode permitir acesso não autorizado a funcionalidades em um programa ou a um sistema comprometido. Veja Wiki: https://en.wikipedia.org/wiki/Backdoor_(computing)
Códigos que instalam outros itens em uma máquina sob ataque. São normalmente incluídos no código do malware primeiramente inserido em um sistema comprometido para depois importar um pacote de malware maior.
Um ataque que usa código colocado em um site comprometido que explora vulnerabilidades de navegadores para atacar um sistema cliente quando o site é visitado.
Códigos específicos para uma única vulnerabilidade ou conjunto de vulnerabilidades.
Usados para gerar grande volume de dados para atacar sistemas de computadores em rede, executando alguma forma de ataque de negação de serviço (Denial of Service, ou DoS).
Capturam teclas digitadas no teclado de um sistema comprometido.
Código inserido em um malware por um intruso. Uma bomba lógica permanece em hibernação até ocorrer uma condição predefinida; então, o código ativa uma ação não autorizada. Veja wiki: https://en.wikipedia.org/wiki/Logic_bomb
Um tipo de vírus que usa código de macro ou de linguagem de script, tipicamente embutido em um documento e ativado quando o documento é visualizado ou editado, executando e reproduzindo a si mesmo em outros documentos do mesmo tipo.
Software (p. ex., script, macro ou outra instrução portável) que pode ser distribuído sem alterações para um conjunto heterogêneo de plataformas e executado com semântica idêntica.
Conjunto de ferramentas de hacker usadas depois que o atacante invadiu um sistema computacional e conseguiu acesso ao nível raiz (root). Veja wiki: https://en.wikipedia.org/wiki/Rootkit
Usados para enviar grande volume de e-mail indesejado.
Software que coleta informações de um computador e as transmite a outro sistema. Informações podem ser obtidas via monitoração de tecladas digitadas, dados de tela e/ou tráfego na rede, ou por escaneamento de arquivos no sistema em busca de informações sensíveis. Veja wiki: https://en.wikipedia.org/wiki/Spyware
Programa de computador que parece ter uma função útil, mas também tem uma função oculta e potencialmente maliciosa que escapa aos mecanismos de segurança, às vezes explorando autorizações legítimas de uma entidade de sistema que invoca o programa de cavalo de Troia. Veja wiki: https://en.wikipedia.org/wiki/Trojan_horse_(computing)
Malware que, quando executado, tenta se reproduzir na forma de outro código de máquina executável ou código de script. Quando consegue, diz-se que o código está infectado. Quando o código infectado é executado, o vírus também é executado. Veja wiki: https://en.wikipedia.org/wiki/Computer_virus
Programa de computador que pode ser executado independentemente e propagar uma cópia funcional completa de si mesmo para outras estações em uma rede, usualmente explorando vulnerabilidades de software no sistema-alvo. Veja wiki: https://en.wikipedia.org/wiki/Computer_worm
Programa ativado em uma máquina infectada que é usado para lançar ataques contra outras máquinas. Veja wiki: https://en.wikipedia.org/wiki/Zombie_(computing)
Malware que, quando executado, tenta replicar-se em outra máquina executável ou código de script; quando é bem- sucedido, o código é dito estar infectado. Quando o código infectado é executado, o vírus também é executado.
Um vírus típico passa por fases de:
Infecta um registro de inicialização mestre ou um registro de inicialização e se espalha quando um sistema é iniciado a partir do disco que contém o vírus.
Infecta arquivos que o sistema operacional ou o shell considera como executável.
Infecta arquivos com código de macro ou de script que é interpretado por uma aplicação.
Infecta arquivos de vários modos (vários locais de infecção)
Vírus cifrado: Uma abordagem típica é descrita a seguir. Uma porção do vírus cria uma chave criptográfica aleatória e cifra o restante do vírus. A chave é armazenada com o vírus. Não há padrão de bits a observar.
Uma forma de vírus projetado explicitamente para se esconder de detecção por software antivírus. Desse modo, o vírus inteiro, e não apenas uma carga útil, fica oculto (tipicamente via compressão).
Um vírus que muda a cada infecção (funcionalmente equivalentes com instruções supérfluas), impossibilitando detecção pela “assinatura” do vírus.
Como ocorre com um vírus polimórfico, um vírus metamórfico muda a cada infecção, se reescrevendo completamente.
Livro:
Veja Capítulo 6, seções 6.1 e 6.2.
Em especial, agradeço aos colegas que elaboraram bons materiais, como o prof. Raphael Machado, Kowada e Viterbo cujos conceitos formam o cerne desses slides.
Estendo os agradecimentos aos demais colegas que colaboraram com a elaboração do material do curso de Pesquisa Operacional, que abriu caminho para verificação prática dessa tecnologia de slides.
Esse material de curso só é possível graças aos inúmeros projetos de código-aberto que são necessários a ele, incluindo:
Agradecimento especial a empresas que suportam projetos livres envolvidos nesse curso:
Esses slides foram escritos utilizando pandoc, segundo o tutorial ilectures:
Exceto expressamente mencionado (com as devidas ressalvas ao material cedido por colegas), a licença será Creative Commons.
Licença: CC-BY 4.0 2020
Igor Machado Coelho