2012-12-05 77 views
1

我試圖編寫/修改metasploit模塊以找出服務器支持哪些密碼(用於掃描目的)。我是否需要枚舉密碼,全部試用它們,還是有辦法從服務器請求它支持的密碼?找出服務器使用Ruby支持哪些密碼

到目前爲止,我只能以find out哪些模塊支持我的本地openssl版本。

當我想了解一個certificate的信息,我可以用做:

cert = OpenSSL::X509::Certificate.new(sock.peer_cert) 
print_status("#{ip}:#{rport} Public Key: #{cert.public_key}") 

是否有密碼相似的地方?

回答

-1

您首先將所有密碼加載到openssl_add_all_ciphers,然後您可以使用EVP_get_cipherbyname對單個密碼進行詢問。有幾種方法可以列舉密碼,例如。 using OBJ_NAME_do_all_sorted

Ruby的OpenSSL的模塊具有hardcoded list

class Cipher 
    %w(AES CAST5 BF DES IDEA RC2 RC4 RC5).each{|name| 
     klass = Class.new(Cipher){ 
     define_method(:initialize){|*args| 
      cipher_name = args.inject(name){|n, arg| "#{n}-#{arg}" } 
      super(cipher_name) 
     } 
     } 

PS。顯然有ciphers命令,但這並不好玩。

+0

我是否正確理解,這是隻有當你在服務器上執行這個時?我的問題是針對從外面掃描。只是編輯了這個問題,以提供更好的可理解性:我是否需要枚舉密碼,全部嘗試,還是有辦法從服務器請求支持它的密碼? – user857990

+0

您是問服務器支持哪些密碼(要求您在服務器上運行代碼)或哪些密碼* SSL握手支持*? –

+0

'sslscan --no-failed server:port'返回一個標題爲_Supported Server Cipher(s)_的列表。基本上,我想閱讀這些信息,但用紅寶石。列舉唯一的可能性? – user857990