ruby_smb 3.1.3 → 3.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0b10829db92d5746b069916440f0e91ca006c370053fdc02621ed75723efbf40
4
- data.tar.gz: aeeeb396277c47b16ff977e33344ab08da275a0632d6a9a220aac7e733e91311
3
+ metadata.gz: 587f03eec26c36a6ca67ffde30bb05881a456609dff32873b912e7763d266f25
4
+ data.tar.gz: 18c3b50b89657fe874d0a13904dad2b36c01c49089f01b5a3821d1733eb07c61
5
5
  SHA512:
6
- metadata.gz: 7269f0664dd840a83d39d5d1b3a953f87d050bcffbea0b9993685ef1ec91c9047a9117d88ee305d2c467555b475a7c15e82f0f8bfa1b98d077ea00fd401de200
7
- data.tar.gz: a5997a65e48cd66585896c55cd8a01fbbee4a8b04280a15ecacdd79501fdd42caf772ac712a32228ea6c1991a6db27c9657d8829ca412691df0834e392c45284
6
+ metadata.gz: cd6f94e4b093ecab453e6e7f2056bfb7b52fbf2cfec51a26eceb2761b98c78bfd0fe273f083b1ec7db69f553ac7b8fb594e4d7c31ea8468e02337611b0bd4541
7
+ data.tar.gz: 4b5d924834a9168458ad50afcf6b27df5ba9ab50632b4b81db1e226235c7ebe80540e05fdc4aa6a6a608a6365e83f937304e0289a9d8e5689480f3021f6dd07e
checksums.yaml.gz.sig CHANGED
Binary file
@@ -146,7 +146,7 @@ module RubySMB
146
146
  end
147
147
 
148
148
  # Takes the raw binary string and returns a {RubySMB::SMB1::Packet::SessionSetupResponse}
149
- def smb1_ntlmssp_final_packet(raw_response)
149
+ def smb1_session_setup_response(raw_response)
150
150
  packet = RubySMB::SMB1::Packet::SessionSetupResponse.read(raw_response)
151
151
 
152
152
  unless packet.valid?
@@ -159,6 +159,11 @@ module RubySMB
159
159
  packet
160
160
  end
161
161
 
162
+ # Takes the raw binary string and returns a {RubySMB::SMB1::Packet::SessionSetupResponse}
163
+ def smb1_ntlmssp_final_packet(raw_response)
164
+ smb1_session_setup_response(raw_response)
165
+ end
166
+
162
167
  # Takes the raw binary string and returns a {RubySMB::SMB1::Packet::SessionSetupResponse}
163
168
  def smb1_ntlmssp_challenge_packet(raw_response)
164
169
  packet = RubySMB::SMB1::Packet::SessionSetupResponse.read(raw_response)
@@ -235,7 +240,7 @@ module RubySMB
235
240
  end
236
241
 
237
242
  # Takes the raw binary string and returns a {RubySMB::SMB2::Packet::SessionSetupResponse}
238
- def smb2_ntlmssp_final_packet(raw_response)
243
+ def smb2_session_setup_response(raw_response)
239
244
  packet = RubySMB::SMB2::Packet::SessionSetupResponse.read(raw_response)
240
245
  unless packet.valid?
