1 segurança capítulo 9 9.1 o ambiente de segurança 9.2 criptografia básica 9.3 mecanismos de...

59
1 Segurança Segurança Capítulo 9 Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema 9.6 Explorando erros de código

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

11

SegurançaSegurança

Capítulo 9Capítulo 9

9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção9.4 Autenticação9.5 Ataques de dentro do sistema 9.6 Explorando erros de código9.7 Malware9.8 Defesas

Page 2: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

2

O Ambiente de SegurançaO Ambiente de SegurançaAmeaçasAmeaças

Page 3: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

3

9.2 - Criptografia Básica9.2 - Criptografia Básica

Relação entre o texto plano e o texto cifradoRelação entre o texto plano e o texto cifrado

Princípio de Kerckhoff (adotado por profissionais sérios da área): Todos os algoritmos devem ser públicos, apenas as chaves são secretas.

Page 4: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

4

Dada a chave criptográfica é fácil achar a chave de decriptação

Algoritmos de chave simétrica são seguros se as chaves forem suficientemente longas. Hoje, utiliza-se 1024 bits o que leva a 2 1024 ~2 * 10 308 chaves.

Inconveniência: ambos os lados devem possuir a chave secreta compartilhada

Criptografia por Chave Secreta Criptografia por Chave Secreta (Chave Simétrica)(Chave Simétrica)

Page 5: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

5

Criptografia por Chave Pública (1)Criptografia por Chave Pública (1)

Outra classe de algoritmos propõe uma chave para criptografia e outra para decriptografia. A chave de criptografia é pública, e a outra é privada.

Alice publica EA em sua home page. Mantém DA secreto.

Bob publica EB em sua home page. Mantém DB secreto.

Page 6: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

6

Criptografia por Chave Pública (2)Criptografia por Chave Pública (2)

Quando Alice quer mandar mensagem para Bob, cifra a mensagem usando EB.

Como somente Bob tem DB só ele pode decifrar a mensagem.

A cifragem usa uma função fácil, mas a decifragem sem a chave certa, requer uma operação difícil, de tal forma que não se consegue decifrar nem com força bruta caso não se tenha a chave correta.

RSA – Algoritmo amplamente utilizado, desenvolvido por pesquisadores do MIT :Rivest, Shamir, Adleman.

Page 7: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

7

Funções de Uma ViaFunções de Uma Via

Função tal que dados f e seu parâmetro xé fácil calcular y = f(x)

Mas dado y, é computacionalmente inviável encontrar x.

A função f costuma embaralhar os bits de um modo bastante complexo.

Função chamada de Função de Resumo Criptográfico.Um tipo de hash (de novo!!)

Page 8: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

8

Assinatura Digital (1)Assinatura Digital (1)

Objetivos: (1) o receptor verifique a identidade do transmissor; (2) o transmissor não possa repudiar a mensagem ; (3) o receptor não tenha possibilidade de forjar ele mesmo a mensagem.

Ex: compra de ações pela Internet.

Uma maneira comum de fazer isto é através de uma função hash de uma via, difícil de inverter –

As mais conhecidas são MD5 (Message Digest) que produz 16 bytes e SHA (Secure hash algorithm) que produz 20 bytes (Atualmente quebradas...).

Page 9: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

9

Após calcular o hash, o cifra com a chave privada (realiza a transformação matemática difícil).

O receptor recebe documento e D(Hash). Submete à cifragem E(D(Hash)) = Hash. Calcula por sua vez o hash do documento original para ver se bate.

Obs: o algoritmo E e D devem ser comutativos.

Problema?Problema?

Assinatura Digital (2)Assinatura Digital (2)

Page 10: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

10

Alice pode dizer que não foi ela que enviou.

Quem pode afirmar que foi? Quem prova que D é sua chave privada?

E se algum invasor alterou a chave?

Enquanto não houver um esquema de assinatura comprovado por terceiro de confiança, o esquema pode falhar.

A solução é o uso de uma Infra-estrutura de Chave Pública (ICP). Veremos no curso de redes.

Assinatura Digital (3)Assinatura Digital (3)

Page 11: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

11

Sistemas ConfiáveisSistemas Confiáveis

SOs com mais funcionalidade => mais complexidade => mais código => mais falhas, mais erros de segurança.

Ex: Páginas html não eram perigosas, mas uma nova função, páginas com conteúdo dinâmico, sim: programas remotos podem ser executados... Quem quis conteúdo dinâmico? Usuários unidos? Ou projetistas que não ligam para segurança?

