
[*]
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.