Automatize Varreduras com Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como automatizar varreduras Nmap usando shell scripting e agendamento cron. O laboratório começa criando um script shell simples, scan.sh, contendo um comando de varredura SYN do Nmap direcionado para 192.168.1.1. Em seguida, você tornará o script executável usando chmod +x scan.sh e o executará a partir do terminal.

O laboratório continua expandindo o script para incluir múltiplas varreduras usando um editor de texto. Finalmente, você agendará o script para ser executado automaticamente usando cron, configurando-o com crontab -e, e verificará a execução automatizada no terminal Xfce.

Crie o script de varredura com echo "nmap -sS 192.168.1.1" > scan.sh

Nesta etapa, criaremos um script shell simples que executa uma varredura Nmap. Este script servirá como base para automatizar varreduras mais complexas posteriormente. Usaremos o comando echo para escrever o comando Nmap em um arquivo chamado scan.sh.

Primeiro, vamos entender o que o echo faz. O comando echo simplesmente imprime seus argumentos para a saída padrão. Podemos redirecionar essa saída para um arquivo usando o operador >.

O comando Nmap que usaremos é nmap -sS 192.168.1.1. Vamos detalhá-lo:

  • nmap: Este é o comando para executar o scanner Nmap.
  • -sS: Esta opção especifica uma varredura SYN, que é uma maneira furtiva de varrer portas. Também é conhecida como uma varredura "half-open" (meio aberta) porque não completa o handshake TCP.
  • 192.168.1.1: Este é o endereço IP de destino que queremos varrer. Este é um endereço IP privado comum, mas pode ser necessário ajustá-lo com base na configuração da sua rede.

Agora, vamos criar o script. Abra seu terminal no diretório ~/project (se você ainda não estiver lá) e execute o seguinte comando:

echo "nmap -sS 192.168.1.1" > scan.sh

Este comando criará um arquivo chamado scan.sh em seu diretório ~/project e escreverá o comando Nmap nele.

Para verificar se o arquivo foi criado corretamente, você pode usar o comando cat para exibir seu conteúdo:

cat scan.sh

Você deve ver a seguinte saída:

nmap -sS 192.168.1.1

Isso confirma que o script foi criado com o comando Nmap correto.

Torne o script executável com chmod +x scan.sh

Nesta etapa, tornaremos o script scan.sh executável. Por padrão, os arquivos recém-criados no Linux não possuem permissões de execução. Precisamos conceder explicitamente essa permissão para nos permitir executar o script.

O comando chmod é usado para alterar as permissões de um arquivo ou diretório. A opção +x adiciona a permissão de execução ao arquivo especificado.

Em seu terminal, navegue até o diretório ~/project (se você ainda não estiver lá) e execute o seguinte comando:

chmod +x scan.sh

Este comando adicionará a permissão de execução ao arquivo scan.sh.

Para verificar se o script agora é executável, você pode usar o comando ls -l para listar as permissões do arquivo.

ls -l scan.sh

Você deve ver uma saída semelhante a esta:

-rwxr-xr-x 1 labex labex 25 Oct 26 10:00 scan.sh

O x na string -rwxr-xr-x indica que o arquivo agora é executável. Especificamente, o primeiro rwx se refere às permissões do proprietário (leitura, escrita, execução), o segundo r-x se refere às permissões do grupo e o terceiro r-x se refere às permissões para outros.

Agora que o script é executável, podemos executá-lo na próxima etapa.

Execute o script com ./scan.sh

Nesta etapa, executaremos o script scan.sh que criamos e tornamos executável nas etapas anteriores.

Para executar o script, usamos o prefixo ./. Isso informa ao shell para executar o script localizado no diretório atual.

Em seu terminal, certifique-se de estar no diretório ~/project e execute o seguinte comando:

./scan.sh

Você deve ver a saída do Nmap em seu terminal. A saída variará dependendo se o host de destino (192.168.1.1) é acessível e quais serviços estão sendo executados nele. Se o destino for inacessível, você poderá ver uma mensagem como "Host seems down." (Host parece inativo). Se o destino for acessível, você verá uma lista de portas abertas e outras informações sobre o destino.

Nota Importante: O endereço IP 192.168.1.1 é um endereço de gateway padrão comum. Se este não for o endereço correto para um dispositivo em sua rede, a varredura pode não produzir resultados úteis. Você pode substituir 192.168.1.1 pelo endereço IP de um dispositivo em sua rede que você deseja varrer. No entanto, certifique-se de ter permissão para varrer o destino. Varreduras de redes sem permissão são ilegais e antiéticas.

Como a saída do nmap pode variar muito dependendo da rede e do destino, não podemos verificar a saída diretamente de forma confiável. No entanto, podemos verificar se o comando foi executado verificando o histórico de comandos.

Adicione múltiplas varreduras ao script no editor de texto Xfce

Nesta etapa, adicionaremos mais comandos de varredura Nmap ao nosso script scan.sh usando o editor de texto Xfce. Isso nos permitirá realizar múltiplas varreduras com uma única execução do script.

Primeiro, abra o arquivo scan.sh no editor de texto Xfce. Você pode fazer isso clicando com o botão direito na área de trabalho, selecionando "Abrir Terminal Aqui" e, em seguida, digitando o seguinte comando:

nano scan.sh

Isso abrirá o arquivo scan.sh no editor de texto nano.

Atualmente, o script contém uma única linha:

nmap -sS 192.168.1.1

Vamos adicionar outro comando de varredura. Por exemplo, podemos adicionar uma varredura ping (-sn) para verificar se outro host está ativo:

nmap -sS 192.168.1.1
nmap -sn 192.168.1.2

Você pode adicionar quantos comandos de varredura desejar. Por exemplo, vamos adicionar uma varredura de detecção de versão (-sV) ao primeiro alvo:

nmap -sS -sV 192.168.1.1
nmap -sn 192.168.1.2

Agora, o script primeiro executará uma varredura SYN com detecção de versão em 192.168.1.1 e, em seguida, executará uma varredura ping em 192.168.1.2.

Nota Importante: Lembre-se de substituir 192.168.1.1 e 192.168.1.2 pelos endereços IP dos dispositivos em sua rede que você deseja varrer e certifique-se de ter permissão para varrê-los.

Para salvar as alterações, pressione Ctrl+X, depois Y para confirmar e, em seguida, Enter para salvar o arquivo.

Agora, quando você executar o script usando ./scan.sh, ele executará todos os comandos Nmap que você adicionou.

Agendar varredura com cron usando crontab -e

Nesta etapa, agendaremos nosso script scan.sh para ser executado automaticamente usando cron. cron é um agendador de tarefas baseado em tempo em sistemas operacionais semelhantes ao Linux. Ele permite que você agende comandos ou scripts para serem executados em horários, datas ou intervalos específicos.

Para agendar uma tarefa com cron, usamos o comando crontab. O comando crontab -e abre o arquivo crontab em um editor de texto (geralmente nano no ambiente LabEx).

Em seu terminal, digite o seguinte comando:

crontab -e

Se esta for a primeira vez que você está usando crontab, poderá ser solicitado a selecionar um editor. Escolha nano selecionando o número correspondente.

O arquivo crontab contém uma lista de tarefas cron (cron jobs), cada uma em uma linha separada. Cada linha consiste em seis campos:

minute hour day_of_month month day_of_week command
  • minute: O minuto da hora em que a tarefa será executada (0-59).
  • hour: A hora do dia em que a tarefa será executada (0-23).
  • day_of_month: O dia do mês em que a tarefa será executada (1-31).
  • month: O mês do ano em que a tarefa será executada (1-12).
  • day_of_week: O dia da semana em que a tarefa será executada (0-6, onde 0 é domingo).
  • command: O comando a ser executado.

Por exemplo, para executar o script scan.sh a cada minuto, adicione a seguinte linha ao arquivo crontab:

