一键跑完内网存活、端口与弱口令扫描(fscan)
fscan 是一款用 Go 写的内网综合扫描工具,把主机发现、端口扫描、服务识别、弱口令爆破和漏洞检测串成一条命令,输出现成的 TXT、JSON、CSV 结果。这篇文章梳理它的能力边界、关键参数、结果输出位置和已知踩坑记录,帮安全从业者判断它是否适合手上那次已获授权的内网测试。
对内网做一次安全自查,常见的做法是几样工具接力:先探存活主机,再扫端口,接着挨个服务试弱口令,最后对认出来的服务跑漏洞检测。fscan 把这几步收进一条命令,用 Go 写成,敲一句 ./fscan -h 192.168.1.1/24,一个 C 段的存活主机、开放端口、服务指纹和弱口令线索就会陆续列出来。
fscan 是用 Go 编写的内网综合扫描工具,输入 IP、CIDR、域名或 URL,输出存活主机、开放端口、服务指纹、弱口令与漏洞检测结果。
仓库地址是 https://github.com/shadow1ng/fscan,采用 MIT 许可证,主要语言 Go 占 91.0%。截至 2026 年 10 月,仓库有 14627 个 star、1949 个 fork、13 个开放 issue,当前版本 2.2.2,最近一次提交在 2026-10-01,默认分支 main。
它的使用场景集中在内网一侧:你已经拿到一个网段、或者拿到一台能通到内网的跳板机,接下来要摸清这个网段里有什么。扫描对象可以是单个 IP、CIDR 网段、域名或 URL,也可以写进文件用 -hf 批量导入。输出支持 TXT、JSON、CSV 三种格式,方便接进后续的整理步骤。
它不做什么
仓库里能直接看到的限制有几条,用之前先认一下。
- 默认构建不含 Web 管理界面。可视化任务管理需要带条件编译参数才会编进去,源码里的
main_web.go、web-ui/、web/也是为这个用途准备的。 - README 的路线图里,fscan-lab 靶场被标注为「未完成」。顶层目录确实有
fscan-lab/,但按仓库自己的说法,它还处在开发阶段。 - 路线图还提到用 C 语言重写的轻量版 fscan-lite,但顶层目录结构里没有对应目录,仓库里没有说明这个版本当前是否可用。
- 没有说明支持多节点分布式调度,扫描动作在一台机器上完成。
- 本地模块、漏洞利用这类能力会在目标机器上落地文件或执行命令,仓库给出的免责声明写明本工具仅面向合法授权的企业安全建设行为,不对非授权目标扫描。
用之前先准备好什么
从源码编译需要 Go 工具链,README 给出的编译命令用到了 -ldflags 和 -trimpath,同时需要能拉到 go.mod 里声明的依赖,这一条在 issue 里出现过编译失败的反馈。
安装方面,README 只写了 Arch Linux 一条:yay -S fscan-git。其他平台仓库里没有给包管理器安装方式,实际操作是下载 Release 里的二进制,或者自己编译。macOS 也没有单独的使用说明章节,issue 里曾有用户要求补一段 Mac 用法。
目标侧要准备好授权与可达的网络路径。字典、端口文件、代理和网卡名都属于可选项:不用额外字典时它跑内置的弱密码表,不指定端口时它跑内置的 133 个常用端口,走代理或在 VPN 场景下才需要补 -proxy、-socks5、-iface。
主要功能
- 主机发现:ICMP/Ping 存活探测,支持大网段的 B/C 段存活统计。用法
./fscan -h 192.0.0.0/8 -m icmp;只要存活结果不跑后续步骤,用-ao。 - 端口扫描与服务识别:TCP 全连接扫描,内置 133 个常用端口,支持 web、db、service、all 端口组。用法
./fscan -h 192.168.1.1 -p 22,80,443,3389,也可以把端口写进文件用-pf指定,文件支持逐行端口、范围和逗号列表三种写法。服务识别覆盖 20 多种协议指纹。 - 弱口令爆破与 Hash 碰撞:覆盖 28 种服务,包括 SSH、RDP、SMB、FTP、MySQL、MSSQL、Oracle、Redis 等,内置 100 多条常见弱密码并支持
{user}变量替换。用法./fscan -h 192.168.1.1 -m smb2 -user admin -hash xxxxx做 NTLM Hash 认证,或者-pwda pass1 pass2 pass3往字典里追加密码。不想跑爆破用-nobr关掉。 - Web 探测与 POC 扫描:识别网站标题、CMS、Web 中间件,以及 WAF/CDN,指纹库集成 FingerprintHub 的 3139 条记录,Web 中间件相关指纹 40 多条。POC 扫描兼容 Xray 和 afrog 两种格式,支持 DNSLog 外带检测。
- 漏洞利用:Redis 可写公钥、写计划任务、写 WebShell、主从复制 RCE,用法
./fscan -h 192.168.1.1 -m redis -rf id_rsa.pub;MS17-010 支持 ShellCode 注入;SSH 认证成功后可以接着执行命令。 - 本地插件:用法
./fscan -local systeminfo,覆盖信息收集、凭据获取、权限维持、反弹 Shell、杀软检测和痕迹清理几类动作。 - 输入输出与网络控制:目标支持 IP、CIDR、域名、URL 和文件批量导入,支持排除主机与排除端口;输出 TXT、JSON、CSV,另有静默模式;网络侧支持 HTTP 与 SOCKS5 代理、指定网卡、速率限制、最大发包数,端口超时、Web 超时、全局超时和并发线程分别配置。
- 扩展能力:
pkg/fscan提供 Go SDK,可以把扫描能力嵌进自己的程序,支持任务暂停与恢复、实时进度回调、按 TaskID 追溯;带-tags web编译后启用 Web 管理界面;插件按服务插件、Web 插件、本地插件分层,另有-lang zh/en中英文切换和-perf性能统计。
安装与最短示例
# 标准编译
go build -ldflags="-s -w" -trimpath -o fscan .
# 带 Web 管理界面
go build -tags web -ldflags="-s -w" -trimpath -o fscan-web .
# Arch Linux
yay -S fscan-git
# 扫描一个 C 段
./fscan -h 192.168.1.1/24
# 只跑存活探测
./fscan -h 192.168.1.1/24 -ao
# 只扫指定端口
./fscan -h 192.168.1.1 -p 22,80,443,3389
# 走 SOCKS5 代理
./fscan -h 192.168.1.1 -socks5 socks5://user:[email protected]:1080
# 查看当前构建可用的模块
./fscan -list-plugins
编译产物是一个可执行文件,命令里的参数按需增减即可。指定 -m 选中带固定端口的模块、又没有传 -p 或 -pf 时,扫描范围会取所选模块注册端口的并集;传了 -p 就能扫非标准端口,Web 模块仍然使用通用端口范围。
关键参数
-h/-hf:单个目标 / 从文件读取目标清单;-u用于指定一个 Web 地址。-p/-pf:端口列表 / 端口文件;-ehf从文件读取要排除的主机。-m:指定服务模块,例如-m ssh、-m netbios、-m icmp;-list-plugins列出当前构建实际可用的模块名称、类型、默认端口和调用方式。-user/-pwd/-userf/-pwdf:指定用户名和密码,或从文件读取字典;-usera/-pwda往字典里追加,它们会保留基础字典,与-pwd或-pwdf同用时追加到指定字典。-nobr:禁用爆破;-ao:只做存活探测。-gt:全局扫描超时。从 v2.2.1 起默认不再启用全局超时,避免大网段或弱网络环境下扫描被整体提前终止,需要限制总时长时用它显式设置。-proxy/-socks5/-iface:HTTP 代理 / SOCKS5 代理(支持用户名密码)/ 指定网卡,VPN 场景用得上。-local:调用本地模块,例如-local systeminfo;-rf:Redis 写公钥时指定公钥文件。-lang zh/en:界面语言;-perf:输出 JSON 格式的性能报告。
结果在哪里看
扫描过程在终端实时刷新,静默模式会关掉 Banner、进度条和颜色输出。结果文件支持 TXT、JSON、CSV 三种格式,TXT 走实时刷盘加双写机制,扫描结束时会在文件末尾附上一份 Web 服务 URL 列表,方便批量测试。
扫描异常退出时会执行结果清理和落盘,避免主结果为空以及 .realtime.tmp 残留。默认输出文件名仓库里没有说明,实际以运行时看到的输出路径为准。-perf 生成的是独立的 JSON 性能报告,和扫描结果不是同一个文件。
实际使用中的坑
- 非默认端口上的服务不加载插件。有用户反馈扫描到 22 端口的 SSH 会显示有插件,扫描到 8881 端口的 SSH 则显示「服务插件: 无可用插件」。该 issue 状态为已解决,v2.2 系列围绕目标调度和端口选择做了多轮修复。
- 用 SOCKS5 代理扫描会一直卡顿。这条反馈评论数较多,状态为已解决。
- 只填一个 IP 时 SSH 爆破跑不起来,扫一下就停。有用户问这是否正常,状态为已解决。
- 批量扫描出现 host parsing error。用户询问是否每个 IP 都要用逗号隔开,状态为已解决。同期还有 M1 芯片 Mac 上运行报错、以及编译时拉取
go-mssqldb依赖失败的反馈,同样标记为已解决。
这四条都是历史反馈,仓库当前 13 个开放 issue。使用前建议先扫一个已知主机验证流程通不通,再放到大网段上跑。
横向对照
下面两个项目在站点的同类列表中标记为同功能档位,放在一起看的是能力覆盖范围,不是简单的高下之分。
| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
|---|---|---|---|---|---|
| fscan | 拿到授权网段、要在一次扫描里同时拿到存活、端口、指纹、弱口令和漏洞线索的内网测试人员 | 自行编译的 Go 二进制,Arch Linux 有 fscan-git 包 | 默认构建不含 Web 界面,需 -tags web 重新编译;没有说明支持分布式调度;靶场和轻量版仍在路线图上 | 目标是内网横向,希望一条命令把多类检测串起来 | fscan |
| bee-san/RustScan | 只需要端口发现这一步、想先用一个专门的端口扫描器摸清开放情况的人 | 仓库没有说明 | 项目描述里定位为现代端口扫描器,不涉及服务弱口令爆破与漏洞利用 | 只想快速确认端口开放情况、后续步骤另有工具负责时 | bee-san/RustScan |
| Autumn-27/ScopeSentry | 需要做网络空间测绘、子域名枚举与敏感信息发现的资产梳理团队 | 仓库没有说明 | 项目描述集中在测绘、子域名枚举与端口扫描方向,内网弱口令爆破和漏洞利用不是它的重点 | 资产在公网侧、先要盘清有哪些域名和暴露面时 | Autumn-27/ScopeSentry |
选择的分界在任务边界上。如果你的目标是公网资产测绘,需要的是子域名枚举和空间测绘能力,fscan 没有这类模块,这个环节应该交给 ScopeSentry 一类的工具;如果你只想要一份端口开放清单、不打算自动往下试密码和跑 POC,用 RustScan 这种单点工具更轻。fscan 的价值在于把内网这一串动作合到一次运行里,代价是单机执行、默认不带可视化管理界面,规模再大就得靠 SDK 自己接。
合规与授权边界
fscan 属于扫描、爆破与漏洞利用类工具,本地模块还会在目标机器上落地文件、维持权限和反弹 Shell。这类操作只能用于自己拥有或已获得书面授权的资产,扫描范围、时间窗口和允许执行的利用动作都要事先确认。对未授权目标使用,可能触犯《网络安全法》《刑法》相关条款,也会给被测方带来实际业务中断风险。README 的免责声明同样写明本工具仅面向合法授权的企业安全建设行为,作者不承担非法使用产生的后果。
适合谁
它适合做内网渗透测试和红队评估的安全从业者,适合企业安全团队对自己已授权的内网段做周期性自查,也适合在靶场里练手的学习者。需要把扫描能力嵌进自己平台的人可以用 pkg/fscan 做二次开发。它的中英文界面切换和 TXT、JSON、CSV 输出,对要写报告的人省事。
它不适合要 7×24 持续监控资产变化的人,仓库里没有说明存在这种常驻调度能力。它也不适合用本地显卡加速的诉求,issue 里有人提过想加 GPU 支持或直接调用本地显卡跑任务,仓库没有说明这一项已经实现。手上只有公网域名、想要测绘级资产盘点的人,应该去找专注这个方向的工具。没有获得目标授权的人,无论出于什么理由都不该碰它。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.1 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 9.0 / 10 |
| 社区响应(权重 15%) | 10.0 / 10 |
| 文档质量(权重 15%) | 5.5 / 10 |
| 发布节奏(权重 10%) | 9.8 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
fscan 把内网存活、端口、指纹、弱口令和 POC 串进一条命令,这篇整理了能力边界、关键参数和输出路径,附上几条已知踩坑,能帮持有授权的人判断是否值得上手。适合做内网渗透测试、红队评估的安全从业者,以及用 pkg/fscan 做二次开发的人。star 数与焚评评分来自原作者和焚.com 公开披露,诀.com 未独立验证;
文中 star、fork、开放 issue 数来自 GitHub 公开指标,焚评各维度评分为焚.com 授权引用,诀.com 未独立验证这些数据。功能、参数与编译方式来自仓库 README,踩坑条目来自历史 Issue,属作者与提交者的公开披露,未做实测,结果不保证复现。用户反馈摘要
根据仓库 Issue 来看,这批反馈全部标为已解决:M1 芯片 Mac 上运行报错或直接退出,提交者希望 README 补一段 Mac 用法;-h 参数被直接拼接进 exec.Command,存在命令注入风险;SSH 等服务不在默认端口时显示「无可用插件」,导致无法爆破;SOCKS5 代理扫描持续卡顿;只填一个 IP 时 SSH 爆破跑一下即停;编译时拉取 go-mssqldb 依赖失败。另有提交者提出希望加入 GPU 加速或调用本地显卡,因为提高线程数后 CPU 占满。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:shadow1ng(shadow1ng)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库