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 ⇒ Msf::FeatureManager
The framework instance’s feature manager.
-
#history_manager ⇒ Rex::Ui::Text::Shell::HistoryManager
The framework instance’s history manager, responsible for managing command history in different contexts.
-
#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 88 89 90 91 |
# 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.history_manager = Rex::Ui::Text::Shell::HistoryManager.new self.features = FeatureManager.instance self.features.load_config 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 # 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.
191 192 193 |
# File 'lib/msf/core/framework.rb', line 191 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.
169 170 171 |
# File 'lib/msf/core/framework.rb', line 169 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.
186 187 188 |
# File 'lib/msf/core/framework.rb', line 186 def browser_profiles @browser_profiles end |
#datastore ⇒ Object
The global framework datastore that can be used by modules.
163 164 165 |
# File 'lib/msf/core/framework.rb', line 163 def datastore @datastore end |
#db ⇒ Metasploit::Framework::DataService::DataProxy
The framework instance’s data service proxy
207 208 209 210 211 212 213 |
# File 'lib/msf/core/framework.rb', line 207 def db return @db if @db synchronize { @db ||= get_db } end |
#events ⇒ Object
Event management interface for registering event handler subscribers and for interacting with the correlation engine.
154 155 156 |
# File 'lib/msf/core/framework.rb', line 154 def events @events end |
#features ⇒ Msf::FeatureManager
The framework instance’s feature manager. The feature manager is responsible for configuring feature flags that can change characteristics of framework.
196 197 198 |
# File 'lib/msf/core/framework.rb', line 196 def features @features end |
#history_manager ⇒ Rex::Ui::Text::Shell::HistoryManager
The framework instance’s history manager, responsible for managing command history in different contexts
201 202 203 |
# File 'lib/msf/core/framework.rb', line 201 def history_manager @history_manager end |
#jobs ⇒ Object
Background job management specific to things spawned from this instance of the framework.
174 175 176 |
# File 'lib/msf/core/framework.rb', line 174 def jobs @jobs end |
#modules ⇒ Object
Module manager that contains information about all loaded modules, regardless of type.
159 160 161 |
# File 'lib/msf/core/framework.rb', line 159 def modules @modules end |
#options ⇒ Hash (protected)
Options passed to #initialize
279 280 281 |
# File 'lib/msf/core/framework.rb', line 279 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.
180 181 182 |
# File 'lib/msf/core/framework.rb', line 180 def plugins @plugins end |
Instance Method Details
#auxiliary ⇒ Object
Returns the module set for auxiliary modules
128 129 130 |
# File 'lib/msf/core/framework.rb', line 128 def auxiliary return modules.auxiliary end |
#eicar_corrupted? ⇒ Boolean
EICAR Canary
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 |
# File 'lib/msf/core/framework.rb', line 257 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.
100 101 102 |
# File 'lib/msf/core/framework.rb', line 100 def encoders return modules.encoders end |
#evasion ⇒ Object
139 140 141 |
# File 'lib/msf/core/framework.rb', line 139 def evasion return modules.evasion end |
#exploits ⇒ Object
Returns the module set for exploits.
107 108 109 |
# File 'lib/msf/core/framework.rb', line 107 def exploits return modules.exploits end |
#inspect ⇒ Object
93 94 95 |
# File 'lib/msf/core/framework.rb', line 93 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
114 115 116 |
# File 'lib/msf/core/framework.rb', line 114 def nops return modules.nops end |
#payloads ⇒ Object
Returns the module set for payloads
121 122 123 |
# File 'lib/msf/core/framework.rb', line 121 def payloads return modules.payloads end |
#post ⇒ Object
Returns the module set for post modules
135 136 137 |
# File 'lib/msf/core/framework.rb', line 135 def post return modules.post end |
#search(search_string) ⇒ Object
249 250 251 252 |
# File 'lib/msf/core/framework.rb', line 249 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.
219 220 221 222 223 224 225 |
# File 'lib/msf/core/framework.rb', line 219 def sessions return @sessions if @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
231 232 233 234 235 236 237 |
# File 'lib/msf/core/framework.rb', line 231 def threads return @threads if @threads synchronize { @threads ||= Msf::ThreadManager.new(self) } end |
#threads? ⇒ true, false
Whether #threads has been initialized
243 244 245 246 247 |
# File 'lib/msf/core/framework.rb', line 243 def threads? synchronize { instance_variable_defined? :@threads } end |
#version ⇒ Object
Returns the framework version in Major.Minor format.
146 147 148 |
# File 'lib/msf/core/framework.rb', line 146 def version Version end |