前言

本文章主要讲解一款漏洞验证框架的构思,并未详解内部的实现细节,本文篇幅稍长,请耐心看。

需求

做一款漏洞扫描器,首先要了解该扫描需要达到的效果。它的需求什么?需要支持什么?

可能需求如下:

  • 跨平台运行,可以在Windows、Mac OS、Linux等操作系统运行或者使用 WEB 端控制
  • 自定义POC、EXP多语言支持,POC支持多种开发语言实现,例如支持 Java、python 等。
  • 多种运行方式,支持多线程、多进程、分布式运行等多种方式
  • 可视化,漏洞扫描框架通过可视化操作
  • 资产管理,通过探测结果的资产进行POC验证以及EXP利用
  • 。。。。。。

需求分析

上面简单明确了一些一款漏洞扫描器的需求,需求的实现最好根据需求选取适合的技术来进行实现。

跨平台运行

跨平台的开发语言有很多,例如C、C++、Java、Python、Go 等等。

开发语言的选择,需要根据框架需要满足的运行效率、开发效率等多种角度来进行考虑。

如果需要很高的运行效率以及开发效率高的情况下,可以选择使用 Java 或 Python 等语言,如果需要追求极高的效率可以使用 Go 语言。

Java

Java 程序实际是在 Java 虚拟机( JRE 是软件实现)中运行,Java 虚拟机类似一个模拟执行环境,在不同的操作系统上拥有不同的 Java 虚拟机实现,但是这些 Java 虚拟机遵循统一的规范来解释 class 文件,并将 class 文件中的指令转换为本地操作系统对应的指令,这样就实现了相同的 class 文件,可以通过 Java 虚拟机转换为对应操作系统上的对应指令,实现 class 文件,也就是 Java 程序的跨平台性。

Python

Python 是一门跨平台的脚本语言,Python 规定了一个 Python 语法规则,实现了 Python 语法的解释程序就成为了 Python 的解释器。

自定义 POC

自定义POC、EXP本质就是基于模版进行编写的POC,能够让扫描框架识别并且运行。模版的组成一般分为漏洞基本信息、POC验证信息、Exp利用信息。

多种运行方式

多种运行方式,支持多进程、多线程、分布式运行等方式。如果扫描器需要大规模的的扫描、探测建议使用分布式节点的方式进行操作。一般情况下,多线程、多进程可以满足大部分的需求。

一般分布式适用于大型的企业内网或大范围的扫描探测。

可视化

可视化技术的选型,目前有三种比较流行的方案。

第一种为使用语言自带的可视化编程模块(QT)进行开发可视化程序。

第二种为使用 Electronnw.js 进行开发可视化应用,其中比较有名的FOFA Pro 客户端GoBy中国蚁剑等就是基于此方案进行开发的, Electron 的官网有很多基于此框架开发的程序。

点击收藏 | 2 关注 | 2
登录 后跟帖