Briga eterna: Funcionalidades versus segurança.

Sistemas confiáveis: requisitos de segurança são formalmente estabelecidos e cumpridos. Contêm uma base de computação confiável mínima: TCB (Trusted Computing Base)

Page 12: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

12

Sistemas ConfiáveisSistemas ConfiáveisBase de Computação ConfiávelBase de Computação Confiável

Um monitor de referência

Se a CB for T, seguir a especificação, a segurança não será comprometida, independente do que esteja errado. Monitor de referência: decide se deve processar ou não a requisição. A TCB fica separada do resto para ser menor e com menos erros. (A maioria dos SOs não é assim... O MINIX do Tanenbaum é, com apenas 4000 linhas de código)

Page 13: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

13

9.4 - Autenticação de Usuário9.4 - Autenticação de Usuário

Quando usuário se conecta a um computador, o SO deve determinar quem é o usuário => autenticação.

A autenticação deve identificar:

1.Alguma coisa que o usuário sabe;

2.Alguma coisa que o usuário tem;

3.Alguma coisa que o usuário é.

Estes princípios levam a esquemas diferentes de autenticação com diferentes complexidades e propriedades de segurança.

Nomenclatura: Hackers: grandes programadores com muito conhecimento (honroso).Crackers: tentam se infiltrar sem autorização em sistemas.

Page 14: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

14

Autenticação Usando Senhas (1)Autenticação Usando Senhas (1)Maneira mais amplamente usada de autenticação.Maneira mais amplamente usada de autenticação.Implementação simples. Manter lista de pares (nome, senha).Implementação simples. Manter lista de pares (nome, senha).Obviamente o sistema não deve ecoar a senha.Obviamente o sistema não deve ecoar a senha.

(a) Um acesso bem sucedido(a) Um acesso bem sucedido(b) Acesso rejeitado depois da entrada de nome(b) Acesso rejeitado depois da entrada de nome(c) Acesso rejeitado depois da entrada de nome e senha(c) Acesso rejeitado depois da entrada de nome e senha

Quanto menos informação se der ao cracker melhorQuanto menos informação se der ao cracker melhor

Page 15: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

15

Autenticação Usando Senhas (3)Autenticação Usando Senhas (3)

As senhas são armazenadas cifradas. Podem ser atacadas: “chutadas”, cifradas e conferidas com o arquivo de senhas armazenadas.Para dificultar, se associa à senha um número aleatório de n bits chamado sal. (Altera a senha, altera o sal, armazenado junto).Junta-se senha e sal e cifra-os. Armazena resultado.Para adivinhar é preciso chutar a senha e o sal. No Unix n=12

Page 16: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

16

Autenticação Usando Senhas (4)Autenticação Usando Senhas (4)

Rodar um programa testador de senhas que avisa:Senhas devem ter no mínimo 7 caracteres;Senhas devem conter letras maiúsculas e minúsculas;Senhas devem conter pelo menos um dígito ou caracter

especial;Senhas não devem ser palavras de dicionário, nomes de

pessoa, etc.

Exigir que usuários alterem senhas regularmente. Manter equilíbrio das exigências para não aumentar o problema como manter um bilhete na tela do monitor com a senha que não consegue guardar...

Page 17: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

17

Autenticação Usando Autenticação Usando um Objeto Físicoum Objeto Físico

Cartões de plásticoCartões de plástico Cartões de faixa magnética (140 bytes);Cartões de faixa magnética (140 bytes); Cartões com chip:Cartões com chip:

Cartões só com memória - 1KB;Cartões só com memória - 1KB; Cartões com processador: podem interagir com o Cartões com processador: podem interagir com o

sistema remoto.sistema remoto.

Page 18: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

18

Autenticação Usando Biometria (1)Autenticação Usando Biometria (1)

Atributos significativos são extraídos. No exemplo: análise do comprimento

dos dedos.

Que tal fazer molde de mão para atacar?

Cadastramento: identifica características do usuário e digitaliza;

Identificação: Usuário se exibe, sistema faz medição e compara com cadastro

Page 19: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

19

9.5 - Ataques de dentro do Sistema9.5 - Ataques de dentro do SistemaBombas LógicasBombas Lógicas

Alguém com acesso ao computador que se pretendia proteger tem conhecimento especializado.

Programador da empresa escreve programa com potencial para causar danos - bomba lógica; A bomba não estoura desde que ele/ela alimente o

programa diariamente com uma senha; Pode haver bomba-relógio com data para estourar; se programador é despedido, programa não é

alimentado com senha, bomba explode: apaga disco, criptografa arquivos até resolver a situação como re-contratar programador...

Page 20: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

20

Alçapões (Alçapões (Trap doorTrap door))

(a) Código normal (a) Código normal

(b) Código com alçapão inserido(b) Código com alçapão inserido

Para evitar isto manter revisão de código como Para evitar isto manter revisão de código como prática padronizada.prática padronizada.

Page 21: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

21

Conexão Impostora Conexão Impostora (Spoofing)(Spoofing)

(a) Tela de conexão verdadeira(b) Tela de conexão impostoraApós obter (login, senha) o programa impostor envia para

algum lugar, chama o programa original e morre. O usuário fica com a sensação que digitou a senha errada da primeira vez e tenta novamente com sucesso

Page 22: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

22

9.6 – Explorando erros de código9.6 – Explorando erros de códigoTransbordo de Buffer Transbordo de Buffer (Overflow)(Overflow)

A maioria dos Sistemas Operacionais é escrita em C e muitos programas de sistemas. O C não verifica limites de buffers.Seria permitido:

int i;char c[1024];

i = 12000; c[i]= 0;Esta característica é explorada intensamente pelos crackers. A função de biblioteca gets do C é assim! Alguns compiladores avisam que há um gets.

Page 23: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

23

Transbordo de Buffer Transbordo de Buffer (Overflow)(Overflow)

(a) Situação na qual programa principal está executando(b) Depois que procedimento A foi chamado. Imagine que A

requeira nome de arquivo a abrir armazenado em B. Cracker fornece string conveniente no lugar do nome do arquivo.

(c) Transbordo de buffer mostrado em cinza. Abertura de arquivo falha e quando buscar endereço de retorno, este foi trocado por endereço de código colocado no início de B.

Page 24: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

24

Transbordo de Buffer Transbordo de Buffer (2)(2)

Para detectar se um programa tem transbordo de buffer:• Alimentá-lo com dados enormes – salários de 100 dígitos,

nomes de arquivo com 1000 caracteres, etc.• Ao término do programa examina a imagem na memória,

procura a cadeia longa;• Estuda o estado da memória;• Se código fonte disponível na Internet o estudo é facilitado:

layout da pilha é conhecido.

Page 25: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

25

Ataques por injeção de códigoAtaques por injeção de código

Função system gera um shell que executa o comando.Programador preguiçoso usa system p/ copiar arquivo:

Código chamado com parâmetros ‘abc’ ‘xyz’ está ok, mas chamado com ‘abc’ ‘xyz; rm –rf / ’ recursive, force

Page 26: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

26

9.7 - Malware9.7 - Malware

Programas maliciosos :• código transmitido para máquina alvo• código executado lá, causando danos

Antes de 2000 programas maliciosos eram diversão, agora escrito sob encomenda do crime organizado.

Alguns malwares querem se propagar e infectar mais máquinas. Incluem vírus, vermes, cavalos de tróia.

A maioria dos malwares é para Windows, o SO mais disseminado.

Page 27: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

27

TermosTermos

Zumbi – computador invadido com um malware que informa endereço da máquina capturada à máquinas remotas: uma porta dos fundos (back door) permite que a comandem;

Botnet – abreviação de robot networks – grupo de máquinas comandadas.

Keylogger – malware que registra tudo que é digitado e periodicamente envia a máquina remota.

Page 28: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

28

Mocinho x BandidoMocinho x Bandido

Ações provocam reações em sequência. Bandido: Um keylogger obtém sua senha de cartão de

crédito; O criminoso faz compras caras com dados da vítima;

Mocinho: As empresas de cartão desenvolveram programas para verificar perfil de gastos dos usuários – compras fora do perfil são rapidamente identificadas;

Bandido: também obtem perfil do usuário; ajustar compras que não chamem a atenção. Com muitos dados podem roubar a Identidade…

Mocinho: adotar esquemas mais fortes de autenticação. Bandido ….

Page 29: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

29

Trojan Horse - Cavalo de Tróia Trojan Horse - Cavalo de Tróia

Programa livre disponibilizado para usuários inocentes, contém na verdade código destrutivo.

