Skip to content

Blog

目录爆破与指纹识别的最佳实践

本文提到的工具: https://github.com/chainreactors/spray

前言

之前在 为什么我们需要收集URL? 发布了两个工具, 分别是用来爆破目录的spray 和用来被动收集url的 urlfounder.

urlfounder在发布后基本没进行更新, 但是spray经过一年的进化, 迎来了v1.0.0版本. 定位也从一个目录爆破工具变成了全面全能的WEB信息收集工具.

它拥有目前最强大的性能与最智能的算法. 几乎能覆盖dirsearch + httpx + 指纹识别(fingers) + fuff的全部功能.

指纹的终极解决方案

repo: https://github.com/chainreactors/fingers

Intro

指纹库当前较为热门的领域之一, 因为每个ASM(攻击面管理)都需要一个强大的指纹库, 而各家大厂都在做自己的ASM.. 指纹库与漏洞库作为安全知识库的两个重要组成部分, 也是各家基建必定会关注的领域.

对于这个问题, 大多数厂商选择堆人力解决, 招几个运营, 给他们定上几个月几百条指纹的KPI, 一两年时间就能把市面上的大多数产品囊括, 看起来似乎对大厂来说也不是个难以解决的问题. 但事实真的如此么?

地表最强大的凭证爆破工具

Overview

zombie是gogo设计之初就诞生的一个计划,中间写了好几版(早期版本@PassingFoam),搁置了快一年。正巧有几个朋友一直在关注这个工具,才把它从内部使用的工具变成基本可用的工具。虽然拖了一年多,但它绝对是目前地球上最强大的爆破工具。

zombie 从1.0就public了。但是因为bug、协议支持、用户体验、兼容性等各种问题,一直不愿写一篇介绍它的文章。至今寥寥几十个star,估计都是长期关注的小伙伴。

到前几天发布的v1.1.6,zombie应该勉强可以出来见人了。与gogo以及之前的其他工具同样,zombie也将是一个长期维护的项目,也是chainreactors工件库中新的一环。

为什么我们需要收集url

Next Generation HTTP Dir/File Fuzz Tool: https://github.com/chainreactors/spray

Fast passive URL enumeration Tool: https://github.com/chainreactors/urlfounder

为什么我们需要收集URL?

这个问题似乎在最基础的安全岗面试中都不太可能出现,但如果要彻底理解dir/file fuzz,我们需要先搞清楚这个问题。

如果你每次都会拿起自己珍藏的字典对着目标一顿轰炸,那么可能需要好好想想目录里的user.php 真的有用么。 如果有用,用爬虫不是更好么?

在红蓝对抗中,资产的最小单位为一个 service,这个 service可以理解为部署在某一台服务器上的服务。例如一个论坛服务,里面可能有 user.php,forum.php 等等一堆目录。但对攻击者来说,只需要知道指纹,这些目录都可以从源码中直接找到, 并不需要爆破。而如果是不开源的应用, 这些目录可以通过爬虫去发现。这样的一个页面 在红蓝对抗,甚至大部分渗透测试中都不需要通过爆破去发现。

只有闭源的, 且管理页面做了特殊保护的站点, 才需要通过目录爆破去发现admin目录. user.php, register.php在html与js中就能被爬虫爬到.

利用github实现rss的协作, 订阅, 精选与管理

前言

在开始硬核的内容前, 先介绍一个空闲时写的小玩具. 基于github的rss协作管理工具.

repo: https://github.com/chainreactors/picker

picker

在过去几年间, 大多数时间我都在使用irreader. http://irreader.fatecore.com/

使用体验还算不错, 但是也仅限于一个阅读器, 并不能保存文章到本地, 也不能进行一些复杂的推送和管理.

直到有一天我看到了 https://github.com/VulnTotal-Team/yarb , 才意识到, 其实github才是rss管理最好的工具.

为此, 我对yarb进行大刀阔斧的改动, 并使用github action 实现serverless的推送以及 issue与issue tag进行管理.

