Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sublime-security/ics-phishing-toolkit
钓鱼攻击云安全事件响应API 安全电子邮件安全
GitHubsublime-security/ics-phishing-toolkit

ics-phishing-toolkit

用于阻止ICS网络钓鱼(恶意日历邀请)的开源工具

查看仓库
18456个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ICS钓鱼工具包

本工具包用于修复恶意日历邀请,专为使用邮件安全解决方案但未能原生修复此类攻击的团队设计。

如果你使用Sublime,则无需此工具包,因为其原生支持修复。

支持的组合

针对每种邮件安全提供商与日历提供商的组合,提供了独立的脚本(例如 proofpoint-microsoft365.py、mimecast-google-workspace.py):

邮件安全提供商:

  • Proofpoint
  • Mimecast
  • Abnormal Security

日历提供商:

  • Microsoft 365
  • Google Workspace

直接前往快速开始!

没有看到你的组合?请随时通过 [email protected] 告知我们你希望支持哪些组合。

检测

这些脚本要求邮件安全解决方案已能检测ICS钓鱼邮件,但尚未移除通过这些邮件创建的日历事件。

如果你没有能够检测ICS钓鱼的邮件安全解决方案,Sublime Core 提供了免费且可自托管的邮件安全功能,内置ICS钓鱼检测和自动日历修复。

ICS钓鱼的兴起

ICS钓鱼是一种双管齐下的攻击,同时将恶意载荷投递到用户的收件箱和日历。根据Sublime的2026年邮件威胁研究报告,该攻击载体从2025年第一季度到第四季度增长了约100倍,其中Q4回调钓鱼攻击中超过20%使用日历邀请作为投递机制。

关键安全缺口:即使邮件安全解决方案隔离或删除了恶意邮件,日历事件仍然存在。这影响到安全邮件网关(SEG)和基于API的邮件安全解决方案,截至2026年2月,大多数方案不会清理恶意的日历事件。

阻止ICS钓鱼

基于Sublime内置的恶意日历事件修复功能,这些Python脚本可在你的邮件安全解决方案隔离ICS钓鱼邮件时删除恶意事件。脚本:

  • 从你的邮件安全提供商获取已隔离的邮件
  • 提取邮件中的 .ics 日历附件及其他符合iCalendar标准的附件
  • 在用户的日历(Microsoft 365或Google Workspace)中查找并删除匹配的事件

SOAR平台

作为纯Python脚本,你可以在许多SOAR平台中运行它们,包括Tines、Splunk SOAR和Cortex XSOAR。

我们也在编写特定SOAR的指南。如果你需要帮助,或希望在某个SOAR的文档发布时收到通知,请通过 [email protected] 联系我们。

快速开始

每个独立脚本需要:

  1. 兼容的运行时环境
  2. 包含API凭据的环境变量
  3. 适合你的邮件安全解决方案和日历提供商的API权限

运行时环境

你可以在任何环境中运行这些脚本:

  • Python 3.9 或更高版本
  • 支持安装 requirements.txt 中列出的PyPI包(requests 和 PyJWT)

对于生产部署,你还需要定期调度脚本运行,例如使用cron任务。

配置

脚本默认以只读模式运行,以防止意外删除事件。有关如何启用删除以及如何针对发现的恶意邀请和事件实现自定义逻辑,请参见配置选项。

Proofpoint Cloud

root@kitploit:~
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客户端ID
  • PROOFPOINT_CLIENT_SECRET: OAuth 2.0客户端密钥

Mimecast

root@kitploit:~
export MIMECAST_CLIENT_ID="your-client-id"
export MIMECAST_CLIENT_SECRET="your-client-secret"
export MIMECAST_REGION="global"  # 选项:global, us, uk(默认:global)
  • MIMECAST_CLIENT_ID: Mimecast API 2.0的OAuth 2.0客户端ID
  • MIMECAST_CLIENT_SECRET: OAuth 2.0客户端密钥
  • MIMECAST_REGION: API区域端点(可选,默认为global)

所需API权限:

  • Services | Threat Remediation | Read
  • Gateway | Tracking | Read
  • Archive | Read

Abnormal Security

root@kitploit:~
export ABNORMAL_API_KEY="your-api-key"
  • ABNORMAL_API_KEY: 来自Abnormal Security平台的API密钥

Google Workspace

root@kitploit:~
# 选项1:服务账号文件
export GOOGLE_SERVICE_ACCOUNT_FILE="/path/to/service-account.json"

# 选项2:内联服务账号JSON
export GOOGLE_SERVICE_ACCOUNT_JSON='{"type":"service_account",...}'
  • GOOGLE_SERVICE_ACCOUNT_FILE: 服务账号JSON密钥文件的路径
  • GOOGLE_SERVICE_ACCOUNT_JSON: 内联服务账号凭据,JSON字符串格式

所需设置:

  • 为服务账号启用全域委派
  • 授权范围:https://www.googleapis.com/auth/calendar.events
  • 在Google Workspace管理控制台中配置

Microsoft 365

root@kitploit:~
export 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应用程序(客户端)ID
  • MICROSOFT_CLIENT_SECRET: Azure AD应用程序客户端密钥
  • MICROSOFT_TENANT_ID: Azure AD目录(租户)ID

所需API权限: Calendars.ReadWrite(应用程序权限)

示例:Proofpoint + Microsoft 365

root@kitploit:~
export ICS_PHISHING_REMEDIATION_MODE="dry_run" # "dry_run" 为默认值
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 环境变量:

root@kitploit:~
export ICS_PHISHING_REMEDIATION_MODE="delete_events"

有效值:

  • dry_run(默认) - 预览操作但不删除
  • delete_events - 实际删除匹配的日历事件

无效值将引发错误以防止配置错误。

消息回溯窗口

所有脚本在可配置的时间窗口内搜索隔离邮件:

root@kitploit:~
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) - 为每个匹配的日历事件调用

示例:

root@kitploit:~
def log_invitation(invitation):
    print(f"发现恶意邀请,用户:{invitation.user_id},UID:{invitation.ics_uid}")

def log_event(invitation, event):
    print(f"发现日历事件 {event.id},匹配邀请 {invitation.ics_uid}")

fetcher = ProofpointCloudFetcher()
deleter = GoogleWorkspaceEventDeleter()

delete_events_from_remediated_emails(
    fetcher,
    deleter,
    mode="delete_events",  # 覆盖默认的只读模式
    on_invitation_found_callback=log_invitation,
    on_event_found_callback=log_event
)

注意:回调中的错误会被记录,但不会停止事件处理。

架构

所有脚本遵循 common.py 中定义的通用模式:

root@kitploit:~
class MessageFetcher:
    def yield_remediated_emails(self) -> Iterator[Message]:
        """从你的邮件安全解决方案获取已隔离的邮件"""

class EventDeleter:
    def delete_matching_events(
        self,
        invitation: CalendarInvitation,
        mode: Mode,
        on_event_found_callback: Optional[Callable[[CalendarInvitation, CalendarEvent], None]]
    ) -> None:
        """删除与ICS附件匹配的日历事件"""

特定组合的实现负责处理API认证和提供商特定的逻辑。

获取帮助

  • 问题、功能请求或错误报告: [email protected]
  • SOAR集成指南: 通过 [email protected] 联系我们,获取SOAR平台详细部署指南的早期访问
  • 威胁情报: 阅读我们的ICS钓鱼博客文章和2026年邮件威胁研究报告
下载工具