Commit Graph

5658 Commits

Author SHA1 Message Date
Brent Cook 68101136de bump embedded version 2019-12-06 13:26:55 -06:00
Brent Cook ca5bc94ccf kill never unused 'from' argument in library logs
This avoids computing a stack trace on every single log message
that is never used in any of the logging sinks. This is one of the
number one profiled memory allocation/deallocation events in Metasploit
as shown with memory_profiler.
2019-12-02 09:03:58 -06:00
Brent Cook c08ed0e953 Land #12613, make :workspace key more consistent 2019-11-25 10:39:01 -06:00
Jeffrey Martin ba06624e57 consistent usage of :workspace key 2019-11-22 11:16:22 -06:00
Brent Cook f8c84c9928 Land #12530, add encrypted, compilable shell payloads 2019-11-21 08:59:46 -06:00
Shelby Pace bf2bfb3b39 use chacha20 class 2019-11-20 10:42:03 -06:00
Shelby Pace deb57a1df0 add modified chacha implementation, format_uuid 2019-11-19 20:16:16 -06:00
Shelby Pace 51a392f8a6 change default value 2019-11-15 11:59:40 -06:00
Brent Cook bbe95e393d initial integration work 2019-11-14 10:29:58 -06:00
Brent Cook fff9f51d07 add initial ruby implementation of chacha
Note this is the original version with the 64-bit IV and 64-bit block
counter. This can be changed to the RFC version in a bit.
2019-11-13 09:22:14 -06:00
William Vu ce656a850a Update raw_headers 2019-10-31 12:16:31 -05:00
William Vu 866a1c9bed Fix Boolean validation to match our idiom 2019-10-31 11:29:43 -05:00
William Vu b9baa80823 Refactor to use config hash and new option 2019-10-31 11:11:43 -05:00
William Vu b268feda73 Allow partial response due to timeout 2019-10-29 21:25:21 -05:00
Brent Cook 6a9cc9b384 use the common method for enabling secure TLV channel 2019-10-28 06:25:51 -05:00
Brent Cook 4f33267db5 Wait for threads to exit after killing them. 2019-10-28 06:25:15 -05:00
Spencer McIntyre e771147046 Fix the default meterpreter prompt 2019-10-22 20:02:32 -04:00
Brent Cook 100c0a7580 Land #12438, add support for custom Meterpreter prompts 2019-10-21 12:20:06 -05:00
Jeffrey Martin 289a9c56f3 when making requests to report send workspace
The report methods of the db layer require the workspace during import.
2019-10-15 15:32:00 -05:00
Spencer McIntyre 8bb9f1798b Add a few more variables including local variants 2019-10-10 22:20:37 -04:00
Spencer McIntyre ef81205123 Add the %M meterpreter prompt var 2019-10-10 21:13:12 -04:00
Spencer McIntyre d87308e9c0 Fix a couple of bugs in the MeterpreterPrompt 2019-10-10 21:13:12 -04:00
Spencer McIntyre 48f1e1d909 Add the %D and %U meterpreter prompt chars 2019-10-10 21:13:12 -04:00
Spencer McIntyre f63fd37938 Support a dynmaic meterpreter prompt 2019-10-10 21:13:12 -04:00
Shelby Pace 4b8a1a99e0 use new key after session begins 2019-10-10 12:16:10 -05:00
Shelby Pace b1cae12315 fix 'final' error, chacha20 in session 2019-10-10 12:14:27 -05:00
Shelby Pace 2c3c448abc add ruby chacha encryption and session type 2019-10-10 12:14:27 -05:00
Spencer McIntyre db53adf2a1 Fix the require_signing attribute 2019-10-02 20:22:51 -04:00
RageLtMan 21dd5f438d Address some of @bcoles comments 2019-09-15 01:14:04 -04:00
Tim W 4d9780f070 Land #12239, fix search path separator 2019-09-13 17:08:57 +08:00
bwatters-r7 6703e9b06b Land #11984, add meterpreter keyevent api for virtual key strokes
Merge branch 'land-11984' into upstream-master
2019-09-10 14:32:43 -05:00
Clément Notin 72672c82f9 Fix syntax 2019-09-03 15:17:28 +02:00
Clément Notin caafac3455 meterpreter, fs/file.rb: use client's separator instead of '\\' 2019-08-27 18:12:47 +02:00
Clément Notin f8b7100565 meterpreter UI, fs.rb: use client's separator instead of '\\' 2019-08-27 17:58:51 +02:00
Brent Cook 03d1c87eb6 Land #11976, use special-case path for shell command with Android meterpreter 2019-06-29 03:23:27 -05:00
RageLtMan d00d5fbff9 Address review comments by Hirura
@hirura noticed two bugs: a typo, and a mistake creating an empty
RequestHandler object since the underlying library already does
this when it does not have a RequestHandler assigned for the
request type.

Fix typo for #1
Remove the RequestHandler assignments in #2 and related opt merge.

Testing:
  None yet
2019-06-25 18:27:57 -04:00
William Vu 77395749da s/infinite/indefinite/ 2019-06-25 01:00:08 -05:00
William Vu b49fa29a7f Allow true zero-second timeout in send_request_*
Also fixes a bogus response when timeout is nil.
2019-06-24 12:07:24 -05:00
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
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
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
William Vu bcee6f0dc2 Join full path nicely 2019-06-13 10:30:36 -05:00
William Vu 8e6fbcb4b5 Concatenate path and name in Meterpreter pgrep -lf 2019-06-12 19:13:02 -05: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
Wei Chen 5c97c2fa19 Land #11951, Add meterpreter > screenshare command 2019-06-10 13:25:27 -05:00
William Vu dd101a0469 Add nil check
Just in case.
2019-06-07 00:16:44 -05:00