
Herramienta de código abierto para detener el phishing ICS (invitaciones de calendario maliciosas)
Este conjunto de herramientas para remediar invitaciones de calendario maliciosas está diseñado para ayudar a equipos que utilizan soluciones de seguridad de correo electrónico que no eliminan nativamente estos ataques.
Si usas Sublime, no necesitas este kit porque la remediación es compatible de forma nativa.
Se proporcionan scripts independientes específicos para cada pila (por ejemplo, proofpoint-microsoft365.py, mimecast-google-workspace.py) para cada combinación de estos proveedores de seguridad de correo electrónico y proveedores de calendario:
Proveedores de seguridad de correo electrónico:
Proveedores de calendario:
¡Ve a Inicio rápido para empezar!
¿No ves tu pila? No dudes en decirnos qué pila quieres que sea compatible en [email protected].
Estos scripts requieren una solución de seguridad de correo electrónico que ya esté detectando correos electrónicos de phishing ICS, pero que no esté eliminando los eventos de calendario creados a través de esos correos.
Si no tienes una solución de seguridad de correo electrónico que detecte phishing ICS, Sublime Core ofrece seguridad de correo electrónico gratuita y autoalojable con detección integrada de phishing ICS y remediación automática del calendario.
El phishing ICS es un ataque de dos frentes que entrega cargas maliciosas simultáneamente a la bandeja de entrada y al calendario del usuario. Este vector de ataque experimentó un aumento de ~100x desde el primer trimestre hasta el cuarto trimestre de 2025, según el Informe de Investigación de Amenazas de Correo Electrónico 2026 de Sublime, con más del 20% de los ataques de phishing de devolución de llamada del cuarto trimestre utilizando invitaciones de calendario como mecanismo de entrega.
La brecha de seguridad crítica: los eventos del calendario persisten incluso cuando las soluciones de seguridad de correo electrónico ponen en cuarentena o eliminan el correo malicioso. Esto afecta tanto a las puertas de enlace de correo electrónico seguras (SEG) como a las soluciones de seguridad basadas en API, la mayoría de las cuales no limpian los eventos de calendario maliciosos a partir de febrero de 2026.
Basándose en la remediación integrada de Sublime de eventos de calendario maliciosos, estos scripts de Python eliminan eventos maliciosos cuando tu solución de seguridad de correo electrónico pone en cuarentena correos de phishing ICS. Los scripts:
.ics y otros archivos adjuntos compatibles con iCalendar de esos mensajesAl ser Python puro, puedes ejecutar estos scripts en muchos SOARs, incluyendo Tines, Splunk SOAR y Cortex XSOAR.
También estamos trabajando en guías específicas para SOAR. Ponte en contacto con [email protected] si necesitas ayuda o quieres que te notifiquemos cuando publiquemos documentación para un SOAR en particular.
Cada script independiente requiere:
Puedes ejecutar estos scripts en cualquier entorno que tenga:
requirements.txt (requests y PyJWT)Para implementaciones en producción, también querrás programar el script para que se ejecute regularmente, por ejemplo, con un trabajo cron.
Los scripts se ejecutan en modo de simulación por defecto para evitar la eliminación accidental de eventos. Consulta opciones de configuración para saber cómo habilitar la eliminación y cómo implementar lógica personalizada en respuesta al descubrimiento de invitaciones y eventos maliciosos.
export PROOFPOINT_CLIENT_ID="your-client-id"
export PROOFPOINT_CLIENT_SECRET="your-client-secret"
PROOFPOINT_CLIENT_ID: ID de cliente OAuth 2.0 para la API de Proofpoint Cloud Threat ResponsePROOFPOINT_CLIENT_SECRET: Secreto de cliente OAuth 2.0export MIMECAST_CLIENT_ID="your-client-id"
export MIMECAST_CLIENT_SECRET="your-client-secret"
export MIMECAST_REGION="global" # Opciones: global, us, uk (predeterminado: global)
MIMECAST_CLIENT_ID: ID de cliente OAuth 2.0 para la API de Mimecast 2.0MIMECAST_CLIENT_SECRET: Secreto de cliente OAuth 2.0MIMECAST_REGION: Punto final de región de API (opcional, predeterminado: global)Permisos de API requeridos:
Services | Threat Remediation | ReadGateway | Tracking | ReadArchive | Readexport ABNORMAL_API_KEY="your-api-key"
ABNORMAL_API_KEY: Clave de API de la plataforma Abnormal Security# Opción 1: Archivo de cuenta de servicio
export GOOGLE_SERVICE_ACCOUNT_FILE="/path/to/service-account.json"
# Opción 2: JSON de cuenta de servicio (en línea)
export GOOGLE_SERVICE_ACCOUNT_JSON='{"type":"service_account",...}'
GOOGLE_SERVICE_ACCOUNT_FILE: Ruta al archivo de clave JSON de la cuenta de servicioGOOGLE_SERVICE_ACCOUNT_JSON: Credenciales de cuenta de servicio en línea como cadena JSONConfiguración requerida:
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: ID de aplicación de Azure AD (cliente)MICROSOFT_CLIENT_SECRET: Secreto de cliente de aplicación de Azure ADMICROSOFT_TENANT_ID: ID de directorio (inquilino) de Azure ADPermiso de API requerido: Calendars.ReadWrite (Permiso de aplicación)
export ICS_PHISHING_REMEDIATION_MODE="dry_run" # "dry_run" es el valor predeterminado
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
Por defecto, todos los scripts se ejecutan en modo de simulación para evitar eliminaciones accidentales. En este modo, el script:
Esto te permite verificar que el script funciona correctamente antes de habilitar la eliminación real.
Para eliminar realmente los eventos de calendario, establece la variable de entorno ICS_PHISHING_REMEDIATION_MODE:
export ICS_PHISHING_REMEDIATION_MODE="delete_events"
Valores válidos:
dry_run (predeterminado) - Previsualizar acciones sin eliminardelete_events - Eliminar realmente los eventos de calendario coincidentesLos valores no válidos generarán un error para evitar una mala configuración.
Todos los scripts buscan mensajes en cuarentena dentro de una ventana de tiempo configurable:
export MESSAGE_LOOKBACK_MINUTES=10 # Opcional, predeterminado: 5 minutos
Importante: Este valor debe coincidir con la frecuencia de tu programación cron con un pequeño margen para asegurar que no se pierdan mensajes. Por ejemplo, si se ejecuta cada 5 minutos, establece la ventana de revisión en 10 minutos.
Para integraciones adicionales, como con sistemas de registro o herramientas de monitoreo, puedes implementar callbacks personalizados en tu script y pasarlos a la función delete_events_from_remediated_emails:
on_invitation_found_callback(invitation: CalendarInvitation) - Se llama cuando se encuentra una invitación de calendario en un mensaje en cuarentenaon_event_found_callback(invitation: CalendarInvitation, event: CalendarEvent) - Se llama por cada evento de calendario coincidenteEjemplo:
def log_invitation(invitation):
print(f"Invitación maliciosa encontrada para {invitation.user_id}, UID: {invitation.ics_uid}")
def log_event(invitation, event):
print(f"Evento de calendario {event.id} encontrado que coincide con la invitación {invitation.ics_uid}")
fetcher = ProofpointCloudFetcher()
deleter = GoogleWorkspaceEventDeleter()
delete_events_from_remediated_emails(
fetcher,
deleter,
mode="delete_events", # Sobrescribe el modo de simulación predeterminado
on_invitation_found_callback=log_invitation,
on_event_found_callback=log_event
)
Nota: Los errores en los callbacks se registran pero no detienen el procesamiento de eventos.
Todos los scripts siguen un patrón común definido en common.py:
class MessageFetcher:
def yield_remediated_emails(self) -> Iterator[Message]:
"""Obtener mensajes en cuarentena de tu solución de seguridad de correo electrónico"""
class EventDeleter:
def delete_matching_events(
self,
invitation: CalendarInvitation,
mode: Mode,
on_event_found_callback: Optional[Callable[[CalendarInvitation, CalendarEvent], None]]
) -> None:
"""Eliminar eventos de calendario que coincidan con el adjunto ICS"""
Las implementaciones específicas de cada pila manejan la autenticación API y la lógica específica del proveedor.