Buscar subdominios por fuerza bruta con fierce (data gathering)
Fierce es un pequeño pero útil script portado de Perl a Python para localizar espacios de IP no contiguos y subdominios. Esta concebido para la fase de recolección de información antes de un análisis más profundo con herramientas como nmap, unicornscan, Nessus, Nikto, etc. También es muy útil para intentar averiguar qué direcciones IP se encuentran detrás de servicios anti DDOS como akamai, imperva, clouflare,MaxCDN, etc Si algún subdominio encontrado tiene una IP que no pertenece al servicio de ocultación, solo quedaría probar si la IP pertenece al dominio, veremos un ejemplo al final del artículo.
Está destinado específicamente a localizar posibles objetivos, tanto dentro como fuera de la red corporativa. Debido a que utiliza principalmente consultas DNS es posible encontrarse con servidores mal configurados y obtener datos sobre el direccionamiento IP interno usado por el objetivo.
- Fierce (GIT-HUB): https://github.com/mschwager/fierce
- Dependencias: Python3 y dnspython3
Instalación de fierce con pip3.
pip3 install fierce fierce -h
Ejecutar fierce sin instar.
git clone https://github.com/mschwager/fierce.git cd fierce pip3 install dnspython3 python3 fierce.py -h
NOTA: Dentro de la carpeta “lists” hay algunos ficheros con listas de subdominio para utilizar.
Opciones de de linea de comandos de fierce.
-h, --help Muestra la ayuda. --domain DOMAIN Dominio del que queremos obtener subdominios válidos. --connect Hace una conexión HTTP sobre el host mostrando sus cabeceras (NO IPs privadas). --wide Resuelve los dominios de toda la clase C de las IPs encontradas con subdominios. --search SEARCH1 SEARCH2 Muestra únicamente los subdominios especificados (ùtil con --wide y --traverse). --traverse TRAVERSE Escanea las IPs más próximas a la del subdominio encontrado (todas con --wide). --range RANGE Permite escanear un rango interno de IPs (Notación cidr). --delay DELAY Segundos de retardo entre consultas DNS. --subdomains DOMAIN1 DOMAIN2 Subdominios por los que preguntar --subdomain-file FILE Especifica un fichero con una lista de subdominios (Fuerza bruta). --dns-servers DNS_SERVERS1 DNS_SERVER2 Permite especificar uno o varios servidores DNS para las consultas. --dns-file DNS_FILE Permite usar un fichero con un listado de servidores DNS
Ejemplo de obtención de información sobre dominios / subdominios con fierce.
####################################### Ejemplo 1. Nearby: {'198.98.49.10': 'jinx.linuxpool.de.', '198.98.49.100': 'usvpn.theunderground.com.', '198.98.49.102': '.', '198.98.49.103': 'benjam.info.', '198.98.49.104': 'no-magic.com.', '198.98.49.105': 'mail5.jingdian1956.com.', '198.98.49.106': 'henry.cdzombak.net.', '198.98.49.107': 'mail5.aibailang.com.', '198.98.49.108': 'ny-vpn.bntnederland.nl.', '198.98.49.109': '.', '198.98.49.11': 'ns2.acies.com.', '198.98.49.115': '.', '198.98.49.116': '.', '198.98.49.118': 'm.youporn.com.', '198.98.49.120': '.', '198.98.49.121': '.', '198.98.49.123': '.', '198.98.49.124': 'gladir.com.', '198.98.49.125': 'limitanei.romanus.ca.', '198.98.49.126': 'www.blasthosting.com.br.', '198.98.49.127': 'koishi.x265.eu.', '198.98.49.129': 'cd-mn.us.', '198.98.49.131': 'rigpage.com.', '198.98.49.133': 'ware.io.', '198.98.49.134': 'vb1.bolimow.net.', '198.98.49.135': 'summit.larsonit-hosts.net.', '198.98.49.138': 'ahnonay.igloo.to.', '198.98.49.139': '.', '198.98.49.14': '.', '198.98.49.142': 'minimumcapacity.com.', '198.98.49.148': 'mx.uushoyy.com.', '198.98.49.149': '.', '198.98.49.15': '.', '198.98.49.151': '.', '198.98.49.153': 'bienko.me.', '198.98.49.154': 'email.htio.net.', '198.98.49.155': 'ClockStraight.co.uk.', '198.98.49.156': 'x.', '198.98.49.157': 'www.dynamicdealsfinder.com.', '198.98.49.158': 'pcsavvy.org.', '198.98.49.159': '.', '198.98.49.16': 'sich.minimumcapacity.com.', '198.98.49.160': 'remoteconn.shadowict.tech.', '198.98.49.162': 'puffs.foonet.net.', '198.98.49.166': 'chilinski.eu.', '198.98.49.169': 'tenko.org.', '198.98.49.17': '.', '198.98.49.171': '.', '198.98.49.175': 'raiden.zoneseek.ca.', '198.98.49.176': 'us.wandoa.com.', '198.98.49.177': 'torrents.nsawatchlist.org.', '198.98.49.178': 'stratosys.ca.', '198.98.49.179': 'mail4.malianguo.com.', '198.98.49.18': 'mail.beuford.com.', '198.98.49.181': 'helium.net.elementalfoundries.com.', '198.98.49.182': 'saudi.su.', '198.98.49.183': 'bravo.nordeideit.no.', '198.98.49.184': 'aztlan.hostxido.com.', '198.98.49.185': '.', '198.98.49.188': 'mail.atomicedge.org.', '198.98.49.190': '.', '198.98.49.191': '.', '198.98.49.192': 'kccny.org.', '198.98.49.195': 'jersy.rovan.net.', '198.98.49.197': 'VPS2.ABRAHAMHOLLOW.COM.', '198.98.49.202': 'ironpants.superkuh.com.', '198.98.49.205': '.', '198.98.49.206': '.', '198.98.49.21': 'pateer.com.', '198.98.49.210': '.', '198.98.49.214': 'markhamcomputers.ca.', '198.98.49.215': 'cerinamroth.dominicbordelon.com.', '198.98.49.217': 'homura.mrdrsr.net.', '198.98.49.218': '.', '198.98.49.220': '.', '198.98.49.223': 'flrvinspections.com.', '198.98.49.227': '.', '198.98.49.228': 'pro3tc8pr.ragnabr.net.', '198.98.49.23': '.', '198.98.49.230': '.', '198.98.49.232': 'msvr07.myroundcube.com.', '198.98.49.233': 'mail2.aiqim.com.', '198.98.49.235': '.', '198.98.49.236': 'nanosociety.us.', '198.98.49.237': '.', '198.98.49.239': 'cilantro.rxt.ca.', '198.98.49.241': '.', '198.98.49.243': 'ws-1.elpishost.com.', '198.98.49.245': 'mx.uutaogouw.com.', '198.98.49.246': 'ns-2.dnsip.xyz.', '198.98.49.247': 'www.blasthosting.com.br.', '198.98.49.248': 'njvm2.razibhasan.me.', '198.98.49.249': 'backup1-nj.voltark.com.', '198.98.49.25': 'news.dynamicdealsfinder.com.', '198.98.49.251': 'angel.virtualisation.me.', '198.98.49.252': 'buyvm.ichiban.org.', '198.98.49.254': 'mail.bergeret.email.', '198.98.49.26': '.', '198.98.49.29': 'ny.bret.dk.', '198.98.49.30': '.', '198.98.49.36': 'dx.k1vzx.com.', '198.98.49.37': '.', '198.98.49.38': 'com.ecoci.de.', '198.98.49.39': 'am.sn44.ru.', '198.98.49.40': '.', '198.98.49.43': 'znc-d.nj.kcaj.me.', '198.98.49.50': '.', '198.98.49.55': 'shell.thermalhost.net.', '198.98.49.57': 'ns2.pcsavvy.net.', '198.98.49.60': '.', '198.98.49.61': '.', '198.98.49.65': '.', '198.98.49.67': 'cloud.vidplace7.com.', '198.98.49.70': '.', '198.98.49.72': 'nj-1.phystrax.com.', '198.98.49.73': '.', '198.98.49.74': 'vpn.kamrat.com.', '198.98.49.76': 'mail.dynamicdealsfinder.com.', '198.98.49.78': 'backupdns.flowserver.info.', '198.98.49.81': 'pis.ro.', '198.98.49.82': '.', '198.98.49.83': 'pbx3.pcperfectenterprise.com.', '198.98.49.84': 'bvm02.10815.net.', '198.98.49.85': 'dns2.polymorphic.net.', '198.98.49.86': 'us-east.sleekdb.com.', '198.98.49.87': 'barney.delegno.it.', '198.98.49.89': 'zonenix.zoneseek.ca.', '198.98.49.90': '.', '198.98.49.91': '.', '198.98.49.94': 'margo.axyjo.com.', '198.98.49.98': '.', '198.98.49.99': 'mx.souyouwgou.com.'} ####################################### Ejemplo 2. python3 fierce.py --domain fsf.org --delay 0 --subdomain-file 20000.txt --search fsf.org --wide --connect --dns-file dns.list NS: ns3.gnu.org. ns1.gnu.org. ns2.gnu.org. SOA: ns1.gnu.org. (208.118.235.164) Zone: failure Wildcard: failure Found: www.fsf.org. (208.118.235.174) HTTP connected: [('Server', 'nginx/1.1.19'), ('Date', 'Wed, 17 Aug 2016 19:39:43 GMT'), ('Content-Type', 'text/html'), ('Content-Length', '701'), ('Accept-Ranges', 'none'), ('Last-Modified', 'Wed, 17 Aug 2016 19:39:43 GMT'), ('X-Cache', 'MISS from www.fsforg'), ('X-Cache-Lookup', 'HIT from www.fsforg:80'), ('Via', '1.0 www.fsforg (squid/3.1.19)'), ('Connection', 'keep-alive')] Nearby: {'208.118.235.13': 'mail.fsf.org.', '208.118.235.130': 'dirac.fsf.org.', '208.118.235.131': 'www.fsf.org.', '208.118.235.132': 'lists.fsf.org.', '208.118.235.134': 'resolver2.fsf.org.', '208.118.235.136': 'edit.fsf.org.', '208.118.235.137': 'crm-dev.fsf.org.', '208.118.235.138': 'logger.fsf.org.', '208.118.235.139': 'dbd-dev.fsf.org.', '208.118.235.145': 'termite.fsf.org.', '208.118.235.146': 'airhorn.fsf.org.', '208.118.235.147': 'directory-dev.fsf.org.', '208.118.235.150': 'directory-p.fsf.org.', '208.118.235.153': 'bitcoin.fsf.org.', '208.118.235.154': 'shop-dev.fsf.org.', '208.118.235.156': 'gplv3.fsf.org.', '208.118.235.158': 'directory.fsf.org.', '208.118.235.159': 'www-dev2.fsf.org.', '208.118.235.160': 'vcs.fsf.org.', '208.118.235.161': 'medea.fsf.org.', '208.118.235.165': 'pyxis.fsf.org.', '208.118.235.166': '20120905-shop.fsf.org.', '208.118.235.167': 'piwik.fsf.org.', '208.118.235.168': 'jabber.member.fsf.org.', '208.118.235.169': 'live2.fsf.org.', '208.118.235.170': 'ryf.fsf.org.', '208.118.235.171': '20130708-www.fsf.org.', '208.118.235.172': '20130708-edit.fsf.org.', '208.118.235.174': 'www.fsf.org.', '208.118.235.175': 'lists.fsf.org.', '208.118.235.180': 'kvmhost0.fsf.org.', '208.118.235.181': 'mysqlserver1p.fsf.org.', '208.118.235.182': 'crmserver1p.fsf.org.', '208.118.235.183': 'live2.fsf.org.', '208.118.235.185': 'shopserver0d.fsf.org.', '208.118.235.187': 'directory.fsf.org.', '208.118.235.189': 'gnusocial1d.fsf.org.', '208.118.235.190': 'bitcoin1p.fsf.org.', '208.118.235.191': 'jitsi0p.fsf.org.', '208.118.235.193': 'shopserver0p.fsf.org.', '208.118.235.194': 'kvmhost1.fsf.org.', '208.118.235.195': 'mysqlserver2d.fsf.org.', '208.118.235.196': 'crmserver1d.fsf.org.', '208.118.235.197': 'jabserver0p.fsf.org.', '208.118.235.198': 'jabserver1p.fsf.org.', '208.118.235.199': 'crmserver2d.fsf.org.', '208.118.235.23': 'webmail.fsf.org.', '208.118.235.25': 'livestream.fsf.org.', '208.118.235.30': 'svnweb.fsf.org.', '208.118.235.31': 'spamhaus-rsync.fsf.org.', '208.118.235.33': 'galactica.fsf.org.', '208.118.235.34': 'catalyst.fsf.org.', '208.118.235.36': 'littlenemo.fsf.org.', '208.118.235.37': 'labyrinth.fsf.org.', '208.118.235.38': 'sycophant.fsf.org.', '208.118.235.40': 'agilus.fsf.org.', '208.118.235.42': 'agia.fsf.org.', '208.118.235.44': 'config.fsf.org.', '208.118.235.45': 'jamsession.fsf.org.', '208.118.235.48': 'tor.fsf.org.', '208.118.235.49': 'archive.fsf.org.', '208.118.235.50': 'smtp.member.fsf.org.', '208.118.235.51': 'colonialone.fsf.org.', '208.118.235.52': 'mirror.fsf.org.', '208.118.235.58': 'zope.fsf.org.', '208.118.235.59': 'www-old.fsf.org.', '208.118.235.60': 'amt.fsf.org.', '208.118.235.61': 'ldap.fsf.org.', '208.118.235.63': 'cas0.fsf.org.', '208.118.235.64': 'cas-stg0.fsf.org.', '208.118.235.65': 'cloud9.fsf.org.', '208.118.235.66': 'blag.fsf.org.', '208.118.235.80': 'groups-dev.fsf.org.', '208.118.235.82': 'jabber.fsf.org.', '208.118.235.83': 'brains.fsf.org.', '208.118.235.84': 'balance.fsf.org.', '208.118.235.90': 'heinlein.fsf.org.', '208.118.235.91': 'mycroft.fsf.org.', '208.118.235.93': 'columbia.fsf.org.', '208.118.235.94': 'directoryng-dev.fsf.org.', '208.118.235.95': 'resolver1.fsf.org.', '208.118.235.96': 'my.fsf.org.', '208.118.235.97': 'vinge.fsf.org.', '208.118.235.98': 'nonce.fsf.org.', '208.118.235.99': 'id-dev.fsf.org.'} Found: mail.fsf.org. (208.118.235.13) Found: webmail.fsf.org. (208.118.235.23) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:40:17 GMT'), ('Server', 'Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.27 with Suhosin-Patch ' 'mod_ssl/2.2.8 OpenSSL/0.9.8g'), ('Location', 'https://webmail.fsf.org/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: autoconfig.fsf.org. (208.118.235.30) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:40:17 GMT'), ('Server', 'Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.4-2ubuntu5.27 with ' 'Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g'), ('Vary', 'Accept-Encoding'), ('Access-Control-Allow-Origin', '*'), ('Content-Type', 'text/html;charset=UTF-8')] Found: m.fsf.org. (208.118.235.168) Found: vpn.fsf.org. (18.4.89.37) Nearby: {'18.4.89.21': 'columbia.fsf.org.', '18.4.89.34': 'sycophant.fsf.org.', '18.4.89.35': 'crm-dev.fsf.org.', '18.4.89.36': 'live.fsf.org.', '18.4.89.37': 'vpn.fsf.org.', '18.4.89.38': 'airhorn.fsf.org.', '18.4.89.39': 'etherpad.fsf.org.', '18.4.89.41': 'config.fsf.org.', '18.4.89.42': 'statusnet.fsf.org.', '18.4.89.43': '20121109-crm.fsf.org.', '18.4.89.44': '20121121-gtd.fsf.org.', '18.4.89.45': '20121211-shop.fsf.org.', '18.4.89.47': '20130326-rmstalk.fsf.org.', '18.4.89.49': 'piwik-dev.fsf.org.', '18.4.89.51': 'dbd-dev.fsf.org.', '18.4.89.53': '20130815-vcs-annex.fsf.org.', '18.4.89.54': 'crm-dev-2.fsf.org.', '18.4.89.55': 'media1.fsf.org.', '18.4.89.56': 'crm-dev-3.fsf.org.', '18.4.89.57': 'enc-dev0.fsf.org.', '18.4.89.58': 'status-dev0.fsf.org.', '18.4.89.59': 'emailselfdefense.fsf.org.', '18.4.89.65': 'gnusocial0.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.67': 'nagios0.fsf.org.', '18.4.89.68': 'mwikiserver2.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.69': 'ploneserver0.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.70': 'kdev0.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.71': 'mysqlserver1.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.72': 'crmdevserver0d.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.73': 'crmdevserver1d.fsf.org.89.4.18.in-addr.arpa.', '18.4.89.74': 'UNUSED-74.fsf.org.89.4.18.in-addr.arpa.'} Found: imap.fsf.org. (208.118.235.13) Found: shop.fsf.org. (208.118.235.193) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:32 GMT'), ('Server', 'Apache/2.4.7 (Trisquel_GNU/Linux)'), ('Location', 'https://208.118.235.193/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: static.fsf.org. (208.118.235.30) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:32 GMT'), ('Server', 'Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.5.1 PHP/5.2.4-2ubuntu5.27 with ' 'Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g'), ('Vary', 'Accept-Encoding'), ('Access-Control-Allow-Origin', '*'), ('Content-Type', 'text/html;charset=UTF-8')] Found: lists.fsf.org. (208.118.235.175) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:33 GMT'), ('Server', 'Apache/2.2.14 (Trisquel GNU/Linux)'), ('Last-Modified', 'Tue, 20 Apr 2010 19:05:45 GMT'), ('ETag', '"a689a-2d-484afc3be1440"'), ('Accept-Ranges', 'bytes'), ('Content-Length', '45'), ('Content-Type', 'text/html')] Found: media.fsf.org. (208.118.235.148) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:34 GMT'), ('Server', 'Apache/2.4.7'), ('Location', 'http://savannah.nongnu.org/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: crm.fsf.org. (208.118.235.182) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:36 GMT'), ('Server', 'Apache/2.4.7 (Trisquel_GNU/Linux)'), ('Access-Control-Allow-Origin', '(null)'), ('Location', 'https://my.fsf.org/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: my.fsf.org. (208.118.235.182) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:36 GMT'), ('Server', 'Apache/2.4.7 (Trisquel_GNU/Linux)'), ('Access-Control-Allow-Origin', '(null)'), ('Location', 'https://my.fsf.org/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: store.fsf.org. (208.118.235.193) HTTP connected: [('Date', 'Wed, 17 Aug 2016 19:43:37 GMT'), ('Server', 'Apache/2.4.7 (Trisquel_GNU/Linux)'), ('Location', 'https://208.118.235.193/'), ('Content-Type', 'text/html; charset=iso-8859-1')] Found: live.fsf.org. (18.4.89.36) HTTP connected: [('Server', 'Icecast 2.4.2'), ('Date', 'Wed, 17 Aug 2016 19:43:40 GMT'), ('Content-Type', 'text/html; charset=utf-8'), ('Cache-Control', 'no-cache'), ('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT'), ('Pragma', 'no-cache'), ('Access-Control-Allow-Origin', '*')] Found: en.fsf.org. (208.118.235.174) HTTP connected: [('Server', 'nginx/1.1.19'), ('Date', 'Wed, 17 Aug 2016 19:43:42 GMT'), ('Content-Type', 'text/html'), ('Content-Length', '701'), ('Accept-Ranges', 'none'), ('Last-Modified', 'Wed, 17 Aug 2016 19:43:42 GMT'), ('X-Cache', 'MISS from www.fsforg'), ('X-Cache-Lookup', 'HIT from www.fsforg:80'), ('Via', '1.0 www.fsforg (squid/3.1.19)'), ('Connection', 'keep-alive')] Found: it.fsf.org. (208.118.235.174) HTTP connected: [('Server', 'nginx/1.1.19'), ('Date', 'Wed, 17 Aug 2016 19:43:44 GMT'), ('Content-Type', 'text/html'), ('Content-Length', '701'), ('Accept-Ranges', 'none'), ('Last-Modified', 'Wed, 17 Aug 2016 19:43:44 GMT'), ('X-Cache', 'MISS from www.fsforg'), ('X-Cache-Lookup', 'HIT from www.fsforg:80'), ('Via', '1.0 www.fsforg (squid/3.1.19)'), ('Connection', 'keep-alive')] Found: members.fsf.org. (208.118.235.168) Found: survey.fsf.org. (140.186.70.69)
Otra forma complementaria de obtener información sobre dominios sería escanear dichas IPs en busca de servidores HTTPS para consultar los dominios (Subject Alternative Name – Multi-Domain (SAN)).
Obteniendo IPs ocultas detrás de servicios de mitigación DDoS
Hay que tener en cuenta que cuando se obtiene la IP que está detrás de un servicio de mitigación DDOS / ocultación de IP suele deberse casi siempre a malas configuraciones o descuidos por parte de los administradores.
La dirección 104.25.197.34 pertenece a cloudflare.
ping mrdigicoin.eu PING mrdigicoin.eu (104.25.197.34) 56(84) bytes of data. 64 bytes from 104.25.197.34: icmp_seq=1 ttl=63 time=14.3 ms
python3 fierce.py --domain mrdigicoin.eu --subdomain-file default.txt --search mrdigicoin.eu NS: deb.ns.cloudflare.com. gordon.ns.cloudflare.com. SOA: deb.ns.cloudflare.com. (173.245.58.92) Zone: failure Wildcard: failure Found: sex.mrdigicoin.eu. (199.192.26.125) Found: ftp.mrdigicoin.eu. (199.192.26.125) Found: imap.mrdigicoin.eu. (199.192.26.125) Found: mail.mrdigicoin.eu. (199.192.26.125) Found: pop3.mrdigicoin.eu. (199.192.26.125)
Ahora se podría probar usando la siguiente linea en “/etc/hosts” y visitar el dominio “mrdigicoin.eu”
199.192.26.125 mrdigicoin.eu
Si se quiere probar desde la terminal, con curl se podría hacer lo siguiente para forzar una resolución de nombres con la IP que indiquemos, en este caso 199.192.26.125.
curl -Ik https://mrdigicoin.eu --resolve 'mrdigicoin.eu:199.192.26.125' HTTP/1.1 302 Found Date: Sat, 17 Nov 2018 17:13:46 GMT Server: Apache Location: https://mrdigicoin.eu/?page_id=27&redirect_to=https%3A%2F%2Fmrdigicoin.eu%2F Content-Type: text/html; charset=UTF-8
Otras técnicas que se podrían usar es buscar mediante shodan o netcraft si hay un historial sobre dicho dominio. Forzar si es posible una petición http saliente desde la web. Si la web fue diseñada por alguna empresa y dejan constancia de ello, se podrían buscar otras webs creadas por dicha empresa y buscar por su bloque de direcciones IPs publicas a ver si hay suerte.