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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
community-id-spec — नेटवर्क फ्लो को पहचानकर्ताओं में हैश करने के लिए एक खुला मानक, जिसे "Community IDs" भी कहा जाता है। | Kitploit
उपकरण/GitHubGitHub/corelight/community-id-spec
नेटवर्क सुरक्षाडिजिटल फोरेंसिकउपयोगिताएँ और फ्रेमवर्कखतरा खुफियाघुसपैठ का पता लगानाघटना प्रतिक्रियालॉग विश्लेषण
GitHubcorelight/community-id-spec

community-id-spec

नेटवर्क फ्लो को पहचानकर्ताओं में हैश करने के लिए एक खुला मानक, जिसे "Community IDs" भी कहा जाता है।

रिपॉजिटरी देखें
1962561 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

कम्युनिटी आईडी फ्लो हैशिंग

जब विभिन्न मॉनिटरिंग अनुप्रयोगों (जैसे Zeek और Suricata) से फ्लो डेटा संसाधित किया जाता है, तो अक्सर एक डेटासेट से दूसरे में तेज़ी से पिवट करना वांछनीय होता है। हालाँकि आवश्यक फ्लो टुपल जानकारी आमतौर पर डेटासेट में मौजूद होती है, ऐसे "joins" का विवरण थकाऊ हो सकता है, विशेष रूप से कॉर्नर केसों में। यह spec "कम्युनिटी आईडी" फ्लो हैशिंग का वर्णन करता है, जो किसी दिए गए नेटवर्क फ्लो का प्रतिनिधित्व करने वाले एक स्ट्रिंग पहचानकर्ता के उत्पादन को मानकीकृत करता है, ताकि पिवट एक साधारण स्ट्रिंग तुलना तक सीमित हो जाए।

छद्म कोड

root@kitploit:~
function community_id_v1(ipaddr saddr, ipaddr daddr, port sport, port dport, int proto, int seed=0)
{
    # Get seed and all tuple parts into network byte order
    seed = pack_to_nbo(seed); # 2 bytes
    saddr = pack_to_nbo(saddr); # 4 or 16 bytes
    daddr = pack_to_nbo(daddr); # 4 or 16 bytes
    sport = pack_to_nbo(sport); # 2 bytes
    dport = pack_to_nbo(dport); # 2 bytes

    # Abstract away directionality: flip the endpoints as needed
    # so the smaller IP:port tuple comes first.
    saddr, daddr, sport, dport = order_endpoints(saddr, daddr, sport, dport);

    # Produce 20-byte SHA1 digest. "." means concatenation. The
    # proto value is one byte in length and followed by a 0 byte
    # for padding.
    sha1_digest = sha1(seed . saddr . daddr . proto . 0 . sport . dport)

    # Prepend version string to base64 rendering of the digest.
    # v1 is currently the only one available.
    return "1:" + base64(sha1_digest)
}

function community_id_icmp(ipaddr saddr, ipaddr daddr, int type, int code, int seed=0)
{
    port sport, dport;

    # ICMP / ICMPv6 endpoint mapping directly inspired by Zeek
    sport, dport = map_icmp_to_ports(type, code);

    # ICMP is IP protocol 1, ICMPv6 would be 58
    return community_id_v1(saddr, daddr, sport, dport, 1, seed); 
}

