Segurança em Aplicações 3. Principais Ataques

Slides:



Advertisements
Apresentações semelhantes
Instalação e Configuração
Advertisements

Introdução aos Sistemas de Informações Módulo 6
Pode ser uma máquina emulada ou uma máquina real na rede.
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Exploits Nome:Arlindo Leal Boiça NetoRA: Clarice C. Calil MarafiottiRA: Rafael Santos RibeiroRA: Thiago Y.I.TakahashiRA:
Prof. Carlos Roberto das Virgens
Bruno Rafael de Oliveira Rodrigues
Vírus.
Mecanismo de Proteção (Prevenção e Detecção)
Modelos de Comunicação em Sistemas Distribuídos
CPU – based DoS Attacks Against SIP Servers
Administrando usuários 1 Controle de contas de usuários 1.
Conceitos Básicos sobre o S.O.
DNS Introdução.
Esdras Degaspari Leite
Estudo de Caso 1: UNIX e LINUX
Simple Network Management Protocol (SNMP)
GERENCIAMENTO DE REDES
GERENCIAMENTO DE REDES
Emitindo seu Certificado Digital
Tratamento de Ficheiros
Segurança em Aplicações 3. Principais Ataques às Aplicações
Segurança em Aplicações 5. Melhores Práticas de Programação
Ataques à Aplicações Prof.: Márcio Aurélio R. Moreira
Segurança Completa, como nehuma outra solução tem.
Monitoramento de logs e registros de sistemas
Aurélio V. Schuelter Ameaças Virtuais Aurélio V. Schuelter
Informática Básica Unidade IV.
Marcos Aurélio Rodrigues
Trabalho – 03/09/ FIM.
Desenvolvimento de Projetos e Aplicações Web
Utilitários de Redes Prof. Andréa Chicri Torga Adaptações
Especialização em Segurança da Informação Segurança em Aplicações 5. Melhores Práticas de Programação Márcio Aurélio Ribeiro Moreira
Redes de Computadores Prof. Rafael Silva.
Prof. André Leon S. Gradvohl, Dr.
1.1 – Conceitos Básicos Definições e Propriedades; Ameaças; Ataques;
Classificação de Ataques
Segurança na Web SSL - Secure Socket Level TLS - Transport Layer Security SET – Secure Electronic Transaction.
Aula R Prof. Naércio Filho Técnico em Informática
Introdução ao Desenvolvimento Web
CADEIA DE CARACTERES (Strings)
Segurança e auditoria de sistemas Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
AULA 14 -Principais formas de ameaças em sistemas computacionais
Segurança de Redes Wayne Palmeira.
Como fazer um SQL Injection Marco Ferreira Rui Cunha
A autoria - II.
Treinamento AJAX Segurança
Aula 8 – Segurança em Redes de Computadores
Perigos e cuidados Daniela Balena
Gestão de Segurança em Comércio Eletrônico
GERENCIAMENTO DE REDES UTILIZANDO O PROTOCOLO SNMP
Programação WEB Variáveis Globais Get x Post Manipulação de Arquivos
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Especialização em Segurança da Informação MELHORES PRÁTICAS DE PROGRAMAÇÃO Carlos/Cleofas/Rafael/StéphanasSegurança em Aplicações.
Segurança e Auditoria de Sistemas
FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 04 Prof. André Lucio.
1. Conceitos de Segurança
Segurança da Informação
Sistema de Identificação OpenID
Segurança de dados Palestrante: Pablo Marques. Sumário O que é segurança? Quem é responsável pela segurança? Engenharia Social Formas de ataque Como se.
1.2 – Tipos de Ataques Cavalo de Tróia; Backdoors; Spoofing; Sniffing;
Prof.°: João Henrique Disciplina: SOR II
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
18/04/2017 MODULO: Sistemas Operacional Aula 09 –Vírus e Antivírus
Arquitetura de segurança – Redes
FIREWALL.
Tema 2: Técnicas de desenvolvimento seguro
IDS (Intrusion Detection System) Sistemas de Detecção de Intrusão
Segurança Lógica e Física de Redes Gestão da Segurança da Informação Criptografia Proteção de Perímetro Anderson Aparecido Alves da Silva – Aula 12_2 1.
Transcrição da apresentação:

Segurança em Aplicações 3. Principais Ataques Márcio Aurélio Ribeiro Moreira marcio.moreira@pitagoras.com.br http://si.lopesgazzani.br/docentes/marcio/

Estrutura típica de aplicações

Principais pontos de ataque Áreas públicas: Vantagem: Facilidade de ataque Desvantagem: Baixo retorno Alvos e ataques: Clientes: Roubo de informações Links: Coleta de pacotes Webservers: Negação de serviço Áreas restritas: Vantagem: Alto retorno Desvantagem: Complexidade Firewall: Negação de serviço S.Aplicação: Violação de acesso S.Banco: Violação de acesso Baixo Retorno Fácil Difícil Rentável

