主 题:[技术教程]反击吧!让来攻击我们SSH的坏人瘫痪掉!
发 布 者:TraderYao
标签分类: 技术
时 间:2026-09-18 09:40:02
内容预览:推荐项目:https://github.com/shizunge/endlessh-go原理:是经典 C 语言项目 Endlessh 的 Go 语言重写版本,它属于一种典型的 SSH 焦油坑(SSH Tarpit)。它的核心机制不是“切断”或“拒绝”攻击者的连接,而是利用 SSH 协议规范,以极低的网络资源消耗将攻击者的扫描或爆破客户端无限期地挂起(Hang 住)。核心困人原理:利用 SSH 握手协议在标准的 SSH 传输层协议(RFC 4253 第 4.2 节)中,握手流程规定:客户端建立 TCP 连接后,服务端和客户端必须互相发送版本标识字符串(例如 SSH-2.0-...)。协议明确允许:在发送最终的协议版本字符串之前,服务端可以发送任意多行的额外文本(作为 Banner/提示信息),只要每一行以 \r\n 结尾且不以 SSH- 开头。Endlessh 利用了这一点:它永远不发送最终的版本号(SSH-2.0-...),这意味着 SSH 握手流程永远不会正式进入密钥交换阶段。它开始无限循环地向客户端发送随机字符组成的行(每行由字母、数字组成,以 \r\n 换行)。每次发送之间都会故意加入延迟(默认参数 -interval_ms 1000,即每 1 秒发送一行,每行仅约 32 字节)。为什么攻击者客户端无法超时退出?普通的网络超时机制通常分为两类:连接超时(Connect Timeout): TCP 三次握手成功即算建立连接,Endlessh 毫秒级正常响应并建立 TCP。空闲/读取超时(Read/Idle Timeout): 大多数 SSH 客户端和爆破脚本仅在“一定时间内收不到任何数据包”时才会判定超时断开(例如 30 秒或 60 秒无响应)。因为 Endlessh-go 持续不断地以恒定频率(如每秒一次)向客户端推送几十个字节的数据,客户端的 TCP 缓冲区始终有微
直达链接: https://www.nodeseek.com/post-934803-1
 
 
Back to Top