metasploit-payloads 2.0.153 → 2.0.155

Sign up to get free protection for your applications and to get access to all the features.
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 +6 -2
  88. metadata.gz.sig +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f236dc912a4d70590a93b5c0ff03b98aba85a33dae65569eb76f77e4e2c2f2ee
4
- data.tar.gz: 1bb5a328df81b0639b9ecd2d69aab2f5c23f0fd1222259d8cae8089b12294c76
3
+ metadata.gz: fc721f1a6bf01e7372d36c31cc15e479c7f755ef21400656799a155c601386b6
4
+ data.tar.gz: 88d9a363d5bca6cb7cc69a593e07b1817a3f35ff57b84b212e7d397258a0c99f
5
5
  SHA512:
6
- metadata.gz: 44dfbd9505f397cc2b2cb31afc2c3fb82087ae9cffdcc82059058c868e44fecf73b7be96ea99e3521cc91a5c5a4224aa6333e8ea20f6540cedce62666ac5f9cb
7
- data.tar.gz: 8e8ace929e8cf636f15e4cf1d91f88e86e8387852d33e3cbf5957243a8c5ed3137911a3188321d980d345b0a62aa3e9beba332a904dfe71ac582b5f026b4eb6e
6
+ metadata.gz: 20dabb3d6fc368ab9835f97de9852ea59f43280d4b8b6afc0226362a190bff595aa93da86205d195e14904d0892e08e647ae76344f9a0428d4a0938b2778c756
7
+ data.tar.gz: 67d57f4e3b5cf6efa8ac35de38e2275f45f5aedd5c848f1c3bf76e9e018585d5d6d8c6483e0a2f396ff83cf05b69bf3b70d85f806d38b9c8ed1758915f5c94ed
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.155'
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:829fbc95dbca9de3f2134d78a14c5dd561a6cd36d6a81c7a9a4caf201d4d5d9b
6
+ ./data/android/metstage.jar:SHA3-256:7e4e3c2edba760a900493df3aad0b0c9b99d2775e11a8c2a4c61af133b312830
7
+ ./data/android/shell.jar:SHA3-256:8ccc1c525695fe523070315fcd4e064456f34e903b1c000f1695d98d006f790d
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:aafbaed643ee16c3bc36bbf497a359e10a73557784e2433b15847ca92df2bd16
23
+ ./data/meterpreter/dump_sam.x64.dll:SHA3-256:a509a5676ef9163838cb26d0255035a13fdfd1473ac27f333bd0bfa4ecc4490e
24
+ ./data/meterpreter/dump_sam.x86.debug.dll:SHA3-256:31b15fa8578ba2f255e9292011a13511771c3a0ab5bc531673086410b6fde919
25
+ ./data/meterpreter/dump_sam.x86.dll:SHA3-256:b4e194f0f3d9e9c661b57afbb1b9ec402c63b150f3f0942f407e94731f803ad6
26
+ ./data/meterpreter/elevator.x64.debug.dll:SHA3-256:2ef6be33eb7b8a0107fda076f537d692b3b89c4017b862359dc4b7932533a195
27
+ ./data/meterpreter/elevator.x64.dll:SHA3-256:735e9bd595b2620abb3838b8adeb096fec921b86d69a5b919177f4e69fb050a8
28
+ ./data/meterpreter/elevator.x86.debug.dll:SHA3-256:c89fb442a039b5ba89180727f1db2343e1c8340795a2344c6626999218e92c76
29
+ ./data/meterpreter/elevator.x86.dll:SHA3-256:42c89e36be1df87483c71fd634a516323db62ecfc4bba82262800138b135e240
30
+ ./data/meterpreter/ext_server_bofloader.x64.debug.dll:SHA3-256:44cde2a2a50267421f6cdc5d5917b138c66e4a94723098a0da764e64fb05287e
31
+ ./data/meterpreter/ext_server_bofloader.x64.dll:SHA3-256:32b1ea0fffe7473f30d3aed1716c781277ce58509301de64e598b231d83f06c1
32
+ ./data/meterpreter/ext_server_bofloader.x86.debug.dll:SHA3-256:56589dcf34424e0e8526d57e6304018015efdf46d0ac4f5ed820ae7545af647a
33
+ ./data/meterpreter/ext_server_bofloader.x86.dll:SHA3-256:2fc0d175724de8fee54ee153fdfc967a0e108bcd664148369f4cc8562977cf36
34
+ ./data/meterpreter/ext_server_espia.x64.debug.dll:SHA3-256:2a85879a58d21b2c95dd887997143784217ef7912f0ea9f8e0dc0ba7574bf37b
35
+ ./data/meterpreter/ext_server_espia.x64.dll:SHA3-256:557d5489ebfd2252f172bc9b5b770da735381d5bbe767594a88a968ea94084d0
36
+ ./data/meterpreter/ext_server_espia.x86.debug.dll:SHA3-256:b957dd509a4dc394536284ec8e26a8f2ea56bd584bbfce4ecff1250a563e7fc0
37
+ ./data/meterpreter/ext_server_espia.x86.dll:SHA3-256:3352cbdc2f588e2b62ce2807c959073faacb37503d945e677b538623eb4fe696
38
+ ./data/meterpreter/ext_server_extapi.x64.debug.dll:SHA3-256:7fd6256db6ac041f1708b8e5dd5062183ea1646e5815459e3aaf74c01791a4e3
39
+ ./data/meterpreter/ext_server_extapi.x64.dll:SHA3-256:89a0f8f1c4769a777b3ad19f3900100b3a3c551157e4a34391328c98e12fc71f
40
+ ./data/meterpreter/ext_server_extapi.x86.debug.dll:SHA3-256:6a671c42f1523df37b12d4be9faf707b0274046c6c19f672587d48a5138f0969
41
+ ./data/meterpreter/ext_server_extapi.x86.dll:SHA3-256:ae81321485ccf8bede8b55000fb5feac148c3742a4cd8b39d90b5bfba8e61740
42
+ ./data/meterpreter/ext_server_incognito.x64.debug.dll:SHA3-256:9d0f96d606c66e8dcacd1a9ae5a331248988ee32a449b40f201a5dac9524bcaf
43
+ ./data/meterpreter/ext_server_incognito.x64.dll:SHA3-256:1dc4e15567a30c9fdf8f89aaf50b3d1f6afe3fe0c4a97d1628308beee9a256e4
44
+ ./data/meterpreter/ext_server_incognito.x86.debug.dll:SHA3-256:66b34e1411178af13bee37cdc9a45fb15650da7b4b8c80afd8be4c148e4a95aa
45
+ ./data/meterpreter/ext_server_incognito.x86.dll:SHA3-256:aa39689283bebf9148bc0dd0b1ced4cb7794410ef0704b22446160f7dc874243
46
+ ./data/meterpreter/ext_server_kiwi.x64.debug.dll:SHA3-256:78670aa4f3e38379a60e851968df669790f29d9176cf50d5d111b9aad12dea48
47
+ ./data/meterpreter/ext_server_kiwi.x64.dll:SHA3-256:9175dcde6607051a536b284efa2ad6525942c8c2a21eed1e5296d7c005410f30
48
+ ./data/meterpreter/ext_server_kiwi.x86.debug.dll:SHA3-256:2fcfd48cfd97f7aa9cadd1db57d88d24bf067ab14e470d193bc1fe374c12e650
49
+ ./data/meterpreter/ext_server_kiwi.x86.dll:SHA3-256:fca844c1d59d001281707d9b32e35f27a290a209d115e43825d011b72c5a38a8
50
+ ./data/meterpreter/ext_server_lanattacks.x64.debug.dll:SHA3-256:578fb575efd6f876a1159aac4b4c61f8bbf689e2edecc8171fbf7780ef81df9c
51
+ ./data/meterpreter/ext_server_lanattacks.x64.dll:SHA3-256:e1871de28886a80d6f752b7e09d656f29e7f3d3e170e0427c07b445abec2fe22
52
+ ./data/meterpreter/ext_server_lanattacks.x86.debug.dll:SHA3-256:04828ba5afa2ce6b5f960461dfeb399a4387f536f0500fed78869236551e220a
53
+ ./data/meterpreter/ext_server_lanattacks.x86.dll:SHA3-256:bf6b24141739ba1be0c7b58ea85677b251c5476421d99d46eb48354b2764eefe
54
+ ./data/meterpreter/ext_server_peinjector.x64.debug.dll:SHA3-256:93a4fdb3f3639114bc24af7ee14db39da378c8a8f533ccb9c201b42788180dea
55
+ ./data/meterpreter/ext_server_peinjector.x64.dll:SHA3-256:a28bb7c0a002664595fe7e41d6a3a3dfa0894f9f3a83bfa1645de09a784304b4
56
+ ./data/meterpreter/ext_server_peinjector.x86.debug.dll:SHA3-256:09a0597c7d97eec1c9c3c7630e1902538c86f26436433b61ec587d05af03086c
57
+ ./data/meterpreter/ext_server_peinjector.x86.dll:SHA3-256:5302629aea4a706ed0e7a3a958af85309a13b5a7df04008900f796ced9c1e3c2
58
+ ./data/meterpreter/ext_server_powershell.x64.debug.dll:SHA3-256:295a88551e1dcf09c84ddacecb00f25d956b9f2ec0e1cbc6bf176b08cec10ce0
59
+ ./data/meterpreter/ext_server_powershell.x64.dll:SHA3-256:ceb25f5f646f9bcce741f92995f8531beb2e3b99ddc0d7cb7ba13e6b35920d55
60
+ ./data/meterpreter/ext_server_powershell.x86.debug.dll:SHA3-256:735581fc120fb50642c38f1bb36e90e22c7960b188470f7932c2712ae0e4d6e8
61
+ ./data/meterpreter/ext_server_powershell.x86.dll:SHA3-256:77385208516e45c95656aa5471484abd76864f28cb15b59ec44d65b38691c8ba
62
+ ./data/meterpreter/ext_server_priv.x64.debug.dll:SHA3-256:2965066edf8966028e46a9dfe37aacda41f2c3ff61bb4d2fad86777bf2fa31cb
63
+ ./data/meterpreter/ext_server_priv.x64.dll:SHA3-256:91331ecac08bd1da27b860fe35140354671d648fc7ba154373e4e4094c819c02
64
+ ./data/meterpreter/ext_server_priv.x86.debug.dll:SHA3-256:9b9cdbcc68fca1162b7e8626da3483bdc15c5aed327264f76cf927d53251dc68
65
+ ./data/meterpreter/ext_server_priv.x86.dll:SHA3-256:f93f7df934050ab344b87bd6068dc2e60b0350d24aa20747cd4df44b1cb91178
66
+ ./data/meterpreter/ext_server_python.x64.debug.dll:SHA3-256:8bd51117004658db498653ae21e203bd0dd0c0e1e425403cfa320d53dbdb2f98
67
+ ./data/meterpreter/ext_server_python.x64.dll:SHA3-256:e2cb0ee0d50731a201208ac64d2d7f441e16cbe933d7c47645b3c329afca4f64
68
+ ./data/meterpreter/ext_server_python.x86.debug.dll:SHA3-256:8e630fed6ed557b7df53a0bae2884fc5e5fae0c3d19350a7adae16b4f6fe5803
69
+ ./data/meterpreter/ext_server_python.x86.dll:SHA3-256:501f3930926ba27d40cebec46e496cc25506df0dddcda8842c306914da87a929
70
+ ./data/meterpreter/ext_server_sniffer.x64.dll:SHA3-256:f475986dc32a2e3ac5da059c40105044bc932c33647b82e69f10be71f65aa381
71
+ ./data/meterpreter/ext_server_sniffer.x86.dll:SHA3-256:dfe7cbb2616bc0efc8b9875f7df2c8eeced0705f8d4fa0077f25f9332a2078f1
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:e8cda1ec47d893cd0cb9295381c94094183019a8ea7f5e7142c3655b974c04ed
76
+ ./data/meterpreter/ext_server_stdapi.x64.dll:SHA3-256:bc9e8b3ded30b4cafdae71e8ecbb76b8637664eef0e62c31b8f04350f5e52ae9
77
+ ./data/meterpreter/ext_server_stdapi.x86.debug.dll:SHA3-256:3ce4cbf0223e437b4fcf253fc5cac6a2ad3bfcd8839678552eb30cf2b068aede
78
+ ./data/meterpreter/ext_server_stdapi.x86.dll:SHA3-256:0cacccc893c12eeec7918b7dd0d76bd75f6d46cbe4f82dc731629f8d1fce3da3
79
+ ./data/meterpreter/ext_server_unhook.x64.debug.dll:SHA3-256:aa1eb7a23ada3f05c2331b95e0ee172e1e02af11c4e58428fdb3a0604450ef35
80
+ ./data/meterpreter/ext_server_unhook.x64.dll:SHA3-256:3d5d5a1b3ade3d0a6c99dd7fbe8824977d1963bdedd3c65a8eabf472ef962cec
81
+ ./data/meterpreter/ext_server_unhook.x86.debug.dll:SHA3-256:dbdbe13cd6cc128896a53cff9489ca55865a98ca1f71c7aae7241776c4197af5
82
+ ./data/meterpreter/ext_server_unhook.x86.dll:SHA3-256:976a8370389523bcf46e0b2874a84c9d70a80664dab81ce6b95975142827dff3
83
+ ./data/meterpreter/ext_server_winpmem.x64.debug.dll:SHA3-256:ae14383e0a0f67551a598e4e7922e0630d61ae7e933145373a5c0d73a6851ac6
84
+ ./data/meterpreter/ext_server_winpmem.x64.dll:SHA3-256:78667d8228e7228fb3cb5f76315810c3c080889b8a0601101aa7fd501c150651
85
+ ./data/meterpreter/ext_server_winpmem.x86.debug.dll:SHA3-256:8fb5cad7bc8fb641f73d0e03fde44567e17537ed23d10dbec93d4bd08dc62c68
86
+ ./data/meterpreter/ext_server_winpmem.x86.dll:SHA3-256:43a1a3fac591a3abc385124a55bd08f424f9b7291c95cb038fde8adc7c160894
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:9e9311deb590bafb3068bdd7e37919729f99effbdca7105e1b03a628b8ba598d
91
+ ./data/meterpreter/metsrv.x64.dll:SHA3-256:a2c21398ab0cca7f7c72c05ce7d821e676432fc8dd38a4db4348503e1fbf8411
92
+ ./data/meterpreter/metsrv.x86.debug.dll:SHA3-256:1db9a6f471f2e6e4e6c0d43890f05bf68f42f233fd6e6e57a4963e28ced851a2
93
+ ./data/meterpreter/metsrv.x86.dll:SHA3-256:cc1a35f9edbe069555e6a976953e276164f86cc457821ba73b46dd30bf231479
94
+ ./data/meterpreter/screenshot.x64.debug.dll:SHA3-256:0584d852945852efa55174bb394d5ff302fb7137b1143b62f9613cb88a0e959a
95
+ ./data/meterpreter/screenshot.x64.dll:SHA3-256:ad695383fdc6dd71a108320d34db8a496779f76b5385bebc8ac19385400a0e37
96
+ ./data/meterpreter/screenshot.x86.debug.dll:SHA3-256:8f7b6ae9cbb67e3c3df170661858a947a16693ff7b14230d7fba877602d2e571
97
+ ./data/meterpreter/screenshot.x86.dll:SHA3-256:8eef7d4f2d59819c2d6c7f8cf5833b9f3aed2368ff57bbfbdb1674fdc7e0ffcc
data/manifest.uuid CHANGED
@@ -1 +1 @@
1
- 31f50d587a54c34f44f443bdfa68348bf633f7f78d263e1911a535211d09f8d2
1
+ d1aedac8093abf2e19af09313b1d59299b9cc344474e1c59940def4e4c367764
@@ -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.155
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: 2023-09-29 00:00:00.000000000 Z
99
+ date: 2023-10-04 00:00:00.000000000 Z
100
100
  dependencies:
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: rake
@@ -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
@@ -1,2 +1,3 @@
1
- ,���ַ�V����
2
- <��6�����6͍��:���P�R�t��_7z�{��_*[��h�����%ɔ�����:�������$�Γ��17��fw���OT�*|˸Dı�E g��� X�+o�9j�ad��O�S�ׂ8 !�E�aӭ���ѫ�/�o�[y�0,���K�u��?����Z{X�v�9p��J)-'1�0������_�Fj*��m�
1
+ C�Ia�V?\(Z����/R'L4�^��C��
2
+ 3fH<���hI����}b5�,(KÖ?����<����t�S_���fR���q��9����" E�yTPsyע
3
+ �Q����7�;H����r��U�R�w��5#�L�/:�=K gL�������N�4�n|���s�&�./>%�`�.O,��*�xi�A"��ІZ�@��������a���+�N��t���v�Q���\��XW��0�[�#���GC�g���{��