@@ -61,10 +61,10 @@ def run
6161 #
6262 # @param [String] host Hostname
6363 # @return [String] ip The resolved IP
64- def gethost ( hostname )
64+ def gethost ( hostname , family )
6565 ## get IP for host
6666 vprint_status ( "Looking up IP for #{ hostname } " )
67- resolve_host ( hostname ) . join ( ', ' )
67+ resolve_host ( hostname , family )
6868 end
6969
7070 def get_domain_computers
@@ -87,6 +87,7 @@ def get_domain_computers
8787 end
8888
8989 def list_computers ( domain , hosts )
90+ meterpreter_dns_resolving_errors = [ ]
9091 tbl = Rex ::Text ::Table . new (
9192 'Header' => 'List of identified Hosts.' ,
9293 'Indent' => 1 ,
@@ -98,12 +99,29 @@ def list_computers(domain, hosts)
9899 ]
99100 )
100101 hosts . each do |hostname |
101- hostip = gethost ( hostname )
102- tbl << [ domain , hostname , hostip ]
102+ begin
103+ hostipv4 = gethost ( hostname , AF_INET )
104+ rescue Rex ::Post ::Meterpreter ::RequestError => e
105+ meterpreter_dns_resolving_errors << "IPV4: #{ hostname } could not be resolved - #{ e } "
106+ end
107+
108+ begin
109+ hostname = "google.com"
110+ hostipv6 = gethost ( hostname , AF_INET6 )
111+ rescue Rex ::Post ::Meterpreter ::RequestError => e
112+ meterpreter_dns_resolving_errors << "IPV6: #{ hostname } could not be resolved - #{ e } "
113+ end
114+
115+ hostipv4 . each { |ip | tbl << [ domain , hostname , ip ] } unless hostipv4 . nil?
116+ hostipv6 . each { |ip | tbl << [ domain , hostname , ip ] } unless hostipv6 . nil?
103117 end
104118
105119 print_line ( "\n #{ tbl } \n " )
106120
121+ meterpreter_dns_resolving_errors . each do | error |
122+ print_warning ( error )
123+ end
124+
107125 report_note (
108126 host : session ,
109127 type : 'domain.hosts' ,
0 commit comments