Back to Fscan

Fscan AI Agent Skill

SKILL.md

2.1.39.3 KB
Original Source

Fscan AI Agent Skill

工具概述

Fscan 是一款内网综合扫描工具,功能包括:

  • 主机存活探测(ICMP / TCP)
  • 端口扫描与服务识别
  • 漏洞检测(MS17-010、Redis 未授权等)
  • 弱口令爆破(SSH、SMB、MySQL、MSSQL、FTP、RDP 等)
  • Web 指纹识别与 POC 扫描
  • NetBIOS / SMB 信息收集
  • 本地信息收集(杀软检测、系统信息等)

二进制路径:当前项目编译产物 fscan_cli,或系统 PATH 中的 fscan

调用格式

bash
# AI agent 标准用法:NDJSON 输出,无人类日志干扰
fscan -h <目标> -silent [其他参数]

# 解析输出
fscan -h 192.168.1.0/24 -silent | jq 'select(.type=="VULN")'

核心参数

目标指定

参数说明示例
-h目标主机(IP / CIDR / 范围)-h 192.168.1.0/24 -h 10.0.0.1-10.0.0.100
-hf从文件读取目标-hf targets.txt
-p指定端口(逗号/范围)-p 22,80,443,445,3306 -p 1-1000
-ep排除端口-ep 25,110
-eh排除主机-eh 192.168.1.1
-u指定 URL(Web 扫描)-u https://example.com
-ufURL 文件-uf urls.txt

扫描控制

参数说明默认值
-m扫描模式all
-t端口扫描线程数600
-mt模块线程数20
-time连接超时(秒)3
-gt全局超时(秒)180
-np跳过存活检测false
-ntp禁用 TCP 补充探测false
-ao仅存活检测false
-nobr禁用暴力破解false
-full全量 POC 扫描false
-max-retries最大重试次数1

认证

参数说明
-user用户名
-pwd密码
-usera追加用户名
-pwda追加密码
-userf用户名字典文件
-pwdf密码字典文件
-domain域名(SMB/WMI)
-sshkeySSH 私钥文件
-hash / -hashfNTLM Hash / Hash 文件

代理

