Skip to content

Commit d5f8aef

Browse files
committed
Implemented -dns command line flag
1 parent 20cc3b1 commit d5f8aef

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

reconnoitre/reconnoitre.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ def main():
1818
parser.add_argument("-w", dest="wordlist", required=False, help="Set the wordlist to use for generated commands. Ex /usr/share/wordlist.txt")
1919
parser.add_argument("-pS", dest="ping_sweep", action="store_true", help="Write a new target.txt by performing a ping sweep and discovering live hosts.", default=False)
2020
parser.add_argument("-fD", dest="find_dns_servers", action="store_true", help="Find DNS servers from a list of targets.", default=False)
21-
parser.add_argument("-sS", dest="perform_service_scan", action="store_true", help="Perform service scan over targets.", default=False)
21+
parser.add_argument("-dns", dest="dns", required=False, help="Optionally specify a DNS server to use with a service scan.")
2222
parser.add_argument("--quiet", dest="quiet", action="store_true", help="Supress banner and headers to limit to comma dilimeted results only.", default=False)
23+
2324
parser.add_argument("--execute", dest="follow", action="store_true", help="Execute shell comamnds from recommendations as they are discovered. Likely to lead to very long execute times depending on the wordlist being used.", default=False)
2425
arguments = parser.parse_args()
2526

@@ -39,7 +40,9 @@ def main():
3940
find_dns(arguments.target_hosts, arguments.output_directory, arguments.quiet)
4041
if arguments.perform_service_scan is True:
4142
print("[#] Performing service scans")
42-
service_scan(arguments.target_hosts, arguments.output_directory, arguments.quiet)
43-
43+
if arguments.dns is True:
44+
service_scan(arguments.target_hosts, arguments.output_directory, arguments.dns, arguments.quiet)
45+
else:
46+
service_scan(arguments.target_hosts, arguments.output_directory, '', arguments.quiet)
4447
if __name__ == "__main__":
4548
main()

reconnoitre/service_scan.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
from directory_helper import create_dir_structure
1010

1111

12-
DNSSRV=''
13-
14-
def nmapScan(ip_address, outputdir):
12+
def nmapScan(ip_address, outputdir, dns_server):
1513
ip_address = ip_address.strip()
1614
outfile = outputdir + "/" + ip_address + "_findings.txt"
1715

@@ -21,12 +19,16 @@ def nmapScan(ip_address, outputdir):
2119

2220
print("[+] Starting detailed TCP/UDP nmap scans for %s" % (ip_address))
2321
serv_dict = {}
24-
if DNSSRV:
25-
TCPSCAN = "nmap -vv -Pn -sS -A -sC -p- -T 3 -script-args=unsafe=1 --dns-servers %s -oN '%s/%s.nmap' -oX '%s/%s_nmap_scan_import.xml' %s" % (DNSSRV, outputdir, ip_address, outputdir, ip_address, ip_address)
26-
UDPSCAN = "nmap -vv -Pn -A -sC -sU -T 4 --top-ports 200 --dns-servers %s -oN '%s/%sU.nmap' -oX '%s/%sU_nmap_scan_import.xml' %s" % (DNSSRV, outputdir, ip_address, outputdir, ip_address, ip_address)
22+
23+
24+
if dns_server:
25+
print("[+] Using DNS server %s" % (dns_server))
26+
TCPSCAN = "nmap -vv -Pn -sS -A -sC -p- -T 3 -script-args=unsafe=1 --dns-servers %s -oN '%s/%s.nmap' -oX '%s/%s_nmap_scan_import.xml' %s" % (dns_server, outputdir, ip_address, outputdir, ip_address, ip_address)
27+
UDPSCAN = "nmap -vv -Pn -A -sC -sU -T 4 --top-ports 200 --dns-servers %s -oN '%s/%sU.nmap' -oX '%s/%sU_nmap_scan_import.xml' %s" % (dns_server, outputdir, ip_address, outputdir, ip_address, ip_address)
2728
else:
28-
TCPSCAN = "nmap -vv -Pn -sS -A -sC -p- -T 3 -script-args=unsafe=1 -n %s -oN '%s/%s.nmap' -oX '%s/%s_nmap_scan_import.xml' %s" % (DNSSRV, outputdir, ip_address, outputdir, ip_address, ip_address)
29-
UDPSCAN = "nmap -vv -Pn -A -sC -sU -T 4 --top-ports 200 -n %s -oN '%s/%sU.nmap' -oX '%s/%sU_nmap_scan_import.xml' %s" % (DNSSRV, outputdir, ip_address, outputdir, ip_address, ip_address)
29+
print("[+] No DNS server was specified. Continuing with a regular scan.")
30+
TCPSCAN = "nmap -vv -Pn -sS -A -sC -p- -T 3 -script-args=unsafe=1 -n %s -oN '%s/%s.nmap' -oX '%s/%s_nmap_scan_import.xml' %s" % (dns_server, outputdir, ip_address, outputdir, ip_address, ip_address)
31+
UDPSCAN = "nmap -vv -Pn -A -sC -sU -T 4 --top-ports 200 -n %s -oN '%s/%sU.nmap' -oX '%s/%sU_nmap_scan_import.xml' %s" % (dns_server, outputdir, ip_address, outputdir, ip_address, ip_address)
3032

3133
results = subprocess.check_output(TCPSCAN, shell=True)
3234
udpresults = subprocess.check_output(UDPSCAN, shell=True)
@@ -133,7 +135,7 @@ def valid_ip(address):
133135
except socket.error:
134136
return False
135137

136-
def target_file(target_hosts, output_directory, quiet):
138+
def target_file(target_hosts, output_directory, dns_server, quiet):
137139
targets = load_targets(target_hosts, output_directory, quiet)
138140
target_file = open(targets, 'r')
139141
print("[*] Loaded targets from: %s" % targets)
@@ -152,12 +154,12 @@ def target_file(target_hosts, output_directory, quiet):
152154
nmap_directory = host_directory + "/nmap"
153155

154156
jobs = []
155-
p = multiprocessing.Process(target=nmapScan, args=(ip_address, nmap_directory))
157+
p = multiprocessing.Process(target=nmapScan, args=(ip_address, nmap_directory, dns_server))
156158
jobs.append(p)
157159
p.start()
158160
target_file.close()
159161

160-
def target_ip(target_hosts, output_directory, quiet):
162+
def target_ip(target_hosts, output_directory, dns_server, quiet):
161163
print("[*] Loaded single target: %s" % target_hosts)
162164
target_hosts = target_hosts.strip()
163165
create_dir_structure(target_hosts, output_directory)
@@ -166,14 +168,14 @@ def target_ip(target_hosts, output_directory, quiet):
166168
nmap_directory = host_directory + "/nmap"
167169

168170
jobs = []
169-
p = multiprocessing.Process(target=nmapScan, args=(target_hosts, nmap_directory))
171+
p = multiprocessing.Process(target=nmapScan, args=(target_hosts, nmap_directory, dns_server))
170172
jobs.append(p)
171173
p.start()
172174

173-
def service_scan(target_hosts, output_directory, quiet):
175+
def service_scan(target_hosts, output_directory, dns_server, quiet):
174176
check_directory(output_directory)
175177

176178
if(valid_ip(target_hosts)):
177-
target_ip(target_hosts, output_directory, quiet)
179+
target_ip(target_hosts, output_directory, dns_server, quiet)
178180
else:
179-
target_file(target_hosts, output_directory, quiet)
181+
target_file(target_hosts, output_directory, dns_server, quiet)

0 commit comments

Comments
 (0)