ASM的蓝图

前言

在发布chainreactor的计划之前, 先行发布了我们最成熟的工具 gogo, 是希望大家能从gogo中感受到我们的设计上的风格. 接下来将会介绍chainreactor的其他部分.

开始

chainreactor 将专注于红队自动化以及红队工具工件化. 如果要找一个类比, 可以参考projectdiscovery. 确实, 我们也从pd参考借鉴了非常多的代码, 甚至部分工具直接移植了pd的代码与poc.

为什么要在projectdiscovery之后再做类似的东西? 当然不是为了成为一个国产化的克隆pd , 因此pd已经覆盖到的场景将直接使用pd的工具链或者给pd提交pr, 而一些pd没有覆盖的场景将会自行研发,例如url被动收集与主动收集, 被动收集dns历史解析记录, 弱口令爆破等.

当然, 这些工件只是计划的第一阶段, 第二阶段则是通过工件化的工具链实现一个可编排, 可拓展, 高度可控的面向红队的框架. 并通过流量中间件实现将工具链拓展到内网. 第一阶段与第二阶段将会同步进行

是的, 我们的目标就是实现一个足够强大的, 高可拓展的, 分布式的, 协作的信息收集与漏扫框架. 这一堆词拼凑出的印象大概就是这两年很火的攻击面管理(ASM), 安全自动化编排与响应(SOAR), 漏扫加上CobaltStrike式的teamserver的集合体. 目标很大, 也许不能完全实现, 因此整个计划的所有组成部分都将以工件化的形式编写, 就算不能完成整个计划, 也有一系列中间成果可以单独使用在各种场景中.

目前这个项目使用业余时间进行了一年多, 完成了一两个成熟的工件, 三四个研发中的工件, 以及demo版本的框架与demo版本的流量中间件. 将会逐步发布, 我相信每个工件都能做到市面上最强或在某些场景下有独特的地方.

经过实战打磨内网自动化引擎

repo

项目链接

本体: https://github.com/chainreactors/gogo

规则库: https://github.com/chainreactors/gogo-templates (将在一周内设置为public)

本文只介绍一些特性, 具体的使用以及使用文档请见项目仓库

背景

在红队最开始的两年, 并没有相关的工具, 外网扫描端口使用的还是nmap, masscan. 内网则几乎无能为力, 有人使用C写的一些小工具, 有人通过python写了单文件的allin, 也有人打包了单文件版本的nmap与masscan.

之后有了serverscan, 不过老版本缺少维护, 在设计上存在缺陷, 新版本一直没有公开, 在扫描少量目标时效果不错, 目标一大, 则速度难以接受并且会时不时的崩溃.

也因为此, 开始编写自己的扫描器, 很快就在同事手中诞生了第一个demo, 最开始的定位大概是一个没有bug的serverscan, 那时候叫getitle, 还真的只能get title. 但写着写着就收不住了, 最终变成了一个能网段发现, 端口扫描, 指纹识别, 漏洞探测的扫描引擎. 几乎覆盖了内网扫描相关的绝大多数场景.

再后来诞生了kscan, fscan等类似定位的工具, 在迭代的过程中, gogo从ladon, kscan, cube,nuclei等地方借鉴了一些思路, 也复制了一些代码(主要是特殊端口的扫描插件).

现在的gogo, 定位已经不同于serverscan, fscan等工具, 它是一个内网的自动化引擎, 保留了极强的可控性与可拓展性, 能对付fscan, kscan,netspy等都无能为力的复杂使用场景.

在红队项目与hw中不断迭代了100多个版本, 近1000个commit, 慢慢加入了非常多功能与奇思妙想 以及实战中的经验积累.

gogo在设计上会有一些取舍, 一些其他工具有的功能, gogo不一定会都去实现, 但一定会提供其他解决方案. 这主要是为了保证gogo足够便携, 足够优雅以及设计上的统一.