Principais vulnerabilidades Áreas públicas: Baixo conhecimento dos usuários Baixo nível de proteção das estações Uso de protocolos inseguros ou frágeis Áreas restritas: Gestão inadequada de usuários Gestão inadequada de perfis Integrações inseguras entre sistemas Servidores mal configurados Aplicações mal escritas

Resumo das ameaças Ameaças de invasão: Intrusão: Código malicioso: Atividades de varredura: pessoas procurando formas de acessar seus serviços ou aplicações Intrusão: Tentativa bem sucedida de obter acesso à uma máquina que não deveria ter Destruição: Perda de dados ou informações (após a intrusão) Código malicioso: Vírus, verme, etc. Negação de Serviço (DoS: Denial-of-Service): Impedir que o serviço seja oferecido aos usuários Ex.: E-mails bomba (lotam o servidor de e-mails forjados) Forjar (spoofing): Oferecer serviços ou aplicações que parecem com os verdadeiros para obter informações (especialmente credenciais) SPAM: Espalhar e-mails ou mensagens não desejadas pelas pessoas

Explorando vulnerabilidades públicas Explorando a fragilidade do usuário: Cavalo de Tróia (Trojan horse) e vírus/verme/malware Sequestro de sessão (session hijack) Engenharia social (obter informações privadas) Fragilidade de senhas Explorando a fragilidade da máquina: Keyloggers (interceptadores de teclado e mouse) Tomando o controle da máquina do usuário Explorando pacotes de rede (sniffing): Coleta de credenciais (Ethereal) Preparação de ataques a áreas restritas Ganhar acesso e controle de servidores

Explorando gestão inadequada Gestão inadequada de usuários Um usuário para cada sistema ou aplicação Usuários demitidos, mas os acessos não Acumulação de acessos durante a carreira Falta de padronizações (processos adequados) Gestão inadequada de perfis Nivelar perfil pela maior necessidade Acumulação de perfis durante a carreira Integração de parceiros, terceiros, visitantes, etc.

Explorando servidores mal configurados Trocando módulos e pacotes de correções Interceptando chamadas de sistema Explorando Rootkits (kernel forjado) Explorando Condições de Corrida Ganhar privilégios indevidos ou negar o serviço Buffer Overflow Atacar protocolos frágeis Atacar utilitários frágeis

Explorando integrações ruins A integração de sistemas é muito comum Como sistemas heterogêneos podem conversar entre si? Solução comum: Arquivos texto (ASCII), planilhas, etc. Armazenado em pastas comuns aos sistemas Transportados em mídias ou links inseguros Interface humana (lê em um e digita no outro) Ataques: Interceptação, cópia, alteração, inclusão e exclusão

Explorando aplicações mal escritas Redundâncias de autenticações: n aplicações  n bases de autenticações Injeção de código: SQL injection: Forjar acessos válidos (ataque ao where) Ganhar acesso indevido (console remoto) Code injection: Forjar acessos válidos (ataque ao if) Buffer overflow: instalando portas de acesso Capturar áreas de memória (memory dump) Explorar falta de rastreabilidade e consistência: Usar credenciais válidas para ações ilícitas

Explorando aplicações web Inspeção de pacotes: usar https com ssl Keyloggers: usar teclado virtual Explorar portas: usar firewall Espalhar vírus e trojan: usar antivírus Sites clonados: digite o endereço E-mails falsos: Não abra, use confirmação de remetente, etc. Utilize e-mails seguros (cifrados e autenticados) Assistentes virtuais: personalize a página

10 principais ataques para web Injeção (código e SQL) Cross Site Scripting (XSS) Quebra de autenticação e de gestão de sessão Falta de segurança em referências diretas a objetos Forjar requisições para trocas de sites (CSRF: Cross Site Request Forgery) Configuração inadequada de servidores Falhas de controle de acesso as URLs restritas Encaminhamentos e redirecionamentos inválidos Baixo nível de criptografia de acesso à Storages Insuficiência na proteção da camada de transporte da rede

Explorando o “man in the middle” Ataque do homem do meio: Interceptar uma conexão Seqüestrar a sessão Recomendações: Não use proxy Use certificados públicos Use uma entidade certificadora externa Use cartões de números variáveis (tokens) Autentique a estação de origem Questão: como autenticar dispositivos móveis?

