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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
SigFlip — SigFlip एक उपकरण है जो प्रमाणित हस्ताक्षरित PE फ़ाइलों (exe, dll, sys ..etc) को मौजूदा हस्ताक्षर को अमान्य या तोड़े बिना पैच करने के लिए है। | Kitploit
उपकरण/GitHubGitHub/med0x2e/sigflip
रक्षात्मक उपकरणस्थायित्व तंत्रकोड विश्लेषणशोषणपार्श्व आंदोलनबाइनरी विश्लेषणरेड टीमिंगपेलोड डेवलपमेंट
GitHubmed0x2e/sigflip

SigFlip

SigFlip एक उपकरण है जो प्रमाणित हस्ताक्षरित PE फ़ाइलों (exe, dll, sys ..etc) को मौजूदा हस्ताक्षर को अमान्य या तोड़े बिना पैच करने के लिए है।

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

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

सभी देखें →

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

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

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

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

यह क्या है?

SigFlip एक उपकरण है जो प्रमाणित (authenticode) हस्ताक्षरित PE फ़ाइलों (exe, dll, sys ..etc) में इस तरह से पैच करने के लिए है कि यह मौजूदा प्रमाणीकरण हस्ताक्षर को प्रभावित या तोड़ता नहीं है, दूसरे शब्दों में आप फ़ाइल हस्ताक्षर, अखंडता जांच या PE फ़ाइल कार्यक्षमता को तोड़े बिना PE फ़ाइल चेकसम/हैश को डेटा (यानी शेलकोड) एम्बेड करके बदल सकते हैं।

SigInject शेलकोड को एन्क्रिप्ट करता है और PE फ़ाइल के [WIN_CERTIFICATE] प्रमाणपत्र तालिका में इंजेक्ट करता है, एन्क्रिप्शन कुंजी एक बुनियादी BOF/C/C# लोडर (SigLoader) के साथ उपयोग के लिए मुद्रित की जाती है, SigInject परिवर्तनों को एक संशोधित PE फ़ाइल में सहेजता है और उसके हस्ताक्षर और प्रमाणपत्र वैधता को बरकरार रखता है।

SigLoader एक बुनियादी लोडर है जो SigInject द्वारा बनाए गए संशोधित PE फ़ाइल पथ और डिक्रिप्शन कुंजी को पैरामीटर के रूप में लेता है, फिर पसंद के शेलकोड इंजेक्शन के साथ उपयोग के लिए एम्बेडेड शेलकोड को निकालता और डिक्रिप्ट करता है।

SigFlip जाँच करेगा कि क्या PE हैश सफलतापूर्वक बदला गया था और एंडपॉइंट्स ऐसी सामान्य गलत कॉन्फ़िगरेशन के खिलाफ कठोर होने पर शालीनता से बाहर निकल जाएगा। ("विवरण" अनुभाग देखें)।

त्वरित नोट: SigFlip, SigInject और SigLoader BOF स्क्रिप्ट और .NET असेंबली के रूप में उपलब्ध हैं, अंतर केवल इतना है कि SigInject कार्यक्षमता को SigFlip (-i) के भाग के रूप में लागू किया गया है यदि आप BOF के बजाय .NET आर्टिफैक्ट चुनते हैं।

क्यों?

