ZakhwanAnuar/DiscordC2Dump

GitHub: ZakhwanAnuar/DiscordC2Dump

一个用于枚举和导出 Discord bot 可访问服务器数据的威胁情报辅助工具,适用于从恶意软件样本中提取的 C2 通道分析。

Stars: 0 | Forks: 0

# DiscordC2Dump 一个用于枚举 Discord bot 可访问服务器 (guild) 的小型威胁情报辅助工具,适用于你已恢复 **bot token** 和 **guild ID** 的情况——例如从使用 Discord 作为 C2 (命令与控制) 通道的恶意软件样本中提取。 它会遍历 Discord REST API 并导出 bot 可见的所有内容,然后扫描其中的 flag 模式。 ## 功能说明 给定 bot token 和 guild ID,该脚本将执行以下操作: 1. **验证 token** — `GET /users/@me` 2. **确认 guild 访问权限** — `GET /guilds/{guild_id}` 3. **列出所有频道** — 文本频道、公告频道、论坛频道、语音频道、分类频道 4. **导出每个可读文本类型频道的消息历史**,包括置顶消息 5. **从每条消息下载附件**,并使用类似 grep 的方式检查基于文本的附件 6. **检查 emoji 名称和角色名称**,查找隐藏的字符串 7. **使用正则表达式扫描所有内容**(消息、embeds、主题、文件名、emoji 名称、角色名称),查找 flag 模式(默认为:`something{...}`) 所有原始输出将作为 JSON 文件保存在 `./dump/` 目录下(每个频道一个文件),同时包含已下载的附件,以便你之后进行重新检查或手动查看。 ## 环境要求 - Python 3.8+ - [`requests`](https://pypi.org/project/requests/) ``` pip install requests --break-system-packages # 或者,在 virtualenv 中: python3 -m venv venv && source venv/bin/activate && pip install requests ``` ## 用法 ``` python3 discord_c2_dump.py ``` 示例输出: ``` 01:00:56 [INFO] Authenticated as bot bot1#2925 (id=163712987987288921) 01:00:56 [INFO] Guild: hello (id=1525918842843435290, members=2) 01:00:57 [INFO] Found 3 readable channels 01:00:57 [INFO] Scanning #general (1525918844496121888) 01:00:57 [INFO] Scanning #session-example-4bac67b8 (12345678909876543210) 01:00:57 [INFO] Scanning #session-example2-5316cacf (0987654321234567890) 01:01:04 [INFO] Done. 93 new messages across 3 channels. 01:01:04 [INFO] Digest written to dump/digest.txt 01:01:04 [INFO] IOC summary written to dump/iocs.json ``` 频道导出数据将存放在 `./dump/_.json` 中,所有 已下载的附件也会保存在同一目录下。 ## 以人类身份加入服务器(可选) bot 只能看到其角色权限允许的内容。如果你怀疑存在 bot 无法查看但对人类成员可见的 频道或内容,你可以使用 bot 的 token 生成一个邀请链接(要求 bot 至少在一个频道中拥有 **Create Instant Invite** 权限): ``` curl -X POST \ -H "Authorization: Bot YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"max_age": 3600, "max_uses": 1}' \ "https://discord.com/api/v10/channels/CHANNEL_ID/invites" ``` 响应中包含一个 `"code"` 字段 —— 你可以将其转换为真实的邀请链接: ``` https://discord.gg/CODE ``` 在你自己的 Discord 账号中打开该链接即可正常加入。 ## 故障排除 | 现象 | 可能的原因 | |---|---| | 在 token 验证时提示 `401 Unauthorized` | Token 无效或已过期,或者缺少 `Bot ` 前缀 —— 脚本会自动处理前缀,请仔细检查复制的原始 token 是否正确 | | 在 guild/频道提示 `403 Missing Access` | 该 bot 实际上并不是该 guild 的成员 | | `/guilds/{id}/members` 返回的成员列表为空 | 需要为 bot 应用启用 **`GUILD_MEMBERS`** 特权意图;未启用时,Discord 将返回有限的数据或不返回数据 | | `re`/`json` 提示 `circular import` / `AttributeError` | 你将脚本重命名为了 `enum.py`,这覆盖了 Python 标准库中的 `enum` 模块 —— 请重新为其命名 | | `429 Too Many Requests` | 已自动处理 —— 脚本会根据 Discord 的 `retry_after` 值自动休眠并重试 | | 创建邀请返回 `403` | 该频道的 bot 角色缺少 `CREATE_INSTANT_INVITE` 权限 —— 尝试其他频道,或者改为检查 guild 对象上的 `vanity_url_code` | ## 免责声明 此工具使用真实的凭证直接与 Discord API 通信。 它仅供合法的安全研究、恶意软件分析和 CTF 使用。你需要自行确保已获得访问目标 bot/guild 的授权。作者/助手不对滥用行为负责。
标签:API枚举, DAST, IP 地址批量处理, Python, 威胁情报, 开发者工具, 恶意软件分析, 无后门, 自动化取证, 逆向工具