
आईसीएस फ़िशिंग (दुर्भावनापूर्ण कैलेंडर आमंत्रण) को रोकने के लिए ओपन सोर्स उपकरण
यह टूलकिट दुर्भावनापूर्ण कैलेंडर आमंत्रणों को ठीक करने के लिए बनाया गया है, जो उन टीमों की मदद करने के लिए डिज़ाइन किया गया है जो ईमेल सुरक्षा समाधानों का उपयोग करती हैं जो मूल रूप से इन हमलों को ठीक नहीं करते।
यदि आप Sublime का उपयोग कर रहे हैं, तो आपको इस टूलकिट की आवश्यकता नहीं है क्योंकि सुधार मूल रूप से समर्थित है।
प्रत्येक ईमेल सुरक्षा प्रदाता और कैलेंडर प्रदाता के संयोजन के लिए स्टैक-विशिष्ट स्टैंडअलोन स्क्रिप्ट्स (जैसे, proofpoint-microsoft365.py, mimecast-google-workspace.py) प्रदान की गई हैं:
ईमेल सुरक्षा प्रदाता:
कैलेंडर प्रदाता:
सीधे त्वरित आरंभ पर जाएं!
अपना स्टैक नहीं दिख रहा? हमें बताने में संकोच न करें कि आप किस स्टैक का समर्थन चाहते हैं [email protected] पर।
इन स्क्रिप्ट्स को एक ईमेल सुरक्षा समाधान की आवश्यकता होती है जो पहले से ही ICS फ़िशिंग ईमेल का पता लगा रहा हो, लेकिन उन ईमेल के माध्यम से बनाए गए कैलेंडर ईवेंट को नहीं हटा रहा हो।
यदि आपके पास ICS फ़िशिंग का पता लगाने वाला कोई ईमेल सुरक्षा समाधान नहीं है, तो Sublime Core बिल्ट-इन ICS फ़िशिंग डिटेक्शन और स्वचालित कैलेंडर सुधार के साथ मुफ़्त और स्व-होस्ट करने योग्य ईमेल सुरक्षा प्रदान करता है।
ICS फ़िशिंग एक दोहरा हमला है जो एक साथ उपयोगकर्ता के इनबॉक्स और कैलेंडर दोनों में दुर्भावनापूर्ण पेलोड पहुँचाता है। Sublime के 2026 ईमेल थ्रेट रिसर्च रिपोर्ट के अनुसार, Q1 से Q4 2025 तक इस हमले वेक्टर में ~100 गुना वृद्धि हुई, जिसमें Q4 के 20% से अधिक कॉलबैक फ़िशिंग हमलों ने वितरण तंत्र के रूप में कैलेंडर आमंत्रणों का उपयोग किया।
महत्वपूर्ण सुरक्षा अंतर: कैलेंडर ईवेंट तब भी बने रहते हैं जब ईमेल सुरक्षा समाधान दुर्भावनापूर्ण ईमेल को क्वारंटाइन या हटा देते हैं। यह सुरक्षित ईमेल गेटवे (SEG) और API-आधारित ईमेल सुरक्षा समाधान दोनों को प्रभावित करता है, जिनमें से अधिकांश फरवरी 2026 तक दुर्भावनापूर्ण कैलेंडर ईवेंट को साफ नहीं करते हैं।
Sublime के दुर्भावनापूर्ण कैलेंडर ईवेंट के बिल्ट-इन सुधार पर आधारित, ये Python स्क्रिप्ट्स जब आपका ईमेल सुरक्षा समाधान ICS फ़िशिंग ईमेल को क्वारंटाइन करता है तो दुर्भावनापूर्ण ईवेंट को हटा देती हैं। स्क्रिप्ट्स:
.ics कैलेंडर अटैचमेंट और अन्य iCalendar-अनुपालक अटैचमेंट निकालती हैंशुद्ध Python के रूप में, आप इन स्क्रिप्ट्स को कई SOARs में चला सकते हैं, जिनमें Tines, Splunk SOAR और Cortex XSOAR शामिल हैं।
हम SOAR-विशिष्ट गाइड पर भी काम कर रहे हैं। कृपया [email protected] पर हमसे संपर्क करें यदि आपको सहायता चाहिए या जब हम किसी विशेष SOAR के लिए दस्तावेज़ प्रकाशित करते हैं तो सूचित होना चाहते हैं।
प्रत्येक स्टैंडअलोन स्क्रिप्ट को आवश्यकता है:
आप इन स्क्रिप्ट्स को किसी भी वातावरण में चला सकते हैं जिसमें:
requirements.txt में सूचीबद्ध PyPI पैकेज (requests और PyJWT) को स्थापित करने का समर्थनउत्पादन परिनियोजन के लिए, आप स्क्रिप्ट को नियमित रूप से चलाने के लिए शेड्यूल करना चाहेंगे, उदा., cron जॉब के साथ।
स्क्रिप्ट्स डिफ़ॉल्ट रूप से ड्राई-रन मोड में चलती हैं ताकि ईवेंट को आकस्मिक रूप से हटाने से रोका जा सके। यह देखने के लिए कॉन्फ़िगरेशन विकल्प देखें कि विलोपन को कैसे सक्षम किया जाए और दुर्भावनापूर्ण आमंत्रणों और ईवेंट की खोज के जवाब में कस्टम लॉजिक को कैसे लागू किया जाए।
export PROOFPOINT_CLIENT_ID="your-client-id"
export PROOFPOINT_CLIENT_SECRET="your-client-secret"
PROOFPOINT_CLIENT_ID: Proofpoint Cloud Threat Response API के लिए OAuth 2.0 क्लाइंट IDPROOFPOINT_CLIENT_SECRET: OAuth 2.0 क्लाइंट सीक्रेटexport MIMECAST_CLIENT_ID="your-client-id"
export MIMECAST_CLIENT_SECRET="your-client-secret"
export MIMECAST_REGION="global" # Options: global, us, uk (default: global)
MIMECAST_CLIENT_ID: Mimecast API 2.0 के लिए OAuth 2.0 क्लाइंट IDMIMECAST_CLIENT_SECRET: OAuth 2.0 क्लाइंट सीक्रेटMIMECAST_REGION: API क्षेत्र एंडपॉइंट (वैकल्पिक, डिफ़ॉल्ट global)आवश्यक API अनुमतियाँ:
Services | Threat Remediation | ReadGateway | Tracking | ReadArchive | Readexport ABNORMAL_API_KEY="your-api-key"
ABNORMAL_API_KEY: Abnormal Security प्लेटफ़ॉर्म से API कुंजी# Option 1: Service Account File
export GOOGLE_SERVICE_ACCOUNT_FILE="/path/to/service-account.json"
# Option 2: Service Account JSON (inline)
export GOOGLE_SERVICE_ACCOUNT_JSON='{"type":"service_account",...}'
GOOGLE_SERVICE_ACCOUNT_FILE: सेवा खाता JSON कुंजी फ़ाइल का पथGOOGLE_SERVICE_ACCOUNT_JSON: JSON स्ट्रिंग के रूप में इनलाइन सेवा खाता क्रेडेंशियल्सआवश्यक सेटअप:
https://www.googleapis.com/auth/calendar.eventsexport MICROSOFT_CLIENT_ID="your-client-id"
export MICROSOFT_CLIENT_SECRET="your-client-secret"
export MICROSOFT_TENANT_ID="your-tenant-id"
MICROSOFT_CLIENT_ID: Azure AD एप्लिकेशन (क्लाइंट) IDMICROSOFT_CLIENT_SECRET: Azure AD एप्लिकेशन क्लाइंट सीक्रेटMICROSOFT_TENANT_ID: Azure AD निर्देशिका (टेनेंट) IDआवश्यक API अनुमति: Calendars.ReadWrite (एप्लिकेशन अनुमति)
export ICS_PHISHING_REMEDIATION_MODE="dry_run" # "dry_run" is default
export MESSAGE_LOOKBACK_MINUTES=10
export PROOFPOINT_CLIENT_ID="your-client-id"
export PROOFPOINT_CLIENT_SECRET="your-secret"
export MICROSOFT_TENANT_ID="your-tenant"
export MICROSOFT_CLIENT_ID="your-client"
export MICROSOFT_CLIENT_SECRET="your-secret"
python3 proofpoint-microsoft365.py
डिफ़ॉल्ट रूप से, सभी स्क्रिप्ट्स ड्राई-रन मोड में चलती हैं ताकि आकस्मिक विलोपन को रोका जा सके। इस मोड में, स्क्रिप्ट:
यह आपको वास्तविक विलोपन सक्षम करने से पहले यह सत्यापित करने की अनुमति देता है कि स्क्रिप्ट सही ढंग से काम कर रही है।
वास्तव में कैलेंडर ईवेंट हटाने के लिए, ICS_PHISHING_REMEDIATION_MODE पर्यावरण चर सेट करें:
export ICS_PHISHING_REMEDIATION_MODE="delete_events"
मान्य मान:
dry_run (डिफ़ॉल्ट) - बिना हटाए कार्रवाइयों का पूर्वावलोकन करेंdelete_events - वास्तव में मिलान करने वाले कैलेंडर ईवेंट हटाएंगलत कॉन्फ़िगरेशन को रोकने के लिए अमान्य मान त्रुटि उत्पन्न करेंगे।
सभी स्क्रिप्ट्स कॉन्फ़िगर करने योग्य समय विंडो के भीतर क्वारंटाइन किए गए संदेशों की खोज करती हैं:
export MESSAGE_LOOKBACK_MINUTES=10 # वैकल्पिक, डिफ़ॉल्ट 5 मिनट
महत्वपूर्ण: यह मान आपके cron शेड्यूल आवृत्ति से मेल खाना चाहिए और एक छोटा बफर होना चाहिए ताकि कोई संदेश छूट न जाए। उदाहरण के लिए, यदि हर 5 मिनट में चल रहा है, तो लुकबैक विंडो 10 मिनट पर सेट करें।
अतिरिक्त एकीकरणों के लिए, जैसे लॉगिंग सिस्टम या मॉनिटरिंग टूल, आप अपनी स्क्रिप्ट में कस्टम कॉलबैक लागू कर सकते हैं और उन्हें delete_events_from_remediated_emails फ़ंक्शन में पास कर सकते हैं:
on_invitation_found_callback(invitation: CalendarInvitation) - जब क्वारंटाइन किए गए संदेश में कैलेंडर आमंत्रण मिलता है तो कॉल किया जाता हैon_event_found_callback(invitation: CalendarInvitation, event: CalendarEvent) - प्रत्येक मिलान करने वाले कैलेंडर ईवेंट के लिए कॉल किया जाता हैउदाहरण:
def log_invitation(invitation):
print(f"Found malicious invitation for {invitation.user_id}, UID: {invitation.ics_uid}")
def log_event(invitation, event):
print(f"Found calendar event {event.id} matching invitation {invitation.ics_uid}")
fetcher = ProofpointCloudFetcher()
deleter = GoogleWorkspaceEventDeleter()
delete_events_from_remediated_emails(
fetcher,
deleter,
mode="delete_events", # Override default dry_run mode
on_invitation_found_callback=log_invitation,
on_event_found_callback=log_event
)
नोट: कॉलबैक में त्रुटियाँ लॉग होती हैं लेकिन ईवेंट प्रोसेसिंग को नहीं रोकतीं।
सभी स्क्रिप्ट्स common.py में परिभाषित एक सामान्य पैटर्न का पालन करती हैं:
class MessageFetcher:
def yield_remediated_emails(self) -> Iterator[Message]:
"""Fetch quarantined messages from your email security solution"""
class EventDeleter:
def delete_matching_events(
self,
invitation: CalendarInvitation,
mode: Mode,
on_event_found_callback: Optional[Callable[[CalendarInvitation, CalendarEvent], None]]
) -> None:
"""Delete calendar events matching the ICS attachment"""
स्टैक-विशिष्ट कार्यान्वयन API प्रमाणीकरण और प्रदाता-विशिष्ट लॉजिक को संभालते हैं।