MCPcopy Create free account
hub / github.com/TheSecuredAnalyst/security-suite / run

Method run

modules/osint/dns_enum.py:23–113  ·  view source on GitHub ↗

Enumerate DNS records for the target domain.

(self, target: Target)

Source from the content-addressed store, hash-verified

21 """Enumerate DNS records for the target domain."""
22 result = self.create_result(target)
23
24 # Handle IP targets with reverse DNS lookup
25 if target.target_type == "ip":
26 return await self._reverse_lookup(target, result)
27
28 if target.target_type not in ("domain", "url"):
29 result.errors.append(f"Invalid target type: {target.target_type}. Expected domain or IP.")
30 result.success = False
31 result.complete()
32 return result
33
34 domain = self._extract_domain(target.value)
35 self.logger.info(f"Enumerating DNS records for {domain}")
36
37 resolver = dns.asyncresolver.Resolver()
38 resolver.timeout = 5.0
39 resolver.lifetime = 10.0
40
41 records_found = {}
42
43 for record_type in self.RECORD_TYPES:
44 try:
45 answers = await resolver.resolve(domain, record_type)
46 records = []
47 for rdata in answers:
48 records.append(str(rdata))
49 if records:
50 records_found[record_type] = records
51 self.logger.debug(f"Found {len(records)} {record_type} records")
52 except dns.resolver.NXDOMAIN:
53 result.errors.append(f"Domain {domain} does not exist")
54 result.success = False
55 break
56 except dns.resolver.NoAnswer:
57 pass
58 except dns.resolver.NoNameservers:
59 result.errors.append(f"No nameservers available for {domain}")
60 break
61 except Exception as e:
62 self.logger.debug(f"Error querying {record_type}: {e}")
63
64 if records_found:
65 result.raw_data["dns_records"] = records_found
66
67 if "A" in records_found:
68 result.add_finding(
69 title="IPv4 Addresses Found",
70 description=f"Domain resolves to {len(records_found['A'])} IPv4 address(es)",
71 severity=Severity.INFO,
72 data={"addresses": records_found["A"]},
73 )
74
75 if "MX" in records_found:
76 result.add_finding(
77 title="Mail Servers Found",
78 description=f"Found {len(records_found['MX'])} mail server(s)",
79 severity=Severity.INFO,
80 data={"servers": records_found["MX"]},

Callers 2

osint_dnsFunction · 0.95

Calls 5

_reverse_lookupMethod · 0.95
_extract_domainMethod · 0.95
completeMethod · 0.80
add_findingMethod · 0.80
create_resultMethod · 0.45

Tested by 1