Automação Kali com Bash e Python

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a automatizar tarefas no Kali Linux usando scripts Bash e Python. O foco é otimizar tarefas repetitivas de auditoria de segurança, como varredura de rede com Nmap e análise de logs. Você criará scripts, definirá permissões, agendará tarefas automatizadas com Cron jobs e testará sua execução. Este laboratório fornece orientação detalhada, passo a passo, para construir habilidades fundamentais de automação em um contêiner Kali Linux. Ao abrir o terminal, você estará automaticamente conectado ao shell do contêiner Kali Linux, pronto para começar.

Preparando o Ambiente e Instalando Ferramentas

Nesta primeira etapa, você preparará seu ambiente de trabalho dentro do contêiner Kali Linux instalando as ferramentas necessárias. Este é um passo fundamental para garantir que você tenha todo o software exigido para as tarefas de automação futuras.

Ao abrir o terminal, você está automaticamente conectado ao shell do contêiner Kali Linux. Você pode começar a trabalhar imediatamente.

Primeiro, atualize a lista de pacotes para garantir que você possa obter as versões mais recentes do software.

apt update

Em seguida, instale nmap para varredura de rede e python3 para scripting. Essas ferramentas são cruciais para as tarefas deste laboratório.

apt install -y nmap python3 nano

A instalação pode levar alguns momentos. Assim que for concluída, verifique se o nmap foi instalado checando sua versão.

nmap --version

A saída deve ser semelhante à seguinte, confirmando que o nmap está pronto para uso.

Nmap version 7.x ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.4.6 openssl-3.0.11 libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available NSE scripts: 655

Em seguida, verifique a instalação do python3.

python3 --version

A saída mostrará a versão do Python instalada, semelhante a esta:

Python 3.x.x

Com essas ferramentas instaladas, seu ambiente Kali Linux está preparado para as tarefas de automação nas próximas etapas.

Criando um Script Bash para Varreduras Nmap

Agora que seu ambiente está configurado, você criará um script Bash para automatizar varreduras Nmap. O scripting Bash é uma maneira poderosa de automatizar tarefas de linha de comando no Linux. Nesta etapa, você escreverá um script simples para executar uma varredura Nmap em localhost.

Primeiro, use o editor de texto nano para criar um novo arquivo chamado nmap_scan.sh no diretório /root.

nano /root/nmap_scan.sh

Este comando abre um arquivo em branco no editor nano. Digite ou cole o seguinte conteúdo no editor:

#!/bin/bash
echo "Starting Nmap scan on localhost..."
nmap localhost
echo "Scan completed."

Este script contém três partes principais:

  • #!/bin/bash: Esta linha, conhecida como shebang, especifica que o script deve ser executado com o interpretador Bash.
  • echo "...": Estes comandos imprimem mensagens de status no terminal.
  • nmap localhost: Este comando executa uma varredura Nmap básica em sua máquina local, que é um alvo seguro para prática.

Para salvar o arquivo no nano, pressione Ctrl+O, depois pressione Enter para confirmar o nome do arquivo. Para sair do editor, pressione Ctrl+X.

Após retornar ao terminal, verifique se o arquivo foi criado com sucesso listando o conteúdo do diretório /root.

ls -l /root

Você deverá ver seu novo script na saída, semelhante a isto:

-rw-r--r-- 1 root root 85 Oct 20 10:15 nmap_scan.sh

Isso confirma que o arquivo nmap_scan.sh existe. Nas próximas etapas, você tornará este script executável e o testará.

Criando um Script Python para Análise de Logs

Em seguida, você escreverá um script Python para automatizar a análise de logs. A análise de logs é uma tarefa comum em análise de segurança, onde você extrai informações específicas de arquivos de log. O Python é bem adequado para isso devido às suas poderosas capacidades de processamento de texto.

Primeiro, crie um arquivo de log de exemplo para o seu script analisar. Execute o seguinte comando para criar um arquivo chamado sample.log no diretório /root com algumas entradas de log de exemplo.

echo -e "2023-10-20 10:00:00 INFO System started\n2023-10-20 10:01:00 ERROR Connection failed\n2023-10-20 10:02:00 INFO User logged in" > /root/sample.log

Agora, crie o script Python. Use nano para criar um novo arquivo chamado log_parser.py.

nano /root/log_parser.py

No editor nano, digite ou cole o seguinte código Python:

#!/usr/bin/env python3
print("Starting log parsing...")
with open('/root/sample.log', 'r') as file:
    for line in file:
        if 'ERROR' in line:
            print(line.strip())
print("Log parsing completed.")

Este script abre /root/sample.log, o lê linha por linha e imprime apenas as linhas que contêm a palavra ERROR. O método strip() remove quaisquer espaços em branco iniciais ou finais da linha.