* * * * * /home/labex/project/scan.sh

Esta linha significa:

  • *: A cada minuto
  • *: A cada hora
  • *: A cada dia do mês
  • *: A cada mês
  • *: A cada dia da semana
  • /home/labex/project/scan.sh: O comando a ser executado (o caminho completo para o nosso script)

Importante: Geralmente, não é uma boa ideia executar varreduras a cada minuto em um cenário do mundo real, pois isso pode sobrecarregar a rede e os dispositivos de destino. Para fins de teste neste laboratório, executá-lo a cada minuto é aceitável.

Para salvar as alterações, pressione Ctrl+X, depois Y para confirmar e, em seguida, Enter para salvar o arquivo.

Você deve ver uma mensagem como "crontab: installing new crontab". Isso significa que a tarefa cron foi agendada com sucesso.

As tarefas cron normalmente são executadas em segundo plano sem exibir nenhuma saída. Para ver a saída do script scan.sh, você pode redirecioná-la para um arquivo. Por exemplo, para redirecionar a saída para um arquivo chamado scan.log em seu diretório ~/project, você pode modificar a entrada da tarefa cron da seguinte forma:

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

A parte > /home/labex/project/scan.log redireciona a saída padrão para o arquivo scan.log, e 2>&1 redireciona o erro padrão para o mesmo arquivo.

Verificar automação no terminal Xfce

Nesta etapa, verificaremos se o script scan.sh está sendo executado automaticamente pelo cron. Como agendamos o script para ser executado a cada minuto, devemos ver evidências de sua execução.

Se você redirecionou a saída do script para um arquivo (por exemplo, scan.log), pode verificar o conteúdo desse arquivo para ver se o script está sendo executado. Em seu terminal, digite o seguinte comando:

tail /home/labex/project/scan.log

Este comando exibirá as últimas linhas do arquivo scan.log. Se o script estiver sendo executado corretamente, você deverá ver a saída das varreduras Nmap no arquivo, atualizada a cada minuto.

Se você não redirecionou a saída para um arquivo, não terá um arquivo scan.log. Nesse caso, você pode criar um agora e redirecionar a saída da tarefa cron para ele. Edite o crontab novamente:

crontab -e

E altere a entrada da tarefa cron para:

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

Salve o arquivo crontab. Em seguida, aguarde um ou dois minutos e verifique o arquivo scan.log novamente usando tail /home/labex/project/scan.log.

Se você ainda não vir nenhuma saída, pode haver um problema com o script ou com a tarefa cron. Verifique novamente o seguinte:

  • Certifique-se de que o script scan.sh seja executável (chmod +x scan.sh).
  • Certifique-se de que a entrada da tarefa cron esteja correta no arquivo crontab (crontab -l para listar as tarefas cron).
  • Certifique-se de que o caminho completo para o script seja usado na entrada da tarefa cron (/home/labex/project/scan.sh).
  • Verifique se há erros no próprio script.

Importante: Como a tarefa cron é executada a cada minuto, o arquivo scan.log crescerá rapidamente. Você pode querer remover a tarefa cron depois de verificar se ela está funcionando corretamente para evitar encher o espaço em disco. Você pode remover a tarefa cron editando o arquivo crontab (crontab -e) e excluindo a linha que você adicionou.

Resumo

Neste laboratório, aprendemos como automatizar varreduras Nmap usando scripts de shell e cron. Primeiro, criamos um script de shell simples chamado scan.sh contendo um comando de varredura SYN do Nmap direcionado a um endereço IP específico. Em seguida, usamos chmod +x scan.sh para tornar o script executável, permitindo que o executássemos diretamente do terminal.

Em seguida, expandimos o script para incluir várias varreduras usando um editor de texto. Finalmente, agendamos o script para ser executado automaticamente usando cron, configurando uma tarefa cron com crontab -e e verificando a automação no terminal Xfce. Isso demonstrou como automatizar tarefas de varredura de rede para monitoramento regular ou avaliações de segurança.