2016-03-26 8 views
6

मेरे पास एक ऐसा एप्लिकेशन है जो मैं ओपनएसएसएल 1.0.2 का उपयोग करता हूं और मैं वायर्सहार्क के साथ यातायात की जांच करना चाहता हूं। वायर्सहार्क (कथित तौर पर) टीएलएस वार्तालापों को डिक्रिप्ट कर सकता है बशर्ते आप इसे प्री-मास्टर रहस्य दें।ओपनएसएसएल-आधारित क्लाइंट का उपयोग करके मैं प्री-मास्टर गुप्त कैसे निकालूं?

यदि मैं TLS_RSA_WITH_AES_256_CBC_SHA256 जैसे सिफर सुइट का उपयोग कर रहा हूं; क्या कोई मुझे बता सकता है कि SSL या SSL_CTX संरचना से प्री-मास्टर गुप्त कैसे प्राप्त करें? मैं SSL ऑब्जेक्ट के भीतर हैकिंग अपारदर्शी संरचनाओं के साथ ठीक हूं - यह किसी भी उत्पाद के लिए नहीं है; मैं सिर्फ यह जानना चाहता हूं कि वायरसहार्क के लिए प्री-मास्टर गुप्त फ़ाइल कैसे पॉप्युलेट करें।

+1

यह भी देखें [ओपनएसएसएल एप्लिकेशन से पूर्व-मास्टर कुंजी निकालें] (http://security.stackexchange.com/q/80158/29925) InfoSec.SE पर। – jww

+0

शायद यह उल्लेखनीय है कि ओपनएसएसएल 1.1।0 जारी किया गया है: कई संरचनाओं को अपारदर्शी बना दिया गया है, इसलिए आपको शायद हैकिंग की उचित मात्रा में करना होगा। – jww

उत्तर

6

मैं मास्टर कुंजी का उपयोग करने की सलाह देता हूं, जो प्राप्त करना आसान है। मेरे सबसे अच्छे ज्ञान के लिए प्री-मास्टर कुंजी केवल ओपनएसएसएल में ढेर पर मौजूद है। मास्टर कुंजी ssl_session_st में उपलब्ध है (1.0.2 शाखा में ssl.h में परिभाषित है लेकिन बाद के संस्करण में ssl_locl.h पर स्थानांतरित हो गया है)। SSL सदस्य चर sessionssl_session_st (उर्फ SSL_SESSION) के लिए एक सूचक है।

वायरशर्क मास्टर कुंजी के साथ-साथ कनेक्शन को डिक्रिप्ट करने के लिए प्री-मास्टर कुंजी का उपयोग कर सकता है। Here are the formats कि Wireshark इस लेखन के रूप में समर्थन करता है:

  • RSA xxxx yyyy कहाँ xxxx एन्क्रिप्टेड पूर्व मास्टर गुप्त के पहले 8 बाइट्स (हेक्स एन्कोड) yyyy कहाँ क्लियर पूर्व मास्टर गुप्त (है hex- एन्कोडेड) (इस बग 4349 के साथ पेश किया मूल स्वरूप) है

  • RSA Session-ID:xxxx Master-Key:yyyy कहाँ xxxx एसएसएल सत्र आईडी (हेक्स एन्कोड) कहाँ yyyy है ग है leartext मास्टर गुप्त (हेक्स-एन्कोडेड) (openssl s_client मास्टर-कुंजी आउटपुट का समर्थन करने के लिए जोड़ा गया) यह कुछ हद तक गलत है क्योंकि इसके बारे में आरएसए विशिष्ट कुछ भी नहीं है।

  • PMS_CLIENT_RANDOM xxxx yyyy कहाँ xxxx ClientHello (हेक्स एन्कोड) कहाँ yyyy क्लियर पूर्व मास्टर रहस्य है (हेक्स एन्कोड) से client_random है (इस प्रारूप SSL कनेक्शन decrypted जा करने के लिए अनुमति देता है, यदि कोई उपयोगकर्ता कर सकते हैं पीएमएस पर कब्जा है, लेकिन एक SSL सर्वर के साथ एक विशिष्ट सत्र के लिए एमएस की वसूली नहीं कर सका।)

  • CLIENT_RANDOM xxxx yyyy कहाँ xxxx से ClientHello (हेक्स एन्कोड client_random) कहाँ 012,326,619 हैक्लियर मास्टर गुप्त (हेक्स एन्कोड) है (इस प्रारूप की अनुमति देता है गैर आरएसए SSL कनेक्शन decrypted किया जाना है यानी ECDHE-आरएसए।)

नोट है कि न तो पूर्व स्वामी कुंजी है और न ही मास्टर कुंजी सममित कुंजी है (आपका प्रश्न शीर्षक का तात्पर्य है कि आप सोच सकते हैं कि यह है)। सममित कुंजी मास्टर कुंजी और क्लाइंट/सर्वर यादृच्छिक डेटा से ली गई है।

+0

rhashimoto: हाँ! यह वास्तव में मुझे आवश्यक जानकारी है। और आप सही हैं - मैं उलझन में था - मैंने सोचा था कि पूर्व मास्टर रहस्य सममित कुंजी था। मैं किसी को भ्रमित करने से बचने के लिए इसे बेहतर ढंग से प्रतिबिंबित करने के लिए शीर्षक में संशोधन करने जा रहा हूं। –

+1

एफवाईआई: ओपनएसएसएल 1.1.0 [SSL_SESSION_get_master_key()] प्रदान करता है (https://www.openssl.org/docs/man1.1.0/ssl/SSL_SESSION_get_master_key.html) फ़ंक्शन। –

संबंधित मुद्दे

 संबंधित मुद्दे