Especialização em Segurança da Informação Segurança em Aplicações 3. Principais Ataques às...

Post on 17-Apr-2015

109 views 0 download

Transcript of Especialização em Segurança da Informação Segurança em Aplicações 3. Principais Ataques às...

Especialização em Segurança da Informação

Segurança em Aplicações3. Principais Ataques às Aplicações

Márcio Aurélio Ribeiro Moreiramarcio.moreira@uniminas.brhttp://si.uniminas.br/~marcio/

Pós-SI – 4ª Turma – 2008

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 2

Estrutura típica de aplicações

WebServer(DMZ)

`

Firewall

Clients

DatabaseServer

ApplicationServer

Pro

duct

ion

VLA

N (

switc

h)

Bac

kend

VLA

N (

switc

h)

Privated AreasPublic Areas

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 3

Principais pontos de ataque

Áreas públicas:Vantagem: Facilidade de ataqueDesvantagem: Baixo retornoAlvos e ataques:

Clientes: Roubo de informaçõesLinks: Coleta de pacotesWebservers: Negação de serviço

Áreas restritas:Vantagem: Alto retornoDesvantagem: ComplexidadeAlvos e ataques:

Firewall: Negação de serviçoS.Aplicação: Violação de acessoS.Banco: Violação de acesso

WebServer(DMZ)

`

Firewall

Clients

DatabaseServer

ApplicationServer

Pro

duct

ion

VLA

N (

switc

h)

Bac

kend

VLA

N (

switc

h)

Privated AreasPublic Areas

FácilBaixo Retorno

DifícilRentável

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 4

Principais vulnerabilidades

Áreas públicas:Baixo conhecimento dos usuáriosBaixo nível de proteção das estaçõesUso de protocolos inseguros ou frágeis

Áreas restritas:Gestão inadequada de usuáriosGestão inadequada de perfisInterfaces inseguras entre sistemasServidores mal configuradosAplicações mal escritas

WebServer(DMZ)

`

Clients

Public Areas

Firewall

DatabaseServer

ApplicationServer

Pro

duct

ion

VLA

N (

switc

h)

Bac

ken

d V

LAN

(sw

itch)

Privated Areas

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 5

Explorando vulnerabilidades públicas

Explorando a fragilidade do usuário:Cavalo de tróia, vírus/verme (seqüestro de sessão)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:Coleta de credenciais (Ethereal)Preparação de ataques a áreas restritasGanhar acesso e controle de servidores

`

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 6

Explorando gestão inadequada

Gestão inadequada de usuáriosUm usuário para cada sistema ou aplicaçãoUsuários demitidos, mas os acessos nãoAcumulação de acessos durante a carreiraFalta de padronizações (processos adequados)

Gestão inadequada de perfisNivelar perfil pela maior necessidadeAcumulação de perfis durante a carreiraIntegração de parceiros, terceiros, visitantes, etc.

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 7

Explorando servidores mal configurados

Trocando módulos e pacotes de correçõesInterceptando chamadas de sistemaExplorando Rootkits (kernel forjado)Explorando Condições de Corrida

Ganhar privilégios indevidos ou negar o serviço

Buffer OverflowAtacar protocolos frágeisAtacar utilitários frágeis

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 8

Explorando interfaces ruins

A integração de sistemas é muito comumComo sistemas heterogêneos podem

conversar entre si?Solução comum:

Arquivos texto ASCIIArmazenado em pastas comuns aos sistemasTransportados 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

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 9

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 acessoCapturar áreas de memória (memory dump)

Explorar falta de rastreabilidade e consistência:Usar credenciais válidas para ações ilícitas

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 10

Explorando aplicações web

Inspeção de pacotes: usar https com sslKeyloggers: usar teclado virtualExplorar portas: usar firewallEspalhar vírus e trojan: usar antivírusSites clonados: digite o endereçoE-mails falsos:

Não abra, use confirmação de remetente, etc.Utilize e-mails seguros (cifrados e autenticados)

Assistentes virtuais: personalize a página

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 11

Explorando o “man in the middle”

Ataque do homem do meio:Interceptar uma conexãoSeqüestrar a sessãoRecomendações:

Não use proxyUse certificados públicosUse uma entidade certificadora externaUse cartões de números variáveis (tokens)Autentique a estação de origem

Questão: como autenticar dispositivos móveis?

`

Cliente Servidor

Espião

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 12

Buffer Overflow

Exemplo:char nome[30];printf(“Nome: ");gets(nome); // permite o overflow da variávelchar 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!

ClientesClientes

Nome:

Variável nome (RAM): Buffer overflow

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 13

Buffer Overflow - Estratégia

Injetar código nas variáveis das funções:Acessar o shell do SOAbrir portas para ataques posterioresInstalar 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.

Argumentos

Endereço de retorno

Variáveis

Código da função

Retorno

Estrutura de Funções:

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 14

SQL Injection

Idéia: injetar código para ganhar acessoExemplo de autenticação:

SELECT*FROM usuariosWHERE 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 --

LoginLogin

Usuário:

Senha:

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 15

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

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 16

Code Injection

Após ganhar acesso ao SO digite:cat > exs // copia digitação em exs

#!/bin/sh // o shell default é o shA=$1 // atribui o 1º parâmetro à Aeval "ls $A“ // executa ls com conteúdo de A

chmod a+rx exs // permite execução de exsO que acontece se digitarmos?

./exs ".;chmod o+r *“O caractere “;” é um separador de

comandos do shell do linux e unix

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 17

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

Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 18

O que fazer?

Proteger a infra-estrutura:Segurança de perímetro (Firewall, IDS, IPS, etc.)Segurança na instalação, configuração e manutençãoAtualização segura de SO e serviçosAvaliação periódica de segurança (Ethical Hacking)Monitoramento contínuo de log

Proteger as aplicações:Processo de desenvolvimento seguro de desenvolvimentoAutenticação centralizadaAdote padrões de comunicação e conexão com DBMSProcesso de garantia da qualidade (avaliações periódicas)