BlogCyber Weapons Lab

Cómo: utilizar GoScan para enumerar rápidamente redes y servicios

[*]

La enumeración de la red es una de las fases esenciales de un ataque, pero puede llevar mucho tiempo y esfuerzo según el tamaño. Nmap y herramientas similares nos han echado a perder a todos, y aunque hay una curva de aprendizaje involucrada, son extremadamente útiles. Pero también está GoScan, una herramienta que se basa en Nmap, que ofrece una forma automatizada de enumerar redes y servicios rápidamente.

GoScan frente a otros escáneres de red

GoScan es un escáner de red interactivo escrito en Go que automatiza ciertos aspectos de Nmap y la enumeración de servicios. Cuenta con autocompletado inteligente de pestañas y una base de datos SQLite en el back-end para mantener conexiones y datos, incluso en entornos inestables. GoScan también incluye otras integraciones externas, como sqlmap, DNSenum, Hydra, Nikto, EyeWitness y NBTScan.

GoScan se diferencia de otros escáneres de red en que es más un marco, construido sobre otras herramientas con fines de abstracción y automatización. Utiliza principalmente la funcionalidad de Nmap para realizar el escaneo de puertos y la enumeración de servicios, pero también aprovecha otros escáneres como Nikto.

Si bien GoScan es útil para enumerar rápidamente redes y servicios, hay algunas cosas que podrían mejorarse. Primero, una vez en el marco, no hay forma de emitir comandos subyacentes del sistema operativo, lo que significa que necesita una nueva ventana o pestaña de terminal. Tampoco existe una manera fácil de cancelar un escaneo, lo cual es lamentable porque algunos de estos pueden llevar mucho tiempo. También podría haber más módulos de enumeración de servicios, pero en general, GoScan es una gran herramienta que facilita las cosas.

Obtenga GoScan instalado y listo

Nosotros usaremos Metasploitable 2 como destino y Kali Linux como nuestra máquina local, pero puede usar una configuración diferente para probar la herramienta.

Descargar GoScan, nosotros podemos usar wget para tomarlo directamente desde GitHub:

~# wget https://github.com/marco-lancini/goscan/releases/download/v2.4/goscan_2.4_linux_amd64.zip

--2020-03-01 12:03:35--  https://github.com/marco-lancini/goscan/releases/download/v2.4/goscan_2.4_linux_amd64.zip
Resolving github.com (github.com)... 192.30.253.112
Connecting to github.com (github.com)|192.30.253.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/133977183/d62b7180-45d6-11e9-95a0-a27738c7d5cb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200301%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200301T170336Z&X-Amz-Expires=300&X-Amz-Signature=30bf07eb967416e5c5f5bdd2f11e144d4b41f55675e75558f435b2fb36b5982d&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dgoscan_2.4_linux_amd64.zip&response-content-type=application%2Foctet-stream [following]
--2020-03-01 12:03:36--  https://github-production-release-asset-2e65be.s3.amazonaws.com/133977183/d62b7180-45d6-11e9-95a0-a27738c7d5cb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200301%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200301T170336Z&X-Amz-Expires=300&X-Amz-Signature=30bf07eb967416e5c5f5bdd2f11e144d4b41f55675e75558f435b2fb36b5982d&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dgoscan_2.4_linux_amd64.zip&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.3
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5031753 (4.8M) [application/octet-stream]
Saving to: ‘goscan_2.4_linux_amd64.zip’

goscan_2.4_linux_amd64.zip 100%[===========================>]   4.80M  6.60MB/s    in 0.7s

2020-03-01 12:03:37 (6.60 MB/s) - ‘goscan_2.4_linux_amd64.zip’ saved [5031753/5031753]

Próximo, abrir la cremallera el archivo:

~# unzip goscan_2.4_linux_amd64.zip

Archive:  goscan_2.4_linux_amd64.zip
  inflating: goscan

Podemos comprobar qué tipo de archivo está utilizando el expediente mando:

~# file goscan

goscan: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, Go BuildID=pGoWXkwAVk8V427XeEiD/_gHLR9pQcRgIcaS6-h1Y/3NHjKMCsn272cDOntZE2/lQhv-s-msoGBONoodm2c, BuildID[sha1]=b0465bb281d341d50215219d6a7611a5b8876c60, with debug_info, not stripped

Parece que ya es ejecutable. Lindo.

A continuación, podemos mover el binario al /compartimiento/ directorio, que nos permitirá ejecutarlo desde cualquier lugar. Utilizar el mv mando:

~# mv ./goscan /bin/goscan

