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 98 |
# 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.datastore.(DataStore::GLOBAL_OPTION_DEFINITIONS) 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.
202 203 204 |
# File 'lib/msf/core/framework.rb', line 202 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.
180 181 182 |
# File 'lib/msf/core/framework.rb', line 180 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.
197 198 199 |
# File 'lib/msf/core/framework.rb', line 197 def browser_profiles @browser_profiles end |
#datastore ⇒ Object
The global framework datastore that can be used by modules.
174 175 176 |
# File 'lib/msf/core/framework.rb', line 174 def datastore @datastore end |
#db ⇒ Metasploit::Framework::DataService::DataProxy
The framework instance’s data service proxy
218 219 220 221 222 223 224 |
# File 'lib/msf/core/framework.rb', line 218 def db return @db if @db synchronize { @db ||= get_db } end |
#dns_resolver ⇒ Object
DNS resolver for the framework
160 161 162 |
# File 'lib/msf/core/framework.rb', line 160 def dns_resolver @dns_resolver end |
#events ⇒ Object
Event management interface for registering event handler subscribers and for interacting with the correlation engine.
165 166 167 |
# File 'lib/msf/core/framework.rb', line 165 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.
207 208 209 |
# File 'lib/msf/core/framework.rb', line 207 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
212 213 214 |
# File 'lib/msf/core/framework.rb', line 212 def history_manager @history_manager end |
#jobs ⇒ Object
Background job management specific to things spawned from this instance of the framework.
185 186 187 |
# File 'lib/msf/core/framework.rb', line 185 def jobs @jobs end |
#modules ⇒ Object
Module manager that contains information about all loaded modules, regardless of type.
170 171 172 |
# File 'lib/msf/core/framework.rb', line 170 def modules @modules end |
#options ⇒ Hash (protected)
Options passed to #initialize
290 291 292 |
# File 'lib/msf/core/framework.rb', line 290 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.
191 192 193 |
# File 'lib/msf/core/framework.rb', line 191 def plugins @plugins end |
Instance Method Details
#auxiliary ⇒ Object
Returns the module set for auxiliary modules
135 136 137 |
# File 'lib/msf/core/framework.rb', line 135 def auxiliary return modules.auxiliary end |
#eicar_corrupted? ⇒ Boolean
EICAR Canary
268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 |
# File 'lib/msf/core/framework.rb', line 268 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.
107 108 109 |
# File 'lib/msf/core/framework.rb', line 107 def encoders return modules.encoders end |
#evasion ⇒ Object
146 147 148 |
# File 'lib/msf/core/framework.rb', line 146 def evasion return modules.evasion end |
#exploits ⇒ Object
Returns the module set for exploits.
114 115 116 |
# File 'lib/msf/core/framework.rb', line 114 def exploits return modules.exploits end |
#inspect ⇒ Object
100 101 102 |
# File 'lib/msf/core/framework.rb', line 100 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
121 122 123 |
# File 'lib/msf/core/framework.rb', line 121 def nops return modules.nops end |
#payloads ⇒ Object
Returns the module set for payloads
128 129 130 |
# File 'lib/msf/core/framework.rb', line 128 def payloads return modules.payloads end |
#post ⇒ Object
Returns the module set for post modules
142 143 144 |
# File 'lib/msf/core/framework.rb', line 142 def post return modules.post end |
#search(search_string) ⇒ Object
260 261 262 263 |
# File 'lib/msf/core/framework.rb', line 260 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.
230 231 232 233 234 235 236 |
# File 'lib/msf/core/framework.rb', line 230 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
242 243 244 245 246 247 248 |
# File 'lib/msf/core/framework.rb', line 242 def threads return @threads if @threads synchronize { @threads ||= Msf::ThreadManager.new(self) } end |
#threads? ⇒ true, false
Whether #threads has been initialized
254 255 256 257 258 |
# File 'lib/msf/core/framework.rb', line 254 def threads? synchronize { instance_variable_defined? :@threads } end |
#version ⇒ Object
Returns the framework version in Major.Minor format.
153 154 155 |
# File 'lib/msf/core/framework.rb', line 153 def version Version end |