metasploit-payloads 2.0.153 → 2.0.154

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 (88) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.gitignore +1 -0
  4. data/.rspec +1 -0
  5. data/Gemfile +4 -0
  6. data/data/android/meterpreter.jar +0 -0
  7. data/data/android/metstage.jar +0 -0
  8. data/data/android/shell.jar +0 -0
  9. data/data/meterpreter/dump_sam.x64.debug.dll +0 -0
  10. data/data/meterpreter/dump_sam.x64.dll +0 -0
  11. data/data/meterpreter/dump_sam.x86.debug.dll +0 -0
  12. data/data/meterpreter/dump_sam.x86.dll +0 -0
  13. data/data/meterpreter/elevator.x64.debug.dll +0 -0
  14. data/data/meterpreter/elevator.x64.dll +0 -0
  15. data/data/meterpreter/elevator.x86.debug.dll +0 -0
  16. data/data/meterpreter/elevator.x86.dll +0 -0
  17. data/data/meterpreter/ext_server_bofloader.x64.debug.dll +0 -0
  18. data/data/meterpreter/ext_server_bofloader.x64.dll +0 -0
  19. data/data/meterpreter/ext_server_bofloader.x86.debug.dll +0 -0
  20. data/data/meterpreter/ext_server_bofloader.x86.dll +0 -0
  21. data/data/meterpreter/ext_server_espia.x64.debug.dll +0 -0
  22. data/data/meterpreter/ext_server_espia.x64.dll +0 -0
  23. data/data/meterpreter/ext_server_espia.x86.debug.dll +0 -0
  24. data/data/meterpreter/ext_server_espia.x86.dll +0 -0
  25. data/data/meterpreter/ext_server_extapi.x64.debug.dll +0 -0
  26. data/data/meterpreter/ext_server_extapi.x64.dll +0 -0
  27. data/data/meterpreter/ext_server_extapi.x86.debug.dll +0 -0
  28. data/data/meterpreter/ext_server_extapi.x86.dll +0 -0
  29. data/data/meterpreter/ext_server_incognito.x64.debug.dll +0 -0
  30. data/data/meterpreter/ext_server_incognito.x64.dll +0 -0
  31. data/data/meterpreter/ext_server_incognito.x86.debug.dll +0 -0
  32. data/data/meterpreter/ext_server_incognito.x86.dll +0 -0
  33. data/data/meterpreter/ext_server_kiwi.x64.debug.dll +0 -0
  34. data/data/meterpreter/ext_server_kiwi.x64.dll +0 -0
  35. data/data/meterpreter/ext_server_kiwi.x86.debug.dll +0 -0
  36. data/data/meterpreter/ext_server_kiwi.x86.dll +0 -0
  37. data/data/meterpreter/ext_server_lanattacks.x64.debug.dll +0 -0
  38. data/data/meterpreter/ext_server_lanattacks.x64.dll +0 -0
  39. data/data/meterpreter/ext_server_lanattacks.x86.debug.dll +0 -0
  40. data/data/meterpreter/ext_server_lanattacks.x86.dll +0 -0
  41. data/data/meterpreter/ext_server_peinjector.x64.debug.dll +0 -0
  42. data/data/meterpreter/ext_server_peinjector.x64.dll +0 -0
  43. data/data/meterpreter/ext_server_peinjector.x86.debug.dll +0 -0
  44. data/data/meterpreter/ext_server_peinjector.x86.dll +0 -0
  45. data/data/meterpreter/ext_server_powershell.x64.debug.dll +0 -0
  46. data/data/meterpreter/ext_server_powershell.x64.dll +0 -0
  47. data/data/meterpreter/ext_server_powershell.x86.debug.dll +0 -0
  48. data/data/meterpreter/ext_server_powershell.x86.dll +0 -0
  49. data/data/meterpreter/ext_server_priv.x64.debug.dll +0 -0
  50. data/data/meterpreter/ext_server_priv.x64.dll +0 -0
  51. data/data/meterpreter/ext_server_priv.x86.debug.dll +0 -0
  52. data/data/meterpreter/ext_server_priv.x86.dll +0 -0
  53. data/data/meterpreter/ext_server_python.x64.debug.dll +0 -0
  54. data/data/meterpreter/ext_server_python.x64.dll +0 -0
  55. data/data/meterpreter/ext_server_python.x86.debug.dll +0 -0
  56. data/data/meterpreter/ext_server_python.x86.dll +0 -0
  57. data/data/meterpreter/ext_server_sniffer.x64.dll +0 -0
  58. data/data/meterpreter/ext_server_sniffer.x86.dll +0 -0
  59. data/data/meterpreter/ext_server_stdapi.x64.debug.dll +0 -0
  60. data/data/meterpreter/ext_server_stdapi.x64.dll +0 -0
  61. data/data/meterpreter/ext_server_stdapi.x86.debug.dll +0 -0
  62. data/data/meterpreter/ext_server_stdapi.x86.dll +0 -0
  63. data/data/meterpreter/ext_server_unhook.x64.debug.dll +0 -0
  64. data/data/meterpreter/ext_server_unhook.x64.dll +0 -0
  65. data/data/meterpreter/ext_server_unhook.x86.debug.dll +0 -0
  66. data/data/meterpreter/ext_server_unhook.x86.dll +0 -0
  67. data/data/meterpreter/ext_server_winpmem.x64.debug.dll +0 -0
  68. data/data/meterpreter/ext_server_winpmem.x64.dll +0 -0
  69. data/data/meterpreter/ext_server_winpmem.x86.debug.dll +0 -0
  70. data/data/meterpreter/ext_server_winpmem.x86.dll +0 -0
  71. data/data/meterpreter/metsrv.x64.debug.dll +0 -0
  72. data/data/meterpreter/metsrv.x64.dll +0 -0
  73. data/data/meterpreter/metsrv.x86.debug.dll +0 -0
  74. data/data/meterpreter/metsrv.x86.dll +0 -0
  75. data/data/meterpreter/screenshot.x64.debug.dll +0 -0
  76. data/data/meterpreter/screenshot.x64.dll +0 -0
  77. data/data/meterpreter/screenshot.x86.debug.dll +0 -0
  78. data/data/meterpreter/screenshot.x86.dll +0 -0
  79. data/lib/metasploit-payloads/error.rb +36 -0
  80. data/lib/metasploit-payloads/version.rb +1 -1
  81. data/lib/metasploit-payloads.rb +93 -4
  82. data/manifest +73 -73
  83. data/manifest.uuid +1 -1
  84. data/spec/metasploit_payloads/metasploit_payloads_spec.rb +249 -0
  85. data/spec/spec_helper.rb +103 -0
  86. data.tar.gz.sig +0 -0
  87. metadata +5 -1
  88. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f236dc912a4d70590a93b5c0ff03b98aba85a33dae65569eb76f77e4e2c2f2ee
4
- data.tar.gz: 1bb5a328df81b0639b9ecd2d69aab2f5c23f0fd1222259d8cae8089b12294c76
3
+ metadata.gz: 8be6e3a79a976f76e3bdcd7131211f87d506e1d7951c8570970a00cca95d0685
4
+ data.tar.gz: 2aec19188104778d80c4626f306f11d8eb290f2e56b34b2881b59692c4fd5567
5
5
  SHA512:
6
- metadata.gz: 44dfbd9505f397cc2b2cb31afc2c3fb82087ae9cffdcc82059058c868e44fecf73b7be96ea99e3521cc91a5c5a4224aa6333e8ea20f6540cedce62666ac5f9cb
7
- data.tar.gz: 8e8ace929e8cf636f15e4cf1d91f88e86e8387852d33e3cbf5957243a8c5ed3137911a3188321d980d345b0a62aa3e9beba332a904dfe71ac582b5f026b4eb6e
6
+ metadata.gz: 352963fe40d6ce798c357c117dfaca9bdf99f5a504bc89b56586e5c0f8a852c896605a800db41c525ca4a350a06b1f37258f14da2fc93b43fd5d14719f4cf863
7
+ data.tar.gz: 261e198987bd0aa0f4e05319fd31145781c83cf456f13148047174489f43be9e7aa4f452a156e9244773fac8599ebfd9ee610adcbeb4ab2f7266ca67757c9180
checksums.yaml.gz.sig CHANGED
Binary file
data/.gitignore CHANGED
@@ -7,6 +7,7 @@ InstalledFiles
7
7
  lib/bundler/man
