Fixed auxiliarytarget issue, updated frame.rb to handle on-demand module loading
git-svn-id: file:///home/svn/incoming/trunk@3551 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
0b1d97f653
commit
c0a8b6cf22
|
@ -0,0 +1,48 @@
|
|||
Auxiliary Module Design
|
||||
-----------------------
|
||||
|
||||
The goal of this document is to define the requirements and basic
|
||||
implementation of Metasploit v3.0 Auxiliary Modules. Auxiliary modules have a
|
||||
unique role in the Framework in that they can do just about anything.
|
||||
Auxiliary modules work similar to exploits, in that the user selects a module,
|
||||
configures, and launches it, but differs in that they do not execute arbitrary
|
||||
code on target systems.
|
||||
|
||||
|
||||
Design Goals
|
||||
------------
|
||||
|
||||
Auxiliary modules should be capable of performing reconnaisance activities,
|
||||
such as sending probes or listening to the network, and exporting the data
|
||||
into a persistent storage system accessible to the rest of the Framework. Not
|
||||
all auxiliary modules produce this type of data, some may perform intrusive
|
||||
actions, such as file retrieval or modifying access credentials.
|
||||
|
||||
An Auxiliary module has the ability to define new commands and then process
|
||||
these commands. Any user interface that sypports Auxiliary modules needs to
|
||||
take into account this fact and allow these optional commands to be accessed.
|
||||
|
||||
Unlike exploits, auxiliary modules do not use Targets, instead they support
|
||||
what we call Actions. An Action is an option, that when set, causes the
|
||||
auxiliary module to perform a selected task. Between the extensible command
|
||||
set and the Actions system, a single auxiliary module is capable performing an
|
||||
almost infinite number of tasks.
|
||||
|
||||
An example would be a module that performs various tasks against a Microsoft
|
||||
SQL Server. This module would only support the default command of 'run', but
|
||||
could allow the user to send a UDP probe and display the data, perform an
|
||||
account brute force, or scan all open ports for an exposed MSSQL DCERPC
|
||||
interface.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Storage
|
||||
-------
|
||||
|
||||
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
|
@ -9,12 +9,11 @@ class Msf::Module::AuxiliaryAction
|
|||
|
||||
|
||||
#
|
||||
# Serialize from an array to a Target instance.
|
||||
# Serialize from an array to an Action instance.
|
||||
#
|
||||
def self.from_a(ary)
|
||||
return nil if (ary.length < 2)
|
||||
|
||||
self.new(ary.shift, ary.shift)
|
||||
return nil if ary.nil?
|
||||
self.new(*ary)
|
||||
end
|
||||
|
||||
#
|
||||
|
@ -24,7 +23,9 @@ class Msf::Module::AuxiliaryAction
|
|||
Rex::Transformer.transform(src, Array, [ self, String ], 'AuxiliaryAction')
|
||||
end
|
||||
|
||||
|
||||
#
|
||||
# Creates a new action definition
|
||||
#
|
||||
def initialize(name, opts={})
|
||||
self.name = name
|
||||
self.opts = opts
|
||||
|
|
|
@ -201,13 +201,13 @@ class MyFrame < ::Wx::Frame
|
|||
n_exploits = @m_tree_modules_exploits.append_item(n_modules, 'Standard', FRAME_ICONS_EXPLOITS)
|
||||
n_auxiliary = @m_tree_modules_exploits.append_item(n_modules, 'Auxiliary', FRAME_ICONS_AUXILIARY)
|
||||
|
||||
framework.exploits.sort.each do |mod, obj|
|
||||
framework.exploits.each_module do |mod, obj|
|
||||
next if not mod.match(filter)
|
||||
oid = @m_tree_modules_exploits.append_item(n_exploits, obj.new.name, FRAME_ICONS_MOD_EXPLOIT)
|
||||
@m_tree_modules_items[oid] = obj
|
||||
end
|
||||
|
||||
framework.auxiliary.sort.each do |mod, obj|
|
||||
framework.auxiliary.each_module do |mod, obj|
|
||||
next if not mod.match(filter)
|
||||
oid = @m_tree_modules_exploits.append_item(n_auxiliary, obj.new.name, FRAME_ICONS_MOD_AUXILIARY)
|
||||
@m_tree_modules_items[oid] = obj
|
||||
|
@ -224,19 +224,19 @@ class MyFrame < ::Wx::Frame
|
|||
n_nops = @m_tree_modules_payloads.append_item(n_modules, 'Nops', FRAME_ICONS_NOPS)
|
||||
|
||||
|
||||
framework.payloads.sort.each do |mod, obj|
|
||||
framework.payloads.each_module do |mod, obj|
|
||||
next if not mod.match(filter)
|
||||
oid = @m_tree_modules_payloads.append_item(n_payloads, obj.new.name, FRAME_ICONS_MOD_PAYLOAD)
|
||||
@m_tree_modules_items[oid] = obj
|
||||
end
|
||||
|
||||
framework.encoders.sort.each do |mod, obj|
|
||||
framework.encoders.each_module do |mod, obj|
|
||||
next if not mod.match(filter)
|
||||
oid = @m_tree_modules_payloads.append_item(n_encoders, obj.new.name, FRAME_ICONS_MOD_ENCODER)
|
||||
@m_tree_modules_items[oid] = obj
|
||||
end
|
||||
|
||||
framework.nops.sort.each do |mod, obj|
|
||||
framework.nops.each_module do |mod, obj|
|
||||
next if not mod.match(filter)
|
||||
oid = @m_tree_modules_payloads.append_item(n_nops, obj.new.name, FRAME_ICONS_MOD_NOP)
|
||||
@m_tree_modules_items[oid] = obj
|
||||
|
|
Loading…
Reference in New Issue