Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Teste de Software para Segurança de Sistemas
COTI Informática Escola de Nerds
Sergio Mendes [email protected] www.cotiinformatica.com.br
A COTI Informática A COTI Informática é uma instituição de ensino nas áreas de
Programação, Banco de Dados, Análise de Sistema e Web Design, fundada pelos professores Edson Belém e Fernanda Nunes, com a proposta de especializar e preparar os alunos
para o mercado de trabalho.
Localização:
Av. Rio Branco, 185 - Sala 307 - Rio de Janeiro
2262-9043
Visite nosso site: www.cotiinformatica.com.br
Sergio Mendes [email protected] www.cotiinformatica.com.br
Sergio Mendes [email protected] www.cotiinformatica.com.br
O objetivo principal do processo de Testes é fornecer informações sobre a qualidade de
um software. A qualidade de um software é medida a partir do grau em que o mesmo
atende aos requisitos inicialmente estabelecidos.
Revisão do Software
Transição do Software
Operação do Software
Portabilidade
Reutilização
Interoperabilidade
Manutenção
Flexibilidade
Testabilidade
Confiabilidade Usabilidade Integridade Eficiência
Dentre os fatores que afetam a qualidade de um software, podemos citar:
•Confiabilidade: Ele se comporta com precisão o tempo todo? •Eficiência: Ele rodará em meu hardware tão bem quanto possível? •Usabilidade: Ele foi projetado para o usuário? •Flexibilidade: Posso mudá-lo? •Portabilidade: Serei capaz de usá-lo em outra máquina? •Reusabilidade: Serei capaz de reutilizar parte do software? •Interoperabilidade: Serei capaz de compor uma interface com outro sistema?
Sergio Mendes [email protected] www.cotiinformatica.com.br
Técnicas de teste de software
Tem como objetivo avaliar o
comportamento interno de um
software, analisando diretamente o
seu código-fonte.
Características:
•Estrutural
•Orientado à Lógica
•Atua diretamente no
código-fonte
Tem como objetivo avaliar o
comportamento externo de um
software, analisando os resultados
obtidos a partir dos dados de entrada.
Características:
•Funcional
•Orientado à Dados
•Atua diretamente na
especificação
Teste de “Caixa Preta” Teste de “Caixa Branca”
Sistemas e programas de software podem ser decompostos de diferentes formas.
Para o teste, podemos considerar o comportamento observável externamente (funcionalidades) ou a estrutura do sistema de software (unidades, subsistemas e componentes).
Dentro deste contexto, podemos considerar dois tipos de testes:
Sergio Mendes [email protected] www.cotiinformatica.com.br
Sergio Mendes [email protected] www.cotiinformatica.com.br
Testes Automatizados A automação vem aos longos dos anos ganhando um papel importante na área de Teste de Software. E isso se deve a uma série de fatores, dentre os quais podemos destacar:
• Diminuição do uso de mão de obra; • Diminuição dos custos; • Aumento na velocidade do processo de Teste de Software; • Maior sustentabilidade da garantia da qualidade, perante o “triângulo da gerência de projeto” (escopo, tempo e dinheiro).
Podemos utilizar a automação em qualquer fase do Teste de Software, como especificação de casos de teste, geração de métricas de testes, execução de testes, montagem do ambiente, etc. Porém, é importante salientar que a automação costuma ser um passo a ser dado, apenas após já termos um processo de Teste de Software bem estruturado e uma equipe preparada, pois ela muitas vezes exige um alto conhecimento técnico, principalmente para alguns tipos de testes específicos e é um esforço que precisa ser apoiado por um processo maduro.
Sergio Mendes [email protected] www.cotiinformatica.com.br
https://g1.globo.com/tecnologia/noticia/ataques-para-tirar-sites-do-ar-no-brasil-crescem-138-em-2016.ghtml
Durante o ano passado, o CERT.br recebeu 60.432 notificações de máquinas que se envolveram em algum ataque de DDoS, quase 10% de todos os incidentes virtuais registrados.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ataques de negação de serviço (DDoS)
Sergio Mendes [email protected] www.cotiinformatica.com.br
https://inovedados.com.br/as-10-principais-vulnerabilidades-web
Ranking Vulnerabilidade
1 SQL Injection e Script Injection
2 Gerenciamento de Sessão e quebras de autenticação
3 Cross Site Scripting (XSS)
4 Quebras no controle de acesso
5 Configuração incorreta de segurança
6 Exposição de dados sensiveis
7 Proteção de ataque insuficiente
8 Cross-site Request Forgery (CSRF)
9 Utilizar componentes com vulnerabilidades conhecidas
10 APIS DESPROTEGIDAS
Sergio Mendes [email protected] www.cotiinformatica.com.br
Teste de invasão O teste de invasão, também chamado teste de intrusão ou penetration testing (pentest), avalia a segurança de sistemas, plataformas e de qualquer ambiente através da simulação. A finalidade do teste é medir o nível de riscos do ambiente, fornecendo um relatório minucioso que apresenta, além dos resultados, as melhores soluções para os problemas.
São 4 os níveis de risco: • Crítico; • Alto; • Médio; • Baixo. É um processo de natureza cíclica, que exige certo grau de conhecimento técnico por parte do profissional responsável. Através das simulações de ataques reais, é possível identificar e explorar todas as vulnerabilidades.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Criação e controle efetivos das senhas Sabe-se da importância que as senhas têm para garantir a confidencialidade dos dados. No entanto, ainda assim, a criação de senhas fracas é um erro frequente, favorecendo que um ataque de força bruta descubra qual o login/senha utilizado.
Sergio Mendes [email protected] www.cotiinformatica.com.br
HTTP x HTTPS Outra falha é confiar no protocolo HTTP que, na verdade, não oferece segurança na comunicação dos dados. A melhor opção é o HTTPS (protocolo HTTP sobre SSL ou TLS), que pode ser utilizado para segurança para as aplicações, oferecendo serviços como: Confidencialidade da informação entre servidor-cliente (criptografia); Autenticação do servidor para o cliente mediante a apresentação de certificados digitais.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Atualização e configuração de softwares A atualização dos softwares garante a segurança das aplicações web, dos servidores e da rede, e por isso deve sempre estar em dia. Outro ponto importante é a configuração adequada dos softwares das aplicações. Um erro muito repetido é usar a mesma configuração do ambiente de desenvolvimento no ambiente de produção. É importante observar que cada ambiente requer suas próprias configurações.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Segurança OpenSource
Vega – É uma ferramenta de varredura de vulnerabilidades e testes escritos em Java. Ele funciona com as plataformas OS X, Linux e Windows. É GUI habilitado e inclui um scanner automatizado e um proxy de interceptação. Ele pode detectar vulnerabilidades em aplicações web como injeção de SQL, injeção de cabeçalho, cross site scripting etc. Pode ser estendida através de uma API JavaScript. https://subgraph.com/vega/
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Segurança OpenSource
SqlMap – Detecta vulnerabilidade de injeção SQL em um banco de dados site. Ele pode ser usado em uma ampla gama de bancos de dados e suporta 6 tipos de técnicas de injeção SQL: cegos baseado em tempo, cegos à base de boolean, baseada em erro, consulta união, consultas empilhados e out-of-band. Ele pode se conectar diretamente ao banco de dados sem usar uma injeção SQL e tem grandes recursos de impressão digital banco de dados e enumeração. http://sqlmap.org/
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Segurança OpenSource
ZED Proxy Attack (ZAP) – Ele foi desenvolvido pela AWASP e está disponível para as plataformas Windows, Unix / Linux e Macintosh. Tem elevada facilidade de utilização. Ele pode ser usado como um scanner ou para interceptar um proxy para testar manualmente uma página da web. Suas principais características são tradicionais e AJAX aranhas, Fuzzer, apoio soquete Web e uma API baseada em REST https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Teste de Invasão Metasploit O Metasploit é um framework com uma sólida base de fãs entre os programadores. Ele adiciona ferramentas de teste customizadas, que procuram fraquezas em sistemas operacionais e aplicações. Os módulos customizados são lançados no GitHub e no Bitbucket, repositórios online para projetos de código.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Teste de Invasão Nessus Vulnerability Scanner O Nessus Vulnerability Scanner também é popular na localização de vulnerabilidades. A tecnologia vasculha computadores e firewalls à procura de portas abertas para a instalação de software potencialmente malicioso. “Como ferramenta de teste, ela se comunica com o sistema operacional para encontrar vulnerabilidades. Ela é normalmente usada para compliance, determinando se os patches estão atualizados”, explica Garrett Payer, líder de tecnologia da provedora de soluções ICF International. “O Nessus só compara scans a bases de dados de fragilidades conhecidas”, complementa Saez.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Ferramentas de Teste de Invasão Kali Linux O Kali Linux é uma suíte de ferramentas pré-instaladas de testes de penetração, segurança e forense. “Ela tem funcionalidades para pessoas com zero conhecimento de segurança”, aponta Saez. De acordo com ele, instale a Kali Linux e abra qualquer uma das mais de uma dúzia de ferramentas que possui. “Ela vem com um grande volume de documentação de usuário”, assinala.
Sergio Mendes [email protected] www.cotiinformatica.com.br
Medidas de precaução:
• Criar um plano de segurança para aplicações web
• Realizar um inventário das suas aplicações web
• Priorize suas aplicações web
• Priorizar Vulnerabilidades
• Executar aplicativos usando o mínimo de privilégios
• Use cookies de forma segura
• Conduzir Treinamentos para Conscientização de Segurança em Aplicações Web
Sergio Mendes [email protected] www.cotiinformatica.com.br
Agradecimentos • UFRJ - Conferência Anual Orientada à Segurança (CAOS)
www.cotiinformatica.com.br
COTI Informática Escola de Nerds
Sergio Mendes [email protected]