Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2016-6271 — ZRTP मैन-इन-द-मिडल (man-in-the-middle) हमले के लिए अवधारणा का प्रमाण | Kitploit
उपकरण/GitHubGitHub/gteissier/cve-2016-6271
भेद्यता विश्लेषणशोषणनेटवर्क सुरक्षाक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंग
GitHubgteissier/cve-2016-6271

CVE-2016-6271

ZRTP मैन-इन-द-मिडल (man-in-the-middle) हमले के लिए अवधारणा का प्रमाण

रिपॉजिटरी देखें
549 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2016-6271

CVE-2016-6271 का प्रभाव libbzrtp पर पड़ता है, जो कि Belledonne Communications द्वारा विकसित एक ZRTP लाइब्रेरी है।

यह लाइब्रेरी अंतिम-उपयोगकर्ता अनुप्रयोगों में एम्बेडेड होती है, उदाहरण के लिए linphone, जो Play store पर Android ऐप के रूप में उपलब्ध है। वर्तमान संस्करण 3.2.7 में एम्बेडेड libbzrtp का संस्करण CVE-2016-6271 के प्रति असुरक्षित नहीं होना चाहिए।

TLDR;

asciicast

असुरक्षित ZRTP एजेंट बनाएँ

cd vulnerable-bzrtp && docker build -t vulnerable-bzrtp .

ZRTP-सक्षम मैलोरी बनाएँ

cd mitm-bzrtp && docker build -t mitm-bzrtp .

सब एक साथ चलाएँ

docker-compose -f cve-2016-6271.yaml up

ZRTP, विशिष्टताएँ और कंटेनर

एंड-टू-एंड मीडिया एन्क्रिप्शन

ZRTP वॉयस ओवर IP कॉल को सुरक्षित करने का एक समाधान है।

निम्नलिखित IETF rfc6189 से एक उद्धरण है:

root@kitploit:~
   ZRTP एक कुंजी समझौता प्रोटोकॉल है जो कॉल सेटअप के दौरान मीडिया पथ में डिफी-हेलमैन कुंजी विनिमय करता है और इसे उसी पोर्ट पर ले जाया जाता है जिस पोर्ट पर रियल-टाइम ट्रांसपोर्ट प्रोटोकॉल (RTP) [RFC3550] मीडिया स्ट्रीम स्थापित की गई है, जो सिग्नलिंग प्रोटोकॉल जैसे सेशन इनिशिएशन प्रोटोकॉल (SIP) [RFC3261] का उपयोग करके स्थापित की गई है। यह एक साझा रहस्य उत्पन्न करता है, जिसका उपयोग फिर सिक्योर RTP (SRTP) [RFC3711] सत्र के लिए कुंजी और साल्ट उत्पन्न करने के लिए किया जाता है। ZRTP [PGPfone] से विचार उधार लेता है। ZRTP का एक संदर्भ कार्यान्वयन [Zfone] में उपलब्ध है।

   ZRTP प्रोटोकॉल में कुछ अच्छी क्रिप्टोग्राफिक विशेषताएँ हैं जो मीडिया सत्र एन्क्रिप्शन के कई अन्य दृष्टिकोणों में नहीं पाई जाती हैं। यद्यपि यह एक पब्लिक की एल्गोरिदम का उपयोग करता है, यह पब्लिक की इंफ्रास्ट्रक्चर (PKI) पर निर्भर नहीं करता है। वास्तव में, यह स्थायी पब्लिक की का बिल्कुल भी उपयोग नहीं करता है। यह हैश प्रतिबद्धता के साथ एफेमेरल डिफी-हेलमैन (DH) का उपयोग करता है और उपयोगकर्ताओं को फोन पर पढ़ने और मौखिक रूप से तुलना करने के लिए एक छोटी प्रमाणीकरण स्ट्रिंग (SAS) प्रदर्शित करके मैन-इन-द-मिडल (MiTM) हमलों का पता लगाने की अनुमति देता है।

संक्षेप में:

  • ZRTP RTP के समान मीडिया पथ साझा करता है: IP एंडपॉइंट और UDP पोर्ट
  • ZRTP SRTP के लिए क्रिप्टो सामग्री उत्पन्न करने के लिए एफेमेरल डिफी-हेलमैन का उपयोग करता है
  • ZRTP हैश प्रतिबद्धता का उपयोग करता है और मैन-इन-द-मिडल प्रयासों का पता लगाने के लिए एक छोटी प्रमाणीकरण स्ट्रिंग प्रदर्शित करता है

