## # This module requires Metasploit: http://metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'thread' require 'msf/core' require 'rex/proto/proxy/socks4a' class MetasploitModule < Msf::Auxiliary include Msf::Auxiliary::Report def initialize super( 'Name' => 'Socks4a Proxy Server', 'Description' => 'This module provides a socks4a proxy server that uses the builtin Metasploit routing to relay connections.', 'Author' => 'sf', 'License' => MSF_LICENSE, 'Actions' => [ [ 'Proxy' ] ], 'PassiveActions' => [ 'Proxy' ], 'DefaultAction' => 'Proxy' ) register_options( [ OptString.new( 'SRVHOST', [ true, "The address to listen on", '0.0.0.0' ] ), OptPort.new( 'SRVPORT', [ true, "The port to listen on.", 1080 ] ) ], self.class ) end def setup super @mutex = ::Mutex.new @socks4a = nil end def cleanup @mutex.synchronize do if( @socks4a ) print_status( "Stopping the socks4a proxy server" ) @socks4a.stop @socks4a = nil end end super end def run opts = { 'ServerHost' => datastore['SRVHOST'], 'ServerPort' => datastore['SRVPORT'], 'Context' => {'Msf' => framework, 'MsfExploit' => self} } @socks4a = Rex::Proto::Proxy::Socks4a.new( opts ) print_status( "Starting the socks4a proxy server" ) @socks4a.start @socks4a.join end end