8
8
  rdoc
9
9
  spec/reports
10
+ spec/examples.txt
10
11
  test/tmp
11
12
  test/version_tmp
12
13
  tmp
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in meterpreter_binaries.gemspec
4
4
  gemspec
5
+
6
+ group :test do
7
+ gem 'rspec'
8
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MetasploitPayloads
4
+ class Error < StandardError
5
+ end
6
+
7
+ # Error raised when a Metasploit Payloads file doesn't exist.
8
+ class NotFoundError < Error
9
+ attr_reader :path
10
+
11
+ def initialize(path = '')
12
+ @path = path
13
+ super("Meterpreter path #{@path} not found. Ensure antivirus is not enabled, or reinstall Metasploit.")
14
+ end
15
+ end
16
+
17
+ # Error raised when the user does not have read permissions for a Metasploit Payloads file
18
+ class NotReadableError < Error
19
+ attr_reader :path
20
+
21
+ def initialize(path = '')
22
+ @path = path
23
+ super("Meterpreter path #{@path} is not readable. Check if you have read access and try again.")
24
+ end
25
+ end
26
+
27
+ # Error raised when a Metasploit Payloads file's hash does not match what is defined in the manifest file.
28
+ class HashMismatchError < Error
29
+ attr_reader :path
30
+
31
+ def initialize(path = '')
32
+ @path = path
33
+ super("Meterpreter path #{@path} does not match the hash defined in the Metasploit Payloads manifest file.")
34
+ end
35
+ end
36
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- coding:binary -*-
2
2
  module MetasploitPayloads
3
- VERSION = '2.0.153'
3
+ VERSION = '2.0.154'
4
4
 
5
5
  def self.version
6
6
  VERSION
@@ -1,6 +1,8 @@
1
1
  # -*- coding:binary -*-
2
2
 
3
+ require 'openssl' unless defined? OpenSSL::Digest
3
4
  require 'metasploit-payloads/version' unless defined? MetasploitPayloads::VERSION
5
+ require 'metasploit-payloads/error' unless defined? MetasploitPayloads::Error
4
6
 
5
7
  #
6
8
  # This module dispenses Metasploit payload binary files
@@ -10,6 +12,56 @@ module MetasploitPayloads
10
12
  METERPRETER_SUBFOLDER = 'meterpreter'
11
13
  USER_DATA_SUBFOLDER = 'payloads'
12
14
 
15
+ #
16
+ # @return [Array<Hash<String, Symbol>>] An array of filenames with warnings. Provides a file name and error.
17
+ # Empty if all needed Meterpreter files exist and have the correct hash.
18
+ def self.manifest_errors
19
+ manifest_errors = []
20
+
21
+ begin
22
+ manifest_contents = ::File.binread(manifest_path)
23
+ rescue => e
24
+ return [{ path: manifest_path, error: e }]
25
+ end
26
+
27
+ begin
28
+ manifest_uuid_contents = ::File.binread(manifest_uuid_path)
29
+ rescue => e
30
+ manifest_errors.append({ path: manifest_uuid_path, error: e })
31
+ end
32
+
33
+ # Check if the hash of the manifest file is correct.
34
+ if manifest_uuid_contents
35
+ manifest_digest = ::OpenSSL::Digest.new('SHA3-256', manifest_contents)
36
+ uuid_matches = (manifest_uuid_contents.chomp == manifest_digest.to_s)
37
+ unless uuid_matches
38
+ e = ::MetasploitPayloads::HashMismatchError.new(manifest_path)
39
+ manifest_errors.append({ path: manifest_path, error: e })
40
+ end
41
+ end
42
+
43
+ manifest_contents.each_line do |line|
44
+ filename, hash_type, hash = line.chomp.split(':')
45
+ begin
46
+ # self.path prepends the gem data directory, which is already present in the manifest file.
47
+ out_path = self.path(filename.sub('./data/', ''))
48
+ # self.path can return a path to the gem data, or user's local data.
49
+ bundled_file = out_path.start_with?(data_directory)
50
+ if bundled_file
51
+ file_hash_match = (::OpenSSL::Digest.new(hash_type, ::File.binread(out_path)).to_s == hash)
52
+ unless file_hash_match
53
+ e = ::MetasploitPayloads::HashMismatchError.new(out_path)
54
+ manifest_errors.append({ path: e.path, error: e })
55
+ end
56
+ end
57
+ rescue ::MetasploitPayloads::NotFoundError, ::MetasploitPayloads::NotReadableError => e
58
+ manifest_errors.append({ path: e.path, error: e })
59
+ end
60
+ end
61
+
62
+ manifest_errors
63
+ end
64
+
13
65
  #
14
66
  # Get the path to an extension based on its name (no prefix).
15
67
  #
@@ -17,6 +69,14 @@ module MetasploitPayloads
17
69
  path(METERPRETER_SUBFOLDER, "#{EXTENSION_PREFIX}#{ext_name}.#{binary_suffix}")
18
70
  end
19
71
 
72
+ #
73
+ # Get the path for the first readable path in the provided arguments.
74
+ # Start with the provided `extra_paths` then fall back to the `gem_path`.
75
+ #
76
+ # @param [String] gem_path a path to the gem
77
+ # @param [Array<String>] extra_paths a path to any extra paths that should be evaluated for local files before `gem_path`
78
+ # @raise [NotReadableError] if the user doesn't have read permissions for the currently-evaluated path
79
+ # @return [String,nil] A readable path or nil
20
80
  def self.readable_path(gem_path, *extra_paths)
21
81
  # Try the MSF path first to see if the file exists, allowing the MSF data
22
82
  # folder to override what is in the gem. This is very helpful for
@@ -24,12 +84,18 @@ module MetasploitPayloads
24
84
  # each time. We only do this is MSF is installed.
25
85
  extra_paths.each do |extra_path|
26
86
  if ::File.readable? extra_path
27
- warn_local_path(extra_path) if ::File.readable? gem_path
87
+ warn_local_path(extra_path)
28
88
  return extra_path
89
+ else
90
+ # Raise rather than falling back;
91
+ # If there is a local file present, let's assume that the user wants to use it (e.g. local dev. changes)
92
+ # rather than having MSF Console falling back to the files in the gem
93
+ raise ::MetasploitPayloads::NotReadableError, extra_path, caller if ::File.exist?(extra_path)
29
94
  end
30
95
  end
31
96
 
32
97
  return gem_path if ::File.readable? gem_path
98
+ raise ::MetasploitPayloads::NotReadableError, gem_path, caller if ::File.exist?(gem_path)
33
99
 
34
100
  nil
35
101
  end
@@ -37,21 +103,36 @@ module MetasploitPayloads
37
103
  #
38
104
  # Get the path to a meterpreter binary by full name.
39
105
  #
106
+ # @param [String] name The name of the requested binary without any file extensions
107
+ # @param [String] binary_suffix The binary extension, without the leading '.' char (e.g. `php`, `jar`)
108
+ # @param [Boolean] debug Request a debug version of the binary. This adds a
109
+ # leading '.debug' to the extension if looking for a DLL file.
40
110
  def self.meterpreter_path(name, binary_suffix, debug: false)
41
111
  binary_suffix = binary_suffix&.gsub(/dll$/, 'debug.dll') if debug
42
112
  path(METERPRETER_SUBFOLDER, "#{name}.#{binary_suffix}".downcase)
43
113
  end
44
114
 
45
115
  #
46
- # Get the full path to any file packaged in this gem by local path and name.
116
+ # Get the full path to any file packaged in this gem or other Metasploit Framework directories by local path and name.
47
117
  #
118
+ # @param [Array<String>] path_parts requested path parts that will be joined
119
+ # @raise [NotFoundError] if the requested path/file does not exist
120
+ # @raise [NotReadableError] if the requested file exists but the user doesn't have read permissions
121
+ # @return [String,nil] A path or nil
48
122
  def self.path(*path_parts)
49
123
  gem_path = expand(data_directory, ::File.join(path_parts))
50
124
  if metasploit_installed?
51
125
  user_path = expand(Msf::Config.config_directory, ::File.join(USER_DATA_SUBFOLDER, path_parts))
52
126
  msf_path = expand(Msf::Config.data_directory, ::File.join(path_parts))
127
+ out_path = readable_path(gem_path, user_path, msf_path)
128
+ else
129
+ out_path = readable_path(gem_path)
53
130
  end
