metasploit_payloads-mettle 1.0.48.pre.1 → 1.0.48.pre.2

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/build/aarch64-apple-darwin/bin/mettle +0 -0
  3. data/build/aarch64-apple-darwin/bin/sniffer +0 -0
  4. data/build/aarch64-iphone-darwin/bin/mettle +0 -0
  5. data/build/aarch64-iphone-darwin/bin/mettle.dylib +0 -0
  6. data/build/aarch64-iphone-darwin/bin/mettle.sha1.dylib +0 -0
  7. data/build/aarch64-iphone-darwin/bin/sniffer +0 -0
  8. data/build/aarch64-linux-musl/bin/mettle +0 -0
  9. data/build/aarch64-linux-musl/bin/mettle.bin +0 -0
  10. data/build/aarch64-linux-musl/bin/sniffer +0 -0
  11. data/build/aarch64-linux-musl/bin/sniffer.bin +0 -0
  12. data/build/arm-iphone-darwin/bin/mettle +0 -0
  13. data/build/arm-iphone-darwin/bin/mettle.dylib +0 -0
  14. data/build/arm-iphone-darwin/bin/mettle.sha1.dylib +0 -0
  15. data/build/arm-iphone-darwin/bin/sniffer +0 -0
  16. data/build/armv5b-linux-musleabi/bin/mettle +0 -0
  17. data/build/armv5b-linux-musleabi/bin/mettle.bin +0 -0
  18. data/build/armv5b-linux-musleabi/bin/sniffer +0 -0
  19. data/build/armv5b-linux-musleabi/bin/sniffer.bin +0 -0
  20. data/build/armv5l-linux-musleabi/bin/mettle +0 -0
  21. data/build/armv5l-linux-musleabi/bin/mettle.bin +0 -0
  22. data/build/armv5l-linux-musleabi/bin/sniffer +0 -0
  23. data/build/armv5l-linux-musleabi/bin/sniffer.bin +0 -0
  24. data/build/i486-linux-musl/bin/mettle +0 -0
  25. data/build/i486-linux-musl/bin/mettle.bin +0 -0
  26. data/build/i486-linux-musl/bin/sniffer +0 -0
  27. data/build/i486-linux-musl/bin/sniffer.bin +0 -0
  28. data/build/i686-w64-mingw32/bin/mettle.exe +0 -0
  29. data/build/mips-linux-muslsf/bin/mettle +0 -0
  30. data/build/mips-linux-muslsf/bin/mettle.bin +0 -0
  31. data/build/mips-linux-muslsf/bin/sniffer +0 -0
  32. data/build/mips-linux-muslsf/bin/sniffer.bin +0 -0
  33. data/build/mips64-linux-muslsf/bin/mettle +0 -0
  34. data/build/mips64-linux-muslsf/bin/mettle.bin +0 -0
  35. data/build/mips64-linux-muslsf/bin/sniffer +0 -0
  36. data/build/mips64-linux-muslsf/bin/sniffer.bin +0 -0
  37. data/build/mipsel-linux-muslsf/bin/mettle +0 -0
  38. data/build/mipsel-linux-muslsf/bin/mettle.bin +0 -0
  39. data/build/mipsel-linux-muslsf/bin/sniffer +0 -0
  40. data/build/mipsel-linux-muslsf/bin/sniffer.bin +0 -0
  41. data/build/powerpc-e500v2-linux-musl/bin/mettle +0 -0
  42. data/build/powerpc-e500v2-linux-musl/bin/mettle.bin +0 -0
  43. data/build/powerpc-e500v2-linux-musl/bin/sniffer +0 -0
  44. data/build/powerpc-e500v2-linux-musl/bin/sniffer.bin +0 -0
  45. data/build/powerpc-linux-muslsf/bin/mettle +0 -0
  46. data/build/powerpc-linux-muslsf/bin/mettle.bin +0 -0
  47. data/build/powerpc-linux-muslsf/bin/sniffer +0 -0
  48. data/build/powerpc-linux-muslsf/bin/sniffer.bin +0 -0
  49. data/build/powerpc64le-linux-musl/bin/mettle +0 -0
  50. data/build/powerpc64le-linux-musl/bin/mettle.bin +0 -0
  51. data/build/powerpc64le-linux-musl/bin/sniffer +0 -0
  52. data/build/powerpc64le-linux-musl/bin/sniffer.bin +0 -0
  53. data/build/s390x-linux-musl/bin/mettle +0 -0
  54. data/build/s390x-linux-musl/bin/mettle.bin +0 -0
  55. data/build/s390x-linux-musl/bin/sniffer +0 -0
  56. data/build/s390x-linux-musl/bin/sniffer.bin +0 -0
  57. data/build/x86_64-apple-darwin/bin/mettle +0 -0
  58. data/build/x86_64-apple-darwin/bin/sniffer +0 -0
  59. data/build/x86_64-linux-musl/bin/mettle +0 -0
  60. data/build/x86_64-linux-musl/bin/mettle.bin +0 -0
  61. data/build/x86_64-linux-musl/bin/sniffer +0 -0
  62. data/build/x86_64-linux-musl/bin/sniffer.bin +0 -0
  63. data/build/x86_64-w64-mingw32/bin/mettle.exe +0 -0
  64. data/lib/metasploit_payloads/mettle/version.rb +1 -1
  65. data/lib/metasploit_payloads/mettle.rb +23 -0
  66. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8235852f0bf86bbc1161af81e7d93043de5033e3ffe0e296905dd9195f0deccc
