一款基于Pocsuite开发的扫描器

本系统通过模块化提供多种安全功能

  • 基于插件的漏洞扫描功能
  • 持续化漏洞管理
  • 多种协议的弱口令检测
  • 企业子域名收集
  • 企业 IT 资产管理及服务发现
  • 端口扫描
  • AWVS(Acunetix Web Vulnerability Scanner) 接口调用

其他功能敬请期待…

安装手册

你可以直接下载最新 tar 或者 zip

也可以通过 Github 仓库获取

git clone --depth 1 https://github.com/jeffzh3ng/Fuxi-Scanner.git fuxi-scanner

依赖于 Python 2.7 or Python 2.6 环境

运行环境

安装过程演示环境为 Ubuntu 16.04 操作系统,其他 Linux 发行版可以参考

安装基础依赖包

sudo apt update
sudo apt install python python-dev python-pip python-setuptools nmap hydra curl
cd fuxi-scanner
sudo python -m pip install pip==9.0.3
sudo pip install -r requirements.txt

安装 MongoDB 社区版 (Ubuntu)

导入Key

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5

创建源文件

Ubuntu 14.04

echo "deb https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

Ubuntu 16.04

echo "deb https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

更新软件包列表

sudo apt-get update

安装 MongoDB.

sudo apt-get install -y mongodb-org

运行

Start MongoDB.

sudo service mongod start

连接到数据库

mongo

创建管理员用户

