
टाइमर्स के साथ कॉल स्टैक्स को गतिशील रूप से मास्क करने के लिए एक PoC कार्यान्वयन।
यह रिपॉजिटरी टाइमर का उपयोग करके कॉल स्टैक्स को गतिशील रूप से स्पूफ करने की एक PoC तकनीक प्रदर्शित करती है। हमारे इम्प्लांट के सोने से पहले, हम टाइमर को क्यू कर सकते हैं ताकि इसके कॉल स्टैक को एक नकली स्टैक से ओवरराइट किया जा सके और फिर निष्पादन फिर से शुरू करने से पहले मूल को पुनर्स्थापित किया जा सके। इसलिए, जिस तरह हम नींद के दौरान अपने इम्प्लांट से संबंधित मेमोरी को मास्क कर सकते हैं, उसी तरह हम अपने मुख्य थ्रेड के कॉल स्टैक को भी मास्क कर सकते हैं।
पूर्ण तकनीकी वॉकथ्रू के लिए संबंधित ब्लॉग पोस्ट देखें: https://www.cobaltstrike.com/blog/behind-the-mask-spoofing-call-stacks-dynamically-with-timers/।
डिफ़ॉल्ट रूप से, PoC spoolsv.exe से लिया गया एक स्थिर कॉल स्टैक का अनुकरण करेगा:

यदि --dynamic फ्लैग प्रदान किया जाता है, तो CallStackMasker सभी सुलभ थ्रेड्स की गणना करेगा, वांछित स्थिति (WaitForSingleObjectEx) में एक थ्रेड ढूंढेगा, और उसके कॉल स्टैक और प्रारंभिक पते का अनुकरण करेगा। इसे नीचे प्रदर्शित किया गया है:

NB सावधानी के तौर पर, इस PoC का परीक्षण निम्नलिखित Windows बिल्ड पर किया गया था:
22h2 (19045.2486)
इसका परीक्षण किसी अन्य संस्करण पर नहीं किया गया है और यह विभिन्न Windows बिल्ड पर काम करना बंद कर सकता है।