
एक लक्ष्य प्रणाली पर Kerberos TGTs को स्वचालित रूप से निकालने या नवीनीकरण करने के लिए Async BOF।
इस रिपॉजिटरी में दो Async Beacon Object Files (BOF) शामिल हैं। पहला, tgt-monitor, सिस्टम पर Kerberos लॉगऑन ईवेंट की निगरानी करता है और जब भी कोई नया Kerberos TGT कैप्चर होता है तो एजेंट को जगाता है। Rubeus के monitor कमांड के समान, यह BOF अनिश्चित काल तक चलता है और समय-समय पर सिस्टम पर LSA टिकट कैश की जांच करता है। जब कोई नया TGT पाया जाता है, तो यह टिकट मेटाडेटा प्रिंट करता है और base64-एन्कोडेड kirbi ब्लॉब आउटपुट करता है, जिसका उपयोग पास-द-टिकट हमलों के माध्यम से पार्श्व आंदोलन के लिए किया जा सकता है। दूसरा, tgt-renew, सिस्टम पर TGT को स्वचालित रूप से नवीनीकृत करता है यदि उनकी शेष आयु निर्दिष्ट सीमा (जैसे 15 मिनट) से कम है।
[!महत्वपूर्ण] इस रिपॉजिटरी में BOF को अतुल्यकालिक ऑब्जेक्ट फ़ाइल लोडिंग क्षमताओं की आवश्यकता होती है। ऐसी कार्यक्षमता Conquest फ्रेमवर्क द्वारा प्रदान की जाती है।
दोनों BOF को NT AUTHORITY\SYSTEM संदर्भ से चलाने की आवश्यकता है। विशेषाधिकारों की जाँच उसी तर्क के अनुसार की जाती है।
SeImpersonatePrivilege के माध्यम से)। यदि इससे भी SYSTEM स्तर की पहुंच नहीं मिलती है तो BOF समाप्त हो जाता है।नीचे दिए गए चरणों को एक लूप में तब तक दोहराया जाता है जब तक BOF को स्टॉप ईवेंट के माध्यम से रद्द नहीं किया जाता। उपयोगकर्ता-परिभाषित अंतराल पोल के बीच देरी निर्धारित करता है।
--user तर्क प्रदान किया गया था, तो केवल उस उपयोगकर्ता नाम से मेल खाने वाले सत्रों पर विचार किया जाता है।BeaconWakeup() कॉल किया जाता है।
--user तर्क प्रदान किया गया था, तो केवल उस उपयोगकर्ता नाम से मेल खाने वाले सत्रों पर विचार किया जाता है।RenewUntil समय से आगे है, तो इसे समाप्त के रूप में चिह्नित किया जाता है और पुनः प्रमाणीकरण आवश्यक है।BeaconWakeup() कॉल किया जाता है।
टिकट नवीनीकरण प्रक्रिया में निम्नलिखित चरण शामिल हैं:
इस रिपॉजिटरी में एक Conquest मॉड्यूल है जो निम्नलिखित दो कमांड लागू करता है।
tgt-monitor BOF नए TGT कैप्चर होने पर सचेत करता है और उन्हें Base64-एन्कोडेड ब्लॉब के रूप में लौटाता है। ऑब्जेक्ट फ़ाइल में निम्नलिखित तर्क पारित किए जाने चाहिए:
| नाम | प्रकार | विवरण |
|---|---|---|
interval | int | जाँचों के बीच सेकंड में टाइमआउट। |
targetUsers | string | लक्ष्य उपयोगकर्ता नामों की केस-असंवेदनशील अल्पविराम-पृथक सूची। जब यह फ़ील्ड सेट होता है, तो केवल निर्दिष्ट उपयोगकर्ताओं के लिए TGT प्राप्त किए जाते हैं। अन्यथा, सभी उपयोगकर्ताओं के लिए TGT एकत्र किए जाते हैं। ध्यान दें कि कंप्यूटर खातों को $ के साथ समाप्त होना चाहिए। |
उपयोग: tgt-monitor [--interval interval] [--user user]
उदाहरण: tgt-monitor --interval 5 --user DC01$
वैकल्पिक तर्क:
--interval interval INT सेकंड में पोलिंग अंतराल (डिफ़ॉल्ट: 60)।
--user user STRING लक्ष्य उपयोगकर्ता नामों की अल्पविराम-पृथक सूची (डिफ़ॉल्ट: सभी उपयोगकर्ता)।

एन्कोडेड टिकट का उपयोग सीधे Rubeus.exe ptt /ticket:<base64> या impacket-ticketConverter के साथ आगे पार्श्व आंदोलन के लिए किया जा सकता है, जैसा कि नीचे स्क्रीनशॉट में दिखाया गया है। Conquest में, ptt कमांड का उपयोग करके टिकट को सीधे वर्तमान लॉगऑन सत्र में इंजेक्ट करना और लक्ष्य उपयोगकर्ता का प्रतिरूपण करना संभव है।

tgt-renew BOF स्वचालित रूप से उन टिकटों को नवीनीकृत करता है जो जल्द ही समाप्त होने वाले हैं, जब तक कि उन्हें और नवीनीकृत नहीं किया जा सकता। ऑब्जेक्ट फ़ाइल में निम्नलिखित तर्क पारित किए जाने चाहिए:
| नाम | प्रकार | विवरण |
|---|---|---|
interval | int | जाँचों के बीच सेकंड में टाइमआउट। |
threshold | int | मिनटों में नवीनीकरण सीमा। टिकट को तब नवीनीकृत किया जाता है जब EndTime का समय इस सीमा से कम होता है। |
targetUsers | string | लक्ष्य उपयोगकर्ता नामों की केस-असंवेदनशील अल्पविराम-पृथक सूची। जब यह फ़ील्ड सेट होता है, तो केवल निर्दिष्ट उपयोगकर्ताओं के लिए TGT नवीनीकृत किए जाते हैं। अन्यथा, सभी उपयोगकर्ताओं के लिए TGT नवीनीकृत किए जाते हैं। ध्यान दें कि कंप्यूटर खातों को $ के साथ समाप्त होना चाहिए। |
targetLuids | string | लक्ष्य LUID की केस-असंवेदनशील अल्पविराम-पृथक सूची। जब यह फ़ील्ड सेट होता है, तो केवल निर्दिष्ट LUID के लिए TGT नवीनीकृत किए जाते हैं। |
उपयोग: tgt-renew [--interval seconds] [--threshold minutes] [--user user] [--luid luid]
उदाहरण: tgt-renew --luid 0x3e4 --interval 300 --threshold 30
वैकल्पिक तर्क:
--interval seconds INT सेकंड में पोलिंग अंतराल (डिफ़ॉल्ट: 60)।
--threshold minutes INT मिनटों में टिकट नवीनीकरण सीमा (डिफ़ॉल्ट: 15)।
--user user STRING लक्ष्य उपयोगकर्ता नामों की अल्पविराम-पृथक सूची (डिफ़ॉल्ट: सभी उपयोगकर्ता)।
--luid luid STRING लक्ष्य LUID की अल्पविराम-पृथक सूची (डिफ़ॉल्ट: सभी LUID)।
--user और --luid फ्लैग परस्पर अनन्य हैं।

git clone https://github.com/jakobfriedl/tgt-monitor-bof
cd tgt-monitor-bof
make
वहां से, Conquest के स्क्रिप्ट मैनेजर का उपयोग करके dist/tgt-monitor.py मॉड्यूल लोड करें।
इस Beacon Object File का कार्यान्वयन निम्नलिखित परियोजनाओं पर आधारित है: