首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >celerystalk网络安全扫描与渗透测试自动化系统分析

celerystalk网络安全扫描与渗透测试自动化系统分析

作者头像
qife122
发布2025-06-16 08:34:29
发布2025-06-16 08:34:29
2650
举报

#### **1. 系统架构**

该系统是一个基于 **celery** 和 **redis** 的分布式任务调度与执行框架,主要用于网络安全扫描和渗透测试任务的管理与自动化。系统架构包括以下核心组件:

- **任务调度与执行层**:使用 celery 作为任务队列和分布式任务执行框架,Redis 作为消息代理和结果存储。

- **数据库层**:使用 SQLite 作为本地数据库,存储任务状态、扫描结果、主机信息、服务信息等。

- **任务管理层**:通过命令行工具和 Python 脚本管理任务的提交、暂停、取消、恢复等操作。

- **扫描工具集成层**:集成多种网络安全扫描工具(如 Nmap、Aquatone、Sublist3r、Photon 等),支持自动化扫描和结果解析。

- **报告生成层**:支持生成 HTML 格式的报告,包含扫描结果、截图、服务信息等。

#### **2. 主要功能模块**

- **任务管理**:

  - 支持任务的提交、暂停、取消、恢复等操作。

  - 通过 celery 实现任务的分布式执行和状态跟踪。

  - 任务状态存储在 SQLite 数据库中,包括任务 ID、命令、状态、运行时间等。

- **扫描工具集成**:

  - 支持多种扫描工具(如 Nmap、Aquatone、Sublist3r、Photon 等)的集成和自动化调用。

  - 支持通过配置文件(`config.ini`)动态加载扫描工具的命令和参数。

- **主机与服务管理**:

  - 支持主机(IP 或域名)的导入、范围定义、状态管理(如是否在扫描范围内)。

  - 支持服务(端口、协议、服务名称等)的自动发现和存储。

- **报告生成**:

  - 支持生成 HTML 格式的报告,包含扫描结果、截图、服务信息等。

  - 支持通过 Aquatone 生成截图和可视化报告。

- **备份与恢复**:

  - 支持工作空间的备份与恢复,备份内容包括数据库和扫描结果文件。

#### **3. 核心技术点**

- **celery**:用于任务队列管理和分布式任务执行。

- **redis**:作为消息代理和结果存储,支持任务状态的实时更新。

- **SQLite**:用于存储任务状态、主机信息、服务信息等。

- **Nmap**:用于端口扫描和服务发现。

- **Aquatone**:用于生成截图和可视化报告。

- **Sublist3r 和 Photon**:用于子域名枚举和 URL 路径发现。

- **HTML 报告生成**:通过 Python 脚本生成动态 HTML 报告,支持截图展示和路径导航。

#### **4. 应用场景**

- **网络安全扫描**:

  - 自动化执行端口扫描、服务发现、子域名枚举等任务。

  - 支持大规模网络的分布式扫描。

- **渗透测试**:

  - 自动化执行渗透测试任务,如漏洞扫描、路径枚举、截图生成等。

  - 支持任务的暂停、恢复和取消,方便渗透测试人员灵活管理任务。

- **报告生成与展示**:

  - 生成详细的 HTML 报告,包含扫描结果、截图、服务信息等。

  - 支持通过浏览器查看报告,方便团队协作和结果分享。

- **工作空间管理**:

  - 支持多工作空间的创建、备份和恢复,方便管理不同的扫描任务和结果。

### **核心代码分析**

以下是部分核心代码的功能说明:

#### **1. 任务管理**

- **任务提交**:

代码语言:javascript
复制
  def create_task(command_name, populated_command, ip, output_dir, workspace, task_id):
      db_task = (task_id, 1, command_name, populated_command, ip, output_dir, 'SUBMITTED', workspace)
      db.create_task(db_task)  
  //该函数用于创建任务并将其提交到 celery 任务队列。

- **任务状态更新**:

代码语言:javascript
复制
  def update_task_status_started(status, task_id, pid, start_time):
      CUR.execute("UPDATE tasks SET status=?,pid=?,start_time=? WHERE task_id=?", (status, pid, start_time, task_id))
      CONNECTION.commit()
  //该函数用于更新任务的状态(如开始、完成、失败等)。

#### **2. 扫描工具集成**

- **Nmap 扫描**:

代码语言:javascript
复制
  def nmap_scan(hosts, output_dir):
      nm = NmapProcess(hosts, options="-sC -sV -Pn -p1-65535")
      rc = nm.run()
      nmap_report = NmapParser.parse(nm.stdout)
      return nmap_report
  // 该函数用于执行 Nmap 扫描并解析扫描结果。

- **Aquatone 截图生成**:

代码语言:javascript
复制
  def aquatone_all_paths(workspace, simulation=None, config_file=None):
      paths = lib.db.get_all_paths_exclude_404(workspace)
      if len(paths) > 0:
          populated_command = "celerystalk db paths_only limit | aquatone -out " + outdir
          p = Popen(populated_command, shell=True)
          p.communicate()
  //该函数用于调用 Aquatone 生成截图和可视化报告。 

#### **3. 报告生成**

- **HTML 报告生成**:

代码语言:javascript
复制
  def populate_report_head():
      web_head = """<!DOCTYPE html><html><head>..."""
      return web_head
  //该函数用于生成 HTML 报告的头部内容。

### **总结**

该系统是一个功能强大的网络安全扫描与渗透测试自动化工具,具有以下特点:

- **分布式任务管理**:通过 celery 和 Redis 实现任务的分布式执行和状态跟踪。

- **灵活的扫描工具集成**:支持多种扫描工具的集成和自动化调用。

- **详细的报告生成**:支持生成 HTML 格式的报告,包含扫描结果、截图、服务信息等。

- **易用的命令行工具**:通过命令行工具管理任务、工作空间和报告生成。

适用于网络安全团队、渗透测试人员以及需要自动化扫描和报告生成的企业用户。

github链接地址:https://github.com/sethsec/celerystalk.git

文末附有功能展示图

图片
图片
图片
图片
图片
图片
图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全技术点滴分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档