Script-Time: [update] Domain-Routing
Welche Subdomains gibt es in einer Domäne? Sind sie ein Alias für eine andere Domäne? Unter welcher IP-Adresse wird sie gehostet? Wem gehört diese IP?
So kann man sofort sehen, welche Dienste von einem Unternehmen selbst administriert werden, aber auch jene, die an einen Cloud-Dienstleister abgegeben wurden.
Die zusätzlichen Informationen über eine IP werden bei shodan abgeholt.
domain_routing_detailed(){
DOMAINS=$*
outfile=/tmp/domain_routing.png
GV="digraph G { graph [overlap=scale]; rankdir=LR; node [margin=0.2 fontcolor=blue shape=box3d style=filled]; splines=ortho"
SUBDOMAINS="$( for DOMAIN in $* ; do ( wget -qO - "https://crt.sh/?q=${DOMAIN}&exclude=expired&output=json" | jq -r .[].name_value ; ) ; done | sort -u ; )"
GV="${GV}""$( echo "$SUBDOMAINS" | while read domain; do host $domain | grep -E "alias|address" | sed -e 's/ is an alias for /" -> "/;s/ has.*address /" -> "/;s/$/"/;s/\."$/"/;s/^/"/' ; done | sort -u )"
while read IP
do
INFO=$(wget -qO - "https://api.shodan.io/shodan/host/${IP}")
PORTS="$(echo $( echo "$INFO" | jq .ports | sed -e 's/\[//g;s/\]//g' ))"
ORG="$(echo $( echo "$INFO" | jq -r .org | sed -e 's/\[//g;s/\]//g' ))"
GV=$( echo "$GV" | sed -e "s/${IP}/${IP}\\nPorts open: ${PORTS}\\n\\n${ORG}/")
done < <(echo "$GV" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort -u)
GV="${GV}""}"
echo "$GV" | dot -Tpng -Goverlap=scale -o $outfile
xdg-open $outfile
}
Aufgerufen wird es zum Beispiel folgendermaßen:
domain_routing_detailed swr3.de
Die Ausgabe sieht so aus: