Commit Graph

16492 Commits

Author SHA1 Message Date
RageLtMan c339662fed SshCommandSession and Ruby Payloads
Implement a command-only session type over the HrrRbSsh client
Connection Channels' file descriptors, adjust from base command
session to deal with the separate reader/writer IOs. Technically,
a TTY session works out of the box here as well.

Implement a pair of showcase Ruby payloads using net/ssh to call
back to the handler, create a shell channel, and loop piping I/O
between framework session and client via the Ruby backtick exec.

Next Steps:
  Command payloads need to be written for every major interpreted
language as well as some sort of bashism a la openssl_double if
it comes to that, but preferably single socket implementation.

Testing:
  Very minimal, needs a good run through by the community and R7
2019-06-23 05:20:04 -04:00
RageLtMan f0b24339fe Implement Rex::Proto::Ssh::Server scaffold
Create the Rex::Proto::Ssh namespace and implement hrr_rb_ssh
objects in the Rex namespace with Rex' sockets stack, permissive
default connection options to accept any authentication, ACLs for
port forwarding, and a modified Connection #initialize method for
simplified instantiation.

The actual Rex::Proto::Ssh::Server object follow standard Rex
semantics for services to permit use in handlers, exploits, and
auxiliary modules in the same manner as the Http::Server is used
today.

This work is far from complete - the HrrRbSsh low-level objects
should be decomposed into Rex' pattern as they currently depend
heavily on their own Procs and Threads internally which use the
parent Connection object's attributes to look up which Proc should
be called in response to a Channel or Authentication request. This
is a bit difficult to do piecemeal given the intertwined data and
execution dependency inside of HrrRbSsh.

Next steps:
1. Create handler and reverse_ssh command session payloads
1a. POSIX systems generally have SSH already
1b. Windows Powershell is likely able to hotload SSH libs as a
pre-stager.
1c. Other interpreted runtimes usually have client-ssh libraries
2. Implement options parsing, handling, etc for user-customizable
functionality from the Msf namespace.
3. Use libssh2 to permit mettle use of the SSH transport.
3a. Bother @OJ about doing the same for Windows Meterpreter.
3b. Bother @zeroSteiner to implement SSH transport for PyMeterp.
3c. Ask @timwr and @mihi how viable this is for Android/Java.
3d. See if @OJ will do this for CLR-meterp on a livestream.
4. Write a post module which runs this SSH server from a mettle
session using the compromised hosts's own host keys and passwd
file for "valid" authentication while logging and MITMing the
entire command stream remotely - help folks shake off some of the
complacency around "secure shells."
5. Write a plugin which will permit sharing of the entire console
context, specific acquired sessions, or TCP forwards with the
pugin's SSH clients based on the credentials used to connect.
6. Further decompose the server code into Rex to permit writing
client fuzzers, loggers, and other tooling to test the posture of
SSH client implementations.
7. Work to implement SSH client functionality in HrrRbSsh and
convert the rest of Rex/Msf to use this library instead only.
8. Rewrite and import MetaSsh into Metasploit proper using the
new Rex::Proto::Ssh code.

-----

Huge thanks to @hirura for writing HrrRbSsh. I've spent countless
hours on and off working to implement server-side semantics in
net/ssh years ago and it was becoming a pretty full rewrite due
to the ordering of server/client req/resp messages and who sent
what to whom. This library is a much much cleaner implementation
and provides full, modern SSH servers in pure Ruby.
2019-06-22 20:06:15 -04:00
Metasploit 8244457b33 Bump version of framework to 5.0.31 2019-06-20 10:05:48 -07:00
Tim W 809a990ab8 add mouse doubleclick 2019-06-20 15:21:41 +08:00
Tim W 48d29e532e add keyevent api 2019-06-20 13:54:13 +08:00
Chris Higgins ceba93e84e Land #11904, fix meterpreter screenshot dll upload 2019-06-17 23:36:29 -05:00
bwatters-r7 b67b48fd50 Land #11966, Stop error rendering in multi/meterpreter handler
Merge branch 'land-11966' into upstream-master
2019-06-14 14:01:58 -05:00
Tim W 3338401708 fix #11975, fix meterpreter shell command on android 2019-06-14 06:01:53 +08:00
Adam Cammack 1f6d61dde8 Land #11965, Add secure Meterpreter command
The command will force or renegotiate TLV encryption on the for the
current session.
2019-06-13 14:20:50 -05:00
bwatters-r7 aed504c0a9 Land #11944, Implement bind TCP with RC4 decryption for x64
Merge branch 'land-11944' into upstream-master
2019-06-13 12:09:31 -05:00
Metasploit 644a70ff15 Bump version of framework to 5.0.30 2019-06-13 10:07:30 -07:00
William Vu bcee6f0dc2 Join full path nicely 2019-06-13 10:30:36 -05:00
bwatters-r7 805d64428f Stupid pry... 2019-06-13 10:27:29 -05:00
bwatters-r7 a11d6221d9 Update the session to die after callback
Remove stale old file
2019-06-13 09:08:14 -05:00
William Vu 8e6fbcb4b5 Concatenate path and name in Meterpreter pgrep -lf 2019-06-12 19:13:02 -05:00
William Vu 2d14966b0b Land #11963, kill command help correction 2019-06-12 11:00:38 -05:00
asoto-r7 6f65f38943 Revert f162822 2019-06-11 13:23:58 -05:00
Brent Cook fa09b239e8 Land #11941, add support for module aliases 2019-06-11 12:57:01 -05:00
OJ 5621d200cc Stop error rendering in multi/meterpreter
The reverse_http/s listeners result in awful errors when
multi/meterpreter is set as the payload. Anyone that hits the endpoint
with an invalid or missing UUID will spam the MSF console with
exceptions.

This patch avoids this issue in cases where the UUID isn't specific. We
avoid setting it as a default, which doesn't make sense anyway.
2019-06-11 13:39:52 +10:00
OJ 0e0edeb372 Add a secure command to renegotiate TLV encryption
This gives us the ability to force TLV encryption if for some reason
it's not already in place, and it means we can renegotiate a new key on
the fly if we want to.
2019-06-11 08:26:33 +10:00
William Vu 36cc535c8a Remove jobs options from kill help
They do not apply.
2019-06-10 16:29:14 -05:00
bwatters-r7 915149ad6d Reset send_uuid because it should not have been changed
remove debug print from options
change puts on pingback
2019-06-10 15:03:49 -05:00
Wei Chen 5c97c2fa19 Land #11951, Add meterpreter > screenshare command 2019-06-10 13:25:27 -05:00
h00die bd58fdf77a remove ssh.rb from change 2019-06-09 15:11:07 -04:00
h00die 4d60f38177 brocade working 2019-06-09 15:10:05 -04:00
h00die cf90f8250d reimport brocade module 2019-06-09 15:09:06 -04:00
Brent Cook 83528b8bb1 Land #11798, Add Extended Passive Mode for FTP client
Merge remote-tracking branch 'upstream/pr/11798' into upstream-master
2019-06-07 15:09:23 -05:00
Brent Cook 3f5f48a3fc Land #11340, make SSH agent and other options configurable 2019-06-07 11:22:31 -05:00
Metasploit da6a225ef8 Bump version of framework to 5.0.29 2019-06-07 09:03:32 -07:00
Brent Cook 5aed1f7dfe Land #11914, Fix external file import via web service 2019-06-07 06:03:42 -05:00
William Vu dd101a0469 Add nil check
Just in case.
2019-06-07 00:16:44 -05:00
William Vu 53ea7e577f Add sanitized new XML format 2019-06-07 00:07:50 -05:00
William Vu 10dccfcedb Remove warning
<context> provides service info now:

<context>TCP:443 ([redacted]), SHA256[=][redacted], Serial[=][redacted]</context>
2019-06-06 23:45:07 -05:00
William Vu 40eeae541b Fix style 2019-06-06 23:38:41 -05:00
Jeffrey Martin f646a973a7 Update retina imports to better handle parsing 2019-06-06 19:13:06 -05:00
James Barnett 37414b5760 Land #11948, surface errors returned from remote data service in console 2019-06-06 12:40:42 -05:00
William Vu b020e3232b Move warning suppression 2019-06-06 12:33:54 -05:00
Metasploit 614c1afc41 Bump version of framework to 5.0.28 2019-06-06 10:07:53 -07:00
William Vu 19bd0f2183 Add comments 2019-06-06 10:50:26 -05:00
Tim W 49ce878497 refactor html code into separate module 2019-06-06 13:39:53 +08:00
Matthew Kienow 3c4699c848 Remove unnecessary leading slash from log message 2019-06-05 15:10:00 -04:00
Matthew Kienow 25f45144e8 Handle exceptions raised by get_msf_version call
Exceptions may be raised via the remote data service response handling
while making the call to check the MSF version.
2019-06-05 15:09:33 -04:00
asoto-r7 6d155a8573 Remove a left-over 'pry' debugger invocation 2019-06-04 17:52:03 -05:00
bwatters-r7 e8487b547f Should not have changed reverse_tcp.rb 2019-06-04 16:01:45 -05:00
Matthew Kienow 749501d449 Refactor remote data service response handling
Raises exceptions for error responses rather than failing silently.
This exposes the server-side error message to the user in console.
2019-06-04 12:09:06 -05:00
Matthew Kienow 8fe11744bd Use the revised ResponseWrapper error classes 2019-06-04 11:59:00 -05:00
Matthew Kienow 52c67a6952 Modify ResponseWrapper to support three states
There is a success response, an error response and a failed response.
An error response contains a body with an error message from the
server-side, while a failed response represents an invalid response
caused by an issue with the request or response.
2019-06-04 11:56:12 -05:00
bwatters-r7 eff819b523 Land #11945, Make auto_cl more selective based on HTTP method
Merge branch 'land-11945' into upstream-master
2019-06-04 09:04:13 -05:00
bwatters-r7 c28b15e9fe Land #11823, Handle invalid payloads more clearly
Merge branch 'land-11823' into upstream-master
2019-06-04 08:34:41 -05:00
Jacob Robles 8687a21f2d Fix workspace calls 2019-06-04 08:33:58 -05:00