Commit Graph

16492 Commits

Author SHA1 Message Date
RageLtMan 9f49903b14 Initial implementation of Rex::Proto::DNS
Add Rex::Proto::DNS and Rex::Proto::DNS::Constants namespaces
Create Rex::Proto::DNS::Resolver from Net::DNS::Resolver
Create Rex::Proto::DNS::Server and Rex::Proto::DNS::Server::Cache

Constants -
  A Rex::Socket style MATCH_HOSTNAME regex has been added to
help validate DNS names.

Resolver -
  Based off of old work creating Rex socket overrides in the
Net::DNS::Resolver as well as allowing for proxying and making
automatic adjustments to use TCP for proxied connections. This
resolver pivots with MSF, uses proxies, and doesnt pull in the
default /etc/resolv.conf information which can lead to info leak.
  Automatically sends Net::DNS::Packet and Resolv::DNS::Message
objects to the appropriate nameservers.
  TODO: Review for potential low level concurrent resolution impl.

Server::Cache -
  Threadsafe wrapper around a Hash which holds Net::DNS::RR keys
with Time.to_i values for counting eviction/stale time without
altering the original record.
  Takes records with a TTL of < 1 as static entries which are not
flushed or pruned by the monitor thread.

Server -
  A standard Rex level server allowing for client connections with
TCP and UDP listeners. Provides common framework for handling the
different transports by creating a "client" type object as a Rex
UDP socket and passing it back to the dispatch/sender methods.
This server can host listeners on remote pivot targets since it
utilizes Rex sockets, and should not leak internal information
from the resolver as easily either.
  Can be configured with a custom resolver regardless of its own
listener configuration (UDP/TCP mix is fine), and carries a
threadsafe wrapper for swapping the resolvers nameservers under
a Mutex.synchronize. Since listeners and resolvers can pivot,
a compromised host in one environment can serve DNS information
obtained by the resolver pivoting through a completely different
target.
  The server takes blocks for dispatch and send functions which
when defined, will intercept the standard execution flow which is
to parse the request, check the cache for corresponding records,
then forward the remaining questions in a request via the resolver,
and build + send a response back to the client.
  The accessors for dispatch and send, resolver, and cache are
accessible at runtime, though it is likely unsafe to replace the
cache and resolver while they are accessed from other threads.

-----

Testing:
  Initial testing performed in IRB/Pry generating manual requests.
  Subsequent checks performed using the running server as the sys
resolver.
  Additional testing is needed - the default dispatch_request
behavior may not be correct (i need to check the RFCs for this) as
it handles multiple questions for A records. This should be tuned
to be RFC compliant, with inheriting classes changing behavior as
needed. We also need to ensure that we're not leaking our own DNS
information to our targets, so all sorts of abuse is in order.

-----

TODO:
  Create Msf::Exploit::DNS namespace utilizing this functionality.
  - Move the threaded enum_dns work, as well as work from 6187,
into the namespace
  - Review existing modules for functional overlap and move here
as needed. This should be done in separate commits/PRs.
  Create specific DNS servers for spoofing, exploit delivery, and
finally handling DNS tunnels (the primary reason for this work).
  Write spec
  - Convince/coerce a friendly soul in the community to handle
