Blog

ACTUALIDAD
31 Ago 2020

Escribiendo nuestro propio script en Bash para automatizar la fase de Reconocimiento

//
Comentarios0

Escribiendo nuestro propio script en Bash para automatizar la fase de Reconocimiento

Automatizar los procesos puede ayudarnos en nuestro día a día, permitiendo que algunos de los procesos que realizamos con frecuencia se realicen en un único paso. Prácticamente cualquier comando que podamos lanzar en nuestra consola puede ser programado. Por lo que el Script que prepararemos nos resultara ideal para la fase de reconocimiento.

En este post, creamos un script en Bash para automatizar algunas de las actividades utilizadas en la fase de reconocimiento de una prueba de penetración. La secuencia de comandos utilizará una dirección IP como argumento, posteriormente ejecutará un escaneo Nmap sobre el objetivo y, si se encontrara un puerto HTTP abierto, iniciará Gobuster y WhatWeb.

Comenzaremos creando nuestro script en Bash y asignándole un nombre. Al de nuestra prueba lo llamaremos tssrecon.sh. Podremos utilizar el editor de texto con el que trabajemos más comodamente.

Nuestra primera línea debe comenzar así:

A esta primera línea se la llama Shebang, o Hashbang, su función, es indicar al intérprete del sistema que debe trabajar con un archivo Bash. A continuación, nos aseguraremos de que el usuario pueda proporcionar datos al Script y, si no, imprimiremos un ejemplo. Utilizaremos una función if-then (Si-Entonces):

El argumento $1 será el que le pasaremos al Script, la opción -z nos devolverá verdadero si la cadena es nula. Básicamente, lo que se indica es, si no se pasa ningún argumento, imprime el ejemplo de uso y finaliza. El argumento que utilizaremos será una dirección IP.

  1. En La siguiente sección ejecutaremos un escaneo con Nmap en la dirección IP del equipo que le indiquemos. Primero, imprimiremos un encabezado para Nmap solo para mantener nuestro script bonito y organizado:

Con printf controlamos las líneas nuevas (\ n) de una manera más fiable que con echo. La información recogida se escribirá en un archivo de texto llamado resultados. Se creará el archivo, ya que aún no existe, y sobrescribirá el archivo en futuros usos con escaneos posteriores. A continuación, se imprimirá un mensaje y se ejecutará el comando:

El comando Nmap toma el argumento que le pasamos al script, o sea, la dirección IP, y agrega los resultados a nuestro archivo de salida. Los comandos tail y head eliminan algunas líneas del comienzo y el final de la salida de Nmap. De esta forma hacemos que el resultado se vea un poco más limpio.

  1. Continuaremos utilizando los resultados de nuestro escaneo con Nmap e intentando enumerar puertos abiertos que utilicen HTTP si se cumplen ciertos criterios. Ejecutaremos Gobuster para buscar directorios y WhatWeb para obtener información sobre el servidor web, además, utilizaremos un bucle While para leer cada línea de nuestro archivo de resultados, y en caso de encontrar un puerto abierto que utilice HTTP, se inicien Gobuster y WhatWeb:

Cómo ya hemos comentado, en caso de encontrar un puerto abierto con HTTP, se ejecutará la parte de nuestro código con la función if-then. Gobuster utilizará la dirección IP que le introducimos como la opción -u y usará una lista de palabras especificada en la opción -w. También usaremos las opciones -q y -z para deshabilitar el banner y ocultar el progreso, para mantener nuestro resultado más limpio. Todo se escribirá en un archivo temporal que utilizaremos más adelante en nuestro script.

WhatWeb utilizará la dirección IP que le proporcionamos y creará con la información que recoja un segundo archivo temporal. La opción -v nos ofrece resultados detallados. Cuando el bucle while finaliza de leer todas las líneas del archivo de resultados, se completa y el script pasa a la siguiente sección.

  1. El siguiente bloque de código determinará si existen los archivos temporales anteriores y, de ser así, agregará los resultados al archivo de resultados principal:

La opción -e comprueba si el archivo existe. Si es así, se ejecuta el siguiente bloque de código. Imprime otro encabezado, escribe el contenido del archivo temporal en nuestros resultados y elimina el archivo temporal.

Finalmente, la última línea de nuestro script simplemente mostrará los resultados en nuestra pantalla:

  1. El script completo debería quedar así:

  1. Vamos a comprobar nuestro script de reconocimiento. En este ejemplo, utilizaremos Metasploitable 2 como objetivo. En primer lugar, le asignaremos los permisos necesarios a nuestro script para así poder ejecutarlo:

Si intentamos ejecutarlo sin asignarle un argumento, nos mostrará un ejemplo de cómo utilizarlo:

Para utilizar nuestro script, simplemente le proporcionamos la dirección IP del objetivo y lo ejecutamos:

Este script no es complicado. Ejecuta un escaneo de Nmap, y si se encuentra un puerto HTTP abierto, inicia Gobuster y WhatWeb. Si bien este script nos podría ser muy útil, en caso de necesitarlo, podríamos ampliarlo.

Estamos ejecutando un escaneo básico de Nmap. Pero podríamos escanear puertos adicionales, ejecutar los scripts predeterminados, habilitar la detección del sistema operativo y mucho más. Básicamente, cualquier cosa que se pueda hacer desde la línea de comandos se puede poner en el script.

También podríamos hacer que el script enumere otros servicios además de HTTP, como SMB, SSH y FTP.