1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-05-06 16:09:38 +02:00

82 Commits

Author SHA1 Message Date
saim1z
bc341d1ae9 add update_token function to stdapi 2023-05-24 11:01:13 +02:00
dwelch-r7
e29d876b2e Remove debug artifacts from release build 2022-04-26 15:56:53 +01:00
dwelch-r7
9dfa3ec1fc winpmem failing to compile 2022-04-26 15:56:53 +01:00
OJ
c9ca614313
Remove DLL exports from Meterpreter
Add support for loading RDI-related stuff using ordinals instead of
function names. Remove exports from the extensions/etc. This is another
step in the direction to make the DLLs less obvious.

Extensions no longer have their own name in the library metadata.
They're all "extension.dll". Metsrv is now "server.dll" and the two
non-extensions are "plugin.dll". I was going for something a little less
obvious.

This required changes to the RDI functionality.
2020-06-22 08:25:30 +10:00
OJ
3f574e3521
Implement extendion IDs and refactor command enum
Enumeration of commands was a bit of a hack, and still resultsed in
strings (like "stdapi") to appear in binaries, and also meant that
extensions needed to identify themselves.

This code changes the way this works. Extensions no longer have a name.
Instead they have an internal ID tha maps to the command sets they
support. To enumerate extension commands, MSF will ask for a range of
commands, and if any command IDs fit within that range, they'll be
returned.

This moves us towards a nicer way of handling things across all the
meterpreters.
2020-05-01 15:36:07 +10:00
OJ
c7f7bc2fc0
Remove method strings from TLV packets
We now use ints, and hopefully this means we don't have as much obvious
stuff in the binaries!

```
$ # Before:
$ strings metsrv.x86.dll | grep core_ | wc -l
46
$ # After:
$ strings metsrv.x86.dll | grep core_ | wc -l
0
```
Big win, and it's even bigger for the likes of stdapi.

Had to fix a bunch of other stuff along the way, including a subtle
issue with the Powershell Meterp bindings.
2020-04-28 23:41:06 +10:00
OJ
136a58a194
Clean comments & update winpmem to avoid delay loading
Also, added the "GetExtensionName" functions to winpmum and unhook
2020-04-22 13:06:46 +10:00
OJ
9ca881235e
Change unhook extension to remove delay loading of metsrv 2020-04-22 13:06:46 +10:00
OJ
4ffe127f04
Begin removing the delay-load dependency
The 'common' library has been removed. The only project that actually
used it was metsrv, so the code that metsrv required from common is now
directly compiled in as part of that project.

The common folder now contains files that are importanta cross all of
the projects, with a primary focus on the new "API" style function. What
this means is that MetSrv has an API that it exposes through a function
pointer that is passed to the extension when it's initialised. This
pointer references a structure with all the API functions wired in. This
means that:

* Extensions don't need to know anything about metsrv at compile time.
* The delay loading code can be removed, which was one of the last
  instances of "metsrv.dll" as a string.
* Metsrv.dll no longer exports any functions.

