• Nenhum resultado encontrado

SEG. EM SISTEMAS E REDES. Vulnerabilidades

N/A
N/A
Protected

Academic year: 2022

Share "SEG. EM SISTEMAS E REDES. Vulnerabilidades"

Copied!
51
0
0

Texto

(1)

SEG. EM SISTEMAS E REDES

Vulnerabilidades

Prof. Ulisses Cotta Cavalca

<ulisses.cotta@gmail.com>

Belo Horizonte/MG

(2)

SUMÁRIO

1) Introdução

2) Vulnerabilidades em sistemas 3) Vulnerabilidades em redes

4) Dicionários de vulnerabilidades

(3)

1. INTRODUÇÃO

Introdução

Principais erros

Principais personagens

Anatomia de um ataque

Vulnerabilidades

(4)

1. INTRODUÇÃO

1.1. Principais erros

Conectar sistemas na Internet sem testá-los;

Conectar com contas e senhas padrão.

Usuário: teste; Senha: teste123

Não atualizar erros de segurança, quando estes são encontrados e divulgados;

Deixar que pessoas sem o devido treinamento cuidem da segurança;

Deixar serviços desnecessários nos computadores: ftpd, telnetd, funger, RPC, mail, Rservices;

Manter no servidor pacotes que possibilitam o invasor

(5)

1. INTRODUÇÃO

1.1. Principais erros

Manter no servidor ligado à Internet a base de arquivos da empresa, não diferenciados serviços de LAN e WAN;

Conhecer a segurança física, mas desconhecer (ou inexistir) a segurança da informação;

Falta de um ambiente de laboratório, ou de teste;

Manter um firewall protegendo a rede, acreditando que ele é suficiente;

Permitir o uso indiscriminado de protocolos específicos, como o ICMP;

Implementar firewall com políticas genéricas;

(6)

1. INTRODUÇÃO

1.1. Principais erros

Usar protocolos descriptografados para administrar sistemas remotos, firewalls, etc;

Não idealizar perímetros para melhorar a segurança da rede;

Não ter concentrados de logs e analisadores dos registros de logs;

Possuir um concentrador de logs, mas com os horários dos servidores não sincronizados;

Achar que esquecendo os problemas eles somem rapidamente;

Falhar na implementação de antivírus ou lista de vírus;

Falhas na capacitação e conscientização dos usuários.

(7)

1. INTRODUÇÃO

1.2. Principais personagens

Hacker

Especialista em informática, “problem solver”, descobre falhas e cria exploit;

Possui “ética hacker”;

Cracker

Especialista em informática,”problem creator”, hacker malicioso, criminoso;

Script kiddies

Com pouco conhecimento de informática, usam exploits criados pelos hackers e executam ataques na Internet;

(8)

1. INTRODUÇÃO

1.2. Principais personagens

Lammer

Considerado o nível mais baixo, ou seja, indivíduo que não

conhece o poder do computador e se auto denomina um hacker, ou pensa ser um cracker e sai invadindo hosts pela Internet;

Menor conhecimento que um script kiddie;

Newbie

Aprendiz do hacker, pergunta muito, é ignorado e ridicularizado;

Larva

Indivíduo capaz de eecutar invasões a partir de “receitas de bolo” e exploits encontrados na Internet, mas diferente do script kiddies, já são capazes de compreender o que estão fazendo e até de

(9)

1. INTRODUÇÃO

1.3. Anatomia de um ataque

Teste de penetração (pen test)

Também denominado teste de invasão.

Consiste em apurar o quanto difícil é inadir uma rede de computadores ou um sistema;

Pode revelar:

Que tipo de informação pode ser obtida fora da organização, sem a

necessariamente conectar À rede da empresa ao acessá-la fisicamente;

Como os sistemas reagem a um ataque;

Se é possível acessar o sistema com informações disponíveis ou já existentes;

Informações que possam se tornar acessíveis em caso de pane no sistema

(10)

1. INTRODUÇÃO

1.3. Anatomia de um ataque

Teste de penetração (pen test)

Abordagens:

Teste de penetração zero (black box)

Grupo de teste não tem nenhuma informação sobre o sistema alvo

