Class: Msf::Framework
- Inherits:
-
Object
- Object
- Msf::Framework
- Includes:
- MonitorMixin
- Defined in:
- lib/msf/core/framework.rb
Overview
This class is the primary context that modules, scripts, and user interfaces interact with. It ties everything together.
Defined Under Namespace
Modules: Offspring
Constant Summary collapse
- Major =
Versioning information
Metasploit::Framework::Version::MAJOR
- Minor =
Metasploit::Framework::Version::MINOR
- Point =
Metasploit::Framework::Version::PATCH
- Release =
"-#{Metasploit::Framework::Version::PRERELEASE}"
- Version =
Metasploit::Framework::VERSION
- Revision =
"$Revision$"
Instance Attribute Summary collapse
-
#analyze ⇒ Object
The framework instance’s analysis utility.
-
#auxmgr ⇒ Object
The framework instance’s aux manager.
-
#browser_profiles ⇒ Object
The framework instance’s browser profile store.
-
#datastore ⇒ Object
The global framework datastore that can be used by modules.
-
#db ⇒ Metasploit::Framework::DataService::DataProxy
The framework instance’s data service proxy.
-
#events ⇒ Object
Event management interface for registering event handler subscribers and for interacting with the correlation engine.
-
#features ⇒ Object
The framework instance’s feature manager.
-
#jobs ⇒ Object
Background job management specific to things spawned from this instance of the framework.
-
#modules ⇒ Object
Module manager that contains information about all loaded modules, regardless of type.
-
#options ⇒ Hash
protected
Options passed to #initialize.
-
#plugins ⇒ Object
The framework instance’s plugin manager.
Instance Method Summary collapse
-
#auxiliary ⇒ Object
Returns the module set for auxiliary modules.
-
#eicar_corrupted? ⇒ Boolean
EICAR Canary.
-
#encoders ⇒ Object
Returns the module set for encoders.
- #evasion ⇒ Object
-
#exploits ⇒ Object
Returns the module set for exploits.
-
#initialize(options = {}) ⇒ Framework
constructor
Creates an instance of the framework context.
- #inspect ⇒ Object
-
#nops ⇒ Object
Returns the module set for nops.
-
#payloads ⇒ Object
Returns the module set for payloads.
-
#post ⇒ Object
Returns the module set for post modules.
- #search(search_string) ⇒ Object
-
#sessions ⇒ Msf::SessionManager
Session manager that tracks sessions associated with this framework instance over the course of their lifetime.
-
#threads ⇒ Msf::ThreadManager
The framework instance’s thread manager.
-
#threads? ⇒ true, false
Whether #threads has been initialized.
-
#version ⇒ Object
Returns the framework version in Major.Minor format.
Constructor Details
#initialize(options = {}) ⇒ Framework
Creates an instance of the framework context.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/msf/core/framework.rb', line 57 def initialize(={}) self. = # call super to initialize MonitorMixin. #synchronize won't work without this. super() # Allow specific module types to be loaded types = [:module_types] || Msf::MODULE_TYPES self.events = EventDispatcher.new(self) self.modules = ModuleManager.new(self,types) self.datastore = DataStore.new self.jobs = Rex::JobContainer.new self.analyze = Analyze.new(self) self.plugins = PluginManager.new(self) self.browser_profiles = Hash.new self.features = FeatureManager.instance # Configure the thread factory Rex::ThreadFactory.provider = Metasploit::Framework::ThreadFactoryProvider.new(framework: self) # Configure the SSL certificate generator require 'msf/core/cert_provider' Rex::Socket::Ssl.cert_provider = Msf::Ssl::CertProvider subscriber = FrameworkEventSubscriber.new(self) events.add_exploit_subscriber(subscriber) events.add_session_subscriber(subscriber) events.add_general_subscriber(subscriber) events.add_db_subscriber(subscriber) events.add_ui_subscriber(subscriber) end |
Instance Attribute Details
#analyze ⇒ Object
The framework instance’s analysis utility. Provide method to analyze framework objects to offer related objects/actions available.
187 188 189 |
# File 'lib/msf/core/framework.rb', line 187 def analyze @analyze end |
#auxmgr ⇒ Object
The framework instance’s aux manager. The aux manager is responsible for collecting and cataloging all aux information that comes in from aux modules.
165 166 167 |
# File 'lib/msf/core/framework.rb', line 165 def auxmgr @auxmgr end |
#browser_profiles ⇒ Object
The framework instance’s browser profile store. These profiles are generated by client-side modules and need to be shared across different contexts.
182 183 184 |
# File 'lib/msf/core/framework.rb', line 182 def browser_profiles @browser_profiles end |
#datastore ⇒ Object
The global framework datastore that can be used by modules.
159 160 161 |
# File 'lib/msf/core/framework.rb', line 159 def datastore @datastore end |
#db ⇒ Metasploit::Framework::DataService::DataProxy
The framework instance’s data service proxy
199 200 201 202 203 |
# File 'lib/msf/core/framework.rb', line 199 def db synchronize { @db ||= get_db } end |
#events ⇒ Object
Event management interface for registering event handler subscribers and for interacting with the correlation engine.
150 151 152 |
# File 'lib/msf/core/framework.rb', line 150 def events @events end |
#features ⇒ Object
The framework instance’s feature manager. The feature manager is responsible for configuring feature flags that can change characteristics of framework.
192 193 194 |
# File 'lib/msf/core/framework.rb', line 192 def features @features end |
#jobs ⇒ Object
Background job management specific to things spawned from this instance of the framework.
170 171 172 |
# File 'lib/msf/core/framework.rb', line 170 def jobs @jobs end |
#modules ⇒ Object
Module manager that contains information about all loaded modules, regardless of type.
155 156 157 |
# File 'lib/msf/core/framework.rb', line 155 def modules @modules end |
#options ⇒ Hash (protected)
Options passed to #initialize
265 266 267 |
# File 'lib/msf/core/framework.rb', line 265 def @options end |
#plugins ⇒ Object
The framework instance’s plugin manager. The plugin manager is responsible for exposing an interface that allows for the loading and unloading of plugins.
176 177 178 |
# File 'lib/msf/core/framework.rb', line 176 def plugins @plugins end |
Instance Method Details
#auxiliary ⇒ Object
Returns the module set for auxiliary modules
124 125 126 |
# File 'lib/msf/core/framework.rb', line 124 def auxiliary return modules.auxiliary end |
#eicar_corrupted? ⇒ Boolean
EICAR Canary
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/msf/core/framework.rb', line 243 def eicar_corrupted? path = ::File.(::File.join( ::File.dirname(__FILE__),"..", "..", "..", "data", "eicar.com") ) return true unless ::File.exist?(path) data = ::File.read(path, mode: 'rb') return true unless Digest::SHA1.hexdigest(data) == "3395856ce81f2b7382dee72602f798b642f14140" false # If anything goes wrong assume AV got us rescue ::Exception true end |
#encoders ⇒ Object
Returns the module set for encoders.
96 97 98 |
# File 'lib/msf/core/framework.rb', line 96 def encoders return modules.encoders end |
#evasion ⇒ Object
135 136 137 |
# File 'lib/msf/core/framework.rb', line 135 def evasion return modules.evasion end |
#exploits ⇒ Object
Returns the module set for exploits.
103 104 105 |
# File 'lib/msf/core/framework.rb', line 103 def exploits return modules.exploits end |
#inspect ⇒ Object
89 90 91 |
# File 'lib/msf/core/framework.rb', line 89 def inspect "#<Framework (#{sessions.length} sessions, #{jobs.length} jobs, #{plugins.length} plugins#{db.active ? ", #{db.driver} database active" : ""})>" end |
#nops ⇒ Object
Returns the module set for nops
110 111 112 |
# File 'lib/msf/core/framework.rb', line 110 def nops return modules.nops end |
#payloads ⇒ Object
Returns the module set for payloads
117 118 119 |
# File 'lib/msf/core/framework.rb', line 117 def payloads return modules.payloads end |
#post ⇒ Object
Returns the module set for post modules
131 132 133 |
# File 'lib/msf/core/framework.rb', line 131 def post return modules.post end |
#search(search_string) ⇒ Object
235 236 237 238 |
# File 'lib/msf/core/framework.rb', line 235 def search(search_string) search_params = Msf::Modules::Metadata::Search.parse_search_string(search_string) Msf::Modules::Metadata::Cache.instance.find(search_params) end |
#sessions ⇒ Msf::SessionManager
Session manager that tracks sessions associated with this framework instance over the course of their lifetime.
209 210 211 212 213 |
# File 'lib/msf/core/framework.rb', line 209 def sessions synchronize { @sessions ||= Msf::SessionManager.new(self) } end |
#threads ⇒ Msf::ThreadManager
The framework instance’s thread manager. The thread manager provides a cleaner way to manage spawned threads
219 220 221 222 223 |
# File 'lib/msf/core/framework.rb', line 219 def threads synchronize { @threads ||= Msf::ThreadManager.new(self) } end |
#threads? ⇒ true, false
Whether #threads has been initialized
229 230 231 232 233 |
# File 'lib/msf/core/framework.rb', line 229 def threads? synchronize { instance_variable_defined? :@threads } end |
#version ⇒ Object
Returns the framework version in Major.Minor format.
142 143 144 |
# File 'lib/msf/core/framework.rb', line 142 def version Version end |