Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: elsebasoto en 27 Marzo 2011, 22:48 pm



Título: Mini script para scaneo [bash]
Publicado por: elsebasoto en 27 Marzo 2011, 22:48 pm
Hola gente, les traigo un pequeño script que hice para realizar escaneos

La idea es que muchas veces quiero obtener un listado de IP que dispongan de un determinado servicio abierto y no conseguí las IP una debajo de la otra.

Lo que hice fue utilizar unas opciones de Nmap para quitar información que me sobra y que a su vez acelera mucho el proceso.

Espero que les sea de tanta utilidad a ustedes como me fue a mi.

Si ponen -h les va a decir como usarlo.

Obviamente que está mas que en versión beta así que se aceptan criticas constructivas.  :D:D:D

Gracias y saludos a todos

Código:
#!/bin/bash

case ${1} in
"-h" )
echo -e "Search a service from an IP range"
echo -e "Usage:"
echo -e "scan.sh [service] [target] [output_file]"
echo -e "Service:"
echo -e "\tsmb"
echo -e "\thttp"
echo -e "\tftp"
echo -e "\tsmtp"
echo -e "\ttftp"
echo -e "Target:"
echo -e "\t192.168.1.1"
echo -e "\t192.168.1.0-255"
echo -e "\t192.168.1.0/24"
echo -e "Example: ./scan.sh smb 192.168.1.0/24 smb.txt"
echo -e "Author: elsebasoto"
exit
;;
"smb" )
ports="445"
start="32"
;;
"http" )
ports="80"
start="31"
;;
"ftp" )
ports="21"
start="31"
;;
"smtp" )
ports="25"
start="31"
;;
"tftp" )
ports="69 -sU"
start="31"
;;
esac

# Variables
target=${2}
output=${3}

# Scan target
nmap -v -n -PN -p $ports $target | grep "Discovered" > ./target.txt

# Split IP
while read line
do
   ip=${line:$start:15}
   echo $ip >> ./ip.txt
done < ./target.txt

# Sorting
if [ $output == "" ]; then
output="./ip.txt"
fi

sort ./ip.txt -o $output

# Cleaning temporal files
rm ./ip.txt ./target.txt


Título: Re: Mini script para scaneo [bash]
Publicado por: D4RIO en 30 Marzo 2011, 17:25 pm
Valida las variables de entrada, observa:

Código
  1. # Sorting
  2. if [ $output == "" ]; then
  3. output="./ip.txt"
  4. fi
  5.  
  6. sort ./ip.txt -o $output
  7.  
  8. # Cleaning temporal files
  9. rm ./ip.txt ./target.txt

Si no se pasa archivo de salida, se definira ouput como ip.txt, se escribirá el archivo de salida alli, y luego se borrara porque ip.txt se cuenta como temporal y output por default.

Por otro lado debes considerar que estás usando archivos temporales cuando no los necesitas.


Título: Re: Mini script para scaneo [bash]
Publicado por: elsebasoto en 31 Marzo 2011, 02:53 am
Muchas gracias por la anotación del ./ip.txt  :P

Quedaría así

Código:
# Cleaning temporal files
rm ./target.txt


Me gustaría mucho si me cuentas como hacer todo esto sin archivo auxiliar porque la verdad es que no se me ocurre.

Gracias por la ayuda!!!!  ;-) ;-) ;-) ;-)


Título: Re: Mini script para scaneo [bash]
Publicado por: D4RIO en 31 Marzo 2011, 13:36 pm
básicamente, el splitteo lo podés hacer con AWK y a lo sumo con Perl. Después lo pasas por un pipe a sort.

Pero el hecho de que no hayas visto lo del fichero temporal me hace pensar que no lo revisaste bien. Analizalo y deberías poder quitar ese fichero.


Título: Re: Mini script para scaneo [bash]
Publicado por: elsebasoto en 23 Abril 2011, 00:30 am
Actualización

nmap -v -n -PN -p $ports $target | grep "Discovered" | awk -F "on " '{print $2}'

de ahí para abajo es historia pasada.

Le agradezco a xD4RIOx que me comentó el AWK

Saludos