Cryptographic/Compression Algorithms

याग्यिक/संपीडन एल्गोरिथम

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

एल्गोरिथमों की पहचान

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

API फ़ंक्शन

CryptDeriveKey

यदि इस फ़ंक्शन का उपयोग किया गया है, तो आप दूसरे पैरामीटर के मान की जांच करके पता लगा सकते हैं कि कौन सा एल्गोरिथम उपयोग किया जा रहा है:

यहां संभावित एल्गोरिथमों और उनके सौपित्रित मानों की सूची देखें: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

RtlCompressBuffer/RtlDecompressBuffer

डेटा के दिए गए बफर को संपीडित और असंपीडित करता है।

CryptAcquireContext

दस्तावेज़ से: CryptAcquireContext फ़ंक्शन का उपयोग किसी विशेष याग्यिक सेवा प्रदाता (CSP) के भीतर एक विशेष कुंजी कंटेनर को प्राप्त करने के लिए किया जाता है। इस वापसी हैंडल का उपयोग क्रिप्टोएपीआई के कॉल में किया जाता है जो चयनित CSP का उपयोग करते हैं फ़ंक्शन।

CryptCreateHash

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

यहां संभावित एल्गोरिथमों और उनके सौपित्रित मानों की सूची देखें: https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id

कोड स्थिर

कभी-कभी किसी विशेष और अद्वितीय मान का उपयोग करने की आवश्यकता होने के कारण एक एल्गोरिथम की पहचान करना वास्तव में आसान होता है।

यदि आप पहले स्थिर कोण्स्टेंट की खोज करते हैं तो आपको यह मिलता है:

इसलिए, आप मान सकते हैं कि डिकॉम्पाइल किया गया फ़ंक्शन एक sha256 कैलकुलेटर है। आप अन्य स्थिरों में से किसी भी को खोज सकते हैं और आपको (संभावित है) एक ही परिणाम मिलेगा।

डेटा सूचना

यदि कोड में कोई महत्वपूर्ण स्थिर नहीं है तो यह .डेटा खंड से जानकारी लोड कर रहा हो सकता है। आप उस डेटा तक पहुंच सकते हैं, पहले डबल वर्ड को समूहित कर सकते हैं और उसे गूगल में खोज सकते हैं जैसा कि हमने पहले खंड में किया है:

इस मामले में, यदि आप 0xA56363C6 की खोज करते हैं तो आपको पाता चलता है कि यह AES एल्गोरिथम के तालिकाओं से संबंधित है

RC4 (सममित्र याग्यिक)

विशेषताएँ

इसमें 3 मुख्य भाग होते हैं:

  • प्रारंभिक चरण/: 0x00 से 0xFF (कुल 256 बाइट, 0x100) तक के मानों की एक तालिका बनाता है। इस तालिका को सामान्यत: प्रतिस्थापन बॉक्स (या SBox) कहा जाता है।

  • उलझने का चरण: पहले बनाई गई तालिका के माध्यम से लूप करेगा (फिर 0x100 बार का लूप, फिर से) हर मान को आंशिक-रैंडम बाइट के साथ संशोधित करेगा। इस आंशिक-रैंडम बाइट्स बनाने के लिए, RC4 कुंजी का उपयोग किया जाता है। RC4 कुंजियाँ 1 से 256 बाइट तक की हो सकती हैं, हालांकि आमतौर पर यह सुझाव दिया जाता है कि यह 5 बाइट से ऊपर हो। सामान्यत: RC4 कुंजियाँ 16 बाइट लंबी होती हैं।

  • XOR चरण: अंत में, सादा-पाठ या साइफरटेक्स्ट को पहले बनाए गए मानों के साथ XOR किया जाता है। डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही फ़ंक्शन होता है। इसके लिए, बनाए गए 256 बाइट्स के लूप के माध्यम से जितनी बार जरूरी होगा उतनी बार चलाया जाएगा। इसे आमतौर पर एक डिकॉम्पाइल कोड में %256 (मॉड 256) के साथ पहचाना जाता है।

एक RC4 को एक डिसएसेंबली/डिकॉम्पाइल कोड में पहचानने के लिए आप 0x100 के आकार के 2 लूपों की जांच कर सकते हैं (कुंजी का उपयोग करके) और फिर 256 मानों के साथ इनपुट डेटा का XOR कर सकते हैं जो पहले 2 लूपों में बनाए गए होंगे, शायद %256 (मॉड 256) का उपयोग करके

प्रारंभिक चरण/प्रतिस्थापन बॉक्स: (ध्यान दें कि गिनती के रूप में उपयोग किए गए 256 नंबर और कैसे 256 वर्णों के हर स्थान पर 0 लिखा गया है)

उलझने का चरण:

XOR चरण:

AES (सममित्र याग्यिक)

विशेषताएँ

  • प्रतिस्थापन बॉक्स और लुकअप तालिकाओं का उपयोग

  • विशिष्ट लुकअप तालिका मानों (स्थिर) का उपयोग करने के कारण **AES को पहचानना संभव ह

Last updated