4
- data.tar.gz: 117057997f13fd669c73aa379b0390a783f453c608475fff4b7e412bffd2dbb5
3
+ metadata.gz: 9300e087f6aeb5624418edca451f73c44c5eb0e8d9725ccd24bb3da9f11565c8
4
+ data.tar.gz: 6928973f689d58601acadd0b530e9e248fb77700fc0bf0c00dc271861adf6183
5
5
  SHA512:
6
- metadata.gz: ce89c69bc4c58c95d69361979cad35f3dedab951e00b76f9886242a9679f639fcc93185d6b669df83d425b0aacc49997c395a92f1ae9b220a36904e6a423a45a
7
- data.tar.gz: 7ba1f8c7b79b5b6cd7f1727193af6c9554385ec2d1abccdf35e73f4f25c4a20cb600c381c7181a36cd4ee21072e2a253a5b2f94b0824e455831b17a3f2d66de1
6
+ metadata.gz: 7cf43fbd94e0bdaec4540f1497c0ff4997dd05d1275f191689bb8dd137a44c01ed72e8d89c2c4b0fb5102cb659b3301624183a4123dc7eee84eb257b4d0d1330
7
+ data.tar.gz: accb75cd4baf1b8b6bbcc7b622ac60acfb729a08224ff8ebcd3fbecc75e311881af352f9b2aa003c0485bc171282a183fa89360f2c2960fee34efc2f00819d25
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
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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,7 +1,7 @@
1
1
  # -*- coding:binary -*-
2
2
  module MetasploitPayloads
3
3
  class Mettle
4
- VERSION = '1.0.48.pre.1'
4
+ VERSION = '1.0.48.pre.2'
5
5
 
6
6
  def self.version
7
7
  VERSION
@@ -16,6 +16,8 @@ module MetasploitPayloads
16
16
 
17
17
  CMDLINE_MAX = 2000
18
18
  CMDLINE_SIG = 'DEFAULT_OPTS'.freeze
19
+ CONFIG_BLOCK_MAX = 8192
20
+ CONFIG_BLOCK_SIG = 'CONFIG_BLOCK'.freeze
19
21
  #
20
22
  # Config is a hash. Valid keys are:
21
23
  # :uri to connect to
@@ -36,6 +38,9 @@ module MetasploitPayloads
36
38
  def to_binary(format=:process_image)
37
39
  bin = self.class.read(@platform, format)
38
40
  unless @config.empty?
41
+ if @config[:config_block]
42
+ bin = add_config_block(bin, @config[:config_block])
43
+ end
39
44
  params = generate_argv
40
45
  bin = add_args(bin, params)
41
46
  end
@@ -47,6 +52,10 @@ module MetasploitPayloads
47
52
  def generate_argv
48
53
  cmd_line = 'mettle '
49
54
  @config.each do |opt, val|
55
+ # :config_block is embedded into the binary via add_config_block (a
56
+ # TLV blob parsed natively); it is not a command-line option.
57
+ next if opt == :config_block
58
+
50
59
  cmd_line << "-#{short_opt(opt)} \"#{val}\" "
51
60
  end
52
61
  if cmd_line.length > CMDLINE_MAX
@@ -77,6 +86,20 @@ module MetasploitPayloads
77
86
  end
78
87
  end
79
88
 
89
+ # Layout in the binary: [length:4 BE][config_bytes][zero padding] within
90
+ # the CONFIG_BLOCK_MAX-byte slot. Carrying the length explicitly avoids
91
+ # a trailing-null ambiguity — the XOR-encoded config can legitimately
92
+ # end in 0x00, which would otherwise be eaten by a backward scan.
93
+ def add_config_block(bin, config_bytes)
94
+ usable = CONFIG_BLOCK_MAX - 4
95
+ if config_bytes.length > usable
96
+ raise Mettle::Error, 'mettle config block too large', caller
97
+ end
98
+ payload = [config_bytes.length].pack('N') + config_bytes
99
+ padded = payload + "\x00" * (CONFIG_BLOCK_MAX - payload.length)
100
+ bin.sub(CONFIG_BLOCK_SIG + "\x00" * (CONFIG_BLOCK_MAX - CONFIG_BLOCK_SIG.length), padded)
101
+ end
102
+
80
103
  def add_args(bin, params)
81
104
  if params[8] != "\x00"
82
105
  bin.sub(CMDLINE_SIG + ' ' * (CMDLINE_MAX - CMDLINE_SIG.length), params)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit_payloads-mettle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.48.pre.1
4
+ version: 1.0.48.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cammack