metasploit-payloads 2.0.44 → 2.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/data/android/meterpreter.dex +0 -0
  5. data/data/android/meterpreter.jar +0 -0
  6. data/data/android/metstage.jar +0 -0
  7. data/data/android/shell.jar +0 -0
  8. data/data/meterpreter/elevator.x64.dll +0 -0
  9. data/data/meterpreter/elevator.x86.dll +0 -0
  10. data/data/meterpreter/ext_server_espia.x64.dll +0 -0
  11. data/data/meterpreter/ext_server_espia.x86.dll +0 -0
  12. data/data/meterpreter/ext_server_extapi.x64.dll +0 -0
  13. data/data/meterpreter/ext_server_extapi.x86.dll +0 -0
  14. data/data/meterpreter/ext_server_incognito.x64.dll +0 -0
  15. data/data/meterpreter/ext_server_incognito.x86.dll +0 -0
  16. data/data/meterpreter/ext_server_kiwi.x64.dll +0 -0
  17. data/data/meterpreter/ext_server_kiwi.x86.dll +0 -0
  18. data/data/meterpreter/ext_server_lanattacks.x64.dll +0 -0
  19. data/data/meterpreter/ext_server_lanattacks.x86.dll +0 -0
  20. data/data/meterpreter/ext_server_peinjector.x64.dll +0 -0
  21. data/data/meterpreter/ext_server_peinjector.x86.dll +0 -0
  22. data/data/meterpreter/ext_server_powershell.x64.dll +0 -0
  23. data/data/meterpreter/ext_server_powershell.x86.dll +0 -0
  24. data/data/meterpreter/ext_server_priv.x64.dll +0 -0
  25. data/data/meterpreter/ext_server_priv.x86.dll +0 -0
  26. data/data/meterpreter/ext_server_python.x64.dll +0 -0
  27. data/data/meterpreter/ext_server_python.x86.dll +0 -0
  28. data/data/meterpreter/ext_server_sniffer.x64.dll +0 -0
  29. data/data/meterpreter/ext_server_sniffer.x86.dll +0 -0
  30. data/data/meterpreter/ext_server_stdapi.x64.dll +0 -0
  31. data/data/meterpreter/ext_server_stdapi.x86.dll +0 -0
  32. data/data/meterpreter/ext_server_unhook.x64.dll +0 -0
  33. data/data/meterpreter/ext_server_unhook.x86.dll +0 -0
  34. data/data/meterpreter/ext_server_winpmem.x64.dll +0 -0
  35. data/data/meterpreter/ext_server_winpmem.x86.dll +0 -0
  36. data/data/meterpreter/meterpreter.jar +0 -0
  37. data/data/meterpreter/meterpreter.py +14 -23
  38. data/data/meterpreter/metsrv.x64.dll +0 -0
  39. data/data/meterpreter/metsrv.x86.dll +0 -0
  40. data/data/meterpreter/screenshot.x64.dll +0 -0
  41. data/data/meterpreter/screenshot.x86.dll +0 -0
  42. data/lib/metasploit-payloads.rb +69 -25
  43. data/lib/metasploit-payloads/version.rb +1 -1
  44. metadata +2 -2
  45. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ab4d6f7077681538f0be13a4655905a35908d0f797ff438175dcd134ece265b
4
- data.tar.gz: 0e8ef069a3351beb5c9b29b5cbcf6e5f43f6dee67808ce9980d63bba24ee1eb9
3
+ metadata.gz: 5b4ebeff606061a918b56af763ae9805ab29e677ed65babebc048750b77e1e64
4
+ data.tar.gz: '038ad1767ddd11bcc6f28bde15ba5db94b69cce108ffd125c006849787b2cf02'
5
5
  SHA512:
6
- metadata.gz: 5e19788faa20ca966576ff1145c42f15c8f1e2649ddb7cdd9aea1a99b9dda5e967e9dda0f64a0a20d146040291382afd12f65d847ff32b6ea7c26e6c3ea78dea
7
- data.tar.gz: 5443da4c81d3848c4d00c3389322c8d07c9cb6d3b30beadb129292cd1e471735434c0508268441e52aa778fa87767f0ab5181e19a6dd7c772f5866d5f0542274
6
+ metadata.gz: 01147ee86c2d166c2747d956779ad48d56341b7e320f28929512c83def63388adf2a6afa218b3f854fc092b6d7d69261e1fc963b999f6536f151c11f13e0fcbe
7
+ data.tar.gz: 37bd7b524e2d7622e9b97dfa6d780aa3490d2dcb0f3ba7b3b40098db9e36664dccad08bd01a8c9908c8323f7c0acd1165185aca466975319495c174fd10c09a3
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -988,15 +988,6 @@ class HttpTransport(Transport):
988
988
  self._first_packet = None