Jogos, tocadores de música, visualizadores especiais de pornografia, e outros programas potencialmente interessantes que são voluntariamente instalados.

Lenda (?) descrita na Obra Odisséia de Homero; associada a conquista de Tróia pelos gregos (1200 ac)

Page 30: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

30

Trojan Horse - Cavalo de Tróia Trojan Horse - Cavalo de Tróia Coloca-se versão adulterada de um programa utilitário no

computador da vítima, e leva o usuário a executar aquele programa. Tendo acesso como usuário comum, tenta a partir daí invadir outras contas, ganhar outros privilégios.

Outra maneira de executar o cavalo de tróia: o cracker insere um programa de mesmo nome de outro conhecido em um diretório buscado pelo path.

Ex: o usuário digita prog. O shell verifica se prog está nos diretórios indicados no path, basta colocá-lo em algum deles.

Page 31: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

31

VírusVírus

• Vírus = programa capaz de se auto-reproduziranexa seu código a um outro programa e

adicionalmente, causa danos

• Objetivos do programador de vírus:• espalhar rapidamente o vírus• ser difícil de detectar e difícil de se livrar

• Como é um programa faz o que qualquer programa pode fazer. Ex:

main() { while(1) fork(); }.

Page 32: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

32

Como Funcionam os Vírus (1)Como Funcionam os Vírus (1)

Vírus escritos provavelmente em linguagem de montagem ou C (enxutos e eficiente);

Inseridos em um outro programa de sua própria máquina;

Programa infectado é distribuído; Vírus dormente até que programa infectado seja

executado, então infecta outros programas; Eventualmente dispara sua carga explosiva , as vezes,

espera um tempo suficiente para contaminação em massa antes de ser notado.

Page 33: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

33

Como Funcionam os Vírus (2)Como Funcionam os Vírus (2)

Examinaremos 7 tipos de Vírus:

1) Vírus Companheiro ;

2) Vírus de programas executáveis (Sobreposição ou parasita);

3) Vírus residente em memória;

4) Vírus de setor de boot;

5) Vírus de Driver de Dispositivo;

6) Vírus de Macro;

7) Vírus de Código Fonte

Page 34: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

34

Vírus CompanheiroVírus Companheiro

Não infecta um programa, não o altera, mas executa quando o outro for executado;

Ex: quando usuário digita prog o DOS procura prog.com e se não encontra procura prog.exe. A maioria dos programas é .exe, então criar um semelhante prog.com que quando termina seu trabalho chama prog.exe - Usuário nem percebe…

Page 35: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

35

Vírus de Programas executáveis (1)Vírus de Programas executáveis (1)

Page 36: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

36

Vírus de Programas executáveis (2)Vírus de Programas executáveis (2)

Quando a infecção sobrepõe seu código ao do programa original, chama-se vírus de sobreposição e é difícil não ser detectado:

• O código chamado não faz o que se propõe• O tamanho do executável se altera (menor ou maior que o vírus)• A data e hora de acesso se alteram.

Um bom vírus deveria disfarçar tudo isto…

Não são os mais comuns.

Page 37: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

37

a) Um programa executável

b) Com um vírus à frente: copia prog p/ RAM, escreve a si mesmo à frente do arquivo, copia o prog depois. Realocar end. Início.

Vírus de Programas Executáveis (3) Vírus de Programas Executáveis (3)

Os vírus parasitas se acoplam ao programa mas permitem que ele execute normalmente

Page 38: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

38

c) Com um vírus no final, simplesmente copia-se no fim do arquivo, realoca end. Inicial.

d) Com vírus espalhado pelos espaços livres dentro do programa. (Windows: segmentos são multiplos de 512B, completados com zero) Vantagem: não alteram o tamanho do arquivo.

Vírus de Programas Executáveis (4)Vírus de Programas Executáveis (4)

Page 39: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

39

BIOS traz MBR para RAM e executa-o.

MBR determina partição ativa, lê primeiro setor, setor de boot e executa. O prog do setor de boot carrega o SO.

Vírus de setor de boot copia verdadeiro setor de boot em local seguro no disco e quando terminar seu trabalho sujo, carrega o SO e normalmente também fica residente na memória.

Depois da carga do SO como o vírus recupera o controle?

Vírus de Setor de BootVírus de Setor de Boot

Page 40: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

40

Modo usual: o Windows carrega os drivers um por um e determina o vetor de interrupção. O vírus faz os vetores apontarem para ele se quiser o controle a cada interrupção.

