DNS
Hack Responsibly.
Always ensure you have explicit permission to access any computer system before using any of the techniques contained in these documents. You accept full responsibility for your actions by applying any knowledge gained here.
Hosts File
Description here
/etc/hosts
example hereC:\Windows\System32\drivers\etc\hosts
example hereDNS Enumeration
DNS offers a variety of information about public (and sometimes private!) organization servers, such as IP addresses, server names, and server functionality.
zonetransfer.me
zonetransfer.me (https://digi.ninja/projects/zonetransferme.php)
A public training site for testing and learning about DNS. Uses the following two name servers:
nsztm1.digi.ninja
nsztm2.digi.ninja
You can test everything from simple dig queries to DNS zone transfers.
Interacting with a DNS Server
host -t ns zonetransfer.me
# -t : type , ns: dns
host -t mx zonetransfer.me
# mx : mail serverAlso you can use
nslookup
nslookup zonetransfer.medigalso can be used
dig zonetransfer.meAutomating lookups
we have some initial data from the zonetransfer.me domain, we can continue to use additional DNS queries to discover more host names and IP addresses belonging to megacorpone.com.
host zonetransfer.me
# we will found that it has an IP
host idontexist.zonetransfer.me
# this is not foundForward Lookup Brute Force
Taking the previous concept a step further, we can automate the Forward DNS Lookup of common host names using the host command and a Bash script.
echo www > list.txt
echo ftp >> list.txt
echo mail >> list.txt
echo owa >> list.txt
echo proxy >> list.txt
echo router >> list.txt
echo api >> list.txt
for ip in $(cat list.txt);do host $ip.$domain;doneReverse Lookup Brute Force
If the DNS administrator of megacorpone.com configured PTR records for the domain, we might find out some more domain names that were missed during the forward lookup brute-force phase.
for ip in $(seq 155 190);do host 50.7.67.$ip;done | grep -v "not found"
# grep -v :: --invert-matchDNS Zone Transfers
A zone transfer is similar to a database replication act between related DNS servers.
This process includes the copying of the zone file from a master DNS server to a slave server.
The zone file contains a list of all the DNS names configured for that zone. Zone transfers should usually be limited to authorized slave DNS servers.
host -l megacorpone.com ns1.megacorpone.com # ns1 refused us our zone transfer request
# -l :: list all hosts in a domain
host -l megacorpone.com ns2.megacorpone.com
# The result is a full dump of the zone file for the megacorpone.com domain,
# providing us a convenient list of IPs and DNS names for the megacorpone.com domain.host -t axfr zonetransfer.me nsztm1.digi.ninjadig axfr nsztm1.digi.ninja zonetransfer.meNow Lets automate the process:
To get the name servers for a given domain in a clean format, we can issue the following command.
host -t ns zonetransfer.me | cut -d " " -f 4 # -d :: --delimiter=DELIM ; # -f :: --fields=LIST select only these fields on each line;Taking this a step further, we could write the following simple Bash script to automate the procedure of discovering and attempting a zone transfer on each DNS server found.
# /bin/bash # Simple Zone Transfer Bash Script # $1 is the first argument given after the bash script # Check if argument was given, if not, print usage if [-z "$1" ]; then echo "[-] Simple Zone transfer script" echo "[-] Usage : $0 $domain_name " exit 0 fi # if argument was given, identify the DNS servers for the domain for server in $(host -t ns $1 | cut -d" " -f4);do # For each of these servers, attempt a zone transfer host -l $1 $server | grep "has address" doneRunning this script on zonetransfer.me should automatically identify both name servers and attempt a zone transfer on each of them
> chmod 755 dns--axfr.sh > ./dns--axfr.sh zonetransfer.me
Tools
DNSRecon
dnsrecon -d zonetransfer.me -t axfr
# -d :: domain
# -t :: type of Enumeration to perform
# axfr :: test all ns servers for zone transferDNSEnum
dnsenum zonetransfer.mefierce
pip3 install fierce
fierce --domain zonetransfer.me
# To scan a domain and output to a file
fierce -dns <domain> -file <output_file>
# To scan a domain and specify which dnsserver to use
fierce -dns <domain> -dnsserver <server>
# To scan an internal ip range for a given server
fierce -range <ip-range> -dnsserver <server>
# To scan a domain using a given wordlist
fierce -dns <domain> -wordlist <wordlist>
# To scan a domain using a specified timeout and number of ip addresses to branch from all found addresses
fierce -dns <domain> -tcptimeout <# seconds> -traverse <# addresses>
# To scan domains from a list and search the entire class C for each found
fierce -dnsfile <file> -wideDIG
dig zonetransfer.me + short
dig zonetransfer.me MX
dig zonetransfer.me NS
dig zonetransfer.me SOA
dig zonetransfer.me ANY +noall +answer
dig -x zonetransfer.me
dig zonetransfer.me mx +noall +answer zonetransfer.me ns +noall +answer
# DNS Zone Transfer
dig -t AXFR zonetransfer.me
dig axfr @10.11.1.111 zonetransfer.me
# For Ipv4
dig -4 zonetransfer.me
# For IPv6
dig -6 zonetransfer.me
#To just get the ip address
dig [domain] +nocomments +noauthority +noadditional +nostats
OR
dig [domain] +noall +answer
OR
dig [domain] +short
#To use a specific query type
dig -t [query type] [domain] [options]
OR
dig [domain] [query type] [options]
#To view ALL DNS record types use query ANY
dig -t ANY [domain] [options]
OR
dig [domain] ANY [options]
#To do a DNS reverse look up
dig -x [ip address] +short
#To use a specific DNS server
dig @[specific DNS] [domain]
#To do a bulk DNS query (where file.txt has all the domains, one to a line)
dig [domain1] [options] [domain2] [options]
OR
dig -f file.txt [options]DNSEnum
# dnsenum
dnsenum 10.11.1.111DNS reverse lookup
Using powershell
$ComputerIPAddress = "10.10.10.10"Using dnsrecon:
dnsrecon -r $ip/$subnet -n $ip_to_checkMisc
DNS zone transfer: dig axfr <hostname> @<ip> or host -l <domain> <nameserver>
add DNS server - Linux: /etc/resolv.conf {nameserver <ip>}
Network mapping of attack surfaces and external asset discovery using open source information gathering and active reconnaissance techniques: https://github.com/OWASP/Amass
NMAP DNS Hostnames Lookup
nmap -F --dns-serverHost Lookup
host -t ns zonetransfer.meReverse Lookup Brute Force - find domains in the same range
for ip in $(seq 155 190);do host 50.7.67.$ip;done |grep -v "not found"Perform DNS IP Lookup
dig a domain-name-here.com @nameserverPerform MX Record Lookup
dig mx domain-name-here.com @nameserverPerform Zone Transfer with DIG
dig axfr domain-name-here.com @nameserverDNS Zone Transfers
Windows DNS zone transfer
nslookup -> set type=any -> ls -d zonetransfer.meLinux DNS zone transfer
dig axfr zonetransfer.me @ns1.zonetransfer.meDnsrecon DNS Brute Force
dnsrecon -d TARGET -D /usr/share/wordlists/dnsmap.txt -t std --xml ouput.xmlDnsrecon DNS List of megacorp
dnsrecon -d zonetransfer.me -t axfrDNSEnum
dnsenum zonetransfer.meIf you like this content and would like to see more, please consider buying me a coffee!
Last updated