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.
-
#dns_resolver ⇒ Object
DNS resolver for the framework.
-
#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 92 93 94 95 96 97 |
# 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 if .include?('CustomDnsResolver') && Msf::FeatureManager.instance.enabled?(Msf::FeatureManager::DNS) self.dns_resolver = ['CustomDnsResolver'] self.dns_resolver.set_framework(self) Rex::Socket._install_global_resolver(self.dns_resolver) end 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.
201 202 203 |
# File 'lib/msf/core/framework.rb', line 201 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.
179 180 181 |
# File 'lib/msf/core/framework.rb', line 179 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.
196 197 198 |
# File 'lib/msf/core/framework.rb', line 196 def browser_profiles @browser_profiles end |
#datastore ⇒ Object
The global framework datastore that can be used by modules.
173 174 175 |
# File 'lib/msf/core/framework.rb', line 173 def datastore @datastore end |
#db ⇒ Metasploit::Framework::DataService::DataProxy
The framework instance’s data service proxy
217 218 219 220 221 222 223 |
# File 'lib/msf/core/framework.rb', line 217 def db return @db if @db synchronize { @db ||= get_db } end |
#dns_resolver ⇒ Object
DNS resolver for the framework
159 160 161 |
# File 'lib/msf/core/framework.rb', line 159 def dns_resolver @dns_resolver end |
#events ⇒ Object
Event management interface for registering event handler subscribers and for interacting with the correlation engine.
164 165 166 |
# File 'lib/msf/core/framework.rb', line 164 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.
206 207 208 |
# File 'lib/msf/core/framework.rb', line 206 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
211 212 213 |
# File 'lib/msf/core/framework.rb', line 211 def history_manager @history_manager end |
#jobs ⇒ Object
Background job management specific to things spawned from this instance of the framework.
184 185 186 |
# File 'lib/msf/core/framework.rb', line 184 def jobs @jobs end |
#modules ⇒ Object
Module manager that contains information about all loaded modules, regardless of type.
169 170 171 |
# File 'lib/msf/core/framework.rb', line 169 def modules @modules end |
#options ⇒ Hash (protected)
Options passed to #initialize
289 290 291 |
# File 'lib/msf/core/framework.rb', line 289 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.
190 191 192 |
# File 'lib/msf/core/framework.rb', line 190 def plugins @plugins end |
Instance Method Details
#auxiliary ⇒ Object
Returns the module set for auxiliary modules
134 135 136 |
# File 'lib/msf/core/framework.rb', line 134 def auxiliary return modules.auxiliary end |
#eicar_corrupted? ⇒ Boolean
EICAR Canary
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/msf/core/framework.rb', line 267 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.
106 107 108 |
# File 'lib/msf/core/framework.rb', line 106 def encoders return modules.encoders end |
#evasion ⇒ Object
145 146 147 |
# File 'lib/msf/core/framework.rb', line 145 def evasion return modules.evasion end |
#exploits ⇒ Object
Returns the module set for exploits.
113 114 115 |
# File 'lib/msf/core/framework.rb', line 113 def exploits return modules.exploits end |
#inspect ⇒ Object
99 100 101 |
# File 'lib/msf/core/framework.rb', line 99 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
120 121 122 |
# File 'lib/msf/core/framework.rb', line 120 def nops return modules.nops end |
#payloads ⇒ Object
Returns the module set for payloads
127 128 129 |
# File 'lib/msf/core/framework.rb', line 127 def payloads return modules.payloads end |
#post ⇒ Object
Returns the module set for post modules
141 142 143 |
# File 'lib/msf/core/framework.rb', line 141 def post return modules.post end |
#search(search_string) ⇒ Object
259 260 261 262 |
# File 'lib/msf/core/framework.rb', line 259 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.
229 230 231 232 233 234 235 |
# File 'lib/msf/core/framework.rb', line 229 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
241 242 243 244 245 246 247 |
# File 'lib/msf/core/framework.rb', line 241 def threads return @threads if @threads synchronize { @threads ||= Msf::ThreadManager.new(self) } end |
#threads? ⇒ true, false
Whether #threads has been initialized
253 254 255 256 257 |
# File 'lib/msf/core/framework.rb', line 253 def threads? synchronize { instance_variable_defined? :@threads } end |
#version ⇒ Object
Returns the framework version in Major.Minor format.
152 153 154 |
# File 'lib/msf/core/framework.rb', line 152 def version Version end |