More to come.
2020-04-22 13:06:40 +10:00
Tim W
a29110ca5c add windows keyevent api 2019-06-17 12:36:55 +08:00
Tim W
16213667b7 add mouse api for windows 2019-05-13 02:32:27 +08:00
Tim W
35d908b6bf add send_keys api for windows 2019-05-13 02:31:44 +08:00
Brent Cook
0a2d768e77 delete Linux meterpreter support 2017-05-14 02:11:57 -05:00
William Webb
5d917565c0
add known working keylog code 2017-03-31 13:19:53 -05:00
Tim
db85f099c3
stdapi_fs_file_copy 2016-11-29 13:58:46 +08:00
Brent Cook
f302463f94
Land , add local time command 2016-10-10 23:28:20 -05:00
Brent Cook
c304eb79c3 revert mode changes 2016-10-03 23:05:57 -05:00
OJ
2b9aac9c45
Add support for listing of loaded drivers 2016-10-04 11:30:12 +10:00
OJ
5e6dc8ca85
Add localtime command support for POSIX 2016-10-03 15:26:54 +10:00
OJ
38fe6e1188
Add localtime command to Windows native meterp 2016-10-03 15:26:54 +10:00
Brent Cook
98fae3e075 change source perms back to non-executable 2015-11-09 21:10:30 -06:00
OJ
14740bfa9c Add support for the show_mount command (windows) 2015-10-29 07:22:59 +10:00
OJ
e9b7ec97c0 Implement support for ssl cert verify toggling
Querying of the status of SSL cert verification is now possible. This commit allows for this to be enabled and disabled on the fly.
2015-04-06 14:42:38 +10:00
OJ
c93ba9608c Fix bad POSIX support for stageless meterpreter
* Make sure POSIX has the new extension command enumeration function.
* Add support for deinit of extensions.
* Make sure extensions are tracked like they in Windows.
* Fix up a few export definitions.
* Stop using strncpy_s in POSIX code.
2015-03-19 11:07:22 +10:00
OJ
0393927159 Add extension names, enuemrators, etc
This commit contains a bunch of code tidying (formatting, spaces, naming, etc) as well as new exports for each of the modules so that the extension can be identified. The plan is for the loader to know which modules are loaded so that when stageless meterpreter fires up MSF can query the existing extensions and load the appropriate functionality on the client side.
2015-03-09 21:28:27 +10:00
Tod Beardsley
74cb136099 Land , add direct access reg methods 2015-01-07 14:56:12 -06:00
Tod Beardsley
43ce54e6af Undo the 755 mode change 2015-01-07 14:32:57 -06:00
jvazquez-r7
22975bd716 Require getsid only on windows 2015-01-01 19:04:10 -06:00
Brent Cook
0f2dcf50d0 add direct access registry methods
This adds registry access methods that do an atomic open/<action>/close on
registry keys. They improve efficiency and safety, since we're not passing
HKEY's back and forth to enumerate or read registry keys. This fits the common
use pattern in MSF better anyway.
2014-12-16 15:31:11 -06:00
OJ
4a88e93496 Add the getsid command
Added support for a the getsid command so that it's easy to
determine the SID of the current user. This will be useful for
a number of different use cases.
2014-11-07 10:36:36 +10:00
OJ
445df8ad36 Merge branch 'upstream/master' into command_req_update
Conflicts:
	source/ReflectiveDLLInjection
2013-12-21 13:31:28 +10:00
Meatballs
0f4f470761 Land Reflective DLL Submodule
Conflicts:
	source/ReflectiveDLLInjection
2013-12-19 21:00:20 +00:00
OJ
1a3368035f Merge branch 'master' into command_req_update
Conflicts:
	source/extensions/stdapi/server/stdapi.c
2013-11-28 21:26:21 +10:00
James Lee
911aa47275 Land , getenv 2013-11-26 23:28:23 -06:00
OJ
c6bdc26a55 Update Meterpreter to use the RDI submodule 2013-11-27 14:01:45 +10:00
OJ
550da5946e Merge branch 'upstream/master' into command_req_update
A few minor issues around formatting collisions, nothing huge.
.gitignore fixes too

Conflicts:
	source/common/base_dispatch_common.c
	source/extensions/stdapi/server/stdapi.c
2013-11-27 06:51:12 +10:00
OJ
df82feedac Add support for getting environment variable values
This is a new command in the stdapi which allows the caller to pass in a set of
environment variable names and retrieve a hash of the names and values.
2013-11-26 09:37:56 +10:00
OJ
db764771a2 Add check_key_exists registry function
MSF side has been attempting to open keys to see if they exist, which isn't
fantastic as it results in an error. This change adds a function which indicates
to the caller if the given reg key exists.
2013-11-25 16:17:32 +10:00
OJ
ad6a0f33ad Code fixes and tidies
Fixed up the cusom command declarations in the sniffer extension so
that they're using the new macros. I don't know how they were missed.

