External Recon Methodology
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Si estás interesado en una carrera de hacking y en hackear lo inhackeable - ¡estamos contratando! (se requiere polaco fluido escrito y hablado).
Te dijeron que todo lo que pertenece a alguna empresa está dentro del alcance, y quieres averiguar qué posee realmente esta empresa.
El objetivo de esta fase es obtener todas las empresas propiedad de la empresa principal y luego todos los activos de estas empresas. Para hacerlo, vamos a:
Encontrar las adquisiciones de la empresa principal, esto nos dará las empresas dentro del alcance.
Encontrar el ASN (si lo hay) de cada empresa, esto nos dará los rangos de IP propiedad de cada empresa.
Usar búsquedas de whois inversas para buscar otras entradas (nombres de organizaciones, dominios...) relacionadas con la primera (esto se puede hacer de forma recursiva).
Usar otras técnicas como filtros org
y ssl
de shodan para buscar otros activos (el truco ssl
se puede hacer de forma recursiva).
Primero que nada, necesitamos saber qué otras empresas son propiedad de la empresa principal. Una opción es visitar https://www.crunchbase.com/, buscar la empresa principal, y hacer clic en "adquisiciones". Allí verás otras empresas adquiridas por la principal. Otra opción es visitar la página de Wikipedia de la empresa principal y buscar adquisiciones.
Ok, en este punto deberías conocer todas las empresas dentro del alcance. Vamos a averiguar cómo encontrar sus activos.
Un número de sistema autónomo (ASN) es un número único asignado a un sistema autónomo (AS) por la Autoridad de Números Asignados de Internet (IANA). Un AS consiste en bloques de direcciones IP que tienen una política definida para acceder a redes externas y son administrados por una sola organización, pero pueden estar compuestos por varios operadores.
Es interesante encontrar si la empresa tiene asignado algún ASN para encontrar sus rangos de IP. Será interesante realizar una prueba de vulnerabilidad contra todos los hosts dentro del alcance y buscar dominios dentro de estas IPs. Puedes buscar por el nombre de la empresa, por IP o por dominio en https://bgp.he.net/. Dependiendo de la región de la empresa, estos enlaces podrían ser útiles para recopilar más datos: AFRINIC (África), Arin(América del Norte), APNIC (Asia), LACNIC (América Latina), RIPE NCC (Europa). De todos modos, probablemente toda la información útil (rangos de IP y Whois) ya aparezca en el primer enlace.
También, la enumeración de subdominios de BBOT's agrega y resume automáticamente los ASN al final del escaneo.
Puedes encontrar los rangos de IP de una organización también usando http://asnlookup.com/ (tiene API gratuita). Puedes encontrar la IP y ASN de un dominio usando http://ipv4info.com/.
En este punto conocemos todos los activos dentro del alcance, así que si tienes permiso podrías lanzar algún escáner de vulnerabilidades (Nessus, OpenVAS) sobre todos los hosts. Además, podrías lanzar algunos escaneos de puertos o usar servicios como shodan para encontrar puertos abiertos y dependiendo de lo que encuentres deberías consultar este libro sobre cómo hacer pentesting a varios servicios posibles en ejecución. Además, podría valer la pena mencionar que también puedes preparar algunas listas de nombres de usuario y contraseñas por defecto e intentar forzar servicios con https://github.com/x90skysn3k/brutespray.
Conocemos todas las empresas dentro del alcance y sus activos, es hora de encontrar los dominios dentro del alcance.
Por favor, ten en cuenta que en las siguientes técnicas propuestas también puedes encontrar subdominios y esa información no debe ser subestimada.
Primero que nada, deberías buscar el(los) dominio(s) principal(es) de cada empresa. Por ejemplo, para Tesla Inc. será tesla.com.
Como has encontrado todos los rangos de IP de los dominios, podrías intentar realizar búsquedas de DNS inverso en esas IPs para encontrar más dominios dentro del alcance. Intenta usar algún servidor DNS de la víctima o algún servidor DNS bien conocido (1.1.1.1, 8.8.8.8)
Para que esto funcione, el administrador tiene que habilitar manualmente el PTR. También puedes usar una herramienta en línea para esta información: http://ptrarchive.com/
Dentro de un whois puedes encontrar mucha información interesante como nombre de la organización, dirección, correos electrónicos, números de teléfono... Pero lo que es aún más interesante es que puedes encontrar más activos relacionados con la empresa si realizas búsquedas de reverse whois por cualquiera de esos campos (por ejemplo, otros registros whois donde aparece el mismo correo electrónico). Puedes usar herramientas en línea como:
https://viewdns.info/reversewhois/ - Gratis
https://domaineye.com/reverse-whois - Gratis
https://www.reversewhois.io/ - Gratis
https://www.whoxy.com/ - Gratis web, API no gratuita.
http://reversewhois.domaintools.com/ - No gratis
https://drs.whoisxmlapi.com/reverse-whois-search - No gratis (solo 100 búsquedas gratis)
https://www.domainiq.com/ - No gratis
Puedes automatizar esta tarea usando DomLink (requiere una clave API de whoxy).
También puedes realizar un descubrimiento automático de reverse whois con amass: amass intel -d tesla.com -whois
Ten en cuenta que puedes usar esta técnica para descubrir más nombres de dominio cada vez que encuentres un nuevo dominio.
Si encuentras el mismo ID del mismo tracker en 2 páginas diferentes, puedes suponer que ambas páginas son gestionadas por el mismo equipo. Por ejemplo, si ves el mismo ID de Google Analytics o el mismo ID de Adsense en varias páginas.
Hay algunas páginas y herramientas que te permiten buscar por estos trackers y más:
¿Sabías que podemos encontrar dominios y subdominios relacionados con nuestro objetivo buscando el mismo hash de icono de favicon? Esto es exactamente lo que hace la herramienta favihash.py creada por @m4ll0k2. Aquí te explicamos cómo usarla:
Dicho de manera simple, favihash nos permitirá descubrir dominios que tienen el mismo hash de icono favicon que nuestro objetivo.
Además, también puedes buscar tecnologías utilizando el hash de favicon como se explica en esta publicación de blog. Eso significa que si conoces el hash del favicon de una versión vulnerable de una tecnología web puedes buscar en shodan y encontrar más lugares vulnerables:
Esto es cómo puedes calcular el hash del favicon de una web:
Busca dentro de las páginas web cadenas que podrían ser compartidas entre diferentes webs en la misma organización. La cadena de copyright podría ser un buen ejemplo. Luego busca esa cadena en google, en otros navegadores o incluso en shodan: shodan search http.html:"Copyright string"
Es común tener un trabajo cron como
para renovar todos los certificados de dominio en el servidor. Esto significa que incluso si la CA utilizada para esto no establece la hora en que se generó en el tiempo de validez, es posible encontrar dominios que pertenecen a la misma empresa en los registros de transparencia de certificados. Consulta este artículo para más información.
Puedes usar una web como https://dmarc.live/info/google.com o una herramienta como https://github.com/Tedixx/dmarc-subdomains para encontrar dominios y subdominios que comparten la misma información dmarc.
Aparentemente es común que las personas asignen subdominios a IPs que pertenecen a proveedores de nube y en algún momento pierdan esa dirección IP pero se olviden de eliminar el registro DNS. Por lo tanto, simplemente creando una VM en una nube (como Digital Ocean) en realidad estarás tomando control de algunos subdominios.
Esta publicación explica una historia al respecto y propone un script que crea una VM en DigitalOcean, obtiene la IPv4 de la nueva máquina y busca en Virustotal registros de subdominio que apunten a ella.
Ten en cuenta que puedes usar esta técnica para descubrir más nombres de dominio cada vez que encuentres un nuevo dominio.
Shodan
Como ya conoces el nombre de la organización que posee el espacio IP. Puedes buscar por esos datos en shodan usando: org:"Tesla, Inc."
Revisa los hosts encontrados para nuevos dominios inesperados en el certificado TLS.
Podrías acceder al certificado TLS de la página web principal, obtener el nombre de la organización y luego buscar ese nombre dentro de los certificados TLS de todas las páginas web conocidas por shodan con el filtro: ssl:"Tesla Motors"
o usar una herramienta como sslsearch.
Assetfinder
Assetfinder es una herramienta que busca dominios relacionados con un dominio principal y subdominios de ellos, bastante asombroso.
Verifica algún toma de dominio. Tal vez alguna empresa esté usando algún dominio pero perdió la propiedad. Simplemente regístralo (si es lo suficientemente barato) y avísale a la empresa.
Si encuentras algún dominio con una IP diferente de las que ya encontraste en el descubrimiento de activos, deberías realizar un escaneo básico de vulnerabilidades (usando Nessus u OpenVAS) y algún escaneo de puertos con nmap/masscan/shodan. Dependiendo de qué servicios estén corriendo, puedes encontrar en este libro algunos trucos para "atacarlos". Ten en cuenta que a veces el dominio está alojado dentro de una IP que no es controlada por el cliente, así que no está en el alcance, ten cuidado.
Conocemos todas las empresas dentro del alcance, todos los activos de cada empresa y todos los dominios relacionados con las empresas.
Es hora de encontrar todos los posibles subdominios de cada dominio encontrado.
¡Ten en cuenta que algunas de las herramientas y técnicas para encontrar dominios también pueden ayudar a encontrar subdominios!
Intentemos obtener subdominios de los registros DNS. También deberíamos intentar una Transferencia de Zona (Si es vulnerable, deberías reportarlo).
La forma más rápida de obtener muchos subdominios es buscar en fuentes externas. Las herramientas más utilizadas son las siguientes (para mejores resultados, configura las claves de API):
Hay otras herramientas/APIs interesantes que, aunque no están directamente especializadas en encontrar subdominios, podrían ser útiles para encontrarlos, como:
Crobat: Utiliza la API https://sonar.omnisint.io para obtener subdominios
RapidDNS API gratuita
gau: recupera URLs conocidas de Open Threat Exchange de AlienVault, la Wayback Machine y Common Crawl para cualquier dominio dado.
SubDomainizer y subscraper: Buscan en la web archivos JS y extraen subdominios de allí.
securitytrails.com tiene una API gratuita para buscar subdominios e historial de IP
Este proyecto ofrece gratis todos los subdominios relacionados con programas de recompensas por errores. También puedes acceder a estos datos usando chaospy o incluso acceder al alcance utilizado por este proyecto https://github.com/projectdiscovery/chaos-public-program-list
Puedes encontrar una comparación de muchas de estas herramientas aquí: https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off
Intentemos encontrar nuevos subdominios forzando servidores DNS usando posibles nombres de subdominio.
Para esta acción necesitarás algunas listas de palabras comunes de subdominios como:
Y también IPs de buenos resolutores DNS. Para generar una lista de resolutores DNS de confianza, puedes descargar los resolutores de https://public-dns.info/nameservers-all.txt y usar dnsvalidator para filtrarlos. O podrías usar: https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt
Las herramientas más recomendadas para fuerza bruta DNS son:
massdns: Esta fue la primera herramienta que realizó una fuerza bruta DNS efectiva. Es muy rápida, sin embargo, es propensa a falsos positivos.
gobuster: Este creo que solo usa 1 resolutor
shuffledns es un envoltorio alrededor de massdns
, escrito en go, que te permite enumerar subdominios válidos utilizando bruteforce activo, así como resolver subdominios con manejo de comodines y soporte fácil de entrada-salida.
puredns: También utiliza massdns
.
aiodnsbrute utiliza asyncio para forzar nombres de dominio de manera asíncrona.
Después de haber encontrado subdominios utilizando fuentes abiertas y fuerza bruta, podrías generar alteraciones de los subdominios encontrados para intentar encontrar aún más. Varios herramientas son útiles para este propósito:
dnsgen: Dadas las dominios y subdominios, genera permutaciones.
goaltdns: Dado los dominios y subdominios, genera permutaciones.
Puedes obtener la wordlist de permutaciones de goaltdns aquí here.
gotator: Dado los dominios y subdominios, genera permutaciones. Si no se indica un archivo de permutaciones, gotator usará el suyo propio.
altdns: Aparte de generar permutaciones de subdominios, también puede intentar resolverlos (pero es mejor usar las herramientas comentadas anteriormente).
Puedes obtener las permutaciones de altdns wordlist en aquí.
dmut: Otra herramienta para realizar permutaciones, mutaciones y alteraciones de subdominios. Esta herramienta realizará un ataque de fuerza bruta al resultado (no soporta comodines DNS).
Puedes obtener la lista de palabras de permutaciones de dmut aquí.
alterx: Basado en un dominio, genera nuevos nombres de subdominios potenciales basados en patrones indicados para intentar descubrir más subdominios.
subzuf: subzuf es un fuzzer de fuerza bruta para subdominios acoplado con un algoritmo guiado por respuestas DNS que es inmensamente simple pero efectivo. Utiliza un conjunto de datos de entrada proporcionado, como una lista de palabras personalizada o registros DNS/TLS históricos, para sintetizar con precisión más nombres de dominio correspondientes y expandirlos aún más en un bucle basado en la información recopilada durante el escaneo DNS.
Consulta esta publicación de blog que escribí sobre cómo automatizar el descubrimiento de subdominios de un dominio utilizando flujos de trabajo de Trickest para no tener que lanzar manualmente un montón de herramientas en mi computadora:
Si encontraste una dirección IP que contiene una o varias páginas web pertenecientes a subdominios, podrías intentar encontrar otros subdominios con webs en esa IP buscando en fuentes OSINT dominios en una IP o forzando nombres de dominio VHost en esa IP.
Puedes encontrar algunos VHosts en IPs usando HostHunter u otras APIs.
Fuerza Bruta
Si sospechas que algún subdominio puede estar oculto en un servidor web, podrías intentar forzarlo:
Con esta técnica, incluso podrías acceder a puntos finales internos/ocultos.
A veces encontrarás páginas que solo devuelven el encabezado Access-Control-Allow-Origin cuando se establece un dominio/subdominio válido en el encabezado Origin. En estos escenarios, puedes abusar de este comportamiento para descubrir nuevos subdominios.
Mientras buscas subdominios, presta atención para ver si está apuntando a algún tipo de bucket, y en ese caso verifica los permisos. Además, como en este punto ya conocerás todos los dominios dentro del alcance, intenta fuerza bruta de posibles nombres de buckets y verifica los permisos.
Puedes monitorear si se crean nuevos subdominios de un dominio monitoreando los Registros de Transparencia de Certificados sublert .
Verifica posibles tomas de control de subdominios. Si el subdominio está apuntando a algún bucket S3, verifica los permisos.
Si encuentras algún subdominio con una IP diferente de las que ya encontraste en el descubrimiento de activos, deberías realizar un escaneo básico de vulnerabilidades (usando Nessus u OpenVAS) y algún escaneo de puertos con nmap/masscan/shodan. Dependiendo de qué servicios estén corriendo, puedes encontrar en este libro algunos trucos para "atacarlos". Ten en cuenta que a veces el subdominio está alojado dentro de una IP que no es controlada por el cliente, así que no está en el alcance, ten cuidado.
En los pasos iniciales podrías haber encontrado algunos rangos de IP, dominios y subdominios. Es hora de recolectar todas las IPs de esos rangos y para los dominios/subdominios (consultas DNS).
Usando servicios de las siguientes apis gratuitas también puedes encontrar IPs anteriores utilizadas por dominios y subdominios. Estas IPs podrían seguir siendo propiedad del cliente (y podrían permitirte encontrar bypass de CloudFlare)
También puedes verificar dominios que apuntan a una dirección IP específica usando la herramienta hakip2host
Escanea todos los puertos de las IPs que no pertenecen a CDNs (ya que probablemente no encontrarás nada interesante allí). En los servicios en ejecución descubiertos podrías encontrar vulnerabilidades.
Encuentra una guía sobre cómo escanear hosts.
Hemos encontrado todas las empresas y sus activos y conocemos rangos de IP, dominios y subdominios dentro del alcance. Es hora de buscar servidores web.
En los pasos anteriores probablemente ya hayas realizado algún reconocimiento de las IPs y dominios descubiertos, así que es posible que ya hayas encontrado todos los posibles servidores web. Sin embargo, si no lo has hecho, ahora vamos a ver algunos trucos rápidos para buscar servidores web dentro del alcance.
Por favor, ten en cuenta que esto estará orientado a la descubrimiento de aplicaciones web, así que deberías realizar el escaneo de vulnerabilidades y escaneo de puertos también (si está permitido por el alcance).
Un método rápido para descubrir puertos abiertos relacionados con servidores web usando masscan se puede encontrar aquí. Otra herramienta amigable para buscar servidores web es httprobe, fprobe y httpx. Solo pasas una lista de dominios y tratará de conectarse al puerto 80 (http) y 443 (https). Además, puedes indicar que intente otros puertos:
Ahora que has descubierto todos los servidores web presentes en el alcance (entre las IPs de la empresa y todos los dominios y subdominios) probablemente no sepas por dónde empezar. Así que, hagámoslo simple y comencemos tomando capturas de pantalla de todos ellos. Solo con echar un vistazo a la página principal puedes encontrar puntos finales extraños que son más propensos a ser vulnerables.
Para llevar a cabo la idea propuesta, puedes usar EyeWitness, HttpScreenshot, Aquatone, Shutter, Gowitness o webscreenshot.
Además, podrías usar eyeballer para revisar todas las capturas de pantalla y decirte qué es probable que contenga vulnerabilidades, y qué no.
Para encontrar activos potenciales en la nube que pertenezcan a una empresa, debes comenzar con una lista de palabras clave que identifiquen a esa empresa. Por ejemplo, para una empresa de criptomonedas podrías usar palabras como: "crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">
.
También necesitarás listas de palabras de palabras comunes utilizadas en buckets:
Luego, con esas palabras deberías generar permutaciones (consulta el Segundo Ronda de Fuerza Bruta DNS para más información).
Con las listas de palabras resultantes, podrías usar herramientas como cloud_enum, CloudScraper, cloudlist o S3Scanner.
Recuerda que al buscar Activos en la Nube, debes buscar más que solo buckets en AWS.
Si encuentras cosas como buckets abiertos o funciones de nube expuestas, deberías acceder a ellas y tratar de ver qué te ofrecen y si puedes abusar de ellas.
Con los dominios y subdominios dentro del alcance, básicamente tienes todo lo que necesitas para comenzar a buscar correos electrónicos. Estas son las APIs y herramientas que mejor me han funcionado para encontrar correos electrónicos de una empresa:
theHarvester - con APIs
API de https://hunter.io/ (versión gratuita)
API de https://app.snov.io/ (versión gratuita)
API de https://minelead.io/ (versión gratuita)
Los correos electrónicos serán útiles más adelante para fuerza bruta en inicios de sesión web y servicios de autenticación (como SSH). Además, son necesarios para phishings. Además, estas APIs te darán aún más información sobre la persona detrás del correo electrónico, lo cual es útil para la campaña de phishing.
Con los dominios, subdominios y correos electrónicos puedes comenzar a buscar credenciales filtradas en el pasado que pertenezcan a esos correos electrónicos:
Si encuentras credenciales filtradas válidas, esta es una victoria muy fácil.
Las filtraciones de credenciales están relacionadas con hacks de empresas donde se filtró y vendió información sensible. Sin embargo, las empresas pueden verse afectadas por otras filtraciones cuya información no está en esas bases de datos:
Las credenciales y APIs pueden estar filtradas en los repositorios públicos de la empresa o de los usuarios que trabajan para esa empresa de github. Puedes usar la herramienta Leakos para descargar todos los repos públicos de una organización y de sus desarrolladores y ejecutar gitleaks sobre ellos automáticamente.
Leakos también se puede usar para ejecutar gitleaks contra todo el texto proporcionado URLs pasadas a él, ya que a veces las páginas web también contienen secretos.
Consulta también esta página para posibles dorks de github que podrías buscar en la organización que estás atacando:
Github Dorks & LeaksA veces, atacantes o simplemente trabajadores publicarán contenido de la empresa en un sitio de paste. Esto puede o no contener información sensible, pero es muy interesante buscarlo. Puedes usar la herramienta Pastos para buscar en más de 80 sitios de paste al mismo tiempo.
Los dorks de Google, aunque viejos, siempre son útiles para encontrar información expuesta que no debería estar allí. El único problema es que la base de datos de hacking de google contiene varios miles de posibles consultas que no puedes ejecutar manualmente. Así que, puedes obtener tus 10 favoritas o podrías usar una herramienta como Gorks para ejecutarlas todas.
Ten en cuenta que las herramientas que esperan ejecutar toda la base de datos usando el navegador regular de Google nunca terminarán, ya que Google te bloqueará muy pronto.
Si encuentras credenciales o tokens de API filtrados válidos, esta es una victoria muy fácil.
Si descubriste que la empresa tiene código de código abierto, puedes analizarlo y buscar vulnerabilidades en él.
Dependiendo del lenguaje, hay diferentes herramientas que puedes usar:
Source code Review / SAST ToolsTambién hay servicios gratuitos que te permiten escanear repositorios públicos, como:
La mayoría de las vulnerabilidades encontradas por cazadores de bugs residen dentro de aplicaciones web, así que en este punto me gustaría hablar sobre una metodología de pruebas de aplicaciones web, y puedes encontrar esta información aquí.
También quiero hacer una mención especial a la sección Herramientas de escaneo automático de código abierto, ya que, aunque no deberías esperar que encuentren vulnerabilidades muy sensibles, son útiles para implementarlas en flujos de trabajo para tener alguna información web inicial.
¡Felicidades! En este punto ya has realizado toda la enumeración básica. Sí, es básica porque se puede hacer mucha más enumeración (veremos más trucos más adelante).
Así que ya has:
Encontrado todas las empresas dentro del alcance
Encontrado todos los activos que pertenecen a las empresas (y realizado algún escaneo de vulnerabilidades si está en el alcance)
Encontrado todos los dominios que pertenecen a las empresas
Encontrado todos los subdominios de los dominios (¿alguna toma de subdominio?)
Encontrado todas las IPs (de y no de CDNs) dentro del alcance.
Encontrado todos los servidores web y tomado una captura de pantalla de ellos (¿algo extraño que valga la pena un examen más profundo?)
Encontrado todos los activos potenciales de nube pública que pertenecen a la empresa.
Correos electrónicos, filtraciones de credenciales y filtraciones de secretos que podrían darte una gran victoria muy fácilmente.
Pentesting todas las webs que encontraste
Hay varias herramientas que realizarán parte de las acciones propuestas contra un alcance dado.
https://github.com/hackerspider1/EchoPwn - Un poco antigua y no actualizada
Todos los cursos gratuitos de @Jhaddix como La Metodología del Cazador de Bugs v4.0 - Edición Recon
Si estás interesado en una carrera de hacking y hackear lo inhackeable - ¡estamos contratando! (se requiere polaco fluido escrito y hablado).
Consejo de bug bounty: regístrate en Intigriti, una plataforma premium de bug bounty creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)