本系统通过模块化提供多种安全功能
- 基于插件的漏洞扫描功能
- 持续化漏洞管理
- 多种协议的弱口令检测
- 企业子域名收集
- 企业 IT 资产管理及服务发现
- 端口扫描
- AWVS(Acunetix Web Vulnerability Scanner) 接口调用
其他功能敬请期待…
安装手册
也可以通过 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 文件夹
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
目前支持任务删除,报告批量下载功能
端口扫描
一个端口扫描的辅助功能,用于临时的端口探测,存货主机发现,等等
系统设置
各模块扫描线程数,子域名字典配置,端口配置