Various bits of tidying up, while trying to sort out the sniffer prob.
2013-11-19 06:51:35 +10:00
OJ
70d958b729 Remove last of the warnings/errors after merging 2013-11-14 19:33:20 +10:00
James Lee
3cbf7486d4 Land , command refactor 2013-11-06 15:33:52 -06:00
OJ
5986ccf235 Add the getproxy command
This allows for system proxy setting to be pulled out. Windows-only at
this point.
2013-10-30 17:25:51 +10:00
OJ
3b40f1abd0 Command refactor for clean shutdown + inline calls
This work contains a bunch of changes around command dispatching. The
goals for this bit of work were to:

* Provide the ability for commands to be executed on the same thread as
  the server rather than always creating new threads and executing them on
  those threads.
* Have the means for _special_ commands, such as `exit` and `migrate` to
  shut down the server cleanly without having to rely on signalling across
  threads or by doing brutal thread termination via shared global handles.
  This should not only fix the dirty shutdown problem on Windows which
  leaves tasks dangling (or based on the prior attempt at fixing, crashing
  stuff as well), it should also help clean up the shutdown process in
  POSIX.

These changes hit a very important part of Meterpreter and so should be
reviewed with intense scrutnity. I expect this PR to garner a log of
critique and most likely a number of changes before being included in the
main line.

The `PacketDispatcher` was modified to include a new function pointer
called an `inline_handler`. This new member indicates that there's a
handler which should be invoked inline. While this sits alongside the
existing `handler`, they are actually mutually exclusive. If an
`inline_handler` is specified then the `handler` is ignored and it is
assumed that the command is intended to be handled inline. The signature
of the inline handler is different to the standard handler, and this is
why a new function pointer was added rather than a simple flag. Addition of
this parameter meant that the basic command structure changed, and that
obviously affects all of the extensions and their respective commands.
This changeset therefore updates each of those command declarations so
that they use the new macros that hide this detail.

Other things to be mindful of:

* This version of the code reads the command's `method` prior to invoking
  any other function, and after that the command itself is passed around to
  the threaded or non-threaded routes for invocation. An extra thread
  parameter was included as as result, and an overload for the
  `thread_create` function was added which supported this new parameter.
  This was named `thread_create3` because
  `thread_create_with_another_paramter` sounded a bit crap.
* The migration code, which originally had a `thread_kill` and an event
  wait once the new meterpreter session had been created, has been modified
  to not do any waiting at all. Instead it finishes execution as fast as
  possible and returns control to the server which should respond by
  shutting down in a clean way.
* Originally the code always attempted to call a command handler in the
  base command list and then, if found, would also call an "overload" in
  the extension commands list. From the investigation that I did, it
  appears that the overloaded methods did nothing in the base (they'd
  early out during invocation). As a result, the new way of doing things
  acts like a 'true' overload in that the extension commands are searched
  first, and if one is found this is the command that is executed. Any
  base commands with the same method name will not get executed. In the
  case where there is no extension command found, the base command list is
  then queried. If a command is found that command is instead invoked.
* The POSIX version still compiles cleanly, but I've never been able to
  build a version that runs on my machines. I'm not sure if there's a
  trick to getting POSIX builds to run, and if there is I don't know it.
  Whoever scrutinises this build should make sure that the POSIX version
  that they build can still run and (hopefully) exit cleanly.

I've added lots of documentation, but there's always room for improvement.

Hopefully this will fix the `*_tcp` side of Redmine 8438.

Bring on the feedback!
2013-10-17 22:36:49 +10:00
Meatballs
4090e197aa Merge branch 'master' of github.com:rapid7/meterpreter into ip_resolv 2013-09-17 19:19:51 +01:00
OJ
99771d367e Removal of more warnings in compilation 2013-09-15 00:06:49 +10:00
Meatballs
071ff00a38 IPv6 resolution and remove nix 2013-06-20 22:29:49 +01:00
Meatballs
aecf0b28d4 Final 2013-04-14 10:59:34 +01:00
Meatballs
94de029ee2 Initial attempt 2013-04-07 23:04:54 +01:00
James Lee
d80547c656 Whitespace at EOL 2013-04-04 23:37:20 -05:00
RageLtMan
9ac6d93580 add meterpreter side of stdapi.fs.file.mv 2013-03-20 18:29:47 -04:00