(In)Segurança

Robson Cruz

Desvendando as vulnerabilidades

SECOMPP 2016

Cronograma

  1. Introdução e Conceitos;
  2. Exemplificação e Casos Reais;
  3. Apresentação das Ferramentas;
  4. Demonstração;
  5. Explicação e utilização das ferramentas
  6. Conclusão e Considerações finais.

O que você vai aprender

  • Como utilizar "hacking-tools" para melhorar a segurança do seu sistema;
  • A importância de segurança para nós, programadores;

O que você não vai aprender

  • Como "hackear" facebooks;
  • Como enriquecer do dia pra noite;
  • Como se livrar daquelas contas que andam dando problema;

1. Introdução

Art. 154-A.  Invadir dispositivo informático alheio, conectado ou não à rede de computadores, mediante violação indevida de mecanismo de segurança e com o fim de obter, adulterar ou destruir dados ou informações sem autorização expressa ou tácita do titular do dispositivo ou instalar vulnerabilidades para obter vantagem ilícita:  

 

Pena - detenção, de 3 (três) meses a 1 (um) ano, e multa.  

Não existe bom ou mau conhecimento, existe conhecimento bem aplicado e mal aplicado.

Hackers

  • O que são hackers?
    • Hacker ou Cracker?
  • Quem são eles?
    • Seu vizinho, seu colega de sala, seu primo distante...
  • O que eles fazem?
  • Por que eles fazem?

Ética Hacker

  • O que é?
    • "A crença que o compartilhamento de informação é algo positivo, e que é dever ético dos hackers de compartilhar suas habilidades atráves de iniciativas open-source, facilitando o acesso a informação e a recursos computacionais sempre que possível."
  • O que a Ética Hacker significa para nós?

Vulnerabilidades

  • O que é uma vulnerabilidade?
    • Condição que, ao ser explorada pelo atacante, pode resultar em uma violação de segurança.
  • Como surgem?
    • Falhas de projeto, falta de testes, tecnologias desatualizadas ou parcialmente incompatíveis, falhas de configuração, etc.

Vulnerabilidades

Acesso

Recursos

Falha

Vulnerabilidades

Vulnerabilidades

  • O que ela permite?
    • Perda de confiabilidade, garantia de privilégio não autorizado, roubo de informações, etc.

 

  • Hoje em dia é comum a exploração de falhas do tipo buffer overflow.

Tipos de Vulnerabilidades

  • Natural;
  • Hardware;
  • Software;
  • Comunicação;
  • Humana

Existem muitas classificações em relação a vulnerabilidades, dependendo de qual o tipo de ambiente em que nos encontramos

As mais queridas

  • Entrada Não Validada;
  • Controle de Acesso Falho;
  • Autenticação e Gerenciamento de Sessão não confiável;
  • Buffer Overflow;
  • Tratamento Impróprio de Erros.

Na lista abaixo, baseada em dados colhidos através dos projetos OWASP, OSVDB e NVD, encontram-se algumas das vulnerabilidades mais exploradas nos dias de hoje:

O que todas essa diferentes vulnerabilidades tem em comum?

Todas poderiam ter sido prevenidas através de uma codificação que se preocupasse com a segurança

Esse assunto será abordado mais a frente

Ataques

  • O que é um ataque?
  • O que motiva um ataque?
    • Dinheiro, Vingança, Ideologias políticas ou religiosas, curiosidade ou a simples vontade de testar as habilidades.
  • Não é incomum que ataques em grande escala surjam por iniciativa interna.

Ataques

  • Nos dias de hoje os ataques mais comuns são de DDoS, Trojan-Horse, Port-Scanning e Brute-Force;

 

  • Outros ataques comuns são de Spoofing(email, SMS, etc), Sniffing, Scamming e Key-Loggers.

Tipos de Ataques

  • Existem diferentes classificações em relação aos "tipos" de ataques;
  • Dependendo da situação uma classificação pode ser mais viável do que a outra.
  • Durante o minicurso vamos utilizar a classificação em relação ao vetor e ao alvo comprometido.

