Skip to content

Commit eef82a5

Browse files
committed
Add support for session GUIDs in mettle
1 parent 37b9cd0 commit eef82a5

34 files changed

+142
-34
lines changed

lib/msf/base/sessions/mettle_config.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'msf/core/payload/transport_config'
44
require 'msf/core/payload/uuid/options'
55
require 'base64'
6+
require 'securerandom'
67

78
module Msf
89
module Sessions
@@ -53,6 +54,7 @@ def generate_tcp_uri(opts)
5354

5455
def generate_config(opts={})
5556
opts[:uuid] ||= generate_payload_uuid
57+
5658
case opts[:scheme]
5759
when 'http'
5860
transport = transport_config_reverse_http(opts)
@@ -66,8 +68,15 @@ def generate_config(opts={})
6668
else
6769
raise ArgumentError, "Unknown scheme: #{opts[:scheme]}"
6870
end
71+
6972
opts[:uuid] = Base64.encode64(opts[:uuid].to_raw).strip
70-
opts.slice(:uuid, :uri, :debug, :log_file)
73+
guid = "\x00" * 16
74+
unless opts[:stageless] == true
75+
guid = [SecureRandom.uuid.gsub(/-/, '')].pack('H*')
76+
end
77+
opts[:session_guid] = Base64.encode64(guid)
78+
79+
opts.slice(:uuid, :session_guid, :uri, :debug, :log_file)
7180
end
7281

7382
end

modules/payloads/singles/linux/aarch64/meterpreter_reverse_http.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'http'}
39+
opts = {
40+
scheme: 'http',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('aarch64-linux-musl', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/aarch64/meterpreter_reverse_https.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'https'}
39+
opts = {
40+
scheme: 'https',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('aarch64-linux-musl', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/aarch64/meterpreter_reverse_tcp.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'tcp'}
39+
opts = {
40+
scheme: 'tcp',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('aarch64-linux-musl', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armbe/meterpreter_reverse_http.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'http'}
39+
opts = {
40+
scheme: 'http',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5b-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armbe/meterpreter_reverse_https.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'https'}
39+
opts = {
40+
scheme: 'https',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5b-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armbe/meterpreter_reverse_tcp.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'tcp'}
39+
opts = {
40+
scheme: 'tcp',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5b-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armle/meterpreter_reverse_http.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'http'}
39+
opts = {
40+
scheme: 'http',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5l-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armle/meterpreter_reverse_https.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'https'}
39+
opts = {
40+
scheme: 'https',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5l-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

modules/payloads/singles/linux/armle/meterpreter_reverse_tcp.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ def initialize(info = {})
3636
end
3737

3838
def generate
39-
opts = {scheme: 'tcp'}
39+
opts = {
40+
scheme: 'tcp',
41+
stageless: true
42+
}
4043
MetasploitPayloads::Mettle.new('armv5l-linux-musleabi', generate_config(opts)).to_binary :exec
4144
end
4245
end

0 commit comments

Comments
 (0)