Introducción
En este laboratorio, aprenderá a automatizar escanos Nmap utilizando scripting de shell y programación cron. El laboratorio comienza creando un sencillo script de shell, scan.sh, que contiene un comando de escanos SYN Nmap dirigido a 192.168.1.1. Luego hará que el script sea ejecutable con chmod +x scan.sh y lo ejecutará desde la terminal.
El laboratorio continúa expandiendo el script para incluir múltiples escanos utilizando un editor de texto. Finalmente, programará el script para que se ejecute automáticamente con cron, configurándolo con crontab -e, y verificará la ejecución automática en la terminal Xfce.
Crea un script de escaneo con echo "nmap -sS 192.168.1.1" > scan.sh
En este paso, crearemos un sencillo script de shell que ejecutará un escaneo Nmap. Este script servirá como base para automatizar escanos más complejos en un futuro. Usaremos el comando echo para escribir el comando Nmap en un archivo llamado scan.sh.
Primero, veamos lo que hace echo. El comando echo simplemente imprime sus argumentos en la salida estándar. Podemos redirigir esta salida a un archivo usando el operador >.
El comando Nmap que usaremos es nmap -sS 192.168.1.1. Analicémoslo:
nmap: Este es el comando para ejecutar el escáner Nmap.-sS: Esta opción especifica un escaneo SYN, que es una forma sigilosa de escanear puertos. También se conoce como "escaneo semi-abierto" porque no completa el handshake TCP.192.168.1.1: Esta es la dirección IP objetivo que queremos escanear. Esta es una dirección IP privada común, pero es posible que necesites ajustarla según tu configuración de red.
Ahora, creemos el script. Abra su terminal en el directorio ~/project (si no ya está ahí) y ejecute el siguiente comando:
echo "nmap -sS 192.168.1.1" > scan.sh
Este comando creará un archivo llamado scan.sh en su directorio ~/project y escribirá el comando Nmap en él.
Para verificar que el archivo se creó correctamente, puede usar el comando cat para mostrar su contenido:
cat scan.sh
Debería ver la siguiente salida:
nmap -sS 192.168.1.1
Esto confirma que el script se ha creado con el comando Nmap correcto.
Haz el script ejecutable con chmod +x scan.sh
En este paso, haremos que el script scan.sh sea ejecutable. Por defecto, los archivos recién creados en Linux no tienen permisos de ejecución. Necesitamos otorgar explícitamente este permiso para poder ejecutar el script.
El comando chmod se utiliza para cambiar los permisos de un archivo o directorio. La opción +x agrega permiso de ejecución al archivo especificado.
En su terminal, vaya al directorio ~/project (si no ya está ahí) y ejecute el siguiente comando:
chmod +x scan.sh
Este comando agregará permiso de ejecución al archivo scan.sh.
Para verificar que el script ahora es ejecutable, puede usar el comando ls -l para listar los permisos del archivo.
ls -l scan.sh
Debería ver una salida similar a esta:
-rwxr-xr-x 1 labex labex 25 Oct 26 10:00 scan.sh
La x en la cadena -rwxr-xr-x indica que el archivo ahora es ejecutable. Específicamente, el primer rwx se refiere a los permisos del propietario (lectura, escritura, ejecución), el segundo r-x se refiere a los permisos del grupo y el tercer r-x se refiere a los permisos para los demás.
Ahora que el script es ejecutable, podemos ejecutarlo en el siguiente paso.
Ejecuta el script con./scan.sh
En este paso, ejecutaremos el script scan.sh que creamos y hicimos ejecutable en los pasos anteriores.
Para ejecutar el script, usamos el prefijo ./. Esto le indica al shell que ejecute el script ubicado en el directorio actual.
En su terminal, asegúrese de estar en el directorio ~/project y ejecute el siguiente comando:
./scan.sh
Debería ver la salida de Nmap en su terminal. La salida variará dependiendo de si el host objetivo (192.168.1.1) es alcanzable y qué servicios se están ejecutando en él. Si el objetivo no es alcanzable, es posible que vea un mensaje como "Host parece apagado". Si el objetivo es alcanzable, verá una lista de puertos abiertos y otra información sobre el objetivo.
Nota importante: La dirección IP 192.168.1.1 es una dirección de puerta de enlace predeterminada común. Si esta no es la dirección correcta para un dispositivo en su red, el escaneo puede no producir resultados útiles. Puede reemplazar 192.168.1.1 con la dirección IP de un dispositivo en su red que desee escanear. Sin embargo, asegúrese de tener permiso para escanear el objetivo. Escanear redes sin permiso es ilegal y poco ético.
Debido a que la salida de nmap puede variar en gran medida dependiendo de la red y el objetivo, no podemos verificar la salida directamente de manera confiable. Sin embargo, podemos verificar que el comando se ejecutó revisando el historial de comandos.
Agrega múltiples análisis al script en el editor de texto Xfce
En este paso, agregaremos más comandos de escaneo de Nmap a nuestro script scan.sh utilizando el editor de texto Xfce. Esto nos permitirá realizar múltiples escaneos con una sola ejecución de script.
Primero, abre el archivo scan.sh en el editor de texto Xfce. Puedes hacer esto haciendo clic derecho en el escritorio, seleccionando "Abrir terminal aquí" y luego escribiendo el siguiente comando:
nano scan.sh
Esto abrirá el archivo scan.sh en el editor de texto nano.
Actualmente, el script contiene una sola línea:
nmap -sS 192.168.1.1
Agreguemos otro comando de escaneo. Por ejemplo, podemos agregar un escaneo de ping (-sn) para comprobar si otro host está encendido:
nmap -sS 192.168.1.1
nmap -sn 192.168.1.2
Puedes agregar tantos comandos de escaneo como desees. Por ejemplo, agreguemos un escaneo de detección de versión (-sV) al primer objetivo:
nmap -sS -sV 192.168.1.1
nmap -sn 192.168.1.2
Ahora, el script primero realizará un escaneo SYN con detección de versión en 192.168.1.1, y luego realizará un escaneo de ping en 192.168.1.2.
Nota importante: Recuerda reemplazar 192.168.1.1 y 192.168.1.2 con las direcciones IP de los dispositivos en tu red que desees escanear, y asegúrate de tener permiso para escanearlos.
Para guardar los cambios, presiona Ctrl+X, luego Y para confirmar y luego Enter para guardar el archivo.
Ahora, cuando ejecutes el script usando ./scan.sh, ejecutará todos los comandos de Nmap que agregaste.
Programa un escaneo con cron usando crontab -e
En este paso, programaremos nuestro script scan.sh para que se ejecute automáticamente usando cron. cron es un programador de tareas basado en el tiempo en los sistemas operativos similares a Linux. Te permite programar comandos o scripts para que se ejecuten en momentos, fechas o intervalos específicos.
Para programar una tarea con cron, usamos el comando crontab. El comando crontab -e abre el archivo crontab en un editor de texto (generalmente nano en el entorno de LabEx).
En tu terminal, escribe el siguiente comando:
crontab -e
Si es la primera vez que usas crontab, es posible que se te solicite que selecciones un editor. Elige nano seleccionando el número correspondiente.
El archivo crontab contiene una lista de trabajos cron, cada uno en una línea separada. Cada línea consta de seis campos:
minuto hora día_del_mes mes día_de_la_semana comando
- minuto: El minuto de la hora en el que se ejecutará el trabajo (0 - 59).
- hora: La hora del día en la que se ejecutará el trabajo (0 - 23).
- día_del_mes: El día del mes en el que se ejecutará el trabajo (1 - 31).
- mes: El mes del año en el que se ejecutará el trabajo (1 - 12).
- día_de_la_semana: El día de la semana en el que se ejecutará el trabajo (0 - 6, donde 0 es domingo).
- comando: El comando a ejecutar.
Por ejemplo, para ejecutar el script scan.sh cada minuto, agrega la siguiente línea al archivo crontab:
* * * * * /home/labex/project/scan.sh
Esta línea significa:
*: Cada minuto*: Cada hora*: Cada día del mes*: Cada mes*: Cada día de la semana/home/labex/project/scan.sh: El comando a ejecutar (la ruta completa a nuestro script)
Importante: En un escenario real, generalmente no es una buena idea ejecutar escaneos cada minuto, ya que puede causar sobrecarga en la red y en los dispositivos objetivo. Para fines de prueba en este laboratorio, es aceptable ejecutarlo cada minuto.
Para guardar los cambios, presiona Ctrl+X, luego Y para confirmar y luego Enter para guardar el archivo.
Deberías ver un mensaje como "crontab: instalando nuevo crontab". Esto significa que el trabajo cron se ha programado con éxito.
Los trabajos cron generalmente se ejecutan en segundo plano sin mostrar ninguna salida. Para ver la salida del script scan.sh, puedes redirigirla a un archivo. Por ejemplo, para redirigir la salida a un archivo llamado scan.log en tu directorio ~/project, puedes modificar la entrada del trabajo cron de la siguiente manera:
* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1
La parte > /home/labex/project/scan.log redirige la salida estándar al archivo scan.log, y 2>&1 redirige el error estándar al mismo archivo.
Verifica la automatización en la terminal Xfce
En este paso, verificaremos que el script scan.sh se está ejecutando automáticamente por cron. Dado que programamos el script para que se ejecute cada minuto, deberíamos ver evidencia de su ejecución.
Si redirigiste la salida del script a un archivo (por ejemplo, scan.log), puedes revisar el contenido de ese archivo para ver si el script ha estado ejecutándose. En tu terminal, escribe el siguiente comando:
tail /home/labex/project/scan.log
Este comando mostrará las últimas líneas del archivo scan.log. Si el script se está ejecutando correctamente, deberías ver la salida de los escaneos de Nmap en el archivo, actualizada cada minuto.
Si no redirigiste la salida a un archivo, no tendrás un archivo scan.log. En este caso, puedes crear uno ahora y redirigir la salida del trabajo cron a él. Edita el crontab nuevamente:
crontab -e
Y cambia la entrada del trabajo cron a:
* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1
Guarda el archivo crontab. Luego, espera un minuto o dos y revisa el archivo scan.log nuevamente usando tail /home/labex/project/scan.log.
Si aún no ves ninguna salida, puede haber un problema con el script o el trabajo cron. Revisa detenidamente lo siguiente:
- Asegúrate de que el script
scan.shsea ejecutable (chmod +x scan.sh). - Asegúrate de que la entrada del trabajo cron sea correcta en el archivo crontab (
crontab -lpara listar los trabajos cron). - Asegúrate de que se use la ruta completa al script en la entrada del trabajo cron (
/home/labex/project/scan.sh). - Busca cualquier error en el script mismo.
Importante: Debido a que el trabajo cron se ejecuta cada minuto, el archivo scan.log crecerá rápidamente. Puedes querer eliminar el trabajo cron después de haber verificado que está funcionando correctamente para evitar llenar el espacio en disco. Puedes eliminar el trabajo cron editando el archivo crontab (crontab -e) y eliminando la línea que agregaste.
Resumen
En este laboratorio, aprendimos cómo automatizar los escaneos de Nmap usando scripts de shell y cron. Primero, creamos un sencillo script de shell llamado scan.sh que contiene un comando de escaneo SYN de Nmap dirigido a una dirección IP específica. Luego usamos chmod +x scan.sh para hacer el script ejecutable, lo que nos permite ejecutarlo directamente desde la terminal.
A continuación, ampliamos el script para incluir múltiples escaneos usando un editor de texto. Finalmente, programamos el script para que se ejecute automáticamente usando cron, configurando un trabajo cron con crontab -e y verificando la automatización en la terminal Xfce. Esto demostró cómo automatizar tareas de escaneo de red para monitoreo regular o evaluaciones de seguridad.



