Quando si ha a che fare con lunghe liste di domini e sottodomini, è utile trovare il modo per velocizzare la procedura di verifica dell’esistenza del sito e dei servizi che offre lo stesso. Ciò che, da sempre, cercano di fare gli informatici d’altronde è l’automatizzare, tramite linguaggi di scripting (bash, python, perl), qualsiasi azione noiosa e ripetitiva.
Una volta ottenuta una lista di sottodomini (alcuni metodi in questo articolo), è possibile che lo stesso utilizzi wildcard, o abbia centinaia di sottodomini esistenti, rendendo un footprinting infinito e, di fatto, noioso.
Quindi la prima azione da eseguire è verificare se il dominio esista, e nel caso, se sia online o meno (è anche probabile che sia stato utilizzato anni prima e ora non più). Io utilizzo due metodi:
Per quanto riguarda il comando curl, la stringa è
xargs -n1 -P 20 curl -o /dev/null --silent --head --user-agent "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" --write-out '%{url_effective} ; %{http_code} ; %{redirect_url} ; %{remote_ip}\n' < subdomainTMP.txt | tee up-$site
Dove:
Mettiamo caso che il file contenente la lista dei sottodomini si chiami subdomainTMP.txt, un possibile script bash per unire i due tools potrebbe essere
#!/bin/bash
site="$1"
if [ -e subdomainUP$site.txt ];
then
echo "File subdomainUP$site.txt già presente"
else
python online.py subdomainTMP.txt subdomainUP$site.txt
fi
if [ -e up$site.txt ];
then
echo "File up$site.txt già presente"
else
xargs -n1 -P 20 curl -o /dev/null --silent --head --user-agent "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0" --write-out '%{url_effective} ; %{http_code} ; %{redirect_url} ; %{remote_ip}\n' < subdomainTMP.txt | tee up-$site #verifica se up o down awk '$3 > 000' up-$site > up$site.txt
rm up-$site
fi
cat up$site.txt | awk {'print $1'} > subdomainUP.txt
sed 's/http:[//][//]//;s/[//]//' subdomainUP.txt > subdomainTMP.txt
cat subdomainTMP.txt > subdomainUP.txt
cat subdomainUP.txt > temp.txt
cat subdomainUP$site.txt >> temp.txt
sort -u temp.txt > subdomainUP.txt
In questo modo abbiamo ora il file subdomainUP contenente la lista dei domini online e in esecuzione.
L’idea di aprire ogni sito e analizzarlo uno ad uno è quanto mai irrealizzabile, perciò utilizzeremo un software che lo farà per noi, webscreenshot. Possiamo aggiungere il comando al file di prima, automatizzando nuovamente il processo
if [ -d screenline ];
then
echo "! Screen gia presi, passo oltre !"
else
python webscreenshot.py -i subdomainUP.txt -o screenline
fi
Una volta avviato e completata l’esecuzione, ci troveremo comodamente gli screenshot di tutti i siti presenti nella lista
Nel caso siano ancora tanti, si può sempre ordinare per dimensione, andando ad eliminare quelli uguali o quelli con errori.
Una volta decisi i domini da analizzare possiamo passare la lista a nmap, whatweb o ad altri sofware che, sempre in maniera automatica, eseguono un footprinting dei servizi. del sistema operativo. Alcune righe di esempio:
while read line; do
nmap -sC -T4 $line --top-ports 1000 --script default,discovery,safe
whatweb -a 3 $line
done < subdomainUP.txt
Come avete visto, sta solo alla vostra immaginazione cos’altro aggiungere. Basta fare un giro su Github, trovare script o software che potrebbero fare al caso vostro, ed inserirli in un comodo file bash!