Vírus e outras ameaças Vírus Computacionais computacional/biológico • O termo vírus computacional deriva e é de alguma forma análogo ao vírus biológico • Infecções virais biológicas são propagadas através do vírus que injecta o seu conteúdo numa célula • A célula infectada passa a ser uma fábrica replicadora de vírus Vírus Computacionais computacional/biológico • Um vírus computacional não é mais que um segmento de código • O vírus tem capacidade de se copiar para um ou mais hospedeiros quando activado • Quando o hospedeiro infectado é executado o vírus é activado e o hospedeiro passa a ser uma fábrica replicadora de vírus Vírus Computacionais computacional/biológico • Vírus computacionais são do mais aproximado ao conceito de vida artificial do que qualquer outra coisa criada pelo homem : – São capazes de se reproduzirem – São capazes de se esconderem dos seus predadores – Têm capacidade de sobrevivência fora de cativeiro Vírus Computacionais Evolução histórica – 1949: J.V. Neumann – “Theory and Organization of Complicated Automata” – 1950: Bell Labs – “Core Wars” – 1970: Brunner’s “Shockwave Rider” and Ryan’s Adolescence of P-1” – 1981: O Primeiro Vírus – Apple Computers, Texas A&M – 1983: Tese de Cohen’s – Mathematical Virus – 1986: Basit e Amjad – “Pakistan Brain” – 1988: Jerusalem – 1990: Primeiro Anti-Virus: Norton, Symantec – 1991: Vírus polimórficos – 1992: Aumento de 420% desde 1990!!! – 1995: Windows 95 e o vírus “Macro” – 1996: Vírus em código Java – Hoje: Mais de 50,000 – Futuro…? Virus para computador faz 25 anos • O primeiro vírus de computador criado, o Elk Cloner, completa, em julho de 2007, 25 anos de idade • A praga criada pelo adolescente Rich Skrenta em 1982, com 15 anos na época • Criado para o computador Apple II • contaminava máquinas através da inserção de disquetes infectados Vírus Computacionais Estrutura e operação • O verdadeiro vírus tem duas componentes: • Propagação • Manipulação • De modo a funcionar; o vírus tem de se adicionar a algum pedaço de código • Uma forma de classificar estes vírus é a aproximação que o mesmo toma quando se adiciona a outro pedaço de código (cápsula, add-on ou intrusivo) Vírus Computacionais Estrutura e operação • Vírus cápsula: – Forma uma cápsula em volta do código original, torna-se o programa e o programa original torna-se uma sub-rotina do código viral • boot virus • …etc… Vírus Computacionais Estrutura e operação • Vírus add-on: – Adicionam o seu código ao código do hospedeiro. A sua única indicação de presença é a de que o tamanho do hospedeiro original aumenta • Quase todos os vírus são add-on Vírus Computacionais Estrutura e operação • Vírus intrusivo: – Reescrevem parte, ou todo, do código do hospedeiro original • Poucos vírus são deste tipo Vírus Computacionais as cinco gerações • A primeira geração (simples) : – Estes vírus não faziam nada de extraordinário para além da replicação, alguns vírus de hoje ainda pertencem a esta geração – Os estragos não vão para além de bugs ou incompatibilidades no software que antes não existiam – Não são difíceis de descobrir, visto que nada fazem para se esconderem, de modo que um simples aumento num ficheiro, por exemplo, denuncia-o imediatamente Vírus Computacionais as cinco gerações • A segunda geração (auto-reconhecimento) : – Implementam uma espécie de assinatura que assinala o ficheiro ou sistema como infectado, ou seja, não acontecem infecções duplicadas de hosts, permitindo que o virus seja mais dificil de detectar – A assinatura pode ser uma sequência de bytes em disco ou memória – Ao mesmo tempo que a assinatura pode impedir a detecção instantânea do vírus, no reverso da medalha a assinatura por si só é uma indicação da presença do vírus, embora não tão aparentemente fácil de descobrir Vírus Computacionais as cinco gerações • A terceira geração (furtivo) : – A maior parte dos vírus pode ser identificada analisando padrões de dados próprios dos mesmos nos sistema de armazenamento secundários – De modo a impedir a detecção alguns vírus usam técnicas furtivas de modo a não serem descobertos – Como exemplo se numa análise a um disco o vírus detecta que existe uma chamada do sistema para ler uma porção do vírus, este retornaria não o vírus mas os dados que estariam presentes se o sistema estivesse livre de infecção Vírus Computacionais as cinco gerações • A quarta geração (armadura) : – À medida que antivírus saem para o mercado, autores de vírus voltaram-se para métodos de ofuscarem o seu código – Estas técnicas de ‘armadura’ incluem: • Adicionar confusão e código desnecessário de modo a dificultar a análise do código do vírus • Defesas que podem tomar a forma de ataques directos a software de antivírus – Estes vírus começam a aparecer por volta de 1990 • Em 1990 sai para o mercado o primeiro antivírus da Norton Vírus Computacionais as cinco gerações • A quinta geração (polimórficos) : – A mais recente classe de vírus a aparecer são os polimórficos, capazes de se mutarem – Infectam os seus hospedeiros com uma versão modificada ou cifrada deles próprios – De modo a se poder detectar estes vírus é necessário um algoritmo mais complexo que seja capaz de reverter o processo de mutação de modo a poder detectar se o vírus está presente ou não Mudança de foco • Enquanto as primeiras gerações de pragas virtuais irritavam os usuários com apresentações de imagens e frases impróprias, ou apagando o conteúdo de um disco rígido, as ameaças atuais são mais insidiosas e caminham em outra direção. • Bloqueio a sites, máquinas zumbis e o acesso a informações sensíveis de usuários e empresas têm causado prejuízos incalculáveis. • Em 2006, as fraudes virtuais custaram ao Brasil cerca de 300 milhões de reais, de acordo com o Instituto de Peritos em Tecnologias Digitais e Telecomunicações (IPDI). • A disseminação de tecnologias também tem aberto novas frentes de ataques, sequer imaginadas quando o Elk Cloner foi escrito. • Por exemplo, em apenas três anos, o número de pragas escritas para dispositivos móveis cresceu mais de 1.200%, secundo a FSecure Detecção • Assinaturas • Pequenos blocos de dados utilizados para identificar um determinado vírus • Zero day problem • mutações – Exemplo: • X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUSTEST-FILE!$H+H* • EICAR: software para teste de antivírus – Mais informações: • http://superdownloads.uol.com.br/materias/assinaturasvirus/234,1.html • http://superdownloads.uol.com.br/materias/assinaturasvirus/234,1.html Detecção • Heurísticas – A heurística é uma técnica utilizada para estudar o comportamento, a estrutura e as características de um arquivo, para definí-lo como suspeito ou não – Ela pode fazer com que o antivírus emita muitos falsos-positivos, mas é uma técnica que se mostrou bastante útil para evitar vírus desconhecidos. Detecção – Em geral, um vírus que infecta arquivos .EXE age da seguinte forma: Detecção – Um arquivo .EXE possui um pequeno cabeçalho, um Entry Point - o ponto onde começa a execução de um programa, e o programa propriamente dito. – Após uma infecção, o Entry Point é alterado, de forma que passe a apontar para o código do vírus. – Após a execução do vírus, este pula para o Entry Point original do programa, fazendo-o funcionar normalmente. – Como a grande maioria dos vírus que infectam .EXE trabalha desta forma, a pesquisa heurística poderia ajudar, bastaria verificar se o Entry Point está fora da seção do código do programa ou se o Entry Point é um JMP. Detecção • Emulação – Detecção de vírus polimórficos – Pesquisas por assinaturas em vírus polimórficos são praticamente inviáveis – Basicamente, um emulador tenta identificar a rotina de decriptografia do vírus – Se o código não for muito modificado, poderemos utilizar a heurística para identificar o vírus Detecção • Vírus “Simili” – Este vírus contém um decriptografador polimórfico que modifica o tamanho e a localização das infecções – Ele "disassembla" seu próprio código para uma forma intermediária, injeta novas instruções e sujeira ao código e "re-assembla", gerando uma nova cópia polimórfica – As novas cópias podem variar de 30 a 120 Kbytes Detecção • Outra maneira de fazer a emulação é interceptar funções da API do sistema operacional ou capturar interrupções do DOS que estejam ligadas diretamente à gravação, leitura ou execução. • Se um determinado programa executar uma série de ações suspeitas, o antivírus emitirá aviso de um arquivo suspeito. Atividade 1: Teste de Antivírus • EICAR: – este arquivo NÃO é vírus, mas é detectado como tal pela maioria dos anti-vírus, por convenção. – sua utilidade é testar a eficácia de detecção do anti-vírus • http://www.eicar.org/anti_virus_test_file.htm • Teste a eficiência do antivírus instalado na sua máquina, usando o eicar original e modificando o arquivo Atividade 2: Avaliação de Códigos-Fonte • http://www.totallygeek.com/vscdb/ • http://www.62nds.co.nz/pg/e90.php 1. Escolher um vírus 2. Fazer uma breve descrição do vírus (pesquisar) 3. Apresentar o código e mostrar o que ele faz