blog posts:
![]()
* 自由的端口配置
* 支持主动/被动指纹识别
* 关键信息提取, 如title, cert 以及自定义提取信息的正则
* 支持nuclei poc, 引擎:
* 无害的扫描, 每个添加的poc都经过人工审核
* 可控的启发式扫描
* 超强的性能, 最快的速度, 尽可能小的内存与CPU占用.
* 最小发包原则, 尽可能少地发包获取最多的信息
* 支持DSL, 可以通过修改的配置文件自定义自己的gogo
* 完善的输出与输出设计
* 几乎不依赖第三方库, 纯原生go编写, 在windows 2003上也可以使用完整的漏洞/指纹识别功能
完整的文档与教程位于wiki:
指纹与poc仓库:
当前版本的完整参数以 gogo -h 为准。多字符长参数必须使用双横线,例如 --ipp、--sp、--ef;单横线只用于 -i、-p、-F 等单字符短参数。过滤功能现已拆分为历史结果过滤 --filter、实时输出过滤 --output-filter 和提前停止深层扫描的 --scan-filter。
指定网段进行默认扫描, 并在命令行输出
gogo -i 192.168.1.1/24 -p win,db,top2
一些常用的端口配置:
* -p - 等于-p 1-65535
* -p 1-1000 端口范围
* -p common tag: common 表示内网常用端口
* -p top2,top3 可以同时选择多个tag. 外网常见web端口
* -p all 表示所有预设的tag的合集.
通过逗号分割多个配置, 可根据场景进行各种各样的组合配置. 例如:
gogo -i 1.1.1.1/24 -p 1-1000,common,http,db
查看全部端口配置
gogo -P port
可查看所有的tag对应的端口.
当目标范围的子网掩码小于24时, 建议启用 smart模式扫描(原理见doc), 例如子网掩码为16时(输出结果较多, 建议开启--af输出到文件, 命令行只输出日志)
gogo -i 172.16.1.1/12 -m ss --ping -p top2,win,db --af
--af 表示自动指定文件生成的文件名.
-m ss 表示使用supersmart模式进行扫描. 还有ss,sc模式适用于不同场景
--ping 表示在指纹识别/信息获取前判断ip是否能被ping通, 减少无效发包. 需要注意的是, 不能被ping通不代表目标一定不存活, 使用时请注意到这一点
启发式扫描的命令有些复杂, 但可以使用workflow将复杂的命令写成配置文件, 快捷调用(内置的workflow细节见doc).
gogo -w 172
当前内置 workflow 默认使用 all 端口预设,因此上面的命令等价于 gogo -i 172.16.0.0/12 -m ss --ping -p all --af。如需缩小端口范围,可覆盖为 gogo -w 172 -p top2,win,db。
查看所有workflow
gogo -P workflow
常用的配置已经被集成到workflow中, 例如使用supersmart mod 扫描10段内网, gogo -w 10即可.
还有一些预留配置(即填写了其他配置, 但没有填写目标, 需要-i手动指定目标), 例如:
gogo -w ss -i 11.0.0.0/8
workflow中的预设参数优先级低于命令行输入, 因此可以通过命令行覆盖workflow中的参数. 例如:
gogo -w 10 -i 11.0.0.0/8
一个简单的任务
gogo -i 81.68.175.32/28 -p top2
如果要联动其他工具, 可以指定-q/--quiet关闭日志信息, 只保留输出结果.
关于输入输出以及各种高级用法请见output的wiki
如果执行gogo -i 81.68.175.1 --af
扫描完成后,可以看到在 gogo 二进制文件同目录下生成类似 .81.68.175.1.32_top1_default_dat.dat 的文件;首次生成使用 .dat,重名时追加数字。该文件是 deflate 压缩的 JSON Lines。
通过gogo格式化该文件, 获得human-like的结果
导出到其他工具
一些常用的输出格式.
* -o full 默认输出格式, 即上面示例所示.
* -o color 带颜色的full输出. 在v2.11.0版本之后, -F 输出到命令行时为默认开启状态. 如果需要关闭, 手动指定-o full即可
* -o jl 一行一个json, 可以通过管道传给jq实时处理
* -o json 一个大的json文件
* -o url 只输出url, 通常在-F时使用
所有的输出格式见:
输出过滤器
--filter 参数可以从dat文件中过滤出指定的数据并输出.
例如过滤指定字段的值: gogo -F 1.dat --filter framework::redis -o target 表示从1.dat中过滤出redis的目标, 并输出为target字段.
其中:: 表示模糊匹配, 还有其他三种语法,如 == 为精准匹配, != 为不等于, !: 为不包含
-F 1.dat -o json -f result.json 可重新导出为聚合 JSON,也可以使用 -F 1.dat --af 自动生成格式化后的明文文件名。
* (重要)因为并发过高,可能对路由交换设备造成伤害, 例如某些家用路由设备面对高并发可能会死机, 重启, 过热等后果. 因此在外网扫描的场景下建议在阿里云,华为云等vps上使用,如果扫描国外资产,建议在国外vps上使用.本地使用如果网络设备性能不佳会带来大量丢包. 如果在内网扫描需要根据实际情况调整并发数.
* 如果使用中发现疯狂报错,大概率是io问题(例如多次扫描后io没有被正确释放,或者配合proxifier以及类似代理工具使用报错),可以通过重启电脑,或者虚拟机中使用,关闭代理工具解决.如果依旧无法解决请
* 还需要注意,upx压缩后的版本虽然体积小,但是有可能被杀软杀,也有可能在部分机器上无法运行.
* 一般情况下无法在代理环境中使用,除非使用-t参数指定较低的速率(默认并发为4000).
* gogo本身并不具备任何攻击性, 也无法对任何漏洞进行利用.
* 使用gogo需先确保获得了授权, gogo反对一切非法的黑客行为
默认的并发linux为4000, windows为1000, 为企业级网络环境下可用的并发. 不然弱网络环境(家庭, 基站等)可能会导致网络dos
建议根据不同环境,手动使用-t参数指定并发数.
* 家用路由器(例如钓鱼, 物理, 本机扫描)时, 建议并发 100-500
* linux 生产网网络环境(例如外网突破web获取的点), 默认并发4000, 不需要手动修改
* windows 生产网网络环境, 默认并发1000, 不需要手动修改
* 高并发下udp协议漏报较多, 例如获取netbois信息时, 建议单独对udp协议以较低并发重新探测
* web的正向代理(例如regeorg),建议并发 10-30
* 反向代理(例如frp), 建议并发10-100
如果如果发生大量漏报的情况, 大概率是网络环境发生的阻塞, 倒是网络延迟上升超过上限.
因此也可以通过指定 -d 5 (tcp默认为2s, tls默认为两倍tcp超时时间,即4s)来提高超时时间, 减少漏报.
未来也许会实现auto-tune, 自动调整并发速率
这些用法大概只覆盖了一小半的使用场景, 请阅读文档
如果需要编译windows xp/2003的版本, 请先使用高版本的go生成templates. 再使用go 1.11编译即可.
goregexp 用于选择 Go 标准库正则后端,也是 release、nightly 和 TinyGo 构建采用的默认方案。手动编译时不要省略该 tag;否则在部分 Go/Windows 组合下可能进入 go-re2/WASM 路径,并在加载指纹规则时出现 wasm error: invalid table access。
-tags 是 go 命令的编译参数,不是 gogo 的运行参数。编译完成后,Linux/macOS 运行 ./gogo -F 1.json,Windows PowerShell 运行 .\gogo.exe -F .\1.json。不要写成 gogo run -tags goregexp -F 1.json,否则 -tags 会被 gogo 解析为 -t 线程参数。
* Ser 早期的简易扫描器, 功能简单但开拓了思路
* fscan 简单粗暴的扫描器, 细节上有不少问题, 但胜在简单. 参考其直白的命令行,设计了workflow相关功能.
* kscan 功能全面的扫描器, 从中选取合并了部分指纹
* ladongo 集成了各种常用功能, 从中学习了多个特殊端口的信息收集
* cube 与fscan类似, 从中学习了NTLM相关协议的信息收集
gogo从这些相似的工作中改进自身. 感谢前人的工作.
细节上的对比请看文档
*
*
开发语言:Go
Star 数:2140
该项目属于红蓝攻防方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕面向红队的, 高性能高度自由可拓展的自动化扫描引擎 | A highly controllable and extensionable automated scanning engine for red teams展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | gogo - 面向红队的, 高性能高度自由可拓展的自动化扫描引擎 | A highly controllable |
| 所属分类 | 红蓝攻防 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:34:42 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 165 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |