ruby/bin/metasploit-aggregator
#!/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