Fscan流程详解

main.main
- 初始化日志系统
- 创建HostInfo对象
- 解析命令行参数(common.Flag)
- 解析配置文件(common.Parse)
    - ParseUser - 解析用户名
    - ParsePass - 解析密码
    - ParseURLs - 解析URL
    - ParseHosts - 解析主机
    - ParsePorts - 解析端口
- 初始化输出系统(Common.Initoutput)
- 执行扫描(Core.Scan)
    - 检查主机存活(Core.CheckLive)
        - ICMP检测(Core.probewitthICMP)
        - Ping扫描(core.Runping)
        - 处理存活主机(core.parsePluginList)
    - 获取插件列表(Core.parsePluginList)
        - ActiveMQ扫描(Plugins.ActiveMQScan)
        - Cassandra扫描(plugins.cassandraScan)
        - Redis扫描
        - MySQL扫描
        - SSH扫描
        - ……
    - Web扫描(webscan)
        - 加载POC(webscan.LoadPoc)
        - 执行POC(webscan.executePoc)
        - 执行规则(webscan.executeRules)
    - 保存结果(common.SaveResult)

Core模块解析

主机服务扫描

  1. 基于IP/域名的展开式扫描
    • 以corre SCAN模块为主机发现入口,先通过ICMP、SYN半开放扫描等方式探测主机,再对存活主机进行端口扫描
    • 对识别出来的HTTP/HTTPS服务,会自动拼接协议头,进入Web扫描流程
  2. Web漏洞检测
    • 直接基于Url的Web专项扫描,若用户直接输入指定URL,FX杆会跳过主机存活、端口扫描等前置步骤,直接对URL进行Web扫描,加载并检测对应Web的POC

Plugins与WebScan模块解析

Plugins模块

覆盖服务:ActiveMQ \ Cassandra \ Redis \ MySQL \ SSH \ FTP等 核心能力:凭证爆破、服务连接、漏洞检测

WebScan模块

功能:加载多类Web漏洞POC 核心函数:LoadPoc \ executePoc \ CheckMuitiPoc

免杀核心思路

核心目标

  • 绕过静态查杀:特征码、字符串、导入表
  • 绕过动态查杀:行为检测、内存特征

特征码混淆

  • 加密/替换核心函数名、字符串
  • 重命名敏感变量

导入表清理

  • 移除不必要的Kernel2函数导入
  • 动态加载API,避免导入表中敏感函数被特征匹配