Escolar Documentos
Profissional Documentos
Cultura Documentos
www.it-ebooks.info
Machine Translated by Google
Nmap 6: Rede
Exploração e
Auditoria de segurança
Livro de receitas
BIRMINGHAM - MUMBAI
www.it-ebooks.info
Machine Translated by Google
Todos os direitos reservados. Nenhuma parte deste livro pode ser reproduzida, armazenada em um sistema de
recuperação ou transmitida de qualquer forma ou por qualquer meio, sem a permissão prévia por escrito do editor,
exceto no caso de breves citações incorporadas em artigos críticos ou resenhas.
Todo esforço foi feito na preparação deste livro para garantir a precisão das informações apresentadas. No entanto,
as informações contidas neste livro são vendidas sem garantia, expressa ou implícita. Nem o autor, nem a Packt
Publishing e seus revendedores e distribuidores serão responsabilizados por quaisquer danos causados ou
supostamente causados direta ou indiretamente por este livro.
A Packt Publishing se esforçou para fornecer informações de marca registrada sobre todas as empresas e produtos
mencionados neste livro pelo uso apropriado de maiúsculas. No entanto, a Packt Publishing não pode garantir a precisão
dessas informações.
ISBN 978-1-84951-748-5
www.packtpub.com
www.it-ebooks.info
Machine Translated by Google
Créditos
Autor Coordenador de projeto
Paulino Calderón Pale Sai Gamare
Revisores revisor
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
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
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.
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.
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.
www.it-ebooks.info
Machine Translated by Google
www.PacktPub.com
Você sabia que a Packt oferece versões eBook de todos os livros publicados, com arquivos PDF e ePub disponíveis?
Você pode atualizar para a versão eBook em www.PacktPub.com e, como cliente do livro impresso, tem direito a um
desconto na cópia do eBook. Entre em contato conosco em service@packtpub.com para mais detalhes.
Em www.PacktPub.com, você também pode ler uma coleção de artigos técnicos gratuitos, inscrever-se em
uma variedade de boletins informativos gratuitos e receber descontos e ofertas exclusivos nos livros e e-books
da Packt.
http://PacktLib.PacktPub.com
Você precisa de soluções instantâneas para suas questões de TI? PacktLib é a biblioteca de livros digitais online da
Packt. Aqui, você pode acessar, ler e pesquisar toda a biblioteca de livros da Packt.
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
www.it-ebooks.info
Machine Translated by Google
Índice
ii
www.it-ebooks.info
Machine Translated by Google
Índice
iii
www.it-ebooks.info
Machine Translated by Google
Índice
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 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 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.
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
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.'}
} })
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."
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.
Errata
Embora tenhamos tomado todos os cuidados para garantir a precisão de nosso conteúdo, erros
acontecem. Se você encontrar um erro em um de nossos livros - talvez um erro no texto ou no código -
ficaríamos gratos se você nos relatasse isso. Ao fazer isso, você pode salvar outros leitores da
frustração e nos ajudar a melhorar as versões subsequentes deste livro. Se você encontrar alguma
errata, informe-a visitando http://www.packtpub.com/support, selecionando seu livro, clicando no link do
formulário de envio de errata e inserindo os detalhes de sua errata. Depois que suas errata forem
verificadas, seu envio será aceito e as errata serão carregadas em nosso site ou adicionadas a qualquer
lista de errata existente, na seção Errata desse título.
Pirataria A
pirataria de material protegido por direitos autorais na Internet é um problema constante em
todas as mídias. Na Packt, levamos muito a sério a proteção de nossos direitos autorais e
licenças. Se você encontrar cópias ilegais de nossos trabalhos, de qualquer forma, na Internet,
forneça-nos o endereço do local ou o nome do site imediatamente para que possamos buscar uma solução.
Dúvidas Você
pode entrar em contato conosco pelo e-mail question@packtpub.com se tiver algum problema
com qualquer aspecto do livro, e faremos o possível para resolvê-lo.
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!
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.
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.
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/.
11
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
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:
12
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
atualização $ svn
Você deve ver a lista de arquivos que foram atualizados, bem como algumas informações de revisão.
Veja também
13
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
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.
$ ./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
$ 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:
é 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.
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 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
16
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
$ 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:
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:
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 <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:
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.
Veja também
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
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 -A <alvo>
Ou
21
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
Veja também
Esta receita descreve como executar uma varredura de ping para encontrar hosts ativos em uma rede
usando o Nmap.
22
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
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.
Traceroute
Use --traceroute para incluir um caminho entre sua máquina e cada host encontrado.
TRACEROUTE
1 61,70ms 192.168.1.101
23
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
TRACEROUTE
1 4,40 ms 192.168.1.254
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.
ping de transmissão:
|_dns-brute: Não é possível adivinhar o domínio de "192.168.1.102"; use o argumento de script dns-brute.domain.
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.
Veja também
f A receita de descoberta de hosts usando pings de transmissão no Capítulo 2, Exploração de rede f A receita de
f A receita Descoberta de hosts com varreduras de ping ICMP no Capítulo 2, Exploração de Rede f A receita Coleta
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
Esta receita descreve como usar intervalos de portas ao executar varreduras do Nmap.
25
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
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:
26
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
f Intervalo de portas:
f Todas as portas:
f Nome do serviço:
Veja também
f A receita Excluindo hosts de suas varreduras no Capítulo 2, Exploração de rede f A receita Varredura de
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 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:
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:
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:
Você também pode usar aliases ao definir os argumentos para scripts NSE. Por exemplo, você
poderia usar
29
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
Em vez de:
# nmap --script-update-db
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
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
Veja também
digital de uma receita de host remoto f A receita Encontrando hosts ativos em sua
rede
30
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
A seguinte receita descreve como forçar o Nmap a escanear usando uma interface de rede especificada.
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 ...
32
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
Veja também
f A receita Ocultando nosso tráfego com dados aleatórios adicionais no Capítulo 2, Rede
Exploração
f A lista de protocolos suportados por uma receita de host remoto no Capítulo 3, Reunindo
Informações Adicionais do Anfitrião
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
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.
34
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
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:
Veja também
35
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
1. Inicie o Zenmap.
3. Clique em Novo Perfil ou Comando (Ctrl + P). O Editor de perfil será iniciado.
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:
37
www.it-ebooks.info
Machine Translated by Google
Fundamentos do Nmap
Tem mais...
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
O editor será iniciado, permitindo que você edite ou exclua o perfil selecionado.
Veja também
38
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
A receita a seguir apresentará o Nping mostrando como realizar a detecção de NAT com alguma
ajuda do protocolo Nping Echo.
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)
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
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 é:
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:
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
40
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
Veja também
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
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.
Examine seu host de destino e salve os resultados no diretório que você acabou de criar.
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.
#!/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
#CONFIGURAÇÃO
REDE="SEUDOMÍNIO.COM"
ADMIN=SEU@EMAIL.COM
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
| wc -l) -gt 0 ]
então
gato $NDIFF_RESULTS
ser
ser
REDE="SEUDOMÍNIO.COM"
42
www.it-ebooks.info
Machine Translated by Google
Capítulo 1
ADMIN=SEU@EMAIL.COM
# 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
# crontab -e
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 .
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:
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
receita Descobrindo hosts com varreduras de ping ICMP no Capítulo 2, Exploração de rede
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!
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.
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.
Esta receita falará sobre a varredura de ping TCP SYN e suas opções relacionadas.
Você deve ver a lista de hosts encontrados usando a varredura de ping TCP SYN:
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 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.
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:
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
Você pode definir a lista de portas a ser usada com -PS (lista ou intervalo de portas) da seguinte maneira:
Veja também
receita de descoberta de firewalls de estado usando uma varredura de TCP ACK no Capítulo 3,
Coletando informações adicionais do host
A receita a seguir mostra como executar uma verificação de ping TCP ACK e suas opções relacionadas.
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 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.
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.
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
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
Esta próxima receita descreve como executar uma varredura de ping UDP com o Nmap e suas opções relacionadas.
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 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.
Veja também
f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host
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 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.
52
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
Veja também
f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host
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.
Se o host respondeu a qualquer um dos pedidos, você deve ver algo como isto:
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:
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
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
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
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:
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:
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 descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host
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.
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.
f Se o host responder com uma resposta ARP, fica bem claro que está online
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.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
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:
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.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
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:
58
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
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.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
Veja também
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
Esta receita descreve como descobrir novos hosts com um ping de transmissão usando o Nmap NSE.
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:.
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
| ping de transmissão:
|| IP: 192.168.1.105 MAC: 08:00:27:16:4f:71
Tem mais...
Para aumentar o número de solicitações de eco ICMP, use o argumento de script broadcast-ping.
num_probes:
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.
Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar esses novos hosts como alvos:
61
www.it-ebooks.info
Machine Translated by Google
Exploração de rede
| 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
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:
Veja também
62
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
f A descoberta de firewalls dinâmicos usando uma receita de varredura TCP ACK no Capítulo 3,
Coletando informações adicionais do host
Esta receita descreve como enviar dados aleatórios adicionais em pacotes enviados pelo Nmap durante
uma varredura.
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:
Veja também
64
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
Esta receita descreve como forçar a resolução de DNS para hosts offline durante as varreduras do Nmap.
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:
65
www.it-ebooks.info
Machine Translated by Google
Exploração de rede
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.
Veja também
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
de endereços IPv6
f A receita de ajuste dos parâmetros de temporização no Capítulo 7, Varredura de grandes redes f A receita
66
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
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:
Muitas impressões digitais correspondem a este host para fornecer detalhes específicos do sistema operacional
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:
Veja também
68
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
# nmap -6 ::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.
69
www.it-ebooks.info
Machine Translated by Google
Exploração de rede
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
#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
70
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
Esta receita descreve como usar os scripts de transmissão NSE para coletar informações interessantes
de uma rede.
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:
| targets-ipv6-multicast-invalid-dst: |
IP: fe80::a00:27ff:fe16:4f71 MAC: 08:00:27:16:4f:71 IFACE: wlan2
multicast-echo: | |
IP: fe80::a00:27ff:fe16:4f71 MAC: 08:00:27:16:4f:71 IFACE: wlan2
multicast-slaac:
transmissão: | |
IP: 192.168.1.105 MAC: 08:00:27:16:4f:71
71
www.it-ebooks.info
Machine Translated by Google
Exploração de rede
192.168.1.102
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-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.
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-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-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 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-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:
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:
| broadcast-netbios-master-browser: | ip |
broadcast-upnp-info: | 192.168.1.103 |
|_ 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
Dropbox
74
www.it-ebooks.info
Machine Translated by Google
Capítulo 2
, broadcast-avahi-dos:
| Hospedeiros descobertos:
192.168.1.101
Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar esses novos hosts como
alvos:
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:
Veja também
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!
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
Introdução
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.
| ip-geolocation-geoplugin: | 50.116.1.121
39.489898681641,-74.47730255127
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
É 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.
Veja também
Esta receita mostrará como recuperar os registros WHOIS de um endereço IP ou nome de domínio usando o
Nmap.
80
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
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:
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:
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:
81
www.it-ebooks.info
Machine Translated by Google
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
Resultados do script do
host: |_whois: Consulte o resultado para 74.207.244.221.
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
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:
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
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
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.
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.
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.
84
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
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 = ""
---#########################
Veja também
85
www.it-ebooks.info
Machine Translated by Google
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
| 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.
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:
Para iniciar o spidering de uma página diferente da pasta raiz, use o argumento httpspider.url:
f Você pode especificar o nome de domínio a ser procurado usando o argumento do script domain.
f Ao aumentar o número de resultados de página com as páginas de argumento do script , você pode
obter resultados adicionais:
87
www.it-ebooks.info
Machine Translated by Google
Você também pode usar aliases ao definir argumentos de scripts NSE. Usar:
Em vez de:
Veja também
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.
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
| mapa de
host: | sectools.org
| nmap.org |
insecure.org |
seclists.org |
_secwiki.org
89
www.it-ebooks.info
Machine Translated by Google
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...
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:
Veja também
90
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
Esta receita mostra como fazer registros DNS de força bruta com o Nmap.
Os resultados devem incluir uma lista de registros DNS encontrados se forem bem-sucedidos:
| DNS-bruto:
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
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:
Biblioteca de destino
O argumento --script-args=newtargets força o Nmap a usar novos hosts encontrados como
alvos:
Outros endereços para host.com (não verificados): <IP removido> <IP removido> <IP removido> <IP removido>
92
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
| DNS-bruto:
Observe como especificamos apenas um destino quando iniciamos a verificação, mas o argumento
newtargets adicionou novos IPs à fila de verificação.
93
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita mostra como identificar o sistema operacional de um host remoto usando o Nmap.
#nmap -O <alvo>
# 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
94
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
Nenhuma correspondência exata do sistema operacional para o host (condições de teste não ideais).
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:
Para iniciar a detecção do SO somente quando as condições de verificação forem ideais, use o
argumento --osscan-limit:
95
www.it-ebooks.info
Machine Translated by Google
#nmap -O -v <alvo>
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
Esta receita mostra como usar o Nmap para listar todas as portas UDP abertas em um host.
96
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
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.
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:
97
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita mostra como usar o Nmap para enumerar todos os protocolos IP suportados por um host.
Os resultados mostrarão quais protocolos são suportados, junto com seus estados.
98
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
1 abrir icmp
6 abrir tcp
132 sctp fechado
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 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
Tem mais...
Para especificar quais protocolos devem ser verificados, podemos definir o argumento -p:
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:
99
www.it-ebooks.info
Machine Translated by Google
Veja também
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 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
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:
Estados da porta
O Nmap categoriza as portas usando os seguintes estados:
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
Veja também
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.
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.
#nmap --script-updatedb
102
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
O script vulscan incluirá os registros correspondentes após cada serviço ser descoberto:
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
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
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:
104
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
|_ipidseq: Incremental!
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
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:
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.
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.
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.
106
www.it-ebooks.info
Machine Translated by Google
Capítulo 3
Veja também
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!
www.it-ebooks.info
Machine Translated by Google
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.
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.
Os resultados são mostrados para cada servidor web detectado nas portas 80 ou 443:
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:
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:
111
www.it-ebooks.info
Machine Translated by Google
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.
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:
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 .
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:
Veja também
112
www.it-ebooks.info
Machine Translated by Google
Capítulo 4
Esta receita mostra como usar o Nmap para detectar um proxy HTTP aberto.
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:
113
www.it-ebooks.info
Machine Translated by Google
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:
Veja também
para descobrir arquivos e diretórios interessantes em vários servidores da Web f A receita para detectar
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.
114
www.it-ebooks.info
Machine Translated by Google
Capítulo 4
| 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.
| http-enum: |_ /
crossdomain.xml: política de domínio cruzado do Adobe Flash
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
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'},
},
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:
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:
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:
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:
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 .
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:
Veja também
Esta receita mostra como realizar auditoria de senha de força bruta em servidores da Web que usam
autenticação HTTP.
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:
bruto:
| contas
| Estatísticas |_
Realizou 603 palpites em 7 segundos, tps médio: 86
117
www.it-ebooks.info
Machine Translated by Google
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:
Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
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:
118
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:
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.
f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será tentado.
Veja também
119
www.it-ebooks.info
Machine Translated by Google
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 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:
120
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:
Veja também
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
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
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:
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)
})
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.
Tem mais...
Para varreduras menos intrusivas, filtre as sondagens por categoria usando o argumento de script
http-default-accounts.category:
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:
123
www.it-ebooks.info
Machine Translated by Google
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:
Veja também
para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para detectar
Esta receita mostra como realizar auditoria de senha de força bruta em instalações do WordPress.
Para encontrar contas com senhas fracas em instalações do WordPress, use o seguinte comando Nmap:
Todas as contas válidas que foram encontradas serão mostradas nos resultados:
brute:
| contas
124
www.it-ebooks.info
Machine Translated by Google
Capítulo 4
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.
Tem mais...
Para definir o número de threads, use o argumento de script http-wordpress-brute.threads:
Se o servidor tiver hospedagem virtual, defina o campo host usando o argumento http-wordpress
brute.hostname:
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:
125
www.it-ebooks.info
Machine Translated by Google
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
f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será julgado
Veja também
f A receita para descobrir arquivos e diretórios interessantes em vários servidores da web f A receita para
receita para detectar servidores da web vulneráveis a ataques de negação de serviço lentos
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
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.
f show: /administrator/index.php
f passvar: passwd
Tem mais...
Defina o número do thread com o argumento http-joomla-brute.threads usando o seguinte
comando:
Para definir o campo Host nas solicitações HTTP, use o argumento de script http-joomla-brute.
hostname, usando o seguinte comando:
127
www.it-ebooks.info
Machine Translated by Google
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:
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
f pass: Neste modo, para cada senha listada em passdb, todos os usuários em usedb
será julgado
Veja também
128
www.it-ebooks.info
Machine Translated by Google
Capítulo 4
Esta receita demonstra como usar o Nmap para detectar sistemas de filtragem de pacotes, como um Web Application Firewall
ou um Intrusion Prevention System.
O script http-waf-detect permitirá que você saiba se um sistema de filtragem de pacotes foi 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
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:
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:
NSE: Tamanho final do cache http (1160 bytes) com tamanho máximo de 1.000.000
130
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:
Veja também
131
www.it-ebooks.info
Machine Translated by Google
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).
Caso contrário, http-trace não retornará nada e TRACE não será listado nos métodos http:
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.
1.1 200 OK | | POST / -> HTTP/1.1 200 OK | | OPÇÕES / -> 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
Use os argumentos http-trace.path e http-methods.url-path para solicitar um caminho diferente da pasta raiz ( / ):
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:
Veja também
Descobrindo arquivos e diretórios interessantes em vários servidores da web f A receita Detectando firewalls
de aplicativos da web
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.
Para escanear um servidor web em busca de arquivos vulneráveis a Cross Site Scripting (XSS), usamos o seguinte
comando:
134
www.it-ebooks.info
Machine Translated by Google
Capítulo 4
| http-unsafe-output-escaping: |_ Caracteres
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:
Em um servidor da Web com arquivos vulneráveis, você verá uma saída semelhante à mostrada
abaixo:
| http-phpself-xss: |
VULNERÁVEL: | Uso
Descrição:
Os arquivos PHP não estão lidando com segurança com a variável $_SERVER["PHP_
Informação extra:
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 |
135
www.it-ebooks.info
Machine Translated by Google
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: |
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.
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:
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:
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:
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:
Veja também
137
www.it-ebooks.info
Machine Translated by Google
Esta receita mostra como encontrar vulnerabilidades de injeção de SQL em aplicativos da Web com o Nmap NSE.
Todos os arquivos vulneráveis serão mostrados com os argumentos que possivelmente são vulneráveis:
| 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:
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:
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:
139
www.it-ebooks.info
Machine Translated by Google
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:
Veja também
Esta receita mostra como detectar se um servidor web é vulnerável a ataques Slowloris DoS usando o Nmap.
Para lançar um ataque slowloris contra um servidor web remoto com Nmap, use o seguinte comando:
slowloris:
| Vulnerável: | | com
o ataque DoS levou +5m35s
300 conexões
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 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:
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:
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:
141
www.it-ebooks.info
Machine Translated by Google
Veja também
142
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
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.
Esta receita ensina como usar o Nmap NSE para listar bancos de dados em um servidor MySQL.
| esquema_de_informação
144
www.it-ebooks.info
Machine Translated by Google
capítulo 5
temperatura
| | websec | |
_crm identificadores
Como funciona...
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:
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 Encontrando contas root com senhas vazias em servidores MySQL f A receita
Esta receita mostra como usar o Nmap para enumerar usuários em servidores MySQL.
145
www.it-ebooks.info
Machine Translated by Google
| 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:
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
Esta receita mostra como usar o Nmap para listar variáveis de ambiente em servidores MySQL.
147
www.it-ebooks.info
Machine Translated by Google
Como funciona...
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:
Veja também
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
Se as contas raiz ou anônima tiverem uma senha vazia, ela será mostrada nos resultados do script:
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:
Veja também
149
www.it-ebooks.info
Machine Translated by Google
Esta receita descreve como iniciar ataques de dicionário contra servidores MySQL usando o Nmap.
Se forem encontradas credenciais válidas, elas serão incluídas na seção de saída do mysql-brute :
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:
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:
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
f pass: Para cada senha listada em passdb, todos os usuários em userdb serão tentados
Veja também
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
Cada controle será revisado e uma legenda de PASS, FAIL ou REVIEW será incluída nos
resultados:
| mysql-audit: | | | | | | | | |
Referências
| | | | | base de dadosCIS MySQL v1.0.2
Versão: 5.1.41-3ubuntu12.10
|
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.8: Não conceda privilégios GRANT a usuários não administradores => PASS
6.2: Desabilitar Load data local => FAIL
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:
153
www.it-ebooks.info
Machine Translated by Google
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:
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
Esta receita mostra como executar auditoria de senha de força bruta no Oracle usando o Nmap.
Quaisquer credenciais válidas encontradas serão incluídas nos resultados na seção de saída do script:
154
www.it-ebooks.info
Machine Translated by Google
capítulo 5
| 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:
f Para sair depois de encontrar uma conta válida, use o argumento brute.firstOnly:
f Para definir um limite de tempo limite diferente, use o argumento unpwd.timelimit. Para executá-lo
indefinidamente, defina-o como 0:
155
www.it-ebooks.info
Machine Translated by Google
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>
Veja também
Esta receita mostra como força bruta os nomes SID do Oracle usando o Nmap.
Para nomes SID Oracle de força bruta, use o seguinte comando Nmap:
Todos os SIDs encontrados serão incluídos na seção de saída do script NSE para
oráculo-sid-bruto:
| 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:
Veja também
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:
157
www.it-ebooks.info
Machine Translated by Google
| ms-sql-info:
_ [192.168.1.102\MSSQLSERVER]
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:
A saída é a seguinte:
| ms-sql-info:
158
www.it-ebooks.info
Machine Translated by Google
capítulo 5
[192.168.1.102\MSSQLSERVER]
| | | | | | |_
Agrupado: Não
Veja também
f A receita Encontrando contas de administrador de sistema com senhas vazias em servidores MS SQL
Esta receita mostra como executar auditoria de senha de força bruta de servidores MS SQL usando o
Nmap.
Para executar a auditoria de senha de força bruta em um servidor MS SQL, execute o seguinte
Comando Nmap:
159
www.it-ebooks.info
Machine Translated by Google
Se alguma conta válida for encontrada, ela será incluída na seção de saída do script:
| 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:
A saída é a seguinte:
| ms-sql-bruto: | | |_
[192.168.1.102\MSSQLSERVER]
Credenciais encontradas:
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:
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>
Veja também
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
Esta receita mostra como despejar hashes de senha crackable de um servidor MS SQL com o Nmap.
| 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:
| 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
Veja também
Esta receita mostra como executar comandos do Windows através de servidores MS SQL usando o Nmap.
[192.168.1.102:1433]
Comando: net user
saída
======
-------------------------------------------------- ---------------
--------------
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:
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]
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]
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:
165
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita nos ensina como usar o Nmap para encontrar servidores MS SQL com uma senha de
administrador de sistema vazia.
Para encontrar servidores MS SQL com uma conta sa vazia , abra seu terminal e digite o seguinte comando
Nmap:
Se uma conta com uma senha vazia for encontrada, ela será incluída na seção de saída do script:
| ms-sql-senha-vazia: | |_
[192.168.1.102:1433]
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:
Veja também
167
www.it-ebooks.info
Machine Translated by Google
Esta receita descreve como usar o Nmap para listar bancos de dados no MongoDB.
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
Esta receita descreve como recuperar informações do servidor de uma instalação do MongoDB usando
o Nmap.
| 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
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
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
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
Os resultados incluirão todos os bancos de dados retornados pelo CouchDB na seção de saída couchdb-databases :
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
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
| couchdb-stats:
| httpd_request_methods | | | | | | |
contagem = 1208
MochiWeb)
| atual = 1
contagem = 54
contagem = 970
contagem = 970
| | | | | | | | httpd_status_codes | |
|||| 200 (número de respostas HTTP 200 OK)
atual = 27
contagem = 1208
contagem = 970
172
www.it-ebooks.info
Machine Translated by Google
capítulo 5
| | | | | | | httpd
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
173
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
www.it-ebooks.info
Machine Translated by Google
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.
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.
# nmap --script-updatedb
176
www.it-ebooks.info
Machine Translated by Google
Capítulo 6
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.
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:
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:
177
www.it-ebooks.info
Machine Translated by Google
Veja também
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.
178
www.it-ebooks.info
Machine Translated by Google
Capítulo 6
E-MAIL DE:<user@domain.com>
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.
Tem mais...
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:
Veja também
179
www.it-ebooks.info
Machine Translated by Google
Esta receita mostrará como iniciar ataques de dicionário contra servidores SMTP usando o Nmap.
Se alguma credencial válida for encontrada, ela será incluída na seção de saída do script:
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>
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>
181
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita mostra como enumerar usuários em um servidor SMTP usando o Nmap.
Para enumerar usuários de um servidor SMTP usando o Nmap, digite o seguinte comando:
|_ 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
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:
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:
Para definir um domínio diferente nos comandos SMTP, use o argumento de script smtp-enum-
users.domain:
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:
183
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita mostra como detectar servidores SMTP não autorizados usando o Nmap.
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:
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:
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
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
185
www.it-ebooks.info
Machine Translated by Google
< $NDIFF_RESULTS fi
ser
REDE="SEUDOMÍNIO.COM"
ADMIN=SEU@EMAIL.COM
#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
186
www.it-ebooks.info
Machine Translated by Google
Capítulo 6
| 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 .
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
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>
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>
Veja também
188
www.it-ebooks.info
Machine Translated by Google
Capítulo 6
Esta receita mostra como listar os recursos de um servidor IMAP usando o Nmap.
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:
189
www.it-ebooks.info
Machine Translated by Google
Veja também
Esta receita mostra como executar auditoria de senha de força bruta em servidores de correio POP3 usando
o Nmap.
Para iniciar um ataque de dicionário contra POP3 usando o Nmap, digite o seguinte comando:
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:
Veja também
191
www.it-ebooks.info