Reconocimiento Activo

El reconocimiento activo se define como el proceso de recolección de información a cerca del objetivo de las pruebas, sin embargo, en este caso realizaremos consultas directas contra el objetivo. Es decir, estableceremos una comunicación con los sistemas remotos (que forman parte del alcance de la auditoría) para realizar estas consultas por lo que estamos dejando una traza en el objetivo. 

La información que se obtenga complementa toda la información que se hubiera podido recopilar en la fase del reconocimiento pasivo, debido a que habrá información específica que únicamente podrá ser extraída mediante consultas directas a los servicios expuestos. (DNS, SMTP, SNMP, SMB, etc.). 

En este caso, dado que se está realizando una iteración sobre ciertos activos, el objetivo puede ser consciente de que se está realizando cierta enumeración. Aunque esta posible detección siempre va a depender de las capacidades de monitorización y detección del objetivo. 

A continuación se enumeran distintas técnicas de reconocimiento pasivo:

Enumeración DNS
El servicio DNS (Domain Name System) es un protocolo que proporciona un esquema de nombres jerárquico, formando una estructura de tipo árbol, almacenados en una base de datos distribuida, y que permite realizar la traducción entre nombres de máquinas, fácilmente inteligibles para una persona, y direcciones IP, que son las que finalmente se utilizan para establecer y mantener las comunicaciones.

Las principales características de una enumeración DNS son las siguientes:

  • Dirección IP asociada a un host
  • Principales servidores (NS, MX, SOA)
  • Si se encuentra habilitado resolución inversa obtenemos nombre de host a partir de la IP
  • En ocasiones se habilita la transferencia de zona

Herramientas
Existen diferentes herramientas que podemos utilizar para realizar consultas a los servidores DNS. Mediante estas consultas podemos averiguar la dirección IP de un determinado host en un dominio. Además, en caso que el servidor DNS tenga habilitada la resolución de inversa, se puede obtener el nombre de host a partir de una determinada dirección IP. A continuación, se enumeran las herramientas más comunes para la realización de esta tarea.

  • host, dig y nslookup: Herramientas de consola que nos permite realizar consultas DNS de manera manual.
  • dnsrecon: Herramienta en modo consola que automatiza todas las consultas que deberíamos realizar de manera manual con las herramientas anteriores proporcionándonos toda la información de manera estructurada.
  • dnsenum: Además de todas las opciones de enumeración que proporciona dnsrecon también realiza operaciones de descubrimiento de host y subdominios mediante técnicas de fuerza bruta.
Enumeración SMTP
SMTP es el protocolo que se encarga de gestionar la entrega de correos electrónicos. El protocolo dispone de varios comandos que permiten averiguar si un determinado usuario existe en el sistema remoto o en el dominio del objetivo. A continuación se indican los comandos de enumeración disponibles en el protocolo SMTP.
 
Comandos
  • RCPT: Especifica a quién va dirigido el correo, el servidor puede indicar si el usuario de correo existe o no.
  • EXPN: Identifica todos los usuarios que pertenecen a una determinada lista de correo.
  • VRFY: Este comando permite verificar si una determinada dirección de correo es válida.
Herramientas
Al igual que en los apartados anteriores, existen ciertas herramientas que nos permiten automatizar todo el proceso, utilizando los comandos anteriormente descritos del estándar, para enumerar usuarios.
  • smtp-user-enum: Herramienta que realiza enumeración de usuarios a través del protocolo SMTP.
Enumeración SNMP
El protocolo SNMP habitualmente se utiliza para gestionar routers, switches, impresoras y demás dispositivos en una red local, aunque también puede ejecutarse en sistemas Windows y UNIX.
 
Los dispositivos que implementan el servicio SNMP ejecutan un agente que conoce toda la información del dispositivo y la organiza jerárquicamente en forma de objetos en lo que se conoce como MIB.
 
Para conectarse al agente existen dos roles/contraseñas (community strings), de forma predeterminada estas son “public” y “private”, permitiendo el primero el acceso al contenido de la MIB en modo lectura y el segundo en modo lectura/escritura.
  • public: Permite acceder a la configuración en modo consulta.
  • private: Permite modificar la configuración del dispositivo.
Además, las versiones SNMPv1 y SNMPv2 del protocolo no establecen ningún tipo de filtrado del canal. Por tanto, en caso de poder interceptar las comunicaciones tanto las community string cómo todo el tráfico de configuración queda expuesto. La versión SNMPv3 del protocolo implementa numerosas mejoras en materia de seguridad pero todavía resulta común encontrar dispositivos que soportan las versiones anteriores.
 
A continuación, se enumeran las principales características de la enumeración SNMP.
  • Obtener información de la configuración de dispositivos.
  • Modificar la configuración de los dispositivos.
Herramientas
Existen varias herramientas que nos permiten realizar ataques de fuerza bruta para averiguar el community string utilizado (lectura o incluso lectura-escritura), además de proporcionar una interfaz cli (desde la consola) por la que navegar a través de la estructura MIB o, en caso de disponer de la community string privada, modificar objetos en la MIB.
  • onesixtyone: Utiliza técnicas de fuerza bruta para averiguar los community strings que nos permiten acceder a los roles public y private.
  • snmpwalk: En caso de disponer (o averiguar) las community string de acceso se puede acceder a la configuración de un dispositivo.
Enumeración SMB
SMB es un protocolo de red, muy utilizado en redes Microsoft. Se utiliza para compartir archivos, impresoras, unidades, etc. Entre sistemas pertenecientes a una misma red.
 
Este servicio se encuentra activo en los puertos TCP 139 y 445 y a través de él es posible extraer información detallada del sistema remoto que se encuentra utilizando el protocolo SMB.
 