Ahora, cuando ejecutamos GoScan, se nos coloca automáticamente en el marco:

~# goscan

_________     ___________________________   __
__  ____/_______  ___/_  ____/__    |__  | / /
_  / __ _  __ ____ _  /    __  /| |_   |/ /
/ /_/ / / /_/ /___/ // /___  _  ___ |  /|  /
____/  ____//____/ ____/  /_/  |_/_/ |_/

                goscan (v.2.4)
        Marco Lancini [@LanciniMarco]

[-] Created directory: /root/.goscan
[-] Connected to DB
[goscan] >

Opción 1: barrido de ping

GoScan contiene funciones de sugerencia automática de comandos y de finalización de pestañas, lo que facilita su uso. Simplemente comience a escribir un comando y aparecerá una sugerencia y su descripción:

[goscan] > he
              help  Show help

El menú de ayuda es probablemente la parte más crítica de GoScan. Aquí podemos encontrar todos los comandos disponibles, sus descripciones y sintaxis:

[goscan] > help

[*] GoScan automates the scanning and enumeration steps of a penetration test
[*] Available commands:
+----------------------------+------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
|            AREA            |                                   COMMAND                                    |                                      SYNTAX                                      |
+----------------------------+------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| Load target                | Add a single target via the CLI (must be a /32)                              | load target SINGLE <IP>                                                          |
| Load target                | Upload multiple targets from a text file or folder                           | load target MULTI <path-to-file>                                                 |
| Host Discovery             | Perform a Ping Sweep                                                         | sweep <TYPE> <TARGET>                                                            |
| Load Host Discovery        | Add a single alive host via the CLI (must be a /32)                          | load alive SINGLE <IP>                                                           |
| Load Host Discovery        | Upload multiple alive hosts from a text file or folder                       | load alive MULTI <path-to-file>                                                  |
| Port Scan                  | Perform a port scan                                                          | portscan <TYPE> <TARGET>                                                         |
| Load Port Scan             | Upload nmap port scan results from XML files or folder                       | load portscan <path-to-file>                                                     |
| Service Enumeration        | Dry Run (only show commands, without performing them                         | enumerate <TYPE> DRY <TARGET>                                                    |
| Service Enumeration        | Perform enumeration of detected services                                     | enumerate <TYPE> <POLITE/AGGRESSIVE> <TARGET>                                    |
| Special Scan - EyeWitness  | Take screenshots of websites, RDP services, and open VNC servers (KALI ONLY) | special eyewitness                                                               |
| Special Scan - Domain Info | Extract Windows domain information from enumeration data                     | special domain <users/hosts/servers>                                             |
| Special Scan - DNS         | Enumerate DNS (nmap, dnsrecon, dnsenum)                                      | special dns DISCOVERY <domain>                                                   |
| Special Scan - DNS         | Bruteforce DNS                                                               | special dns BRUTEFORCE <domain>                                                  |
| Special Scan - DNS         | Reverse Bruteforce DNS                                                       | special dns BRUTEFORCE_REVERSE <domain> <base_IP>                                |
| Show                       | Show targets                                                                 | show targets                                                                     |
| Show                       | Show live hosts                                                              | show hosts                                                                       |
| Show                       | Show detailed ports information                                              | show ports                                                                       |
| Utils                      | Set configs from file                                                        | set config_file <PATH>                                                           |
| Utils                      | Set output folder                                                            | set output_folder <PATH>                                                         |
| Utils                      | Modify the default nmap switches                                             | set nmap_switches <SWEEP/TCP_FULL/TCP_STANDARD/TCP_VULN/UDP_STANDARD> <SWITCHES> |
| Utils                      | Modify the default wordlists                                                 | set wordlists <FINGER_USER/FTP_USER/...> <PATH>                                  |
| Utils                      | Exit this program                                                            | exit                                                                             |
+----------------------------+------------------------------------------------------------------------------+----------------------------------------------------------------------------------+

Para comenzar, necesitamos cargar un objetivo. Podemos cargar varias direcciones IP o, en nuestro caso, la única IP de nuestra máquina de destino:

[goscan] > load target SINGLE 10.10.0.50

[*] Imported target: 10.10.0.50

A continuación, realicemos un barrido de ping:

[goscan] > sweep PING 10.10.0.50

[*] Starting Ping Sweep
[goscan] > [-] Created directory: /root/.goscan/10.10.0.50/sweep
[-] Executing command: nmap -n -sn -PE -PP 10.10.0.50 -oA /root/.goscan/10.10.0.50/sweep/ping_10.10.0.50
[*] [ping] Nmap work in progress on host:   10.10.0.50
[+] [ping] Nmap finished on host:   10.10.0.50
[+] [ping] Output has been saved at:    /root/.goscan

Primero, GoScan crea un directorio para albergar los resultados. El directorio se puede configurar en una ubicación personalizada, pero la predeterminada funciona bien. A continuación, podemos ver el comando Nmap que llama y ejecuta, y nos dice cuándo está terminado.

Si navegamos hasta el directorio recién creado donde se almacenan los resultados, podemos ver que la salida viene en algunos formatos diferentes:

~# ls .goscan/10.10.0.50/sweep/

ping_10.10.0.50.gnmap  ping_10.10.0.50.nmap  ping_10.10.0.50.xml

Opción 2: escaneo de puertos

La capacidad de escaneo de puertos de GoScan es quizás su característica más sólida. Cuando empezamos a escribir Portscan, podemos ver la variedad de tipos de escaneo que puede realizar:

[goscan] > portscan
                     TCP-FULL       Perform FULL TCP scan
                     TCP-STANDARD   Perform TCP scan (top 200)
                     TCP-PROD       Perform PROD TCP scan (T3, no scripts)
                     TCP-VULN-SCAN  Perform TCP VULN scan (vulscan.nse)
                     UDP-STANDARD   Perform UDP scan (common ports)
                     UDP-PROD       Perform PROD UDP scan (T3, no scripts)

Por ejemplo, podemos ejecutar un escaneo TCP completo:

[goscan] > portscan TCP-FULL 10.10.0.50

[*] Starting full TCP port scan
[goscan] > [-] Created directory: /root/.goscan/10.10.0.50/portscan
[-] Executing command: nmap -Pn -sT -sC -A -T4 -p- 10.10.0.50 -oA /root/.goscan/10.10.0.50/portscan/tcp_full_10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50
[*] [tcp_full] Nmap work in progress on host:   10.10.0.50

...

O un escaneo UDP en puertos comunes:

[goscan] > portscan UDP-STANDARD ALL

[*] Starting UDP port scan (common ports)
[goscan] > [-] Executing command: nmap -Pn -sU -sC -A -T4 -p19,53,69,79,111,123,135,137,138,161,177,445,500,514,520,1434,1900,5353 10.10.0.50 -oA /root/.goscan/10.10.0.50/portscan/udp_standard_10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50
[*] [udp_standard] Nmap work in progress on host:   10.10.0.50

...

También podemos utilizar el carga comando para cargar cualquier resultado de escaneo externo, como los de Nmap:

[goscan] > load portscan nmap_results.xml

El show El comando se puede utilizar para mostrar cualquier información almacenada actualmente por GoScan. Podemos ver objetivos:

[goscan] > show targets

+------------+---------+
|  ADDRESS   |  STEP   |
+------------+---------+
| 10.10.0.50 | SWEEPED |
+------------+---------+

Y mostrar el estado de nuestros hosts, incluida la información del sistema operativo y los puertos:

[goscan] > show hosts

+------------+--------+-----------------+------+-------------------------------------+
|  ADDRESS   | STATUS |       OS        | INFO |                PORTS                |
+------------+--------+-----------------+------+-------------------------------------+
| 10.10.0.50 | up     | Linux 3.2 - 4.9 |      | *  5355/tcp open    : llmnr         |
|            |        |                 |      | *    19/udp closed  : chargen       |
|            |        |                 |      | *    53/udp closed  : domain        |
|            |        |                 |      | *    69/udp closed  : tftp          |
|            |        |                 |      | *    79/udp closed  : finger        |
|            |        |                 |      | *   111/udp open|filtered: rpcbind  |
|            |        |                 |      | *   123/udp closed  : ntp           |
|            |        |                 |      | *   135/udp open|filtered: msrpc    |
|            |        |                 |      | *   137/udp closed  : netbios-ns    |
|            |        |                 |      | *   138/udp closed  : netbios-dgm   |
|            |        |                 |      | *   161/udp open|filtered: snmp     |
|            |        |                 |      | *   177/udp closed  : xdmcp         |
|            |        |                 |      | *   445/udp closed  : microsoft-ds  |
|            |        |                 |      | *   500/udp open|filtered: isakmp   |
|            |        |                 |      | *   514/udp open|filtered: syslog   |
|            |        |                 |      | *   520/udp closed  : route         |
|            |        |                 |      | *  1434/udp closed  : ms-sql-m      |
|            |        |                 |      | *  1900/udp closed  : upnp          |
|            |        |                 |      | *  5353/udp open|filtered: zeroconf |
|            |        |                 |      |                                     |
+------------+--------+-----------------+------+-------------------------------------+

Y una vista un poco más organizada de puertos y servicios:

[goscan] > show ports

+------------+----------+---------------+--------------+
|    HOST    |   PORT   |    STATUS     |   SERVICE    |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 5355/tcp | open          | llmnr        |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 19/udp   | closed        | chargen      |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 53/udp   | closed        | domain       |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 69/udp   | closed        | tftp         |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 79/udp   | closed        | finger       |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 111/udp  | open|filtered | rpcbind      |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 123/udp  | closed        | ntp          |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 135/udp  | open|filtered | msrpc        |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 137/udp  | closed        | netbios-ns   |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 138/udp  | closed        | netbios-dgm  |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 161/udp  | open|filtered | snmp         |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 177/udp  | closed        | xdmcp        |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 445/udp  | closed        | microsoft-ds |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 500/udp  | open|filtered | isakmp       |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 514/udp  | open|filtered | syslog       |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 520/udp  | closed        | route        |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 1434/udp | closed        | ms-sql-m     |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 1900/udp | closed        | upnp         |
+------------+----------+---------------+--------------+
| 10.10.0.50 | 5353/udp | open|filtered | zeroconf     |
+------------+----------+---------------+--------------+

Opción 3: enumerar servicios

Además de su capacidad de escaneo de puertos, GoScan también nos permite enumerar los servicios en ejecución en el objetivo. Mecanografía enumerar nos muestra los módulos disponibles, que incluyen FINGER, FTP, HTTP, RDP y SMB:

[goscan] > enumerate
                      ALL     Automatically identify open services and enumerate them
                      FINGER  Enumerate FINGER
                      FTP     Enumerate FTP
                      HTTP    Enumerate HTTP
                      RDP     Enumerate RDP
                      SMB     Enumerate SMB

Cada servicio también tiene algunas opciones, incluido DRY, que solo realiza una ejecución en seco; CORTE, que se ejecuta pero evita la fuerza bruta; y BRUTEFORCE.

[goscan] > enumerate HTTP
                           DRY         Only show the commands that would be performed, without performing them
                           POLITE      Avoid bruteforcing
                           BRUTEFORCE  Include bruteforce scripts

Por ejemplo, podemos realizar una ejecución en seco del escaneo HTTP:

[goscan] > enumerate HTTP DRY 10.10.0.50

[*] Starting service enumeration
[goscan] > [+] [HTTP] Enumeration finished on host: 10.10.0.50
[+] [HTTP] Output has been saved at:    /root/.goscan

Opción 4: escaneos especiales

GoScan también contiene algunos escaneos especiales que pueden ser útiles para el reconocimiento. Tipo especial cuando se le solicite para ver las opciones disponibles:

[goscan] > special
                    eyewitness  Take screenshots of websites, RDP services, and open VNC servers (KALI ONLY)
                    domain      Extract (windows) domain information from enumeration data
                    dns         Perform DNS enumeration

El testigo ocular scan incorpora la herramienta EyeWitness, que tomará capturas de pantalla de sitios web, servicios RDP y servidores VNC. La única advertencia aquí es que EyeWitness debe instalarse en el sistema PATH para que funcione.

También podemos utilizar el dominio escanee para enumerar cierta información de dominio, incluidos usuarios, hosts y servidores:

[goscan] > special domain
                           users    Extract users from enumeration data
                           hosts    Extract hosts from enumeration data
                           servers  Extract servers from enumeration data

El dns El escaneo realizará algunas técnicas de enumeración de DNS, como el descubrimiento y la fuerza bruta:

[goscan] > special dns
                        DISCOVERY           Enumerate DNS (nmap, dnsrecon, dnsenum)
                        BRUTEFORCE          Bruteforce DNS
                        BRUTEFORCE_REVERSE  Reverse Bruteforce DNS

GoScan tiene algunas utilidades más que pueden configurar la carpeta de salida, los conmutadores Nmap que se utilizan y las listas de palabras predeterminadas.

Terminando

Hoy, exploramos GoScan y cómo se puede utilizar para enumerar rápidamente redes y servicios. Primero, cubrimos la descarga e instalación de la herramienta. Luego, revisamos algunas de las opciones, incluido el barrido de ping, el escaneo de puertos, la enumeración de servicios y los escaneos especiales. Con todo, GoScan es un marco útil que facilita la enumeración de redes.

Imagen de portada de Brett Sayles / Pexels; Capturas de pantalla de drd_ / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar