DNSRECON is a prototype REST API to do dns reconnaissance and collect the complete set of SOA, NS, MX, A, AAAA, TXT and CNAME reconds. More dns records and features will be added after the tool is productionised later this year.
Warning: not for production use
DNSRECON can be installed by running:
go get github.com/mbudge/dnsrecon
DNSRECON requires the following dependencies:
go get github.com/miekg/dns
go get github.com/gorilla/mux
go get golang.org/x/time/rate
go get github.com/golang/groupcache/lru
Add more public dns servers to resolvers.yaml before increasing the number of concurrent queries.
cd dnsrecon
go run *.go
go install dnsrecon
curl http://127.0.0.1:8080/domain/google.com
cd dnsrecon
docker build --rm -t "dnsrecon" .
docker run -d -p 8080:8080 --restart=unless-stopped --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 --name dnsrecon dnsrecon
curl http://127.0.0.1:8080/domain/google.com | json_pp
{
"timestamp" : "2019-02-22T11:10:16.83421805Z",
"status" : "NOERROR",
"errors" : {},
"name" : "google.com",
"data" : {
"txt" : [
"v=spf1 include:_spf.google.com ~all",
"facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95",
"globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8=",
"docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"
],
"soa" : {
"mbox" : "dns-admin.google.com",
"name" : "google.com",
"primary_nameserver" : {
"ns1.google.com" : {
"a" : [
"216.239.32.10"
],
"aaaa" : [
"2001:4860:4802:32::a"
]
}
}
},
"mx" : {
"20" : {
"alt1.aspmx.l.google.com" : {
"a" : [
"74.125.131.27"
],
"aaaa" : [
"2a00:1450:4010:c0e::1a"
]
}
},
"50" : {
"alt4.aspmx.l.google.com" : {
"a" : [
"74.125.195.27"
],
"aaaa" : [
"2607:f8b0:400e:c09::1b"
]
}
},
"30" : {
"alt2.aspmx.l.google.com" : {
"a" : [
"74.125.68.27"
],
"aaaa" : [
"2404:6800:4003:c02::1a"
]
}
},
"40" : {
"alt3.aspmx.l.google.com" : {
"a" : [
"64.233.188.26"
],
"aaaa" : [
"2404:6800:4008:c06::1b"
]
}
},
"10" : {
"aspmx.l.google.com" : {
"aaaa" : [
"2a00:1450:400c:c00::1a"
],
"a" : [
"108.177.15.27"
]
}
}
},
"aaaa" : [
"2a00:1450:4009:811::200e"
],
"cname" : null,
"a" : [
"216.58.206.142"
],
"ns" : {
"ns2.google.com" : {
"aaaa" : [
"2001:4860:4802:34::a"
],
"a" : [
"216.239.34.10"
]
},
"ns3.google.com" : {
"aaaa" : [
"2001:4860:4802:36::a"
],
"a" : [
"216.239.36.10"
]
},
"ns1.google.com" : {
"a" : [
"216.239.32.10"
],
"aaaa" : [
"2001:4860:4802:32::a"
]
},
"ns4.google.com" : {
"aaaa" : [
"2001:4860:4802:38::a"
],
"a" : [
"216.239.38.10"
]
}
},
"cname_paths" : {}
}
}
- Productionise the app
- Add comments for godocs
- Add defer and recover
- Rewrite the resolvers package so the tool downloads resolvers from https://public-dns.info/nameservers-all.csv
- Validate resolvers with a simple dns lookup to check they don't return invalid responses
- Add settings to the configutation file