54
- readable_path(gem_path, user_path, msf_path)
131
+
132
+ return out_path unless out_path.nil?
133
+ raise ::MetasploitPayloads::NotFoundError, ::File.join(gem_path), caller unless ::File.exist?(gem_path)
134
+
135
+ nil
55
136
  end
56
137
 
57
138
  #
@@ -61,7 +142,7 @@ module MetasploitPayloads
61
142
  file_path = path(path_parts)
62
143
  if file_path.nil?
63
144
  full_path = ::File.join(path_parts)
64
- fail RuntimeError, "#{full_path} not found", caller
145
+ raise ::MetasploitPayloads::NotFoundError, full_path, caller
65
146
  end
66
147
 
67
148
  ::File.binread(file_path)
@@ -203,5 +284,13 @@ module MetasploitPayloads
203
284
 
204
285
  things
205
286
  end
287
+
288
+ def manifest_path
289
+ ::File.realpath(::File.join(::File.dirname(__FILE__), '..', 'manifest'))
290
+ end
291
+
292
+ def manifest_uuid_path
293
+ ::File.realpath(::File.join(::File.dirname(__FILE__), '..', 'manifest.uuid'))
294
+ end
206
295
  end
207
296
  end
data/manifest CHANGED
@@ -2,9 +2,9 @@
2
2
  ./data/android/apk/classes.dex:SHA3-256:0ca34b9e74428678ca808e3601eb30ec78256d76a38c8eecf26e5f419837b769
3
3
  ./data/android/apk/resources.arsc:SHA3-256:9a6f5eb5cb24fb1f83808a67c692e66c1a698d6222db2000b8b07e595689311f
4
4
  ./data/android/meterpreter.dex:SHA3-256:6105628e55ccab5412f899bc8bb563796b53f5941d48283ff892abc09fbd1c6a
5
- ./data/android/meterpreter.jar:SHA3-256:b6561f2f21cc6b4f1a2776346a918676986b5548b4401ba0929302d9ed5891da
6
- ./data/android/metstage.jar:SHA3-256:0838b82b3f064a01a00150336940fa4987f756a984a8ad1c3ca06759247a0929
7
- ./data/android/shell.jar:SHA3-256:9e525562fe2f227c51143759067f1687371481a1fc3c7f71fde016c6c17c8648
5
+ ./data/android/meterpreter.jar:SHA3-256:644553f5c9616780c1b8f420a90614b88da5b18ff1a774896d87fa7810798896
6
+ ./data/android/metstage.jar:SHA3-256:9dadc846e9cd52534631574bd1a5665dd0efb81dfdf26e435d4a0036a546ee27
7
+ ./data/android/shell.jar:SHA3-256:db129427fc3d9195f254cf6e9c4bd75eb0c077ab115a76c72aebae1d406ff3d4
8
8
  ./data/java/com/metasploit/meterpreter/MemoryBufferURLConnection.class:SHA3-256:a5a729165ff85444ee954f19590782def0a66b1941e89f3cb5baed1df72818c8
9
9
  ./data/java/com/metasploit/meterpreter/MemoryBufferURLStreamHandler.class:SHA3-256:386dd1d33383a0d1ac221bf4b914d8b648f5f47aefb3cad0e8d16988854e1762
10
10
  ./data/java/javapayload/stage/Meterpreter.class:SHA3-256:9124d682defeba42a88c766bee21c4d4a0c7c37f63f1928a2614c4d1bea2fecf
@@ -19,79 +19,79 @@
19
19
  ./data/java/metasploit/PayloadTrustManager.class:SHA3-256:e2d25c8b3e43f584e198e46c2576b367f96275800a96a42fd2dc2c81059a3c41
20
20
  ./data/java/metasploit/RMILoader.class:SHA3-256:4add539548d76e0142ff5e6ccdba6ee4b21191354be1a40499cb2a745b480bee
21
21
  ./data/java/metasploit/RMIPayload.class:SHA3-256:0d3e96836a8c3591f4bc827b33c4edb0b4f505a9f17cb0bdb27a367fb71d53c3
22
- ./data/meterpreter/dump_sam.x64.debug.dll:SHA3-256:410d03d4f66766c78a13967d219c6dfb4910592b2f496f10f2d2d18a54eb7086
23
- ./data/meterpreter/dump_sam.x64.dll:SHA3-256:337b6ee55c7c7ddfd6046d64201982968b55eb676c32d6b1d38a548546226583
24
- ./data/meterpreter/dump_sam.x86.debug.dll:SHA3-256:3b94566733c262adf1e419e65c58cbd19314927c0b30fe0106137065d68517cb
25
- ./data/meterpreter/dump_sam.x86.dll:SHA3-256:20b8c4e3ab55c87a81026aa84fad4dff251cd01a6a12a8c0b0d0564197227732
26
- ./data/meterpreter/elevator.x64.debug.dll:SHA3-256:683a7bb692f99565c479f70eb53fdd55a981f96d791752c1c3fcae91d0989731
27
- ./data/meterpreter/elevator.x64.dll:SHA3-256:2d4b2ea010276463f580ce8c628bbf93d2b3e1a46f054fb1baf6d4a5c8fa1d24
28
- ./data/meterpreter/elevator.x86.debug.dll:SHA3-256:2b7c9b45043232b93e96e9222649b25f6d61fd59e43bb5e374552d49cbe1ac30
29
- ./data/meterpreter/elevator.x86.dll:SHA3-256:69854978973b110d39b7eabf5f569f69fe1c01b50192b40335f65c14800db7a8
30
- ./data/meterpreter/ext_server_bofloader.x64.debug.dll:SHA3-256:e093ef4b48586633d5bcd5bc865f6edf38542b08ff9649e0b8815b00bf05c509
31
- ./data/meterpreter/ext_server_bofloader.x64.dll:SHA3-256:7470c6eb76b53d9193c48394e9a76a71e162213ec88b2777ffa8eb8e8e18e8cd
32
- ./data/meterpreter/ext_server_bofloader.x86.debug.dll:SHA3-256:e22120056fe41bfa48d7eada455a4a94eb78c421968a8d37affec45906d3f804
33
- ./data/meterpreter/ext_server_bofloader.x86.dll:SHA3-256:d942a9e9c45ce6d379c9b578ed36cd82168b6852b216edbcfe2b66172335893d
34
- ./data/meterpreter/ext_server_espia.x64.debug.dll:SHA3-256:bc587642240d3728248c174e6fe8b46db173a33e768a1d65e6136f6befa6b66a
35
- ./data/meterpreter/ext_server_espia.x64.dll:SHA3-256:0167dd71b6619276c70e0a711c698c24b890c135255bf994da43391be281cdc6
36
- ./data/meterpreter/ext_server_espia.x86.debug.dll:SHA3-256:764c5ec2d24dceeb46517e454e4faddc64e9c014b8437c73f621128e5ef22c39
37
- ./data/meterpreter/ext_server_espia.x86.dll:SHA3-256:db2dce5e60ffedf3b9e3c04324d2da2b38e6069c07cd358bc70064da41438716
38
- ./data/meterpreter/ext_server_extapi.x64.debug.dll:SHA3-256:edeb08a2447ff609a94b26d9be78d31d4d58134ce2d569982343fcceaa64e8e6
39
- ./data/meterpreter/ext_server_extapi.x64.dll:SHA3-256:e516bc462df6ad408b46a9e8c3bbb80c0eac820c771b3b3f62606f4a689c4316
40
- ./data/meterpreter/ext_server_extapi.x86.debug.dll:SHA3-256:303a9c53e79cd2a7b9c9faf2432c9bf7f573ae6670f3866c61020412603b3975
41
- ./data/meterpreter/ext_server_extapi.x86.dll:SHA3-256:da8b2885f93d791ab2661f592cec41ff06240a99210be37f89bef77e832990f7
42
- ./data/meterpreter/ext_server_incognito.x64.debug.dll:SHA3-256:01cde245e6be5267b5cfe0576a5c7123189d75241b99e92cd082247e4ec9ce4c
43
- ./data/meterpreter/ext_server_incognito.x64.dll:SHA3-256:ba8e0ee4c7da55be136dae7cf510366f4c83bdfb6ced1f79bcf8bd8f5f383578
44
- ./data/meterpreter/ext_server_incognito.x86.debug.dll:SHA3-256:247af11ce299246fc759c7f2c1fe1b405d4f1bd9627e73f7c3a7114f497811e1
45
- ./data/meterpreter/ext_server_incognito.x86.dll:SHA3-256:ab480622f6c123aa058c623a3a9baaba77b5d277cc31719c461a6bbd3a5b08d2
46
- ./data/meterpreter/ext_server_kiwi.x64.debug.dll:SHA3-256:4ee876e90094ed320b7febe8c988b2b1e08c057ba7b85c241c3ccf6b474c9fdd
47
- ./data/meterpreter/ext_server_kiwi.x64.dll:SHA3-256:b16bcce1af9c4e77126743ef789044f878555fd66959a107d4baf4d01d81fcd7
48
- ./data/meterpreter/ext_server_kiwi.x86.debug.dll:SHA3-256:8214792b3b8d9d39e9e10f496fcb4b3b2f73a6add8675c41d4643aa6e0feeccb
49
- ./data/meterpreter/ext_server_kiwi.x86.dll:SHA3-256:83fbf156a137d96120a822a2d381beb8ead6d388c971e38c7990bc7b76fde38b
50
- ./data/meterpreter/ext_server_lanattacks.x64.debug.dll:SHA3-256:fd9354653bd9876a0ebfb7b630717c16296cc316dcef8a0af5f61068c9379c11
51
- ./data/meterpreter/ext_server_lanattacks.x64.dll:SHA3-256:3a34ea07e0564b159be5d011a57aabc43649c181ba67cdbd9cc8000aba619876
52
- ./data/meterpreter/ext_server_lanattacks.x86.debug.dll:SHA3-256:98302c0436bc980de4dfa2befdea0b0c475e4998447e19db4e65c93c8102cd3f
53
- ./data/meterpreter/ext_server_lanattacks.x86.dll:SHA3-256:c3156c4649f0215ac941233d20aae6587e1fead5a0599535090d2333d841ce04
54
- ./data/meterpreter/ext_server_peinjector.x64.debug.dll:SHA3-256:8ed9b9a1826a7df3981f23495dc02c5142dcc33f3f059e2899973615b751891b
55
- ./data/meterpreter/ext_server_peinjector.x64.dll:SHA3-256:c8c1d81f233417871c8bcf94b67e9d59522c7334453a50e594f9158d1f859373
56
- ./data/meterpreter/ext_server_peinjector.x86.debug.dll:SHA3-256:5837a598ee82384af8ec6d8ab3020ebcb5e43e9d358a89a6e47aa1191631c5cc
57
- ./data/meterpreter/ext_server_peinjector.x86.dll:SHA3-256:a2da5dacaf45678f172aa6b9212aa78c33bba2aed31afbb9c03cd67f085acd26
58
- ./data/meterpreter/ext_server_powershell.x64.debug.dll:SHA3-256:2b8e6648568a65f709652217899d2fd5743403d0d03455c510bbaa29bc1189f4
59
- ./data/meterpreter/ext_server_powershell.x64.dll:SHA3-256:df6a102757f8e3e4d1678ae8c1b44422b08f1c686ce95e168f1e5df62014307b
60
- ./data/meterpreter/ext_server_powershell.x86.debug.dll:SHA3-256:a58036310fa4a140e0b4718a2ecb525ac2737834e1a80c84b89a723315643147
61
- ./data/meterpreter/ext_server_powershell.x86.dll:SHA3-256:f4c3b81dfee3f8c9d96744360f689a882acad8db7b80e9526a0836b049ce6599
62
- ./data/meterpreter/ext_server_priv.x64.debug.dll:SHA3-256:34643796625fc30e8d9541f5732cd322405a1f498784e79910aa2b425ae98bcd
63
- ./data/meterpreter/ext_server_priv.x64.dll:SHA3-256:b203ed90da17f69d7029ad91d39b2c0f1c04fbf190da5f6990aa594e06d4d329
64
- ./data/meterpreter/ext_server_priv.x86.debug.dll:SHA3-256:b2a405c3003b0360cc7d1780623959c6df88444fdf3831d4db1e331eadd4d4cc
65
- ./data/meterpreter/ext_server_priv.x86.dll:SHA3-256:a142f10f1030c9af6eea9eef188a002c6f187cf8663d942bc9108caf87e6048d
66
- ./data/meterpreter/ext_server_python.x64.debug.dll:SHA3-256:bce2704bcbc25c7fecf605b4559e782da9615bbbed42acb117e4dfdb6045e403
67
- ./data/meterpreter/ext_server_python.x64.dll:SHA3-256:22ab8f0affee20ee9a7cd65d301c5202608e4f93475461b96a591126e3663360
68
- ./data/meterpreter/ext_server_python.x86.debug.dll:SHA3-256:560302f03d25019f2f92a20a4ebbb321dbb4a197f11b657ddf6f641e1b129e60
69
- ./data/meterpreter/ext_server_python.x86.dll:SHA3-256:760e939b65f4cc115539caf2ded7f89082f9467cf15cb5011d394b214c0f5657
70
- ./data/meterpreter/ext_server_sniffer.x64.dll:SHA3-256:26c2f265423c8b62604c8bfc9875666484a552552ffaf2bc358900b4bd3403e8
71
- ./data/meterpreter/ext_server_sniffer.x86.dll:SHA3-256:c4787d4f8724d405bc313be4715d1d562baf1c1a6fabdf1f5ca52df7fdda2ad0
22
+ ./data/meterpreter/dump_sam.x64.debug.dll:SHA3-256:785cee32f256748d7581c2c99b2c7fc785b80cc4b98c04b23663083d9cbb63fe
23
+ ./data/meterpreter/dump_sam.x64.dll:SHA3-256:802b6fd59c81271de108ed34629591a54e595d4674b2994bcf193c3f14541f21
24
+ ./data/meterpreter/dump_sam.x86.debug.dll:SHA3-256:6a20175fdbc8c81fa1a8a7acf5b1bcd3a446361bc62df655bea03ee6f020946a
25
+ ./data/meterpreter/dump_sam.x86.dll:SHA3-256:b2586ce65fbc44ca65e3e1bb306e98ddc443731ad68dded7dc421a1a1a7eb044
26
+ ./data/meterpreter/elevator.x64.debug.dll:SHA3-256:8baefe56b2f90fdf0c30242aa64410fcf9388781542c25f1122f2eabc1c4b60d
27
+ ./data/meterpreter/elevator.x64.dll:SHA3-256:3c0aea83b1ff9ed1b5c577a8f5c9a609cc5ed49986fb73aa3a75939cf2ab6f1b
28
+ ./data/meterpreter/elevator.x86.debug.dll:SHA3-256:acbf23f52c53752019f41612ade31cb363ed5bbed93b1bad053120bb90aeb33e
29
+ ./data/meterpreter/elevator.x86.dll:SHA3-256:bac995312f1833e90cc5ab65989baa011c0367630b0fea948b618004435c0d56
30
+ ./data/meterpreter/ext_server_bofloader.x64.debug.dll:SHA3-256:6ea2c2337477ccd1c5b8d3970638c19dac5fcd87fd344eb44d1e3f5edbf20115
31
+ ./data/meterpreter/ext_server_bofloader.x64.dll:SHA3-256:20e680450f461dbc94cae49dcee97447ebb0c73c75355445c63a88cc51f0a233
32
+ ./data/meterpreter/ext_server_bofloader.x86.debug.dll:SHA3-256:3ade3073d62002e9f4b5846d3caf83a01fde51b8c00ad27721bee0688990bb7a
33
+ ./data/meterpreter/ext_server_bofloader.x86.dll:SHA3-256:73e81d200d754ea9dd6dc1784cac396fad577f3ffd9b912a34211d2b3309cf5f
34
+ ./data/meterpreter/ext_server_espia.x64.debug.dll:SHA3-256:291edf708eea4a682de78fc9e43dc9bf9a45447783b5bb98e13645e868bb589a
35
+ ./data/meterpreter/ext_server_espia.x64.dll:SHA3-256:07841363017e9f77f564a9c67b3b00e2b032b8715fe7fb80540772f404936d7e
36
+ ./data/meterpreter/ext_server_espia.x86.debug.dll:SHA3-256:6429005b28c1d1088d1c7bb043b1abb07b60b1de2832a178c9fb772b99850ad0
37
+ ./data/meterpreter/ext_server_espia.x86.dll:SHA3-256:dc675fd01b4f9bab251877e843e7f7c6117678d7e9d6da2389b5d612aac7198f
38
+ ./data/meterpreter/ext_server_extapi.x64.debug.dll:SHA3-256:1235b5aede8db36c99786272f92130d9f8fc3aff4ea4312c54b7ecb5ef9f5f26
39
+ ./data/meterpreter/ext_server_extapi.x64.dll:SHA3-256:0622c13932e5b92f6648b03f6b30993f169bf945ee311ebc1b3e7cef74b8b075
40
+ ./data/meterpreter/ext_server_extapi.x86.debug.dll:SHA3-256:dd9b373b5cbff2dded38eee4619cb6f2cc64b263157cf94494d15c1e94dc27cf
41
+ ./data/meterpreter/ext_server_extapi.x86.dll:SHA3-256:8b5fa9ca4ad31f38bb00609dfcbdaf1db8554847a3bdbf302218cad9555f5e7d
42
+ ./data/meterpreter/ext_server_incognito.x64.debug.dll:SHA3-256:e74587432b16a267901ddaca692ec9e7a85fde753796ced495635f101a123127
43
+ ./data/meterpreter/ext_server_incognito.x64.dll:SHA3-256:933ea101fdb29646f762d7e0ba2a3147c3579fa857857c39841c28c03328e148
44
+ ./data/meterpreter/ext_server_incognito.x86.debug.dll:SHA3-256:79379c113c07b6294d9ef90f59a055a08dc2cbd3817bf592bb32f8c165789a0c
45
+ ./data/meterpreter/ext_server_incognito.x86.dll:SHA3-256:daa959d55cee072928715bb814fb93f1b8aac6ba2b6e9d85315a319e1f9f6911
46
+ ./data/meterpreter/ext_server_kiwi.x64.debug.dll:SHA3-256:71638f41ac701e4f32e888d9060f5bbbc053283399ac6c2229469bbb6b523d15
47
+ ./data/meterpreter/ext_server_kiwi.x64.dll:SHA3-256:7f0a56cc9e8ee86da54163813c23c4a3bc8070fe498d61ebf19b02dc47f261fe
48
+ ./data/meterpreter/ext_server_kiwi.x86.debug.dll:SHA3-256:1f714bdd7e29191f40dee22c89696c7eeb6c5932f7aeeee798f3ca75ed52b345
49
+ ./data/meterpreter/ext_server_kiwi.x86.dll:SHA3-256:ae534cada086f1727716795222b3b89d2a0534da6ca2bd65bc119db156830904
50
+ ./data/meterpreter/ext_server_lanattacks.x64.debug.dll:SHA3-256:55e8fd764ac6d3b6eb9724dcb3c058ff5ab37f7e51fe2f15fe7dda82820bbfd5
51
+ ./data/meterpreter/ext_server_lanattacks.x64.dll:SHA3-256:653baca1f7394ebe3f72b7518dd0267912f4e4f843e5439043f66e9c87794505
52
+ ./data/meterpreter/ext_server_lanattacks.x86.debug.dll:SHA3-256:ac9ae1499d78c6b0814344b97a931b8cd8537e8e01949c7e6aea957d4d0948b8
53
+ ./data/meterpreter/ext_server_lanattacks.x86.dll:SHA3-256:cd2add87348966311b2a8239cad43cfcadb966209b7a40989b25a6d1744f6377
54
+ ./data/meterpreter/ext_server_peinjector.x64.debug.dll:SHA3-256:559d62001bddb7b3c0fb5388bd01e19d5c3a0139dabb1160dbe1022fc7c006ac
55
+ ./data/meterpreter/ext_server_peinjector.x64.dll:SHA3-256:e4be6ccbd3c6d8d46401e5da1eeebce71a7a323bbd36763da91196d4d2169231
56
+ ./data/meterpreter/ext_server_peinjector.x86.debug.dll:SHA3-256:d64c816321063138be26d8025b5bb835d8e4a109edcce9d807a12626d2781f89
57
+ ./data/meterpreter/ext_server_peinjector.x86.dll:SHA3-256:198aff2d850d53037140bd219d61d67172e736b33299608d01446f2043829f62
58
+ ./data/meterpreter/ext_server_powershell.x64.debug.dll:SHA3-256:a1759c33feb673ad69d343c21e81a32174d8382aa8e4780a05a616456e99e5f5
59
+ ./data/meterpreter/ext_server_powershell.x64.dll:SHA3-256:927157d6c4c9ed97ac6c44c5eb3d32c4e8af75788e1a4bda9135993d2f9cb179
60
+ ./data/meterpreter/ext_server_powershell.x86.debug.dll:SHA3-256:f23072816c21859eba191193959c7ce67f41bc93488643a763a64900ab6d4cd0
61
+ ./data/meterpreter/ext_server_powershell.x86.dll:SHA3-256:254b1b3755cf040918896b959d1ff1b25404c11056b2502a2bdde7bd35c031dc
62
+ ./data/meterpreter/ext_server_priv.x64.debug.dll:SHA3-256:f051cacdd39eb770c3be0fa2ccd2a4f64e23e51687d6caa43b3b99313b94ccbd
63
+ ./data/meterpreter/ext_server_priv.x64.dll:SHA3-256:443f7a82d5cb1486c751751b31723be137f5f77867ae69a3a39d22ef244c1502
64
+ ./data/meterpreter/ext_server_priv.x86.debug.dll:SHA3-256:36024f9ee7071ad2700eea3dcd4f6e947d58ebf0d55b3e636a4b8d0a91210f26
65
+ ./data/meterpreter/ext_server_priv.x86.dll:SHA3-256:7b316484d3dc6acead1fceb9b61b676d5ae27291ddc91ca001ae811d12f68635
66
+ ./data/meterpreter/ext_server_python.x64.debug.dll:SHA3-256:c642d56929929c56d1173df0770fc31070bebd325569795a1d74ac555fda80a1
67
+ ./data/meterpreter/ext_server_python.x64.dll:SHA3-256:86cfa76153a941c73559f878b1e2b1fee3754749205819ed269e5d7f33502f3f
68
+ ./data/meterpreter/ext_server_python.x86.debug.dll:SHA3-256:a17feaed376a0352888ada4fafda64e08ee18fc03704986def611d0957b35807
69
+ ./data/meterpreter/ext_server_python.x86.dll:SHA3-256:6875f74994f247dc878f9c7449bf92d0b3a201a932c41305b3e29406e7e370de
70
+ ./data/meterpreter/ext_server_sniffer.x64.dll:SHA3-256:c61f200a5cdeb37ad4e75754b5ca3e039bd646d808e6a52a489a51a3dd53a30d
71
+ ./data/meterpreter/ext_server_sniffer.x86.dll:SHA3-256:608f90d349bffec26e9d88591b764a71e9a739b7be76acc83a9272d266b4ea2f
72
72
  ./data/meterpreter/ext_server_stdapi.jar:SHA3-256:c064899075585b124102f7015ba6d0ab8aa5e773377ebed7e69cd467d3b6aa26