Vírus de Setor de BootVírus de Setor de Boot

a) Depois do vírus ter capturado os vetores de interrupção e de desvio de controle da CPU

Page 41: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

41

b) Quando SO carrega o driver da impressora, retoma o vetor de interrupção; a interrupção de relógio era do vírus, ele entra e retoma o controle do quiser…

c) Depois do vírus ter percebido a perda do vetor de interrupção da impressora e tê-lo recuperado

Vírus de Setor de BootVírus de Setor de Boot

Page 42: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

42

Vírus de drivers de dispositivo:Vírus de drivers de dispositivo:

Infecta o driver ( que é um código executável);

Quando SO o carrega, carrega o vírus; Se driver no modo núcleo, vírus faz o que quiser: pode tomar o desvio para

chamadas de sistema;

Vírus de macros:Vírus de macros: Programas como word e excel permitem a execução de comandos associados aos

documentos: quando se abre um documento, a macro associada pode ser executada;

Fáceis de escrever e se espalhar (o que é ruim para a reputação dos escritores de vírus!); Para uma plataforma específica.

Vírus de drivers e de macrosVírus de drivers e de macros

Page 43: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

43

Os mais portáveis.

Inserir em ponto estratégico a chamada ao vírus diretamente no código fonte disponível, :

run_virus(); ;

Instalar o include apropriado:

#include <virus.h>

Possível de disparar remotamente.

Vírus de código fonteVírus de código fonte

Page 44: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

44

Como os Vírus se DisseminamComo os Vírus se Disseminam

Vírus colocados onde há chance de serem copiados (ex: sites shareware)

Quando copiados infectam programas no disco rígido e podem tentar se disseminar na rede local;

Anexam-se à mensagens eletrônicas aparentemente inocentes e que quando executados, usam listas de contatos para replicar;• Ex: Vírus “I love you” em 2000, causou US$ 1bi de

prejuízo.• Vírus para ActiveX do InternetExplorer fizeram valer o

apelido de Internet Exploder.

Page 45: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

45

O Verme da InternetO Verme da Internet

Em 1988, Robert Tappan Morris, estudante de pós de Cornell escreveu um programa que explorava erros descobertos por ele no Unix e se replicaria em segundos em cada máquina que pudesse ter acesso.

(Filho de especialista de Segurança da Agência Nacional americana que decifrava códigos, sr. Morris).

Derrubou milhares de computadores por todo o mundol

Page 46: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

46

O Verme da InternetO Verme da Internet

O verme consiste de dois programas: O iniciador (bootstrap) para carregar o verme (tinha 99

linhas em C, compilado e executado no sistema atacado);

• Uma vez em execução, conectava-se à maquina de onde veio e transferia a parte principal do verme;

O verme em si (procurava a tabela de roteamento da máquina para se disseminar).

• como movimentam-se sozinhos, vermes tendem a se espalhar mais rápido que vírus.

Page 47: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

47

O Verme da InternetO Verme da Internet Consequencias:

Morris foi julgado e condenado a 3 anos de condicional com custas de US$150.000.

Foi criada a CERT – Computer Emergency Response Team que centraliza e relata tentativas de invasão.

Após o episódio Morris concluiu seu PhD em Harvard e hoje é professor do MIT atuando no grupo de Sistemas Operacionais Distribuídos e Paralelos.

Page 48: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

48

Laboratórios que desenvolvem anti-vírus devem identificar algum núcleo de código do vírus e usar este núcleo como assinatura do vírus: buscar este trecho em algum arquivo do disco, ou

Guardar tamanho de todos os arquivos e verificar se cresceu desde a última verificação.

Para escapar os vírus comprimem (zip) prog original, ou até se auto-cifram para não corresponder ao padrão do banco de dados de código do anti-vírus.

9.8 - Defesas9.8 - DefesasTécnicas Antivírus e Antiantivírus (1)Técnicas Antivírus e Antiantivírus (1)

Page 49: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

49

a) Um programa ;b) Programa infectadoc) Programa infectado comprimido – antivírus procura

código, por isto…

Técnicas Antivírus e Antiantivírus (2)Técnicas Antivírus e Antiantivírus (2)

Page 50: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

50

d) Vírus criptografado – o antivírus ainda poderia usar os progs em texto plano como assinatura do vírus…

e) Vírus comprimido com o código de compressão criptografado – antivírus procura pelo decriptador …