Quanto ao Vetor

  • Dispositivos Removíveis;
  • Hardware Alterado;
  • Internet sem Fio;
  • Rede;
  • SMSs;
  • Sites Maliciosos;
  • Pessoas(Engenharia Social)

Quanto ao Alvo Comprometido

  • Armazenamento;
  • Banco de Dados;
  • Serviço;
  • Recursos;
  • Rede;
  • Informação;

Anatomia de Ataques

Anatomia de Ataques

Um ataque bem organizado pode ser um ataque letal

Para uma melhor organização, podemos dividir ataques em fases

Diz respeito a organização de um ataque

Anatomia de Ataques

  1. Escolha de um alvo;
  2. Coleta de Informações públicas;
  3. Coleta de Informações de Infra-Estrutura;
  4. Criação de um Ambiente de Testes;
  5. Ataque;
  6. Destruição de Evidências;
  7. Obtenção de Acesso Facilitada;
  8. Utilização da Máquina

Anatomia de Ataques

  • Existem ataques que não se preocupam com a intrusão ou que se focam em trabalhar com casos de "entrada inesperada";
  • Não são todos atacantes que constroem seus scripts/exploits do zero;
  • Ataques de Script Kiddies podem muitas vezes serem devastadores;
  • Diferentes tipos de ataques muitas vezes são combinados para alcançar um objetivo

Anatomia de Ataques

  • De forma resumida, podemos dizer que um ataque poderia ser dividido em 4 passos:
    • Recon (Reconhecimento e coleta de informações);
    • Exploit (Exploração da vulnerabilidade);
    • Payload (O "ataque" em si, onde é realizado o objetivo inicial do atacante);
    • Loot (A informação/dado desejado, ou um sistema comprometido)

O elemento humano na Segurança de Sistemas

  • Por que seres humanos são o "elo mais fraco"?

 

  • Existe sistema 100% seguro?

Segurança no desenvolvimento de sistemas

  • Por que se importar com segurança?
    • É melhor resolver um problema antes ou depois que ele acontece?
  • Na prática, como eu posso aumentar a segurança?
    • Testes, rotinas de verificação, atualização consistente, auto-conhecimento, utilização de mecanismos de proteção.
  • Possíveis Falhas
    • Desordem, Falta de Comunicação, Problemas de Adaptação.

Em suma...

  • Tudo o que falamos até agora tem a ver com um dos vários segmentos da Tecnologia da Informação:

 

 

  • O que é SI mesmo?
    • Diretamente relacionada com a proteção, de diversas formas, de um conjuto de informações, preservando o seu valor e confiabilidade.
  • Uma das formas mais eficazes de aumentar a segurança da informação é prevenindo vulnerabilidades.

Segurança da Informação

Pentest

  • O trabalho de descoberta e avaliação de vulnerabilidades é muitas vezes difícil, e requer conhecimento especializado;
    • É necessário o conhecimento de como as vulnerabilidades são exploradas e possíveis soluções
  • A realização de Pentests, ou Testes de Invasão, auxilia no controle e conhecimento das vulnerabilidades existentes em um sistema, bem como um boa oportunidades para encontrar vias de prevenção contra ataques.
  • É comum ser entregue, em conjunto com uma avaliação das vulnerabilidades, uma análise de impacto e estimativas de prejuízo.

Pentest

  • A utilização de hacking-tools para descoberta e compreensão de vulnerabilidades é prática padrão na área de Pentesting.
  • Entre ferramentas mais utilizadas se encontram:
    • John The Ripper (Verificação de Senhas);
    • Nmap (Auditoria de Segurança de Sistemas);
    • Nessus (Scanner de vulnerabilidades);
  • Também são realizados testes em:
    • Firewalls e WebProxy;
    • Tripware (IDS de hosts);
    • Snort (IDS de rede).