73
73
  ./data/meterpreter/ext_server_stdapi.php:SHA3-256:92e931e6b47caad6df4249cc263fdbe5d2975c4163f5b06963208163b7af97b5
74
74
  ./data/meterpreter/ext_server_stdapi.py:SHA3-256:3ed09316bdc2038873e5a3dc42bd8d725fdb66cf93a0f87300876d1e64ce6b3c
75
- ./data/meterpreter/ext_server_stdapi.x64.debug.dll:SHA3-256:474591f1156bdb5e37c7cc1a97dfa140711e4ceb458bd4fb353510526ea6af32
76
- ./data/meterpreter/ext_server_stdapi.x64.dll:SHA3-256:fba6a7f9832ffa71eb3e429f8dd6e84b4a6d3b624993294b7c1e6fa6f5084771
77
- ./data/meterpreter/ext_server_stdapi.x86.debug.dll:SHA3-256:39b6ea76fb35d3d3eab58c326a012209446475601bccc389ce2e98ac290d416d
78
- ./data/meterpreter/ext_server_stdapi.x86.dll:SHA3-256:172a6811b8d8714355a08c2010d1bbc74437306fcc98ec5f01a36e687d2dfdb5
79
- ./data/meterpreter/ext_server_unhook.x64.debug.dll:SHA3-256:10d5ff179870692faa0f2984cd16a08fb57bacc4417d607344c7ac1aacf0e4dd
80
- ./data/meterpreter/ext_server_unhook.x64.dll:SHA3-256:727eba9333ee98a1ecf97e0bc18830283c6d149240e9de1044bc9b44bdd099c7
81
- ./data/meterpreter/ext_server_unhook.x86.debug.dll:SHA3-256:eba960e2a725d236fa07a1a0d81bd6b855be69841edf5ffbb617d4d293689619
82
- ./data/meterpreter/ext_server_unhook.x86.dll:SHA3-256:dcfac981c105b561652d225a86559c2f5ded2791af4f0f6b3f8cfcc19d6bc1c0
83
- ./data/meterpreter/ext_server_winpmem.x64.debug.dll:SHA3-256:ba692be66ba0d8a902362924c73e813c729cf4156a76d96e285ff01606caca8c
84
- ./data/meterpreter/ext_server_winpmem.x64.dll:SHA3-256:43ebd05a70e439b4f126540911d70f1010ea335f388ed81a95be6a5cd28d5abb
85
- ./data/meterpreter/ext_server_winpmem.x86.debug.dll:SHA3-256:ffeb82444abc80d7e6d406b5051c8be85cebe02a94a35691b10491861e42d48b
86
- ./data/meterpreter/ext_server_winpmem.x86.dll:SHA3-256:c5ebebf2866094d96cac18bbb9b374d4d61558b1b599ac756a50799580ebfdb7
75
+ ./data/meterpreter/ext_server_stdapi.x64.debug.dll:SHA3-256:154c8ed4e92d92de6f60bd4c26ea7f8fab376bbd2712463313f1c103effaa1d7
76
+ ./data/meterpreter/ext_server_stdapi.x64.dll:SHA3-256:93326c89324f7b55880afd9c4fa2814547400a4573eb219df19ec5ecc4b4365d
77
+ ./data/meterpreter/ext_server_stdapi.x86.debug.dll:SHA3-256:4dfce463d19f4a406d82cef018abdb83b3eaac8ce2d2da76fdd2701328369f03
78
+ ./data/meterpreter/ext_server_stdapi.x86.dll:SHA3-256:8e05104a76b0de05a738c3677a353b8c11e7427ebbc3e8a58bebe75d608de708
79
+ ./data/meterpreter/ext_server_unhook.x64.debug.dll:SHA3-256:d62db48cb7436eaddbc555213a8bd1dc859abe6325e10a18787a40a4ee7a14a2
80
+ ./data/meterpreter/ext_server_unhook.x64.dll:SHA3-256:ac42b7ed5916ae528237268716dbebca4f192dd44aa110a6a27e736640afed05
81
+ ./data/meterpreter/ext_server_unhook.x86.debug.dll:SHA3-256:0ffe18aa87b330a2114fe773eb348357625c4ea79012d7e536954509500e060b
82
+ ./data/meterpreter/ext_server_unhook.x86.dll:SHA3-256:449eda2f641c1ac36266304494647b538062123a1b09d80d291bf499e3760617
83
+ ./data/meterpreter/ext_server_winpmem.x64.debug.dll:SHA3-256:15e1303ee7c80da536ddd8de4ae68f7ac698b170d9df3d8f73ac635550e4704f
84
+ ./data/meterpreter/ext_server_winpmem.x64.dll:SHA3-256:b676cdc0a285b8bf058c5a4eedfd2e0a9e7319dd03690c6d5848d8b680f22589
85
+ ./data/meterpreter/ext_server_winpmem.x86.debug.dll:SHA3-256:bc5fe4881328848a7188469f23344db547ac3ba0282683a5dbbc9a9420fb64f3
86
+ ./data/meterpreter/ext_server_winpmem.x86.dll:SHA3-256:ac760dbc5623c425ecefb8249eaee78d8a94b808f8dbac387292f77d60b26be9
87
87
  ./data/meterpreter/meterpreter.jar:SHA3-256:fc4bd122c9df063808270708e91a0da546de2c7a139bbfa000af65f6b0727dff
