Class: Msf::Module::Target
- Inherits:
-
Object
- Object
- Msf::Module::Target
- Defined in:
- lib/msf/core/module/target.rb
Overview
A target for an exploit.
Defined Under Namespace
Classes: Bruteforce
Instance Attribute Summary collapse
-
#arch ⇒ Object
The architectures, if any, that the target is specific to.
-
#bruteforce ⇒ Object
The bruteforce target information that will be non-nil if a Bruteforce option is passed to the constructor of the class.
-
#default_options ⇒ Object
DefaultOptions hash to be imported into the datastore.
-
#name ⇒ Object
The name of the target (E.g. Windows XP SP0/SP1).
-
#opts ⇒ Object
The target-specific options, like payload settings and other stuff like that.
-
#platform ⇒ Object
The platforms that this target is for.
-
#ret ⇒ Object
An alias for the target ‘Ret’ option.
-
#save_registers ⇒ Object
The list of registers that need to be saved.
Class Method Summary collapse
-
.from_a(ary) ⇒ Object
Serialize from an array to a Target instance.
-
.transform(src) ⇒ Object
Transforms the supplied source into an array of Targets.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Index the options directly.
-
#bruteforce? ⇒ Boolean
Returns whether or not this is a bruteforce target, forces boolean result.
-
#initialize(name, opts) ⇒ Target
constructor
Initializes an instance of a bruteforce target from the supplied information.
-
#payload_append ⇒ Object
Payload append information for this target.
-
#payload_append_encoder ⇒ Object
Payload append encoder information for this target.
-
#payload_badchars ⇒ Object
The bad characters specific to this target for the payload.
-
#payload_disable_nops ⇒ Object
Whether NOP generation should be enabled or disabled.
-
#payload_encoder ⇒ Object
The payload encoder or encoders that can be used when generating the encoded payload (such as x86/shikata_ga_nai and so on).
-
#payload_encoder_options ⇒ Object
A hash of options that be initialized in the select encoder’s datastore that may be required as parameters for the encoding operation.
-
#payload_encoder_type ⇒ Object
The payload encoder type or types that can be used when generating the encoded payload (such as alphanum, unicode, xor, and so on).
-
#payload_extended_options ⇒ Object
Returns a hash of extended options that are applicable to payloads used against this particular target.
-
#payload_max_nops ⇒ Object
Payload max nops information for this target.
-
#payload_min_nops ⇒ Object
Payload min nops information for this target.
-
#payload_nop ⇒ Object
The payload NOP generator or generators that can be used when generating the encoded payload (such as x86/opty2 and so on).
-
#payload_prepend ⇒ Object
Payload prepend information for this target.
-
#payload_prepend_encoder ⇒ Object
Payload prepend encoder information for this target.
-
#payload_space ⇒ Object
Payload space information for this target.
-
#payload_stack_adjustment ⇒ Object
Payload stack adjustment information for this target.
Constructor Details
#initialize(name, opts) ⇒ Target
Initializes an instance of a bruteforce target from the supplied information. The hash of options that this constructor takes is as follows:
Platform
The platform(s) that this target is to operate against.
SaveRegisters
The registers that must be saved by NOP generators.
Arch
The architectures, if any, that this target is specific to (E.g. ARCH_X86).
Bruteforce
Settings specific to a target that supports brute forcing. See the BruteForce class.
Ret
The target-specific return address or addresses that will be used.
Payload
Payload-specific options, such as append, prepend, and other values that can be set on a per-exploit or per-target basis.
DefaultOptions
DefaultOptions hash to be imported into the datastore.
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/msf/core/module/target.rb', line 135 def initialize(name, opts) opts = {} unless opts self.name = name self.opts = opts self.save_registers = opts['SaveRegisters'] self.ret = opts['Ret'] self. = opts['DefaultOptions'] if opts['Platform'] self.platform = Msf::Module::PlatformList.transform(opts['Platform']) end if opts['Arch'] self.arch = Rex::Transformer.transform(opts['Arch'], Array, [String], 'Arch') end # Does this target have brute force information? if opts['Bruteforce'] self.bruteforce = Bruteforce.new(opts['Bruteforce']) end end |
Instance Attribute Details
#arch ⇒ Object
The architectures, if any, that the target is specific to.
302 303 304 |
# File 'lib/msf/core/module/target.rb', line 302 def arch @arch end |
#bruteforce ⇒ Object
The bruteforce target information that will be non-nil if a Bruteforce option is passed to the constructor of the class.
320 321 322 |
# File 'lib/msf/core/module/target.rb', line 320 def bruteforce @bruteforce end |
#default_options ⇒ Object
DefaultOptions hash to be imported into the datastore.
324 325 326 |
# File 'lib/msf/core/module/target.rb', line 324 def @default_options end |
#name ⇒ Object
The name of the target (E.g. Windows XP SP0/SP1)
294 295 296 |
# File 'lib/msf/core/module/target.rb', line 294 def name @name end |
#opts ⇒ Object
The target-specific options, like payload settings and other stuff like that.
307 308 309 |
# File 'lib/msf/core/module/target.rb', line 307 def opts @opts end |
#platform ⇒ Object
The platforms that this target is for.
298 299 300 |
# File 'lib/msf/core/module/target.rb', line 298 def platform @platform end |
#ret ⇒ Object
An alias for the target ‘Ret’ option.
311 312 313 |
# File 'lib/msf/core/module/target.rb', line 311 def ret @ret end |
#save_registers ⇒ Object
The list of registers that need to be saved.
315 316 317 |
# File 'lib/msf/core/module/target.rb', line 315 def save_registers @save_registers end |
Class Method Details
.from_a(ary) ⇒ Object
Serialize from an array to a Target instance.
86 87 88 89 90 |
# File 'lib/msf/core/module/target.rb', line 86 def self.from_a(ary) return nil if (ary.length < 2) self.new(ary.shift, ary.shift) end |
.transform(src) ⇒ Object
Transforms the supplied source into an array of Targets.
95 96 97 |
# File 'lib/msf/core/module/target.rb', line 95 def self.transform(src) Rex::Transformer.transform(src, Array, [ self, String ], 'Target') end |
Instance Method Details
#[](key) ⇒ Object
Index the options directly.
161 162 163 |
# File 'lib/msf/core/module/target.rb', line 161 def [](key) opts[key] end |
#bruteforce? ⇒ Boolean
Returns whether or not this is a bruteforce target, forces boolean result.
169 170 171 |
# File 'lib/msf/core/module/target.rb', line 169 def bruteforce? return (bruteforce != nil) end |
#payload_append ⇒ Object
Payload append information for this target.
196 197 198 |
# File 'lib/msf/core/module/target.rb', line 196 def payload_append opts['Payload'] ? opts['Payload']['Append'] : nil end |
#payload_append_encoder ⇒ Object
Payload append encoder information for this target.
210 211 212 |
# File 'lib/msf/core/module/target.rb', line 210 def payload_append_encoder opts['Payload'] ? opts['Payload']['AppendEncoder'] : nil end |
#payload_badchars ⇒ Object
The bad characters specific to this target for the payload.
182 183 184 |
# File 'lib/msf/core/module/target.rb', line 182 def payload_badchars opts['Payload'] ? opts['Payload']['BadChars'] : nil end |
#payload_disable_nops ⇒ Object
Whether NOP generation should be enabled or disabled
224 225 226 |
# File 'lib/msf/core/module/target.rb', line 224 def payload_disable_nops opts['Payload'] ? opts['Payload']['DisableNops'] : nil end |
#payload_encoder ⇒ Object
The payload encoder or encoders that can be used when generating the encoded payload (such as x86/shikata_ga_nai and so on).
253 254 255 |
# File 'lib/msf/core/module/target.rb', line 253 def payload_encoder opts['Payload'] ? opts['Payload']['Encoder'] : nil end |
#payload_encoder_options ⇒ Object
A hash of options that be initialized in the select encoder’s datastore that may be required as parameters for the encoding operation. This is particularly useful when a specific encoder type is being used (as specified by the EncoderType hash element).
279 280 281 |
# File 'lib/msf/core/module/target.rb', line 279 def opts['Payload'] ? opts['Payload']['EncoderOptions'] : nil end |
#payload_encoder_type ⇒ Object
The payload encoder type or types that can be used when generating the encoded payload (such as alphanum, unicode, xor, and so on).
269 270 271 |
# File 'lib/msf/core/module/target.rb', line 269 def payload_encoder_type opts['Payload'] ? opts['Payload']['EncoderType'] : nil end |
#payload_extended_options ⇒ Object
Returns a hash of extended options that are applicable to payloads used against this particular target.
287 288 289 |
# File 'lib/msf/core/module/target.rb', line 287 def opts['Payload'] ? opts['Payload']['ExtendedOptions'] : nil end |
#payload_max_nops ⇒ Object
Payload max nops information for this target.
231 232 233 |
# File 'lib/msf/core/module/target.rb', line 231 def payload_max_nops opts['Payload'] ? opts['Payload']['MaxNops'] : nil end |
#payload_min_nops ⇒ Object
Payload min nops information for this target.
238 239 240 |
# File 'lib/msf/core/module/target.rb', line 238 def payload_min_nops opts['Payload'] ? opts['Payload']['MinNops'] : nil end |
#payload_nop ⇒ Object
The payload NOP generator or generators that can be used when generating the encoded payload (such as x86/opty2 and so on).
261 262 263 |
# File 'lib/msf/core/module/target.rb', line 261 def payload_nop opts['Payload'] ? opts['Payload']['Nop'] : nil end |
#payload_prepend ⇒ Object
Payload prepend information for this target.
189 190 191 |
# File 'lib/msf/core/module/target.rb', line 189 def payload_prepend opts['Payload'] ? opts['Payload']['Prepend'] : nil end |
#payload_prepend_encoder ⇒ Object
Payload prepend encoder information for this target.
203 204 205 |
# File 'lib/msf/core/module/target.rb', line 203 def payload_prepend_encoder opts['Payload'] ? opts['Payload']['PrependEncoder'] : nil end |
#payload_space ⇒ Object
Payload space information for this target.
245 246 247 |
# File 'lib/msf/core/module/target.rb', line 245 def payload_space opts['Payload'] ? opts['Payload']['Space'] : nil end |
#payload_stack_adjustment ⇒ Object
Payload stack adjustment information for this target.
217 218 219 |
# File 'lib/msf/core/module/target.rb', line 217 def payload_stack_adjustment opts['Payload'] ? opts['Payload']['StackAdjustment'] : nil end |