Skip to content

Latest commit

 

History

History
194 lines (171 loc) · 4.31 KB

README.md

File metadata and controls

194 lines (171 loc) · 4.31 KB

DNSRECON

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

Install

DNSRECON can be installed by running:

go get github.com/mbudge/dnsrecon 

Prerequisites

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

Usage

Add more public dns servers to resolvers.yaml before increasing the number of concurrent queries.

Run locally

cd dnsrecon
go run *.go

Build and install

go install dnsrecon
curl http://127.0.0.1:8080/domain/google.com

Docker

Build

cd dnsrecon
docker build --rm -t "dnsrecon" .

Run

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

Example

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" : {}
   }
}

TODO

  • 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