Codificação Segura

  • Existem várias diretrizes e boas práticas no que diz respeito a chamada "codificação segura"
  • Dependendo da linguagem, plataforma, ou tipo de aplicação, técnicas de Codificação Segura podem variar
    • O objetivo é manter o CID(Confidencialidade, Integridade e Disponibilidade) ao máximo, mitigando possíveis problemas.

Codificação Segura

Alguns princípios gerais:

  • Validação a entrada de dados, mesmo que de fonte confiável
    • Utilize formatadores de String.
  • Trate campos como literais
    • Após a validação, insira literais representando aquele dado.

Codificação Segura

  • Teste e Previna XSS(ou CSS)
    • Insira códigos HTML/JS em campos de formulário.
  • Realize checagem cuidadosa do acesso aos buffers
    • Tanto de tamanho quanto conteúdo.
  • Evite utilização de funções inseguras
    • Não permitem a verificação ou checagem de conteúdo.
  • Sempre use o terminador de string
    • Alocação de uma posição a mais e não utilizar;
    • Procure "zerar" o buffer antes de inserir novos dados;
    • Faça inserção manual caso notar alterações súbitas.

Codificação Segura

No fim, podemos dizer que codificação segura é

Escrever códigos não vulneráveis

2. Exemplos e
Casos Reais

Casos Famosos

  • Vazamento de informações da PSN(2011), mais de 70 milhões de registros afetados;
  • Heartland Big-leak(2009), mais de 130 milhões de registros afetados, incluindo informação completa de cartão de crédito em mais de 70% dos casos;
  • Stuxnet(2010), mais de 100 mil computadores infectados, e um programa nuclear destruído;
  • Hearthbleed(2014) e Shellshock(2014);
  • OPM(2015), hackers chineses se infiltraram na rede por cerca de 1 ano, e mais de 1.8 milhões de registros comprometidos, porém pode ser um número muito maior;

Ransomwares

  • Existem inúmeros casos de ransomwares todos os dias ao redor do mundo:
    • Malwares desenvolvidos para bloquear o acesso a um sistema até uma certa quantia em dinheiro for paga;
  • A maioria dos casos de ransomwares poderia ter sido prevenida com a implementação de correção de vulnerabilidades por até 20% do valor exigido pelo ransomware.

Botnets

  • É estimado que cerca de 35% dos computadores ao redor do mundo sejam parte de algum tipo de botnet(legal ou ilegal)
  • Botnets são muitas vezes utilizadas em ataques DDoS  e por spammers e scammers para aumentar a sua "área de efeito" e poder computacional
  • Uma das maiores botnets já criadas de maneira ilegal chegou a mais de 20 milhões de máquinas, com uma capacidade de spam de 1.4TB/dia.

Trojan

  • Dados coletados em 2012 mostraram que, em grande parte, a maioria dos computadores infectados com trojans se encontram em ambientes empresariais
  • O mesmo conjunto de dados também mostrou que a alta incidência de trojans devia-se, em grande parte, do "excesso de confiança" no ambiente

Exemplo

  • Imagine que você possui um sistema que gera, em média R$1000/hora de lucro;
  • Imagine agora que através de uma vulnerabilidade até o momento não conhecida, um atacante invade o sistema;
  • O invasor realiza um rootkit, e desativa o fornecimento de serviços do seu sistema;
  • Em uma situação otimista, vamos supor que o problema foi resolvido em 6 horas;

Exemplo

  • Você perdeu, no mínimo R$6000, supondo que não houve danos ao equipamento.
  • Imagine agora, que no mesmo caso, o invasor também resolveu inserir várias novas vulnerabilidades;
  • Para conseguir reestabeler um funcionamento normal, será necessário um processo de migração e fortificação da segurança, o que irá consumir mais tempo...
  • O quanto de prejuízo você já teve?

3. Ferramentas

Kali Linux

  • Anteriormente conhecido como BackTrack;
  • Baseado em Debian;
  • Possui uma extensiva coleção de ferramentas de testes de segurança, Análise Forense e pentesting;
  • Rolling-Release;
  • Fácil de usar