参数说明
-socks5SOCKS5 代理 (127.0.0.1:1080)
-proxyHTTP 代理 (http://127.0.0.1:8080)
-iface指定本地网卡 IP(VPN 场景)

输出

参数说明
-silent静默模式:stdout 仅输出 NDJSON
-o输出文件路径(默认 result.txt
-f输出格式:txt / json / csv
-no禁用文件保存
-debug调试模式:日志写入 fscan_debug.log
-log日志级别(debug / info / base / error

扫描模式 -m 的取值

说明
all全部扫描(默认)
icmp仅 ICMP 存活检测
插件名仅运行指定插件(如 sshsmbms17010webtitle

服务插件列表

插件默认端口功能
ftp21FTP 弱口令
ssh22SSH 弱口令
telnet23Telnet 弱口令
smtp25SMTP 弱口令
findnet135RPC 网络信息发现(NetInfo)
netbios139NetBIOS 信息收集
smb445SMB 弱口令
ms17010445MS17-010 永恒之蓝检测
ldap389LDAP 弱口令
mssql1433MSSQL 弱口令
oracle1521Oracle 弱口令
mysql3306MySQL 弱口令
rdp3389RDP 弱口令 + 系统信息
postgresql5432PostgreSQL 弱口令
vnc5900VNC 弱口令
redis6379Redis 未授权 + 弱口令
elasticsearch9200ES 未授权
mongodb27017MongoDB 未授权 + 弱口令
memcached11211Memcached 未授权
kafka9092Kafka 未授权
activemq61616ActiveMQ 弱口令
rabbitmq5672RabbitMQ 弱口令
cassandra9042Cassandra 弱口令
neo4j7687Neo4j 弱口令
rsync873Rsync 未授权
webtitle80/443Web 标题 + 指纹识别
webpoc80/443Web 漏洞 POC

本地插件(-local

bash
fscan -local avdetect    # 杀软检测
fscan -local systeminfo  # 系统信息收集
fscan -local envinfo     # 环境变量信息
fscan -local dcinfo      # 域控信息
fscan -local fileinfo    # 敏感文件搜索

NDJSON 输出 Schema(-silent 模式)

每行一个 JSON 对象,所有字段定义:

字段类型出现条件说明
typestring必有HOST / PORT / SERVICE / VULN
targetstring必有原始目标 hosthost:port
statusstring必有状态描述
hoststring必有IP 地址
portintPORT/SERVICE/VULN端口号
servicestringSERVICE/VULN服务名(ssh, smb, http 等)
protocolstringHOST/SERVICE协议(ICMP, TCP, http, https)
bannerstringSERVICE服务 Banner
titlestringSERVICE (web)网页标题
urlstringSERVICE (web)完整 URL
vulnerabilitystringVULN漏洞名称
usernamestringVULN (弱口令)用户名
passwordstringVULN (弱口令)密码
pluginstringSERVICE/VULN产生结果的插件名
versionstringSERVICE服务版本号
osstringSERVICE操作系统信息

输出示例

jsonl
{"type":"HOST","target":"192.168.1.5","status":"alive","host":"192.168.1.5","protocol":"ICMP"}
{"type":"PORT","target":"192.168.1.5","status":"open","host":"192.168.1.5","port":22}
{"type":"PORT","target":"192.168.1.5","status":"open","host":"192.168.1.5","port":445}
{"type":"SERVICE","target":"192.168.1.5:22","status":"identified","host":"192.168.1.5","port":22,"service":"ssh","banner":"SSH-2.0-OpenSSH_8.9p1","version":"8.9p1","plugin":"portscan"}
{"type":"SERVICE","target":"192.168.1.5:80","status":"web","host":"192.168.1.5","port":80,"service":"http","protocol":"http","url":"http://192.168.1.5:80","title":"Welcome","plugin":"webtitle"}
{"type":"VULN","target":"192.168.1.5:445","status":"MS17-010 (Windows Server 2012 R2 Standard 9600)","host":"192.168.1.5","port":445,"vulnerability":"MS17-010","service":"smb","plugin":"ms17010"}
{"type":"VULN","target":"192.168.1.5:22","status":"weak_credential: root:123456","host":"192.168.1.5","port":22,"service":"ssh","username":"root","password":"123456","plugin":"ssh"}
{"type":"VULN","target":"192.168.1.5:6379","status":"Redis unauthorized","host":"192.168.1.5","port":6379,"vulnerability":"Redis unauthorized access","service":"redis","plugin":"redis"}

结果产出顺序

  1. HOST — 存活探测阶段
  2. PORT — 端口扫描阶段(与 SERVICE 可能交错)
  3. SERVICE — 服务识别阶段
  4. VULN — 漏洞/弱口令检测阶段

同一 host:port 可产生多条结果(PORT + SERVICE + VULN)。

常用场景参数组合

全网段快速扫描

bash
fscan -h 192.168.1.0/24 -silent

跳过存活检测直接扫端口(目标明确时)

bash
fscan -h 192.168.1.0/24 -silent -np

指定端口精确扫描

bash
fscan -h 10.0.0.0/24 -silent -p 22,80,443,445,3389,3306,6379

仅存活探测

bash
fscan -h 172.16.0.0/16 -silent -m icmp

低速隐蔽扫描

bash
fscan -h 192.168.1.0/24 -silent -t 30 -time 5

通过 SOCKS5 代理扫描内网

bash
fscan -h 10.0.0.0/24 -silent -socks5 127.0.0.1:1080

仅做弱口令检测

bash
fscan -h 192.168.1.10 -silent -m ssh -user root -pwdf /path/to/passwords.txt

Web 目标扫描

bash
fscan -u https://target.com -silent -full

多目标文件批量扫描

bash
fscan -hf targets.txt -silent -o results.json -f json

带调试日志的排障扫描

bash
# NDJSON 到 stdout,debug 日志到文件,互不干扰
fscan -h 192.168.1.0/24 -silent -debug
# 事后查看:cat fscan_debug.log

AI Agent 结果处理

Python 管道消费

python
import json, subprocess

proc = subprocess.Popen(
    ["fscan", "-h", "192.168.1.0/24", "-silent"],
    stdout=subprocess.PIPE, text=True
)

hosts, services, vulns = [], [], []
for line in proc.stdout:
    r = json.loads(line)
    if r["type"] == "HOST":
        hosts.append(r["host"])
    elif r["type"] == "SERVICE":
        services.append(r)
    elif r["type"] == "VULN":
        vulns.append(r)

proc.wait()

jq 过滤

bash
# 提取所有弱口令
fscan -h 10.0.0.0/24 -silent | jq -r 'select(.username != null) | "\(.host):\(.port) \(.service) \(.username):\(.password)"'

# 提取所有漏洞
fscan -h 10.0.0.0/24 -silent | jq -r 'select(.type=="VULN") | "\(.host):\(.port) \(.vulnerability)"'

# 提取 Web 服务
fscan -h 10.0.0.0/24 -silent | jq -r 'select(.url != null) | "\(.url) \(.title)"'

# 统计开放端口
fscan -h 10.0.0.0/24 -silent | jq -r 'select(.type=="PORT") | .port' | sort -n | uniq -c | sort -rn

注意事项

  • -silent 抑制所有人类可读日志,stdout 仅输出 NDJSON
  • 空字段不出现在 JSON 中(omitempty
  • 进程退出码 0 正常完成,非 0 表示参数错误或初始化失败
  • -silent-debug 可同时使用,互不干扰
  • SOCKS5 代理下 fscan 信任协议层连接结果,不做额外深度验证
  • 扫描大网段时线程数会自动调整,资源耗尽时自适应降级
  • 默认超时 3 秒,防火墙 drop 的端口会静默超时,不计入失败率