freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

爆破与未授权检测
2023-11-07 18:09:58

背景

“爆破与未授权检测” 虽然并不是一个难做的工作,属于脏活累活,但是又是基础工作。实际在做过这个工作和模块编写的同学们都非常清楚,里面有很多细节可以抠,实现基础功能和做 “好 / 精致” 是两个概念,这个功能可以发挥的空间其实非常大。

服务特定决定合适的爆破方式

我们可以举一些典型的例子和处理方案来介绍 “爆破” 其实并没有那么简单。例如众多服务会自带防爆破的机制,在目标有了“特定反应(比如告诉你 not allowed)”的时候,就不应该继续执行任务了。

SSH 服务登陆检查

SSH 爆破分为好几个阶段:

  1. 判断 SSH 服务允许的认证方式( password / key / empty)

  2. 如果不允许密码认证,就无法爆破;

  3. 如果允许密码登陆,尝试一次 root 空密码,然后尝试其他密码。

  4. SSH 服务极度不适合针对同一个目标并发爆破,服务器会限制登录频率,出现大量 Connection Refused 或者 Timeout 造成资源浪费

SSH 用户名枚举漏洞 (CVE-2018-15473)可以极大缩短爆破的时长,也是大家经常忽略的一个问题。

Redis 服务登陆检查

  1. Redis 不需要用户名,所以要求通用爆破框架自动忽略用户名的处理。

  2. 出现 Redis 未授权访问的时候,就不应该进行爆破了。

  3. 如果出现大量 Connection Refused,将意味着 “防火墙机制” 启动了,这个时候暂停爆破或者说停止对这个目标的探测其实是最好的办法。

MySQL 服务登陆检查

  1. 如果 MySQL 开启了登陆 IP 白名单,将会出现 “is not allowed to connect” 的问题。这个时候应该停止对该目标的检测。

需要注意的一些细节:

细节一:单目标并发与多目标并发

大量的实践都证明,一些不够“精致”的爆破手段喜欢增加并发,并发无脑加到了“单个目标”上,导致爆破很快遭到察觉和封禁。

比较合适的手段应该是可以同时爆破“多个目标”,每个目标低并发。这样在有多个目标的时候,并不会影响效率,而且单个目标也不会过快 “打草惊蛇”。

1699350177_654a06a13f1b9447df572.png!small?1699350177647

细节二:随机Sleep 来规避反制爆破的策略

在我们“多个目标并发”的爆破策略下,有时候还是难以解决被 Ban 的问题。虽然我们并有从根源上解决这个 “被 ban” 的问题。

但是以我作为一个 “研发” 的角度来讲,我如果要 ban 爆破行为的话,我会设置一个时间窗口,短时间时间窗口被打满我会认为发生了爆破事件

如果可以再 “放缓” 针对单个目标的测试强度,其实有可能可以缓解这个问题,所以我们可以通过这种设置参数来解决这个问题。

1699351405_654a0b6d42eaeae5c6f78.png!small?1699351405713

细节三:未授权应该放在爆破前做检查

很多时候,我们无脑在爆破的时候,未授权和指纹检查其实已经可以发现一些可用的信息。遇到这种情况,我们可以决定到底要不要爆破。

通过未授权检测其实已经 “成功进入” 系统了,哪还有必要进行额外爆破呢?

Yak 中的爆破框架schema

yaklang.io 的爆破框架其实解决了上面提到的大多数细节问题,在 yak 的 brute 模块中,我们定义了如下内容:

1699351654_654a0c663edb45eb41f4a.png!small?1699351654675

每个服务,我们会设置默认用户名和密码,同时为每一个模块编写 “UnAuthVerify”:

  1. 这个函数的意义是,进行 “预检查”,在这个模块中,可以检查 TCP 的状态,检查 banner

  2. 当然这个函数的精髓其实是每一个 “目标” 只会执行一次

我们以 MySQL 来举例:

很多时候,我们虽然同时支持 “多目标并发” 和 “单目标并发”,但是多目标并发仍然绕不开 “too many open sockets/files” 魔咒,当遇到这种情况,用户需要手动修改本机的配置,ulimit 等。

YAK官方资源 :

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

# 爆破 # 未授权访问
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录