Conocer dispositivos conectados en la red e intrusos (con script) y cron

Conocer dispositivos conectados en la red e intrusos (con script)

Mediante nmap podemos analizar redes y obtener mucha información útil y relevante.

En este apartado explicaremos como visualizar todos los dispositivos de una red junto a su marca, modelo, mac e ip. La marca y modelo pueden ser desconocidos en algunos casos (Uknown) pero en la mayoría de los dispositivos si nos será informado.

Al final de los apartados explicaremos como asignar a una tarea cron el script para su ejecución automática.

También podemos encontrar más información sobre nmap aquí

Escanear red completa en busca de hosts

Escanear red completa en busca de hosts

Instalar nmap

Si tienes nmap instalado, puedes saltar al próximo paso.

Instalar nmap es tan fácil como buscar en los repositorios el paquete e instalarlo al igual que cualquier otra aplicación. No tiene ningún paso adicional, aún así veremos como hacerlo en algunas distribuciones:

Debian y Ubuntu:

Mediante apt lo instalamos desde los repositorios:

sudo apt update && sudo apt install nmap

En fedora lo instalamos así:

En el caso de fedora lo instalamos mediante dnf desde los repositorios oficiales

sudo dnf upgrade && sudo dnf install nmap

Para otras distribuciones, buscad en los repositorios e instalar con el gestor de paquetes que disponga.

Conocer la dirección de red y la máscara

No voy a entrar en muchos detalles ya que estos son aspectos técnicos para administradores de redes y en profundidad puede ser muy complejo, aún así tenemos más detalles de máscaras en wikipedia

  • La red, es la primera IP no asignable. Normalmente las compañías usan 192.168.1.1 para su router al ser la primera dirección IP que se puede asignar a un host. En este caso la red sería 192.168.1.0
  • La máscara distingue cuantos equipos podemos tener en la red, con el ejemplo anterior y máscara de 24 bits podriamos tener 254 hosts o dispositivos.

Conociendo como en este ejemplo nuestra red y máscara, tendremos abreviado lo siguiente:

192.168.1.0/24

Lo que indica que estamos en la red 192.168.1.0 y tiene una máscara de 24 bits (255.255.255.0 = 8bits/8bits/8bits/0bits de red)

No es tan confuso como parece, esto lo podéis ver en vuestro gestor de red o mediante el comando:

ip address

Quedando una salida como en la siguiente imagen:

Resultado del Comando ip address

Veremos claramente cual es nuestra máscara y la red será así:

  • /8 = 192.0.0.0
  • /16 = 192.168.0.0
  • /24 = 192.168.1.0

Son las 3 opciones más comunes (aunque la parte “192.168.1” puede variar, reemplazarla a vuestro caso)

Búsqueda de hosts o dispositivos en la red manualmente

Podemos buscar estos dispositivos sin hacer uso del script que propondré un poco más abajo, aunque en ese script si que contemplo detalles necesarios para un correcto funcionamiento y evitar algunos errores. Además el script genera un log con el resultado para que podamos analizarlo posteriormente si lo deseamos.

Como en el paso anterior distinguimos la red en la que estamos y además ya sabemos su máscara, simplemente ejecutamos la siguiente orden:

sudo nmap -sPn 192.168.1.0/24

Esto devolverá el listado de dispositivos o hosts encontrados.

Búsqueda de hosts o dispositivos en la red mediante un script

Ahora veremos utilizando el script que he creado para este objetivo, es muy cómodo y rápido de usar evitando tener que memorizar el comando y además te permite tenerlo en una tarea cron ya que almacena los datos en un log que podrás consultar después.

El repositorio donde lo he desarrollado está aquí:

https://gitlab.com/fryntiz/shellscript

Ahí tengo más cosas además de este script, el script concretamente se encuentra aquí:

https://gitlab.com/fryntiz/shellscript/blob/master/Pentesting/detectarintrusosred.sh

Puedes descargarlo directamente en tu terminal con la siguiente orden:

wget https://gitlab.com/fryntiz/shellscript/raw/master/Pentesting/detectar_intrusos_red.sh -O detectar_intrusos_red.sh

Ahora le damos permisos de ejecución:

chmod a+x detectar_intrusos_red.sh

Tenemos el script y podemos ejecutarlo así:

./detectar_intrusos_red.sh

Script para buscar hosts en la red agrego máscara

Mostrará esta imagen:

