Commit Graph

7956 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
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
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
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
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
Brent Cook 5aed1f7dfe Land #11914, Fix external file import via web service 2019-06-07 06:03:42 -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
William Vu b020e3232b Move warning suppression 2019-06-06 12:33:54 -05:00
William Vu 19bd0f2183 Add comments 2019-06-06 10:50:26 -05:00
Jacob Robles 8687a21f2d Fix workspace calls 2019-06-04 08:33:58 -05:00
bwatters-r7 bee013a18c update cache size and fix an assignment 2019-06-04 07:13:34 -05:00
RageLtMan ff1630ad14 Implement bind TCP with RC4 decryption for x64
Update metasm generated shellcode blocks to cobble together an
RC4 decryption routine with a bind-socket handler for x64 targets.
Expose via new payload module
2019-06-03 18:06:53 -04:00
Adam Cammack deb31d77c3 Use the aliased name on instantiated modules
This creates a way for modules and the framework to see what name the
user entered to interact with a module.
2019-06-03 13:55:02 -05:00
Adam Cammack cf59022936 Add aliases to modules
This allows modules that can be addressed by name to register possible
aliases for themselves by defining an `Aliases` constant in the top
level of the module.
2019-06-03 13:40:27 -05:00
Adam Cammack c0d365aa46 Unify modules and cache with fullname method 2019-06-03 13:19:29 -05:00
Jacob Robles d466ac990d Use process_opts_workspace 2019-06-03 09:25:31 -05:00
William Vu e11cc621ea Add ensures 2019-06-03 03:51:08 -05:00
h00die 3589c4f4c7 avoid cracking hashes already cracked 2019-06-02 21:14:02 -04:00
William Vu ad2ece1489 Actually set the client identification string 2019-06-02 20:01:04 -05:00
William Vu 2318100a12 Rename SSHVersion to SSH_IDENT for now
1. Not to be confused with protocol version
2. We'll want to CamelCase the advanced options
2019-06-02 18:26:25 -05:00
William Vu 586fe73699 Add Msf::Exploit::Remote::SSH::Options 2019-06-02 18:21:58 -05:00
Brent Cook 621d404a27 fix tests, handle stdin properly 2019-05-31 15:02:59 -05:00
Brent Cook d988fe6e5c handle invalid payloads more clearly
Currently, if you have an error in a payload module (e.g. you have a syntax
error in a module), the error is not noticed early enough in the generation process by the parameter validator, leading to a mysterious message like so:

```
Error: undefined method `platform' for nil:NilClass
```

This change cleans up some of the error handling, checks to see if the payload
module can be instantiated, and gives a more useful error output for the
different cases. This also tweaks some of the literal string outputs to match
other exception strings from payload_generator.
2019-05-31 14:32:49 -05:00
Jacob Robles e9d0dc7518 Workspace arg used in call to func 2019-05-31 13:17:59 -05:00
Jacob Robles 37b0809e05 Remove workspace call
The #workspace call wasn't running as expected when using
the data service. It was ending up in infinite recursion.
2019-05-31 13:08:27 -05:00
Brent Cook 73c8e803fe Land #11892, Fix parse IPv6 address in reverse_http 2019-05-31 12:41:36 -05:00
h00die 2cccd50160 creds command working
debuggin hashcat aix

remove word normal

get hashcat working on aix

add deprecated jtr_aix

prettying up crack_aix

custom wordlists should include the words themselves

make format transparent to user

aix cleanup, linux working

linux working, database in progress

crack databases working

crack windows working

spaces at eol

spec updates

spec updates

spec working

add version detection

crack_aix fixes and docs

refactoring crack modules

fix syntax error

docs for crackers

markup touchups

osx cracker

jenkins

fix jenkins

remove crypt fix osx for 10.7

doc fixes and osx sha512
2019-05-31 12:18:25 -04:00
ssyy201506 ecda8d864a Fix incorrect parsing of IPv6 uri. 2019-05-28 16:41:34 +09:00
Matt Robinson 26eebb9620 Fix multi handler reverse_http to not care so much about the workspace. 2019-05-25 16:25:06 -04:00
William Vu 9d0cf0661c Land #11857, cmd/unix/reverse_bash_udp payload 2019-05-24 02:19:44 -05:00
William Vu e9aba85c9d Land #11877, analyze command nil fix 2019-05-23 14:30:15 -05:00
Brent Cook 0559fda9db Land #11873, allow calling methods across related modules 2019-05-23 13:56:27 -05:00
Jeffrey Martin d1895b3db9 restore analyze on framework object 2019-05-23 11:49:43 -05:00
Brent Cook bc5aa2ea3d Merge remote-tracking branch 'upstream/master' into land-11871 2019-05-23 11:35:20 -05:00
William Vu c9813cf379 Fix comments 2019-05-23 10:39:11 -05:00
Jacob Robles 1fe981b8e2 Land #11843, Update MSB references 2019-05-23 08:07:46 -05:00
Jacob Robles 5d2cd40010 Update MSB reference
Previous MSB references were redirecting to docs.microsoft.com
2019-05-23 07:00:23 -05:00
William Vu 7eb279e079 Use human_name in reverse_udp handler 2019-05-22 20:25:37 -05:00
William Vu b5622b160e Fix typo 2019-05-22 19:59:08 -05:00
William Vu 0febc730fa Clarify comment 2019-05-22 19:49:24 -05:00
William Vu 3e84f57544 Clarify comment 2019-05-22 18:34:02 -05:00
William Vu 690b15afc5 Check CheckCode 2019-05-22 17:40:39 -05:00