Skip to content

Blog

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

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足够便携, 足够优雅以及设计上的统一.