miércoles, 30 de marzo de 2016

Por necesidades acabe desarrollando un código ...

Por necesidades acabe desarrollando un código en bash cuyo objetivo es, siempre y cuando no tengamos una base de datos con los activos de nuestra empresa, buscar un determinado servicio en las redes que nosotros queramos.

El código se basa en la presencia de la herramienta "Nmap" en nuestro sistema, y de la catalogación de los servicios del mismo.

NOTA: El código es funcional y, obviamente, mejorable.

#!/bin/bash
#
#----- NOTA INFORMATIVA -----
#
#Desarrollado por 4null0
#
#Con el siguiente código se buscan direcciones IP que tengan el puerto indicando (segundo parámetro) abierto.
#
#NOTA: Las redes donde buscar vienen definidas en el archivo indicado como parámetro.
#
#El tercer parámetro, que es opcional, indicaría el servicio a buscar.
#
# Ejemplo del uso del tercer parámetro:
#              ./BusquedaServicio.sh Listado.txt 80 IIS  (Buscaría IPs con el puerto 80 abierto y que el servicio se base en IIS de Microsoft)

if [ $# = 0 ] || [ $# = 1 ] || [ $# -gt 3 ]; then
                echo "Este script sólo admite dos parámetros, que se corresponde con el archivo con:\n"
                echo "1.- Archivo con IPs"
                echo "2.- Puerto"
                echo "3.- Nombre del servicio a encontrar"
                exit
else
                #---VARIABLE QUE CONTIENEN EL NOMBRE DEL DIRECTORIO A CREAR       
                directorio=Puerto-$2

                #---SI EXISTE EL DIRECTORIO, PASAMOS A MOSTRAR LOS DATOS SEGÚN NOS INDIQUEN EL RESTO DE PARÁMETROS, SI NO, CREAMOS EL DIRECTORIO Y CONTINUAMOS CON
                #---NORMALIDAD
                if [ -d $directorio ]; then
                               echo "El directorio existe ... se pasara a mostrar los datos ya obtenidos según el resto de parámetros"
                               echo " "
                              
                               if [ -a $directorio/InformeFinal ]; then

                                               echo "Borramos el archivo: InformeFinal"
                                               echo " "
                                               rm $directorio/InformeFinal
                               fi
                else
                               mkdir $directorio
               
                               #----- ESCANEO DE PUERTOS PARA CADA UNA DE LAS IPs ENCONTRADAS -----
                               for IP in $(cat $1)
                               do
                                               red=$(echo $IP | awk -F "/" '{print $1}')
                                               echo "Escaneando: "$IP
                                               $(nmap -Pn -n -open --host-timeout 10m -p $2 -sV $IP -oN $directorio/$red.txt  1> /dev/null)
                               done
                fi

                #---EXISTE UN TERCER PARÁMETRO, POR LO QUE BUSCAMOS UN SERVICIO EN CONCRETO
                if [ $# = 3 ]; then
                               grep -e "$2/tcp" $directorio/*.txt | awk -F "    " '{print $2}' | sort -u | grep "$3" >> $directorio/Servicios
                else
                               grep -e "$2/tcp" $directorio/*.txt | awk -F "    " '{print $2}' | sort -u >> $directorio/Servicios                    
                              
                fi

                #---OBTENEMOS LAS DIRECCIONES IPs POR CADA SERVICIO ENCONTRADO
                while read i
                do
                               echo $i >> $directorio/InformeFinal
                               echo "-----" >> $directorio/InformeFinal
                               grep -e "$i$" -e "report for" Puerto-$2/*.txt | grep -e "$i$" -B 1 | awk -F "txt:" '{print $2}' | sed 's/Nmap scan report for //;s/open//g' | grep -v "$i$"  | sort -u >> $directorio/InformeFinal
                               echo " " >> $directorio/InformeFinal

                done < $directorio/Servicios

                cat $directorio/InformeFinal
               
                #---ELIMINAMOS EL ARCHIVO TEMPORAL: Servicios
                rm $directorio/Servicios
               
fi

Un saludo Mario






No hay comentarios:

Publicar un comentario