2012-06-29 00:18:28 -05:00
|
|
|
# -*- coding: binary -*-
|
2005-04-10 09:20:47 +00:00
|
|
|
|
2005-07-09 21:18:49 +00:00
|
|
|
require 'rex/post/meterpreter/object_aliases'
|
|
|
|
|
require 'rex/post/meterpreter/extension'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/constants'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/tlv'
|
2020-05-04 15:06:34 +10:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/command_ids'
|
2005-07-09 21:18:49 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/fs/dir'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/fs/file'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/fs/file_stat'
|
2015-10-29 07:28:33 +10:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/fs/mount'
|
2013-04-07 23:03:43 +01:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/net/resolve'
|
2005-07-09 21:18:49 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/net/config'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/net/socket'
|
2005-07-22 02:56:17 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/sys/config'
|
2005-07-09 21:18:49 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/sys/process'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/sys/registry'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/sys/event_log'
|
|
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/sys/power'
|
2010-09-14 23:28:52 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/railgun/railgun'
|
2005-07-09 21:18:49 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/ui'
|
2010-11-11 22:36:54 +00:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/webcam/webcam'
|
2016-07-19 10:25:47 -05:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/mic/mic'
|
2018-05-19 18:10:16 +02:00
|
|
|
require 'rex/post/meterpreter/extensions/stdapi/audio_output/audio_output'
|
2005-04-10 09:20:47 +00:00
|
|
|
|
|
|
|
|
module Rex
|
|
|
|
|
module Post
|
|
|
|
|
module Meterpreter
|
|
|
|
|
module Extensions
|
|
|
|
|
module Stdapi
|
|
|
|
|
|
|
|
|
|
###
|
|
|
|
|
#
|
2005-11-15 05:22:13 +00:00
|
|
|
# Standard ruby interface to remote entities for meterpreter. It provides
|
|
|
|
|
# basic access to files, network, system, and other properties of the remote
|
|
|
|
|
# machine that are fairly universal.
|
2005-04-10 09:20:47 +00:00
|
|
|
#
|
|
|
|
|
###
|
|
|
|
|
class Stdapi < Extension
|
2005-11-15 05:22:13 +00:00
|
|
|
|
2020-05-04 13:32:08 +10:00
|
|
|
def self.extension_id
|
|
|
|
|
EXTENSION_ID_STDAPI
|
|
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Initializes an instance of the standard API extension.
|
|
|
|
|
#
|
2005-04-10 09:20:47 +00:00
|
|
|
def initialize(client)
|
|
|
|
|
super(client, 'stdapi')
|
2005-04-10 17:08:27 +00:00
|
|
|
|
2013-09-05 14:59:41 -05:00
|
|
|
# Alias the following things on the client object so that they
|
|
|
|
|
# can be directly referenced
|
|
|
|
|
client.register_extension_aliases(
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
'name' => 'fs',
|
|
|
|
|
'ext' => ObjectAliases.new(
|
|
|
|
|
{
|
|
|
|
|
'dir' => self.dir,
|
|
|
|
|
'file' => self.file,
|
2015-10-29 07:28:33 +10:00
|
|
|
'filestat' => self.filestat,
|
|
|
|
|
'mount' => Fs::Mount.new(client)
|
2013-09-05 14:59:41 -05:00
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'name' => 'sys',
|
|
|
|
|
'ext' => ObjectAliases.new(
|
|
|
|
|
{
|
|
|
|
|
'config' => Sys::Config.new(client),
|
|
|
|
|
'process' => self.process,
|
|
|
|
|
'registry' => self.registry,
|
|
|
|
|
'eventlog' => self.eventlog,
|
|
|
|
|
'power' => self.power
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'name' => 'net',
|
|
|
|
|
'ext' => ObjectAliases.new(
|
|
|
|
|
{
|
|
|
|
|
'config' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Config.new(client),
|
|
|
|
|
'socket' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket.new(client),
|
|
|
|
|
'resolve' => Rex::Post::Meterpreter::Extensions::Stdapi::Net::Resolve.new(client)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'name' => 'railgun',
|
|
|
|
|
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Railgun::Railgun.new(client)
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
'name' => 'webcam',
|
|
|
|
|
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Webcam::Webcam.new(client)
|
|
|
|
|
},
|
2016-07-19 10:25:47 -05:00
|
|
|
{
|
2017-06-29 16:05:12 -05:00
|
|
|
'name' => 'mic',
|
|
|
|
|
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::Mic::Mic.new(client)
|
2016-07-19 10:25:47 -05:00
|
|
|
},
|
2018-05-19 18:10:16 +02:00
|
|
|
{
|
|
|
|
|
'name' => 'audio_output',
|
|
|
|
|
'ext' => Rex::Post::Meterpreter::Extensions::Stdapi::AudioOutput::AudioOutput.new(client)
|
|
|
|
|
},
|
2013-09-05 14:59:41 -05:00
|
|
|
{
|
|
|
|
|
'name' => 'ui',
|
|
|
|
|
'ext' => UI.new(client)
|
|
|
|
|
}
|
2005-04-17 03:29:12 +00:00
|
|
|
|
2005-04-15 06:23:59 +00:00
|
|
|
])
|
2005-04-10 09:20:47 +00:00
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Sets the client instance on a duplicated copy of the supplied class.
|
|
|
|
|
#
|
2005-04-10 09:20:47 +00:00
|
|
|
def brand(klass)
|
|
|
|
|
klass = klass.dup
|
|
|
|
|
klass.client = self.client
|
|
|
|
|
return klass
|
|
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the Dir class.
|
|
|
|
|
#
|
2005-04-11 01:59:45 +00:00
|
|
|
def dir
|
2005-04-17 07:17:52 +00:00
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::Dir)
|
2005-04-11 01:59:45 +00:00
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the File class.
|
|
|
|
|
#
|
2005-04-11 03:37:02 +00:00
|
|
|
def file
|
2005-04-17 07:17:52 +00:00
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::File)
|
2005-04-11 03:37:02 +00:00
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the FileStat class.
|
|
|
|
|
#
|
2005-04-11 03:06:56 +00:00
|
|
|
def filestat
|
2005-04-17 07:17:52 +00:00
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Fs::FileStat)
|
2005-04-11 03:06:56 +00:00
|
|
|
end
|
|
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the Process class.
|
|
|
|
|
#
|
2005-04-10 09:20:47 +00:00
|
|
|
def process
|
2005-04-15 06:23:59 +00:00
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Process)
|
2005-04-10 09:20:47 +00:00
|
|
|
end
|
2005-04-12 05:53:29 +00:00
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the Registry class.
|
|
|
|
|
#
|
2005-04-10 10:31:38 +00:00
|
|
|
def registry
|
2005-04-15 06:23:59 +00:00
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Registry)
|
2005-04-10 10:31:38 +00:00
|
|
|
end
|
2005-06-14 04:08:34 +00:00
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the EventLog class.
|
|
|
|
|
#
|
2005-06-14 04:08:34 +00:00
|
|
|
def eventlog
|
|
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::EventLog)
|
|
|
|
|
end
|
2005-07-08 02:01:15 +00:00
|
|
|
|
2005-11-15 05:22:13 +00:00
|
|
|
#
|
|
|
|
|
# Returns a copy of the Power class.
|
|
|
|
|
#
|
2005-07-08 02:01:15 +00:00
|
|
|
def power
|
|
|
|
|
brand(Rex::Post::Meterpreter::Extensions::Stdapi::Sys::Power)
|
|
|
|
|
end
|
2005-04-10 09:20:47 +00:00
|
|
|
end
|
|
|
|
|
|
2011-11-20 11:39:27 +11:00
|
|
|
end; end; end; end; end
|