Además, existe una técnica conocida como “SMB null sessions” por la que se puede generar una conexión SMB entre dos sistemas informáticos sin realizar la autenticación sobre el protocolo. El establecimiento de esta conexión ya permite obtener cierta información a través del protocolo sin necesidad de conocer las credenciales de un usuario legítimo.
 
A continuación se indica el tipo de información que se puede recopilar con este tipo de enumeración.
  • Política de contraseñas
  • Nombre y SID de usuarios
  • Nombre y SID de grupos
  • Nombre y SID de equipos
Herramientas
Existen varias herramientas para obtener este tipo de información además de un script de nmap (Introduciremos esta herramienta en la fase de escaneo) que también puede ser utilizado para obtener la información
  • nbtscan
Realiza la conexión SMB con un sistema remoto y obtiene información disponible. 
 
$ nbtscan -r IP o subred

Entre sus parámetros están los siguientes:
  • -r: Realiza un escaneo en modo rango (IP inicial a IP final).
  • -s: Formato de salida personalizado (puedes definir el formato con variables como %IP, %MAC, %NAME...).
  • -v: Modo verbose.
  • -h: Muestra la ayuda.
  • -f: Especifica un archivo con una lista de IPs o rangos.
  • -t: Establece el tiempo de espera or host en milisegundos (por defecto 1000 ms).
  • -q: Modo Silencioso (menos salida).
  • -m: No resuelve nombres DNS.
  • -p: Puerto a usar (por defecto el 137).
  • smbclient
Esta herramienta es un cliente que permite acceder a recursos compartidos en servidores SMB o Samba. Cuando se ejecute se pueden especificar diferentes parámetros, lo que afectará a la información que se muestre, que también está condicionada por la versión de SMB utilizada en el servidor. Por ejemplo, en el improbable caso de que el servidor SMB permita las sesiones nulas, un usuario sin autenticar podrá obtener mucha información procedente del equipo.

$ smbclient -L IP

Esta herramienta permite abrir una conexión con un recurso compartido, en este ejemplo la carpeta tmp.

$ smbclient -U `` \\\\IP\\tmp

Entre sus parámetros están los siguientes:
  • -L <host>: Lista los recursos compartidos del host.
  • -U <usuario>: Especifica el usuario con el que autenticarse.
  • -I <IP>: IP del servidor (evita resolución de nombres)
  • -N: No pedir contraseña.
  • -W <dominio>: Especifica el dominio o grupo de trabajo.
  • -m SMB2 o -m SMB3: Fuerza versión del protocolo SMB.
  • -p <puerto>: Especifica el puerto (por defecto 445).
  • -c "<comando>": ejecuta comandos directamente.
  • //host/recurso: Especifica el recurso compartido al que acceder.
Una vez conectado, entrarás en un modo interactivo donde puedes usar comandos como:
  • ls: Lista el contenido del directorio actual en la compartición.
  • cd <directorio>: Cambia al directorio especificado.
  • get <archivo>: Descarga un archivo desde la compartición a tu máquina local.
  • put <archivo>: Sube un archivo de tu máquina local a la compartición.
  • mget *: Descarga varios archivos.
  • mput *: Sube varios archivos.
  • help: Muestra la lista de comandos disponibles en el shell. 
  • rpcclient
Se trata de otra herramienta incluida en la suite de Samba que permite interactuar con el equipo. Esta herramienta permite la utilización de comandos para obtener información del servidor o del dominio al que pertenezca el equipo, siempre y cuando se disponga de unas credenciales válidas o si el servidor permite las sesiones nulas.

Si el equipo permite sesiones nulas, el siguiente comando abrirá una sesión.

$ rpcclient -U "" IP

Entre sus parámetros están los siguientes:
  • -U <usuario>%<contraseña>: Especifica usuario y contraseña.
  • -N: No usar contraseña.
  • -c "<comando>": Ejecuta comandos directamente.
  • <host>: Dirección IP o nombre del host objetivo. 
  • enum4linux
Herramienta que establecen una sesión SMB con el sistema remoto y recupera la información disponible.

$ enum4linux -a IP

Con el siguiente comando se mostrará información de los recursos compartidos.

$ enum4linux -S IP

Entre sus parámetros están los siguientes:
  • -U: obtener lista de usuarios.
  • -S: obtener lista de shares. 
  • -G: obtener grupos y sus miembros.
  • -P: obtener política de contraseñas del sistema objetivo.
  • -r: enumerar usuarios recorriendo RID secuencialmente.
  • -o: obtener información del sistema operativo.
  • -n: hace un nmblookup, similar a nbstat.
  • -i: obtiene información sobre impresoras.
  • -u: para especificar un nombre de usuario.
  • -p: para especificar una contraseña.
  • smbmap
Herramienta específica para enumerar shares (listar, consultar permisos, descargar y subir ficheros, soporte de expresiones regulares, etc...). Esta diseñada para tareas de pentesting y disponible en Kali.

Entre sus parámetros están los siguientes:
  •  -H: para indicar la IP del host
  • -P: para indicar el puerto SMB (por defecto es el 445)
  • -v: proporciona información sobre la versión del SO.
  • -R: para que, en caso de que tenga permiso, liste el contenido del share.
  • -u: usuario.
  • -p: contraseña.
$ smbmap -H IP -R
  • scripts nmap
Nmap es una herramienta de análisis de red que proporciona capacidades de enumeración gracias a diversos scripts. Existen distintos scripts específicos de obtención de información en la herramienta nmap, únicamente hay que indicar que se incluyan estos scripts en las pruebas.
 
$ nmap -p 139,445 dirección_ip -sV --script=smb-*