इसका उपयोग मुख्य रूप से स्थिरता (persistence), पार्श्व आंदोलन (lateral movement) या कोड/कमांड निष्पादन के लिए किया जा सकता है और इसमें मदद मिल सकती है:

  • एप्लिकेशन व्हाइटलिस्टिंग बायपास, PE फ़ाइल हैश को हस्ताक्षर तोड़े बिना बदलना (उदाहरण के लिए msbuild.exe)।
  • दुर्भावनापूर्ण कोड/कमांड निष्पादन का पता लगाने के लिए विशिष्ट LOLBINs के हैश पर निर्भर EDRs को बायपास करना।
  • अलग-अलग हैश का उपयोग करके हस्ताक्षरित ड्राइवर लोड करना, सामान्य कमजोर हस्ताक्षरित ड्राइवरों के पूर्व-परिभाषित हैश सूची का उपयोग करके किसी भी EDR को दरकिनार करने में मदद कर सकता है।
  • एक हस्ताक्षरित PE फ़ाइल में एन्क्रिप्टेड शेलकोड एम्बेड करें और इसे पार्स, डिक्रिप्ट, लोड और निष्पादित करने के लिए अपनी पसंद का एक स्टेजर (sigloader) का उपयोग करें।
  • एंडपॉइंट सुरक्षा विक्रेता अक्सर हस्ताक्षरित PE फ़ाइलों को सौम्य (benign) के रूप में वर्गीकृत करते हैं, आपके अहस्ताक्षरित कोड (शेलकोड ..etc.) को हस्ताक्षरित PE फ़ाइल में एम्बेड करने से इसका पता लगाना/फ़्लैग करना थोड़ा मुश्किल हो जाता है।
  • डिफ़ॉल्ट रूप से WinVerifyTrust पर निर्भर एंडपॉइंट सुरक्षा विक्रेताओं को हस्ताक्षर सत्यापन के लिए बायपास करना।
  • OPSEC में सुधार करना और उन रक्षकों को चुनौती देना जो PE फ़ाइलों के प्रमाणीकरण हस्ताक्षर को मान्य करने के लिए केवल विशिष्ट हस्ताक्षर सत्यापन उपयोगिताओं जैसे signtool, sigcheck, Get-AuthenticodeSignature ..etc पर निर्भर हैं।

उपयोग और उदाहरण:

संकलन/निर्माण:

इस परियोजना में पूर्व-संकलित BOF प्रदान नहीं किए गए हैं, Mingw-w64 का उपयोग करके संकलित किया जा सकता है, .NET के लिए VS या csc.exe का उपयोग करके .NET प्रोजेक्ट (SigFlip, SigLoader) संकलित करें, BOF के लिए नीचे दिए गए चरणों की जाँच करें;

  • ➜ i686-w64-mingw32-gcc -c sigflip.c -o sigflip.x86.o
  • ➜ x86_64-w64-mingw32-gcc -c sigflip.c -o sigflip.x64.o
  • ➜ x86_64-w64-mingw32-gcc -c SigLoader/sigloader.c -o sigloader.x64.o
  • ➜ i686-w64-mingw32-gcc -c SigLoader/sigloader.c -o sigloader.x86.o

सुनिश्चित करें कि सभी ऑब्जेक्ट फ़ाइलें sigflip.cna के समान निर्देशिका में स्थित हैं, फिर कोबाल्ट स्ट्राइक में sigflip.cna स्क्रिप्ट लोड करें।

त्वरित नोट: पूर्व-संकलित BOF का परीक्षण किया गया था और वे mingw-64 v8.0.0_3 के साथ संगत हैं, mingw-64 >= v9 का उपयोग काम कर सकता है लेकिन सक्रिय बीकन क्रैश हो सकते हैं, अधिक विवरण के लिए https://github.com/med0x2e/SigFlip/issues/2 देखें।

कोबाल्ट स्ट्राइक:

  1. एक्ज़ीक्यूट-असेंबली

    • execute-assembly SigFlip.exe -h
    • execute-assembly SigLoader -h
  2. BOF

    • कोबाल्ट स्ट्राइक के साथ उपयोग के लिए, एक बार जब आप SigFlip.cna स्क्रिप्ट लोड कर लेते हैं, तो दो नए कमांड पंजीकृत होंगे; SigFlip और SigInject, फिर नीचे के अनुसार उपयोग करें;
      • SigFlip: PE फ़ाइल (DLL, EXE, SYS, OCX ..etc) हैश को बिना हस्ताक्षर या प्रमाणपत्र की वैधता को तोड़े बदलें:

        • SigFlip "<PE\_FILE\_PATH>" "<OUTPUT\_PE\_FILE\_PATH (एक्सटेंशन के साथ)>"
      • SigInject: शेलकोड को एन्क्रिप्ट करता है और PE फ़ाइल की [WIN_CERTIFICATE] प्रमाणपत्र तालिका में इंजेक्ट करता है, एन्क्रिप्शन कुंजी एक बुनियादी C/C# लोडर के साथ उपयोग के लिए मुद्रित की जाती है साथ ही हस्ताक्षर और प्रमाणपत्र वैधता को बरकरार रखता है:

        • SigInject "<PE\_FILE\_PATH> <OUTPUT\_PE\_FILE\_PATH (एक्सटेंशन के साथ)>" "<SHELLCODE\_FILE>"
      • SigLoader: SigInject द्वारा बनाई गई PE फ़ाइलों से एन्क्रिप्टेड शेलकोड लोड करता है, फिर Early Bird queueuserapc का उपयोग करके एक बलि प्रक्रिया में sc स्पॉन/इंजेक्ट करता है, शेलकोड इंजेक्शन लॉजिक को अनुकूलित किया जा सकता है या पसंद की किसी अन्य कोड इंजेक्शन तकनीक से बदला जा सकता है:

        • SigLoader <PE_FILE_PATH_WITH_SH> <DECRYPTION_KEY> <SPAWNTO_PROCESS_PATH> <PARENT_PROCESS_ID>
  3. उदाहरण

    • BOF:

      • msbuild.exe में रैंडम डेटा इंजेक्ट करें (उर्फ msbuild.exe को बिट फ्लिप करें):