241
246
  raise RubySMB::Error::InvalidPacket.new(
@@ -248,6 +253,11 @@ module RubySMB
248
253
  packet
249
254
  end
250
255
 
256
+ # Takes the raw binary string and returns a {RubySMB::SMB2::Packet::SessionSetupResponse}
257
+ def smb2_ntlmssp_final_packet(raw_response)
258
+ smb2_session_setup_response(raw_response)
259
+ end
260
+
251
261
  # Takes the raw binary string and returns a {RubySMB::SMB2::Packet::SessionSetupResponse}
252
262
  def smb2_ntlmssp_challenge_packet(raw_response)
253
263
  packet = RubySMB::SMB2::Packet::SessionSetupResponse.read(raw_response)
@@ -118,6 +118,7 @@ module RubySMB
118
118
  self.server_max_buffer_size = packet.parameter_block.max_buffer_size - 260
119
119
  self.negotiated_smb_version = 1
120
120
  self.session_encrypt_data = false
121
+ self.negotiation_security_buffer = packet.data_block.security_blob
121
122
  'SMB1'
122
123
  when RubySMB::SMB2::Packet::NegotiateResponse
123
124
  self.smb1 = false
@@ -137,6 +138,7 @@ module RubySMB
137
138
  self.server_start_time = packet.server_start_time.to_time if packet.server_start_time != 0
138
139
  self.server_system_time = packet.system_time.to_time if packet.system_time != 0
139
140
  self.server_supports_multi_credit = self.dialect != '0x0202' && packet&.capabilities&.large_mtu == 1
141
+ self.negotiation_security_buffer = packet.security_buffer
140
142
  case self.dialect
141
143
  when '0x02ff'
142
144
  when '0x0300', '0x0302'
@@ -295,6 +295,12 @@ module RubySMB
295
295
  # false otherwise
296
296
  attr_accessor :server_supports_multi_credit
297
297
 
298
+ # The negotiated security buffer. This is nil until the negotiation process
299
+ # has finished.
300
+ # @!attribute [rw] negotiation_security_buffer
301
+ # @return [String] The raw security buffer bytes
302
+ attr_accessor :negotiation_security_buffer
303
+
298
304
  # @param dispatcher [RubySMB::Dispatcher::Socket] the packet dispatcher to use
299
305
  # @param smb1 [Boolean] whether or not to enable SMB1 support
300
306
  # @param smb2 [Boolean] whether or not to enable SMB2 support
@@ -99,6 +99,10 @@ module RubySMB
99
99
  # unsupported protocol.
100
100
  class NegotiationFailure < RubySMBError; end
101
101
 
102
+ # Raised when Authentication fails, possibly due to an
103
+ # unsupported GSS mechanism type.
104
+ class AuthenticationFailure < RubySMBError; end
105
+
102
106
  # Raised when trying to parse raw binary into a BitField and the data
103
107
  # is invalid.
104
108
  class InvalidBitField < RubySMBError; end
data/lib/ruby_smb/gss.rb CHANGED
@@ -14,6 +14,7 @@ module RubySMB
14
14
  # @param asn The ASN object to apply the traversal path on.
15
15
  # @param [Array] path The path to traverse, each element is passed to the
16
16
  # ASN object's #value's #[] operator.
17
+ # @return [OpenSSL::ASN1::Sequence, nil]
17
18
  def self.asn1dig(asn, *path)
18
19
  path.each do |part|
19
20
  return nil unless asn&.value
@@ -40,6 +40,17 @@ module RubySMB
40
40
  parameter_block :parameter_block
41
41
  data_block :data_block
42
42
 
43
+ # Takes the specified security buffer string and sets it in the {RubySMB::SMB1::Packet::SessionSetupRequest::DataBlock#security_blob}
44
+ # field. It also automatically sets the length in
45
+ # {RubySMB::SMB1::Packet::SessionSetupRequest::ParameterBlock#security_blob_length}
46
+ #
47
+ # @param buffer [String] the security buffer
48
+ # @return [void]
49
+ def set_security_buffer(buffer)
50
+ parameter_block.security_blob_length = buffer.length
51
+ data_block.security_blob = buffer
52
+ end
53
+
43
54
  # Takes an NTLM Type 1 Message and creates the GSS Security Blob
44
55
  # for it and sets it in the {RubySMB::SMB1::Packet::SessionSetupRequest::DataBlock#security_blob}
45
56
  # field. It also automatically sets the length in
@@ -1,3 +1,3 @@
1
1
  module RubySMB
2
- VERSION = '3.1.3'.freeze
2
+ VERSION = '3.1.4'.freeze
3
3
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.3
4
+ version: 3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
@@ -97,7 +97,7 @@ cert_chain:
97
97
  EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
98
98
  9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
99
99
  -----END CERTIFICATE-----
100
- date: 2022-05-24 00:00:00.000000000 Z
100
+ date: 2022-06-21 00:00:00.000000000 Z
101
101
  dependencies:
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: redcarpet
metadata.gz.sig CHANGED
Binary file