Baixe o app para aproveitar ainda mais
Prévia do material em texto
108 Unidade IV Unidade IV 7 MÉTODO DE ESTUDO 7.1 Capture the flag Uma forma de iniciar o aprendizado em técnicas de hacking é estudar as plataformas de capture the flag (CTFs), competições cujos participantes têm como objetivo descobrir uma flag utilizando as mais variadas ferramentas e técnicas de subversão para desvendar o enigma de desafios propostos. Os jogos englobam pergunta, desafio e resposta. De modo geral, as flags são alguns dados apresentados quando se consegue atingir o objetivo do desafio. As modalidades mais comuns são: • Engenharia reversa: os participantes precisam entender e alterar o comportamento de binários, fazendo o caminho reverso e descompilando o funcionamento do binário para concluir o desafio. • Criptografia: testa o entendimento dos participantes referente a dados e sistemas criptografados; a ideia é desvendar os dados que estão ilegíveis. • Esteganografia: serve para encontrar informações ocultas em imagens ou arquivos; essa técnica é usada para esconder uma mensagem dentro de um arquivo que aparentemente não possui aquela informação. Por exemplo, uma foto com uma senha embutida. • Forense: envolve a análise forense de memória, a análise de tráfego de rede e de discos rígidos. O objetivo é recuperar dados que estavam gravados e que, de alguma forma, foram comprometidos. • Diversos: são conhecidos como misc, abrangendo mais de uma modalidade, como forense e programação (são misturados), e não se encaixam em outras categorias. Podem envolver conhecimentos gerais sobre segurança da informação e o mundo da tecnologia. • Web Hacking: são os principais desafios das plataformas e são voltados às vulnerabilidades em sistemas web. • Redes: abordam investigação de dump de rede focados em análises de pacotes, quebras de senhas e reconhecimento de informações que estão trafegando. • XPL: exploração de binários focados em alterar o fluxo de um programa durante uma exploração. • PPC: envolve os desafios de programação. Os participantes se deparam com códigos de qualquer linguagem, e estes podem ser alterados para o resultado necessário da flag; eles também podem ser bem complexos, ao ponto de os participantes terem que mudar a linguagem usada. 109 PARECERES E TESTES DE INVASÃO Existem alguns eventos nacionais e internacionais para tais práticas, e o Hackflag, do RoadSec, é a principal plataforma nacional. Pode ser acessado via internet, mas após a evolução da competição, os embates passaram a ser realizados presencialmente nos eventos do RoadSec. O evento ocorre em diversas cidades do Brasil e os vencedores concorrem a prêmios. Os desafios de CTF são para desvendar problemas de segurança da informação, e os participantes têm como desafio explorar ou defender uma vulnerabilidade de um sistema ou aplicativo. Um CTF envolve uma captura lógica de bandeiras e pode ter como base um pentesting, ataques a URL, engenharia reversa, autenticação pautada no conhecimento, falsificação de endereços de IP, quebra de senhas, de códigos, forense, entre outras técnicas. A gincana pode ser feita individualmente ou em grupos, e o CTF pode ocorrer de três formas diferentes. O primeiro é Jeopardy-Style, no qual os jogadores precisam resolver os desafios e os pontos são de acordo com a complexidade do problema. Em alguns casos, são on-line e servem de qualificação para a final. O segundo se chama Attack e/ou Defense, e os competidores têm acesso a ambientes com falhas e vulnerabilidades que deverão ser solucionadas em determinado tempo. Assim, quando esse tempo se encerra, os jogadores deverão invadir o ambiente do adversário e proteger o próprio ambiente ao mesmo tempo. Por último, há os híbridos, nos quais as modalidades se misturam e podem ser usadas de várias formas. O CTF avalia todas as habilidades e vulnerabilidades de uma rede, programação, criptografia etc. Contudo, pode-se explorar os conhecimentos além de uma área específica, exigindo domínio da língua portuguesa, matemática etc. Lembrete A base do hacking é o conhecimento técnico avançado em mais de uma disciplina a fim de conseguir manipular situações para que uma atividade não programada seja executada. Em resumo, as competições englobam profissionais de diversas áreas da segurança e de TI com o objetivo de capturar a bandeira e pontuar com a resolução dos desafios de segurança da informação. Os eventos têm o intuito de aprimorar a experiência dos participantes. Em um ambiente seguro, eles podem atacar e se defender como no mundo real. A segurança contra os ataques cibernéticos é um assunto vital nas empresas, que investem tempo e dinheiro em treinamento para os profissionais na área de segurança. Os eventos de CTF promovidos são excelentes para os profissionais se descobrirem na área, para aprimorar os conhecimentos com troca de experiência com os demais. Recrutadores, diretores e gestores sempre acompanham tudo, a fim de filtrar bons profissionais no mercado. 110 Unidade IV Cada dia mais as empresas devem incentivar os profissionais de segurança a participar de eventos de CTF, pois nem sempre existe grande experiência na área. Alguns confundem CTF com hackathon. Ambos reúnem equipes para resolução de problemas com tempo limitado, porém a CTF incentiva as equipes a invadirem sistemas e evitar as defesas. Para tal, elas podem usar as estratégias que conhecem ou criar novas para ganhar mais pontos. Já o hackathon é um evento que permite que desenvolvedores e programadores mostrem seus talentos diante da criação de um programa ou aplicativo dentro de um tempo limitado. A seguir, vamos demonstrar o funcionamento de alguns portais que disponibilizam desafios de capture the flag. Saiba mais Para conhecer o maior evento de hacking no Brasil, acesse: ROADSEC 2019 reúne entusiastas da cibercultura hacker. 2019. 1 vídeo (3:14). Publicado por tvbrasil. Disponível em: https://www.youtube.com/ watch?v= I5FwfAOmUu0. Acesso em: 9 out. 2020. 7.2 Usando picoCTF para o aprendizado Trata-se de uma plataforma livre, desenvolvida pela Universidade Carnegie Mellon, uma das referências em segurança e time de respostas a incidentes. • Inicialmente, acesse https://picoctf.com/ • Selecione Register/Signin no menu superior e, em seguida, picoCTF 2019. Figura 102 – Acesso ao picoCTF 2019: tela 1 • Complete o cadastro e selecione Register team. • Você receberá um e-mail para confirmar seu cadastro. 111 PARECERES E TESTES DE INVASÃO • Clique no link recebido e valide seu login. • Ao fazer login, selecione Play as na individual para não se juntar a uma equipe. Figura 103 – Acesso ao picoCTF 2019: tela 2 • Role até o topo da página e selecione Challenge problems. Do lado esquerdo, serão apresentadas as categorias dos desafios. Figura 104 – Acesso ao picoCTF 2019: tela 3 • Selecione Only Web Exploitation. 112 Unidade IV 7.3 Desafios Primeiro desafio Figura 105 – Primeiro desafio picoCTF 2019: tela 1 Esse desafio diz que Kishor Balan nos deu uma dica de que o código abaixo precisa de inspeção e deixa um link para acesso. O campo abaixo é destinado para colocar a chave caso o jogador tenha encontrado. A aba Hints dá uma dica, caso precise, de como resolver esse desafio. Como o objetivo é o aprendizado, as dicas são explícitas, mas em alguns portais as pistas podem até atrapalhar o jogador. • Clique na palavra Link com a tecla Ctrl pressionada; então, será aberta outra aba para realizar o desafio. • Dentro de seu Firefox, aperte a tecla F12 no teclado. Assim, será apresentada a ferramenta do Firefox chamada Inspector. Hoje os navegadores modernos – Firefox, Chrome e Internet Explorer – possuem o modo Inspector instalado com pequenas mudanças em suas funcionalidades. Essencialmente, elas servem para desenvolvedores e analistas de TI fazerem diagnósticos em páginas web. Para profissionais de segurança, pode ser uma ferramenta poderosa para encontrar informações relevantes. Em uma página, é possível capturar as referências externas, como arquivos .css usadospara armazenar informações visuais sobre página e arquivos .js (javascripts) que o site usa para manipular informações. Estudando essas referências, pode-se entender como essa página se comporta. O código HTML tem referências de outras páginas e comentários muitas vezes esquecidos por programadores descuidados. A dica desse desafio diz que essa página necessita de inspeção, fazendo referência ao Inspector presente nos navegadores. Portanto, ao pressionar F12, a tela a seguir será apresentada: 113 PARECERES E TESTES DE INVASÃO Figura 106 – Primeiro desafio picoCTF 2019: tela 2 Clique com o botão direito em <html> e selecione Expand All. Figura 107 – Primeiro desafio picoCTF 2019: tela 3 Agora que todo o código-fonte da página foi aberto, encontre a parte onde ele informa sobre o início de uma flag. Figura 108 – Primeiro desafio picoCTF 2019: tela 4 114 Unidade IV O texto diz que temos 1/3 da chave “picoCTF{tru3_d3”, e agora teremos que encontrar as outras partes. O código-fonte dessa página é simples, não há quase elementos extensos para buscar. No início do código, temos duas referências externas: Figura 109 – Primeiro desafio picoCTF 2019: tela 5 Essas referências são mycss.css e myjs.js, ambos são arquivos que estão localizados no mesmo servidor e, provavelmente, na mesma pasta. Caso fossem de outro servidor, seriam referenciados com os endereços completos. • Na aba superior, selecione Style Editor para ver os arquivos .css • Em seguida, clique em mycss.css • Role o arquivo até o final e veja a segunda parte da flag. Figura 110 – Primeiro desafio picoCTF 2019: tela 6 A segunda parte da flag é: “t3ct1ve_0r_ju5t” 115 PARECERES E TESTES DE INVASÃO Agora vamos acessar o arquivo myjs.js clicando em Debugger. Depois, selecione a seta ao lado de problem/61676 e, em seguida, em myjs.js Figura 111 – Primeiro desafio picoCTF 2019: tela 7 A terceira parte da flag é “_lucky?1638dbe7}”. Juntando as três partes, temos: “picoCTF{tru3_d3t3t1ve_0r_ju5t_lucky?1638dbe7}”. As flags do portal picoCTF sempre são no formato “picoCTF{chave}”. Se, ao realizar os desafios, o jogador não chegar a uma resposta como essa, não se trata da chave. Para dificultar o jogo, há portais que não usam esse padrão ou outro, e a flag é livre, o que torna a busca mais desafiadora. Com a flag em mãos, retornamos à página de desafio e digitamos no campo para computar a pontuação ganha. Figura 112 – Primeiro desafio picoCTF 2019: tela 8 Caso a resposta esteja correta, o jogador verá no canto superior direito uma mensagem de resposta correta e os pontos serão adicionados no topo da página. Assim, os jogadores têm como adquirir conhecimento de modo gradativo e em um ambiente seguro, sem a necessidade de infringir leis ou fazer ataques reais em infraestruturas. Os desafios são 116 Unidade IV desenvolvidos por profissionais de segurança que entendem os desafios e vulnerabilidades atuais. De fato, é um bom método de aprendizado em forma de jogo. Segundo desafio Figura 113 – Segundo desafio picoCTF 2019: tela 1 O enunciado diz “Can you break this super secure portal? – Você pode explorar esse site superseguro?” • Acesse o link com o botão Ctrl pressionado. • A página abrirá com um formulário como esse: Figura 114 – Segundo desafio picoCTF 2019: tela 2 Vamos novamente inspecionar o código-fonte dessa página usando o Inspector. Para tal, aperte a tecla F12. Ao inspecionar a página, podemos ver esse trecho de javascript: Figura 115 – Segundo desafio picoCTF 2019: tela 3 117 PARECERES E TESTES DE INVASÃO Mesmo sem conhecer exatamente o que o trecho de código faz, podemos ver que essa é a função que valida o campo e alerta a mensagem “Password Verified”, que significa senha verificada. Para olhar melhor essa função, podemos usar a aba Debugger. Figura 116 – Segundo desafio picoCTF 2019: tela 4 Nesse pedaço do código, podemos ver trechos da flag inseridos em “’pico’” e “CTF{”. As numerações ao lado do campo split podem dar a ideia de ordem em que os campos podem ser dispostos. Sabendo que a flag é “picoCTF{flag}”, podemos seguir a lógica da posição do primeiro split: • ...(0, split) == ‘pico’ • ...(split, split*2) == CTF{“ • ...(split*2, split*3) == no_c” • ...(split*3, split*4) == lien” • ...(split*4, split*5) == ts_p” • ...(split*5, split*6) == lz_9” • ...(split*6, split*7) == 0ff3” • ...(split*7, split*8) == 4}” Montando a flag picoCTF{no_clients_plz_9off34). Muitas vezes, analisando o código-fonte de sites, podemos ver como as funções operam. Assim, podemos explorar alguma falha ou conseguir acesso através do fluxo do código. • Retorne à página de desafios e digite a flag. Depois, clique em Submit para pontuar. 118 Unidade IV Terceiro desafio Veremos agora um desafio de exploração de binários. Binários são os executáveis que podem realizar ações maliciosas. Podem ser programas criados para serem explorados ou partes de funções de segurança que são usadas por outros programas. Figura 117 – Segundo desafio picoCTF 2019: tela 1 A dificuldade será maior a cada etapa concluída. O enunciado diz que a fábrica está escondendo algo de todos os seus usuários e pergunta se você conseguiria fazer login. • Clique no link com a tecla Ctrl pressionada para abrir o site. Figura 118 – Terceiro desafio picoCTF 2019: tela 2 Inicialmente, teremos uma tela de login. Ao tentar fazer acesso com qualquer credencial, uma tela de acesso logado será mostrada, porém sem a flag de resposta. 119 PARECERES E TESTES DE INVASÃO Figura 119 – Terceiro desafio picoCTF 2019: tela 3 Para visualizar esse desafio, usaremos o Inspector no modo Network para ver a entrada e a saída de pacotes trocados entre o navegador e o servidor. Caso esteja na mesma tela apresentada na imagem anterior, volte à página inicial. • Aperte F12 para abrir o Inspector. • Clique em Network e ative a opção Persist Logs. A opção de persistir logs é manter toda a interação feita com o navegador e o servidor gravada no Inspector; se não deixarmos essa opção ativa, a cada alteração ou navegação que realizarmos, ela será apagada e serão gravados novos dados. Figura 120 – Terceiro desafio picoCTF 2019: tela 4 Com o Inspector aberto, vamos inserir qualquer credencial de login e senha e inspecionar os pacotes. • Digite “teste” em Username e “teste” em password. • Clique em Sign In. 120 Unidade IV Figura 121 – Terceiro desafio picoCTF 2019: tela 5 Nesse momento, serão mostrados os pacotes trocados com o método GET ou POST em cada pacote. Ao clicar nos pacotes, podemos ver mais dados, selecionar o cabeçalho em Headers, ver as variáveis criadas em Cookies, os parâmetros passados em Params, a resposta em Response; e no caso do Timings, podemos ver o tempo de resposta desse pacote, e, em Security, os dados do certificado usado na página. Analisando os pacotes, podemos ver no segundo, de login em headers, os cookies gravados. Cookies são informações que o navegador grava internamente em um arquivo para resgatá-las posteriormente, como os itens dentro de um carrinho ou preferências dentro de um site de compras. É uma funcionalidade antiga que ainda permanece nos navegadores atuais. Figura 122 – Terceiro desafio picoCTF 2019: tela 6 Nesse pacote, podemos ver a gravação de cookies da senha “password=teste”, “username=teste” e um campo chamado “admin=False”, ou seja, administrador igual a falso. Os cookies ficam armazenados na parte interna do navegador, e nós podemos alterar essa informação. Para facilitar a edição, vamos usar uma extensão do navegador chamado Cookie Editor. Observação Muitas ferramentas disponíveis na internet de fontes não confiáveis prometem realizar determinadas atividades, cuidado. Verifique se aquela aplicação de fato somente faz o que está sendo descrito ou se há funcionalidades não declaradas em seu funcionamento. 121 PARECERES E TESTES DE INVASÃO • Abra uma nova guia do navegador e digite “cookie editor firefox” e pressione Enter. • Clique no primeiroresultado: https://addons.mozilla.org/pt-BR/firefox/addon/cookie-editor/ • Clique em Adicionar ao Firefox. Figura 123 – Terceiro desafio picoCTF 2019: tela 7 • Em seguida, clique em Add. Figura 124 – Terceiro desafio picoCTF 2019: tela 8 • Marque a opção “Allow this extension to run in Private Windows”. Essa opção serve para que a extensão também funcione em janelas anônimas. Essas janelas anônimas são usadas para não deixar o navegador gravar credenciais de acesso e histórico nos seus arquivos internos. • Clique em “Okay, Got It”. 122 Unidade IV Figura 125 – Terceiro desafio picoCTF 2019: tela 9 Com a extensão adicionada, volte à aba do site que estamos trabalhando e clique no botão superior em formato de cookie. As variáveis gravadas no cookie serão listadas: Figura 126 – Terceiro desafio picoCTF 2019: tela 10 Vemos as quatro primeiras variáveis gravadas pelo navegador e as demais gravadas pela página. Ao clicar em admin, podemos alterar seu valor de False (Falso) para True (Verdadeiro): Figura 127 – Terceiro desafio picoCTF 2019: tela 11 • Ao clicar em salvar (imagem do disquete), ao lado do campo True, salvamos esse valor nos cookies. 123 PARECERES E TESTES DE INVASÃO • Volte para a página e aperte F5 para recarregá-la. Figura 128 – Terceiro desafio picoCTF 2019: tela 12 A flag é demonstrada na tela, e isso significa que completamos o objetivo. O uso de cookies para armazenar informações sensíveis é uma prática insegura e comum. A alteração desses campos é simples, tudo fica armazenado na parte do cliente, e não há nenhuma garantia de que algo não tenha sido alterado. Analisar os pacotes, os dados de cookie e como o site se comporta pode trazer grandes descobertas de como explorar o seu funcionamento. • Volte para a página de desafios e pontue com a flag encontrada. Figura 129 – Terceiro desafio picoCTF 2019: tela 13 O próximo desafio é simples de ser resolvido, mas também denota uma falha comum em sistemas web: o arquivo robots.txt. Conforme Moreno (2017), esse arquivo é usado para demonstrar aos indexadores como googlebot quais páginas não devem ser indexadas, evitando que uma pessoa, ao acessar o Google, consiga saber que aquele conteúdo existe. Observação Com o uso do Google Hacking, é possível descobrir uma série de informações, arquivos e links sobre as organizações. Com o arquivo robots, pode-se impedir essa indexação automática. 124 Unidade IV Quarto desafio • Clique no link com a tecla Ctrl pressionada para abrir uma nova aba. Figura 130 – Quarto desafio picoCTF 2019: tela 1 O enunciado diz “Você pode encontrar os robôs?” Essa é uma referência ao arquivo robots, normalmente encontrado na raiz do site. Por exemplo, no site oficial da UNIP, o arquivo robots está em https://unip.br/robots.txt Ao acessar o desafio, digite na barra de endereço o arquivo robots.txt ao lado da URL da seguinte forma: Figura 131 – Quarto desafio picoCTF 2019: tela 2 • Em seguida, pressione Enter para acessar. Vemos no arquivo robots.txt que não deve ser indexada a página 713d3.html Para saber o que tem dentro dessa página, vamos acessá-la da mesma forma que acessamos o arquivo robots, através do acesso direto ao arquivo: Figura 132 – Quarto desafio picoCTF 2019: tela 3 Assim, descobrimos essa flag dentro da página. Muitas vezes, a organização não quer permitir a indexação porque ela está ligada diretamente a informações confidenciais ou a telas de login de sistemas críticos. Como não serão indexadas pelo Google ou outros buscadores, deve-se conferir o arquivo robots.txt para verificar se links importantes podem ser extraídos dele. 125 PARECERES E TESTES DE INVASÃO • Volte para a página do desafio e cole a flag para pontuar: Figura 133 – Quarto desafio picoCTF 2019: tela 4 Na próxima tarefa desse desafio, vamos ver técnicas de ofuscação, que são usadas para dificultar a análise do código de um programa, página ou binário. Sabendo da prática de análise de código e engenharia reversa, pode-se usar ofuscação de código, que embaralha o código-fonte, aumentando a dificuldade de um ataque bem-sucedido. Acesse o próximo desafio: Figura 134 – Quarto desafio picoCTF 2019: tela 5 O enunciado remete a um desafio já realizado, porém não é o mesmo. • Clique em link com o botão Ctrl pressionado para criar uma aba. • Abra o Inspector e entre em Debugger. Não é fácil de identificar o script de validação do campo como vimos anteriormente. Observe que há uma linha extensa com um código ofuscado: Figura 135 – Quarto desafio picoCTF 2019: tela 6 126 Unidade IV Além de essa função ser extensa, os campos não possuem nomes comuns e as variáveis estão ofuscadas, por exemplo: 0x5a46, 0x4bf822, 0x2bd6f7. Enquanto um código comum possui dez linhas com variáveis de nome “login” e “senha”, um código ofuscado de vinte linhas com variáveis de nomes “0x4acda” e “0x474acd” poderá levar algumas horas para ter suas variáveis totalmente compreendidas. Para resolver esse desafio, selecione a linha completa desse código e abra o editor de texto mousepad: • Em um terminal, digite “mousepad”. • Cole o conteúdo copiado para leitura. Lembrete O uso de cookies para armazenar informações sensíveis é uma prática insegura e comum. Para conseguir encontrar a flag, separe esse código como se fosse escrito por um programador, e a organização do código é chamada de indentação: Figura 136 – Quarto desafio picoCTF 2019: tela 7 Já no início conseguimos ver os campos iniciados na variável 0x5a46 e podemos juntá-los para montar uma frase: picoCTF{not_this_again055670}. A parte legível significa “isso novamente não”. Para pontuar, acesse novamente a página do desafio e cole a flag encontrada. Figura 137 – Quarto desafio picoCTF 2019: tela 8 127 PARECERES E TESTES DE INVASÃO Desafios de CTF podem ser educativos e divertidos, podendo ser jogados sozinhos ou em grupos. Na internet, existem vários desafios resolvidos, chamados de write-ups, que destacam as respostas de como os usuários conseguiram resolver uma determinada etapa de uma plataforma de CTF. Observação Essas respostas são escritas pelos jogadores. Pode haver somente a resposta, a explicação de como foi descoberto o resultado, detalhando o processo, ou às vezes todos esses itens juntos, com a devida conclusão de como e por que a falha ou a vulnerabilidade existe. No momento de realizar testes reais, as habilidades da equipe de testes estarão mais apuradas e preparadas para os ataques mais comuns. Além disso, haverá ideias para criar novas maneiras de completar ataques bem-sucedidos. Saiba mais Para ver um desafio de engenharia reversa sendo resolvido, acesse: ENGENHARIA reversa em Binarios Windows [CTF] [Sql3t0] [DeadLockTeam]. 2020. 1 vídeo (57:50). Publicado por JJ Lima. Disponível em: https://www.youtube.com/ watch?v=fJjJs8ES1qY. Acesso em: 9 out. 2020. 8 COLETA E RELATÓRIO DE TESTE DE INVASÃO Após a introdução dos dispositivos tecnológicos de segurança, a grande dificuldade é saber se tudo aquilo que foi implantado e investido está efetivamente protegendo as informações. Para isso, os administradores aplicam os testes de invasão, que podem verificar na prática se os dispositivos tecnológicos estão cumprindo sua finalidade. Além disso, eles pensam nas mais diversas formas de ataques que podem ocorrer repentinamente e, assim, reconfigurar os dispositivos para evitá-los, inclusive em tecnologias eminentes. 8.1 Teste de invasão, conceito Testes de invasão ou pentesting (não confundir com testes de caneta esferográfica ou de canetas-tinteiro) envolvem a simulação de ataques reais para avaliar os riscos associados a potenciais brechas de segurança. Em um teste de invasão (em oposição a uma avaliação de vulnerabilidades), os pentesters não só identificam vulnerabilidades que poderiam ser usadas pelos invasores, mas também exploram essas vulnerabilidades, sempre que possível, para avaliar o que os invasores poderiam obter após uma exploração bem-sucedida das falhas (WEIDMAN,2014, p. 30). 128 Unidade IV A veiculação de informações a respeito de organizações de grande porte que foram alvo de um ciberataque é muito comum atualmente. Com mais frequência do que se esperava ou se possa suportar, os invasores não usam a última e mais recente vulnerabilidade zero-day (que ainda não foi corrigida pelos fornecedores de software), eles atacam com vulnerabilidades existentes há muito tempo e, na maioria das vezes, com a correção publicada. Organizações de grande porte, com orçamentos consideráveis em segurança, tornam-se vítimas de vulnerabilidades de injeção de SQL em seus sites, de ataques de engenharia social contra seus funcionários, de senhas fracas em serviços disponíveis pela internet e assim por diante. Em outras palavras, as organizações estão perdendo dados proprietários e expondo detalhes pessoais de seus clientes por causa de brechas de segurança que poderiam ter sido corrigidas. Quando aplicamos um teste de invasão, descobrimos esses problemas antes que um invasor o faça e fornecemos recomendações sobre como corrigi-los e sobre como evitar vulnerabilidades futuras. O escopo dos testes de invasão pode variar de cliente para cliente, assim como ocorrerá com as tarefas. Algumas organizações terão uma postura excelente quanto à segurança, enquanto outras terão vulnerabilidades que permitiriam aos invasores violar o perímetro e obter acesso aos sistemas internos. Às vezes, também será necessário ser responsável pela avaliação de uma ou mais aplicações web personalizadas. Isso poderá exigir ataques de engenharia social e do lado do cliente, para obter acesso à sua rede interna. Alguns testes de invasão exigirão atuações como se o invasor fosse alguém de dentro (um funcionário mau-caráter ou descontente) ou um invasor que já tenha violado o perímetro. Algumas situações exigirão um teste de invasão externo, em que será necessário simular um ataque por meio da internet. Algumas organizações podem desejar que a segurança das redes wireless de seus escritórios seja avaliada. Em alguns casos, você poderá até mesmo efetuar uma auditoria nos controles de segurança físicos da organização. 8.2 Processos de um teste de invasão Os testes de invasão têm início com a fase de preparação (pre-engagement), que envolve definir os objetivos, o mapeamento do escopo (a extensão e os parâmetros do teste) e assim por diante. Quando o pentester e a organização chegarem a um acordo sobre o escopo, a composição do relatório e o formato do teste de invasão, o teste será iniciado. Na fase de coleta de informações (information-gathering), o pentester procura informações disponíveis publicamente sobre a organização e identifica maneiras em potencial de conectar-se com seus sistemas. Na fase de modelagem das ameaças (threat-modeling), o pentester usa essas informações para determinar o valor de cada descoberta e o impacto sobre o cliente caso a descoberta permita que alguém invada um sistema. Essa avaliação permite ao pentester desenvolver um plano de ação e métodos de ataque. 129 PARECERES E TESTES DE INVASÃO Antes que o pentester possa começar a atacar os sistemas, ele realiza uma análise de vulnerabilidades (vulnerability analysis). Nessa fase, o pentester procura descobrir vulnerabilidades nos sistemas que poderão ser analisadas na fase de exploração de falhas (exploitation). Um exploit bem-sucedido pode conduzir a uma fase de pós-exploração de falhas (post-exploitation), em que se tira vantagem do resultado da exploração de falhas, de modo a descobrir informações adicionais, obter dados críticos, acessar outros sistemas etc. Por fim, na fase de geração de relatórios (reporting), o pentester sintetiza as descobertas tanto para os profissionais executivos quanto para os técnicos. Saiba mais Para obter mais informações sobre testes de invasão, acesse: http://www.pentest-standard.org/ Logo após o término da fase de coleta de informações, inicia-se a modelagem das ameaças, conforme o conhecimento obtido na fase anterior. Nesse ponto, deveremos pensar como os invasores e então desenvolver planos de ataque de acordo com as informações coletadas. Por exemplo, se o cliente desenvolver um software proprietário, um invasor poderá devastar a empresa ao obter acesso aos seus sistemas de desenvolvimento internos, cujo código-fonte é desenvolvido e testado, e vender os segredos comerciais da empresa a um concorrente. Assim, criaremos estratégias para invadir os sistemas da organização com base nos dados encontrados durante a fase de coleta de informações. As análises de vulnerabilidades representam a etapa a seguir do processo. Então, os pentesters começam a descobrir ativamente as vulnerabilidades, a fim de determinar até que ponto suas estratégias de exploração de falhas poderão ser bem-sucedidas. Os exploits que falharem poderão desativar serviços, disparar alertas de detecção de invasão e arruinar suas chances de efetuar uma exploração de falhas com êxito. Com frequência, durante essa fase, os pentesters executam scanners de vulnerabilidades, que usam bancos de dados específicos e uma série de verificações ativas para obter um palpite melhor a respeito de quais vulnerabilidades estão presentes no sistema de um cliente. Todavia, embora esses scanners sejam ferramentas eficazes, elas não podem substituir totalmente o raciocínio crítico, portanto, também devem ser realizadas análises manuais nessa etapa. Em seguida, temos a exploração de falhas, com certeza a parte mais interessante. Nessa etapa, são executados exploits contra as vulnerabilidades descobertas (às vezes, usando uma ferramenta como o Metasploit) para tentar acessar os sistemas de um cliente. Algumas vulnerabilidades são muito fáceis de serem exploradas, por exemplo, fazer login com senhas default. No pós-exploração de falhas, os testes de invasão só deverão começar após a exploração de falhas. 130 Unidade IV Nesse instante, você conseguiu entrar no sistema, mas o que essa invasão realmente significa para a organização? Se você invadir um sistema legado, sem patches (correções), que não faça parte de um domínio ou que não esteja ligado a alvos muito valiosos, e esse sistema não contiver nenhuma informação que interesse a um invasor, o risco dessa vulnerabilidade será significativamente menor do que se você pudesse explorar um controlador de domínio ou um sistema de desenvolvimento de um cliente. Durante a fase de pós-exploração de falhas, reunimos informações sobre o sistema invadido, procuramos arquivos interessantes, tentamos elevar o nível de nossos privilégios quando necessário e assim por diante. Por exemplo, podemos fazer um dump das hashes de senha para ver se podemos revertê-las ou usá-las para acessar sistemas adicionais. Também podemos tentar usar o computador explorado para atacar sistemas que não estavam anteriormente disponíveis a nós se efetuarmos um retorno para esses sistemas. Na geração de relatórios, está descrita a última etapa do processo. É nela que informamos as nossas descobertas de maneira significativa. Dizemos o que está sendo feito corretamente, os pontos que devem ser melhorados, a postura quanto à segurança, como você conseguiu invadir, o que você descobriu, como corrigir os problemas etc. Escrever um bom relatório de teste de invasão é uma arte que exige prática para dominar. Será necessário informar as suas descobertas de forma clara a todos, da equipe de TI responsável pela correção das vulnerabilidades até a alta gerência, que aprova as alterações com os auditores externos. Por exemplo, devemos evitar termos técnicos em excesso; se forem usados, devemos explicar o conceito. Uma maneira melhor de transmitir esse raciocínio seria mencionar os dados privados que você foi capaz de acessar ou de alterar. Uma afirmação como “fui capaz de ler o seu email” irá gerar repercussões em quase todos. O relatório do teste de invasão deve incluir tanto um sumário executivo como um relatório técnico. O sumário executivo descreveos objetivos do teste e oferece uma visão geral das descobertas. O público-alvo que se pretende atingir são os executivos responsáveis pelo programa de segurança. Seu sumário executivo deve incluir o seguinte: • Histórico: criam-se uma descrição do propósito do teste e definições de qualquer termo que possa não ser familiar aos executivos, bem como vulnerabilidades e medidas de prevenção. • Postura geral: é uma visão geral da eficiência do teste, destacando os problemas encontrados (por exemplo, a exploração da vulnerabilidade MS08-067 da Microsoft) e os problemas gerais que causam vulnerabilidades, como a ausência de gerenciamento de patches. • Perfil do risco: faz-se uma classificação geral da postura da empresa quanto à segurança, quando comparada com organizações semelhantes, com medidas – como alto, moderado ou baixo. Você também deve incluir uma explicação sobre a classificação ou utilizar a matriz de risco da organização caso ela o tenha. • Descobertas gerais: envolvem uma sinopse geral dos problemas identificados, com estatísticas e métricas sobre a eficiência de qualquer medida de prevenção implantada. 131 PARECERES E TESTES DE INVASÃO • Resumo das recomendações: é uma visão geral das tarefas necessárias para corrigir os problemas descobertos no teste de invasão. • Mapa estratégico: oferece objetivos de curto e de longo prazo ao cliente para melhorar a sua postura quanto à segurança. Por exemplo, você pode dizer ao cliente para aplicar determinados patches agora para endereçar as preocupações de curto prazo. Contudo, sem um plano de longo prazo para o gerenciamento de patches, o cliente estará na mesma posição após novos patches terem sido disponibilizados. O relatório técnico oferece detalhes técnicos sobre o teste. Ele deve incluir o seguinte: • Introdução: traz um inventário dos detalhes, como escopo e contatos. • Coleta de informações: indica detalhes das descobertas da fase de coleta de informações. Os rastros do cliente (footprint) deixados na internet ganham destaque. • Avaliação de vulnerabilidades: acentua os pormenores das descobertas da fase de análise de vulnerabilidades. • Exploração de falhas/verificação de vulnerabilidades: expressa detalhes das descobertas da etapa de exploração de falhas. • Pós-exploração de falhas: destacam-se particularidades das descobertas dessa fase. • Risco/exposição: faz-se uma descrição quantitativa do risco identificado. Essa seção traz uma estimativa das perdas caso as vulnerabilidades identificadas sejam exploradas por um invasor. • Conclusão: indica uma visão geral do teste. 8.2.1 Etapa de coleta de informações O objetivo dessa etapa é conhecer o máximo possível os nossos clientes. O executivo revela informações demais no Twitter? O administrador do sistema está escrevendo para listservs de arquivos, perguntando a respeito de como garantir a segurança de uma instalação de Drupal? Que softwares estão sendo executados em seus servidores web? Os sistemas voltados à internet estão ouvindo mais portas do que deveriam? Se esse é um teste de invasão interno, qual é o endereço IP controlador de domínio? Nessa fase, também começaremos a interagir com nossos sistemas-alvo, conhecendo o máximo que pudermos sobre eles, sem atacá-los de forma ativa. Usaremos o conhecimento adquirido nessa fase para a próxima – modelagem de ameaças –, quando deveremos pensar como os invasores e desenvolver planos de ataque com base nas informações coletadas. De acordo com as informações que descobrirmos, iremos procurar e verificar as vulnerabilidades de forma ativa usando técnicas de scanning. 132 Unidade IV Podemos aprender bastante sobre a organização e a infraestrutura do objeto de análise antes mesmo de lhes enviar um único pacote. Contudo, a coleta de informações continua sendo uma espécie de alvo em movimento. Não é viável estudar a vida on-line de todos os funcionários e, dada uma quantidade enorme de informações coletadas, poderá ser difícil discernir dados importantes de ruído. Se o executivo tuitar com frequência sobre um time esportivo favorito, o nome desse time poderá ser a base da senha de seu webmail, mas essa informação pode ser totalmente irrelevante. Em outras ocasiões, será mais fácil escolher algo que seja mais importante. Por exemplo, se o seu cliente tiver postagens de ofertas de emprego on-line para uma vaga de administrador de sistemas especialista em determinado software, existe uma boa chance de essas plataformas terem sido implantadas na infraestrutura da organização. Em oposição aos dados de inteligência obtidos a partir de fontes secretas, por exemplo, ao vasculhar lixos, vasculhar bancos de dados de sites e usar a engenharia social, o OSINT (Open Source Intelligence – Inteligência de Fontes Abertas) é coletado a partir de fontes legais, por exemplo, de registros públicos e por meio da mídia social. O sucesso de um teste de invasão, com frequência, depende do resultado da etapa de coleta de informações, e algumas ferramentas para obter dados interessantes são provenientes de fontes públicas. 8.2.2 Descobrindo as vulnerabilidades Antes de começarmos a lançar exploits, é preciso fazer pesquisas e análises. Quando identificamos vulnerabilidades, procuramos, de forma ativa, problemas que levarão a um comprometimento na fase de exploração de falhas. Embora algumas empresas de segurança executem somente uma ferramenta automatizada de exploração de falhas e esperem pelo melhor, um estudo cuidadoso das vulnerabilidades feito por um pentester habilidoso proporcionará melhores resultados do que qualquer ferramenta por si só. Após obtidas as informações sobre o alvo e a superfície de ataque, podemos desenvolver cenários para atingir os objetivos de nosso teste de invasão. Por exemplo, o servidor FTP na porta 21 anunciou-se como sendo o Vsftpd 2.3.4. Observação Vsftpd corresponde à abreviatura de very secure FTP. Podemos supor que um produto que se autodenomine very secure (muito seguro) está pedindo para ter problemas, e, de fato, em julho de 2011, veio à tona a notícia de que o repositório do Vsftpd havia sido invadido. Os binários do Vsftpd haviam sido substituídos por uma versão contendo um backdoor (porta dos fundos) que podia ser acionado com um nome de usuário contendo uma carinha sorridente. Isso fazia com que um root shell fosse aberto na porta 6200. Depois que o problema foi descoberto, os binários com o backdoor foram removidos e o Vsftpd 2.3.4 oficial foi restaurado. Portanto, embora a presença do Vsftpd 2.3.4 não assegure que o nosso alvo seja vulnerável, definitivamente é uma ameaça 133 PARECERES E TESTES DE INVASÃO a ser considerada. O teste de invasão se torna mais fácil se pegarmos uma carona com um invasor que já tenha o controle de um sistema. Embora alguns cursos de testes de invasão excluam totalmente o scanning de vulnerabilidades e argumentem que um pentester habilidoso pode descobrir tudo o que um scanner pode, os scanners continuam sendo ferramentas valiosas, especialmente porque muitos testes de invasão são realizados em uma janela de tempo menor do que qualquer um gostaria de ter. Porém, se um dos objetivos de sua avaliação for evitar a detecção, você deverá pensar duas vezes antes de usar um scanner indiscreto de vulnerabilidades. Não obstante as ferramentas sejam eficazes às vezes, nenhuma solução chegará nem perto da análise manual de vulnerabilidades para verificar se um serviço resultará em um comprometimento, e não há melhor maneira de se aperfeiçoar do que a prática. A seguir, vamos explorar algumas pistas promissoras obtidas a partir do scanning de portas e de vulnerabilidades. Como exemplo, podemos analisar uma porta que não costuma não aparecer em scans automatizados, que é a porta 3232, a qual tem como alvo o Windows. Se tentarmos efetuar o scan dessa porta com um scan convencional, perceberemos que haverá uma falha. Esse comportamento sugere que o programa que está ouvindo foi projetado para ouvir um dadode entrada em particular e que ele tem dificuldade de processar qualquer outra informação. Esse tipo de comportamento é interessante para os pentesters porque os programas que falham quando lidam com dados de entrada indevidos não estão validando suas entradas de forma adequada. Observação Existem diversas ferramentas automatizadas de exploração de vulnerabilidades, e os testes serão mais eficientes se o responsável unir a tecnologia com sua experiência, pois algumas ameaças estão além do ambiente tecnológico das redes. 8.2.3 Capturando tráfego Antes de partir para exploração de falhas, devemos usar as ferramentas de monitoração, e uma bem conhecida é o Wireshark. Essas ferramentas são usadas para efetuar o sniffing e a manipulação do tráfego, de modo a obter informações úteis de outros computadores da rede local. Em um teste de invasão interno, quando estivermos simulando uma ameaça interna ou um invasor que tenha conseguido acessar a periferia do sistema, capturar o tráfego de outros sistemas da rede pode nos proporcionar informações adicionais interessantes (quem sabe até mesmo nomes de usuário e senhas), as quais poderão nos ajudar na exploração de falhas. O problema é que a captura de tráfego pode gerar uma quantidade massiva de dados potencialmente úteis. Capturar todo o tráfego somente em sua rede local pode fazer com que várias telas do Wireshark sejam preenchidas rapidamente, e descobrir qual tráfego é útil em um teste de invasão poderá ser difícil. 134 Unidade IV De modo diferente dos hubs, os switches enviam tráfego somente para o sistema desejado, portanto, em uma rede com switches, não podemos ver, por exemplo, todo o tráfego para o controlador de domínio sem que enganemos a rede para ela nos enviar esse tráfego. A maioria das redes com as quais você se deparar nos testes de invasão provavelmente será composta de redes com switches ou até mesmo alguns hardwares de redes legadas que utilizam hub que podem ter a funcionalidade de um switch. As redes virtuais parecem agir como hubs, pois todas as suas máquinas virtuais compartilham um dispositivo físico. Se o tráfego for capturado em modo promíscuo em uma rede virtual, você poderá ver o tráfego de todas as máquinas virtuais, bem como o do computador host, mesmo que um switch esteja sendo usado no lugar de um hub em seu ambiente. Para simular uma rede não virtualizada, desativamos o use promiscuous mode (usar modo promíscuo) em todas as interfaces no Wireshark, o que significa que teremos de nos esforçar um pouco mais para capturar o tráfego de nossas máquinas virtuais avaliadas. 8.2.4 Exploração de falhas Nessa fase serão executados os exploits contra as vulnerabilidades descobertas para obter acesso aos sistemas-alvo. Algumas vulnerabilidades, por exemplo, o uso de senhas default, são tão fáceis de serem exploradas que nem parecem ser uma exploração de falhas, pois há outras muito mais complicadas. Agora que temos mais informações básicas sobre a vulnerabilidade, continuemos a estudar o exemplo anterior (MS08-067). É possível explorar um problema no servidor SLMail POP3 usando um módulo do Metasploit. Além do mais, vamos pegar carona em um comprometimento anterior e ignoraremos o login no servidor FTP em nosso alvo Linux. Vamos explorar uma vulnerabilidade na instalação do TikiWiki no alvo Linux e alguns problemas de senhas default em uma instalação do XAMPP no alvo Windows. Também vamos tirar proveito de um compartilhamento NFS com permissão de leitura e de escrita para assumirmos o controle de chaves SSH e fazer login como um usuário válido sem que tenhamos conhecimento da senha. Iremos interagir com um servidor web frágil em uma porta não padrão para tirar proveito de um problema de directory traversal (travessia de diretórios) e faremos o download de arquivos do sistema. 8.2.5 Ataques a senhas Geralmente, as senhas representam o ponto que oferece a menor resistência em atividades de testes de invasão. Um cliente com um programa robusto de segurança pode corrigir a falta de patches do Windows e evitar a existência de softwares desatualizados, porém os usuários em si não podem ser corrigidos (WEIDMAN, 2014, p. 247). Os ataques aos usuários com maior êxito a senhas utilizam técnicas de engenharia social, porém, se pudermos adivinhar ou calcular corretamente a senha de um usuário, poderemos evitar totalmente seu envolvimento no ataque. 135 PARECERES E TESTES DE INVASÃO As empresas estão despertando para os riscos inerentes à autenticação baseada em senhas, e ataques por meio de força bruta e palpites embasados representam riscos sérios às senhas fracas. Muitas empresas utilizam a biometria (impressões digitais ou scan de retina) ou uma autenticação de dois fatores para atenuar esses riscos. Até mesmos os web services como o Gmail e o Dropbox oferecem autenticação de dois fatores, em que o usuário fornece uma senha, além de um segundo valor, por exemplo, os dígitos de um token eletrônico. Se a autenticação de dois fatores não estiver disponível, o uso de senhas fortes será mandatório para garantir a segurança da conta, pois tudo o que estiver entre o invasor e os dados sensíveis poderá se reduzir a uma simples string. Senhas fortes são longas, usam caracteres de classes com diversas complexidades e não são baseadas em palavras que se encontram em dicionários. As empresas podem forçar os usuários a criar senhas fortes, mas à medida que as senhas se tornam mais complexas, fica mais difícil de serem lembradas. É provável que os usuários deixem uma senha da qual não conseguem se lembrar em um arquivo em seu computador, no smartphone ou até mesmo em um papel para recados, pois é mais fácil se recordar delas dessa maneira. É óbvio que senhas que podem ser descobertas por aí em formato texto simples colocam em risco a segurança proporcionada pelo uso de uma senha forte. Outro pecado mortal para um bom gerenciamento de senhas consiste em usar a mesma senha em vários sites. Em um cenário de pior caso, a senha fraca do CEO usada em um fórum web comprometido pode ser a mesma usada para o seu acesso corporativo aos documentos financeiros. A reutilização de senhas é algo para ter em mente ao realizar ataques a senhas; você poderá encontrar as mesmas senhas sendo usadas em vários sistemas e sites. O gerenciamento de senhas apresenta um problema difícil para a equipe de TI e é provável que continue a ser um caminho frutífero para os invasores, a menos que a autenticação baseada em senhas seja completamente substituída por outro modelo. Assim como usamos scans automatizados para descobrir vulnerabilidades, podemos usar scripts para tentar fazer login automaticamente em serviços e descobrir credenciais válidas. Para tal, utilizaremos ferramentas projetadas para automatizar ataques on-line a senhas ou para fornecer palpites para as senhas até o servidor responder com um login bem-sucedido. Essas ferramentas usam uma técnica chamada força bruta. As ferramentas que aplicam a força bruta tentam usar todas as combinações possíveis de nome de usuário e senha e, se houver tempo suficiente, elas irão descobrir credenciais válidas. O problema com a força bruta é que, à medida que senhas mais fortes são usadas, o tempo necessário para descobri-las por meio dessa técnica passa de horas para muitos anos. Provavelmente, poderemos descobrir credenciais funcionais mais facilmente se fornecermos palpites embasados sobre as senhas corretas a uma ferramenta automatizada de login. Palavras que se encontram em dicionários são fáceis de serem lembradas, portanto, apesar dos avisos de segurança, muitos usuários as incorporam nas senhas. Usuários um pouco mais conscientes quanto à segurança colocam alguns números ou até mesmo um ponto de exclamação no final de suas senhas. 136 Unidade IV Antes de usar uma ferramenta para adivinhar senhas, deve-se criar uma lista de palavras, o que requer uma lista de credenciais para experimentar. Se você não souber o nome da conta dousuário cuja senha você quer quebrar, ou se quiser simplesmente fazer o cracking do máximo possível de contas, é possível fornecer uma lista de nomes de usuário a ser percorrida pela ferramenta que adivinha senhas. Após a criação da lista de usuários, deve-se determinar o esquema a ser usado pelo alvo do teste para os nomes de usuário. Por exemplo, se você estiver tentando invadir as contas de e-mail dos funcionários, e descubra o padrão seguido pelos endereços de e-mail. Esse padrão corresponde ao primeiro nome e sobrenome, somente um primeiro nome ou é algo diferente? Você pode dar uma olhada em bons candidatos a nomes de usuário em listas de primeiro nome e sobrenome comuns. É claro que haverá mais chances de os palpites terem mais sucesso se você puder descobrir os nomes dos funcionários de seu alvo. Se uma organização usar a inicial do primeiro nome seguido de um sobrenome como o esquema para o nome do usuário, e houver um funcionário chamado Carlos Silveira, csilveira provavelmente será um nome válido de usuário. Observação Pesquisas revelam que 60% dos usuários de redes corporativas utilizam senhas fracas, as quais facilitam ataques de força bruta. Os testes de invasão são mais eficazes para verificar se a norma está sendo cumprida. 8.2.6 Explorando falhas da organização Nesse tipo de teste, é comum descobrir serviços vulneráveis ouvindo portas, senhas default que não foram alteradas, servidores web indevidamente configurados e assim por diante. Entretanto, organizações que investem bastante tempo e esforço em sua atitude quanto à segurança podem estar livres desses tipos de vulnerabilidade. É possível ter todos os patches de segurança instalados, efetuar auditorias periódicas em senhas e remover qualquer uma que possa ser facilmente adivinhada ou quebrada. Essas organizações podem controlar os papéis dos usuários: usuários normais podem não ter direitos de administrador em suas estações de trabalho e qualquer software instalado é investigado e mantido pela equipe de segurança. Como resultado, pode não haver muitos serviços para sequer tentar atacar. Mesmo assim, apesar da implantação das melhores e mais recentes tecnologias de segurança e do emprego de equipes de segurança contra cracking, organizações de destaque (que podem resultar em recompensas potencialmente valiosas para os invasores) continuam sendo invadidas. 137 PARECERES E TESTES DE INVASÃO Às vezes, não é necessário escutar diretamente uma porta nos computadores. Assim, como precisamos pensar em outra maneira de atacar um dispositivo dentro do perímetro de uma organização, devemos selecionar o nosso payload de acordo com esse cenário. Enquanto um bind shell normal pode funcionar bem em sistemas diretamente expostos à internet ou que estejam ouvindo uma porta em nossa rede local, nesse caso, no mínimo, estaremos limitados a conexões reversas. Nos ataques feitos dentro da organização, em vez de atacar diretamente um serviço que esteja ouvindo uma porta, será necessário criar uma variedade de arquivos maliciosos que, quando abertos em um software vulnerável no computador-alvo, resultará em um comprometimento. Após o início da execução de ferramentas, análises manuais e pesquisas, as possibilidades de exploração de falhas se reduzem gradualmente. Assim, restará um número limitado de problemas nos sistemas-alvo. Esses problemas correspondiam a problemas do servidor, ou seja, de serviços que estavam ouvindo portas. O que está sendo deixado de lado é qualquer software potencialmente vulnerável que não esteja ouvindo uma porta, isto é, softwares da organização. Softwares como navegadores web, visualizadores de documentos e players de música estão sujeitos aos mesmos tipos de problema que os servidores web, os servidores de e-mail e todos os demais programas baseados em rede apresentam. Obviamente, como os softwares da organização não estão ouvindo a rede, não podemos atacá-los diretamente, porém o princípio geral é o mesmo. Se pudermos enviar um dado de entrada não esperado a um programa para acionar uma vulnerabilidade, podemos sequestrar a execução da mesma maneira que exploramos os programas do servidor. Como não podemos enviar dados de entrada diretamente aos programas do cliente pela rede, devemos convencer um usuário a abrir um arquivo malicioso. Como a segurança tem sido levada mais a sério e as vulnerabilidades do servidor ficaram mais difíceis de serem descobertas, do ponto de vista da internet, a exploração de falhas do cliente está se tornando a chave para obter acesso até mesmo em redes internas e cuidadosamente protegidas. Os ataques feitos ao lado do cliente são ideais em equipamentos como estações de trabalho ou dispositivos móveis que não possuem um endereço IP disponível na internet. Embora, do ponto de vista da internet, não possamos acessar diretamente esses sistemas, eles normalmente podem acessar a internet ou um sistema controlado por um pentester, se pudermos sequestrar a execução. Infelizmente, o sucesso de ataques feitos na organização depende de garantir, de certo modo, que nosso exploit seja baixado e aberto em um produto vulnerável, concretizando o ataque. 138 Unidade IV Resumo Nesta unidade, estudamos os desafios de capture the flag, plataformas que contemplam desafios focados em técnicas de hacking, e os profissionais de segurança de todos os níveis encontram ambientes seguros para aprender a testar e conseguir praticar testes de invasão. Os tipos de competições, com suas respectivas categorias, envolvem desafios em grupos, modos de ataque e defesa e desafios solo. Nesse contexto, foram ilustrados desafios de engenharia reversa, forense, criptografia, programação e exploração em aplicações web. Nas competições de capture the flag, além do aprendizado, é possível interagir com outros profissionais da área, trocar experiências e ser visto por recrutadores de empresas de segurança ou organizações que possuem seus próprios times internos. Em seguida, demonstrou-se uma plataforma chamada picoCTF, desenvolvida por uma das instituições mais tradicionais de segurança da informação, a Universidade Carnegie Mellon. Os desafios indicados focam em teste de invasão em aplicações web. Ao resolver pequenos desafios, pudemos ver a riqueza de conhecimentos que podem ser adquiridos usando essa forma de estudo. Por fim, foram acentuados os principais conceitos de testes de invasão e as informações necessárias para compor os relatórios com resultados executivos. Tais ações são feitas com a finalidade de repassar as informações de maneira menos técnica destinadas aos gestores para auxílio na tomada de decisões sobre os investimentos, bem como as informações destinadas à retroalimentação da matriz de riscos corporativos. 139 PARECERES E TESTES DE INVASÃO Exercícios Questão 1. Capture the flag é um tipo de competição com o objetivo de ensinar os primeiros passos de testes de invasão. Nessa competição, existem diversas modalidades: entre elas, a esteganografia. Qual atividade listada a seguir é exemplo de uso da esteganografia? A) Interceptação de comunicação privada. B) Busca de informações ocultas em imagens ou arquivos. C) Decodificação de mensagens criptografadas. D) Correção de alteração de fluxo de um programa. E) Alteração e compreensão do comportamento de binários. Resposta correta: alternativa B. Análise da questão Esteganografia é uma técnica usada para ocultamento ou busca de informações ocultas em imagens ou arquivos. A decodificação de mensagens privadas é tratada na criptografia, enquanto a correção de alterações de fluxos de programas é objetivo da modalidade XPL no capture the flag. Já a alteração de binários descompilando o seu comportamento é o método de trabalho da engenharia reversa. Questão 2. Considere as etapas de um processo de invasão listadas a seguir. I – Coleta de informações. II – Geração de relatórios. III – Modelagem das ameaças. IV – Análise de vulnerabilidades. V – Preparação.VI – Exploração de falhas. 140 Unidade IV A ordem correta dessas etapas é: A) V, III, I, IV, VI e II. B) I, VI, III, IV, V e II. C) I, IV, III, V, II e VI. D) V, I, III, IV, VI e II. E) III, IV, II, I, V e VI. Resposta correta: alternativa D. Análise da questão A ordem correta dos processos em um teste de invasão é a seguinte: • preparação; • coleta de informações; • modelagem das ameaças; • análise de vulnerabilidades; • exploração de falhas; • geração de relatórios. 141 REFERÊNCIAS Audiovisuais 10 BEST Linux distros for ethical hacking & penetration testing. 2018. 1 vídeo (3:35). Publicado por Easy Tech Studios. Disponível em: https://www.youtube.com/watch?v=-QidwP0k2IA. Acesso em: 9 out. 2020. ANÁLISE de vulnerabilidade com NMAP. 2020. 1 vídeo (8:23). Publicado por Hacker Security. Disponível em: https://www.youtube.com/watch?v=KtAjZRT6MMc. Acesso em: 22 out. 2020. ANÁLISE de vulnerabilidades versus teste de invasão: qual a diferença? 2020. 1 vídeo (11:10). Publicado por Albert Oliveira. Disponível em: https://www.youtube.com/watch?v=_ 6C7TMCKnrE. Acesso em: 9 out. 2020. APRENDENDO de verdade a usar o GREP no Linux. 2020. 1 vídeo (32:35). Publicado por Vagner Fonseca. Disponível em: https://www.youtube.com/watch?v=MDADbtNLLnI. Acesso em: 9 out. 2020. ENGENHARIA reversa em Binarios Windows [CTF] [Sql3t0] [DeadLockTeam]. 2020. 1 vídeo (57:50). Publicado por JJ Lima. Disponível em: https://www.youtube.com/ watch?v=fJjJs8ES1qY. Acesso em: 9 out. 2020. A ORIGEM dos hackers. Direção: Ralph Lee. EUA: Discovery Channel, 2001. 47 min. ROADSEC 2019 reúne entusiastas da cibercultura hacker. 2019. 1 vídeo (3:14). Publicado por tvbrasil. Disponível em: https://www.youtube.com/watch?v= I5FwfAOmUu0. Acesso em: 9 out. 2020. Textuais BERTOGLIO D. D.; ZORZO, A. F. Um mapeamento sistemático sobre testes de penetração. Technical Report TR 084. Faculdade de Informática, Programa de Pós-Graduação em ciência da computação, Pontifícia Universidade Católica do Rio Grande do Sul, Porto Alegre, Rio Grande do Sul, 2015. MORENO, D. Pentest em aplicações web. São Paulo: Novatec, 2017. WEIDMAN, G. Testes de invasão. São Paulo: Novatec, 2014. 142 Sites https://packetstormsecurity.com http://www.pentest-standard.org/ https://picoctf.com/ 143 144 Informações: www.sepi.unip.br ou 0800 010 9000
Compartilhar