Técnicas Antivírus e Antiantivírus (2)Técnicas Antivírus e Antiantivírus (2)

Page 51: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

51

Exemplos de um vírus polimórfico

Todos esses exemplos fazem a mesma coisa

Técnicas Antivírus e Antiantivírus (3)Técnicas Antivírus e Antiantivírus (3)

Os vírus podem sofrer alguma mutação durante a cópia. Suponha que no procedimento de decifragem há o cálculo: X=(A+B+C-4).

(Assembly: MOV op1, op2 é op2=op1).

Page 52: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

52

Outras abordagens para detecção de vírus: Verificadores de integridade – checksum guardado de

cada arquivo original e conferido ao rodar o antivírus (como bandido burla? Como mocinho defende?);

Verificadores de comportamento: antivírus fica residente na memória monitorando ações – pode capturar as chamadas de sistema para investigar. Vírus e anti-vírus residentes!!!

Prevenção contra vírus : é melhor prevenir do que remediar.

Técnicas Antivírus e Antiantivírus (4)Técnicas Antivírus e Antiantivírus (4)

Page 53: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

53

Para evitar infecção:

um bom SO; instalar apenas softwares originais, de fabricante

confiável – resista a tentação de instalar qqr sw; usar software antivírus com atualizações; não clicar em anexos às mensagens eletrônicas fazer cópias de segurança com frequência, manter

gerações de cópias em diferentes meios.

Recuperação de um ataque de vírus parar o computador, reiniciar de disco seguro, executar

antivírus

Técnicas Antivírus e Antiantivírus (4)Técnicas Antivírus e Antiantivírus (4)

Page 54: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

54

Código Móvel (1) Código Móvel (1)

Exemplos de códigos móveis: Applets – pequenos programas que vêm com página

web: O termo foi introduzido pelo AppleScript em 1993. Agentes – programa lançado para realizar tarefa e

emitir um relatório. PostScript – escrito em PostScript executado na

impressora.

São movidos para o computador , realizam sua tarefa e prosseguem - tem o poder que tem o usuário que o trouxe.

Há métodos propostos para a execução de códigos móveis que tenta torná-los menos perigosos.

Page 55: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

55

Código Móvel (2) Código Móvel (2)

Caixa de Areia (sandboxing): tenta confinar cada applet a um intervalo limitado de endereços virtuais gerado em tempo de execução.

É difícil verificar se o salto pode ser realizado no caso de Jumps dinâmicos, quando o endereço é calculado em tempo de execução, tipo JMP (R1).

Na mesma caixa todos os endereços tem o mesmo prefixo – por ex, os 8 primeiros bits. Verificar se os saltos dinâmicos cairão em endereço válido.

Page 56: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

56

Código Móvel (2) Código Móvel (2)

(a) Memória (232)dividida em 256 caixas de areia de 16MB. Não pode fazer referências p/ fora da caixa.

S2 = o prefixo.S1 = endereço de destino.SHR – shift para direita para isolar o prefixo

4 linhas inseridas antes de um jump dinâmico

Page 57: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

57

Código Móvel (3)Código Móvel (3)

Applets podem ser interpretadas por navegador Web

Exemplo: applets JVM – o interpretador verifica se endereço válido

Segundo método para execução de applets não confiáveis: Utilização de interpretação.

Page 58: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

58

Segurança em Java (1)Segurança em Java (1)

Uma linguagem segura: não tem ponteiros, conversão de tipos, alocação de memória controlada pelo usuário, referências a vetores verificadas em t de execução.

A verificação testa:

1. Applet tenta forjar ponteiros?

2. Viola restrições de acesso em membros de classes privadas?

3. Faz mau uso do tipo de uma variável?

4. Geração transbordo/esvaziamento na pilha?

5. Converte ilegalmente variáveis de um tipo para outro tipo?

Page 59: 1 Segurança Capítulo 9 9.1 O ambiente de segurança 9.2 Criptografia básica 9.3 Mecanismos de proteção 9.4 Autenticação 9.5 Ataques de dentro do sistema

59

Cada usuário pode criar uma política de segurança a partir de uma lista de regras.

Uma ação permite acesso da applet de determinada origem, assinada por alguém, a determinado arquivo, aos arquivos de um diretório, ou recursivamente a partir de diretório.

Segurança em Java (2)Segurança em Java (2)

Exemplos de proteção que podem ser especificados com o JDK 1.2