असुरक्षित इमेज

एक असुरक्षित ZRTP एजेंट को एक एकल C फ़ाइल से संकलित किया गया है:

root@kitploit:~
  ctx = bzrtp_createBzrtpContext(self_ssrc);
  assert(ctx != NULL);

  ret = bzrtp_setCallbacks(ctx, &bzrtp_callbacks);
  assert(ret == 0);

  bzrtp_initBzrtpContext(ctx);

  bzrtp_setClientData(ctx, self_ssrc, ctx);

  ret = bzrtp_startChannelEngine(ctx, self_ssrc);
  assert(ret == 0);

  for (now = 0; now += 50;) {
    usleep(500000);

    ret = recv(sd, buffer, sizeof(buffer), MSG_DONTWAIT);
    if (ret > 0) {
      received = ret;
      bzrtp_processMessage(ctx, self_ssrc, buffer, received);
    }

    bzrtp_iterate(ctx, self_ssrc, now);
  }

इसका आनंद लेने के लिए, cd vulnerable-bzrtp && docker build -t vulnerable-bzrtp . का उपयोग करके डॉकर इमेज बनाएँ। सावधान रहें कि Dockerfile start.sh को एंट्रीपॉइंट के रूप में परिभाषित करता है, जो मैलोरी के माध्यम से रूटिंग सेट करता है - इस पर बाद में अधिक जानकारी।

ZRTP मैन-इन-द-मिडल

हैश-प्रतिबद्धता महत्वपूर्ण है

30 मार्च 2016 को Belledone Communications को सूचित किया गया, इस भेद्यता को इस कमिट के साथ तुरंत ठीक कर दिया गया था।

ZRTP DHPart1 और DHPart2 नामक दो संदेशों में डिफी-हेलमैन करता है। बॉब उस DHPart2 संदेश को प्रतिबद्ध करता है जो वह एलिस का DHPart1 प्राप्त करने के बाद भेजेगा।