विवरण:

यह APT#10 द्वारा कई अभियानों या घुसपैठ सेटों में उपयोग की जाने वाली एक ज्ञात तकनीक है।

प्रमाणीकरण (Authenticode) डिजिटल हस्ताक्षर?

Authenticode एक माइक्रोसॉफ्ट कोड-हस्ताक्षर तकनीक है जो Authenticode-हस्ताक्षरित सॉफ़्टवेयर के प्रकाशक की पहचान करती है। Authenticode यह भी सत्यापित करता है कि हस्ताक्षरित और प्रकाशित होने के बाद से सॉफ़्टवेयर के साथ छेड़छाड़ नहीं की गई है।

यह कैसे काम करता है?

Microsoft मुख्य रूप से PE बाइनरी की अखंडता और उत्पत्ति को सत्यापित करने के लिए Authenticode हस्ताक्षर प्रारूप पर निर्भर करता है, Authenticode पोर्टेबल एक्ज़ीक्यूटेबल प्रारूप विनिर्देश के अनुसार Authenticode हस्ताक्षर एक विंडोज PE फ़ाइल में "एम्बेडेड" हो सकते हैं, एक स्थान पर जो वैकल्पिक हेडर डेटा निर्देशिकाओं में प्रमाणपत्र तालिका प्रविष्टि द्वारा निर्दिष्ट होता है। जब Authenticode का उपयोग विंडोज PE फ़ाइल पर हस्ताक्षर करने के लिए किया जाता है, तो एल्गोरिदम जो फ़ाइल के Authenticode हैश मान की गणना करता है, कुछ PE फ़ील्ड को बाहर करता है। जब फ़ाइल में हस्ताक्षर एम्बेड किया जाता है, हस्ताक्षर प्रक्रिया फ़ाइल के हैश मान को प्रभावित किए बिना इन फ़ील्ड को संशोधित कर सकती है। ये फ़ील्ड इस प्रकार हैं: **चेकसम, प्रमाणपत्र तालिका RVA, प्रमाणपत्र तालिका आकार और गुण प्रमाणपत्र तालिका (attribute certificate table)। गुण प्रमाणपत्र तालिका में एक PKCS #7 SignedData संरचना होती है जिसमें PE फ़ाइल का हैश मान, सॉफ़्टवेयर प्रकाशक की निजी कुंजी द्वारा बनाया गया हस्ताक्षर, और X.509 v3 प्रमाणपत्र होते हैं जो सॉफ़्टवेयर प्रकाशक की हस्ताक्षर कुंजी को एक कानूनी इकाई से बांधते हैं।

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

