A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Eduardo Mazza Max José Lins Timóteo

Apresentações semelhantes


Apresentação em tema: "Eduardo Mazza Max José Lins Timóteo"— Transcrição da apresentação:

1 Eduardo Mazza Max José Lins Timóteo
Buffer overflow Eduardo Mazza Max José Lins Timóteo

2 Ameaças digitais Vírus SQL Injection Autenticação falsa
Vírus tradicional Trojan [Worm] SQL Injection Autenticação falsa Senha de fácil acesso Setup sem senha que engana

3 Definição O que é buffer overflow Tipos mais comuns
Ultrapassa o tamanho do buffer Tipos mais comuns [Stack] Heap Necessita de bons conhecimentos

4 Aplicações Worms Derrubar um servidor Derrubar uma máquina comum
Controle da máquina

5 Worms Sem uma ação do usuário
Potencial alto (uma falha, várias máquinas) N para 1 e 1 para N

6 Derrubar um servidor Não precisa esgotar recursos
Derruba vários de uma vez só

7 Controle da máquina Controlar X derrubar
Nível de controle pode ser alto Até maior que o do usuário Garantir controle melhor ao invadir

8 Vantagens dessa técnica
Anti-vírus Firewall Erro do programador Complexidade do sistema operacional

9 Anti-vírus Objetivos diferentes
Geralmente analisa código de um arquivo

10 Firewall Computador servidor Computador cliente
É necessário manter portas abertas Buffer overflow despercebido Computador cliente Para que aguardar conexões? Alguma utilidade contra buffer overflow Porém: HTTP

11 Erro do programador Exemplo void teste( char *s ) { char nome[200];
strcpy(nome,s); printf("Nome eh %s\n",nome); }

12 Erro do programador Linguagens de programação Alto nível x C++
Alto nível (Java, Visual basic, C#,...) Alto nível, mas não tão alto (C++) Alto nível x C++

13 SO complexo Má configuração de serviços
Serviços habilitados por padrão Netstat –na

14 Dificuldades da técnica
Organização da memória Onde existe a falha? Valor do ponteiro ASSEMBLY

15 Funcionamento buffer NOP NOP NOP NOP retorno XXXXXXXX NOP NOP
instrução instrução

16 Exemplo void testar(char *codigo){ char texto[8];
strcpy(texto,codigo); return; }

17 Exemplo int main(int argc, char* argv[]) { const int N = 160000;
char b[N]; for(int i = 0;i < N-1;i=i+2){ b[i] = '\x90'; b[i+1] = '\x90'; }

18 Exemplo b[12] = '\x9a'; b[13] = '\x8e'; b[14] = '\x10';
b[30] = '\xea '; b[31] = '\x9a'; b[32] = '\x8e'; b[33] = '\x10'; b[34] = '\x00'; b[35] = '\x1b'; b[36] = '\x00';

19 Prevenção Atualizações Escolha da linguagem
Alto nível Nível não tão alto Utilização de funções mais seguras Filtrar os dados NOPs ADD AX,1, SUB AX,1

20 Conclusão Atacante Vítima
É uma técnica difícil, mas muito eficiente quando se consegue implementar Não se limita a um único tipo de falha Várias possibilidades Vítima É uma dor de cabeça Basta estar conectado

21 Referências (135 págs.)


Carregar ppt "Eduardo Mazza Max José Lins Timóteo"

Apresentações semelhantes


Anúncios Google