root@kitploit:~
    |        Commit (Bob's ZID, options, hash value) F5 |
    |<--------------------------------------------------|
    | F6 DHPart1 (pvr, shared secret hashes)            |
    |-------------------------------------------------->|
    |            DHPart2 (pvi, shared secret hashes) F7 |
    |<--------------------------------------------------|

bzrtp में खोजी गई भेद्यता हैश-प्रतिबद्धता सत्यापन की अनुपस्थिति है, जो एक हमलावर को दिलचस्प गुणों वाले pvi को जाली बनाने की गुंजाइश छोड़ती है।

यह प्रूफ ऑफ कॉन्सेप्ट rfc6189 में वर्णित कमजोरी को लागू करता है:

root@kitploit:~
   DH एक्सचेंज में हैश प्रतिबद्धता का उपयोग हमलावर को अपने हमले में सही शॉर्ट ऑथेंटिकेशन स्ट्रिंग (SAS) (धारा 7) उत्पन्न करने के लिए केवल एक अनुमान तक सीमित रखता है, जिसका अर्थ है कि SAS काफी छोटा हो सकता है। एक 16-बिट SAS, उदाहरण के लिए, हमलावर को पकड़े जाने की 65536 में से केवल एक संभावना प्रदान करता है। इस हैश प्रतिबद्धता सुविधा के बिना, एक MiTM हमलावर अपने स्वयं के दो DH सार्वजनिक मानों को अपने MiTM हमले के लिए चुनने से पहले दोनों पक्षों से pvi और pvr सार्वजनिक मान प्राप्त कर लेगा। वह फिर उस जानकारी का उपयोग दोनों पक्षों के लिए कई परीक्षण DH गणनाएँ शीघ्रता से करने के लिए कर सकता है जब तक कि उसे मेल खाने वाला SAS न मिल जाए। इस जन्मदिन हमले की लागत बढ़ाने के लिए, SAS को बहुत लंबा होना होगा। शॉर्ट ऑथेंटिकेशन स्ट्रिंग को लॉन्ग ऑथेंटिकेशन स्ट्रिंग बनना होगा, जो उपयोगकर्ता के लिए अस्वीकार्य होगा। हैश प्रतिबद्धता इस हमले को रोकती है, जिससे MiTM को दोनों पक्षों में से किसी भी पक्ष के सार्वजनिक मानों को जानने से पहले अपने स्वयं के दो DH सार्वजनिक मानों को चुनने के लिए मजबूर होना पड़ता है।

मैलोरी का परिचय

मैलोरी के सक्रिय हमलावर होने के साथ, उपरोक्त DH एक्सचेंज इस प्रकार हो जाता है:

root@kitploit:~
   Bob                    Mallory                     Alice
    |                         | Commit (Alice's ZID...) |
    |                         |<------------------------|
    | Commit (Alice's ZID...) |                         |
    |<------------------------|                         |
    |                         |                         |
    |       DHPart1 (pvr...)  |                         |
    |------------------------>|                         |
    |                         |     DHPart1 (pvr'...)   |
    |                         |------------------------>|
    |                         |       DHPart2 (pvi...)  |
    |                         |<------------------------|
    | * SAS(Mallory, Alice) is known at this time     * |
    | * now find a pvi' such as SAS(Bob, Mallory)     * |
    | * equals SAS(Mallory, Alice)                    * |
    |       DHPart2(pvi'...)  |                         |
    |<------------------------|                         |
    
    | * SAS(Mallory, Bob) = SAS(Alice, Mallory)       * |
    | * Both parties will confirm they share the same * |
    | * SAS value                                     * |
    
    | * Note that SRTP material (Alice, Mallory) will * |
    | * not match SRTP material (Mallory, Bob)        * |
    
    | * However, Mallory will be able to handle SRTP  * |
    | * flows from both Bob and Alice, giving         * |
    | * interception and tampering capabilities.      * |

यह Python3 और asyncio पर बनाया गया है। रॉ IP पैकेट को PF_PACKET सॉकेट का उपयोग करके कैप्चर किया जाता है, केवल IPv4 फ्रेम पर सुनने के लिए। Scapy रॉ फ्रेम को विघटित करने में मदद करता है। यह ZRTP पैकेट का विश्लेषण करता है और उन्हें पुनर्लेखित करता है, विशेष रूप से, यह HMAC प्रमाणीकरण टैग की पुनर्गणना करता है।

SAS ब्रूटफोर्सर C आधारित है और इनपुट के रूप में लेता है:

  • initiator-chain: Hello of responder || Commit || DHPart1
  • pvr: DHPart1 में प्रतिसादकर्ता द्वारा भेजा गया सार्वजनिक मान
  • zidi: आरंभकर्ता ZID
  • zidr: प्रतिसादकर्ता ZID
  • sasval: लक्ष्य SAS मान

cd mitm-bzrtp && docker build -t mitm-bzrtp . && cd .. का उपयोग करके डॉकर इमेज बनाएँ।

मैन-इन-द-मिडल को इसकी सहायता से सेट किया जाएगा:

  • दो डॉकर इमेज ZRTP असुरक्षित एजेंटों और हमलावर की मेजबानी करेंगी;
  • एक एकल कंपोज़ फ़ाइल एजेंटों के दो उदाहरण और मैन-इन-द-मिडल स्थिति में एक हमलावर लॉन्च करेगी।

एलिस और बॉब मैलोरी के माध्यम से आदान-प्रदान करेंगे, जो अवसरवादी रूप से मैन-इन-द-मिडल हमला करता है।

मेल खाने वाले SAS की खोज

यह विभिन्न svi का परीक्षण करने और यह जाँचने पर निर्भर करता है कि व्युत्पन्न SAS पहले से प्राप्त SAS से मेल खाता है या नहीं। सभी भयानक विवरण ब्रूटफोर्स स्रोत में पाए जा सकते हैं।

प्रामाणिकता सुनिश्चित करना

ZRTP संदेशों को पुनरावृत्त हैश की उलटी श्रृंखला का उपयोग कुंजी के रूप में करके प्रमाणित किया जाता है। यदि मैलोरी द्वारा DHPart2 को उड़ान में संशोधित किया जाता है, तो एलिस मैलोरी के विकृत DHPart2 को प्रामाणिक नहीं मानेगी, क्योंकि गणना किया गया HMAC प्राप्त HMAC से मेल नहीं खाएगा। इस जाँच को पास करने के लिए, मैलोरी को पुनरावृत्त हैश की पूरी श्रृंखला का उपयोग करना होगा, और उसे इस श्रृंखला का उपयोग करके सभी भेजे गए संदेशों पर हस्ताक्षर करना होगा।

टूल डाउनलोड करें