2015-03-02 171 views
1

在客戶端你好,我希望客戶端發送一組無效的密碼套件。在wireshark上,這是我正在尋找的輸出。如何從客戶端發送無效密碼到服務器?

enter image description here

要做到這一點,我想我必須編輯從客戶端發送到服務器的cipher list。我知道cipher list下的SSL_CTX_new()方法設置在ssl/ssl_lib.cline 1768SSL_CTX對象,即線下:

ssl_create_cipher_list(ret->method, 
     &ret->cipher_list,&ret->cipher_list_by_id, 
     meth->version == SSL2_VERSION ? "SSLv2" : SSL_DEFAULT_CIPHER_LIST); 

我該如何繼續?我假設我不得不修改ssl_create_cipher_list方法中的一些代碼,該方法在的第1353行中定義,但我無法弄清楚這一點。

任何幫助表示讚賞!

+0

這個問題似乎是題外話題,因爲它不是關於編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[信息安全堆棧交換](http://security.stackexchange.com/)會是一個更好的問題。 – jww 2015-03-02 11:59:57

+0

@jww,這是一個編程問題。我已經編輯了上面的問題。 – 2015-03-04 10:07:25

+0

等一下,你是在問如何跳過你的SSL庫故意行爲不端?還是你問如何指定你的客戶端不支持的密碼套件? – jschultz410 2015-03-05 05:30:57

回答

1

我應該認爲,而不是打擾與ssl_create_cipher_list,而是重寫協商階段(其中密碼發送),併發送任何你想要的無效密碼。換句話說,任何不在this list

+0

謝謝,是的,我試圖覆蓋客戶端密碼的有效性檢查。但是,有太多的依賴關係,並且代碼流很混亂。我正在尋找最簡單的方法來做到這一點。 – 2015-03-05 05:00:38

0

符合條件的TLS客戶端只能發送客戶端支持的密碼套件。它不能發送它不支持的密碼套件。來自TLS 1.2, RFC 5246

7.4.1.2。客戶問候

...

的密碼套件列表,從客戶到 客戶問候消息中的服務器傳遞,包含在客戶端的 秩序的加密算法 通過客戶支持的組合偏好(喜歡選擇第一)...

cipher_suites

這是由0所支持的加密選項列表客戶端,首先客戶的第一選擇。如果session_id字段不爲空(意味着會話恢復 請求),則該向量必須至少包含來自該會話的 的cipher_suite。值在附錄A.5中定義。

因此,您的客戶端需要指定它支持的密碼套件。您可以明確選擇您認爲對您有用的內容,也可以依賴您的圖書館定義。例如,使用OpenSSL,你可以這樣做:

SSL_CTX_set_cipher_list(ssl_ctx, "-ALL:HIGH"); 
0

如果你只需要做到這一點作爲一種一次性的測試,你可以寫,將接受來自客戶端連接一個簡單的TCP層代理的,使用期望的不受支持的列表對已(預先知道)的客戶端密碼套件列表進行RegEx替換,並將其轉發到所需的服務器。選擇你喜歡的語言來實現代理。我不確定這是否比修改代碼更容易,但如果這符合您的目的,則會更清晰。

如果您確實希望客戶端建立TLS會話,這將不起作用,因爲這本質上是MITM攻擊。這只是一種將不支持的密碼發送到服務器並查看服務器如何反應的方法。

相關問題