989
989
  self._empty_cnt = 0
990
990
 
991
- def _activate(self):
992
- return True
993
- self._first_packet = None
994
- packet = self._get_packet()
995
- if packet is None:
996
- return False
997
- self._first_packet = packet
998
- return True
999
-
1000
991
  def _get_packet(self):
1001
992
  if self._first_packet:
1002
993
  packet = self._first_packet
@@ -1004,31 +995,31 @@ class HttpTransport(Transport):
1004
995
  return packet
1005
996
  packet = None
1006
997
  xor_key = None
998
+ url_h = None
1007
999
  request = urllib.Request(self.url, None, self._http_request_headers)
1008
1000
  urlopen_kwargs = {}
1009
1001
  if sys.version_info > (2, 6):
1010
1002
  urlopen_kwargs['timeout'] = self.communication_timeout
1011
1003
  try:
1012
1004
  url_h = urllib.urlopen(request, **urlopen_kwargs)
1013
- packet = url_h.read()
1014
- for _ in range(1):
1015
- if packet == '':
1016
- break
1005
+ if url_h.code == 200:
1006
+ packet = url_h.read()
1017
1007
  if len(packet) < PACKET_HEADER_SIZE:
1018
1008
  packet = None # looks corrupt
1019
- break
1020
- xor_key = struct.unpack('BBBB', packet[:PACKET_XOR_KEY_SIZE])
1021
- header = xor_bytes(xor_key, packet[:PACKET_HEADER_SIZE])
1022
- pkt_length = struct.unpack('>I', header[PACKET_LENGTH_OFF:PACKET_LENGTH_OFF+PACKET_LENGTH_SIZE])[0] - 8
1023
- if len(packet) != (pkt_length + PACKET_HEADER_SIZE):
1024
- packet = None # looks corrupt
1009
+ else:
1010
+ xor_key = struct.unpack('BBBB', packet[:PACKET_XOR_KEY_SIZE])
1011
+ header = xor_bytes(xor_key, packet[:PACKET_HEADER_SIZE])
1012
+ pkt_length = struct.unpack('>I', header[PACKET_LENGTH_OFF:PACKET_LENGTH_OFF + PACKET_LENGTH_SIZE])[0] - 8
1013
+ if len(packet) != (pkt_length + PACKET_HEADER_SIZE):
1014
+ packet = None # looks corrupt
1025
1015
  except:
1026
- debug_traceback('Failure to receive packet from ' + self.url)
1016
+ debug_traceback('[-] failure to receive packet from ' + self.url)
1027
1017
 
1028
1018
  if not packet:
1029
- delay = 10 * self._empty_cnt
1030
- if self._empty_cnt >= 0:
1031
- delay *= 10
1019
+ if url_h and url_h.code == 200:
1020
+ # server has nothing for us but this is fine so update the communication time and wait
1021
+ self.communication_last = time.time()
1022
+ delay = 100 * self._empty_cnt
1032
1023
  self._empty_cnt += 1
1033
1024
  time.sleep(float(min(10000, delay)) / 1000)
1034
1025
  return packet
Binary file
Binary file
Binary file
Binary file
@@ -69,30 +69,24 @@ module MetasploitPayloads
69
69
  end
70
70
 
71
71
  #
72
- # List all the available extensions for the given suffix.
72
+ # List all the available extensions, optionally filtered by the given suffix.
73
73
  #
74
- def self.list_meterpreter_extensions(binary_suffix)
75
- extensions = []
76
-
77
- root_dirs = [local_meterpreter_dir]
78
-
79
- # Find the valid extensions in the data folder first, if MSF
80
- # is installed.
81
- if metasploit_installed?
82
- root_dirs.unshift(msf_meterpreter_dir)
83
- root_dirs.unshift(user_meterpreter_dir)
84
- end
85
-
86
- root_dirs.each do |dir|
87
- next unless ::File.directory?(dir)
88
-
89
- # Merge in any that don't already exist in the collection.
90
- meterpreter_enum_ext(dir, binary_suffix).each do |e|
91
- extensions.push(e) unless extensions.include?(e)
92
- end
93
- end
74
+ # @param [String] binary_suffix An optional suffix to use for filtering results. If omitted, all extensions will be
75
+ # returned.
76
+ # @return [Array<String>] Returns an array of extensions.
77
+ def self.list_meterpreter_extensions(binary_suffix=nil)
78
+ list_meterpreter_dirs { |dir| meterpreter_enum_ext(dir, binary_suffix) }
79
+ end
94
80
 
