Automatización en Kali con Bash y Python

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a automatizar tareas en Kali Linux utilizando scripts de Bash y Python. El enfoque está en optimizar tareas repetitivas de auditoría de seguridad, como el escaneo de red con Nmap y el análisis de registros. Crearás scripts, establecerás permisos, programarás tareas automatizadas con trabajos Cron y probarás su ejecución. Este laboratorio proporciona una guía detallada, paso a paso, para construir habilidades fundamentales de automatización en un contenedor de Kali Linux. Cuando abras la terminal, estarás conectado automáticamente al shell del contenedor de Kali Linux, listo para comenzar.

Configuración del Entorno e Instalación de Herramientas

En este primer paso, prepararás tu entorno de trabajo dentro del contenedor de Kali Linux instalando las herramientas necesarias. Este es un paso fundamental para asegurar que tienes todo el software requerido para las tareas de automatización venideras.

Cuando abras la terminal, ya estarás conectado automáticamente al shell del contenedor de Kali Linux. Puedes comenzar a trabajar de inmediato.

Primero, actualiza la lista de paquetes para asegurar que puedes obtener las últimas versiones del software.

apt update

Luego, instala nmap para el escaneo de red y python3 para el scripting. Estas herramientas son críticas para las tareas de este laboratorio.

apt install -y nmap python3 nano

La instalación puede tardar unos momentos. Una vez completada, verifica que nmap esté instalado comprobando su versión.

nmap --version

La salida debe ser similar a la siguiente, confirmando que nmap está listo para usarse.

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

A continuación, verifica la instalación de python3.

python3 --version

La salida mostrará la versión de Python instalada, similar a esta:

Python 3.x.x

Con estas herramientas instaladas, tu entorno de Kali Linux está preparado para las tareas de automatización en los próximos pasos.

Creación de un Script Bash para Escaneos Nmap

Ahora que tu entorno está configurado, crearás un script Bash para automatizar los escaneos de Nmap. El scripting Bash es una forma poderosa de automatizar tareas de línea de comandos en Linux. En este paso, escribirás un script simple para ejecutar un escaneo Nmap en localhost.

Primero, usa el editor de texto nano para crear un nuevo archivo llamado nmap_scan.sh en el directorio /root.

nano /root/nmap_scan.sh

Este comando abre un archivo en blanco en el editor nano. Escribe o pega el siguiente contenido en el editor:

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

Este script contiene tres partes principales:

  • #!/bin/bash: Esta línea, conocida como shebang, especifica que el script debe ejecutarse con el intérprete Bash.
  • echo "...": Estos comandos imprimen mensajes de estado en la terminal.
  • nmap localhost: Este comando ejecuta un escaneo Nmap básico en tu máquina local, que es un objetivo seguro para practicar.

Para guardar el archivo en nano, presiona Ctrl+O, luego presiona Enter para confirmar el nombre del archivo. Para salir del editor, presiona Ctrl+X.

Después de volver a la terminal, verifica que el archivo se haya creado correctamente listando el contenido del directorio /root.

ls -l /root

Deberías ver tu nuevo script en la salida, similar a esto:

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

Esto confirma que el archivo nmap_scan.sh existe. En los siguientes pasos, harás que este script sea ejecutable y lo probarás.

Creación de un Script Python para Análisis de Registros

A continuación, escribirás un script Python para automatizar el análisis de registros (log parsing). El análisis de registros es una tarea común en el análisis de seguridad, donde se extrae información específica de los archivos de registro. Python es muy adecuado para esto debido a sus potentes capacidades de procesamiento de texto.

Primero, crea un archivo de registro de muestra para que lo analice tu script. Ejecuta el siguiente comando para crear un archivo llamado sample.log en el directorio /root con algunas entradas de registro de ejemplo.

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

Ahora, crea el script Python. Usa nano para crear un nuevo archivo llamado log_parser.py.

nano /root/log_parser.py