XSS (Cross Site Scripting) Ideia: Injeção de código (JavaScript, VBScript, ActiveX, HTML ou Flash) por um espião, do lado do cliente, nas páginas que serão utilizadas por outros usuários Meios utilizados: Páginas que serão acessadas, cookies, e-mails com links para áreas intermediárias, etc. Paradoxo: Para evitar o ataque o usuários deve desabilitar a execução de scripts, mas com isto perde funcionalidades que podem ser imprescindíveis Exemplo trivial: Digitar <script>alert(“hello")</script>, numa caixa de texto de busca

Buffer Overflow Exemplo: Se faltar memória: Erro char nome[30]; printf(“Nome: "); gets(nome); // permite o overflow da variável char b[100]; strcpy(nome, b); // copia os 100 bytes de b em nome Se faltar memória: Erro Se a linguagem tratar: Erro ou exceção Se a linguagem não tratar? Existem vários ataques que exploram isto!

Buffer Overflow - Estratégia Injetar código nas variáveis das funções: Acessar o shell do SO Abrir portas para ataques posteriores Instalar ou abrir servidores de acesso remoto Mudar o endereço de retorno Disparar o código por outra injeção Vulnerabilidades conhecidas: TCP/IP, IIS (ISAPI), Apache, Sendmail, Linux e Unix (DNS: update de zonas), etc. Estrutura de Funções: Argumentos Endereço de retorno Variáveis Código da função Retorno

Exemplo de código de ataque #include <stdio.h> #include <string.h> char shellcode[ ] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd" "\x80\xe8\xdc\xff\xff\xff/bin/sh"; char large_string[128]; int main(int argc, char **argv){ char buffer[96]; int i; long *long_ptr = (long *) large_string; for (i = 0; i < 32; i++) *(long_ptr + i) = (int) buffer; for (i = 0; i < (int) strlen(shellcode); i++) large_string[i] = shellcode[i]; strcpy(buffer, large_string); return 0; }

Como obter o código de ataque? Programando em Assembler e pegando os códigos hexa do executável Utilizando o DEBUG:

SQL Injection Idéia: injetar código para ganhar acesso Exemplo de autenticação: SELECT * FROM usuarios WHERE usuario = '$usuario' AND senha = '$senha' Sintaxe SQL: ' (apóstrofo) Terminador de strings -- (2 menos) Comentários (ignora o restante) O que acontece se digitarmos no campo usuário? x' OR 1=1 --

SQL Injection - Exemplos No SQL Server: '; EXEC xp_cmdshell 'net stop sqlserver', no_output -- No lugar do comando (net stop ...), podemos colocar: Net user admin2 /add && net localgroup administrators admin2 /add && net localgroup ORA_DBA admin2 /add ' UNION SELECT id, name, '', 0,'' FROM sysobjects WHERE xtype='U' -- Injeção no get (passagem de parâmetros) em url: http://windefense/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25login%25'— Referências: www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt

Code Injection Após ganhar acesso ao SO digite: cat > exs // copia digitação em exs #!/bin/sh // o shell default é o sh A=$1 // atribui o 1º parâmetro à A eval "ls $A“ // executa ls com conteúdo de A chmod a+rx exs // permite execução de exs O que acontece se digitarmos? ./exs ".;chmod o+r *“ O caractere “;” é um separador de comandos do shell do linux e unix

Condições de corrida Os arquivos temporários são gerados por funções: name=maketemp("/tmp/gs_XXXXXXXX"); fp=fopen(name,"w"); Eles herdam os privilégios de seus geradores O que podemos colocar em arquivos temporários? O que ocorre se no momento de uma condição de corrida mudarmos a path do arquivo? Ex: symlink /tmp/gs_12345A -> /etc/passwd As condições de corrida podem ocorrer: Memória, arquivos ou sinais. Referência: http://projects.cerias.purdue.edu/secprog/class2/5.Links_&_Races.pdf

O que fazer? Proteger a infra-estrutura: Proteger as aplicações: Segurança de perímetro (Firewall, IDS, IPS, etc.) Segurança na instalação, configuração e manutenção Atualização segura de SO e serviços Avaliação periódica de segurança (Ethical Hacking) Monitoramento contínuo de log Proteger as aplicações: Processo de desenvolvimento seguro de desenvolvimento Autenticação centralizada Adote padrões de comunicação e conexão com DBMS Processo de garantia da qualidade (avaliações periódicas)

Taxonomias (critérios de classificação) MANET: Mobile ad-hoc network Classifica: Vulnerabilidades, Desafios, Ataques e Aplicações MANET: Vulnerabilities, Challenges, Attacks, Application - Priyanka Goyal, Vinti Parmar e Rahul Rishi AVOIDIT: Ataques, Vetores, Impactos Operacionais, Defesa, Impacto de Informações e Alvos AVOIDIT: A Cyber Attack Taxonomy - Chris Simmons, Charles Ellis, Sajjan Shiva, Dipankar Dasgupta, Qishi Wu Tratado sobre o tema: A taxonomy of computer attacks with applications to wireless networks - Daniel Lowry Lough

MANET Vulnerabilidades Desafios Ataques Aplicações Falta de gestão centralizada Roteamento Externos Militares Disponibilidade de recursos Segurança e Confiabilidade Internos Comerciais Escalabilidade Qualidade de Serviço Negação de serviço Locais Falta de cooperação Inter redes Falsidade ideológica (Impersonation) Pessoais Topologias dinâmicas Consumo de Energia Observação de informações confidenciais (Eavesdropping) Comunicação Limitação de fonte de energia Propagação (multicast) De roteamento Restrições de largura de banda Localização apoiada por roteamento Ataque do buraco negro Espiões dentro da rede Ataque do buraco de minhoca Fronteiras não definidas Ataque do buraco cinza Ataque de resposta Encravamento (jamming) Ataque do homem do meio