21 mayo, 2020

Recopilación de herramientas para la enumeración y descubrimiento de subdominios

En un proceso de pentesting de auditoría de caja negra (black box) en un principio no tenemos ningún conocimiento de la infraestructura de servidores y comunicaciones de la organización que vamos a auditar. Nos encontramos en una fase de recopilación de información y escaneo de los activos de la compañía públicos en Internet.

Lo habitual es usar footprinting con recursos web, técnicas de recopilación y análisis OSINT (Open Source Intelligence) intentando obtener la mayor cantidad de información posible y que nos pueda ser de utilidad para avanzar a una fase de enumeración de los sistemas "vivos".

Es importante conocer los subdominios públicos de un dominio principal para así realizar análisis de posibles vulnerabilidades en estos sistemas y encontrar un vector ataque que nos permita cruzar la seguridad perimetral hacia la red interna de la organización, ejecución de código arbitrario, exfiltración de datos, etc.

Probando multitud de herramientas para este fin, he decidido hacer un recopilación comentando aquellas que me parecieron más interesantes para obtener el descubrimiento y enumeración de los subdominios de un dominio principal.

Podemos usar herramientas de recursos web, accesible y rápidas o instalar herramientas en local que dependiendo cual nos mostrará un poco más de detalle, control y harán reconocimientos pasivos y/o activos si así lo definimos.

Las consultas que se realizan a los dominios no es ilegal ya que se trata de información pública en Internet y accesible por todos, siempre y cuando solo busquemos y visualizamos los resultados sin llegar a interactuar maliciosamente y de manera directa.
  • Reconocimiento pasivo: las peticiones no dejará evidencias ni acciones en los logs ya que no se llegaría a interactuar con los objetivos escaneados. Por ejemplo realizar búsquedas usando Google Dorks.
  • Reconocimiento activo: las peticiones o acciones que dejen un rastro registrado en los logs de los objetivos escaneados. Por ejemplo realizar peticiones con diccionarios wordlists de los posibles subdominios.

Recursos Web

DNSDumpsterhttps://dnsdumpster.com/

A parte de los subdominios y sus IPs relacionadas nos devolerá un mapa geoip y los servidor DNS, registros MX y registros TXT. 

DNSDumpster
Figura 1: DNSDumpster.


Nos mostrará todos los subdominios e IPs asociadas, el tipo de servidor, tecnología, tipo de página, a mayores con la versión Pro de pago podremos realizar acciones como escaneo de vulnerabilidades con OpenVAS, URL fuzzer entre otras opciones. 

Pentest-tools
Figura 2: Pentest-tools.


Listará subdominios y en tipo de sistema operativo en el que están alojados, también nos dará la posibilidad de consultar un report de cada subdominio con su IP asociada, geoip, versiones del sitio web y más información. Podemos realizar búsquedas que hagan match con con el término de subdominio que estamos buscando.

Netcraft
Figura 3: Netcraft.


Buscará los simplemente los subdominios asociados a un dominio principal.

IPv4info
Figura 4: IPv4info.


Lista los subdominios y el tipo de registro DNS del que se trata.

RapidDNS
Figura 5: RapidDNS.

Google Hacking

Una manera interesante de poder encontrar subdominios es directamente realizando una búsqueda usando Google Dorks (operadores de búsqueda avanzada). Con el operador "site:" indicamos el dominio a buscar y con "-site:" omitimos los resultados que tengan relación con el subdominio "www."

De esta forma se listarán todos los subdominios excepto los que hagan match con www.
site:web.com -site:www.web.com
Google Hacking - Dork
Figura 6: Google Hacking - Dork para buscar subdominios.

Herramientas locales


Herramienta en python. Realiza diversas búsquedas en buscadores y sitios web para obtener la información.

Instalación de pip (pip es el instalador del paquete para Python).
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Instalación: 
git clone https://github.com/aboul3la/Sublist3r.git
cd sublist3r
pip install -r requirements.txt

python sublist3r.py -h
python sublist3r.py -v -d web.com -o subdomweb.txt
Sublist3r
Figura 7: Sublist3r.


Herramienta en python. Nos mostrará IP, estado, tipo de registro, subdominio y tipo de servicio web.
git clone https://github.com/guelfoweb/knock.git
cd knock/knockpy

python knockpy.py web.com
Knockpy
Figura 8: Knockpy.


Herramienta en python. Busca transferencias de zona, registros TXT, MX, registros DMARC y finalmente realiza un escaneo de registros tipo A mediante wordlists.
git clone https://github.com/rbsec/dnscan.git
cd dnscan

python3 dnscan.py -d web.com
dnscan
Figura 9: dnscan.

Amass - https://github.com/OWASP/Amass

Parte del proyecto OWASP a puede realizar diversas tareas usando recursos OSINT y un reconocimiento activo, entre ellas la búsqueda de subdominios por adivinación basada en similitud de FQDN, transferencias de zona, barrido inverso de DNS y fuerza bruta.

Se puede instalar de manera independiente o usando Docker: 
apt install amass

amass enum --passive -d web.com
Amass
Figura 10: Amass.

Subfinder - https://github.com/projectdiscovery/subfinder

Herramienta en Go. Lista subdominios con un reconocimiento pasivo y actualmente con 26 fuentes donde busca la información.

Descarga: https://github.com/projectdiscovery/subfinder/releases
tar -xzvf subfinder-linux-amd64.tar
mv subfinder-linux-amd64 /usr/bin/subfinder

subfinder -v -d web.com
Dispone de una implementación en Docker: https://github.com/projectdiscovery/subfinder#running-in-a-docker-container

Subfinder
Figura 11: Subfinder.



Findomain - https://github.com/Edu4rdSHL/findomain

Dispone de planes de pago con diversas funcionales, entre ellas la búsqueda continua y activa de subdominios y la notificación de un nuevo dominio. En su versión free simplemente lista los subdominios actuales.
wget https://github.com/Edu4rdSHL/findomain/releases/latest/download/findomain-linux
chmod +x findomain-linux

./findomain-linux -t web.com
Findomain
Figura 12: Findomain.

Sudomy - https://github.com/Screetsec/Sudomy

Utiliza la biblioteca cURL para obtener el HTTP Response Body de sitios de terceros para ejecutar la expresión regular y así obtener los subdominios, puede establecerse en un modo de reconocimiento pasivo o activo.

Puede implementarse en Docker. Instalación y dependencias:
https://github.com/Screetsec/Sudomy#installation

Sudomy
Figura 13: Sudomy.


Herramienta en python. A través de diversos motores de búsqueda y sitios web dado un dominio intenta encontrar emails, perfiles en Linkedin, Twitter, Github, virtual hosts, etc. A mayores también muestra subdominios y su IP asociada. 

Está integrado en Kali linux. Instalación independiente: 

theHarvester
Figura 14: theHarvester.

Saludos!

No hay comentarios:

Publicar un comentario