Salve o arquivo pressionando Ctrl+O e Enter, depois saia do nano pressionando Ctrl+X.

Verifique se tanto o arquivo de log quanto o script Python existem no diretório /root.

ls -l /root

A saída agora deve listar ambos os arquivos:

-rw-r--r-- 1 root root 150 Oct 20 10:22 log_parser.py
-rw-r--r-- 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Você criou com sucesso um script Python para análise de logs. A próxima etapa é definir as permissões corretas para ambos os scripts.

Definindo Permissões e Testando Scripts

Com ambos os scripts criados, a próxima etapa é torná-los executáveis e testá-los. No Linux, um script precisa de permissões de execução para ser executado diretamente do terminal.

Primeiro, verifique as permissões atuais dos arquivos.

ls -l /root

A saída mostra as permissões na primeira coluna. O -rw-r--r-- indica que os arquivos são legíveis e graváveis, mas não executáveis.

-rw-r--r-- 1 root root 150 Oct 20 10:22 log_parser.py
-rw-r--r-- 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Use o comando chmod com a flag +x para adicionar permissões de execução a ambos os scripts.

chmod +x /root/nmap_scan.sh
chmod +x /root/log_parser.py

Agora, verifique as permissões novamente.

ls -l /root

O x na string de permissões (-rwxr-xr-x) confirma que os arquivos agora são executáveis.

-rwxr-xr-x 1 root root 150 Oct 20 10:22 log_parser.py
-rwxr-xr-x 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Com as permissões definidas, teste o script Bash executando-o.

/root/nmap_scan.sh

O script executará a varredura Nmap e imprimirá os resultados, que devem ser semelhantes a este:

Starting Nmap scan on localhost...
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-20 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.00010s latency).
Other addresses for localhost (not scanned): ::1
rDNS record for 127.0.0.1: localhost
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE
...
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Scan completed.

Em seguida, teste o script Python.

/root/log_parser.py

O script analisará o arquivo de log e imprimirá apenas a linha contendo "ERROR".

Starting log parsing...
2023-10-20 10:01:00 ERROR Connection failed
Log parsing completed.

Ambos os scripts estão funcionando corretamente agora. A etapa final é agendá-los para serem executados automaticamente.

Agendando Scripts com Cron Jobs

Nesta etapa final, você automatizará a execução de seus scripts usando Cron. Cron é um agendador de tarefas baseado em tempo no Linux que permite executar comandos ou scripts em intervalos especificados.

Para agendar um trabalho, você precisa editar o arquivo crontab. Abra o editor crontab executando o seguinte comando.

crontab -e

Se for solicitado a escolher um editor, selecione nano inserindo seu número correspondente e pressionando Enter.

Role até o final do arquivo e adicione as seguintes linhas. Estas linhas agendam ambos os scripts para serem executados a cada minuto.

* * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
* * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Vamos analisar esta configuração:

  • * * * * *: Este é o agendamento. Os cinco asteriscos representam minuto, hora, dia do mês, mês e dia da semana. Todos os asteriscos significam que o trabalho será executado a cada minuto de cada hora de cada dia.
  • /root/nmap_scan.sh: Este é o comando a ser executado.
  • >> /root/nmap_scan.log: Isso redireciona a saída padrão do script e a anexa a um arquivo de log.
  • 2>&1: Isso redireciona o fluxo de erro padrão para a saída padrão, garantindo que as mensagens de erro também sejam capturadas no arquivo de log.

Salve as alterações no nano pressionando Ctrl+O e Enter, depois saia com Ctrl+X. Você deverá ver uma mensagem de confirmação.

crontab: installing new crontab

Para verificar se os trabalhos estão agendados, liste as entradas atuais do crontab.

crontab -l

A saída deverá exibir as linhas que você acabou de adicionar.

* * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
* * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Os Cron jobs estão configurados. Após um minuto, você pode verificar os arquivos de log para ver a saída das execuções de script automatizadas.

cat /root/nmap_scan.log
cat /root/log_parser.log

Isso confirma que seus scripts estão sendo executados automaticamente conforme agendado.

Resumo

Neste laboratório, você aprendeu os fundamentos da automação no Kali Linux usando Bash e Python. Você começou preparando seu ambiente e instalando ferramentas essenciais como Nmap e Python. Em seguida, você criou um script Bash para automatizar varreduras de rede e um script Python para análise de logs. Você também aprendeu a definir permissões de execução, testar seus scripts e agendá-los para execução automática usando Cron jobs. Essas habilidades fornecem uma base sólida para automatizar tarefas repetitivas em segurança cibernética e administração de sistemas.