metasploit_payloads-mettle 1.0.47 → 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.
- checksums.yaml +4 -4
- data/build/aarch64-apple-darwin/bin/mettle +0 -0
- data/build/aarch64-apple-darwin/bin/sniffer +0 -0
- data/build/aarch64-iphone-darwin/bin/mettle +0 -0
- data/build/aarch64-iphone-darwin/bin/mettle.dylib +0 -0
- data/build/aarch64-iphone-darwin/bin/mettle.sha1.dylib +0 -0
- data/build/aarch64-iphone-darwin/bin/sniffer +0 -0
- data/build/aarch64-linux-musl/bin/mettle +0 -0
- data/build/aarch64-linux-musl/bin/mettle.bin +0 -0
- data/build/aarch64-linux-musl/bin/sniffer +0 -0
- data/build/aarch64-linux-musl/bin/sniffer.bin +0 -0
- data/build/arm-iphone-darwin/bin/mettle +0 -0
- data/build/arm-iphone-darwin/bin/mettle.dylib +0 -0
- data/build/arm-iphone-darwin/bin/mettle.sha1.dylib +0 -0
- data/build/arm-iphone-darwin/bin/sniffer +0 -0
- data/build/armv5b-linux-musleabi/bin/mettle +0 -0
- data/build/armv5b-linux-musleabi/bin/mettle.bin +0 -0
- data/build/armv5b-linux-musleabi/bin/sniffer +0 -0
- data/build/armv5b-linux-musleabi/bin/sniffer.bin +0 -0
- data/build/armv5l-linux-musleabi/bin/mettle +0 -0
- data/build/armv5l-linux-musleabi/bin/mettle.bin +0 -0
- data/build/armv5l-linux-musleabi/bin/sniffer +0 -0
- data/build/armv5l-linux-musleabi/bin/sniffer.bin +0 -0
- data/build/i486-linux-musl/bin/mettle +0 -0
- data/build/i486-linux-musl/bin/mettle.bin +0 -0
- data/build/i486-linux-musl/bin/sniffer +0 -0
- data/build/i486-linux-musl/bin/sniffer.bin +0 -0
- data/build/i686-w64-mingw32/bin/mettle.exe +0 -0
- data/build/mips-linux-muslsf/bin/mettle +0 -0
- data/build/mips-linux-muslsf/bin/mettle.bin +0 -0
- data/build/mips-linux-muslsf/bin/sniffer +0 -0
- data/build/mips-linux-muslsf/bin/sniffer.bin +0 -0
- data/build/mips64-linux-muslsf/bin/mettle +0 -0
- data/build/mips64-linux-muslsf/bin/mettle.bin +0 -0
- data/build/mips64-linux-muslsf/bin/sniffer +0 -0
- data/build/mips64-linux-muslsf/bin/sniffer.bin +0 -0
- data/build/mipsel-linux-muslsf/bin/mettle +0 -0
- data/build/mipsel-linux-muslsf/bin/mettle.bin +0 -0
- data/build/mipsel-linux-muslsf/bin/sniffer +0 -0
- data/build/mipsel-linux-muslsf/bin/sniffer.bin +0 -0
- data/build/powerpc-e500v2-linux-musl/bin/mettle +0 -0
- data/build/powerpc-e500v2-linux-musl/bin/mettle.bin +0 -0
- data/build/powerpc-e500v2-linux-musl/bin/sniffer +0 -0
- data/build/powerpc-e500v2-linux-musl/bin/sniffer.bin +0 -0
- data/build/powerpc-linux-muslsf/bin/mettle +0 -0
- data/build/powerpc-linux-muslsf/bin/mettle.bin +0 -0
- data/build/powerpc-linux-muslsf/bin/sniffer +0 -0
- data/build/powerpc-linux-muslsf/bin/sniffer.bin +0 -0
- data/build/powerpc64le-linux-musl/bin/mettle +0 -0
- data/build/powerpc64le-linux-musl/bin/mettle.bin +0 -0
- data/build/powerpc64le-linux-musl/bin/sniffer +0 -0
- data/build/powerpc64le-linux-musl/bin/sniffer.bin +0 -0
- data/build/s390x-linux-musl/bin/mettle +0 -0
- data/build/s390x-linux-musl/bin/mettle.bin +0 -0
- data/build/s390x-linux-musl/bin/sniffer +0 -0
- data/build/s390x-linux-musl/bin/sniffer.bin +0 -0
- data/build/x86_64-apple-darwin/bin/mettle +0 -0
- data/build/x86_64-apple-darwin/bin/sniffer +0 -0
- data/build/x86_64-linux-musl/bin/mettle +0 -0
- data/build/x86_64-linux-musl/bin/mettle.bin +0 -0
- data/build/x86_64-linux-musl/bin/sniffer +0 -0
- data/build/x86_64-linux-musl/bin/sniffer.bin +0 -0
- data/build/x86_64-w64-mingw32/bin/mettle.exe +0 -0
- data/lib/metasploit_payloads/mettle/version.rb +1 -1
- data/lib/metasploit_payloads/mettle.rb +23 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9300e087f6aeb5624418edca451f73c44c5eb0e8d9725ccd24bb3da9f11565c8
|
|
4
|
+
data.tar.gz: 6928973f689d58601acadd0b530e9e248fb77700fc0bf0c00dc271861adf6183
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
@@ -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.
|
|
4
|
+
version: 1.0.48.pre.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Cammack
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2026-07-
|
|
12
|
+
date: 2026-07-03 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -141,9 +141,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
141
141
|
version: '0'
|
|
142
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
requirements:
|
|
144
|
-
- - "
|
|
144
|
+
- - ">"
|
|
145
145
|
- !ruby/object:Gem::Version
|
|
146
|
-
version:
|
|
146
|
+
version: 1.3.1
|
|
147
147
|
requirements: []
|
|
148
148
|
rubygems_version: 3.3.27
|
|
149
149
|
signing_key:
|