En el editor nano, escribe o pega el siguiente 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, lo lee línea por línea e imprime solo las líneas que contienen la palabra ERROR. El método strip() elimina cualquier espacio en blanco al principio o al final de la línea.

Guarda el archivo presionando Ctrl+O y Enter, luego sal de nano presionando Ctrl+X.

Verifica que tanto el archivo de registro como el script Python existan en el directorio /root.

ls -l /root

La salida ahora debería listar ambos archivos:

-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

Has creado con éxito un script Python para el análisis de registros. El siguiente paso es establecer los permisos correctos para ambos scripts.

Establecimiento de Permisos y Pruebas de Scripts

Con ambos scripts creados, el siguiente paso es hacerlos ejecutables y probarlos. En Linux, un script necesita permisos de ejecución para poder ejecutarse directamente desde la terminal.

Primero, comprueba los permisos actuales de los archivos.

ls -l /root

La salida muestra los permisos en la primera columna. El -rw-r--r-- indica que los archivos son legibles y modificables, pero no ejecutables.

-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

Usa el comando chmod con la bandera +x para añadir permisos de ejecución a ambos scripts.

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

Ahora, comprueba los permisos de nuevo.

ls -l /root

La x en la cadena de permisos (-rwxr-xr-x) confirma que los archivos ahora son ejecutables.

-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

Con los permisos establecidos, prueba el script Bash ejecutándolo.

/root/nmap_scan.sh

El script ejecutará el escaneo Nmap e imprimirá los resultados, que deberían ser similares a esto:

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.

A continuación, prueba el script Python.

/root/log_parser.py

El script analizará el archivo de registro e imprimirá solo la línea que contiene "ERROR".

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

Ambos scripts funcionan correctamente ahora. El paso final es programarlos para que se ejecuten automáticamente.

Programación de Scripts con Trabajos Cron

En este paso final, automatizarás la ejecución de tus scripts usando Cron. Cron es un programador de trabajos basado en tiempo en Linux que te permite ejecutar comandos o scripts en intervalos especificados.

Para programar un trabajo, necesitas editar el archivo crontab. Abre el editor crontab ejecutando el siguiente comando.

crontab -e

Si se te pide elegir un editor, selecciona nano introduciendo su número correspondiente y presionando Enter.

Desplázate hasta el final del archivo y añade las siguientes líneas. Estas líneas programan ambos scripts para que se ejecuten cada minuto.

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

Analicemos esta configuración:

  • * * * * *: Esta es la programación. Los cinco asteriscos representan minuto, hora, día del mes, mes y día de la semana. Todos los asteriscos significan que el trabajo se ejecutará cada minuto de cada hora de cada día.
  • /root/nmap_scan.sh: Este es el comando a ejecutar.
  • >> /root/nmap_scan.log: Esto redirige la salida estándar del script y la añade a un archivo de registro.
  • 2>&1: Esto redirige el flujo de error estándar a la salida estándar, asegurando que los mensajes de error también se capturen en el archivo de registro.

Guarda los cambios en nano presionando Ctrl+O y Enter, luego sal con Ctrl+X. Deberías ver un mensaje de confirmación.

crontab: installing new crontab

Para verificar que los trabajos están programados, lista las entradas actuales del crontab.

crontab -l

La salida debería mostrar las líneas que acabas de añadir.

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

Los trabajos cron ya están configurados. Después de un minuto, puedes revisar los archivos de registro para ver la salida de las ejecuciones automatizadas de los scripts.

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

Esto confirma que tus scripts se están ejecutando automáticamente según lo programado.

Resumen

En este laboratorio, has aprendido los fundamentos de la automatización en Kali Linux usando Bash y Python. Comenzaste preparando tu entorno e instalando herramientas esenciales como Nmap y Python. Luego creaste un script Bash para automatizar escaneos de red y un script Python para el análisis de registros. También aprendiste a establecer permisos de ejecución, probar tus scripts y programarlos para su ejecución automática usando trabajos Cron. Estas habilidades proporcionan una base sólida para automatizar tareas repetitivas en ciberseguridad y administración de sistemas.