तकनीकी विवरण

  • कम्युनिटी आईडी एक अतिरिक्त फ्लो पहचानकर्ता है और इसे मॉनिटर्स द्वारा पहले से समर्थित मौजूदा फ्लो पहचान तंत्रों को प्रतिस्थापित करने की आवश्यकता नहीं है। हालाँकि, यदि वांछित हो, तो मॉनिटर को केवल कम्युनिटी आईडी लॉग करने के लिए कॉन्फ़िगर करना ठीक है।

  • कम्युनिटी आईडी की गणना मॉनिटर द्वारा फ्लो उत्पन्न करते समय की जा सकती है, या बाद के चरण में मौजूदा फ्लो रिकॉर्ड में भी जोड़ी जा सकती है, बशर्ते उक्त रिकॉर्ड सभी आवश्यक फ्लो एंडपॉइंट जानकारी प्रदान करते हों।

  • कम्युनिटी आईडी में टकराव, हालाँकि अवांछनीय हैं, घातक नहीं माने जाते, क्योंकि उपयोगकर्ता के पास अभी भी फ्लो समय जानकारी और संभवतः मॉनिटर की मूल आईडी तंत्र (उम्मीद है कि कम्युनिटी आईडी से अधिक सशक्त) होगी, जिससे अस्पष्टता दूर की जा सके।

  • हैशिंग तंत्र कम्युनिटी आईडी उपयोग के "डोमेन" पर अतिरिक्त नियंत्रण सक्षम करने के लिए सीडिंग का उपयोग करता है। सीड का डिफ़ॉल्ट मान 0 है, इसलिए यह तंत्र रास्ते से हट जाता है और उन ऑपरेटरों के संचालन को प्रभावित नहीं करता जो इसमें रुचि नहीं रखते।

  • आईडी के संस्करण 1 में, हैश एल्गोरिदम SHA1 है। भविष्य के हैश संस्करण इसे बदल सकते हैं या अतिरिक्त कॉन्फ़िगरेशन की अनुमति दे सकते हैं।

  • बाइनरी 20-बाइट SHA1 परिणाम को base64-एन्कोड किया जाता है, ताकि सामान्य ASCII-आधारित SHA1 प्रस्तुति की तुलना में आउटपुट की मात्रा कम हो। यह मानता है कि प्राथमिक चिंता स्थान है, गणना समय नहीं, और यह बाद के संस्करण में कॉन्फ़िगर करने योग्य हो सकता है।

  • परिणामी फ्लो आईडी में एक संस्करण संख्या शामिल होती है, जो अंतर्निहित कम्युनिटी आईडी कार्यान्वयन को स्पष्ट करती है। यह उपयोगकर्ताओं को यह सुनिश्चित करने की अनुमति देता है कि वे समान चीज़ों की तुलना कर रहे हैं, साथ ही एल्गोरिदम में भविष्य के बदलावों का समर्थन भी करता है। उदाहरण के लिए, जब एक मॉनिटर के आईडी संस्करण में VLAN आईडी शामिल होते हैं लेकिन दूसरे के नहीं, तो हैश मान तुलना विश्वसनीय रूप से विफल होनी चाहिए। इस सुविधा का एक अधिक जटिल रूप कार्यान्वयन संस्करण के अतिरिक्त कॉन्फ़िगरेशन सेटिंग्स को कैप्चर करने की भी अनुमति दे सकता है।

    वर्तमान संस्करण योजना केवल हैश मान के साथ ":" उपसर्ग जोड़ती है, जिससे वर्तमान संस्करण 1 में कुछ इस प्रकार प्राप्त होता है:

    1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=

  • हैश इनपुट 32-बिट सीमाओं पर संरेखित होता है। फ्लो टुपल घटक होस्ट हार्डवेयर के बावजूद क्रम को मानकीकृत करने के लिए नेटवर्क बाइट ऑर्डर (बिग-एंडियन) का उपयोग करते हैं।

  • हैश इनपुट को फ्लो टुपल से दिशात्मकता हटाने के लिए क्रमबद्ध किया जाता है: यदि आवश्यक हो तो एंडपॉइंट्स को बदल दें, ताकि संख्यात्मक रूप से छोटा IP:port टुपल पहले आए। यदि IP पते बराबर हैं, तो पोर्ट निर्णय करते हैं। उदाहरण के लिए, निम्नलिखित नेटफ्लो 5-टुपल समान कम्युनिटी आईडी हैश बनाते हैं, क्योंकि दोनों को क्रम 10.0.0.1, 127.0.0.1, 1234, 80 में क्रमबद्ध किया जाता है।

    • Proto: TCP; SRC IP: 10.0.0.1; DST IP: 127.0.0.1; SRC Port: 1234; DST Port: 80
    • Proto: TCP; SRC IP: 127.0.0.1; DST IP: 10.0.0.1; SRC Port: 80; DST Port: 1234
  • इस संस्करण में निम्नलिखित प्रोटोकॉल और फ़ील्ड शामिल हैं:

    • TCP / UDP / SCTP:

      IP src / IP dst / IP proto / source port / dest port

    • ICMPv4 / ICMPv6:

      IP src / IP dst / IP proto / ICMP type + "counter-type" or code

      ICMP type और code का सटीक प्रबंधन Zeek से लिया गया है; कार्यान्वयन यहाँ देखें:

      • https://github.com/corelight/pycommunityid/blob/master/communityid/icmp.py
      • https://github.com/corelight/pycommunityid/blob/master/communityid/icmp6.py
      • https://github.com/zeek/zeek/blob/master/src/analyzer/protocol/icmp/ICMP.cc#L860
    • अन्य IP-आधारित प्रोटोकॉल:

      IP src / IP dst / IP proto

    उपरोक्त वर्तमान में नेस्टिंग (IP in IP, v6 over v4, आदि) तथा VLAN और MPLS जैसे एनकैप्सुलेशन को संभालने के तरीके को शामिल नहीं करता है।

  • यदि कोई नेटवर्क मॉनिटर उपरोक्त प्रोटोकॉल संयोजनों में से किसी का भी समर्थन नहीं करता है, तो वह फ्लो आईडी के लिए सुरक्षित रूप से एक खाली स्ट्रिंग (या कोई अन्य गैर-टकराव वाला मान) रिपोर्ट कर सकता है।

  • v1 को एक प्रोटोटाइप मानें। समुदाय से प्रतिक्रिया, विशेष रूप से आईडी के कार्यान्वयनकर्ताओं और परिचालन उपयोगकर्ताओं से, अत्यधिक सराहनीय है। कृपया GitHub प्रोजेक्ट https://github.com/corelight/community-id-spec पर सीधे issues बनाएँ, या Christian Kreibich ([email protected]) से संपर्क करें।

  • Victor Julien, Johanna Amann और Robin Sommer को उपयोगी चर्चा और प्रतिक्रिया के लिए, तथा सभी कार्यान्वयनकर्ताओं और समर्थकों को बहुत धन्यवाद।

