Class: Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket
- Inherits:
-
Object
- Object
- Rex::Post::Meterpreter::Extensions::Stdapi::Net::Socket
- Defined in:
- lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb
Overview
This class provides an interface to interacting with sockets on the remote machine. It allows callers to open TCP, UDP, and other arbitrary socket-based connections as channels that can then be interacted with through the established meterpreter connection.
Instance Method Summary collapse
-
#create(params) ⇒ Object
Creates an arbitrary client socket channel using the information supplied in the socket parameters instance.
-
#create_tcp_client_channel(params) ⇒ Object
Creates a TCP client channel.
-
#create_tcp_server_channel(params) ⇒ Object
Create a TCP server channel.
-
#create_udp_channel(params) ⇒ Object
Creates a UDP channel.
-
#initialize(client) ⇒ Socket
constructor
Initialize the socket subsystem and start monitoring sockets as they come in.
-
#shutdown ⇒ Object
Deregister the inbound handler for the tcp server channel.
Constructor Details
#initialize(client) ⇒ Socket
Initialize the socket subsystem and start monitoring sockets as they come in.
38 39 40 41 42 43 44 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 38 def initialize(client) self.client = client # register the inbound handler for the tcp server channel (allowing us to receive new client connections to a tcp server channel) client.register_inbound_handler( Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel ) end |
Instance Method Details
#create(params) ⇒ Object
Creates an arbitrary client socket channel using the information supplied in the socket parameters instance. The ‘params’ argument is expected to be of type Rex::Socket::Parameters.
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 64 def create( params ) res = nil if( params.tcp? ) if( params.server? ) res = create_tcp_server_channel( params ) else res = create_tcp_client_channel( params ) end elsif( params.udp? ) res = create_udp_channel( params ) end return res end |
#create_tcp_client_channel(params) ⇒ Object
Creates a TCP client channel.
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 98 def create_tcp_client_channel(params) begin channel = SocketSubsystem::TcpClientChannel.open(client, params) if( channel != nil ) return channel.lsock end return nil rescue ::Rex::Post::Meterpreter::RequestError => e case e.code when 10000 .. 10100 raise ::Rex::ConnectionError.new end raise e end end |
#create_tcp_server_channel(params) ⇒ Object
Create a TCP server channel.
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 83 def create_tcp_server_channel(params) begin return SocketSubsystem::TcpServerChannel.open(client, params) rescue ::Rex::Post::Meterpreter::RequestError => e case e.code when 10000 .. 10100 raise ::Rex::ConnectionError.new end raise e end end |
#create_udp_channel(params) ⇒ Object
Creates a UDP channel.
117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 117 def create_udp_channel(params) begin return SocketSubsystem::UdpChannel.open(client, params) rescue ::Rex::Post::Meterpreter::RequestError => e case e.code when 10000 .. 10100 raise ::Rex::ConnectionError.new end raise e end end |
#shutdown ⇒ Object
Deregister the inbound handler for the tcp server channel
49 50 51 |
# File 'lib/rex/post/meterpreter/extensions/stdapi/net/socket.rb', line 49 def shutdown client.deregister_inbound_handler( Rex::Post::Meterpreter::Extensions::Stdapi::Net::SocketSubsystem::TcpServerChannel ) end |