7
7
require 'net/ssh'
8
8
require 'metasploit/framework/login_scanner/ssh'
9
9
require 'metasploit/framework/credential_collection'
10
+ require 'sshkey'
11
+ require 'net/ssh/command_stream'
10
12
11
13
class MetasploitModule < Msf ::Auxiliary
12
14
@@ -140,7 +142,7 @@ def pull_cleartext_keys(keys)
140
142
return cleartext_keys
141
143
end
142
144
143
- def session_setup ( result , ssh_socket )
145
+ def session_setup ( result , ssh_socket , fingerprint )
144
146
return unless ssh_socket
145
147
146
148
# Create a new session from the socket
@@ -157,7 +159,7 @@ def session_setup(result, ssh_socket)
157
159
'KEY_PATH' => nil
158
160
}
159
161
160
- info = "SSH #{ result . credential . public } :#{ ssh_socket . auth_info [ :pubkey_id ] } (#{ ip } :#{ rport } )"
162
+ info = "SSH #{ result . credential . public } :#{ fingerprint } (#{ ip } :#{ rport } )"
161
163
s = start_session ( self , info , merge_me , false , conn . lsock )
162
164
self . sockets . delete ( ssh_socket . transport . socket )
163
165
@@ -229,7 +231,9 @@ def run_host(ip)
229
231
credential_core = create_credential ( credential_data )
230
232
credential_data [ :core ] = credential_core
231
233
create_credential_login ( credential_data )
232
- session_setup ( result , scanner . ssh_socket )
234
+ tmp_key = result . credential . private
235
+ ssh_key = SSHKey . new tmp_key
236
+ session_setup ( result , scanner . ssh_socket , ssh_key . fingerprint )
233
237
:next_user
234
238
when Metasploit ::Model ::Login ::Status ::UNABLE_TO_CONNECT
235
239
if datastore [ 'VERBOSE' ]
0 commit comments