complete penetration testing guide with sample test cases
É o processo de identificar vulnerabilidades de segurança em um aplicativo avaliando o sistema ou rede com várias técnicas maliciosas. Os pontos fracos de um sistema são explorados neste processo por meio de um ataque simulado autorizado.
O objetivo deste teste é proteger dados importantes de estranhos, como hackers, que podem ter acesso não autorizado ao sistema. Assim que a vulnerabilidade é identificada, ela é usada para explorar o sistema para obter acesso a informações confidenciais.
Um teste de penetração também é conhecido como teste de penetração e um testador de penetração também é conhecido como hacker ético.
O que você aprenderá:
- O que é teste de penetração?
- Causas de vulnerabilidades
- Ferramentas e empresas de teste de penetração
- Ferramentas de teste de penetração recomendadas
- Empresa de teste de penetração recomendada
- Por que teste de penetração?
- O que deve ser testado?
- Tipos de teste de penetração
- Técnicas de teste de caneta
- Casos de teste de amostra de teste de penetração (cenários de teste)
- Conclusão
O que é teste de penetração?
Podemos descobrir as vulnerabilidades de um sistema de computador, um aplicativo da web ou uma rede por meio de testes de penetração.
Um teste de penetração informa se as medidas defensivas existentes empregadas no sistema são fortes o suficiente para evitar qualquer violação de segurança. Os relatórios de teste de penetração também sugerem as contra-medidas que podem ser tomadas para reduzir o risco do sistema ser hackeado.
Causas de vulnerabilidades
- Erros de design e desenvolvimento : Pode haver falhas no design de hardware e software. Esses bugs podem expor seus dados essenciais aos negócios.
- Configuração ruim do sistema : Esta é outra causa de vulnerabilidade. Se o sistema estiver mal configurado, ele pode introduzir brechas através das quais os invasores podem entrar no sistema e roubar as informações.
- Erros humanos : Fatores humanos, como descarte impróprio de documentos, deixar os documentos sem supervisão, erros de codificação, ameaças internas, compartilhamento de senhas em sites de phishing, etc. podem levar a violações de segurança.
- Conectividade : Se o sistema estiver conectado a uma rede não segura (conexões abertas), ele estará ao alcance de hackers.
- Complexidade : A vulnerabilidade de segurança aumenta em proporção à complexidade de um sistema. Quanto mais recursos um sistema tiver, maiores serão as chances de ele ser atacado.
- Senhas : As senhas são usadas para impedir o acesso não autorizado. Eles devem ser fortes o suficiente para que ninguém possa adivinhar sua senha. As senhas não devem ser compartilhadas com ninguém a qualquer custo e as senhas devem ser alteradas periodicamente. Apesar dessas instruções, às vezes as pessoas revelam suas senhas para outras pessoas, escrevem-nas em algum lugar e guardam senhas fáceis que podem ser adivinhadas.
- Entrada do usuário : Você deve ter ouvido falar de injeção de SQL, estouro de buffer, etc. Os dados recebidos eletronicamente por meio desses métodos podem ser usados para atacar o sistema receptor.
- Gestão : A segurança é difícil e cara de gerenciar. Às vezes, as organizações carecem de gerenciamento de risco adequado e, portanto, a vulnerabilidade é induzida no sistema.
- Falta de treinamento para equipe : Isso leva a erros humanos e outras vulnerabilidades.
- Comunicação : Canais como redes móveis, internet, telefone abrem o escopo de roubo de segurança.
Ferramentas e empresas de teste de penetração
Ferramentas automatizadas podem ser usadas para identificar algumas vulnerabilidades padrão presentes em um aplicativo. As ferramentas Pentest verificam o código para verificar se há um código malicioso presente que pode levar a uma possível violação de segurança. As ferramentas Pentest podem verificar brechas de segurança presentes no sistema examinando técnicas de criptografia de dados e descobrindo valores embutidos em código, como nome de usuário e senha.
Critérios para selecionar a melhor ferramenta de penetração:
- Deve ser fácil de implantar, configurar e usar.
- Ele deve examinar seu sistema facilmente.
- Ele deve categorizar as vulnerabilidades com base na gravidade que precisa de uma correção imediata.
- Deve ser capaz de automatizar a verificação de vulnerabilidades.
- Ele deve verificar novamente os exploits encontrados anteriormente.
- Ele deve gerar relatórios e logs detalhados de vulnerabilidade.
Depois de saber quais testes você precisa realizar, você pode treinar seus recursos de teste internos ou contratar consultores especializados para fazer a tarefa de penetração para você.
Ferramentas de teste de penetração recomendadas
# 1) Acunetix
Acunetix WVS oferece aos profissionais de segurança e engenheiros de software uma gama de recursos impressionantes em um pacote fácil, direto e muito robusto.
=> Experimente a melhor ferramenta de teste de caneta aqui 
# 2) Intruso

Intruso é um poderoso scanner de vulnerabilidade que encontra pontos fracos de segurança cibernética em seu patrimônio digital, explica os riscos e ajuda a corrigi-los antes que uma violação possa ocorrer. É a ferramenta perfeita para ajudar a automatizar seus esforços de teste de penetração.
Características principais :
- Mais de 9.000 verificações automatizadas em toda a sua infraestrutura de TI.
- Verificações de infraestrutura e camadas da web, como injeção de SQL e script entre sites.
- Verifica automaticamente seus sistemas quando novas ameaças são descobertas.
- Várias integrações: AWS, Azure, Google Cloud, API, Jira, Teams e muito mais.
- O Intruder oferece um teste gratuito de 30 dias de seu plano Pro.
Empresa de teste de penetração recomendada
# 1) ImmuniWeb®

ImmuniWeb® é uma empresa de testes de penetração com sede em Genebra, Suíça. Sua plataforma de teste de penetração de aplicativos habilitada para DevSecOps combina humanos com inteligência artificial e vem com nenhum SLA falso-positivo, detecção de vulnerabilidade mais alta e relatórios acionáveis.
O ImmuniWeb oferece testes de penetração de aplicativos abrangentes de aplicativos móveis e da web internos e externos, APIs e serviços da web, servidores de correio, dispositivos IoT e muito mais.
Características principais:
- Detecção contínua de novos códigos.
- Teste manual rápido e econômico.
- Capacidades de patching virtual de um clique.
- Acesso 24/7 para analistas de segurança.
- DevSecOps e integração CI / CD.
- Pedido instantâneo e entrega rápida.
- Painel multifuncional.
Outras ferramentas gratuitas:
Serviços comerciais:
Você também pode consultar a lista abaixo disponível no STH que fala sobre 37 poderosas ferramentas de teste de penetração => Ferramentas poderosas de teste de penetração para cada testador de penetração
existe um aplicativo para agendar postagens do instagram
Por que teste de penetração?
Você deve ter ouvido falar do ataque de ransomware WannaCry que começou em maio de 2017. Ele bloqueou mais de 2 lakh computadores em todo o mundo e exigiu pagamentos de resgate na criptomoeda Bitcoin. Este ataque afetou muitas grandes organizações em todo o mundo.
Com esses ataques cibernéticos massivos e perigosos acontecendo atualmente, tornou-se inevitável fazer testes de penetração em intervalos regulares para proteger os sistemas de informação contra violações de segurança.
Portanto, o teste de penetração é necessário principalmente para:
- Os dados financeiros ou críticos devem ser protegidos durante a transferência entre sistemas diferentes ou pela rede.
- Muitos clientes estão solicitando o teste da caneta como parte do ciclo de lançamento do software.
- Para proteger os dados do usuário.
- Para localizar vulnerabilidades de segurança em um aplicativo.
- Para descobrir lacunas no sistema.
- Para avaliar o impacto comercial de ataques bem-sucedidos.
- Para atender a conformidade de segurança da informação na organização.
- Para implementar uma estratégia de segurança eficaz na organização.
Qualquer organização precisa identificar problemas de segurança presentes na rede interna e nos computadores. Usando esta organização de informações pode planejar uma defesa contra qualquer tentativa de hacking. A privacidade do usuário e a segurança dos dados são as maiores preocupações atualmente.
Imagine se algum hacker conseguisse obter detalhes do usuário de um site de rede social como o Facebook. A organização pode enfrentar questões legais devido a uma pequena lacuna deixada em um sistema de software. Conseqüentemente, as grandes organizações estão procurando certificações de conformidade PCI (Payment Card Industry) antes de fazer qualquer negócio com clientes terceiros.
O que deve ser testado?

- Software (sistema operacional, serviços, aplicativo)
- Hardware
- Rede
- Processos
- Comportamento do usuário final
Tipos de teste de penetração
# 1) Teste de Engenharia Social: Neste teste, estão sendo feitas tentativas para fazer uma pessoa revelar informações confidenciais como senha, dados críticos de negócios, etc. Esses testes são feitos principalmente por telefone ou internet e são direcionados a determinados helpdesks, funcionários e processos.
Erros humanos são as principais causas da vulnerabilidade de segurança. Os padrões e políticas de segurança devem ser seguidos por todos os membros da equipe para evitar tentativas de penetração da engenharia social. Um exemplo desses padrões inclui não mencionar nenhuma informação sensível no e-mail ou telefone. As auditorias de segurança podem ser realizadas para identificar e corrigir falhas de processo.
# 2) Teste de aplicativo da Web: Usando métodos de software, pode-se verificar se o aplicativo está exposto a vulnerabilidades de segurança. Ele verifica a vulnerabilidade de segurança de aplicativos da web e programas de software posicionados no ambiente de destino.
# 3) Teste de penetração física: Fortes métodos de segurança física são aplicados para proteger dados confidenciais. Isso geralmente é usado em instalações militares e governamentais. Todos os dispositivos físicos de rede e pontos de acesso são testados quanto às possibilidades de qualquer violação de segurança. Este teste não é muito relevante para o escopo dos testes de software.
# 4) Teste de serviços de rede : Este é um dos testes de penetração mais comumente realizados, onde as aberturas na rede são identificadas por qual entrada está sendo feita nos sistemas da rede para verificar que tipo de vulnerabilidades existem. Isso pode ser feito localmente ou remotamente.
# 5) Teste do lado do cliente : Tem como objetivo pesquisar e explorar vulnerabilidades em programas de software do lado do cliente.
# 6) Discagem de guerra dial-up remota : Ele procura modems no ambiente e tenta fazer login nos sistemas conectados por meio desses modems por adivinhação de senha ou força bruta.
# 7) Teste de segurança sem fio : Ele descobre os hotspots ou redes Wi-Fi abertos, não autorizados e menos protegidos e se conecta por meio deles.
As 7 categorias acima que vimos são uma forma de categorizar os tipos de pen tests. Também podemos organizar os tipos de teste de penetração em três partes, conforme mostrado abaixo:

Vamos discutir essas abordagens de teste uma por uma:
- Teste de penetração da caixa preta : Nesta abordagem, o testador avalia o sistema, rede ou processo de destino sem o conhecimento de seus detalhes. Eles apenas têm um nível muito alto de entradas, como URL ou nome da empresa, com os quais penetram no ambiente de destino. Nenhum código está sendo examinado neste método.
- Teste de penetração da caixa branca : Nesta abordagem, o testador é equipado com detalhes completos sobre o ambiente de destino - sistemas, rede, sistema operacional, endereço IP, código-fonte, esquema, etc. Ele examina o código e descobre erros de design e desenvolvimento. É uma simulação de um ataque à segurança interna.
- Teste de penetração da caixa cinza : Nesta abordagem, o testador tem detalhes limitados sobre o ambiente de destino. É uma simulação de ataques externos à segurança.
Técnicas de teste de caneta
- Teste de Penetração Manual
- Usando ferramentas de teste de penetração automatizadas
- Combinação de processo manual e automatizado
O terceiro processo é mais comum para identificar todos os tipos de vulnerabilidades.
Teste de Penetração Manual
É difícil encontrar todas as vulnerabilidades usando ferramentas automatizadas. Existem algumas vulnerabilidades que podem ser identificadas apenas pela verificação manual. Os testadores de penetração podem executar ataques melhores em aplicativos com base em suas habilidades e conhecimento do sistema que está sendo invadido.
Os métodos como a engenharia social podem ser feitos apenas por humanos. A verificação manual inclui design, lógica de negócios e verificação de código.
Processo de teste de penetração:
Vamos discutir o processo real seguido por agências de teste ou testadores de penetração. Identificar as vulnerabilidades presentes no sistema é a primeira etapa importante neste processo. Uma ação corretiva é executada nesta vulnerabilidade e os mesmos testes de penetração são repetidos até que o sistema seja negativo para todos os testes.
Podemos categorizar esse processo nos seguintes métodos:

