Apostila de Teste de Invasao em Redes e Sistemas
Apostila de Teste de Invasao em Redes e Sistemas
Apostila de Teste de Invasao em Redes e Sistemas
SISTEMAS
08/08/2018
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:
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;
Mapeamento da rede;
Enumeração de credenciais;
08/08/2018 Teste de invasão em redes e sistemas 5
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
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:
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
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.
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.
PTES
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
buscar informações específicas. XML é um formato padrão usado para importar o resultado
em outras ferramentas.
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.
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
08/08/2018 Teste de invasão em redes e sistemas 16
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>.
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
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>:
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.
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
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.
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
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.
Visão geral
Apesar do Kali ter diversas ferramentas, precisamos instalar o Nessus. Veja os passos para
instalar:
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.
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.
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.
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.
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.
Introdução
Em testes de segurança em aplicações web, podemos usar um proxy para capturar pedidos
e respostas entre o nosso navegador e a aplicação web para que possamos ver exatamente
quais dados estão sendo transmitidos. Kali Linux vem com a versão gratuita do Burp Suite,
uma plataforma de testes para aplicações web que inclui um recurso de proxy. Burp inclui
outros componentes úteis, tais como Burp Spider, que pode rastrear através da aplicação o
conteúdo web e suas funcionalidades, e o Burp Repeater, que permite que você manipule e
reenvie pedidos para o servidor. Por enquanto, vamos nos concentrar na Burp Proxy.
Para iniciar o Burp Suite no Kali Linux, vá para Aplicativos no canto superior esquerdo e
clique em Aplicativos > Web Application Analysis > burpsuite.
Na tela do Burp, vá até a aba Proxy. Por padrão, o Intercept deve ser selecionado para que o
Burp Suite intercepte e segure qualquer requisição de saída vinda do seu navegador web
configurado para usar o Burp como um proxy para o tráfego web. Esta configuração permite
que vejamos e até mesmo modifiquemos os detalhes das requisições antes que elas sejam
enviadas para o servidor.
Agora precisamos dizer ao nosso navegador do Kali para utilizar o Burp Suite como proxy
web.
Isto fará com que o navegador jogue o tráfego dele para o localhost na porta 8080, a porta
padrão do Burp Proxy.
Para confirmar que a configuração está redirecionando todo o tráfego através do Burp
Suite, navegue em qualquer site e o Burp Suite deverá exibir uma requisição HTTP GET da
página. Vou usar o endereço http://testphp.vulnweb.com/login.php
Veremos a seguir que podemos fazer mudanças na requisição antes de enviar para o
servidor, mas por enquanto, vamos seguir redirecionando as requisições (e quaisquer outras
subsequentes) clicando no botão Forward. Retornando ao navegador, podemos ver que o
servidor respondeu com a página solicitada.
Se tentarmos acessar algum site que tenha um formulário de login, o Burp Suite será capaz
de capturar as credenciais. Veja o exemplo abaixo no site:
Além de conseguir ler a requisição pura, a qual não é amigável de ler, você poderá clicar na
aba Params no topo da tela de requisição do Burp Suite para exibir os parâmetros
requisitados de uma forma mais fácil de ler.
Veja que foi capturado o usuário e senha do formulário. Você pode modificar estes campos
diretamente no proxy. Por exemplo, se você mudar a senha capturada por outra antes de
redirecionar a requisição para o servidor, o servidor irá receber a nova senha definida no
proxy.
O proxy permite você ver os detalhes de qualque requisição para o servidor. Se você não
precisar mais do proxy em algum momento, clique em Intercept is on para mudar a chave
para Intercept is off e permitir o tráfego para passar para o servidor sem necessidade do
usuário interagir. Troque o botão de volta se você precisar capturar alguma requisição em
particular.
Introdução
Benefícios
Em seguida, ele fornece uma estrutura aberta. Os usuários podem ficar confusos quando
uma vulnerabilidade recebe uma pontuação arbitrária de terceiros. Com o CVSS, as
características individuais usadas para obter uma pontuação são transparentes.
Métricas
Base
O grupo de métrica Base é composto pelas características intrínsecas de uma
vulnerabilidade que são constantes ao longo do tempo e nos ambientes dos usuários. Este
grupo é composto de dois conjuntos de métricas: as métricas de exploração (Exploitability) e
as métricas de impacto (Impact).
Attack Vector (AV): Essa métrica reflete o contexto pelo qual a exploração da vulnerabilidade
é possível acontecer. Este valor métrico (e consequentemente a pontuação Base) será maior
quanto mais remoto (logicamente e fisicamente) um atacante puder ser para explorar o
08/08/2018 Teste de invasão em redes e sistemas 38
Network (N): Significa que o componente vulnerável está vinculado à pilha da rede e
o caminho do invasor é pela camada 3 do modelo OSI (a camada de rede). Essa
vulnerabilidade é geralmente chamada de “explorável remotamente” e pode ser
considerada como um ataque que pode ser explorado a partir de um ou mais hops
de rede. Um exemplo de um ataque de rede é um invasor que causa uma negação de
serviço (DoS) enviando um pacote TCP especialmente criado através da Internet
pública;
Adjacent (A): Significa que o componente vulnerável está vinculado à pilha da rede,
mas o ataque é limitado à mesma rede física compartilhada (ex.: Bluetooth, IEEE
802.11) ou lógica (ex.: sub-rede IP local) e não pode ser executada através de um
limite da camada 3 do OSI (ex.: um roteador). Um exemplo de um ataque Adjacente
seria um ARP (IPv4) ou neighbor discovery (IPv6) flood levando a uma negação de
serviço no segmento de LAN local;
Local (L): Uma vulnerabilidade explorável com acesso local significa que o
componente vulnerável não está vinculado à pilha de rede e o caminho do invasor é
por meio dos recursos de leitura/gravação/execução. Em alguns casos, o invasor
pode estar conectado localmente para explorar a vulnerabilidade, caso contrário, ela
pode confiar na interação do usuário para executar um arquivo mal-intencionado. ;
Physical (P): Requer que o invasor toque ou manipule fisicamente o componente
vulnerável. A interação física pode ser breve ou persistente. Um exemplo de tal
ataque é o cold boot attack que permite que um invasor acesse as chaves de
criptografia de disco após obter acesso físico ao sistema ou ataques periféricos, como
ataques de acesso direto à memória Firewire/USB;
Privileges Required (PR): Esta métrica descreve o nível de privilégio que um atacante deve
possuir antes de explorar a vulnerabilidade com sucesso. A pontuação do CVSS aumenta
com a ausência de privilégios necessários. Os possíveis valores são:
None (N): O invasor não é um usuário autorizado antes do ataque, e portante não
requer acesso a configurações ou arquivos para realizar um ataque;
Low (L): O invasor está autorizado, ou seja, requer privilégios que fornecem recursos
básicos do usuário que normalmente poderiam afetar apenas as configurações e os
arquivos pertencentes a um usuário. Como alternativa, um invasor com privilégios
baixos pode ter a capacidade de causar impacto somente em recursos não
confidenciais;
User Interaction (UI): Essa métrica captura o requisito de que um usuário, que não seja o
invasor, participe do comprometimento para que o invasor seja bem-sucedido. Essa métrica
determina se a vulnerabilidade pode ser explorada somente à vontade do invasor ou se um
usuário separado (ou processo iniciado pelo usuário) deve participar de alguma maneira.
Esse valor de métrica é maior quando nenhuma interação do usuário é necessária.
None (N): O sistema vulnerável pode ser explorado sem interação de qualquer
usuário;
Required (R): A exploração bem-sucedida desta vulnerabilidade exige que o usuário
realize alguma ação antes que a vulnerabilidade possa ser explorada. Por exemplo,
uma exploração bem-sucedida só pode ser possível durante a instalação de um
aplicativo por um administrador do sistema;
Scope: Caso um ataque seja bem-sucedido e impacte outro componente além daquele que
está vulnerável, a pontuação Base irá aumentar e as métricas de Confidentiality, Integrity e
Authentication devem ser pontuadas em relação ao componente impactado.
Changed (C): Uma vulnerabilidade explorada pode afetar os recursos além dos
privilégios de autorização pretendidos pelo componente vulnerável. Nesse caso, o
componente vulnerável e o componente afetado são diferentes;
Unchanged (U): Uma vulnerabilidade explorada só pode afetar os recursos
gerenciados pela mesma autoridade. Nesse caso, o componente vulnerável e o
componente afetado são os mesmos;
Refere-se à consequência direta que o ativo sofrerá caso a exploração seja realizada com
sucesso. Independentemente de uma vulnerabilidade explorada com êxito afetar um ou
mais componentes, as métricas de impacto são pontuadas de acordo com o componente
que sofre o pior resultado associado de forma mais direta e previsível a um ataque bem-
sucedido. Devem-se restringir os impactos a um resultado final razoável, que eles estão
confiantes de que um atacante é capaz de alcançar. Este sub-grupo é composto por:
Confidentiality, Integrity e Availability.
A fórmula usada irá gerar uma pontuação que varia de 0 (zero) à 10 (dez).
É importante notar que todas as métricas devem ser pontuadas com a suposição de que o
invasor já localizou e identificou a vulnerabilidade. Ou seja, o analista não precisa considerar
os meios pelos quais a vulnerabilidade foi identificada. Além disso, é provável que muitos
tipos diferentes de indivíduos estejam pontuando vulnerabilidades (por exemplo,
fornecedores de software, analistas de boletins de vulnerabilidade, fornecedores de
produtos de segurança, etc.), mas observe que a classificação de vulnerabilidades deve ser
agnóstica para o indivíduo e sua organização.
É útil ter uma representação textual das pontuações numéricas das métricas Base, Temporal
e Environmental. Todas as pontuações podem ser mapeadas para as classificações
qualitativas da seguinte forma:
Avaliação Pontuação CVSS
Nenhum 0,0
Baixo 0,1 – 3,9
Médio 4,0 – 6,9
Alto 7,0 – 8,9
Crítico 9,0 – 10,0
https://www.first.org/cvss/calculator/3.0
https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
Exploit Code Maturity: Esta métrica mensura a probabilidade de uma vulnerabilidade ser
atacada com base no estado atual das técnicas de exploração, disponibilidade do código ou
exploração real de forma ativa. Os valores são:
Not Defined (X): O uso desse valor não interfere na pontuação.
Unproven (U): Não existe um exploit ou ele é apenas teórico.
Proof-of-Concept (P): Existe um código para PoC disponível, mas não é prático para
todos os sistemas, demandando uma modificação significativa do código por um
atacante habilidoso.
Functional (F): Existe um código funcional que funciona na maioria dos casos.
High (H): Código funcional e autônomo existente, ou que não necessita de exploit (de
forma manual). O código funciona em todas as situações e está sendo usada por
agentes autonomos (ex.: worms, vírus , etc.). O código pode ser encontrado em
diversas ferramentas automatizadas de varreduras e é fácil de usar.
Requisitos de segurança
Essas métricas permitem que o analista personalize a pontuação do CVSS, dependendo da
importância do ativo de TI afetado para a organização de um usuário, medida em termos de
Confidencialidade, Integridade e Disponibilidade. Ou seja, se um ativo de TI suporta uma
função de negócios para a qual a Disponibilidade é mais importante, o analista pode atribuir
um valor maior à Disponibilidade em relação à Confidencialidade e à Integridade. Cada
requisito de segurança tem três valores possíveis: Low, Medium e High.
O efeito total sobre a pontuação Environmental é determinado pelas métricas de impacto
Base modificada correspondentes. Ou seja, essas métricas modificam a pontuação
Essas métricas permitem que o analista ajuste as métricas Base de acordo com as
modificações existentes no ambiente do analista. Ou seja, se um ambiente tiver feito
alterações gerais no software afetado que difiram de maneira a afetar sua Exploitability,
Scope ou Impact, o ambiente poderá refletir isso por meio de uma pontuação Environmental
apropriadamente modificada.
O efeito total sobre a pontuação Environmental é determinado pelas métricas de base
correspondentes. Ou seja, essas métricas modificam a pontuação Environmental
reatribuindo os valores de métricas (Base), antes de aplicar os Requisitos de Segurança
(Environmental). Por exemplo, a configuração padrão para um componente vulnerável pode
ser a execução de um serviço de escuta com privilégios de administrador, para o qual um
comprometimento pode conceder a um invasor impactos de Confidencialidade, Integridade
e Disponibilidade todos altos. No entanto, no ambiente do analista, esse mesmo serviço de
Internet pode estar sendo executado com privilégios reduzidos. Nesse caso, a
Confidencialidade Modificada, a Integridade Modificada e a Disponibilidade Modificada
podem ser definidas como Baixa.
A intenção dessa métrica é definir as atenuações em vigor para um determinado ambiente.
É aceitável usar as métricas modificadas para descrever situações que aumentam a
pontuação básica. Por exemplo, a configuração padrão de um componente pode ser exigir
08/08/2018 Teste de invasão em redes e sistemas 48
Exercícios
1) XSS no phpMyAdmin
a. Vulnerabilidade: As vulnerabilidades de cross-site scripting (XSS) refletidas
estão presentes na página tbl_gis_visualization.php no phpMyAdmin 3.5.x,
antes da versão 3.5.8. Isso permite que invasores remotos injetem JavaScript
ou HTML arbitrários por meio dos parâmetros (1) visualizationSettings [width]
ou (2) visualizationSettings [height].
b. Ataque: Uma exploração bem-sucedida exige que um invasor realize o
reconhecimento do sistema que está executando o software phpMyAdmin
vulnerável para determinar um nome de banco de dados válido e obter um
token de sessão válido. O invasor constrói uma URL para o servidor da Web
que executa o software phpMyAdmin vulnerável que contém esse nome e
token do banco de dados. Um dos dois parâmetros injetáveis é adicionado à
URL com seu valor definido para o código malicioso que o atacante deseja
que a vítima execute. O invasor distribui esse URL e incita a vítima a clicar
nele, por exemplo, enviando o URL em e-mails ou adicionando-o a um site
legítimo. Se uma vítima clicar no URL, o código malicioso será executado no
navegador da vítima. O código malicioso só é capaz de acessar as informações
associadas ao site que executa o software phpMyAdmin vulnerável devido às
restrições da SOP (Política de mesma origem) nos navegadores da web. O
phpMyAdmin, por padrão, define o sinalizador HttpOnly em seus cookies,
impedindo que o JavaScript acesse os cookies do navegador da Web que
limitam o impacto geral desse ataque.
2) SQL injection no MySQL
a. Vulnerabilidade: Uma vulnerabilidade no banco de dados do MySQL Server
poderia permitir que um usuário remoto e autenticado injetasse um código
SQL que executasse a funcionalidade de replicação do MySQL com altos
privilégios. Um ataque bem-sucedido poderia permitir que qualquer dado em
um banco de dados MySQL remoto fosse lido ou modificado.
Perguntas
Esta vulnerabilidade afeta apenas sistemas com capacidade Bluetooth. O invasor precisa
primeiro obter o endereço Bluetooth de 48 bits do sistema, que não é "detectável" por
padrão nas versões afetadas do Windows. Se o sistema fosse "detectável", responderia às
consultas do SDP do invasor com seu endereço Bluetooth. Mas, no estado padrão, um
invasor precisa obter seu endereço Bluetooth de outra forma - seja usando a força bruta
ou extraindo-a do tráfego Bluetooth capturado por via aérea. O invasor precisaria estar na
mesma proximidade da máquina de destino para enviar e receber transmissões de rádio
dentro do espectro de rádio Bluetooth. Uma vez explorada, o atacante pode executar
código arbitrário. O invasor pode instalar programas; visualizar, alterar ou excluir dados;
ou crie novas contas com direitos totais de usuário.”
a. CVSS:3.0/AV:A/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H – 8.4
b. CVSS:3.0/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H – 8.2
c. CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:H – 8.9
d. CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H – 8.8
First. (s.d.). Common Vulnerability Scoring System SIG. Fonte: First - Improving Security
Together: https://www.first.org/cvss/
Guimaraes, B., & Stampar, M. (09 de 2018). Automatic SQL injection and database takeover
tool. Fonte: SQLMap: http://sqlmap.org/
Kennedy, D., J. O., & D. K. (2011). Metasploit: The Penetration Tester's Guide. São Francisco:
No Starch Press.
Laskos, T. (09 de 2018). Web Application Security Scanner Framework. Fonte: Arachni
Scanner: http://www.arachni-scanner.com/
Lyon, G. (2009). Exame de redes com NMAP. Rio de Janeiro: Ciência Moderna.
Weidman, G. (2014). Testes de Invasão: Uma introdução prática ao hacking. São Paulo:
Novatec.
Zero Security. (09 de 2018). Sn1per - Automated Pentest Framework for Offensive Security
Experts. Fonte: Xero Secutiy: https://xerosecurity.com/