首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
WEB安全
发新帖
1
2
[原创]简单实现 DDoZ 客户端内存耗尽攻击
发表于: 2025-10-13 18:57
1410
[原创]简单实现 DDoZ 客户端内存耗尽攻击
wx_张三_488
2025-10-13 18:57
1410
## 项目概述 <a href="elink@bc9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6C8j5i4A6#2N6r3!0A6M7X3W2K6i4K6u0r3c8p5c8G2h3R3`.`.">DDoZ(Decompression Death of Zstandard)</a> 是一个基于 zstd 压缩算法的客户端内存耗尽攻击演示项目。DDoZ 攻击通过发送特殊构造的 zstd 压缩响应,导致客户端在解压缩过程中消耗大量内存,从而引发内存溢出和崩溃。 ## 部署方式 在 <a href="elink@d21K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6C8j5i4A6#2N6r3!0A6M7X3W2K6i4K6u0r3c8p5c8G2h3R3`.`.">kazutoiris/DDoZ</a> 中支持 Cloudflare Workers 一键部署。同时提供了一个示例链接,用于测试 1TiB 解压大小对于客户端的影响。 ## 核心原理 ### Zstd 压缩算法 Zstd(Zstandard) 是 Facebook 开发的一种快速无损压缩算法,具有高压缩比和快速解压缩的特点。根据 <a href="elink@5e4K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1j5i4c8S2N6s2u0S2j5$3E0W2M7W2)9J5k6h3W2W2N6r3k6Q4x3X3g2G2M7X3N6Q4x3V1k6V1L8$3y4Q4x3V1k6Z5N6r3#2D9i4K6u0r3M7X3k6U0z5o6R3%4z5l9`.`.">RFC8878</a> 规定,一个 zstd 帧由多个块组织而成,块的类型有三种:原始块、RLE 块和压缩块。每个块的解压后大小被限制为了 128KiB。 ### 攻击原理 DDoZ 主要利用 RLE 块进行攻击。RLE 块的工作原理是重复单个字节值 Block_Size 次。一个 RLE 块由以下部分组成: * 头部(3 字节):包含块的元数据 * 单字节内容:需要重复的字节 因此,一个 4 字节的结构(3 字节头 + 1 字节内容)可以产生最多 128KiB 的解压缩数据。通过链接多个 RLE 块,可以实现巨大的放大比(32 MiB 响应可以解压出 1TiB 内容)。 ### 工作流程 1. 客户端向服务器发送 HTTP 请求 2. 服务器根据环境变量 `DECOMPRESSED_SIZE_IN_GIB` 确定生成的数据大小,并构造特殊的 zstd 压缩数据。 ```js const initialData = new Uint8Array([0x28, 0xB5, 0x2F, 0xFD, 0x00, 0x38]); // ZSTD 帧头 const repeatPattern = new Uint8Array([0x02, 0x00, 0x10, 0x48]); // 连续 128KiB RLE 块 const repeatPattern2 = new Uint8Array([0x03, 0x00, 0x10, 0x48]); // 终止 128KiB RLE 块 const fullData = new Uint8Array(initialData.length + repeatPattern.length * decompressedSize); fullData.set(initialData, 0); for (let i = 0; i < decompressedSize; i++) { fullData.set(i == decompressedSize - 1 ? repeatPattern2 : repeatPattern, initialData.length + i * repeatPattern.length); } ``` * 设置响应头 `Content-Encoding: zstd`,指示客户端自动解压缩 ```js headers.set("Content-Encoding", "zstd") ``` * 客户端接收到响应后自动开始解压缩过程 * 在解压缩过程中,客户端的内存使用量逐渐增长,最终导致客户端应用内存溢出并崩溃 ## 相关项目 * <a href="elink@21dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6W2L8W2)9J5k6i4N6A6K9$3W2H3k6h3c8A6j5g2)9J5k6h3!0J5k6#2)9J5c8Y4N6A6K9$3W2Q4x3V1k6K9K9i4m8Q4y4h3k6T1L8$3#2T1">Zip Bomb</a> - 使用 ZIP 压缩包实现的类似概念 * <a href="elink@6f7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6A6j5h3#2@1M7X3q4U0N6r3W2G2L8W2)9J5c8W2A6a6c8l9`.`.">Zip of Death</a> - 使用 ZIP 文件的压缩攻击演示 ## 总结 DDoZ 展示了即使在现代安全防护措施下,仍可能利用压缩算法的特性发起新型攻击,因此在处理压缩内容时需要格外小心。基于这种攻击方式可以反制爬虫,耗尽爬虫资源。
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
#隐患预警
收藏
・
1
点赞
・
2
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
wx_晨梦
这个讨论对我很有帮助,谢谢!
2026-7-16 08:18
新气象
非常支持你的观点!
2025-10-14 09:26
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
wx_张三_488
3
发帖
4
回帖
20
RANK
关注
私信
他的文章
[原创]简单实现 DDoZ 客户端内存耗尽攻击
1410
[原创]深度揭秘:全仿 Telegram 诈骗软件的幕后技术链条
7942
[原创]当全加密M1卡沦陷之后……
13525
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部