巡风代码架构简介以及Flask的项目文件结构简介
一、巡风:
巡风是一款什么东西,想必安全同行都不陌生吧。用它作为内网漏洞扫描管理架构是一种很好的选择,扫描快,开源,还可自己编写符合规则的POC直接放入相应目录来扩展。今天下午趁着有点时间捋了一下巡风的代码框架,顺便学习下Flask的项目文件结构。在这里,还是鸣谢一下同程应急响应中心(YSRC),开源这款产品。
二、巡风的基本架构:
巡风是一款使用Python Flask框架编写的网络安全漏扫工具,BS架构。数据库使用MongoDB,扫描器使用号称五分钟扫遍互联网的masscan(当然真是情况没有那么快)。漏扫使用编写好的POC,POC全部开源在源码目录下的/vulscan/vuldb下面。其他辅助功能还有启动一个DNS服务器(UDP 53端口),和一个web服务器,辅助检测类似于Jenkins反序列化远程命令执行(cve-2017-1000353)这种无回显的漏洞。扫描任务的建立是根据用户输入添加到MongoDB数据库中。另一个进程漏洞的一个脚本,会周期性检查数据库,取出任务队列,执行任务。
三、巡风的漏扫POC原理:
1、有回显的直接根据回显判断。
2、无回显的,会生成一条访问上文提到的web服务器的增加一个随机字符串的payload。然后POC扫描脚本去请求这个服务器中有没有这个随机字符串,有就判定有漏洞,反之则没有漏洞。
四、巡风的文间结构:
最外层:xunfeng(folder)
1、folder:
1.1 -> aider =>aider.py 该文件中会以socket起一个webserver 坚听在8088端口(使用TCP协议)以及一个DNS监听UDP 53端口的socket。
1.2 -> db =>大量json和bson文件,没搞清楚具体用途。
1.3 -> dockerconf => mongoauth 用来创建mongodb的用户,配置口令。start.sh是一个shell文件用来起docker话的启动服务。
1.4 -> docs -> install => 大量markdown文件 用来讲解各种OS下以及使用Docker如何安装巡风。
1.5 -> install:
1.5.1 ->files => xunfeng 配置日志文件、pid文件等路径,并启动巡风的shell文件/xunfeng.conf巡风的配置文件。
1.5.2 => config.sh 配置shell脚本 install.sh 安装shell脚本 uninstall.sh 卸载的shell脚本。
1.6 -> masscan linux和windows环境下的masscan程序执行文件。
1.7 -> nascan:
1.7.1 -> lib => 大量的自定义lib库python文件,包含超类路由的cidr.py文件,icmp.py ping功能文件,mongo.py和mongodb数据了交互的文件,log.py日志功能文件以及start.py和scan.py等等。
1.7.2 -> plugin => masscan.py 调用masscan的文件。
1.7.3 => NAscan.py 启动scan部分功能的py文件。
1.8 -> views:
1.8.1-> lib => AntiCSRF.py 防止csrf攻击的自定义lib库,以及其他自定义lib库conn.py 连接功能模块,createexcel创建excel结果表的模块,登录模块login.py,搜索查询模块querylogic。
1.8.2 -> static 静态文件库 :包含css文件库、js文件库、图片文件库等等。
1.8.3 -> templates 模板文件库:html文件模板。
1.8.4 -> __init__.py 创建app和数据库对象的文件。
1.8.5 -> Views.py 路由函数文件。
1.9 -> vulscan:
1.9.1 ->vuldb POC文件库。
1.9.2 => vulscan.py 漏扫进程主模块文件。
2、files:
2.1 => Config.py 配置文件:web的用户名、口令以及数据库的用户名、口令配置。明文硬编码的。
2.2 => Dockerfile Docker文件 用来创建启动运行Docker。
2.3 => LICENSE。
2.4 => README.md。
2.5 => requirements.txt Python的以来的库都写在该文本文件内。
2.6 => Run.py 文件 app启动文件、可修改监听的IP和端口。
2.7 => Run 启动文件(linux下.sh文件;win下.bat文件)。
五、总结Flask项目文件结构:
1、总目录:WWW(使用Project Name 做folder的名字也可以)
1.1 配置文件config.py。
1.2 启动文件 manage.py 或者run.py。
1.3 License文件(文本文件)。
1.4 readme文件(markdown格式)。
1.5 requirements.txt(依赖库说明文件)。
1.6 lib-floder 自定义插件或其他进程库文件夹。
1.7 views 主程序文件夹:
1.7.1 lib 主程序依赖的库文件package。
1.7.2 static 静态文件库。
1.7.3 templates 模板文件库。
1.7.4 __init__.py app对象创建以及数据库初始化的python文件。
1.7.5 views.py 路由函数定义文件。
巡风代码架构简介以及Flask的项目文件结构简介的更多相关文章
- (转)Ubuntu 17.04_64上搭建巡风扫描系统(资产信息漏洞扫描内网神器)
巡风简介 巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表.其主体分为两部分:网络资产识别 ...
- 巡风配置安装 –centOS6.5
巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...
- 巡风扫描器安装-windows部署
巡风是一款适用于企业内网的漏洞快速应急,巡航扫描系统. 作者github地址 https://github.com/ysrc/xunfeng 一.环境安装 1,安装Python解释器 https:// ...
- CentOS下部署巡风步骤详解
本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...
- 巡风扫描器web界面工作流程
这两周学习了巡风扫描器的搭建,也在学长的带领下看了各部分的下源代码,为了加深记忆,梳理一下巡风大体的工作流程,主要通过web端的页面分析,错误的地方还请大佬们多多指正. 整体看一下巡风的扫描流程:登陆 ...
- 巡风视图函数源码学习--view.py
记录一下巡风扫描器view.py这个脚本里的视图函数的学习,直接在代码里面做的注释,里面有一些print 代码是为了把数据打印出来小白我自己加的,勿怪勿怪.可能存在一些理解错误和不到位的地方,希望大佬 ...
- 【转】Android bluetooth介绍(二): android blueZ蓝牙代码架构及其uart 到rfcomm流程
原文网址:http://blog.sina.com.cn/s/blog_602c72c50102uzoj.html 关键词:蓝牙blueZ UART HCI_UART H4 HCI L2CAP ...
- 巡风安装配置 -windows
巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...
- Libvirt代码架构
Libvirt介绍 参考资料 Libvirt学习 通过virsh了解libvirt api的调用方式 通过virHypervisorDriver了解libvirt api的实现 virsh代码阅读 通 ...
随机推荐
- 【大数据笔记】白话详解Zookeeper的一致性
下面内容主要摘抄于<<Hadoop实战>>,红色高亮部分是本人添加的白话注释. Zookeeper 是一种高性能.可扩展的服务. Zookeeper 的读写速度非常快,并且读的 ...
- java-基于JavaMail的Java邮件发送
1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送
- MongoDB C Driver Building on Windows
一.编译mongodb c driver: 需要先安装OpenSSL:(参见:http://bbs.aircheng.com/read-2222-1) 步骤:(MongoDB步) 1.下载Active ...
- jQuery数组处理详解(转)
1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~). 回调函数拥有两 ...
- hdu 4463 Outlets
#include<bits/stdc++.h> using namespace std; double x[100+5],y[100+5]; double e[100+5][100+5]; ...
- QButtonGroup:按钮类的非可视化容器,默认可实现按钮的子类实例的单选。
QButtonGroup The QButtonGroup class provides a container to organize groups of button widgets. QButt ...
- C++字符串转化为数字的库函数
原文链接:http://blog.csdn.net/tsinfeng/article/details/5844838 1.atoi 功 能:把一字符串转换为整数 用 法:int atoi(const ...
- html文档流和事件流
文档流: 标准文档流,float position: relative.absolute.fixed可以脱离标准文档流: 回归标准文档流: https://blog.csdn.net/Welkin_q ...
- Oracle查询优化-插入、更新与删除
--插入.更新与删除 --1.插入新纪录 --1.1.建立测试表 DROP TABLE TEST; CREATE TABLE TEST( C1 ) DEFAULT '默认1', C2 ) DEFAUL ...
- js openwindow
进入许多网站时,有弹出式小窗口,它们五花八门,使我们捉摸不透下面就来介绍用JS制作9种制作弹出小窗口: 1.最基本的弹出窗口代码 其实代码非常简单: < SCRI ...