一、巡风:

  巡风是一款什么东西,想必安全同行都不陌生吧。用它作为内网漏洞扫描管理架构是一种很好的选择,扫描快,开源,还可自己编写符合规则的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的项目文件结构简介的更多相关文章

  1. (转)Ubuntu 17.04_64上搭建巡风扫描系统(资产信息漏洞扫描内网神器)

    巡风简介 巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表.其主体分为两部分:网络资产识别 ...

  2. 巡风配置安装 –centOS6.5

    巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...

  3. 巡风扫描器安装-windows部署

    巡风是一款适用于企业内网的漏洞快速应急,巡航扫描系统. 作者github地址 https://github.com/ysrc/xunfeng 一.环境安装 1,安装Python解释器 https:// ...

  4. CentOS下部署巡风步骤详解

    本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...

  5. 巡风扫描器web界面工作流程

    这两周学习了巡风扫描器的搭建,也在学长的带领下看了各部分的下源代码,为了加深记忆,梳理一下巡风大体的工作流程,主要通过web端的页面分析,错误的地方还请大佬们多多指正. 整体看一下巡风的扫描流程:登陆 ...

  6. 巡风视图函数源码学习--view.py

    记录一下巡风扫描器view.py这个脚本里的视图函数的学习,直接在代码里面做的注释,里面有一些print 代码是为了把数据打印出来小白我自己加的,勿怪勿怪.可能存在一些理解错误和不到位的地方,希望大佬 ...

  7. 【转】Android bluetooth介绍(二): android blueZ蓝牙代码架构及其uart 到rfcomm流程

    原文网址:http://blog.sina.com.cn/s/blog_602c72c50102uzoj.html 关键词:蓝牙blueZ  UART  HCI_UART H4  HCI  L2CAP ...

  8. 巡风安装配置 -windows

    巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表. 其主体分为两部分:网络资产识别引擎,漏 ...

  9. Libvirt代码架构

    Libvirt介绍 参考资料 Libvirt学习 通过virsh了解libvirt api的调用方式 通过virHypervisorDriver了解libvirt api的实现 virsh代码阅读 通 ...

随机推荐

  1. pip安装的python扩展模块自定义目录

    根据系统不同: Windows是python目录下Lib\site-packages\: Linux是/usr/local/lib/python/dist-packages/.

  2. 查询一个字符串的子串出现的次数在sql中

    select name,char_length(name)-char_length(replace(name,'aaaaaa','')) from teacher; 将原来的字符串字段取出长度  将子 ...

  3. Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization”

    Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization” 虚拟机Vmware上克隆了一个Red ...

  4. SQL Server 查询分析器键盘快捷方式

    下表列出 SQL Server 查询分析器提供的所有键盘快捷方式. 活动 快捷方式 书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个 ...

  5. 每个Web开发者都应该知道的关于URL编码的知识

    本文首先阐述了人们关于统一资源定位符(URL)编码的普遍的误读,其后通过阐明HTTP场景下的URL encoding 来引出我们经常遇到的问题及其解决方案.本文并不特定于某类编程语言,我们在Java环 ...

  6. JSONObject、JSONArray

    最近两个星期接触最多的就是json和map了. 之前用到的json,就是一个键对应一个值,超级简单的一对一关系.现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个 ...

  7. am335x i2c分析

    /***************************************************************************** * am335x i2c分析 * i2c驱 ...

  8. JDK中的序列化和反序列化

    题外话:诸事缠身,不知不觉距离上一篇就将近一个月了,读书不易,学习不易,唯有坚持. 写来写去始终不满意,索性贴一个比较好的文章吧! 参考: [Java基础]序列化与反序列化深入分析

  9. MVC后台与前台交互的问题。。。

    后台: viewbag.sb/*这是一个sb路径*/=@"\gao\shou"; 前台js: var sb='@viewbag.sb'; alert(sb); 结果就是gaocon ...

  10. (转)Spring开启Annotation<context:annotation-config> 和 <context:component-scan>诠释及区别

    转自:https://www.cnblogs.com/leiOOlei/p/3713989.html <context:annotation-config> 和 <context:c ...