Module: Msf::Exploit::Seh
- Defined in:
- lib/msf/core/exploit/seh.rb
Overview
This mixin provides an interface to generating SEH registration records in a robust fashion using the Rex::Exploitation::Seh class.
Instance Method Summary collapse
- #generate_seh_payload(handler, opts = {}) ⇒ Object
- 
  
    
      #generate_seh_record(handler, opts = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Generates an SEH record with zero or more options. 
- 
  
    
      #initialize(info = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Creates an instance of an exploit that uses an SEH overwrite. 
Instance Method Details
#generate_seh_payload(handler, opts = {}) ⇒ Object
| 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # File 'lib/msf/core/exploit/seh.rb', line 53 def generate_seh_payload(handler, opts = {}) # The boilerplate this replaces always has 8 bytes for seh + addr seh_space = 8 + payload.nop_sled_size seh = Rex::Exploitation::Seh.new( payload_badchars, seh_space, opts['NopGenerator'] || nop_generator) # Generate the record rec = seh.generate_seh_record(handler, datastore['DynamicSehRecord']) # Append the payload, minus the nop sled that we replaced rec << payload.encoded.slice(payload.nop_sled_size, payload.encoded.length) end | 
#generate_seh_record(handler, opts = {}) ⇒ Object
Generates an SEH record with zero or more options. The supported options are:
NopGenerator
  The NOP generator instance to use, if any.
Space
  The amount of room the SEH record generator has to play with for
  random padding.  This should be derived from the maximum amount of
  space available to the exploit for payloads minus the current payload
  size.
| 43 44 45 46 47 48 49 50 51 | # File 'lib/msf/core/exploit/seh.rb', line 43 def generate_seh_record(handler, opts = {}) seh = Rex::Exploitation::Seh.new( payload_badchars, opts['Space'] || payload_space, opts['NopGenerator'] || nop_generator) # Generate the record seh.generate_seh_record(handler, datastore['DynamicSehRecord']) end | 
#initialize(info = {}) ⇒ Object
Creates an instance of an exploit that uses an SEH overwrite.
| 17 18 19 20 21 22 23 24 25 26 | # File 'lib/msf/core/exploit/seh.rb', line 17 def initialize(info = {}) super # Register an advanced option that allows users to specify whether or # not a dynamic SEH record should be used. ( [ OptBool.new('DynamicSehRecord', [ false, "Generate a dynamic SEH record (more stealthy)", false ]) ], Msf::Exploit::Seh) end |