# 1) Coleta de dados: Vários métodos, incluindo a pesquisa do Google, são usados para obter dados do sistema de destino. Também é possível usar a técnica de análise do código-fonte da página da web para obter mais informações sobre as versões do sistema, software e plug-in.
Existem muitas ferramentas e serviços gratuitos disponíveis no mercado que podem fornecer informações como nomes de banco de dados ou tabelas, versões de banco de dados, versões de software, o hardware usado e vários plug-ins de terceiros usados no sistema de destino.
# 2) Avaliação de vulnerabilidade: Com base nos dados coletados na primeira etapa, pode-se encontrar a falha de segurança no sistema de destino. Isso ajuda os testadores de penetração a lançar ataques usando pontos de entrada identificados no sistema.
# 3) Exploração real: Esta é uma etapa crucial. Requer habilidades e técnicas especiais para lançar um ataque ao sistema alvo. Testadores de penetração experientes podem usar suas habilidades para lançar um ataque ao sistema.
# 4) Resultado na análise e preparação do relatório: Após a conclusão dos testes de penetração, relatórios detalhados são preparados para a tomada de ações corretivas. Todas as vulnerabilidades identificadas e métodos corretivos recomendados são listados nesses relatórios. Você pode personalizar o formato do relatório de vulnerabilidade (HTML, XML, MS Word ou PDF) de acordo com as necessidades da sua organização.
Casos de teste de amostra de teste de penetração (cenários de teste)
Lembre-se de que este não é um teste funcional. No Pentest, seu objetivo é encontrar falhas de segurança no sistema. Abaixo estão alguns casos de teste genéricos e não necessariamente aplicáveis a todos os aplicativos.
- Verifique se o aplicativo da web é capaz de identificar ataques de spam nos formulários de contato usados no site.
- Servidor proxy - Verifique se o tráfego da rede é monitorado por dispositivos proxy. O servidor proxy torna difícil para os hackers obterem detalhes internos da rede, protegendo assim o sistema de ataques externos.
- Filtros de e-mail de spam - Verifique se o tráfego de e-mail de entrada e saída é filtrado e se os e-mails não solicitados são bloqueados.
- Muitos clientes de e-mail vêm com filtros de spam embutidos que precisam ser configurados de acordo com suas necessidades. Essas regras de configuração podem ser aplicadas a cabeçalhos, assunto ou corpo de e-mail.
- Firewall - Certifique-se de que toda a rede ou computadores estejam protegidos com firewalls. Um Firewall pode ser um software ou hardware para bloquear o acesso não autorizado a um sistema. Um Firewall pode impedir o envio de dados para fora da rede sem sua permissão.
- Tente explorar todos os servidores, sistemas de desktop, impressoras e dispositivos de rede.
- Verifique se todos os nomes de usuário e senhas são criptografados e transferidos por conexões seguras como https.
- Verifique as informações armazenadas em cookies do site . Não deve estar em um formato legível.
- Verifique as vulnerabilidades encontradas anteriormente para verificar se a correção está funcionando.
- Verifique se não há nenhuma porta aberta na rede.
- Verifique todos os dispositivos de telefone.
- Verifique a segurança da rede WIFI.
- Verifique todos os métodos HTTP. Os métodos PUT e Delete não devem ser ativados em um servidor web.
- Verifique se a senha atende aos padrões exigidos. A senha deve ter pelo menos 8 caracteres contendo pelo menos um número e um caractere especial.
- O nome de usuário não deve ser “admin” ou “administrador”.
- A página de login do aplicativo deve ser bloqueada após algumas tentativas malsucedidas de login.
- As mensagens de erro devem ser genéricas e não devem mencionar detalhes específicos do erro, como “Nome de usuário inválido” ou “Senha inválida”.
- Verifique se os caracteres especiais, tags HTML e scripts são tratados adequadamente como um valor de entrada.
- Os detalhes do sistema interno não devem ser revelados em nenhuma das mensagens de erro ou alerta.
- Mensagens de erro personalizadas devem ser exibidas para os usuários finais no caso de uma falha na página da web.
- Verifique o uso de entradas de registro. Informações confidenciais não devem ser mantidas no registro.
- Todos os arquivos devem ser verificados antes de carregá-los no servidor.
- Dados confidenciais não devem ser transmitidos em URLs durante a comunicação com diferentes módulos internos do aplicativo da web.
- Não deve haver nenhum nome de usuário ou senha codificados no sistema.
- Verifique todos os campos de entrada com string de entrada longa com e sem espaços.
- Verifique se a funcionalidade de redefinição de senha é segura.
- Verificar inscrição para Injeção SQL .
- Verificar inscrição para Cross-Site Scripting .
- Validações de entrada importantes devem ser feitas no lado do servidor em vez de verificações de JavaScript no lado do cliente.
- Os recursos críticos do sistema devem estar disponíveis apenas para pessoas e serviços autorizados.
- Todos os logs de acesso devem ser mantidos com as permissões de acesso adequadas.
- Verifique se a sessão do usuário termina após o logoff.
- Verifique se a navegação no diretório está desabilitada no servidor.
- Verifique se todos os aplicativos e versões de banco de dados estão atualizados.
- Verifique a manipulação de URL para verificar se um aplicativo da web não está exibindo informações indesejadas.
- Verifique o vazamento de memória e o estouro de buffer.
- Verifique se o tráfego de rede de entrada é verificado para encontrar ataques de Trojan.
- Verifique se o sistema está protegido contra ataques de força bruta - um método de tentativa e erro para encontrar informações confidenciais, como senhas.
- Verifique se o sistema ou rede está protegido contra ataques DoS (negação de serviço). O hacker pode ter como alvo a rede ou um único computador com solicitações contínuas devido aos recursos no sistema de destino ficarem sobrecarregados, resultando na negação de serviço para solicitações legítimas.
- Verifique o aplicativo para ataques de injeção de script HTML.
- Verifique contra ataques COM e ActiveX.
- Verifique contra ataques de spoofing. O spoofing pode ser de vários tipos - spoofing de endereço IP, spoofing de ID de email,
- ARP spoofing, referrer spoofing, caller ID spoofing, envenenamento de redes de compartilhamento de arquivos, GPS spoofing.
- Verifique se há um ataque de string de formato não controlado - um ataque à segurança que pode fazer com que o aplicativo trave ou execute um script prejudicial nele.
- Verificar ataque de injeção de XML - usado para alterar a lógica pretendida do aplicativo.
- Verifique contra ataques de canonização.
- Verifique se as páginas de erro estão exibindo alguma informação que pode ser útil para um hacker entrar no sistema.
- Verifique se algum dado crítico, como a senha, está armazenado em arquivos secretos no sistema.
- Verifique se o aplicativo está retornando mais dados do que o necessário.
Esses são apenas os cenários de teste básicos para começar a usar o Pentest. Existem centenas de métodos de penetração avançados que podem ser feitos manualmente ou com a ajuda de ferramentas de automação.
Leitura adicional:
Padrões de teste de caneta
- PCI DSS (Padrão de segurança de dados da indústria de cartões de pagamento)
- OWASP (Abra o projeto de segurança de aplicativos da Web)
- ISO / IEC 27002 , OSSTMM (Manual de metodologia de teste de segurança de código aberto)
Certificações
- GPEN
- Testador de segurança associado ( AST )
- Testador de segurança sênior (SST)
- Testador de penetração certificado ( CPT )
Conclusão
Finalmente, como um testador de penetração, você deve coletar e registrar todas as vulnerabilidades no sistema. Não ignore nenhum cenário, considerando que ele não será executado pelos usuários finais.
como você abre arquivos jar
Se você é um testador de penetração, ajude nossos leitores com sua experiência, dicas e exemplos de casos de teste sobre como realizar o teste de penetração com eficácia.
Leitura recomendada
- 19 ferramentas poderosas de teste de penetração usadas por profissionais em 2021
- Guia para iniciantes em testes de penetração em aplicativos da Web
- Teste Alfa e Teste Beta (um guia completo)
- Teste de segurança de rede e as melhores ferramentas de segurança de rede
- Guia de teste de segurança de aplicativos da Web
- Guia completo de teste de verificação de compilação (teste BVT)
- Teste Funcional Vs Teste Não Funcional
- Melhores ferramentas de teste de software 2021 (QA Test Automation Tools)