爆破与未授权检测
字数 1282 2025-08-10 08:28:04
爆破与未授权检测技术详解
背景概述
爆破与未授权检测是网络安全领域的基础工作,虽然看似简单但实现"精致"的功能需要处理大量细节。本文基于yaklang的技术分享,详细解析爆破检测的关键技术和实现方案。
服务特定爆破策略
SSH服务爆破
-
认证方式判断:
- 首先检测SSH服务允许的认证方式(password/key/empty)
- 如果不允许密码认证,则无法进行密码爆破
-
爆破阶段:
- 尝试root空密码
- 然后尝试其他密码组合
-
注意事项:
- 不适合对同一目标并发爆破,服务器会限制登录频率
- 大量Connection Refused或Timeout会造成资源浪费
- 可利用SSH用户名枚举漏洞(CVE-2018-15473)缩短爆破时间
Redis服务爆破
-
特性处理:
- Redis不需要用户名,爆破框架应自动忽略用户名处理
- 发现未授权访问时应停止爆破
-
防护机制检测:
- 出现大量Connection Refused意味着防火墙启动
- 此时应暂停或停止对该目标的探测
MySQL服务爆破
- 白名单检测:
- 检测"is not allowed to connect"错误
- 发现IP白名单限制时应停止检测
关键细节处理
细节一:并发策略优化
-
问题:
- 无脑增加单目标并发会导致快速被发现和封禁
-
解决方案:
- 采用多目标并发,每个目标低并发的策略
- 在多个目标情况下不影响整体效率
- 单个目标不易"打草惊蛇"
细节二:反制规避技术
-
时间窗口问题:
- 防御系统通常设置时间窗口检测爆破行为
-
解决方案:
- 在多个目标并发基础上增加随机Sleep
- 放缓单个目标的测试强度
- 通过参数配置调整爆破节奏
细节三:未授权优先检测
-
检测顺序优化:
- 爆破前先进行未授权和指纹检查
- 如果已通过未授权检测进入系统,则无需爆破
-
效率提升:
- 避免对已开放系统进行不必要的爆破尝试
- 减少资源浪费和被发现风险
Yak爆破框架实现
核心设计
-
服务模块定义:
- 为每个服务设置默认用户名和密码
- 编写"UnAuthVerify"函数进行预检查
-
预检查特性:
- 检查TCP状态和banner信息
- 每个目标只执行一次预检查
技术挑战
- 多目标并发限制:
- 可能遇到"too many open sockets/files"错误
- 需要用户手动修改系统配置(如ulimit)
官方资源
- Yak语言官方教程: https://yaklang.com/docs/intro/
- Yakit视频教程: https://space.bilibili.com/437503777
- Github下载地址: https://github.com/yaklang/yakit
- Yakit官网下载地址: https://yaklang.com/
- Yakit安装文档: https://yaklang.com/products/download_and_install
- Yakit使用文档: https://yaklang.com/products/intro/
- 常见问题速查: https://yaklang.com/products/FAQ