संदर्भ कार्यान्वयन

pycommunityid पैकेज में एक संपूर्ण कार्यान्वयन उपलब्ध है। इसमें विभिन्न प्रोटोकॉल के लिए सही गणना सत्यापित करने हेतु अनेक परीक्षण शामिल हैं। हम नए कार्यान्वयनों के मार्गदर्शन के लिए इसकी अनुशंसा करते हैं।

इस रिपॉज़िटरी में community-id.py स्क्रिप्ट के माध्यम से एक छोटा कार्यान्वयन भी उपलब्ध है, जिसमें हैश किए गए मानों का बाइट लेआउट भी शामिल है (देखें packet_get_comm_id())। आरंभ करने के लिए --help और make.sh देखें:

root@kitploit:~
  $ ./community-id.py --help
  usage: community-id.py [-h] [--seed NUM] PCAP [PCAP ...]

  Community flow ID reference

  positional arguments:
    PCAP         PCAP packet capture files

  optional arguments:
    -h, --help   show this help message and exit
    --seed NUM   Seed value for hash operations
    --no-base64  Don't base64-encode the SHA1 binary value
    --verbose    Show verbose output on stderr

समस्या निवारण के लिए, कार्यान्वयन base64 ऑपरेशन को छोड़ने का समर्थन करता है, और SHA1 हैश गणना में जाने वाले बाइट्स के सटीक अनुक्रम के बारे में अतिरिक्त विवरण प्रदान कर सकता है।

संदर्भ डेटा

इस रेपो में baseline निर्देशिका में डेटासेट हैं, जो यह सत्यापित करने में आपकी सहायता करते हैं कि आपका कम्युनिटी आईडी कार्यान्वयन सही ढंग से कार्य करता है।

पुनः प्रयोज्य मॉड्यूल/लाइब्रेरी

  • C
    • https://github.com/corelight/c-community-id
    • https://github.com/ntop/nDPI (3.2+, विवरण यहाँ)
  • C#: https://github.com/decompile/community-id-dotnet-core
  • Golang: https://github.com/satta/gommunityid
  • Java: https://github.com/rapid7/community-id-java
  • JavaScript: https://github.com/corelight/communityid-js
  • Python: https://github.com/corelight/pycommunityid
  • Rust: https://crates.io/crates/communityid

प्रोडक्शन कार्यान्वयन

  • Arkime (1.7.0+): https://github.com/arkime/arkime/issues/966
  • Elastic Beats: जैसे https://www.elastic.co/guide/en/beats/packetbeat/master/community-id.html
  • Elastic Common Schema: https://github.com/elastic/ecs/blob/master/schemas/network.yml
  • Elasticsearch (7.12.0+): https://www.elastic.co/guide/en/elasticsearch/reference/master/community-id-processor.html
  • HELK: https://github.com/Cyb3rWard0g/HELK (साथ में Ruby कार्यान्वयन)
  • LogScale/Humio: https://library.humio.com/falcon-logscale/functions-communityid.html
  • MISP: https://www.misp-project.org/2019/07/19/MISP.2.4.111.released.html
  • MISP-wireshark: https://github.com/MISP/misp-wireshark
  • Osquery (4.2.0+): https://osquery.readthedocs.io/en/latest/introduction/sql/#sql-additions, ब्लॉग पोस्ट
  • Qosmos ixEngine: https://www.qosmos.com/wp-content/uploads/Enea-Qosmos-ixEngine-Suricata-Solution-Brief-20211202.pdf
  • Security Onion (2.0+): https://docs.securityonion.net/en/2.3/community-id.html
  • Suricata (4.1+): https://suricata.readthedocs.io/en/suricata-4.1.2/output/eve/eve-json-output.html#community-flow-id
  • VAST: https://github.com/vast-io/vast/pull/525
  • Wireshark (3.3.1+): https://www.wireshark.org/news/20201001.html
  • Zeek package (2.5+): https://github.com/corelight/zeek-community-id
  • ntopng: https://github.com/ntop/ntopng

अन्य परियोजनाओं में सुविधा अनुरोध

  • https://github.com/MicrosoftDocs/sysinternals/issues/219

वार्ताएँ

  • SuriCon 2018
  • FOSDEM 2021

ब्लॉग पोस्ट और अन्य संसाधन

  • CloudShark 3.10 में QUIC, DoH, CommunityID, WPA3 और अन्य प्रोटोकॉल के लिए नमूना कैप्चर, qacafe.com
  • osquery में community ID के साथ नेटवर्क कनेक्शन सहसंबद्ध करें, fleetdm.com
  • Sysmon और Winlogbeat के साथ CommunityIDs उत्पन्न करना, holdmybeersecurity.com

चर्चा

कम्युनिटी आईडी के पहलुओं पर GitHub के माध्यम से यहाँ चर्चा करने के लिए स्वतंत्र महसूस करें: https://github.com/corelight/community-id-spec/issues

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