Escolar Documentos
Profissional Documentos
Cultura Documentos
1 -
Pentesting e as Metodologias
Como vimos anteriormente, os pentest são um método para avaliar a segurança de um sistema de
informação ou rede através da simulação de um ataque para descobrir vulnerabilidades que um
atacante poderia explorar. O pentest expõe as lacunas no modelo de segurança de uma organização e
ajuda-a, de acordo com a análise de risco, a alcançar um equilíbrio entre a funcionalidade, usabilidade
e segurança. O teste valida a eficácia das proteções e controlos de segurança implementados,
devendo realçar se existem vulnerabilidades de alta severidade (i.e., risco alto para o negócio).
O conselho executivo da organização cliente, deve fornecer permissão clara por escrito para a
realização do pentest. Essa aprovação deve incluir o âmbito dos testes (i.e., objetivos e limites), uma
descrição do que testar e quando os testes serão realizados. Devido à natureza dos pentest, uma
falha em obter essa aprovação pode resultar em cometer um crime informático, apesar das
melhores intenções de cada um.
2. Tipos de Pentest
3. Metodologias de Pentests
Agora que compreendemos o que são pentests, vamos abordar as metodologias e as etapas para a
consecução do mesmo. Uma metodologia de pentest refere-se a uma abordagem metodológica para
descobrir e verificar vulnerabilidades nos mecanismos de segurança de um sistema de informação,
permitindo assim aos administradores aplicar controlos de segurança apropriados para proteger os
dados críticos e processos do negócio.
OSSTMM [3], Open-Source Security Testing Methodology Manual, compilado por Pete Herzog,
é uma metodologia abrangente revista por pares, para realizar testes de segurança: operacional de
locais físicos; de fluxos de trabalho; humana (engenharia social); física; de redes sem fios; de
telecomunicações; das redes de dados e conformidade. É considerado como um padrão para o
mais alto nível de testes. É um documento de suporte com referências conceptuais, sem muitos
detalhes práticos (e.g., hands-on, ferramentas).
PCI Penetration Testing Guide[6], a norma PCI DSS (Payment Card Industry Data Security
Standard) define pentests como requisito, e indica este guia.
OWASP, Open Web Application Security Project[7], descreve como identificar vulnerabilidades
em aplicações Web (Top Ten do OWASP). O OWASP fornece guias de testes dedicados a serviços
web/cloud[8], aplicações móveis (Android/iOS)[9], ou firmware IoT[10].
As fases seguintes seguem o padrão PTES referido anteriormente. É um ponto de partida, pois está
bastante completo e tem uma boa navegabilidade online.
Esta é a fase mais importante de um pentest. Nesta fase, começa-se a definir o plano, alinhado com
os objetivos comerciais do cliente. O objetivo é assegurar que todos os envolvidos estejam
sintonizados e que as expectativas sejam fixadas com a máxima antecedência.
Durante esta fase, é necessário tempo para compreender os requisitos e objetivos. É necessário saber
porque é que o cliente está a realizar um teste de penetração? Foi atacado? Devido a necessidade de
compliance? Ou apenas para melhorar a postura de segurança?
É importante falar com o cliente e compreender os seus objetivos comerciais para melhor percebermos
como planear e definir o âmbito do pentest.
Outros aspetos
• Se o pentest for realizado com fins comerciais, é importante definir um plano de pagamentos.
Neste sentido é importante definir custos, por teste a cada IP, a cada tipo de serviço, a redes com
determinada dimensão, etc.
• É fundamental obter a autorização (documento formal, e.g., termo de abertura) para a
realização do pentest, que deverá conter ou referenciar (outro documento) os aspetos
mencionados anteriormente. É igualmente importante assinar um termo de confidencialidade NDA
(non-disclosure agreement), pois como resultado do pentest podem ser descobertas
vulnerabilidades valiosas para agentes maliciosos.
• A definição de como será entregue o relatório final (distribuição) e qual a classificação de
segurança que deverá ter, deve ficar clara desde início.
Existem várias técnicas de modelação de ameaças, a STRIDE é mais antiga e ainda útil:
Existem diversas outras metodologias para modelação de ameaças[17][18]: PASTA, VAST, OCTAVE,
DREAD, entre outras.
Existem também várias ferramentas[18:1], que podem ser úteis nesta fase, para a modelação de
ameaças com recursos a gráficos ou árvores de ataque. Dois exemplos são a Microsoft Threat
Modelling Tool[19] ou a OWASP Threat Dragon[20]. Este tipo de ferramentas, permite visualizar as
ligações e interações possíveis entre vários elementos de um sistema de informação, identificando as
ameaças que podem advir dessas ligações.
Nesta fase, o foco é explorar vulnerabilidades encontradas e conseguir o acesso aos sistemas,
contornando os mecanismos de segurança implementados. Nesta fase utilizam-se diversas
ferramentas (e.g., Metasploit) e exploits já concebidos por alguém para explorar as vulnerabilidades
encontradas, e em casos mais complexos, pode ser necessário conceber os exploits ou adaptar os
existentes.
Nesta fase, após entrar num sistema, é tempo de procurar ativos críticos, tentar escalar privilégios,
mover-se lateralmente dentro da rede. Tal como os hackers maliciosos fazem após violar um sistema,
implica mover-se dentro do sistema ou da rede em busca de informação ou ativos mais valiosos. Pode
também instalar backdoors para que os sistemas comprometidos possam facilmente ser acedidos.
Esta fase deve terminar, com a notificação, limpeza e destruição de artefactos. Esta fase é crítica para
qualquer teste de penetração, pois é da responsabilidade do pentester restaurar os sistemas para o
estado de pré-teste.
É também muito importante que o pentester documente todas as atividades e registe todas as
observações e resultados, para que o teste possa ser repetido e verificado. Para que a organização
possa quantificar o risco de segurança em termos do impacto nos negócios, é essencial que a
identificação dos sistemas e ativos críticos, tenham as ameaças mapeadas. Toda esta informação
deve ser consolidada num relatório final. É igualmente importante fornecer ao cliente as
recomendações sobre como corrigir as vulnerabilidades expostas no pentest.
O relatório deve ter um sumário executivo e um relatório técnico. Cada secção tem de ser
adaptada ao público que a vai ler ou a quem se está a apresentar. Por exemplo, num sumário
executivo não refere que "o sistema X foi explorado com o exploit MS17-010 EternalBlue...", isto deve
ser dito apenas no relatório técnico. Num sumário executivo pode referir de forma genérica que "o
sistema X tem uma vulnerabilidade crítica que pode ser explorada".
Note-se que, dado que o relatório pode conter informação crítica sobre vulnerabilidades da
organização, deve ser classificado com um nível elevado de confidencialidade (por exemplo TOP
SECRET) e o relatório será tratado em conformidade. A classificação do relatório deverá basear-se na
política de classificação da informação da organização alvo.
A distribuição do relatório, é outro aspeto importante. O número de cópias, o formato (papel ou
digital) e o procedimento de entrega deve ser cuidadosamente implementado para controlar a
distribuição do relatório e certificar-se de que só chega às pessoas certas nos momentos certos, com
base na necessidade de conhecer e no que foi definido previamente.
De seguida faz-se referência ao conteúdo que deve conter cada uma das secções:
Sumário Executivo
Refere os objetivos do pentest e fornece um visão geral dos resultados a um nível macro. Quem lê
esta secção são os administradores da organização (muitas vezes sem conhecimento técnico de
informática), a informação aqui colocada tem de clara e simples. Deve conter:
• Enquadramento, e.g., objetivos do pentest;
• Classificação geral da postura de segurança: quão efetiva é a organização em relação aos testes
efetuados e aos objetivos traçados;
• Nível de risco: e.g., extremo, alto, moderado, baixo. É necessário explicar o porquê (e.g., "o
servidor X tem vulnerabilidades facilmente exploráveis", "foram encontradas N vulnerabilidades
que comprometem...", "não foram encontradas vulnerabilidades de alto impacto", etc.);
• Descobertas: aqui é útil usar gráficos para realçar as vulnerabilidades segundo a severidade ou
facilidade de exploração, bem como, necessidades de patches ou hardening dos sistemas;
• Recomendações e plano de ação: numa perspetiva macro (sem detalhes), o que é que tem de
ser feito para corrigir/mitigar as descobertas. Devem ser definidas janelas temporais (e.g., 1 mês, 3
meses, 1 ano) e ações a desenvolver de acordo com uma priorização associada ao risco ou ao
impacto dessas mudanças no negócio.
Relatório Técnico
O relatório técnico inclui muito mais detalhes em comparação com o anterior. No relatório técnico,
refere-se o âmbito detalhado, a informação, os métodos de ataque, e passos de remediação na
íntegra. Neste relatório, podem utilizar-se termos técnicos (e.g., hashes, endereços IP, shell, etc.).
O relatório pode ser constituído com os resultados principais de cada fase. Deve conter:
• Introdução: inclui o âmbito, contactos, sistemas, abordagem (e metodologia utilizada), síntese
dos principais resultados e estrutura do relatório.
• Recolha de Informação: o que foi possível obter, de interesse para o pentest, com o
reconhecimento passivo (e.g., OSINT) e com reconhecimento ativo (e.g., engenharia social,
scanning, etc.)?
• Análise de Vulnerabilidades: explicar como foi feita a deteção de vulnerabilidades e quais foram
encontradas.
• Exploração: mostrar evidências que demonstram como podem as vulnerabilidades ser
exploradas. Deve incluir também o que foi feito, quando, facilidade, nível de acesso obtido, etc.
• Pós-Exploração: incluir se foi possível escalar privilégios e como, extrair dados, informação
obtida, persistência, etc.
• Exposição e risco: os resultados anteriores são combinados para explicar os riscos e exposição.
Deve incluir a facilidade e nível de competências requeridas para explorar as vulnerabilidades, a
eficácia das contramedidas em vigor, e eventualmente pode envolver o cálculo de estimativa de
perdas.
• Conclusões: a conclusão deve terminar com uma nota positiva a destacar qualquer orientação
para aumentar a postura de segurança da empresa e deve incluir claro a visão geral do pentest
efetuado.
Exemplos de relatórios:
• Ver white paper[21] da SANS, que para além de ter um relatório de exemplo em anexo ao paper,
tem muitas dicas importantes (as mais importantes estão refletidas neste documento);
• No website pentestreports.com[22] têm muitos exemplos, apesar de nenhum estar perfeito,
podem sempre aproveitar e acrescentar alguns dos aspetos mencionados aqui. Os mais completos
são o da CCSO[23] e o da Satiex[24]. Têm também um plano[25], muito útil como termo de abertura
e para definição do plano do pentest.
Notas Finais
O âmbito e o tipo de pentests a que uma organização se sujeita, evolui na mesma medida da
maturidade de segurança das organizações. As organizações implementam políticas, planos de
continuidade de negócio, avaliação de risco, entre outras, tais como os pentests, como parte
integrante da sua segurança. São necessários pentests regulares para a conformidade com
regulamentos como o PCI DSS e ISO 27001, e são fortemente aconselhados em todas as frameworks
de segurança (e.g., Quadro Nacional de Referência para a Cibersegurança[26]).
Depois de vermos os conceitos e metodologias associadas aos pentests, é altura de passar à parte
prática!
1. https://pt.wikipedia.org/wiki/Fuzzing ↩︎
2. https://owasp.org/www-project-web-security-testing-guide/latest/3-
The_OWASP_Testing_Framework/1-Penetration_Testing_Methodologies ↩︎
3. https://www.isecom.org/research.html#content5-9d ↩︎
4. https://csrc.nist.gov/publications/detail/sp/800-115/final ↩︎
5. http://www.vulnerabilityassessment.co.uk/Penetration Test.html# ↩︎
6. https://www.pcisecuritystandards.org/documents/Penetration-Testing-Guidance-v1_1.pdf ↩︎
7. https://owasp.org/Top10/#methodology ↩︎
8. https://owasp.org/www-project-web-security-testing-guide/ ↩︎
9. https://owasp.org/www-project-mobile-security-testing-guide/ ↩︎
10. https://github.com/scriptingxss/owasp-fstm ↩︎
11. http://www.pentest-standard.org/index.php/Main_Page ↩︎
12. http://www.pentest-standard.org/index.php/PTES_Technical_Guidelines ↩︎
13. https://www.microsoft.com/en-us/msrc/pentest-rules-of-engagement ↩︎
14. https://aws.amazon.com/pt/security/penetration-testing/ ↩︎
15. https://cloud.google.com/security ↩︎
16. https://www.synopsys.com/blogs/software-security/threat-modeling-vocabulary/ ↩︎
17. https://threatmodeler.com/threat-modeling-methodologies-overview-for-your-business/ ↩︎
18. https://www.eccouncil.org/threat-modeling/ ↩︎ ↩︎
19. https://docs.microsoft.com/pt-pt/azure/security/develop/threat-modeling-tool ↩︎
20. https://owasp.org/www-project-threat-dragon/ ↩︎
21. https://sansorg.egnyte.com/dl/yNfjHOQix8 ↩︎
22. https://pentestreports.com/ ↩︎
23. https://pentestreports.com/templates/downloads/ccso-report-template.docx ↩︎
24. https://pentestreports.com/templates/downloads/satiexs-penetration-test-report-template.docx ↩︎
25. https://pentestreports.com/templates/downloads/cmgt400_v7_wk2_penetration_testing_plan_templ
ate.docx ↩︎
26. https://www.cncs.gov.pt/docs/cncs-qnrcs-2019.pdf ↩︎