95
- extensions
81
+ #
82
+ # List all the available suffixes, optionally filtered by the given extension name. This is mostly useful for
83
+ # determining support for a specific extension.
84
+ #
85
+ # @param [String] extension_name An optional extension name to use for filtering results. If omitted, all suffixes
86
+ # will be returned.
87
+ # @return [Array<String>] Returns an array of binary suffixes.
88
+ def self.list_meterpreter_extension_suffixes(extension_name=nil)
89
+ list_meterpreter_dirs { |dir| meterpreter_enum_ext_suffixes(dir, extension_name) }
96
90
  end
97
91
 
98
92
  #
@@ -124,19 +118,43 @@ module MetasploitPayloads
124
118
  end
125
119
 
126
120
  #
127
- # Enumerate extensions in the given root folder based on the suffix.
121
+ # Enumerate extensions in the given root folder based on an optional suffix.
128
122
  #
129
- def self.meterpreter_enum_ext(root_dir, binary_suffix)
123
+ # @param [String] root_dir The path to the directory from which to enumerate extensions.
124
+ # @param [String] binary_suffix An optional suffix to use for filtering results. If omitted, all extensions will be
125
+ # returned.
126
+ # @return [Array<String>] Returns an array of extensions.
127
+ def self.meterpreter_enum_ext(root_dir, binary_suffix=nil)
130
128
  exts = []
129
+ binary_suffix ||= '.*'
131
130
  ::Dir.entries(root_dir).each do |f|
132
131
  if ::File.readable?(::File.join(root_dir, f)) && \
133
- f =~ /#{EXTENSION_PREFIX}(.*)\.#{binary_suffix}/
132
+ f =~ /#{EXTENSION_PREFIX}(\w+)\.#{binary_suffix}/
134
133
  exts.push($1)
135
134
  end
136
135
  end
137
136
  exts
138
137
  end
139
138
 
139
+ #
140
+ # Enumerate binary suffixes in the given root folder based on an optional extension name.
141
+ #
142
+ # @param [String] root_dir The path to the directory from which to enumerate extension suffixes.
143
+ # @param [String] extension_name An optional extension name to use for filtering results. If omitted, all suffixes will
144
+ # be returned.
145
+ # @return [Array<String>] Returns an array of binary suffixes.
146
+ def self.meterpreter_enum_ext_suffixes(root_dir, extension_name=nil)
147
+ suffixes = []
148
+ extension_name ||= '\w+'
149
+ ::Dir.entries(root_dir).each do |f|
150
+ if ::File.readable?(::File.join(root_dir, f)) && \
151
+ f =~ /#{EXTENSION_PREFIX}#{extension_name}\.(\w+(\.\w+)*)/
152
+ suffixes.push($1)
153
+ end
154
+ end
155
+ suffixes
156
+ end
157
+
140
158
  private
141
159
 
142
160
  #
@@ -164,4 +182,30 @@ module MetasploitPayloads
164
182
  @local_paths << path
165
183
  end
166
184
  end
185
+
186
+ class << self
187
+ private
188
+ def list_meterpreter_dirs(&block)
189
+ things = [] # *things* is whatever is being enumerated (extension names, suffixes, etc.) as determined by the block
190
+ root_dirs = [local_meterpreter_dir]
191
+
192
+ # Find the valid extensions in the data folder first, if MSF
193
+ # is installed.
194
+ if metasploit_installed?
195
+ root_dirs.unshift(msf_meterpreter_dir)
196
+ root_dirs.unshift(user_meterpreter_dir)
197
+ end
198
+
199
+ root_dirs.each do |dir|
200
+ next unless ::File.directory?(dir)
201
+
202
+ # Merge in any that don't already exist in the collection.
203
+ (yield dir).each do |e|
204
+ things.push(e) unless things.include?(e)
205
+ end
206
+ end
207
+
208
+ things
209
+ end
210
+ end
167
211
  end
@@ -1,6 +1,6 @@
1
1
  # -*- coding:binary -*-
2
2
  module MetasploitPayloads
3
- VERSION = '2.0.44'
3
+ VERSION = '2.0.48'
4
4
 
5
5
  def self.version
6
6
  VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit-payloads
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.44
4
+ version: 2.0.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - OJ Reeves
@@ -96,7 +96,7 @@ cert_chain:
96
96
  EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
97
97
  9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
98
98
  -----END CERTIFICATE-----
99
- date: 2021-04-28 00:00:00.000000000 Z
99
+ date: 2021-07-16 00:00:00.000000000 Z
100
100
  dependencies:
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: rake
metadata.gz.sig CHANGED
Binary file