Teste de invasão mais realístico possível

Teste de penetração parcial (gray box)

Organização alvo fornece informações que um atacante pode encontrar;

Usado se o objetivo for testar um novo tipo de ataque, ou focar em um host específico;

Informações como topologias de rede, política de segurança e inventário

Teste de conhecimento (white box)

Simulação do trabalho de um atacante que possui grande conhecimento da

(11)

1. INTRODUÇÃO

1.3. Anatomia de um ataque

Teste de penetração (pen test)

Fases:

Fase de descoberta

Coleta de informações da organização

Fase de enumeração

Complementa da fase de descoberta, com a coleta de informações como nomes de usuários, informações de compartilhamentos, aplicativos,

plataformas, infraestruturas, etc.

Fase de mapeamento de vulnerabilidades

Estabelecimento de relação das informações obtidas

Fase de exploração

(12)

1. INTRODUÇÃO

1.4. Vulnerabilidades

Evidência ou fragiliade que eleva o grau de exposição do ativo, aumentando a probabilidade de sucesso da investida de uma ameaça

Físicas: cabeamento de baixa qualidade, ausência de fragmentadora de papel, instalação elétrica mal

dimensionada;

Tecnológicas: defeito de software, sistema operacional desatualizado, senha fraca;

Humanas: falta de conscientização dos usuários, ausência de rotina de backup, descuido e despreparo.

(13)

1. INTRODUÇÃO

1.4. Vulnerabilidades

Sob o ponto de vista tecnológico

São falhas presentes em um programa, protocolo ou sistema operacional;

Decorrem de erros de especificação ou de programação

Prevenção para erros de programação:

Aplicação de patches ou hotfix

Aplicação de service pack ou maintenance level

(14)

2. VULNERABILIDADES EM SISTEMAS

Buffer overflow

Buffer overflow baseado em pilha

Buffer overflow baseado no heap

Ataque por retorno da libc

Erros de parâmetros

SQL injection

Cross-site Scripting (XSS)

Poluição de parâmetros HTTP

(15)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Falha amplamente conhecida, que implica em sérios impactos no funcionamento de sistemas;

Buffer overflow é basicamente o resultado do

armazenamento em memória maior que a sua capacidade;

O princípio é estourar o buffer e sobrescrever parte da pilha de memória, alterando o valor das variáveis locais, valores dos parâmetros e/ou o endereço de retorno;

Sistemas que não verificam o tamanho disponível em memória estão suscetíveis a esse ataque;

Sistemas como Apache, IIS e OpenSSH já apresentaram essa vulnerabilidade.

(16)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Um processo ao ser executado é divido em quatro partes na memória:

Texto, onde estão armazenadas as instruções e código fontes propriamente ditos. Armazena código binário e executável, está marcada apenas como leitura.

Em seguida os dados, onde são armazenados os conteúdos das variáveis globais e estáticas do processo em execução.

Já pilha é um espaço contínuo de memória responsável por armazenar o conteúdo das variáveis locais do processo, além de valores de passagem e retorno de funções.

Por fim, o heap é responsável pela alocação dinâmica de memória.

(17)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Stack-based buffer overflow (Buffer overflow baseado em pilha)

:

É a técnica mais trival de ataque por buffer overflow, consistindo na rescrita da pilha de memória com o conteúdo excedido.

O valor excedido salvo na pilha de memória pode apontar para a execução do código malicioso, ou até mesmo para parte do programa vulnerável.

(18)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Stack-based buffer overflow

:

(19)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Heap-base buffer overflow (Buffer overflow baseado no heap)

Em geral é mais difícil de ser explorada, devido a sua

função de alocação dinâmica de memória, blocos contíguos e fragmentação interna.

O buffer presente no heap deve ser estourado para que o retorno à pilha aponto para o código malicoso.

(20)

2. VULNERABILIDADES EM SISTEMAS

2.1. Buffer overflow

Return-to-libc attack (Ataque por retorno da libc):

consiste no estouro de um buffer para que seja apontado a um trecho do programa em execução, geralmente uma

função. Essas funções são tipicamente utilizadas pela

