rapid7/metasploit-aggregator

View on GitHub
ruby/bin/metasploit-aggregator

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby

require 'bundler/setup'
require 'metasploit/aggregator'
require 'metasploit/aggregator/cable'
require 'metasploit/aggregator/logger'

admin_host = '127.0.0.1'
admin_port = 2447
# cert_file = './cert.pem'
# cert_string = File.new(cert_file).read
cert_string = nil

server = Metasploit::Aggregator::GrpcServer.new(admin_host, admin_port)
Logger.log "Starting administration service on #{admin_host}:#{admin_port}"

loop do
  command = $stdin.gets
  if command.chomp == 'exit'
    exit
  elsif command.chomp == 'pause'
    Logger.log "paused"
  elsif command.chomp == 'stop'
    server.stop
  elsif command.chomp == 'park'
    client.release_session($stdin.gets.chomp)
  elsif command.chomp == 'details'
    client = Metasploit::Aggregator::ServerProxy.new(admin_host, admin_port)
    sessions = client.sessions
    sessions.each_pair do |payload, _console|
      details = client.session_details(payload)
      $stdout.puts payload
      details.each_pair do |key, attr|
        $stdout.print "\t"
        $stdout.print "#{key}:"
        $stdout.puts "#{attr}"
      end
    end
  end
end