1º mediante google con gov site:.as y otras búsquedas nos hacemos con las urls del gobierno
2º Crear un fichero sin las https: ni http: ni www ni la / final
3º He creado medios.txt con unos 29 dominios saudíes
recon-ng: Es una herramienta de recolección de información con una interfaz similar a metasploit
recon-ng
[recon-ng][default] > workspaces create arabia_saudi
workspaces load arabia_saudi
[recon-ng][arabia_saudi] > marketplace install recon/domains-hosts/hackertarget
[recon-ng][arabia_saudi] > modules search
Recon
-----
recon/domains-contacts/whois_pocs
recon/domains-hosts/hackertarget
[recon-ng][arabia_saudi] > modules load recon/domains-hosts/hackertarget
[recon-ng][arabia_saudi][hackertarget] > options
Manages the current context options
Usage: options <list|set|unset> […]
El módulo cargado lo que hará será intentar obtener todos los subdominios de los dominios o subdominios dados
[recon-ng][arabia_saudi][hackertarget] > options (si le das a tab salen los parámetros de options)
list set unset
[recon-ng][arabia_saudi][hackertarget] > options set SOURCE spa.gov.sa
SOURCE ⇒ spa.gov.sa
[recon-ng][arabia_saudi][hackertarget] > options list
Name Current Value Required Description
SOURCE spa.gov.sa yes source of input (see 'info' for details)
[recon-ng][arabia_saudi][hackertarget] > run (ejecuta el módulo cargado)
muestra subdominios con sus respectivas ips
Pero en en fichero medios.txt teníamos muchos dominios, no podemos ir de uno en uno, es mucho tiempo y repetir las mismas líneas muchas veces, para ello salimos de la interfaz con el comando back 2 veces y utilizamos la opción -r de recon-ng y le damos el fichero con los comandos, pero para crear el fichero con los comandos hay que hacer un script que repita los comandos que hemos puesto en la interfaz, veamos:
#! /bin/bash # Crea el archivo commands echo "workspaces load arabia_saudi" > commands echo "modules load recon/domains-hosts/hackertarget" >> commands # Iterar sobre cada dominio en medios.txt while read domain; do echo "options set SOURCE $domain" >> commands echo "run" >> commands done < medios.txt
le damos permisos de ejecución con chmod +x script.sh, ejecutamos con ./script.sh y crea el fichero commands
después hacemos:
recon-ng -r /home/usuario/archivos/arabia_saudi/commands (tiene que ser ruta completa, no puede ser ruta relativa porque da error)
Bien, ahora estamos en la interfaz, vemos que tarda un poco porque está haciendo bastantes cosas (lo que haríamos manualmente, repetir mucho)
Ahora de lo que nos damos cuenta es que al hacer desde el prompt
[recon-ng][arabia_saudi] > show hosts (no entra el resultado en el buffer de la terminal / consola)
Bien, para solucionarlo volcamos el resultado en un fichero haciendo lo siguiente:
spool start /home/usuario/arabia_saudi/volcado.txt
[*]Spooling output to '/home/usuario/arabia_saudi/volcado.txt'.
a partir de ahora todos los resultados de los comandos se guardarán en el fichero volcado.txt
ponemos:
[recon-ng][arabia_saudi] > show hosts
[recon-ng][arabia_saudi] > spool stop
[*]Spooling stopped. Output saved to '/home/usuario/arabia_saudi/volcado.txt'.
[recon-ng][arabia_saudi] >
En volcado.txt si hacemos:
cat volcado.txt | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | wc -l
850
Pero no son todos esos hosts porque hay algunos dominios o subdominios apuntando a mismas ips
Si hacemos:
cat volcado.txt | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq | wc -l
675
Ahí si que se obtiene el número total de hosts físicos. Tal vez pueda interesar donde están físicamente y de alguna manera dibujar un mapa de donde están. Si leíste los anteriores posts recordarás como obtener ubicaciones a partir de la base de datos GeoLite2-City, así que primero creamos un fichero con todas las ips y después un script que itere sobre cada una, se lo de al comando y éste vaya añadiendo la ubicación a un fichero
cat volcado.txt | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | sort | uniq > ips_servidores_gobierno_sa.txt
#! /bin/bash # Iterar sobre cada ip en ips_servidores_gobierno_sa.txt while read ip; do echo "$(mmdblookup --file ../GeoLite2-City.mmdb --ip $ip | grep -oE '[0-9]{1,3}\.[0-9]{6}' | tr '\n' ',' | sed 's/,$/\n/')" >> ubicaciones_hosts_gobierno_as.txt done < ips_servidores_gobierno_sa.txt
chmod +x coordenadas_ips_as.sh
./coordenadas_ips_as.sh
ahora ya tenemos las ubicaciones de los 675 servidores del gobierno y podemos usar por ejemplo qgis para verlas en el mapa
cat ubicaciones_hosts_gobierno_as.csv | sort | uniq
17.372400,78.437800
21.484900,39.192000
21.997400,79.001100
24.094900,38.062900
24.686900,46.722400
24.998600,44.989200
25.020600,37.264300
26.284600,50.208000
26.433600,50.111600
29.971300,40.202700
33.663700,117.174300
37.751000,97.822000
39.046900,77.490300
41.259100,95.851700
43.631900,79.371600
50.118700,8.684200
51.496400,0.122400
52.389100,4.656300
Todos, los 666 están concentrados en 18 ubicaciones, y hay 9 que no tienen ninguna ubicación asignada