biblioteca libc. Ataques desse tipo são comumente aplicados após a inclusão de patches em sistemas operacionais, que são impedidos de executar códigos nas regiões de memória que o processo ocupou (região de dados, pilha, ou heap).

(21)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Principais alvos de ataques são serviços de DNS, servidor Web e servidor de email.

Destes, o servidor web é o mais suscetível a ataques por erros de parâmetros, por exigir que parâmetros sejam enviados

durante a sua execução;

Essa estratégia consiste em inserir numa determinada aplicação parâmetros que, a priori, não são previstos ou tratados no código fonte

Podemos citar os ataques por erros de parâmetros:

SQL injection

XSS (Cross-site Scripting)

(22)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

SQL injection

A vulnerabilidade por SQL injection (SQLi) nasce quando a aplicação não trata o caracter ';

Essa ausência de tratamento permite a inserção de código SQL para :

expor dados escondidos,

sobrescrever dados valiosos;

ainda executar comandos de sistema perigosos no servidor;

Em geral, aplicações PHP são mais suscetíveis a

(23)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

SQL injection

Exemplo de como SQLi funciona:

(24)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

SQL injection

(25)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

SQL injection

Para verificar se um site tem essa vulnerabilidade, acrescente ' no final da URL;

Em geral, sites que contém os seguintes arquivos, é possível aplicar SQLi:

index.php?id=

gallery.php?id=

article.php?id=

(26)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

SQL injection

Como se proteger:

Nunca confie em nenhum tipo de entrada no sistemas, especialmente aquela que vem do lado do cliente,

mesmo que venha de um combobox (HTML), um campo de entrada escondido (hidden) ou um cookie;

Nunca conecte ao banco de dados como um super-

usuário ou como o dono do banco de dados. Use sempre usuários personalidados com privilégios bem limitados;

Verifique se uma entrada qualquer tem o tipo de dados experado.

Exemplo: espere números se o campo for numérico :)

(27)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Cross-site Scripting (XSS)

Envolve a consequência de misturar dados (código HTML por exemplo) e códigos em um objeto.

Entendemos estes códigos como linguagens executadas no navegador, como o JavaScript, Active Script e o ActiveX.

Em ataques por XSS, o agressor insere trechos em JavaScript (ou qualquer outra linguagem que seja interpretada no navegador do cliente) no HTML da aplicação, sendo impossível a mesma verificar o verdadeiro intuito desses códigos.

