Path: blob/master/modules/auxiliary/scanner/dcerpc/management.rb
19500 views
##1# This module requires Metasploit: https://metasploit.com/download2# Current source: https://github.com/rapid7/metasploit-framework3##45require 'English'6class MetasploitModule < Msf::Auxiliary78# Exploit mixins should be called first9include Msf::Exploit::Remote::DCERPC1011include Msf::Auxiliary::Report1213# Scanner mixin should be near last14include Msf::Auxiliary::Scanner1516def initialize17super(18'Name' => 'Remote Management Interface Discovery',19'Description' => %q{20This module can be used to obtain information from the Remote21Management Interface DCERPC service.22},23'Author' => 'hdm',24'License' => MSF_LICENSE,25'Notes' => {26'Stability' => [CRASH_SAFE],27'SideEffects' => [],28'Reliability' => []29}30)3132register_options(33[34Opt::RPORT(135)35]36)37end3839# Obtain information about a single host40def run_host(ip)41ids = dcerpc_mgmt_inq_if_ids(rport)42return unless ids4344ids.each do |id|45print_status("UUID #{id[0]} v#{id[1]}")4647reportdata = ''4849stats = dcerpc_mgmt_inq_if_stats(rport)50if stats51print_status("\t stats: " + stats.map { |i| '0x%.8x' % i }.join(', '))52reportdata << 'stats: ' + stats.map { |i| '0x%.8x' % i }.join(', ') + ' '53end5455live = dcerpc_mgmt_is_server_listening(rport)56if live57print_status("\t listening: %.8x" % live)58# reportdata << "listening: %.8x" % live + " "59end6061dead = dcerpc_mgmt_stop_server_listening(rport)62if dead63print_status("\t killed: %.8x" % dead)64# reportdata << "killed: %.8x" % dead + " "65end6667princ = dcerpc_mgmt_inq_princ_name(rport)68if princ69print_status("\t name: #{princ.unpack('H*')[0]}")70# reportdata << "name: #{princ.unpack("H*")[0]}"71end7273report_note(74host: ip,75proto: 'tcp',76port: datastore['RPORT'],77type: "DCERPC UUID #{id[0]} v#{id[1]}",78data: { report_data: reportdata }79)80end81rescue ::Interrupt82raise $ERROR_INFO83rescue StandardError => e84print_error("Error: #{e}")85end86end878889