spec for this fiasco while building further functionality.
2017-06-23 19:58:29 -04:00
Brent Cook c3090a4f9c Land #8601, make session logging more useful, don't lose characters 2017-06-23 17:36:01 -05:00
William Webb 9eeb3dc143 use typical command option and TLV scheme instead of dumb stuff for keyscan_start 2017-06-23 13:11:12 -05:00
Dirkjan Mollema 03b36757e4 Added session name to logfile name 2017-06-23 13:26:36 +02:00
Dirkjan Mollema 24379f907e Fixed timestamped logger cutting off last character (fixes #8597) 2017-06-23 13:19:16 +02:00
OJ a3607c6802 Update to Mimikatz 2.1.1 20170608 to include changntlm 2017-06-23 13:40:01 +10:00
James Lee 283f36f79a Compare headers w/process keys instead of themselves
Also clarifies a bunch of old bad variable names
2017-06-22 21:43:11 -05:00
Brent Cook 2617ae7609 Land #8513, check extapi commands for dependencies 2017-06-22 20:21:26 -05:00
Brent Cook fda2e8c73d Land #8523, Add support for session GUIDs 2017-06-22 20:10:10 -05:00
Metasploit fad696ed58 Bump version of framework to 4.15.0 2017-06-22 18:02:38 -07:00
David Maloney c307cfab50 Land #8592, rpc module info
enhance module details returned by the RPC
2017-06-22 14:18:39 -05:00
David Maloney 3a445655ae Land #8511, console search options
lands sempervictus' console search command
enahncements and bug fixes
2017-06-22 12:07: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 0eaffde4b3 fix rex arguments parser to handle adjacent flags, update accordingly 2017-06-22 09:54:03 -05:00
William Webb 47a659f554 Land #8185, Convert ntp modules to bindata 2017-06-22 09:37:58 -05:00
Brent Cook eb4c4c911b Land #8587, Add android wakelock command to turn the screen on 2017-06-21 14:48:20 -05:00
Brent Cook f96f61d29e enhance module info to be on par with pro RPC interface 2017-06-21 08:36:49 -05:00
Spencer McIntyre 717f9aad12 Add more OSX Railgun defs and better CDECL support 2017-06-21 08:59:42 -04:00
OJ a9e03c1efd Initial working version of AES encryption of TLVs 2017-06-21 21:01:59 +10:00
Brent Cook d81d0ea4ba print a friendlier status msg 2017-06-21 03:09:42 -05:00
Brent Cook b9904572f9 update winpmem dump handler for 64-bit support 2017-06-21 03:02:50 -05:00
OJ 2129959d2d Begin rework of packet handling
This moves some of the packet-specific stuff to the packet class itself
2017-06-20 19:18:37 +10:00
James Lee 700dfee963 Land #8584, remove meterpreter TLVs for dead code 2017-06-19 15:56:15 -05:00
Pearce Barry c0efb7bc76 Land #8573, Adapted the authentitcity_token scheme 2017-06-19 15:45:20 -05:00
Spencer McIntyre f7c133cdf7 Add OSX support to railgun 2017-06-19 11:11:55 -04:00
OJ cec87a3e4f Start of support for AES packet encryption 2017-06-19 22:27:51 +10:00
OJ a48f0fcec6 Remove references to Meterpreter CRYPTO TLVs
This feature wasn't supported, and so the TLVs are no longer needed.
2017-06-19 16:53:33 +10:00
RageLtMan 42d1fae2e6 Upstream console search additions and fixes
The -S flag for console commands, backed by search functionality
in Rex' tables, originally pushed upstream in #1604 (iirc), lacks
coverage for a number of commands which benefit a good deal from
inline filtering of the potentially large number of results.

Push more -S flags and surrounding table functionality upstream
to provide coverage for the console commands included in framework.

Include a fix for deleting hosts when DB references are a problem.

Include a fix for the upstream route command wherein scope must be
defined for the routing target by assuming a /32 without explicit
definition.

Note:
  With this in place, console behavior when filtering results is
roughly analagous to the R7 filtering in web UI, which should help
those of us trying to use both maintain corresponding workflows.

Testing:
  Used in-house for years, though changes to the diff from upstream
and our fork (expunging some internal code) are untested, so would
appreciate eyes and hands on.
2017-06-16 20:28:51 -04:00
Metasploit 9ce0bb9345 Bump version of framework to 4.14.28 2017-06-16 10:02:07 -07:00
SecureAB ef7434b59b added new authentitcity_token scheme 2017-06-16 16:54:38 +02: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
OJ 64bf6910e2 Remove SSL support from windows reverse_tcp payloads 2017-06-14 22:04:25 +10:00
RageLtMan 32fbad7fca Style changes for cmd_ps cleanup 2017-06-14 01:28:21 -04:00
Metasploit 0515980138 Bump version of framework to 4.14.27 2017-06-12 07:39:14 -07:00
RageLtMan 762427b447 Clean up cmd_ps table output for Mettle
Mettle can run in all sorts of environments where some colums of a
process table will be nil. The existing implementation compacts
rows going into the table while providing filtering for the colum
contents only by checking the output of the first row in the proc
table.

Check column filters against all rows to ensure proper table init.
Check columns going into table for match against header.
Do not compact nil values in the table rows - some things, like
kthreads/workers dont have a path while other PIDs will.
2017-06-12 01:20:59 -04: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
Metasploit 77b1125e77 Bump version of framework to 4.14.26 2017-06-09 10:03:35 -07:00
David Maloney c89fee89db Land #8529, RPC Session Arch
Lands pr adding Session arch to info
returned by rpc
2017-06-09 11:58:19 -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
William Vu 4198efa41f Remove pry from CommandDispatcher::Creds...
My bad. Should have been caught in #8517.
2017-06-08 00:18:46 -05:00
OJ eef82a501d Add support for session GUIDs in mettle 2017-06-08 11:20:48 +10:00
William Vu 3e27fd3db4 Land #8517, CommandDispatcher::Common
Also fixes jobs -i.
2017-06-07 03:20:45 -05:00
William Vu 596924552e Fix literal \n in jobs -i
Regression from #4063.
2017-06-07 03:19:30 -05:00
Spencer McIntyre a052ee4064 Use the opts hash not the datastore 2017-06-06 20:02:06 -04:00
OJ 6131e4bd82 Fix download lambda function to take correct param count
This is an emergency fix as a result of something being broken in
master. This is also being pushed straight to master because github is
down and the PR process isn't possible. This commit was reviewed by
@wvu-r7 prior to being pushed.
2017-06-07 09:37:24 +10:00