Especialização em Segurança da Informação
Segurança em Aplicações3. Principais Ataques às Aplicações
Márcio Aurélio Ribeiro [email protected]://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)
Top Related