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
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:
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
Mostrará esta imagen:
Le introducimos la dirección de la red y la máscara quedando tal que así:
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
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:
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í:
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