Este conteúdo foi apresentado ao vivo no 3o. RootDay. Consiste de motivação com estatísticas, introdução à técnica de fuzzing, formas de usá-la, o software ZAP e uma demonstração.
3. https://linkedin.com/in/mauricioharley/
Mini-CV
MBA em Gerenciamento de Projetos de TI;
Bacharel em Engenharia Elétrica;
Tecnológo em Telemática;
2x CCIE (Routing & Switching, Service Provider), VCIX-NV (NSX);
CISSP, MCSE Private Cloud, VCP6-DCV, ITIL v3;
Ex-membro do Cisco Data Center Tiger Team;
Arquiteto de Computação em Nuvem;
Colaborador regular da PenTest Magazine;
Arquiteto de Cloud e CyberSec na HX Brasil;
Perito Forense Computacional;
Mais de 20 anos de experiência em TI;
Palestrante de temas diversos em Tecnologia da Informação.
3
9. https://linkedin.com/in/mauricioharley/
A IoT (Internet das Coisas) e suas
nuances
Ubiquidade por meio dos dispositivos;
Baixas capacidades de processamento, armazenamento e memória
Pouco espaço para mecanismos de segurança;
Comunicação normalmente via Bluetooth;
Autenticação fraca ou inexistente (ver MQTT);
Criptografia em repouso fica a cargo do desenvolvedor
Armazenamento pequeno pode tornar esta atividade inviável;
Normalmente não há criptografia em trânsito.
Alguns autores chamam de Internet of Threats.
9
18. https://linkedin.com/in/mauricioharley/
OWASP (Open Web Application
Security Project)
Seguramente, uma das mais bem organizadas comunidades para
compartilhamento de conhecimento e abordagem em segurança em web;
Publica, regularmente, o relatório Top 10 OWASP com as dez maiores
vulnerabilidades em aplicações web;
O mais recente encontra-se em fase de votação (Release Candidate);
Coordena alguns projetos de código aberto (open source), tais como o
ZAP, que abordaremos aqui;
https://www.owasp.org/
18
19. https://linkedin.com/in/mauricioharley/
Último OWASP Top 10 (2017 RC 1)
1. Injection;
2. Broken Authentication e Session Management;
3. Cross-Site Scripting (XSS);
4. Broken Access Control;
5. Security Misconfiguration;
6. Sensitive Data Exposure;
7. Insufficient Attack Protection;
8. Cross-Site Request Forgery (CSRF);
9. Using Components with Known Vulnerabilities;
10. Underprotected APIs.
19
20. https://linkedin.com/in/mauricioharley/
Fuzzing
Consiste em gerar padrões aleatórios (ou semi-aleatórios) de dados de entrada
e submetê-los a uma aplicação para avaliação do comportamento;
É dever da aplicação criticar qualquer tipo de entrada;
Objetivo: encontrar e relatar bugs;
Dependendo de como o código foi escrito, os dados de entrada informados
podem ser entendidos como:
Entrada válida;
Entrada não válida
Mensagem de erro e retorno da função (o esperado);
Buffer overflow;
Privilege Escalation;
DoS.
20
21. https://linkedin.com/in/mauricioharley/
Fuzzing (continuando)
Técnica antiga. Se puxarmos pelo conceito em si, podemos voltar no
tempo à década de 1950, quando cartões perfurados eram feitos de
maneiras diferentes de propósito;
Formalmente, foi criada em 1989 na Universidade de Wisconsin e consistia
inicialmente em realizar os testes em interface de linha de comando e com
interfaces gráficas para usuários;
Com a sofisticação dos códigos, precisou evoluir também;
Existem diversas ferramentas (fuzzers) que a implementam, dentre elas o
ZAP e o AFL (American Fuzzer Loop);
Tem vantagens e desvantagens…
21
22. https://linkedin.com/in/mauricioharley/
Fuzzers
Vantagens
Normalmente, após os casos de teste serem criados e submetidos, operam
praticamente sem intervenção;
Dão uma visão geral do estado do aplicação.
Desvantagens
Podem não encontrar todos os bugs, atendo-se a situações mais genéricas e
possivelmente passando direto em áreas específicas;
À medida que a aplicação se torna complexa, o efeito do fuzzer diminui,
necessitando que o mesmo seja ajustado para refletir a sofisticação do alvo.
22
24. https://linkedin.com/in/mauricioharley/
ZAP
Projeto open source conduzido pelo OWASP;
Disponível em https://github.com/zaproxy/;
Roda em Java e tem suporte cross-plataforma (Windows, Linux e macOS);
Principais recursos:
Funciona como um servidor proxy;
Scanners ativos e passivos;
Suporte a plugins;
Geração de relatórios em HTML, XML e texto limpo.
24
Alimentação: controle de estoque, caixa, pedidos (frente de loja);
Advocacia: processos, petições, CRM;
Supermercado: controle de estoque, logística, caixa, CRM (fornecedores);
Hotel: registro de hóspedes, programação de escalas, CRM (agências de turismo), controle de quartos;
Indústria: controle de insumos, automação industrial, logística;
Casa de Câmbio: acompanhamento das cotações, controle de cédulas, mecanismos de segurança física;
Operadora de Cartão de Crédito: transações de clientes, conexões com comércios, detecção de fraudes, análise de comportamento;
Banco: CRM (clientes), transações bancárias, detecção de fraudes, internet banking, SPB/CIP (Sistema de Pagamentos Brasileiro);
Porto: controle de estoque, informações alfandegárias, inspeção de cargas e passageiros/tripulantes, vigilância sanitária;
Aeroporto: controle de tráfego aéreo, registros de passageiros e voos, inspeção de bagagens, segurança física, relacionamento com companhias.
Falar sobre os conceitos e também sobre alguns produtos como vBlock e FlexPod. Falar ainda do fabricante Nutanix, do NSX da VMware e de iniciativas que partem de outros vendors.
Coluna da esquerda mostra a estatística nos dias atuais e a da direita, em dois anos. Observar a quantidade de cargas de trabalho que migrarão para a nuvem e a distribuição de acordo com o tipo de oferta.
Falhas de injeção (SQL, SO, LDAP). Ocorrem quando dados não confiáveis são enviados a um interpretador para executar um comando indesejado;
Tem a ver com o mau gerenciamento das funções de gerenciamento de aplicação e sessão, comprometendo senhas, tokens e chaves;
Permite o redirecionamento do browser do usuário para sites maliciosos, sequestro de sessão e execução de scripts no browser da vítima;
Exploração de falhas em controles de autorização de funções: visualização de arquivos sensíveis, acesso a dados de outros usuários;
Falhas em configurar corretamente proteções de segurança para aplicações, servidores, sistemas;
Muitas aplicações web e APIs não manipulam corretamente dados sensíveis. Atacantes podem roubar ou modificar tais dados;
Inexistência de controles, por parte das APIs, para detectar e bloquear e responder a ataques manuais ou automáticos;
Força o browser da vítima a gerar um requisito HTTP modificado para explorar alguma vulnerabilidade do site;
Bibliotecas, frameworks e outros módulos podem apresentar vulnerabilidaes passíveis de serem exploradas;
Quantidade grande de componentes, como Javascript, SOAP/XML, REST/JSON, entre outros, aumenta a possibilidade de exploração.
Falar que os bugs encontrados podem passar despercebidos em auditoriais manuais.
Falar que os casos de teste geram resultados que precisam ser analisados posteriormente. Esta análise nem sempre é trivial.
Falar de mais recursos, como brute force, integração com outros fuzzers como JBroFuzz e fuzzdb, além de especialização em análise de código AJAX.