@@ -30,7 +30,7 @@ def do_tree_connect_smb2(request, session)
30
30
end
31
31
32
32
33
- logger . print_status ( "Relaying to next target #{ display_target ( session . metadata [ :relay_target ] ) } " )
33
+ logger . print_status ( "Relaying to next target #{ session . metadata [ :relay_target ] } " )
34
34
relayed_connection = create_relay_client (
35
35
session . metadata [ :relay_target ] ,
36
36
@relay_timeout
@@ -138,6 +138,7 @@ def relay_ntlmssp(session, incoming_security_buffer = nil)
138
138
# Choose the next machine to relay to, and send the incoming security buffer to the relay target
139
139
if ntlm_message . is_a? ( ::Net ::NTLM ::Message ::Type1 )
140
140
relayed_connection = session . metadata [ :relayed_connection ]
141
+ logger . info ( "Relaying NTLM type 1 message to #{ relayed_connection . target . ip } " )
141
142
relay_result = relayed_connection . relay_ntlmssp_type1 ( incoming_security_buffer )
142
143
return nil unless relay_result . nt_status == WindowsError ::NTStatus ::STATUS_MORE_PROCESSING_REQUIRED
143
144
@@ -155,14 +156,14 @@ def relay_ntlmssp(session, incoming_security_buffer = nil)
155
156
# NTLM challenge response
156
157
elsif ntlm_message . is_a? ( ::Net ::NTLM ::Message ::Type3 )
157
158
relayed_connection = session . metadata [ :relayed_connection ]
158
-
159
+ logger . info ( "Relaying #{ ntlm_message . ntlm_version == :ntlmv2 ? 'NTLMv2' : 'NTLMv1' } type 3 message to #{ relayed_connection . target } as #{ session . metadata [ :identity ] } " )
159
160
relay_result = relayed_connection . relay_ntlmssp_type3 ( incoming_security_buffer )
160
161
161
162
is_success = relay_result . nt_status == WindowsError ::NTStatus ::STATUS_SUCCESS
162
163
@relay_targets . on_relay_end ( relayed_connection . target , identity : session . metadata [ :identity ] , is_success : is_success )
163
164
164
165
if is_success
165
- logger . print_good ( "Identity: #{ session . metadata [ :identity ] } - Successfully authenticated against relay target #{ display_target ( relayed_connection . target ) } " )
166
+ logger . print_good ( "Identity: #{ session . metadata [ :identity ] } - Successfully authenticated against relay target #{ relayed_connection . target } " )
166
167
session . metadata [ :incoming_challenge_response ] = ntlm_message
167
168
168
169
@listener . on_ntlm_type3 (
@@ -177,13 +178,13 @@ def relay_ntlmssp(session, incoming_security_buffer = nil)
177
178
relayed_connection . disconnect!
178
179
179
180
if relay_result . nt_status == WindowsError ::NTStatus ::STATUS_LOGON_FAILURE
180
- logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay failed due to client authentication details not matching any account on target server #{ display_target ( relayed_connection . target ) } " )
181
+ logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay failed due to client authentication details not matching any account on target server #{ relayed_connection . target } " )
181
182
else
182
183
error_code = WindowsError ::NTStatus . find_by_retval ( relay_result . nt_status . value ) . first
183
184
if error_code . nil?
184
- logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay against target #{ display_target ( relayed_connection . target ) } failed with unexpected error: #{ relay_result . nt_status . value } " )
185
+ logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay against target #{ relayed_connection . target } failed with unexpected error: #{ relay_result . nt_status . value } " )
185
186
else
186
- logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay against target #{ display_target ( relayed_connection . target ) } failed with unexpected error: #{ error_code . name } : #{ error_code . description } " )
187
+ logger . print_warning ( "Identity: #{ session . metadata [ :identity ] } - Relay against target #{ relayed_connection . target } failed with unexpected error: #{ error_code . name } : #{ error_code . description } " )
187
188
end
188
189
end
189
190
@@ -211,21 +212,15 @@ def create_relay_client(target, timeout)
211
212
212
213
client
213
214
rescue ::Rex ::ConnectionTimeout => e
214
- msg = "Timeout error retrieving server challenge from target #{ display_target ( target ) } . Most likely caused by unresponsive target"
215
+ msg = "Timeout error retrieving server challenge from target #{ target } . Most likely caused by unresponsive target"
215
216
elog ( msg , error : e )
216
217
logger . print_error msg
217
218
nil
218
219
rescue ::Exception => e
219
- msg = "Unable to create relay to #{ display_target ( target ) } "
220
+ msg = "Unable to create relay to #{ target } "
220
221
elog ( msg , error : e )
221
222
logger . print_error msg
222
223
nil
223
224
end
224
-
225
- protected
226
-
227
- def display_target ( target )
228
- "#{ target . protocol } ://#{ target . ip } :#{ target . port } "
229
- end
230
225
end
231
226
end
0 commit comments