88
88
  ./data/meterpreter/meterpreter.php:SHA3-256:9389b1548410438d93ce12a2e276b7b2e77046845e6fca43b419b516de3871f9
89
89
  ./data/meterpreter/meterpreter.py:SHA3-256:a4ed4d3bb4c28c208a3f00453ccd1c50bb958cc8c20905599e7ba40a3259dba5
90
- ./data/meterpreter/metsrv.x64.debug.dll:SHA3-256:91bd0572bac9a89d2c137ef31bd3a9f48400508f40e6b21040cd1c48625e448e
91
- ./data/meterpreter/metsrv.x64.dll:SHA3-256:157f7d30d67c51fcf909945fabfa87ca134e8fefbb1f99c1011a71a1fea589e5
92
- ./data/meterpreter/metsrv.x86.debug.dll:SHA3-256:0471bc50622447ffff6685f1f700d4bb68b64b4069ddf9632ee46ab10e494f75
93
- ./data/meterpreter/metsrv.x86.dll:SHA3-256:13fa85c27633e92b3ffa59c647afb15a2786f37140fd19c92c52ed2e43890766
94
- ./data/meterpreter/screenshot.x64.debug.dll:SHA3-256:d47ba16f51aec271997a3a9bec0e5170959ff09e49938dbd6a5247547657dd50
95
- ./data/meterpreter/screenshot.x64.dll:SHA3-256:193e7d3c48eb7d8b3f1d8c24a0bdc6aad5dd32b3b3a0bb2af892b968e08fe20a
96
- ./data/meterpreter/screenshot.x86.debug.dll:SHA3-256:f3c0cce17d0dd2910e201b8f8ff7a1d93bbf951b6a4570ffe054d39c23957c1f
97
- ./data/meterpreter/screenshot.x86.dll:SHA3-256:b1d575fb9d03a7d9e49e47a7052b9dee555ef316298ea46685aa8c65126fa239
90
+ ./data/meterpreter/metsrv.x64.debug.dll:SHA3-256:c957f05143173351574d10ee9ee8e7e752a73bbbe46d1566dce89826e26dd19d
91
+ ./data/meterpreter/metsrv.x64.dll:SHA3-256:30cd3b37fe9af1a1882367b94e458f3ceba6792ab3833f15c3b41d895fa20f7d
92
+ ./data/meterpreter/metsrv.x86.debug.dll:SHA3-256:abac7c6fc2deec55731649a38c6f4529dd9c8cd4398a9f9eacdc7696f5e1ea94
93
+ ./data/meterpreter/metsrv.x86.dll:SHA3-256:10266591ea8eaafab8abdbfc9553c4d873aebdebeaf1e9b0ea6ad9d79c458f0b
94
+ ./data/meterpreter/screenshot.x64.debug.dll:SHA3-256:41ab6d6d31c4e7b19061a4b1d56ccf0eb45f16982b35c4e82713681aca4e99b5
95
+ ./data/meterpreter/screenshot.x64.dll:SHA3-256:9f9f2273bde229ba0bfe17b305d842428d465ccf98206c4573222baae1ef1fa2
96
+ ./data/meterpreter/screenshot.x86.debug.dll:SHA3-256:dc30868b1bd6a58115fac0926a107b473de2ad76e31f83719dd025fe2124f248
97
+ ./data/meterpreter/screenshot.x86.dll:SHA3-256:225efea4164a0ce9dabe263da6df8f03bcac21daef7d13a19896690ebb5f78c7
data/manifest.uuid CHANGED
@@ -1 +1 @@
1
- 31f50d587a54c34f44f443bdfa68348bf633f7f78d263e1911a535211d09f8d2
1
+ db210e75d5f3ab01cbd7d01be778ba52a03fe35438314094c412ff489a878dae
@@ -0,0 +1,249 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'metasploit-payloads'
4
+
5
+ RSpec.describe ::MetasploitPayloads do
6
+ describe '::VERSION' do
7
+ it 'has a version number' do
8
+ expect(::MetasploitPayloads::VERSION).not_to be nil
9
+ end
10
+ end
11
+
12
+ describe '::Error' do
13
+ it 'has an Error class' do
14
+ expect(::MetasploitPayloads::Error.superclass).to be(::StandardError)
15
+ end
16
+
17
+ it 'has a NotFoundError class' do
18
+ expect(::MetasploitPayloads::NotFoundError.superclass).to be(::MetasploitPayloads::Error)
19
+ end
20
+
21
+ it 'has a NotReadableError class' do
22
+ expect(::MetasploitPayloads::NotReadableError.superclass).to be(::MetasploitPayloads::Error)
23
+ end
24
+
25
+ it 'has a HashMismatchError class' do
26
+ expect(::MetasploitPayloads::HashMismatchError.superclass).to be(::MetasploitPayloads::Error)
27
+ end
28
+ end
29
+
30
+ describe '#readable_path' do
31
+ let(:sample_file) { { name: 'meterpreter/meterpreter.py' } }
32
+
33
+ before :each do
34
+ allow(::File).to receive(:exist?).and_call_original
35
+ allow(::File).to receive(:readable?).and_call_original
36
+ end
37
+
38
+ context 'when the path is not readable' do
39
+ it 'raises a ::MetasploitPayloads::NotReadableError' do
40
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(true)
41
+ allow(::File).to receive(:readable?).with(sample_file[:name]).and_return(false)
42
+
43
+ expect { subject.readable_path(sample_file[:name]) }.to raise_error(::MetasploitPayloads::NotReadableError)
44
+ end
45
+ end
46
+
47
+ context 'when the path does not exist' do
48
+ it 'returns nil' do
49
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(false)
50
+ allow(::File).to receive(:readable?).with(sample_file[:name]).and_return(false)
51
+
52
+ expect(subject.readable_path(sample_file[:name])).to eq(nil)
53
+ end
54
+ end
55
+
56
+ context 'when the path exists and is readable' do
57
+ it 'returns the correct path' do
58
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(true)
59
+ allow(::File).to receive(:readable?).with(sample_file[:name]).and_return(true)
60
+
61
+ expect(subject.readable_path(sample_file[:name])).to eq(sample_file[:name])
62
+ end
63
+ end
64
+ end
65
+
66
+ describe '#path' do
67
+ let(:sample_file) { { name: 'meterpreter/meterpreter.py' } }
68
+
69
+ before :each do
70
+ allow(::File).to receive(:exist?).and_call_original
71
+ allow(::File).to receive(:readable?).and_call_original
72
+ allow(::MetasploitPayloads).to receive(:expand).and_call_original
73
+
74
+ allow(::MetasploitPayloads).to receive(:expand)
75
+ .with(::MetasploitPayloads.data_directory, sample_file[:name])
76
+ .and_return(sample_file[:name])
77
+ end
78
+
79
+ [
80
+ { context: 'is not readable', exist: true, readable: false, expected: ::MetasploitPayloads::NotReadableError },
81
+ { context: 'does not exist', exist: false, readable: false, expected: ::MetasploitPayloads::NotFoundError }
82
+ ].each do |test|
83
+ context "when the path #{test[:context]}" do
84
+ it "raises #{test[:expected]}" do
85
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(test[:exist])
86
+ allow(::File).to receive(:readable?).with(sample_file[:name]).and_return(test[:readable])
87
+
88
+ expect { subject.path(sample_file[:name]) }.to raise_error(test[:expected])
89
+ end
90
+ end
91
+ end
92
+
93
+ context 'when the path exists and is readable' do
94
+ it 'returns the correct path' do
95
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(true)
96
+ allow(::File).to receive(:readable?).with(sample_file[:name]).and_return(true)
97
+
98
+ expect(subject.path(sample_file[:name])).to eq(sample_file[:name])
99
+ end
100
+ end
101
+ end
102
+
103
+ describe '#manifest_errors' do
104
+ let(:hash_type) { 'SHA3-256' }
105
+ let(:hash) { { type: hash_type, value: '92e931e6b47caad6df4249cc263fdbe5d2975c4163f5b06963208163b7af97b5' } }
106
+ let(:sample_file) { { name: 'meterpreter/ext_server_stdapi.php', contents: 'sample_data', hash: hash } }
107
+ let(:manifest_values) { ["./data/#{sample_file[:name]}", sample_file[:hash][:type], sample_file[:hash][:value]] }
108
+ let(:manifest) { manifest_values.join(':') }
109
+ let(:manifest_uuid) { ::OpenSSL::Digest.new(hash_type, manifest).to_s }
110
+ let(:manifest_path) { 'manifest' }
111
+ let(:manifest_uuid_path) { 'manifest.uuid' }
112
+
113
+ before :each do
114
+ allow(::MetasploitPayloads).to receive(:manifest_path).and_call_original
115
+ allow(::MetasploitPayloads).to receive(:manifest_path).and_return(manifest_path)
116
+
117
+ allow(::MetasploitPayloads).to receive(:manifest_uuid_path).and_call_original
118
+ allow(::MetasploitPayloads).to receive(:manifest_uuid_path).and_return(manifest_uuid_path)
119
+
120
+ allow(::File).to receive(:binread).and_call_original
121
+ allow(::File).to receive(:binread).with(sample_file[:name]).and_return(sample_file[:contents])
122
+ allow(::File).to receive(:binread).with(::MetasploitPayloads.send(:manifest_path)).and_return(manifest)
123
+ allow(::File).to receive(:binread).with(::MetasploitPayloads.send(:manifest_uuid_path)).and_return(manifest_uuid)
124
+
125
+ allow(::OpenSSL::Digest).to receive(:new).and_call_original
126
+ allow(::OpenSSL::Digest).to receive(:new).with(hash_type,
127
+ sample_file[:contents]).and_return(sample_file[:hash][:value])
128
+ end
129
+
130
+ context 'when manifest hash does not match' do
131
+ it 'result includes the manifest file' do
132
+ allow(::File).to receive(:binread).with(::MetasploitPayloads.send(:manifest_uuid_path))
133
+ .and_return('mismatched_manifest_hash')
134
+ path = ::MetasploitPayloads.send(:manifest_path)
135
+ e = ::MetasploitPayloads::HashMismatchError.new(path)
136
+
137
+ expect(subject.manifest_errors).to include({ path: path, error: e })
138
+ end
139
+ end
140
+
141
+ context 'when manifest hash does match' do
142
+ it 'result does not include manifest' do
143
+ path = ::MetasploitPayloads.send(:manifest_uuid_path)
144
+ e = ::MetasploitPayloads::HashMismatchError.new(path)
145
+
146
+ expect(subject.manifest_errors).not_to include({ path: path, error: e })
147
+ end
148
+ end
149
+
150
+ context 'when there are no file warnings' do
151
+ it 'returns an empty array' do
152
+ allow(::MetasploitPayloads).to receive(:path).with(sample_file[:name]).and_return(sample_file[:name])
153
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(true)
154
+ full_file_path = ::MetasploitPayloads.expand(::MetasploitPayloads.data_directory, sample_file[:name])
155
+ allow(::File).to receive(:readable?).with(full_file_path).and_return(true)
156
+ allow(::File).to receive(:binread).with(full_file_path).and_return(sample_file[:contents])
157
+
158
+ expect(subject.manifest_errors).to eq([])
159
+ end
160
+ end
161
+
162
+ [
163
+ { context: 'does not exist', error_class: ::MetasploitPayloads::NotFoundError },
164
+ { context: 'is not readable', error_class: ::MetasploitPayloads::NotReadableError }
165
+ ].each do |test|
166
+ context "when a file #{test[:context]}" do
167
+ it 'includes the correct error' do
168
+ error = test[:error_class].new(sample_file[:name])
169
+ allow(::MetasploitPayloads).to receive(:path).with(sample_file[:name]).and_raise(error)
170
+
171
+ expect(subject.manifest_errors).to include({ path: sample_file[:name], error: error })
172
+ end
173
+ end
174
+ end
175
+
176
+ context 'when a bundled file hash does not match' do
177
+ it 'includes the correct error' do
178
+ allow(::File).to receive(:exist?).with(sample_file[:name]).and_return(true)
179
+ full_file_path = ::MetasploitPayloads.expand(::MetasploitPayloads.data_directory, sample_file[:name])
180
+ allow(::File).to receive(:readable?).with(full_file_path).and_return(true)
181
+ allow(::File).to receive(:binread).with(full_file_path).and_return('mismatched_file_contents')
182
+ e = ::MetasploitPayloads::HashMismatchError.new(full_file_path)
183
+
184
+ expect(subject.manifest_errors).to include({ path: full_file_path, error: e })
185
+ end
186
+ end
187
+
188
+ context 'when the manifest file' do
189
+ context 'does not exist' do
190
+ it 'only includes the manifest error' do
191
+ # path = ::MetasploitPayloads.send(:manifest_path)
192
+ e = ::Errno::ENOENT.new(manifest_path)
193
+ allow(::File).to receive(:binread).with(manifest_path).and_raise(e)
194
+
195
+ expect(subject.manifest_errors).to eq([{ path: manifest_path, error: e }])
196
+ end
197
+ end
198
+
199
+ context 'cannot be read' do
200
+ it 'only includes the manifest error' do
201
+ e = ::Errno::EACCES.new(manifest_path)
202
+ allow(::File).to receive(:binread).with(manifest_path).and_raise(e)
203
+
204
+ expect(subject.manifest_errors).to eq([{ path: manifest_path, error: e }])
205
+ end
206
+ end
207
+ end
208
+
209
+ context 'when the manifest.uuid file' do
210
+ context 'does not exist' do
211
+ it 'includes the correct error' do
212
+ e = ::Errno::ENOENT.new(manifest_uuid_path)
213
+ allow(::File).to receive(:binread).with(manifest_uuid_path).and_raise(e)
214
+
215
+ expect(subject.manifest_errors).to include({ path: manifest_uuid_path, error: e })
216
+ end
217
+ end
218
+ end
219
+
220
+ context 'when manifest is readable and manifest.uuid is not readable' do
221
+ before :each do
222
+ allow(::File).to receive(:binread).with(manifest_uuid_path).and_raise(::Errno::EACCES.new(manifest_uuid_path))
223
+ end
224
+
225
+ it 'correctly evaluates a file hash mismatch' do
226
+ bundled_file_path = ::MetasploitPayloads.expand(::MetasploitPayloads.data_directory, sample_file[:name])
227
+ error = ::MetasploitPayloads::HashMismatchError.new(bundled_file_path)
228
+ allow(::MetasploitPayloads).to receive(:path).with(sample_file[:name]).and_return(bundled_file_path)
229
+ allow(::File).to receive(:binread).with(bundled_file_path).and_return('sample_mismatched_contents')
230
+
231
+ expect(subject.manifest_errors).to include({ path: bundled_file_path, error: error })
232
+ end
233
+
234
+ it 'correctly evaluates a missing file' do
235
+ error = ::MetasploitPayloads::NotFoundError.new(sample_file[:name])
236
+ allow(::MetasploitPayloads).to receive(:path).with(sample_file[:name]).and_raise(error)
237
+
238
+ expect(subject.manifest_errors).to include({ path: sample_file[:name], error: error })
239
+ end
240
+
241
+ it 'correctly evaluates an unreadable file' do
242
+ error = ::MetasploitPayloads::NotReadableError.new(sample_file[:name])
243
+ allow(::MetasploitPayloads).to receive(:path).with(sample_file[:name]).and_raise(error)
244
+
245
+ expect(subject.manifest_errors).to include({ path: sample_file[:name], error: error })
246
+ end
247
+ end
248
+ end
249
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'metasploit_payloads/metasploit_payloads_spec'
4
+
5
+ # This file was generated by the `rspec --init` command. Conventionally, all
6
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
7
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
8
+ # this file to always be loaded, without a need to explicitly require it in any
9
+ # files.
10
+ #
11
+ # Given that it is always loaded, you are encouraged to keep this file as
12
+ # light-weight as possible. Requiring heavyweight dependencies from this file
13
+ # will add to the boot time of your test suite on EVERY test run, even for an
14
+ # individual file that may not need all of that loaded. Instead, consider making
15
+ # a separate helper file that requires the additional dependencies and performs
16
+ # the additional setup, and require it from the spec files that actually need
17
+ # it.
18
+ #
19
+ # The `.rspec` file also contains a few flags that are not defaults but that
20
+ # users commonly want.
21
+ #
22
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
23
+ RSpec.configure do |config|
24
+ # rspec-expectations config goes here. You can use an alternate
25
+ # assertion/expectation library such as wrong or the stdlib/minitest
26
+ # assertions if you prefer.
27
+ config.expect_with :rspec do |expectations|
28
+ # This option will default to `true` in RSpec 4. It makes the `description`
29
+ # and `failure_message` of custom matchers include text for helper methods
30
+ # defined using `chain`, e.g.:
31
+ # be_bigger_than(2).and_smaller_than(4).description
32
+ # # => "be bigger than 2 and smaller than 4"
33
+ # ...rather than:
34
+ # # => "be bigger than 2"
35
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
36
+ end
37
+
38
+ # rspec-mocks config goes here. You can use an alternate test double
39
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
40
+ config.mock_with :rspec do |mocks|
41
+ # Prevents you from mocking or stubbing a method that does not exist on
42
+ # a real object. This is generally recommended, and will default to
43
+ # `true` in RSpec 4.
44
+ mocks.verify_partial_doubles = true
45
+ end
46
+
47
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
48
+ # have no way to turn it off -- the option exists only for backwards
49
+ # compatibility in RSpec 3). It causes shared context metadata to be
50
+ # inherited by the metadata hash of host groups and examples, rather than
51
+ # triggering implicit auto-inclusion in groups with matching metadata.
52
+ config.shared_context_metadata_behavior = :apply_to_host_groups
53
+
54
+ # The settings below are suggested to provide a good initial experience
55
+ # with RSpec, but feel free to customize to your heart's content.
56
+ # This allows you to limit a spec run to individual examples or groups
57
+ # you care about by tagging them with `:focus` metadata. When nothing
58
+ # is tagged with `:focus`, all examples get run. RSpec also provides
59
+ # aliases for `it`, `describe`, and `context` that include `:focus`
60
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
61
+ config.filter_run_when_matching :focus
62
+
63
+ # Allows RSpec to persist some state between runs in order to support
64
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
65
+ # you configure your source control system to ignore this file.
66
+ config.example_status_persistence_file_path = 'spec/examples.txt'
67
+
68
+ # Limits the available syntax to the non-monkey patched syntax that is
69
+ # recommended. For more details, see:
70
+ # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/
71
+ config.disable_monkey_patching!
72
+
73
+ # This setting enables warnings. It's recommended, but in some cases may
74
+ # be too noisy due to issues in dependencies.
75
+ config.warnings = true
76
+
77
+ # Many RSpec users commonly either run the entire suite or an individual
78
+ # file, and it's useful to allow more verbose output when running an
79
+ # individual spec file.
80
+ if config.files_to_run.one?
81
+ # Use the documentation formatter for detailed output,
82
+ # unless a formatter has already been configured
83
+ # (e.g. via a command-line flag).
84
+ config.default_formatter = 'doc'
85
+ end
86
+
87
+ # Print the 10 slowest examples and example groups at the
88
+ # end of the spec run, to help surface which specs are running
89
+ # particularly slow.
90
+ config.profile_examples = 10
91
+
92
+ # Run specs in random order to surface order dependencies. If you find an
93
+ # order dependency and want to debug it, you can fix the order by providing
94
+ # the seed, which is printed after each run.
95
+ # --seed 1234
96
+ config.order = :random
97
+
98
+ # Seed global randomization in this process using the `--seed` CLI option.
99
+ # Setting this allows you to use `--seed` to deterministically reproduce
100
+ # test failures related to randomization by passing the same `--seed` value
101
+ # as the one that triggered the failure.
102
+ Kernel.srand config.seed
103
+ end
data.tar.gz.sig CHANGED
Binary file
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.153
4
+ version: 2.0.154
5
5
  platform: ruby
6
6
  authors:
7
7
  - OJ Reeves
@@ -137,6 +137,7 @@ extensions: []
137
137
  extra_rdoc_files: []
138
138
  files:
139
139
  - ".gitignore"
140
+ - ".rspec"
140
141
  - CONTRIBUTING.md
141
142
  - Gemfile
142
143
  - LICENSE
@@ -240,10 +241,13 @@ files:
240
241
  - data/meterpreter/screenshot.x86.debug.dll
241
242
  - data/meterpreter/screenshot.x86.dll
242
243
  - lib/metasploit-payloads.rb
244
+ - lib/metasploit-payloads/error.rb
243
245
  - lib/metasploit-payloads/version.rb
244
246
  - manifest
245
247
  - manifest.uuid
246
248
  - metasploit-payloads.gemspec
249
+ - spec/metasploit_payloads/metasploit_payloads_spec.rb
250
+ - spec/spec_helper.rb
247
251
  homepage: http://www.metasploit.com
248
252
  licenses:
249
253
  - 3-clause (or "modified") BSD
metadata.gz.sig CHANGED
Binary file