ऐसे बहिष्कृत फ़ील्ड के बारे में अधिक विवरण:

  • प्रमाणपत्र तालिका RVA और आकार: एक हस्ताक्षरित PE फ़ाइल वैकल्पिक हेडर संरचना में डेटा निर्देशिकाओं की एक सरणी होती है जिसमें IMAGE_DIRECTORY_ENTRY_SECURITY प्रविष्टि शामिल होती है जिसमें दो फ़ील्ड होते हैं, RVA और आकार।

    • RVA: गुण प्रमाणपत्र तालिका के लिए एक फ़ाइल ऑफ़सेट (मेमोरी ऑफ़सेट नहीं)।
    • आकार: गुण प्रमाणपत्र तालिका का आकार।
  • गुण प्रमाणपत्र तालिका: एक डेटा संरचना WIN_CERTIFICATE जो हस्ताक्षर और प्रमाणपत्रों को समाहित करती है और इसमें निम्नलिखित फ़ील्ड होते हैं:

    • dwLength: प्रमाणपत्र तालिका का आकार।
    • wRevision: WIN_CERTIFICATE का "संशोधन"।
    • wCertificateType: एन्कैप्सुलेटेड प्रमाणपत्र डेटा का प्रकार।
    • bCertificate: वास्तविक प्रमाणपत्र डेटा। WIN_CERT_TYPE_PKCS_SIGNED_DATA के लिए, यह ऊपर उल्लिखित PKCS#7 SignedData संरचना है (जिसमें PE हैश मान, हस्ताक्षर और x.509 प्रमाणपत्र होता है), यह वही जगह है जहाँ SigFlip रैंडम डेटा या शेलकोड एम्बेड करता है।

इन सबको ध्यान में रखते हुए, अब SigFlip निम्नलिखित करता है:

  1. सिस्टम कॉन्फ़िगरेशन की जाँच करें
  2. PE फ़ाइल लोड करना और PE फ़ाइल हस्ताक्षर सत्यापित करना और Sha1 हैश की गणना करना
  3. "e_lfanew" ऑफ़सेट प्राप्त करें (PE FILE HEADER -> IMAGE_NT_HEADERS की ओर इशारा करते हुए)
  4. IMAGE_NT_HEADERS से IMAGE_OPTIONAL_HEADER प्राप्त करें
  5. IMAGE_OPTIONAL_HEADER से IMAGE_DATA_DIRECTORY प्राप्त करें
  6. IMAGE_DIRECTORY_ENTRY_SECURITY फ़ील्ड प्राप्त करें और गुण प्रमाणपत्र तालिका (WIN_CERTIFICATE) का RVA और आकार प्राप्त करें।
  7. प्रमाणपत्र तालिका में पसंद के अतिरिक्त बाइट्स (रैंडम/शेलकोड) जोड़कर PE फ़ाइल ब्लॉब को पैच करें।
  8. वैकल्पिक हेडर -> IMAGE_DIRECTORY_ENTRY_SECURITY डेटा निर्देशिका आकार अपडेट करें
  9. WIN_CERTIFICATE (प्रमाणपत्र तालिका) dwLength अपडेट करें
  10. नया PE चेकसम उत्पन्न करें और इसे अपडेट करें। (OPT हेडर चेकसम)
  11. नए आकार के साथ अंतिम PE सहेजें।
  12. संशोधित PE फ़ाइल हस्ताक्षर सत्यापित करें

पहला चरण यह पुष्टि करने के लिए आवश्यक है कि क्या सिस्टम इस तरह से गलत कॉन्फ़िगर किया गया है कि प्रामाणिक हस्ताक्षरित PE फ़ाइलों में पैडिंग और शेलकोड इंजेक्ट करने की अनुमति मिल सके, इसलिए निम्नलिखित सैनिटी जाँचें की जाती हैं:

  1. जाँचें कि क्या MS13-098 फिक्स स्थापित नहीं है (KB2893294), ध्यान रखें यह स्थापित हो सकता है लेकिन रजिस्ट्री कुंजियाँ ठीक से सेट नहीं हैं, जो पैच को बेकार कर देता है
  2. रजिस्ट्री कुंजियाँ जाँचें
    1. X86:

      • जाँचें कि क्या रजिस्ट्री कुंजी "HKLM:\Software\Microsoft\Cryptography\Wintrust\Config" उपलब्ध नहीं है
        • -> यदि उपलब्ध है तो जाँचें कि क्या "EnableCertPaddingCheck" रजिस्ट्री मान उपलब्ध नहीं है
    2. X64:

      • जाँचें कि क्या रजिस्ट्री कुंजी "HKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config" उपलब्ध नहीं है
        • -> यदि उपलब्ध है तो जाँचें कि क्या "EnableCertPaddingCheck" रजिस्ट्री मान उपलब्ध नहीं है