A partir disso o atacante pode verificar o conteúdo de cookies (que pode conter informações de autenticação do

(28)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Cross-site Scripting (XSS)

Código PHP simples de um site qualquer

Acesso a partir de um browser:

http://localhost/html/index.php?nome=Redes de computadores

(29)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Cross-site Scripting (XSS)

Acesso a partir de um browser, injetando o código Java Script:

<script>alert(document.lastModified)</script>

http://localhost/html/index.php?

nome=<script>alert(document.lastModified)</script>

(30)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Cross-site Scripting (XSS)

Como se proteger:

Não confie nos parâmetros passados pelos métodos GET pelo protocolo HTTML;

Alguns navegadores já possuem algum implementação que trata ataques do tipo XSS

No servidor Web, implemente regras que trate os metacaracteres. O exemplo a seguir verifica a existência de caracter entre barra ou tags

/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/i

(31)

2. VULNERABILIDADES EM SISTEMAS

2.2. Erros de parâmetros

Poluição de parâmetros HTTP

Consiste no envio de um mesmo parâmetro mais de uma vez.

Embora essa técnica seja simples, foi anunciada publicamente recentemente;

http://www.loja.com.br/carrinho.php?idProduto=1&idProduto=2

O servidor web não consegue tratar os valores desse parâmetro duplicado, gerando grande instabilidade, funcionamento incorreto e algumas vezes comportamentos desconhecidos.

Uma solução seria a concatenação de parâmetros duplicados e passá-los como vetor ao invés de string, diferentemente do que é comumente feito.

Entretanto, não existe um consenso para esse tipo de prática e

(32)

3. VULNERABILIDADES EM REDES

ARP spoofing

IP spoofing

Ataques de negação de serviço

Fragmentação de pacotes IP

Ataques de SYN flood

Ataque Smurf

(33)

3. VULNERABILIDADES EM REDES

3.1. ARP spoofing

Ataque relativamente antigo, mas com grandes impactos quando bem empregados;

Funcionamento consiste em enviar um pacote ARP falso para um rede local, redirecionando o tráfego do destino correto para um sistema malicioso;

Outro resultado possível é a negação de serviço contra o sistema alvo. O tráfego não chegará ao sistema de destino.

Arquitetira de ataque do tipo ARP spoofing configura ataques denominados Man-In-The-Middle (MITM);

Grande parte de switches e roteadores corporativos possuem proteção contra ARP spoofing.

(34)

3. VULNERABILIDADES EM REDES

3.1. ARP spoofing

ARP cache

(35)

3. VULNERABILIDADES EM REDES

3.1. ARP spoofing

ARP cache e MITM

(36)

3. VULNERABILIDADES EM REDES

3.2. IP spoofing

Tem como objetivo alterar um campo do cabeçalho IP, para que os pacotes sejam enviados como se

partissem de uma origem diferente;

O campo do pacote alterado é o de endereço de origem.

(37)

3. VULNERABILIDADES EM REDES

3.2. IP spoofing

(38)

3. VULNERABILIDADES EM REDES

3.3. Ataque de negação de serviço (DoS)

Tem como objetivo afetar a disponibilidade dos recursos, impedindo que as informações sejam acessadas por usuários legítimos;

Ataques DoS fazem com que recursos sejam

explorados de maneira agressiva, o que estressa o recurso, impedindo -o de realizar suas tarefas;

Ataques de negação de serviço pode ser realizado de maneira distribuída (DDoS), de maneira que vários

hosts realizam o ataque a um alvo simultaneamente.

(39)

3. VULNERABILIDADES EM REDES

3.3. Ataque de negação de serviço (DoS)

Uma reflexão! :)

(40)

3. VULNERABILIDADES EM REDES

3.4. Fragmentação de pacotes IP

A fragmentação de pacote está relacionada à Maximum Transfer Unit (MTU), unidade que determina o tamanho máximo de um pacote ;

Exemplo:

Host A R1 Host B

MTU=1500

R2

MTU=420 MTU=1500

5000

Identification

0 0 1000

More

fragments Total

length Fragments

offset

980

Data

5000 1 0 420 400

5000 1 50 420 400

Rede 1 Rede 2 Rede 3

(41)

3. VULNERABILIDADES EM REDES

3.4. Fragmentação de pacotes IP

Valores típicos de MTU

IEEE 802.3: 1492 bytes

FDDI: 4470 bytes;

X.25: 576 bytes.

Ataques que usam fragmentação utilizam da forma

que são implementados os métodos de fragmentação e reagrupamento dos pacotes;

Tipicamente, os sistemas não processam o pacote até que todos os fragmentos sejam recebidos.

(42)

3. VULNERABILIDADES EM REDES

3.4. Fragmentação de pacotes IP

Formas de exploração dessa vulnerabilidade:

Envio de pacotes com tamanho muito maior que o MTU (ping da morte):

Estouro (overflow) da pilha TCP, pois o sistema irá processar o pacote apenas após a sua remontagem;

Resultado é o travamento do sistema, cujo ataque que pode ser caracterizado como DoS;

Inicialmente explorada em 1996 pelo chamado “ping da morte”. Basicamente consiste no envio de pacotes

ICMP com 65535 bytes;

Vulnerabilidade também pode ser através dos protocolos TCP e UDP.

(43)

3. VULNERABILIDADES EM REDES

3.4. Fragmentação de pacotes IP

Formas de exploração dessa vulnerabilidade:

Envio de pacotes com valor de offset nulo ou negativo (teardrop):

Dependendo da implementação, podemos ter

resultados inesperados, com travamento da máquina.

Ataque do tipo DoS.

Valores de endpoint iguais (land):

Envio de pacotes SYN com valores de IP e porta de origem iguais ao IP e porta de destino;

Travamento da máquina atacada, caracterizando

(44)

3. VULNERABILIDADES EM REDES