Script para buscar hosts en la red agrego máscara

Le introducimos la dirección de la red y la máscara quedando tal que así:

Script para buscar hosts en la red agrego máscara

Ahora escaneará y nos mostrará todo lo que encuentre.

También podemos consultar el archivo de log que será registrado en /tmp/detectar_intrusos.log así:

more /tmp/detectar_intrusos.log

Dándole a intro vamos avanzando en el paginador.

Agregar análisis a una tarea cron

Esta tarea se puede agregar a un cron para que se lleve a cabo por ejemplo cada una hora, así luego consultamos el archivo y veremos que ha ocurrido mientras tanto.

Podemos jugar con el tiempo de escaneo y luego filtrar, aquí nos centraremos en dejar todo registrado en el log con una tarea cron.

Primero situamos el script en un lugar fijo, puede ser /usr/bin/ o preferiblemente en ~/.local/bin/escanear-hosts.sh

wget https://gitlab.com/fryntiz/shellscript/raw/master/Pentesting/detectar_intrusos_red.sh -O "$HOME/.local/bin/escanear-hosts.sh"

Ahora le damos permisos también:

chmod a+x ~/.local/bin/escanear-hosts.sh

Ahora tenemos que modificar el script solo dos variables que tiene para indicarle la dirección de red y así no tener nosotros que estar frente al equipo, la otra variable que modificaremos será donde guardar el log ya que por defecto en /tmp será borrado.

nano ~/.local/bin/escanear-hosts.sh

Modificamos las dos variables con las rutas que prefiramos:

script-detectar-intrusos-modificar-rutas.png

Script para buscar hosts en la red modificar rutas

Recordad ejecutadlo como vimos en el paso anterior para comprobar que se hace correctamente y guarda bien el log.

Una vez todo funcionando bien vamos a meterlo como tarea cron, para ello abrimos el archivo de configuración con nuestro propio usuario:

crontab -e

Y añadimos dentro la tarea, en el ejemplo os pondré cada 1 minuto para que lo podáis comprobar pronto pero tal vez una buena idea sería cada 10 minutos o más tiempo y así no entorpecer la red.

Ejemplo de cron a cada minuto:

* * * * * $HOME/.local/bin/escanear-hosts.sh

Ejemplo de cron cada 5 minutos

*/5 * * * * $HOME/.local/bin/escanear-hosts.sh

Ejemplo de cron cada 10 minutos

*/10 * * * * $HOME/.local/bin/escanear-hosts.sh

Ejemplo de cron a cada hora:

0 * * * * $HOME/.local/bin/escanear-hosts.sh

Quedando algo similar a esto:

Programando cron a cada minuto para detectar intrusos en la red

Añadir usuario al grupo de crontab

Nos aseguramos de que el usuario pueda ejecutar tareas cron agregándolo al grupo que ha creado el sistema para ello.

Esto lo conseguimos de la siguiente manera:

sudo addgroup NOMBRE-DE-TU-USUARIO crontab

Quedando así:

Agregando usuario al grupo de cron en el sistema

Crear registro de log

Si no se guardan logs posiblemente sea que no tienes permisos, para ello vamos a crear el archivo de logs y darle propietario:

sudo touch /var/log/escanear-hosts.log
sudo chown NOMBRE-DE-TU-USUARIO /var/log/escanear-hosts.log

Reiniciar cron

Tal vez necesitemos reiniciar cron para que tome la nueva configuración que acabamos de agregarle:

sudo systemctl restart cron

En algunos sistemas no es cron sino crond

Esto al reiniciar quedaría también puesto, pero no es necesario reiniciar todo el sistema sino que con el servicio bastará.

Ver el log creado

Cuando pase unas horas puedes ver todo lo que se ha ido registrando en el log de forma paginada con el siguiente comando:

more /var/log/escanear-hosts.log

Raúl Caro Pastorino

Informático, técnico en sistemas, redes, baja tensión (electricidad) y desarrollador de aplicaciones WEB. Soy un apasionado por GNU/LINUX y el software libre en general desde prácticamente el año 2001-2003 que comencé. Intento usar y trabajar siempre con código libre o abierto de forma profesional. Me apasiona la programación, la micro-electrónica, el diseño gráfico y edición multimedia. Fan de Raspberry y arduino. Programo en bash, python, php y javascript principalmente. Repositorios de código con git: https://gitlab.com/fryntiz https://github.com/fryntiz

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.