जब संशोधित PE को अपने स्वयं के पता स्थान या अन्य प्रक्रियाओं के पता स्थान में एक मॉड्यूल के रूप में लोड किया जाता है, तो इंजेक्ट किए गए डेटा को क्यों नहीं पढ़ा जा सकता है?

विंडोज लोडर प्रक्रिया पता स्थान में प्रमाणपत्र डेटा लोड नहीं करता है, यही कारण है कि आपको शेलकोड जैसे डेटा निकालने और इसका उपयोग करने के लिए एक कस्टम लोडर की आवश्यकता होती है (जैसे: SigLoader)। यह भी बताना चाहिए कि IMAGE_DIRECTORY_ENTRY_SECURITY डेटा निर्देशिका प्रविष्टि RVA एक विशिष्ट मेमोरी ऑफ़सेट के बजाय एक फ़ाइल ऑफ़सेट क्यों है।

जांच/रोकथाम:

  • https://docs.microsoft.com/en-us/security-updates/SecurityAdvisories/2014/2915720?redirectedfrom=MSDN
  • एक बार पैच स्थापित हो जाने और उचित रजिस्ट्री कुंजियाँ सेट हो जाने के बाद, कोई सिस्टम रीस्टार्ट आवश्यक नहीं है, आपको केवल क्रिप्टोग्राफ़िक सेवाओं को पुनरारंभ करने की आवश्यकता है। Applocker सेवा भी पुनरारंभ हो जाएगी क्योंकि यह क्रिप्टोग्राफ़िक सेवाओं पर निर्भर करती है।(@p0w3rsh3ll)
  • Adrien द्वारा Yara नियम; https://twitter.com/Int2e_/status/1330975808941330432

संदर्भ

  • https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2013/ms13-098?redirectedfrom=MSDN
  • https://docs.microsoft.com/en-us/security-updates/SecurityAdvisories/2014/2915720?redirectedfrom=MSDN
  • http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/authenticode_pe.docx
  • https://msrc-blog.microsoft.com/2013/12/10/ms13-098-update-to-enhance-the-security-of-authenticode/
  • https://www.specterops.io/assets/resources/SpecterOps_Subverting_Trust_in_Windows.pdf
  • https://p0w3rsh3ll.wordpress.com/2014/05/24/testing-ms13-098-certificate-padding-check/
  • http://jsac.jpcert.or.jp/archive/2021/pdf/JSAC2021_202_niwa-yanagishita_en.pdf
टूल डाउनलोड करें
  • SigFlip "C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" "C:\lolbins\modified-msbuild.exe"
  • kernel32.dll में शेलकोड इंजेक्ट करें (तर्क क्रम अलग है और डिक्रिप्शन कुंजी पर ध्यान देना सुनिश्चित करें):
    • SigInject "C:\Windows\System32\kernel32.dll" "C:\random\modified-kernel32.dll" "C:\shellcode\cobaltstrike_or_msf_shellcode.bin"
    • Sigloader "C:\random\modified-kernel32.dll" "DECRYPTION_KEY" "C:\Windows\System32\werfault.exe" 6300
  • एक्ज़ीक्यूट-असेंबली:

    • msbuild.exe में रैंडम डेटा इंजेक्ट करें:
      • execute-assembly SigFlip.exe -b C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe -o C:\Temp\MSBuild.exe
    • kernel32.dll में शेलकोड इंजेक्ट करें (तर्क क्रम अलग है और डिक्रिप्शन कुंजी पर ध्यान देना सुनिश्चित करें):
      • execute-assembly SigFlip.exe -i C:\Windows\System32\kernel32.dll -s C:\Temp\x86shellcode.bin -o C:\Temp\kernel32.dll -e TestSecretKey
      • execute-assembly SigLoader.exe -f C:\Temp\modified-kernel32.dll -e TestSecretKey -pid 2354