Documente Academic
Documente Profesional
Documente Cultură
SISTEMAS
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
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.
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:
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:
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
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
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:
6
2. METODOLOGIAS
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.
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
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.
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
PCI-DSS
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.
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.
PTES
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:
É 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.
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
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
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
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);
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).
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.
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.
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>.
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.
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.
Busca embutida
Você também pode usar a busca embutida no Metasploit para achar o módulo pelo nome
usando o comando search <string>:
20
Após encontrar um módulo que desejamos, podemos obter mais detalhes sobre ele usando
o comando info <nome do módulo>, veja:
Após achar o módulo que deseja usar, você usa o comando use <nome 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
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.
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.
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.
23
Para definir qual payload você usará, envie o comando set payload <nome do payload com
endereço>. Por exemplo:
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.
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.
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
Apesar do Kali ter diversas ferramentas, precisamos instalar o Nessus. Veja os passos para
instalar:
26
Figura 11 Instalando no Kali
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.
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.
31
Figura 14 Lista com Website Policy
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.
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.
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