3.4. Ataque de SYN flood

Protocolo de transporte TCP: estabelecimento de conexão pelo three-way handshake:

Negocia e sincroniza o valor inicial dos números de sequência em ambas as direções.

SYN (seq=x)

SYN (seq=y) ACK=x+1 ACK=y+1 (seq=x+1)

Host A Host B

(45)

3. VULNERABILIDADES EM REDES

3.4. Ataque de SYN flood

Protocolo de transporte TCP, finalização de conexão:

Ocorre separadamente em cada direção da conexão.

FIN (seq=x) ACK=x+1

Host A Host B

FIN (seq=y) ACK=y+1

...

(46)

3. VULNERABILIDADES EM REDES

3.4. Ataque de SYN flood

É um ataque de negação de serviço que explora o

mecanismo de conexões TCP, baseado no three-way handshake;

Consiste no envio de um grande número de

requisições de conexões (pacotes SYN) para a vítima, de forma que se torne incapaz de responder as

requisições;

A quantidade máxima de conexões é atingida, de forma que as conexões legítimas não são

respondidas até que a memória seja liberada.

(47)

3. VULNERABILIDADES EM REDES

3.4. Ataque de SYN flood

SYN (seq=x)

SYN (seq=y) ACK=x+1 SYN

Host A Host B

SYN SYN SYN SYN SYN SYN

(48)

3. VULNERABILIDADES EM REDES

3.5. Ataque Smurf

Mais um ataque de negação de serviço

Grande tráfego de pacotes ping (ICMP echo) é

enviado para o endereço de IP broadcast da rede, com origem o endereço da vítima (IP spoofing);

A rede utilizada é afetada, pois todos os hosts irão responder à requisição ICMP;

A vítima, que teve seu IP falsificado, rece os pacoes de todos esses hosts, ficando impedida de executar suas funções normais.

(49)

3. VULNERABILIDADES EM REDES

3.5. Ataque Smurf

(50)

3. VULNERABILIDADES EM REDES

3.5. Ataque Smurf

Mais um ataque de negação de serviço

Grande tráfego de pacotes ping (ICMP echo) é

enviado para o endereço de IP broadcast da rede, com origem o endereço da vítima (IP spoofing);

A rede utilizada é afetada, pois todos os hosts irão responder à requisição ICMP;

A vítima, que teve seu IP falsificado, rece os pacoes de todos esses hosts, ficando impedida de executar suas funções normais.

(51)

4. BASES DE VULNERABILIDADES

A medida que novas vulnerabilidades são descobertas, elas são

catalogadass em bases de dados públicas para consulta e correção por parte de administradores e desenvolvedores

Dessas bases, podemos citar:

National Vulnerability Database (NVD): http://nvd.nist.gov/

Open Source Vulnerability Database (OSVDB):

http://www.osvdb.org/

CERT Vulnerability Notes Database: http://www.kb.cert.org/vuls

Security Focus: http://www.securityfocus.com/

Essas bases podem utilizar o seguinte padrão:

Common Vulnerabilities and Exposures (CVE):

http://cve.mitre.org/cve/

Referências

Documentos relacionados

QUANDO TIVER BANHEIRA LIGADA À CAIXA SIFONADA É CONVENIENTE ADOTAR A SAÍDA DA CAIXA SIFONADA COM DIÂMTRO DE 75 mm, PARA EVITAR O TRANSBORDAMENTO DA ESPUMA FORMADA DENTRO DA

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

E ele funciona como um elo entre o time e os torcedores, com calçada da fama, uma série de brincadeiras para crianças e até área para pegar autógrafos dos jogadores.. O local

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

A proporçáo de indivíduos que declaram considerar a hipótese de vir a trabalhar no estrangeiro no futuro é maior entle os jovens e jovens adultos do que

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Além do teste de força isométrica que foi realiza- do a cada duas semanas, foram realizados testes de salto vertical (squat jump e countermovement jump), verificação da

No entanto, após 30 dias de armazenagem, o teor de fármaco nas suspensões decaiu para valores próximos a 50 % nas formulações que continham 3 mg/mL de diclofenaco e núcleo