Commit Graph

7956 Commits

Author SHA1 Message Date
RageLtMan 0e5ec4c646 Fix processing of static hosts in Msf...Server
The add_static_hosts method used old interfaces and had not been
tested prior.
Address the interfaces, functionally check the logic, and add the
method into start_service to automatically process the static
hosts entries set in the DS.
2017-06-23 19:58:36 -04:00
RageLtMan 2f0003b5bd Implement native DNS for Msf Namespace
Built atop the Rex::Proto::DNS work to implement mixins for client
and server functionality, providing common interfaces for querying
domain name servers, and providing domain name services to clients
across Rex sockets. Fully functional native DNS server module is
included to demonstrate functionality, serve as a spoofing DNS
server, a collecting proxy, or any other number of DNS functions.

-----

At the core of this work is a Rex::Proto::DNS::Resolver object
descended from Net::DNS::Resolver with overrides and alterations
for using Rex sockets. The sockets implementation has been in use
internally for a number of years and is well tested. Changes have
been made to provider better interface for higher level components.

The resolver provides forward lookup capability for the server
(Rex::Proto::DNS::Server) which also implements a self-pruning
Cache subclass capable of holding static entries. The server can
operate in TCP or UDP mode, and provides a common abstraction for
addressing TCP and UDP clients by passing a Rex::Socket::Udp
mock client around with the data object to higher level consumers.
Finally, as is standard practice when building full service objects
from Rex to Msf, the server allows consumers to efficiently take
execution control at the request and response handlers by passing
Procs into the constructor (or manually assigning at runtime) for
execution instead of the default call chain.

The service, lookup, and caching functionality is encapsulated and
stands on its own to be used by consumers other than the standard
Msf::Exploit::Remote namespaces. It is intended to serve as the
driver and transport handler for pending DNS tunnel transports,
and can be used by exploit and auxiliary modules directly.

-----

The Msf::Exploit::Remote namespace receives DNS, DNS::Client, and
DNS::Server mixins providing common interfaces for Rex::Proto::DNS
objects. These mixins create convenience methods for executing
queries, serving requests, and configuring the Rex providers.

DNS::Client mixin attempts to "intelligently" configure the client
resolver's name servers and options from the data store. Accessor,
query, and configuration methods are provided in this mixin. Of
note are the wildcard and switchdns methods which were adapted
from prior work by others (likely Carlos Perez) which can be used
by numerous consumer modules. Consumers should use setup_client
during their run call to ensure the resolver is appropriately
configured.

DNS::Server mixin creates common service wrappers for modules to
utilize along with a configuration mechanism analagous to the
one used by the Client mixin, called setup_server, and calling
the setup_client method if present. Note that when setup_server
is called, the consumer does not need to call setup_resolver.

------

At the framework module level, a native dns server is provided
to showcase the mixin functionality and provide everything from
normal DNS services, to tunneling proxies (with cache disabled),
spoofing services, and MITM functionality via the handler Procs
for requests and responses.

Use auxiliary/server/dns/native_server to get started.

-----

Testing:
  Basic local testing completed.
  Needs to be checked for info leaks - we used to leak a lot.
  Needs to be checked for functionality under varying configs.

Notes:
  We have a serious problem with the datastore somewhere in the
Msf namespace. Datastore options must be validated with
options.validate(datastore) or they are all Strings, which
completely destroys any type-dependent logic consuming
datastore values. This must be addressed separately and all
calls to options.validate(datastore) should be removed (other
work has included such calls as well, this just proved that
the problem exists upstream).

Future work:
  Implement sessions transports atop the DNS infrastructure in