use admin
db.createUser(
  {
    user: "admin",
    pwd: "14b3xfY1wd",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

创建扫描器用户

The following operation creates a user in the reporting database with the specified name, password, and roles

use fuxi
db.createUser(
  {
    user: "fuxi_scanner",
    pwd: "W94MRYDqOZ",
    roles: [
       { role: "readWrite", db: "fuxi"},
    ]
  }
)

开启认证

sudo vi /etc/mongod.conf

增加以下配置

security:
  authorization: "enabled"

重启数据库服务,设置开机启动

sudo service mongod restart
sudo systemctl enable mongod.service

测试认证连接

root@ubuntu:~$ mongo
MongoDB shell version v3.6.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.5
> use fuxi
switched to db fuxi
> db.auth("fuxi_scanner", "W94MRYDqOZ")
1

返回1代表用户认证成功

扫描器配置

fuxi-scanner configuration files are located in the fuxi-scanner/instance/ directory.

配置文件解析

import os
basedir = os.path.abspath(os.path.dirname(__file__))


class Config:
    def __init__(self):
        pass

    WEB_USER = 'admin'                              #Web Auth User
    WEB_PASSWORD = 'xHmRu4sJxZ'                     #Web Auth Password
    POCSUITE_PATH = basedir + '/../fuxi/views/modules/scanner/pocsuite_plugin/'
    AWVS_REPORT_PATH = basedir + '/../fuxi/static/download/'    # static file download
    WEB_HOST = '127.0.0.1'                          #Web Server Host
    WEB_PORT = 5000                                 #Web Server Port
    UPDATE_URL = "https://fuxi.hook.ga/update"      #check update
    VERSION = '1.2.0'                               #scanner version
    AWVS_URL = 'https://192.168.56.2:3443'          #Acunetix Web Vulnerability Scanner Url
    AWVS_API_KEY = ""                               #Acunetix Web Vulnerability Scanner API Key
    

class ProductionConfig(Config):
    DB_HOST = '127.0.0.1'                           #MongoDB Host
    DB_PORT = 27017                                 #MongoDB Port (int)
    DB_NAME = 'fuxi'                                #MongoDB Name
    DB_USERNAME = 'fuxi_scanner'                    #MongoDB User
    DB_PASSWORD = 'W94MRYDqOZ'                      #MongoDB Password

    CONFIG_NAME = 'fuxi'                            #Scanner config name
    PLUGIN_DB = 'dev_plugin_info'                   #Plugin collection
    TASKS_DB = 'dev_tasks'                          #Scan tasks collection
    VULNERABILITY_DB = 'dev_vuldb'                  #Vulnerability collection
    ASSET_DB = 'dev_asset'                          #Asset collection
    CONFIG_DB = 'dev_config'                        #Scanner config collection
    SERVER_DB = 'dev_server'                        #Asset server collection
    SUBDOMAIN_DB = 'dev_subdomain'                  #Subdomain server collection
    DOMAIN_DB = 'dev_domain'                        #Domain server collection
    PORT_DB = 'dev_port_scanner'                    #Port scan collection
    AUTH_DB = 'dev_auth_tester'                     #Auth tester tasks collection
    ACUNETIX_DB = 'dev_acunetix'                    #Acunetix scanner tasks collection
    WEEKPASSWD_DB = 'dev_week_passwd'               #Week password collection

注意修改扫描器web服务监听的IP,默认监听本地,数据库名称、数据库用户、密码,AWVS 扫描器路径以及 API Key

开始使用

运行测试

sudo service mongod restart
cd fuxi-scanner
python migration/db_init.py
python fuxi_scanner.py
* Running on http://127.0.0.1:5000

一定要记得开启数据库,未报错,说明可以正常运行,打开浏览器访问http://127.0.0.1:5000

后台运行

./run.sh start      # start
./run.sh restart    # restart
./run.sh stop       # stop

使用 Caddy 进行代理 (建议)

Caddy 服务器(或稱Caddy Web)是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用 Golang 标准库提供 HTTP 功能。

Caddy 一个显著的特性是默认启用 HTTPS。它是第一个无需额外配置即可提供 HTTPS 特性的 Web 服务器。

安装

  • PLATFORM: Linux 64
  • PLUGINS: None
  • TELEMETRY: Off
  • LICENSE: Personal (free)
    curl https://getcaddy.com | bash -s personal

    使用

    Caddy 官方用户手册

    创建 caddy 文件夹

    sudo mkdir /etc/caddy
    sudo touch /etc/caddy/caddy.config
    sudo chown -R root:www-data /etc/caddy
    sudo vi /etc/caddy/caddy.config

    编写 Caddyfile 配置文件:

    配置文件语法说明

    www.example.com {
        log /var/log/caddy_fuxi.log
        proxy / 127.0.0.1:5000 {
            transparent 
        }
    }

    创建 SSL 证书路径

    sudo mkdir /etc/ssl/caddy
    sudo chown -R www-data:root /etc/ssl/caddy
    sudo chmod 0770 /etc/ssl/caddy

    开始使用 Caddy

    sudo caddy -conf /etc/caddy/caddy.config

     

快速开始docker模式

git clone --depth 1 https://github.com/jeffzh3ng/Fuxi-Scanner.git fuxi-scanner
cd fuxi-scanner
docker pull jeffzh3ng/fuxi-scanner

或者

docker build -t jeffzh3ng/fuxi-scanner .

启动

docker run -dit -p 5000:5000 -v /opt/data:/data jeffzh3ng/fuxi-scanner:latest

或者

docker run -dit -p 5000:5000 -v /opt/data:/data -v /etc/localtime:/etc/localtime jeffzh3ng/fuxi-scanner
// 同步主机与 Docker 时间

等待10s,浏览器打开 http://127.0.0.1:5000,检查fuxi是否开始工作 password: whoami

 

使用

漏洞扫描功能

该模块主要设计初衷是为了对互联网新爆发的安全漏洞进行快速响应及风险排查,以及对已发现的漏洞修复情况进行追踪,该模块可以和资产服务发现模块结合使用,进行快速应急响应

该模块通过调用知道创宇开源扫描器 Pocsuite 进行扫描,具备编码能力的可以根据模版快速开发插件,不具备插件编写能力的可以通过SeeBug 社区获取

本项目tests目录下提供部分插件,不定期更新,互联网上有项目提供了很多的 Pocsuite 插件,可以在Github上进行搜索,建议不要执着于插件数量,不要当成漏扫使用哦

扫描任务周期可以选择单次、每日、周及每月,扫描对象可以是单个 IP、网段或者 Url

扫描插件通过插件模块中新增插件进行上传,可以同时上传多个插件,插件必须符合 PoC 编写规范及要求说明

资产管理功能

该模块具备资产管理,资产服务发现功能

企业安全人员可以根据信息系统对IT资产进行划分,创建不同的资产库,通过资产库可以灵活的创建扫描漏洞任务

资产服务发现模块通过调用 Nmap 对资产库主机进行端口扫描,并将结果入库,企业安全人员可以通过关键字搜索功能筛选出符合条件的服务添加到漏洞扫描任务中

搜索使用右上角搜索框,不要使用服务列表中的筛选功能

认证安全检测

后端调用hydra进行扫描,目前支持55种常见协议:

Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.

扫描任务周期可以选择单次、每日、周及每月,扫描对象可以是单个 IP、网段或者 Url

该功能采用模块化方式实现,具备开发能力可以自由添加其他协议破解插件,具体实现会在 WiKi 进行公布

子域名收集模块

通过基于字典的暴力猜解方式收集企业子域名,可以在系统高级设置配置字典,项目tests文件夹下提供了一份域名字典

Acunetix Scanner 接口调用

AWVS 11 不能同时添加多个 URL 地址,该模块通过调用 AWVS 接口进行批量扫描,需在instance/config.py配置AWVS接口地址及Key

目前支持任务删除,报告批量下载功能

端口扫描

一个端口扫描的辅助功能,用于临时的端口探测,存货主机发现,等等

系统设置

各模块扫描线程数,子域名字典配置,端口配置

文 / Aex
LEAVE A REPLY

loading