diff --git a/lib/rex/post/meterpreter/client_core.rb b/lib/rex/post/meterpreter/client_core.rb index 6a67471bbe..17ee24e02d 100644 --- a/lib/rex/post/meterpreter/client_core.rb +++ b/lib/rex/post/meterpreter/client_core.rb @@ -340,6 +340,18 @@ class ClientCore < Extension return true end + def transport_sleep(seconds) + return false if seconds == 0 + + request = Packet.create_request('core_transport_sleep') + + # we're reusing the comms timeout setting here instead of + # creating a whole new TLV value + request.add_tlv(TLV_TYPE_TRANS_COMM_TIMEOUT, seconds) + client.send_request(request) + return true + end + def transport_next request = Packet.create_request('core_transport_next') client.send_request(request) diff --git a/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb b/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb index 72f27444bb..7b275dd95e 100644 --- a/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +++ b/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb @@ -86,6 +86,10 @@ class Console::CommandDispatcher::Core # Yet to implement transport hopping for other meterpreters. # Works for posix and native windows though. c["transport"] = "Change the current transport mechanism" + + # sleep functionality relies on the transport features, so only + # wire that in with the transport stuff. + c["sleep"] = "Force Meterpreter to go quiet, then re-establish session." end if (msf_loaded?) @@ -494,6 +498,45 @@ class Console::CommandDispatcher::Core end + # + # Display help for the sleep. + # + def cmd_sleep_help + print_line('Usage: sleep