order to provide native DNS tunneling.
2017-06-23 19:58:35 -04:00
Dirkjan Mollema 03b36757e4 Added session name to logfile name 2017-06-23 13:26:36 +02:00
Brent Cook fda2e8c73d Land #8523, Add support for session GUIDs 2017-06-22 20:10:10 -05:00
Brent Cook 3b248c78f3 resurrect old example modules, integrate into module tree 2017-06-22 11:36:35 -05:00
Spencer McIntyre 549ebb4ff6 Patch in the new PythonMeterpreterTryToFork option 2017-06-22 10:55:08 -05:00
Brent Cook f96f61d29e enhance module info to be on par with pro RPC interface 2017-06-21 08:36:49 -05:00
OJ a9e03c1efd Initial working version of AES encryption of TLVs 2017-06-21 21:01:59 +10:00
Brent Cook 55b71e115f Land #8535, MSGRPC module minor fixes 2017-06-15 21:44:34 -05:00
OJ 2c0f41ee8f Fix session guid handling in python 3
I made the mistake of using str.decode() which isn't a thing in python3
(works fine in 2). So this commit fixes it so that the GUID string
itself is generated directly as a byte string, so that the call to
decode() isn't needed at all.
2017-06-16 09:01:29 +10:00
Brent Cook bf674263f3 Land #8533, record vulnerability attempts 2017-06-09 17:52:49 -05:00
TheNaterz 40fafaa270 dereference the service from the service manager 2017-06-09 16:24:01 -06:00
Jeffrey Martin 2b6f823a1b store vuln attempt when reported 2017-06-09 12:46:39 -05:00
OJ c4288fb35a Update branch to include chances from upstream/master 2017-06-09 17:18:57 +10:00
TheNaterz c3b2476a51 add arch to rpc session details 2017-06-08 16:26:13 -06:00
Spencer McIntyre a052ee4064 Use the opts hash not the datastore 2017-06-06 20:02:06 -04:00
Spencer McIntyre 834e0eba95 Land #8340, add exception handling for rev_tcp_ssl 2017-06-06 19:09:15 -04:00
Spencer McIntyre a953d94f61 Minor white space cleanups for PR #8340 2017-06-06 19:07:55 -04:00
OJ 37b9cd07a2 Add support for the session GUID in the UI
The Session GUID will identify active sessions, and is the beginning of
work that will allow for tracking of sessions that have come back alive
after failing or switching transports.
2017-06-06 17:15:57 +10:00
itsmeroy2012 39cee481c1 Making changes similar to the reverse_tcp payload 2017-06-03 22:57:59 +05:30
L3cr0f 6a3fc618a4 Add bypassuac_injection_winsxs.rb module 2017-06-03 12:59:50 +02:00
tkmru 82a83af6c2 add error handling to x86 linux reverse tcp 2017-06-03 04:04:55 +09:00
Brent Cook a01a2ead1a Land #8467, Samba CVE-2017-7494 Improvements 2017-05-30 00:15:03 -05:00
HD Moore 66f06cd4e3 Fix small typos in comments 2017-05-28 14:40:33 -05:00
Spencer McIntyre 4e29b6e5fd Land #8275, add retry opts for py rev_tcp stager 2017-05-28 13:02:35 -04:00
Spencer McIntyre 2ca53eaebf Minor white space cleanups for PR #8275 2017-05-28 12:59:06 -04:00
itsmeroy2012 e02d726213 Setting default values to the added options 2017-05-28 14:30:30 +05:30
HD Moore 8caaba01f1 Add share enumeration methods to the SMB mixin 2017-05-26 17:01:18 -05:00
HD Moore 18a871d6a4 Delete the .so, add PID bruteforce option, cleanup 2017-05-25 16:03:14 -05:00
itsmeroy2012 92a1a3ecf7 Adding for loop instead of while, removing 'counter' 2017-05-25 15:09:34 +05:30
Matthew Daley 52363aec13 Add module for CVE-2017-8895, UAF in Backup Exec Windows agent
This module exploits a use-after-free vulnerability in the handling of
SSL NDMP connections in Veritas/Symantec Backup Exec's Remote Agent for
Windows. When SSL is re-established on a NDMP connection that previously
has had SSL established, the BIO struct for the connection's previous
SSL session is reused, even though it has previously been freed.

Successful exploitation will give remote code execution as the user of
the Backup Exec Remote Agent for Windows service, almost always
NT AUTHORITY\SYSTEM.
2017-05-24 00:18:20 +12:00
Renato Piccoli 29d1022ae2 Fix the rake spec failures under ruby 2.4.
Ths typo3_spec is giving some errors under ruby 2.4+
and OpenSSL 1.1+.
2017-05-21 21:56:04 +02:00
Pearce Barry a6f416e8df Land #8290, Hwbridge Automotive Fix and Extension Enhancements 2017-05-19 13:46:54 -05:00
James Lee 4def7ce6cc Land #8327, Simplify storing credentials 2017-05-18 16:49:01 -05:00
wchen-r7 58d65ce4b5 Land #8380, check for command injection in smtp email addresses
aborts
2017-05-16 15:36:22 -05:00
Brent Cook e7be0af72e update bad mail checks 2017-05-14 22:13:31 -05:00
Brent Cook cc72850847 Land #8369, add PSH decompressor & decoder convenience methods 2017-05-14 21:28:02 -05:00
Brent Cook 8ac5d2d377 tidy up a bit while we're in here 2017-05-14 21:27:38 -05:00
Brent Cook 544ea6926c trim leading and trailing whitespace in mail addresses 2017-05-14 11:22:46 -05:00
Spencer McIntyre f39e378496 Land #8330, fix ps_wmi_exec and psh staging 2017-05-13 14:26:47 -04:00
Spencer McIntyre 3cbeebe3af Rename env_ variable to be more accurately named 2017-05-13 14:24:00 -04:00
itsmeroy2012 3a1ed19a42 Making use of StagerRetryConnect 2017-05-13 17:49:53 +05:30
Brent Cook 123462bdca Land #8293, add initial multi-platform railgun support 2017-05-11 22:32:23 -05:00
Brent Cook e414bdb876 don't try to guess intent for specified default targets, leave auto-auto targeting to unspecified modules 2017-05-11 15:19:11 -05:00
RageLtMan cf29a512d0 Upstream Msf namespace PSH decompressor & decoder
Present convenience interfaces in Msf::Exploit::Powershell ns for
decoding and decompressing PSH strings built with Rex::Powershell
or compatible implementations.
2017-05-10 22:44:56 -04:00
Adam Cammack 18d95b6625 Land #8346, Templatize shims for external modules 2017-05-10 18:15:54 -05:00
Brent Cook 42fd287038 remove debug 2017-05-10 13:04:12 -05:00
Brent Cook beea5e1a5c use wfsdelay consistently 2017-05-08 15:34:09 -05:00
Brent Cook fede672a81 further revise templates 2017-05-08 14:26:24 -05:00
Brent Cook a2ce3743a2 move wait_status to a mixin 2017-05-08 12:23:27 -05:00