Metasploit Framework

  • Uma ferramenta para desenvolvimento e execução de exploits;
  • Muito poderoso;
  • Uma das primeiras ferramentas de sua categoria;
  • Costumizável;
  • Fácil de usar;

Metasploitable 2

  • Uma máquina virtual intencionalmente vulnerável para realização e aprendizados de pentesting;
  • Oferece uma forma simples de instanciar um "servidor" para teste;
  • host-only;
  • Fácil de usar;

Nmap

  • Network Mapper;
  • Muito poderoso;
  • Extremamente simples, porém extremamente poderoso;
  • Utilizado ao redor do mundo todo;
  • Fácil de usar;

4. Demonstração

  • Dogeminer Co. possui um sistema para controle geral de suas vendas, transações de bitcoins, etc.
  • Fomos contratados para realizar um relatório sobre o impacto das vulnerabilidades do sistema, e sugerir possíveis melhorias.
  • Para cada "item" da lista de verificações, realizam-se as seguintes perguntas:
    • Existem problemas aparentes?
    • Existe a possibilidade de vulnerabilidades futuras?
    • Qual o impacto dos problemas apresentados?
    • Existe alguma possível solução? Qual?
  • Para calcular o impacto de uma vulnerabilidades são utilizadas métricas específicas, e todos os dados coletados vão para o relatório final
    • CVSS: Common Vulnerability Scoring System
    • Priorizar recursos de forma eficiente e bem planejada;
    • A pontuação para vulnerabilidades é atribuída através de uma fórmula, levando em conta métricas base, temporais, de ambiente e grau de risco associado a elas.

Exemplo de uma tabela de avaliação de riscos

  • Teste de Mapeamento e Infraestrutura;
  • Teste de Exaustão;
  • Teste de Publicidade de Informações;
  • Teste de Engenharia Social;*
  • Teste de Invasão

Testes

Análise de Risco
x
Gerenciamento de Vulnerabilidades

5. Utilização das Ferramentas

6. Considerações Finais

Links Interessantes

Livros Interessantes

The Web Application Hackers Handbook
Dafydd Stuttard & Marcus Pinto

Introdução à Segurança de Redes
Ivo Peixinho

Livros Interessantes

Hackers Expostos
Stuart McClure, Joey Scambray, George Kurtz

Guia de Referência Rápida OWASP
OWASP

Séries e Filmes

  • Mr Robot(2015-2016)
    • Não exatamente sobre SI e hacking, mas durante a série é possível ver como grandes operações de invasão ocorrem e se organizam.
  • Revolution OS(2001)
    • Conta um pouco da história do surgimento do GNU e do Linux, possui trechos sobre o Hackerismo e a Cultura Hacker

Séries e Filmes

  • DEFCON: The Documentary(2013)
    • A DEFCON é considera por muitos a maior conferência Hacker do mundo, e esse documentário dá um ponto de vista interno sobre a ideologia por trás do evento.
  • We Are Legion: The Story of the Hacktivists(2012)
    • Documentário sobre o coletivo, formação e as práticas do hackerativismo, e um dos seus maiores representantes, o Anonymous.

Mercado

  • Panorama atual:
    • Muitas vezes contratadas por empresas de segurança, agências governamentais, e consultoria em empresas diversas.
  • Salário:
    • 60 a 130 mil dólares anuais(10 anos de experiencia);
    • salário mensal entre R$6.500 a R$14.000*
  • Grandes centros na área:
    • São Paulo, Rio de Janeiro, Brasilia, Curitiba e Maringa

Conclusões

Keep learning, keep ahead

- The ment0r

Minicurso: (In)Segurança - Desvendando as Vulnerabilidades

By Robson Cruz

Minicurso: (In)Segurança - Desvendando as Vulnerabilidades

Minicurso realizado durante a SECOMPP(Semana da Computação de Presidente Prudente) em 2016,

  • 75