根据以下方案生成对应的产品:好的,根据您的澄清,“AI Hacker Agent”在用户交互层面,尤其是其核心的“规划Agent”和“人工确认/编辑”部分,是一个AI对话框或智能会话界面。这意味着用户可以通过自然语言与系统进行交互,提出攻防演练需求,并对AI生成的规划进行审查和修改。 我将更新原PRD中的相关部分,以体现这一重要特性。 产品需求文档 (PRD) - AI Hacker Agent 智能攻防演练平台 (更新版) 引言 1.1 文档目的 本文档旨在详细描述 AI Hacker Agent 智能攻防演练平台的产品需求、功能范围、用户体验和非功能性要求。它将作为产品、研发、测试和设计团队的参考依据,指导产品的开发与实现。特别地,本次更新明确了核心“AI Hacker Agent”模块的用户交互方式将以AI对话框的形式呈现,提供更为直观和智能的人机协作体验。 1.2 产品背景 随着网络攻击的日益复杂化和自动化,传统的人工渗透测试和攻防演练面临效率低下、覆盖不足等挑战。本平台旨在通过结合 AI 技术和自动化能力,构建一个智能化的攻防演练系统,实现攻击剧本的智能生成、攻击过程的自动化执行、攻击效果的实时验证以及防守响应的分析总结。通过引入AI对话框作为核心交互方式,进一步降低用户操作门槛,提升用户体验,使得安全专家能够更自然、更高效地与AI协作。 1.3 产品愿景 构建一个自主学习、持续迭代的智能攻防演练平台,赋能企业实现常态化、体系化的红蓝对抗能力,有效发现并修复安全漏洞,提升安全防护韧性。通过智能化的对话交互,使得平台能够更好地理解用户意图,并提供更加定制化、智能化的攻防演练服务。 1.4 目标用户 安全分析师/安全专家 (Security Analyst/Expert): 主要使用者,通过AI对话框进行交互,负责配置剧本、审查攻击计划、分析报告。 渗透测试工程师 (Penetration Tester): 利用平台进行自动化测试,提高工作效率。 红队成员 (Red Team Member): 进行模拟攻击演练。 蓝队成员 (Blue Team Member): 分析平台输出的防御响应信息,改进防御策略。 安全管理员 (Security Administrator): 监控平台运行状态,管理资产和剧本。 产品目标与范围 2.1 业务目标 提高攻防演练的自动化程度和效率。 通过AI对话框,提供更自然、更智能的人机交互体验。 通过 AI 赋能,提升攻击路径规划的智能化水平。 提供全面的攻击效果验证和防守响应分析。 降低人工攻防演练的成本和复杂性。 常态化发现并修复企业内部潜在的安全风险。 2.2 产品范围 本产品将覆盖从攻击剧本管理、智能规划、自动化执行、效果验证、报告生成到数据解读的全生命周期。 2.3 核心功能概览 智能攻击剧本管理: 提供剧本的配置、编辑、调试及智能生成能力。 AI 驱动的攻击规划 (通过AI对话框交互): 基于AI智能规划攻击路径和任务,并通过对话框呈现和交互。 人机协作与确认 (通过AI对话框交互): 关键环节提供人工审查与干预机制,通过对话形式完成。 多类型资产自动化攻击: 支持对主机、邮件、边界等多种类型资产的自动化渗透。 攻击验证与对抗分析: 实时验证攻击效果,并分析防守方的响应。 可视化报告与数据解读: 生成专业报告,并提供智能化的数据分析与解读。 数据集成与资产管理: 整合内外部安全数据,统一管理目标资产信息。 功能需求 (Functional Requirements) 3.1 模块1: Prompt 攻击剧本配置库 描述: 管理和配置用于智能攻防演练的各类攻击剧本。 FR-1.1 剧本管理: FR-1.1.1 剧本创建与编辑: 用户能够通过界面创建、编辑和保存攻击剧本。 FR-1.1.2 剧本调试: 提供剧本调试功能,确保剧本逻辑正确和有效性,调试后可保存。 FR-1.1.3 剧本分类: 支持将剧本分类为“全链路剧本”、“主机巡检剧本”、“边界巡检剧本”、“邮件剧本”等,方便查找和管理。 FR-1.1.4 剧本版本控制: 支持剧本的版本管理,可回溯历史版本。 FR-1.1.5 剧本导入/导出: 支持剧本的导入和导出功能。 3.2 模块2: AI Hacker Agent 核心引擎 (主要交互通过AI对话框实现) 描述: 平台的核心逻辑处理单元,负责攻击规划、任务分发、执行、对抗和总结。此模块与用户的交互将主要通过一个AI对话框界面进行,模拟人类对话,实现更自然高效的人机协作。 FR-2.1 AI Hacker Agent 对话交互界面: FR-2.1.1 对话输入: 用户可以通过自然语言在对话框中输入攻击目标、演练类型、特定约束或初始Prompt,作为规划Agent的输入。 FR-2.1.2 对话输出: 规划Agent生成的攻击计划、任务详情、疑问或需要用户确认的信息将以对话形式返回给用户。 FR-2.1.3 多轮对话支持: 支持多轮对话,允许用户逐步细化需求、澄清疑问或进行多次修改和确认。 FR-2.1.4 上下文理解: AI对话框能够理解对话上下文,并根据历史对话内容进行智能响应。 FR-2.2 攻击规划 Agent (集成于AI对话框后端): FR-2.2.1 智能路径规划: 根据AI对话框中接收到的用户需求和目标资产信息,智能分析并规划出可行的攻击路径和任务序列。 FR-2.2.2 剧本解析与分解: 能够解析复杂剧本,将其分解为可执行的原子任务。 FR-2.2.3 情报适配: 能够结合实时情报数据,调整攻击规划。 FR-2.2.4 规划呈现: 将生成的攻击计划以清晰、易懂的对话形式呈现给用户,可能包括图示或概览。 FR-2.3 人工确认/编辑 (通过AI对话框完成): FR-2.3.1 对话式审查与确认: 用户可以在AI对话框中审查规划Agent生成的攻击计划,并通过自然语言进行确认或提出修改意见。 FR-2.3.2 对话式修改与调整: 允许用户通过对话方式对攻击计划的局部或整体进行调整、修改或补充,AI根据用户指令进行重新规划或微调。 FR-2.3.3 审批与推进: 确认后的攻击计划通过对话框触发进入下一步执行阶段。 FR-2.4 Agent Router (任务分发): FR-2.4.1 任务调度: 根据AI对话框确认的攻击计划,将任务分发给相应的攻击执行Agent。 FR-2.4.2 并发与优先级管理: 支持多任务并发执行,并可配置任务优先级。 FR-2.5 攻击执行 Agent (Attack Execution Agent): FR-2.5.1 多类型执行能力: 生产主机巡检Agent:负责对生产环境主机进行漏洞扫描和渗透。 办公主机巡检:负责对办公环境主机进行安全检查。 邮件巡检:负责模拟邮件钓鱼、附件投递等攻击。 边界巡检:负责对网络边界设备、服务进行扫描和渗透。 全链路巡检:负责模拟完整的攻击链条,贯穿多个环节。 FR-2.5.2 任务执行与状态反馈: 实时执行接收到的攻击任务,并向核心引擎反馈执行状态(成功/失败/进行中)。 FR-2.5.3 数据采集: 攻击执行过程中,自动采集攻击结果数据,如漏洞发现、成功渗透的证据等。 FR-2.6 攻击对抗 Agent (Attack Confrontation Agent): FR-2.6.1 攻击验证: 接收攻击执行Agent的输出结果,自动验证攻击是否成功,例如通过Shell执行、文件创建、数据外传等方式验证。 FR-2.6.2 防守信息分析: 能够分析防守方的响应(如WAF告警、IDS拦截、终端防护阻断等),判断防守措施的有效性。 FR-2.6.3 失败反馈与迭代 (通过AI对话框提示): 若攻击失败,将失败信息反馈给规划Agent,并通过AI对话框向用户提示失败原因,促使规划Agent迭代生成新的攻击任务(形成自适应循环)。 FR-2.6.4 攻击步骤记录: 记录详细的攻击执行步骤和关键事件。 FR-2.7 演练总结 Agent (Exercise Summary Agent): FR-2.7.1 演练总结: 汇总攻击执行和对抗验证的结果,对整个演练过程进行总结。 FR-2.7.2 可视化报告生成: 基于演练数据,自动生成结构化、可视化的攻防演练报告。报告内容包括攻击路径、漏洞发现、攻击成功率、防守响应情况等。 FR-2.7.3 防守响应信息采集: 收集并整理防守响应的详细信息,为后续防御改进提供依据。 3.3 模块3: 攻击任务列表 描述: 展示和管理所有历史及进行中的攻击任务。 FR-3.1 任务列表展示: 提供界面展示所有攻击任务,包括“全链路演练任务”、“生产主机”、“边界巡检”、“办公主机”、“邮件巡检”等类型。 FR-3.2 任务状态: 清晰展示每个任务的当前状态(待启动、进行中、已完成、失败等)。 FR-3.3 任务详情查看: 用户可点击任务查看详细执行进度、结果摘要。 FR-3.4 任务创建: 允许用户手动创建攻击任务(除了Agent自动创建的任务)。 3.4 模块4: 攻击数据解读 描述: 对攻防演练的结果数据进行深度分析和智能解读。 FR-4.1 总结报告生成: 自动生成完整、专业的总结报告,涵盖攻防演练的各个方面。 FR-4.2 情况分析与要点提取: 对演练过程中发现的威胁、漏洞和防守弱点进行智能分析,提取关键要点和建议。 FR-4.3 Chat 对话解读: 提供基于自然语言处理的交互式解读功能,用户可以通过对话方式查询演练结果,获取更深层次的洞察。 FR-4.4 结果推送: 支持将报告和关键结果通过邮件、IM等方式推送到指定接收人。 3.5 模块5: MCP Tools (管理控制平台工具) 描述: 提供平台管理、剧本调用、资产选择和Agent管理等辅助工具。 FR-5.1 剧本调用: 用户可在界面上直接选择和调用已有的攻击剧本发起演练。 FR-5.2 资产选择: 提供资产选择器,用户可指定攻击目标资产(如特定主机、IP段、应用等)。 FR-5.3 垂类巡检管理: 支持对特定垂类巡检(主机、邮件、边界)进行配置和管理。 FR-5.4 新 Agent 管理: 允许系统管理员注册和管理新的攻击 Agent,如“浏览器/远程shell执行”等,以扩展攻击能力。 FR-5.5 攻击任务创建: 提供用户界面,允许用户通过MCP Tools手动创建攻击任务。 3.6 模块6: 数据管理与集成 描述: 负责平台所需数据的存储、管理和外部数据集成。 FR-6.1 攻击剧本库 (5): FR-6.1.1 DLP 剧本: 存储数据防泄漏相关的攻击剧本。 FR-6.1.2 ATT&CK 攻击剧本: 存储基于 MITRE ATT&CK 框架的攻击剧本。 FR-6.1.3 攻击剧本生成 Agent: 具备根据用户输入或历史数据智能生成新攻击剧本的能力。 FR-6.2 资产库 (Asset Library): FR-6.2.1 人员信息数据: 存储与攻防演练相关的人员信息。 FR-6.2.2 设备库 (Mac/Win): 存储企业内部 Mac/Windows 设备信息。 FR-6.2.2 应用数据: 存储企业应用系统信息(URL、端口、版本等)。 FR-6.2.4 IP 数据: 存储 IP 地址资产信息。 FR-6.2.5 RASP 部署率: 记录应用程序运行时自我保护(RASP)的部署情况。 FR-6.2.6 ATP 版本: 记录高级威胁防护(ATP)系统的版本信息。 FR-6.3 外部引入数据: FR-6.3.1 云亮心跳: 集成外部云安全平台的实时心跳数据。 FR-6.3.2 其他外部威胁情报/漏洞库: 支持集成其他外部安全数据源。 FR-6.4 数据采集: FR-6.4.1 攻击结果: 集中存储所有攻击执行Agent产出的攻击结果数据。 FR-6.4.2 攻击返回详情: 存储攻击过程中返回的详细信息和日志。 FR-6.4.3 防守响应信息: 存储防守方(如安全设备、安全团队)的响应数据。 非功能性需求 (Non-Functional Requirements) 4.1 性能 (Performance) 响应时间: 核心操作(如攻击规划生成、任务分发)应在秒级响应。AI对话框的响应时间应低于2秒,以保证流畅的交互体验。 并发能力: 平台应支持同时执行多个攻击任务,且不影响整体性能。 吞吐量: 能够处理大量数据采集和报告生成任务。 4.2 安全性 (Security) 权限管理: 严格的用户角色和权限控制,确保数据和操作的隔离。 数据加密: 敏感数据(如攻击剧本内容、资产信息、对话内容)在存储和传输过程中应加密。 审计日志: 记录所有关键操作和系统事件,便于溯源和审计,包括AI对话框中的关键交互。 沙箱机制: 攻击执行Agent应具备沙箱机制,防止攻击行为对生产环境造成不可控影响。 4.3 可用性 (Usability) 用户界面 (UI): 直观、简洁、易于操作的图形用户界面,AI对话框界面应符合主流对话式AI产品的设计规范,提供良好的视觉和交互反馈。 用户体验 (UX): 提供流畅的工作流,减少用户操作路径。AI对话框应能够智能引导用户,降低操作复杂性,提升人机协作效率。 帮助文档: 提供清晰的用户手册和在线帮助。 4.4 可靠性 (Reliability) 容错性: 系统应具备良好的容错机制,单个模块故障不影响整体系统运行。 数据备份与恢复: 定期进行数据备份,并提供快速恢复机制。 稳定性: 系统长时间稳定运行,故障率低。 4.5 可扩展性 (Scalability) 模块化设计: 系统采用模块化设计,方便新增功能和Agent。 Agent 扩展: 能够方便地接入新的攻击 Agent 类型。 数据存储扩展: 支持存储容量的水平扩展。 AI能力扩展: 能够方便地集成新的AI模型或自然语言处理能力,以提升对话交互的智能性。 4.6 可维护性 (Maintainability) 代码规范: 遵循统一的代码开发规范。 日志系统: 完善的日志系统,方便故障排查和性能监控。 配置管理: 灵活的配置管理,支持运行时调整。 4.7 兼容性 (Compatibility) 浏览器兼容: 支持主流现代浏览器。 操作系统兼容: 攻击Agent应能兼容主流操作系统(Windows, Linux, macOS)。 数据接口兼容: 提供标准API接口,方便与第三方系统集成。 技术架构概述 (Architecture Overview) (本PRD基于架构图生成,此处仅为对架构图的简要描述,详细架构设计将在技术设计文档中体现) 本平台采用分布式 Agent 架构,以 AI Hacker Agent 为核心,实现攻击规划、执行、验证和总结的自动化流程。 Prompt 攻击剧本配置库: 集中管理各类攻击剧本。 AI Hacker Agent: 核心交互层,通过AI对话框作为用户与规划Agent、人工确认/编辑的主要接口。 规划 Agent: 基于 AI 智能生成攻击路径。 人工确认/编辑: 人机协作的审查环节,通过对话形式进行。 Agent Router: 负责任务分发。 攻击执行 Agent 集群: 包括生产主机、办公主机、邮件、边界和全链路等多种类型的执行 Agent,部署在目标环境附近,进行实际攻击操作。 攻击对抗 Agent: 负责攻击效果的验证和防守方响应的分析。 演练总结 Agent: 生成可视化报告和总结。 数据层: 包含攻击剧本库、资产库和外部引入数据,为 Agent 提供数据支撑,并收集攻击结果、防御响应等数据。 MCP Tools: 提供用户操作界面和管理功能。 攻击任务列表 & 攻击数据解读: 提供任务监控、报告展示和智能分析能力。 附录 术语表: (待补充,如Agent, Prompt, RASP, ATP, NLU等) 参考文档: (如相关行业标准、技术规范等) - Initial Deployment
Browse files- README.md +7 -5
- index.html +766 -19
- prompts.txt +1 -0
README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
+
title: bas555
|
| 3 |
+
emoji: 🐳
|
| 4 |
+
colorFrom: gray
|
| 5 |
+
colorTo: pink
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite
|
| 10 |
---
|
| 11 |
|
| 12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
index.html
CHANGED
|
@@ -1,19 +1,766 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>AI Hacker Agent - Intelligent Cyber Attack Simulation</title>
|
| 7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 9 |
+
<style>
|
| 10 |
+
/* Custom CSS for animations and special effects */
|
| 11 |
+
.chat-message-enter {
|
| 12 |
+
opacity: 0;
|
| 13 |
+
transform: translateY(10px);
|
| 14 |
+
}
|
| 15 |
+
.chat-message-enter-active {
|
| 16 |
+
opacity: 1;
|
| 17 |
+
transform: translateY(0);
|
| 18 |
+
transition: opacity 300ms, transform 300ms;
|
| 19 |
+
}
|
| 20 |
+
.attack-path {
|
| 21 |
+
stroke-dasharray: 1000;
|
| 22 |
+
stroke-dashoffset: 1000;
|
| 23 |
+
animation: dash 2s linear forwards;
|
| 24 |
+
}
|
| 25 |
+
@keyframes dash {
|
| 26 |
+
to {
|
| 27 |
+
stroke-dashoffset: 0;
|
| 28 |
+
}
|
| 29 |
+
}
|
| 30 |
+
.glowing-border {
|
| 31 |
+
animation: pulse 2s infinite;
|
| 32 |
+
}
|
| 33 |
+
@keyframes pulse {
|
| 34 |
+
0%, 100% {
|
| 35 |
+
box-shadow: 0 0 5px rgba(59, 130, 246, 0.5);
|
| 36 |
+
}
|
| 37 |
+
50% {
|
| 38 |
+
box-shadow: 0 0 15px rgba(59, 130, 246, 0.8);
|
| 39 |
+
}
|
| 40 |
+
}
|
| 41 |
+
.attack-animation {
|
| 42 |
+
animation: attackPulse 1.5s infinite;
|
| 43 |
+
}
|
| 44 |
+
@keyframes attackPulse {
|
| 45 |
+
0%, 100% {
|
| 46 |
+
transform: scale(1);
|
| 47 |
+
box-shadow: 0 0 5px rgba(220, 38, 38, 0.5);
|
| 48 |
+
}
|
| 49 |
+
50% {
|
| 50 |
+
transform: scale(1.05);
|
| 51 |
+
box-shadow: 0 0 15px rgba(220, 38, 38, 0.8);
|
| 52 |
+
}
|
| 53 |
+
}
|
| 54 |
+
.rotate-icon {
|
| 55 |
+
animation: spin 2s linear infinite;
|
| 56 |
+
}
|
| 57 |
+
@keyframes spin {
|
| 58 |
+
from {
|
| 59 |
+
transform: rotate(0deg);
|
| 60 |
+
}
|
| 61 |
+
to {
|
| 62 |
+
transform: rotate(360deg);
|
| 63 |
+
}
|
| 64 |
+
}
|
| 65 |
+
.terminal-font {
|
| 66 |
+
font-family: 'Courier New', monospace;
|
| 67 |
+
}
|
| 68 |
+
</style>
|
| 69 |
+
</head>
|
| 70 |
+
<body class="bg-gray-900 text-gray-100">
|
| 71 |
+
<!-- Main Container -->
|
| 72 |
+
<div class="flex flex-col h-screen">
|
| 73 |
+
<!-- Header -->
|
| 74 |
+
<header class="bg-gray-800 border-b border-gray-700 p-4 flex items-center justify-between">
|
| 75 |
+
<div class="flex items-center space-x-3">
|
| 76 |
+
<div class="bg-blue-500 p-2 rounded-full">
|
| 77 |
+
<i class="fas fa-robot text-white text-xl"></i>
|
| 78 |
+
</div>
|
| 79 |
+
<h1 class="text-2xl font-bold">AI Hacker Agent</h1>
|
| 80 |
+
<span class="px-2 py-1 bg-green-600 rounded-md text-xs font-semibold">v2.0</span>
|
| 81 |
+
</div>
|
| 82 |
+
<div class="flex items-center space-x-4">
|
| 83 |
+
<div class="relative group">
|
| 84 |
+
<button class="p-2 rounded-full hover:bg-gray-700">
|
| 85 |
+
<i class="fas fa-bell text-gray-400"></i>
|
| 86 |
+
<span class="absolute top-0 right-0 w-2 h-2 bg-red-500 rounded-full"></span>
|
| 87 |
+
</button>
|
| 88 |
+
<div class="hidden group-hover:block absolute right-0 mt-2 w-64 bg-gray-800 border border-gray-700 rounded-md shadow-lg z-10">
|
| 89 |
+
<div class="p-3 border-b border-gray-700">
|
| 90 |
+
<p class="text-sm font-semibold">3 New Alerts</p>
|
| 91 |
+
</div>
|
| 92 |
+
<div class="p-3 text-sm">
|
| 93 |
+
<p class="mb-2"><span class="text-red-400">[Critical]</span> Unauthorized access detected</p>
|
| 94 |
+
<p class="mb-2"><span class="text-yellow-400">[Warning]</span> New CVE-2023-1234 found</p>
|
| 95 |
+
<p><span class="text-blue-400">[Info]</span> System update available</p>
|
| 96 |
+
</div>
|
| 97 |
+
</div>
|
| 98 |
+
</div>
|
| 99 |
+
<div class="flex items-center space-x-2 cursor-pointer">
|
| 100 |
+
<div class="w-8 h-8 rounded-full bg-blue-600 flex items-center justify-center">
|
| 101 |
+
<span class="font-semibold">SA</span>
|
| 102 |
+
</div>
|
| 103 |
+
<span class="text-sm">Security Admin</span>
|
| 104 |
+
</div>
|
| 105 |
+
</div>
|
| 106 |
+
</header>
|
| 107 |
+
|
| 108 |
+
<!-- Main Content -->
|
| 109 |
+
<div class="flex flex-1 overflow-hidden">
|
| 110 |
+
<!-- Sidebar -->
|
| 111 |
+
<aside class="w-64 bg-gray-800 border-r border-gray-700 flex flex-col">
|
| 112 |
+
<div class="p-4 border-b border-gray-700">
|
| 113 |
+
<h2 class="text-lg font-semibold">Navigation</h2>
|
| 114 |
+
</div>
|
| 115 |
+
<nav class="flex-1 overflow-y-auto">
|
| 116 |
+
<ul>
|
| 117 |
+
<li>
|
| 118 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700 text-blue-400">
|
| 119 |
+
<i class="fas fa-comment-dots mr-3"></i>
|
| 120 |
+
<span>AI Dialog</span>
|
| 121 |
+
</a>
|
| 122 |
+
</li>
|
| 123 |
+
<li>
|
| 124 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700">
|
| 125 |
+
<i class="fas fa-scroll mr-3"></i>
|
| 126 |
+
<span>Attack Scripts</span>
|
| 127 |
+
</a>
|
| 128 |
+
</li>
|
| 129 |
+
<li>
|
| 130 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700">
|
| 131 |
+
<i class="fas fa-list-check mr-3"></i>
|
| 132 |
+
<span>Task List</span>
|
| 133 |
+
</a>
|
| 134 |
+
</li>
|
| 135 |
+
<li>
|
| 136 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700">
|
| 137 |
+
<i class="fas fa-chart-pie mr-3"></i>
|
| 138 |
+
<span>Data Analysis</span>
|
| 139 |
+
</a>
|
| 140 |
+
</li>
|
| 141 |
+
<li>
|
| 142 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700">
|
| 143 |
+
<i class="fas fa-building-shield mr-3"></i>
|
| 144 |
+
<span>Asset Management</span>
|
| 145 |
+
</a>
|
| 146 |
+
</li>
|
| 147 |
+
<li>
|
| 148 |
+
<a href="#" class="flex items-center p-3 hover:bg-gray-700">
|
| 149 |
+
<i class="fas fa-toolbox mr-3"></i>
|
| 150 |
+
<span>MCP Tools</span>
|
| 151 |
+
</a>
|
| 152 |
+
</li>
|
| 153 |
+
</ul>
|
| 154 |
+
</nav>
|
| 155 |
+
<div class="p-4 border-t border-gray-700">
|
| 156 |
+
<div class="bg-gray-900 rounded-lg p-3">
|
| 157 |
+
<div class="flex items-center">
|
| 158 |
+
<div class="w-10 h-10 rounded-full bg-purple-600 flex items-center justify-center mr-3">
|
| 159 |
+
<i class="fas fa-shield-halved"></i>
|
| 160 |
+
</div>
|
| 161 |
+
<div>
|
| 162 |
+
<h4 class="font-medium text-sm">System Status</h4>
|
| 163 |
+
<div class="flex items-center">
|
| 164 |
+
<div class="w-2 h-2 rounded-full bg-green-500 mr-2"></div>
|
| 165 |
+
<span class="text-xs">All systems operational</span>
|
| 166 |
+
</div>
|
| 167 |
+
</div>
|
| 168 |
+
</div>
|
| 169 |
+
</div>
|
| 170 |
+
</div>
|
| 171 |
+
</aside>
|
| 172 |
+
|
| 173 |
+
<!-- Main Panel -->
|
| 174 |
+
<main class="flex-1 flex flex-col overflow-hidden bg-gray-900">
|
| 175 |
+
<!-- Task Header -->
|
| 176 |
+
<div class="p-4 border-b border-gray-700 flex items-center justify-between">
|
| 177 |
+
<div>
|
| 178 |
+
<h2 class="text-xl font-bold">AI Dialog Interface</h2>
|
| 179 |
+
<p class="text-sm text-gray-400">Natural language interaction with AI Hacker Agent</p>
|
| 180 |
+
</div>
|
| 181 |
+
<div>
|
| 182 |
+
<button class="px-4 py-2 bg-blue-600 hover:bg-blue-700 rounded-md mr-2">
|
| 183 |
+
<i class="fas fa-plus mr-2"></i> New Attack Simulation
|
| 184 |
+
</button>
|
| 185 |
+
<button class="px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-md">
|
| 186 |
+
<i class="fas fa-question mr-2"></i> Help
|
| 187 |
+
</button>
|
| 188 |
+
</div>
|
| 189 |
+
</div>
|
| 190 |
+
|
| 191 |
+
<!-- Main Content Area -->
|
| 192 |
+
<div class="flex-1 flex overflow-hidden">
|
| 193 |
+
<!-- Left Panel - Chat Interface -->
|
| 194 |
+
<div class="w-1/2 border-r border-gray-700 flex flex-col">
|
| 195 |
+
<!-- Chat Header -->
|
| 196 |
+
<div class="p-4 border-b border-gray-700 flex items-center">
|
| 197 |
+
<div class="relative">
|
| 198 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex items-center justify-center mr-3">
|
| 199 |
+
<i class="fas fa-robot text-white"></i>
|
| 200 |
+
</div>
|
| 201 |
+
<span class="absolute -bottom-1 -right-1 w-3 h-3 bg-green-500 rounded-full border-2 border-gray-800"></span>
|
| 202 |
+
</div>
|
| 203 |
+
<div>
|
| 204 |
+
<h3 class="font-semibold">AI Hacker Agent</h3>
|
| 205 |
+
<p class="text-xs text-gray-400">Online - Ready to assist</p>
|
| 206 |
+
</div>
|
| 207 |
+
</div>
|
| 208 |
+
|
| 209 |
+
<!-- Chat Messages -->
|
| 210 |
+
<div id="chat-messages" class="flex-1 overflow-y-auto p-4 space-y-4">
|
| 211 |
+
<!-- AI Welcome Message -->
|
| 212 |
+
<div class="flex animate-[chat-message-enter_0.3s_ease-out]">
|
| 213 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex-shrink-0 flex items-center justify-center mr-3">
|
| 214 |
+
<i class="fas fa-robot text-white"></i>
|
| 215 |
+
</div>
|
| 216 |
+
<div>
|
| 217 |
+
<div class="bg-gray-800 rounded-lg p-3 max-w-[80%]">
|
| 218 |
+
<p>Welcome to AI Hacker Agent v2.0. I'm your AI assistant for intelligent cyber attack simulations.</p>
|
| 219 |
+
<p class="mt-2">How can I help you with your security testing today? Here are some examples:</p>
|
| 220 |
+
<ul class="list-disc pl-5 mt-2 space-y-1 text-blue-300">
|
| 221 |
+
<li>"Perform a full network penetration test"</li>
|
| 222 |
+
<li>"Check for SQL injection vulnerabilities"</li>
|
| 223 |
+
<li>"Simulate a phishing email campaign"</li>
|
| 224 |
+
</ul>
|
| 225 |
+
</div>
|
| 226 |
+
<div class="text-xs text-gray-500 mt-1">Today at 10:02 AM</div>
|
| 227 |
+
</div>
|
| 228 |
+
</div>
|
| 229 |
+
|
| 230 |
+
<!-- User Example Message -->
|
| 231 |
+
<div class="flex justify-end animate-[chat-message-enter_0.3s_ease-out]">
|
| 232 |
+
<div>
|
| 233 |
+
<div class="bg-blue-600 rounded-lg p-3 max-w-[80%] ml-auto">
|
| 234 |
+
<p>I want to simulate an advanced persistent threat against our web applications and internal network.</p>
|
| 235 |
+
</div>
|
| 236 |
+
<div class="text-xs text-gray-500 mt-1 text-right">Today at 10:03 AM</div>
|
| 237 |
+
</div>
|
| 238 |
+
</div>
|
| 239 |
+
|
| 240 |
+
<!-- AI Response -->
|
| 241 |
+
<div class="flex animate-[chat-message-enter_0.3s_ease-out]">
|
| 242 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex-shrink-0 flex items-center justify-center mr-3">
|
| 243 |
+
<i class="fas fa-robot text-white"></i>
|
| 244 |
+
</div>
|
| 245 |
+
<div>
|
| 246 |
+
<div class="bg-gray-800 rounded-lg p-3 max-w-[80%]">
|
| 247 |
+
<p class="font-medium mb-2">I've generated an attack simulation plan targeting web applications and internal networks:</p>
|
| 248 |
+
|
| 249 |
+
<div class="bg-gray-900 rounded-md p-3 mb-3 border border-gray-700">
|
| 250 |
+
<h4 class="font-semibold text-blue-300 text-sm mb-1">Attack Simulation Plan</h4>
|
| 251 |
+
<ol class="list-decimal pl-5 space-y-1 text-sm">
|
| 252 |
+
<li>Web Application Scanning (SQLi, XSS, RCE)</li>
|
| 253 |
+
<li>Credential Stuffing via Exposed APIs</li>
|
| 254 |
+
<li>Lateral Movement via SMB/AD Exploits</li>
|
| 255 |
+
<li>Data Exfiltration Simulation</li>
|
| 256 |
+
</ol>
|
| 257 |
+
<div class="flex space-x-2 mt-3">
|
| 258 |
+
<button class="text-xs px-2 py-1 bg-green-600 hover:bg-green-700 rounded">
|
| 259 |
+
<i class="fas fa-check mr-1"></i> Approve
|
| 260 |
+
</button>
|
| 261 |
+
<button class="text-xs px-2 py-1 bg-blue-600 hover:bg-blue-700 rounded" onclick="showEditOptions()">
|
| 262 |
+
<i class="fas fa-pen mr-1"></i> Edit
|
| 263 |
+
</button>
|
| 264 |
+
<button class="text-xs px-2 py-1 bg-red-600 hover:bg-red-700 rounded">
|
| 265 |
+
<i class="fas fa-times mr-1"></i> Reject
|
| 266 |
+
</button>
|
| 267 |
+
</div>
|
| 268 |
+
</div>
|
| 269 |
+
|
| 270 |
+
<p>Would you like me to proceed with this plan or make adjustments?</p>
|
| 271 |
+
</div>
|
| 272 |
+
<div class="text-xs text-gray-500 mt-1">Today at 10:03 AM</div>
|
| 273 |
+
</div>
|
| 274 |
+
</div>
|
| 275 |
+
</div>
|
| 276 |
+
|
| 277 |
+
<!-- Input Area -->
|
| 278 |
+
<div class="p-4 border-t border-gray-700">
|
| 279 |
+
<div class="flex items-center space-x-2">
|
| 280 |
+
<button class="p-2 rounded-full hover:bg-gray-700">
|
| 281 |
+
<i class="fas fa-paperclip text-gray-400"></i>
|
| 282 |
+
</button>
|
| 283 |
+
<div class="flex-1 relative">
|
| 284 |
+
<input type="text" id="chat-input" placeholder="Type your message or attack request..."
|
| 285 |
+
class="w-full bg-gray-800 rounded-full py-3 px-4 pr-10 focus:outline-none focus:ring-2 focus:ring-blue-500">
|
| 286 |
+
<button class="absolute right-3 top-3 text-gray-400 hover:text-blue-400">
|
| 287 |
+
<i class="far fa-smile"></i>
|
| 288 |
+
</button>
|
| 289 |
+
</div>
|
| 290 |
+
<button id="send-button" class="p-3 rounded-full bg-blue-600 hover:bg-blue-700">
|
| 291 |
+
<i class="fas fa-paper-plane"></i>
|
| 292 |
+
</button>
|
| 293 |
+
</div>
|
| 294 |
+
<div class="mt-2 text-xs text-gray-500 flex justify-between">
|
| 295 |
+
<div>
|
| 296 |
+
<span class="cursor-pointer hover:text-blue-400"><i class="fas fa-magic mr-1"></i> AI Suggestions</span>
|
| 297 |
+
<span class="mx-2">|</span>
|
| 298 |
+
<span class="cursor-pointer hover:text-blue-400"><i class="fas fa-history mr-1"></i> History</span>
|
| 299 |
+
</div>
|
| 300 |
+
<div>
|
| 301 |
+
<span class="cursor-pointer hover:text-blue-400">Advanced Options</span>
|
| 302 |
+
</div>
|
| 303 |
+
</div>
|
| 304 |
+
</div>
|
| 305 |
+
</div>
|
| 306 |
+
|
| 307 |
+
<!-- Right Panel - Attack Visualization -->
|
| 308 |
+
<div class="w-1/2 flex flex-col bg-gray-800">
|
| 309 |
+
<!-- Attack Visualization Header -->
|
| 310 |
+
<div class="p-4 border-b border-gray-700 flex justify-between items-center">
|
| 311 |
+
<h3 class="font-semibold">Attack Simulation Dashboard</h3>
|
| 312 |
+
<div class="flex space-x-2">
|
| 313 |
+
<button class="p-2 rounded hover:bg-gray-700 text-sm">
|
| 314 |
+
<i class="fas fa-sync-alt mr-1"></i> Refresh
|
| 315 |
+
</button>
|
| 316 |
+
<button class="p-2 rounded hover:bg-gray-700 text-sm">
|
| 317 |
+
<i class="fas fa-sliders-h mr-1"></i> Filters
|
| 318 |
+
</button>
|
| 319 |
+
</div>
|
| 320 |
+
</div>
|
| 321 |
+
|
| 322 |
+
<!-- Attack Strategy Visualization -->
|
| 323 |
+
<div class="p-4 border-b border-gray-700">
|
| 324 |
+
<h4 class="font-medium text-sm mb-3 flex items-center">
|
| 325 |
+
<i class="fas fa-project-diagram mr-2 text-blue-400"></i>
|
| 326 |
+
Planned Attack Path
|
| 327 |
+
</h4>
|
| 328 |
+
<div class="relative overflow-auto bg-gray-900 rounded-lg p-4 h-48 flex items-center justify-center glowing-border">
|
| 329 |
+
<svg width="100%" height="100%" viewBox="0 0 400 160" class="min-w-[400px]">
|
| 330 |
+
<!-- Web Server -->
|
| 331 |
+
<rect x="10" y="50" width="80" height="60" rx="5" fill="none" stroke="#3B82F6" stroke-width="2" class="attack-animation" />
|
| 332 |
+
<text x="50" y="90" text-anchor="middle" fill="#fff" font-size="12" font-family="Arial">Web App</text>
|
| 333 |
+
|
| 334 |
+
<!-- First Arrow -->
|
| 335 |
+
<path d="M100,80 L130,80" stroke="#3B82F6" stroke-width="2" marker-end="url(#arrowhead)" class="attack-path" />
|
| 336 |
+
|
| 337 |
+
<!-- API Gateway -->
|
| 338 |
+
<rect x="140" y="50" width="80" height="60" rx="5" fill="none" stroke="#3B82F6" stroke-width="2" />
|
| 339 |
+
<text x="180" y="90" text-anchor="middle" fill="#fff" font-size="12" font-family="Arial">API</text>
|
| 340 |
+
|
| 341 |
+
<!-- Second Arrow -->
|
| 342 |
+
<path d="M230,80 L260,80" stroke="#3B82F6" stroke-width="2" marker-end="url(#arrowhead)" class="attack-path" />
|
| 343 |
+
|
| 344 |
+
<!-- Database -->
|
| 345 |
+
<rect x="270" y="50" width="80" height="60" rx="5" fill="none" stroke="#3B82F6" stroke-width="2" />
|
| 346 |
+
<text x="310" y="90" text-anchor="middle" fill="#fff" font-size="12" font-family="Arial">Database</text>
|
| 347 |
+
|
| 348 |
+
<!-- Arrowhead definition -->
|
| 349 |
+
<defs>
|
| 350 |
+
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
| 351 |
+
<polygon points="0 0, 10 3.5, 0 7" fill="#3B82F6"/>
|
| 352 |
+
</marker>
|
| 353 |
+
</defs>
|
| 354 |
+
</svg>
|
| 355 |
+
</div>
|
| 356 |
+
</div>
|
| 357 |
+
|
| 358 |
+
<!-- Attack Execution Status -->
|
| 359 |
+
<div class="p-4 border-b border-gray-700">
|
| 360 |
+
<h4 class="font-medium text-sm mb-3 flex items-center">
|
| 361 |
+
<i class="fas fa-tasks mr-2 text-green-400"></i>
|
| 362 |
+
Current Task Status
|
| 363 |
+
</h4>
|
| 364 |
+
<div class="space-y-3">
|
| 365 |
+
<div class="flex items-center justify-between">
|
| 366 |
+
<div class="flex items-center">
|
| 367 |
+
<div class="w-3 h-3 rounded-full bg-yellow-400 mr-2 animate-pulse"></div>
|
| 368 |
+
<span class="text-sm">Web Application Scanning</span>
|
| 369 |
+
</div>
|
| 370 |
+
<span class="text-xs bg-gray-700 px-2 py-1 rounded">In Progress</span>
|
| 371 |
+
</div>
|
| 372 |
+
<div class="flex items-center justify-between">
|
| 373 |
+
<div class="flex items-center">
|
| 374 |
+
<div class="w-3 h-3 rounded-full bg-gray-500 mr-2"></div>
|
| 375 |
+
<span class="text-sm text-gray-400">Credential Stuffing</span>
|
| 376 |
+
</div>
|
| 377 |
+
<span class="text-xs bg-gray-700 px-2 py-1 rounded">Pending</span>
|
| 378 |
+
</div>
|
| 379 |
+
<div class="flex items-center justify-between">
|
| 380 |
+
<div class="flex items-center">
|
| 381 |
+
<div class="w-3 h-3 rounded-full bg-gray-500 mr-2"></div>
|
| 382 |
+
<span class="text-sm text-gray-400">Lateral Movement</span>
|
| 383 |
+
</div>
|
| 384 |
+
<span class="text-xs bg-gray-700 px-2 py-1 rounded">Pending</span>
|
| 385 |
+
</div>
|
| 386 |
+
<div class="flex items-center justify-between">
|
| 387 |
+
<div class="flex items-center">
|
| 388 |
+
<div class="w-3 h-3 rounded-full bg-gray-500 mr-2"></div>
|
| 389 |
+
<span class="text-sm text-gray-400">Data Exfiltration</span>
|
| 390 |
+
</div>
|
| 391 |
+
<span class="text-xs bg-gray-700 px-2 py-1 rounded">Pending</span>
|
| 392 |
+
</div>
|
| 393 |
+
</div>
|
| 394 |
+
</div>
|
| 395 |
+
|
| 396 |
+
<!-- Asset Details -->
|
| 397 |
+
<div class="p-4 border-b border-gray-700">
|
| 398 |
+
<h4 class="font-medium text-sm mb-3 flex items-center">
|
| 399 |
+
<i class="fas fa-server mr-2 text-purple-400"></i>
|
| 400 |
+
Targeted Assets
|
| 401 |
+
</h4>
|
| 402 |
+
<div class="grid grid-cols-2 gap-2 text-sm">
|
| 403 |
+
<div class="bg-gray-900 p-2 rounded border border-gray-700">
|
| 404 |
+
<div class="flex items-center">
|
| 405 |
+
<i class="fas fa-globe mr-2 text-blue-400"></i>
|
| 406 |
+
<span>Web Server (192.168.1.50)</span>
|
| 407 |
+
</div>
|
| 408 |
+
</div>
|
| 409 |
+
<div class="bg-gray-900 p-2 rounded border border-gray-700">
|
| 410 |
+
<div class="flex items-center">
|
| 411 |
+
<i class="fas fa-database mr-2 text-green-400"></i>
|
| 412 |
+
<span>PostgreSQL (192.168.1.51)</span>
|
| 413 |
+
</div>
|
| 414 |
+
</div>
|
| 415 |
+
<div class="bg-gray-900 p-2 rounded border border-gray-700">
|
| 416 |
+
<div class="flex items-center">
|
| 417 |
+
<i class="fas fa-network-wired mr-2 text-yellow-400"></i>
|
| 418 |
+
<span>Internal Network (/24)</span>
|
| 419 |
+
</div>
|
| 420 |
+
</div>
|
| 421 |
+
<div class="bg-gray-900 p-2 rounded border border-gray-700">
|
| 422 |
+
<div class="flex items-center">
|
| 423 |
+
<i class="fas fa-users mr-2 text-red-400"></i>
|
| 424 |
+
<span>Active Directory</span>
|
| 425 |
+
</div>
|
| 426 |
+
</div>
|
| 427 |
+
</div>
|
| 428 |
+
</div>
|
| 429 |
+
|
| 430 |
+
<!-- Quick Actions -->
|
| 431 |
+
<div class="p-4">
|
| 432 |
+
<h4 class="font-medium text-sm mb-3 flex items-center">
|
| 433 |
+
<i class="fas fa-bolt mr-2 text-yellow-400"></i>
|
| 434 |
+
Quick Actions
|
| 435 |
+
</h4>
|
| 436 |
+
<div class="grid grid-cols-3 gap-2">
|
| 437 |
+
<button class="bg-gray-700 hover:bg-gray-600 p-2 rounded-md text-xs">
|
| 438 |
+
<i class="fas fa-stop mr-1"></i> Stop
|
| 439 |
+
</button>
|
| 440 |
+
<button class="bg-blue-600 hover:bg-blue-700 p-2 rounded-md text-xs">
|
| 441 |
+
<i class="fas fa-pause mr-1"></i> Pause
|
| 442 |
+
</button>
|
| 443 |
+
<button class="bg-green-600 hover:bg-green-700 p-2 rounded-md text-xs">
|
| 444 |
+
<i class="fas fa-play mr-1"></i> Resume
|
| 445 |
+
</button>
|
| 446 |
+
<button class="bg-purple-600 hover:bg-purple-700 p-2 rounded-md text-xs">
|
| 447 |
+
<i class="fas fa-file-export mr-1"></i> Export
|
| 448 |
+
</button>
|
| 449 |
+
<button class="bg-yellow-600 hover:bg-yellow-700 p-2 rounded-md text-xs">
|
| 450 |
+
<i class="fas fa-stopwatch mr-1"></i> Schedule
|
| 451 |
+
</button>
|
| 452 |
+
<button class="bg-red-600 hover:bg-red-700 p-2 rounded-md text-xs">
|
| 453 |
+
<i class="fas fa-trash mr-1"></i> Delete
|
| 454 |
+
</button>
|
| 455 |
+
</div>
|
| 456 |
+
</div>
|
| 457 |
+
</div>
|
| 458 |
+
</div>
|
| 459 |
+
</main>
|
| 460 |
+
</div>
|
| 461 |
+
</div>
|
| 462 |
+
|
| 463 |
+
<!-- Edit Attack Plan Modal -->
|
| 464 |
+
<div id="edit-modal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden">
|
| 465 |
+
<div class="bg-gray-800 rounded-lg w-1/2 max-w-2xl">
|
| 466 |
+
<div class="p-4 border-b border-gray-700 flex justify-between items-center">
|
| 467 |
+
<h3 class="font-semibold">Edit Attack Simulation Plan</h3>
|
| 468 |
+
<button onclick="hideEditOptions()" class="text-gray-400 hover:text-white">
|
| 469 |
+
<i class="fas fa-times"></i>
|
| 470 |
+
</button>
|
| 471 |
+
</div>
|
| 472 |
+
<div class="p-4">
|
| 473 |
+
<div class="space-y-4">
|
| 474 |
+
<div class="bg-gray-900 p-3 rounded border border-gray-700">
|
| 475 |
+
<div class="flex items-center justify-between mb-2">
|
| 476 |
+
<h4 class="font-medium flex items-center">
|
| 477 |
+
<i class="fas fa-globe mr-2 text-blue-400"></i>
|
| 478 |
+
Web Application Scanning
|
| 479 |
+
</h4>
|
| 480 |
+
<label class="inline-flex items-center cursor-pointer">
|
| 481 |
+
<input type="checkbox" checked class="sr-only peer">
|
| 482 |
+
<div class="relative w-9 h-5 bg-gray-700 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-800 rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-blue-600"></div>
|
| 483 |
+
</label>
|
| 484 |
+
</div>
|
| 485 |
+
<div class="pl-8">
|
| 486 |
+
<div class="flex items-center mb-1">
|
| 487 |
+
<input id="web-sqli" type="checkbox" checked class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 488 |
+
<label for="web-sqli" class="ms-2 text-sm">SQL Injection</label>
|
| 489 |
+
</div>
|
| 490 |
+
<div class="flex items-center mb-1">
|
| 491 |
+
<input id="web-xss" type="checkbox" checked class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 492 |
+
<label for="web-xss" class="ms-2 text-sm">Cross-Site Scripting (XSS)</label>
|
| 493 |
+
</div>
|
| 494 |
+
<div class="flex items-center">
|
| 495 |
+
<input id="web-rce" type="checkbox" checked class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 496 |
+
<label for="web-rce" class="ms-2 text-sm">Remote Code Execution</label>
|
| 497 |
+
</div>
|
| 498 |
+
</div>
|
| 499 |
+
</div>
|
| 500 |
+
|
| 501 |
+
<div class="bg-gray-900 p-3 rounded border border-gray-700">
|
| 502 |
+
<div class="flex items-center justify-between mb-2">
|
| 503 |
+
<h4 class="font-medium flex items-center">
|
| 504 |
+
<i class="fas fa-key mr-2 text-green-400"></i>
|
| 505 |
+
Credential Stuffing
|
| 506 |
+
</h4>
|
| 507 |
+
<label class="inline-flex items-center cursor-pointer">
|
| 508 |
+
<input type="checkbox" checked class="sr-only peer">
|
| 509 |
+
<div class="relative w-9 h-5 bg-gray-700 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-800 rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-blue-600"></div>
|
| 510 |
+
</label>
|
| 511 |
+
</div>
|
| 512 |
+
<div class="pl-8">
|
| 513 |
+
<div class="mb-2">
|
| 514 |
+
<label class="block text-sm mb-1">Target API Endpoint</label>
|
| 515 |
+
<input type="text" value="/api/v1/login" class="bg-gray-800 border border-gray-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2">
|
| 516 |
+
</div>
|
| 517 |
+
<div class="flex items-center mb-1">
|
| 518 |
+
<input id="use-dictionary" type="checkbox" checked class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 519 |
+
<label for="use-dictionary" class="ms-2 text-sm">Use Dictionary Attack</label>
|
| 520 |
+
</div>
|
| 521 |
+
<div class="flex items-center">
|
| 522 |
+
<input id="use-cred-stuffing" type="checkbox" class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 523 |
+
<label for="use-cred-stuffing" class="ms-2 text-sm">Use Known Credentials</label>
|
| 524 |
+
</div>
|
| 525 |
+
</div>
|
| 526 |
+
</div>
|
| 527 |
+
|
| 528 |
+
<div class="bg-gray-900 p-3 rounded border border-gray-700">
|
| 529 |
+
<div class="flex items-center justify-between mb-2">
|
| 530 |
+
<h4 class="font-medium flex items-center">
|
| 531 |
+
<i class="fas fa-arrows-alt mr-2 text-yellow-400"></i>
|
| 532 |
+
Lateral Movement
|
| 533 |
+
</h4>
|
| 534 |
+
<label class="inline-flex items-center cursor-pointer">
|
| 535 |
+
<input type="checkbox" checked class="sr-only peer">
|
| 536 |
+
<div class="relative w-9 h-5 bg-gray-700 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-800 rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-blue-600"></div>
|
| 537 |
+
</label>
|
| 538 |
+
</div>
|
| 539 |
+
<div class="pl-8">
|
| 540 |
+
<div class="mb-2">
|
| 541 |
+
<label class="block text-sm mb-1">Target Protocol</label>
|
| 542 |
+
<select class="bg-gray-800 border border-gray-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2">
|
| 543 |
+
<option selected>SMB</option>
|
| 544 |
+
<option>RDP</option>
|
| 545 |
+
<option>Active Directory</option>
|
| 546 |
+
</select>
|
| 547 |
+
</div>
|
| 548 |
+
<div class="flex items-center mb-1">
|
| 549 |
+
<input id="detect-defenses" type="checkbox" checked class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 550 |
+
<label for="detect-defenses" class="ms-2 text-sm">Detect Defensive Measures</label>
|
| 551 |
+
</div>
|
| 552 |
+
</div>
|
| 553 |
+
</div>
|
| 554 |
+
|
| 555 |
+
<div class="bg-gray-900 p-3 rounded border border-gray-700">
|
| 556 |
+
<div class="flex items-center justify-between mb-2">
|
| 557 |
+
<h4 class="font-medium flex items-center">
|
| 558 |
+
<i class="fas fa-file-export mr-2 text-red-400"></i>
|
| 559 |
+
Data Exfiltration
|
| 560 |
+
</h4>
|
| 561 |
+
<label class="inline-flex items-center cursor-pointer">
|
| 562 |
+
<input type="checkbox" checked class="sr-only peer">
|
| 563 |
+
<div class="relative w-9 h-5 bg-gray-700 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-800 rounded-full peer peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-blue-600"></div>
|
| 564 |
+
</label>
|
| 565 |
+
</div>
|
| 566 |
+
<div class="pl-8">
|
| 567 |
+
<div class="mb-2">
|
| 568 |
+
<label class="block text-sm mb-1">Exfiltration Method</label>
|
| 569 |
+
<select class="bg-gray-800 border border-gray-700 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2">
|
| 570 |
+
<option selected>DNS Tunneling</option>
|
| 571 |
+
<option>HTTP POST</option>
|
| 572 |
+
<option>ICMP</option>
|
| 573 |
+
</select>
|
| 574 |
+
</div>
|
| 575 |
+
<div class="flex items-center">
|
| 576 |
+
<input id="size-limit" type="checkbox" class="w-4 h-4 text-blue-600 bg-gray-700 border-gray-600 rounded focus:ring-blue-500">
|
| 577 |
+
<label for="size-limit" class="ms-2 text-sm">Limit Data Size (1MB)</label>
|
| 578 |
+
</div>
|
| 579 |
+
</div>
|
| 580 |
+
</div>
|
| 581 |
+
</div>
|
| 582 |
+
</div>
|
| 583 |
+
<div class="p-4 border-t border-gray-700 flex justify-end space-x-3">
|
| 584 |
+
<button onclick="hideEditOptions()" class="px-4 py-2 bg-gray-700 hover:bg-gray-600 rounded-md">
|
| 585 |
+
Cancel
|
| 586 |
+
</button>
|
| 587 |
+
<button onclick="saveEditedPlan()" class="px-4 py-2 bg-green-600 hover:bg-green-700 rounded-md">
|
| 588 |
+
<i class="fas fa-save mr-2"></i> Save Changes
|
| 589 |
+
</button>
|
| 590 |
+
</div>
|
| 591 |
+
</div>
|
| 592 |
+
</div>
|
| 593 |
+
|
| 594 |
+
<script>
|
| 595 |
+
// Function to show edit modal
|
| 596 |
+
function showEditOptions() {
|
| 597 |
+
document.getElementById('edit-modal').classList.remove('hidden');
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
// Function to hide edit modal
|
| 601 |
+
function hideEditOptions() {
|
| 602 |
+
document.getElementById('edit-modal').classList.add('hidden');
|
| 603 |
+
}
|
| 604 |
+
|
| 605 |
+
// Function to save edited plan
|
| 606 |
+
function saveEditedPlan() {
|
| 607 |
+
// In a real app, this would send data to the backend
|
| 608 |
+
hideEditOptions();
|
| 609 |
+
|
| 610 |
+
// Add a message to the chat
|
| 611 |
+
const chatMessages = document.getElementById('chat-messages');
|
| 612 |
+
const newMessage = document.createElement('div');
|
| 613 |
+
newMessage.className = 'flex justify-end animate-[chat-message-enter_0.3s_ease-out]';
|
| 614 |
+
newMessage.innerHTML = `
|
| 615 |
+
<div>
|
| 616 |
+
<div class="bg-blue-600 rounded-lg p-3 max-w-[80%] ml-auto">
|
| 617 |
+
<p>I've reviewed and edited the attack plan. Please proceed with these adjustments.</p>
|
| 618 |
+
</div>
|
| 619 |
+
<div class="text-xs text-gray-500 mt-1 text-right">Just now</div>
|
| 620 |
+
</div>
|
| 621 |
+
`;
|
| 622 |
+
chatMessages.appendChild(newMessage);
|
| 623 |
+
|
| 624 |
+
// Scroll to bottom
|
| 625 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
| 626 |
+
|
| 627 |
+
// Simulate AI response
|
| 628 |
+
setTimeout(() => {
|
| 629 |
+
const aiResponse = document.createElement('div');
|
| 630 |
+
aiResponse.className = 'flex animate-[chat-message-enter_0.3s_ease-out]';
|
| 631 |
+
aiResponse.innerHTML = `
|
| 632 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex-shrink-0 flex items-center justify-center mr-3">
|
| 633 |
+
<i class="fas fa-robot text-white"></i>
|
| 634 |
+
</div>
|
| 635 |
+
<div>
|
| 636 |
+
<div class="bg-gray-800 rounded-lg p-3 max-w-[80%]">
|
| 637 |
+
<p class="font-medium mb-1">Thank you for your adjustments. I'll update the attack simulation plan accordingly.</p>
|
| 638 |
+
<div class="flex space-x-2 mt-2">
|
| 639 |
+
<button class="text-xs px-2 py-1 bg-green-600 hover:bg-green-700 rounded">
|
| 640 |
+
<i class="fas fa-play mr-1"></i> Start Simulation
|
| 641 |
+
</button>
|
| 642 |
+
<button class="text-xs px-2 py-1 bg-blue-600 hover:bg-blue-700 rounded">
|
| 643 |
+
<i class="fas fa-eye mr-1"></i> Preview Changes
|
| 644 |
+
</button>
|
| 645 |
+
</div>
|
| 646 |
+
</div>
|
| 647 |
+
<div class="text-xs text-gray-500 mt-1">Just now</div>
|
| 648 |
+
</div>
|
| 649 |
+
`;
|
| 650 |
+
chatMessages.appendChild(aiResponse);
|
| 651 |
+
|
| 652 |
+
// Scroll to bottom
|
| 653 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
| 654 |
+
}, 1500);
|
| 655 |
+
}
|
| 656 |
+
|
| 657 |
+
// Handle send button click
|
| 658 |
+
document.getElementById('send-button').addEventListener('click', function() {
|
| 659 |
+
const input = document.getElementById('chat-input');
|
| 660 |
+
const message = input.value.trim();
|
| 661 |
+
|
| 662 |
+
if (message) {
|
| 663 |
+
const chatMessages = document.getElementById('chat-messages');
|
| 664 |
+
|
| 665 |
+
// Add user message
|
| 666 |
+
const userMessage = document.createElement('div');
|
| 667 |
+
userMessage.className = 'flex justify-end animate-[chat-message-enter_0.3s_ease-out]';
|
| 668 |
+
userMessage.innerHTML = `
|
| 669 |
+
<div>
|
| 670 |
+
<div class="bg-blue-600 rounded-lg p-3 max-w-[80%] ml-auto">
|
| 671 |
+
<p>${message}</p>
|
| 672 |
+
</div>
|
| 673 |
+
<div class="text-xs text-gray-500 mt-1 text-right">Just now</div>
|
| 674 |
+
</div>
|
| 675 |
+
`;
|
| 676 |
+
chatMessages.appendChild(userMessage);
|
| 677 |
+
|
| 678 |
+
// Clear input
|
| 679 |
+
input.value = '';
|
| 680 |
+
|
| 681 |
+
// Scroll to bottom
|
| 682 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
| 683 |
+
|
| 684 |
+
// Simulate AI thinking
|
| 685 |
+
const thinkingDiv = document.createElement('div');
|
| 686 |
+
thinkingDiv.className = 'flex animate-[chat-message-enter_0.3s_ease-out]';
|
| 687 |
+
thinkingDiv.innerHTML = `
|
| 688 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex-shrink-0 flex items-center justify-center mr-3">
|
| 689 |
+
<i class="fas fa-robot text-white"></i>
|
| 690 |
+
</div>
|
| 691 |
+
<div>
|
| 692 |
+
<div class="bg-gray-800 rounded-lg p-3 max-w-[80%] flex items-center">
|
| 693 |
+
<div class="animate-pulse mr-2">AI is thinking</div>
|
| 694 |
+
<div class="flex space-x-1">
|
| 695 |
+
<div class="w-2 h-2 bg-gray-400 rounded-full animate-bounce"></div>
|
| 696 |
+
<div class="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style="animation-delay: 0.2s"></div>
|
| 697 |
+
<div class="w-2 h-2 bg-gray-400 rounded-full animate-bounce" style="animation-delay: 0.4s"></div>
|
| 698 |
+
</div>
|
| 699 |
+
</div>
|
| 700 |
+
</div>
|
| 701 |
+
`;
|
| 702 |
+
chatMessages.appendChild(thinkingDiv);
|
| 703 |
+
|
| 704 |
+
// Scroll to bottom again
|
| 705 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
| 706 |
+
|
| 707 |
+
// Simulate AI response after delay
|
| 708 |
+
setTimeout(() => {
|
| 709 |
+
// Remove thinking message
|
| 710 |
+
chatMessages.removeChild(thinkingDiv);
|
| 711 |
+
|
| 712 |
+
// Add AI response
|
| 713 |
+
const aiResponse = document.createElement('div');
|
| 714 |
+
aiResponse.className = 'flex animate-[chat-message-enter_0.3s_ease-out]';
|
| 715 |
+
aiResponse.innerHTML = `
|
| 716 |
+
<div class="w-8 h-8 rounded-full bg-blue-500 flex-shrink-0 flex items-center justify-center mr-3">
|
| 717 |
+
<i class="fas fa-robot text-white"></i>
|
| 718 |
+
</div>
|
| 719 |
+
<div>
|
| 720 |
+
<div class="bg-gray-800 rounded-lg p-3 max-w-[80%]">
|
| 721 |
+
<p class="font-medium mb-2">I've analyzed your request and prepared a detailed attack simulation plan:</p>
|
| 722 |
+
|
| 723 |
+
<div class="bg-gray-900 rounded-md p-3 mb-3 border border-gray-700">
|
| 724 |
+
<h4 class="font-semibold text-blue-300 text-sm mb-1">Attack Simulation Plan</h4>
|
| 725 |
+
<ol class="list-decimal pl-5 space-y-1 text-sm">
|
| 726 |
+
<li>Initial Reconnaissance (Port Scanning)</li>
|
| 727 |
+
<li>Vulnerability Assessment</li>
|
| 728 |
+
<li>Exploitation Attempts</li>
|
| 729 |
+
<li>Post-Exploitation Activities</li>
|
| 730 |
+
<li>Data Collection & Exfiltration</li>
|
| 731 |
+
</ol>
|
| 732 |
+
<div class="flex space-x-2 mt-3">
|
| 733 |
+
<button class="text-xs px-2 py-1 bg-green-600 hover:bg-green-700 rounded">
|
| 734 |
+
<i class="fas fa-check mr-1"></i> Approve
|
| 735 |
+
</button>
|
| 736 |
+
<button class="text-xs px-2 py-1 bg-blue-600 hover:bg-blue-700 rounded" onclick="showEditOptions()">
|
| 737 |
+
<i class="fas fa-pen mr-1"></i> Edit
|
| 738 |
+
</button>
|
| 739 |
+
<button class="text-xs px-2 py-1 bg-red-600 hover:bg-red-700 rounded">
|
| 740 |
+
<i class="fas fa-times mr-1"></i> Reject
|
| 741 |
+
</button>
|
| 742 |
+
</div>
|
| 743 |
+
</div>
|
| 744 |
+
|
| 745 |
+
<p>Would you like me to proceed with this simulation?</p>
|
| 746 |
+
</div>
|
| 747 |
+
<div class="text-xs text-gray-500 mt-1">Just now</div>
|
| 748 |
+
</div>
|
| 749 |
+
`;
|
| 750 |
+
chatMessages.appendChild(aiResponse);
|
| 751 |
+
|
| 752 |
+
// Scroll to bottom
|
| 753 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
| 754 |
+
}, 2000);
|
| 755 |
+
}
|
| 756 |
+
});
|
| 757 |
+
|
| 758 |
+
// Handle Enter key in chat input
|
| 759 |
+
document.getElementById('chat-input').addEventListener('keypress', function(e) {
|
| 760 |
+
if (e.key === 'Enter') {
|
| 761 |
+
document.getElementById('send-button').click();
|
| 762 |
+
}
|
| 763 |
+
});
|
| 764 |
+
</script>
|
| 765 |
+
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=capta1n/bas555" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
|
| 766 |
+
</html>
|
prompts.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
根据以下方案生成对应的产品:好的,根据您的澄清,“AI Hacker Agent”在用户交互层面,尤其是其核心的“规划Agent”和“人工确认/编辑”部分,是一个AI对话框或智能会话界面。这意味着用户可以通过自然语言与系统进行交互,提出攻防演练需求,并对AI生成的规划进行审查和修改。 我将更新原PRD中的相关部分,以体现这一重要特性。 产品需求文档 (PRD) - AI Hacker Agent 智能攻防演练平台 (更新版) 引言 1.1 文档目的 本文档旨在详细描述 AI Hacker Agent 智能攻防演练平台的产品需求、功能范围、用户体验和非功能性要求。它将作为产品、研发、测试和设计团队的参考依据,指导产品的开发与实现。特别地,本次更新明确了核心“AI Hacker Agent”模块的用户交互方式将以AI对话框的形式呈现,提供更为直观和智能的人机协作体验。 1.2 产品背景 随着网络攻击的日益复杂化和自动化,传统的人工渗透测试和攻防演练面临效率低下、覆盖不足等挑战。本平台旨在通过结合 AI 技术和自动化能力,构建一个智能化的攻防演练系统,实现攻击剧本的智能生成、攻击过程的自动化执行、攻击效果的实时验证以及防守响应的分析总结。通过引入AI对话框作为核心交互方式,进一步降低用户操作门槛,提升用户体验,使得安全专家能够更自然、更高效地与AI协作。 1.3 产品愿景 构建一个自主学习、持续迭代的智能攻防演练平台,赋能企业实现常态化、体系化的红蓝对抗能力,有效发现并修复安全漏洞,提升安全防护韧性。通过智能化的对话交互,使得平台能够更好地理解用户意图,并提供更加定制化、智能化的攻防演练服务。 1.4 目标用户 安全分析师/安全专家 (Security Analyst/Expert): 主要使用者,通过AI对话框进行交互,负责配置剧本、审查攻击计划、分析报告。 渗透测试工程师 (Penetration Tester): 利用平台进行自动化测试,提高工作效率。 红队成员 (Red Team Member): 进行模拟攻击演练。 蓝队成员 (Blue Team Member): 分析平台输出的防御响应信息,改进防御策略。 安全管理员 (Security Administrator): 监控平台运行状态,管理资产和剧本。 产品目标与范围 2.1 业务目标 提高攻防演练的自动化程度和效率。 通过AI对话框,提供更自然、更智能的人机交互体验。 通过 AI 赋能,提升攻击路径规划的智能化水平。 提供全面的攻击效果验证和防守响应分析。 降低人工攻防演练的成本和复杂性。 常态化发现并修复企业内部潜在的安全风险。 2.2 产品范围 本产品将覆盖从攻击剧本管理、智能规划、自动化执行、效果验证、报告生成到数据解读的全生命周期。 2.3 核心功能概览 智能攻击剧本管理: 提供剧本的配置、编辑、调试及智能生成能力。 AI 驱动的攻击规划 (通过AI对话框交互): 基于AI智能规划攻击路径和任务,并通过对话框呈现和交互。 人机协作与确认 (通过AI对话框交互): 关键环节提供人工审查与干预机制,通过对话形式完成。 多类型资产自动化攻击: 支持对主机、邮件、边界等多种类型资产的自动化渗透。 攻击验证与对抗分析: 实时验证攻击效果,并分析防守方的响应。 可视化报告与数据解读: 生成专业报告,并提供智能化的数据分析与解读。 数据集成与资产管理: 整合内外部安全数据,统一管理目标资产信息。 功能需求 (Functional Requirements) 3.1 模块1: Prompt 攻击剧本配置库 描述: 管理和配置用于智能攻防演练的各类攻击剧本。 FR-1.1 剧本管理: FR-1.1.1 剧本创建与编辑: 用户能够通过界面创建、编辑和保存攻击剧本。 FR-1.1.2 剧本调试: 提供剧本调试功能,确保剧本逻辑正确和有效性,调试后可保存。 FR-1.1.3 剧本分类: 支持将剧本分类为“全链路剧本”、“主机巡检剧本”、“边界巡检剧本”、“邮件剧本”等,方便查找和管理。 FR-1.1.4 剧本版本控制: 支持剧本的版本管理,可回溯历史版本。 FR-1.1.5 剧本导入/导出: 支持剧本的导入和导出功能。 3.2 模块2: AI Hacker Agent 核心引擎 (主要交互通过AI对话框实现) 描述: 平台的核心逻辑处理单元,负责攻击规划、任务分发、执行、对抗和总结。此模块与用户的交互将主要通过一个AI对话框界面进行,模拟人类对话,实现更自然高效的人机协作。 FR-2.1 AI Hacker Agent 对话交互界面: FR-2.1.1 对话输入: 用户可以通过自然语言在对话框中输入攻击目标、演练类型、特定约束或初始Prompt,作为规划Agent的输入。 FR-2.1.2 对话输出: 规划Agent生成的攻击计划、任务详情、疑问或需要用户确认的信息将以对话形式返回给用户。 FR-2.1.3 多轮对话支持: 支持多轮对话,允许用户逐步细化需求、澄清疑问或进行多次修改和确认。 FR-2.1.4 上下文理解: AI对话框能够理解对话上下文,并根据历史对话内容进行智能响应。 FR-2.2 攻击规划 Agent (集成于AI对话框后端): FR-2.2.1 智能路径规划: 根据AI对话框中接收到的用户需求和目标资产信息,智能分析并规划出可行的攻击路径和任务序列。 FR-2.2.2 剧本解析与分解: 能够解析复杂剧本,将其分解为可执行的原子任务。 FR-2.2.3 情报适配: 能够结合实时情报数据,调整攻击规划。 FR-2.2.4 规划呈现: 将生成的攻击计划以清晰、易懂的对话形式呈现给用户,可能包括图示或概览。 FR-2.3 人工确认/编辑 (通过AI对话框完成): FR-2.3.1 对话式审查与确认: 用户可以在AI对话框中审查规划Agent生成的攻击计划,并通过自然语言进行确认或提出修改意见。 FR-2.3.2 对话式修改与调整: 允许用户通过对话方式对攻击计划的局部或整体进行调整、修改或补充,AI根据用户指令进行重新规划或微调。 FR-2.3.3 审批与推进: 确认后的攻击计划通过对话框触发进入下一步执行阶段。 FR-2.4 Agent Router (任务分发): FR-2.4.1 任务调度: 根据AI对话框确认的攻击计划,将任务分发给相应的攻击执行Agent。 FR-2.4.2 并发与优先级管理: 支持多任务并发执行,并可配置任务优先级。 FR-2.5 攻击执行 Agent (Attack Execution Agent): FR-2.5.1 多类型执行能力: 生产主机巡检Agent:负责对生产环境主机进行漏洞扫描和渗透。 办公主机巡检:负责对办公环境主机进行安全检查。 邮件巡检:负责模拟邮件钓鱼、附件投递等攻击。 边界巡检:负责对网络边界设备、服务进行扫描和渗透。 全链路巡检:负责模拟完整的攻击链条,贯穿多个环节。 FR-2.5.2 任务执行与状态反馈: 实时执行接收到的攻击任务,并向核心引擎反馈执行状态(成功/失败/进行中)。 FR-2.5.3 数据采集: 攻击执行过程中,自动采集攻击结果数据,如漏洞发现、成功渗透的证据等。 FR-2.6 攻击对抗 Agent (Attack Confrontation Agent): FR-2.6.1 攻击验证: 接收攻击执行Agent的输出结果,自动验证攻击是否成功,例如通过Shell执行、文件创建、数据外传等方式验证。 FR-2.6.2 防守信息分析: 能够分析防守方的响应(如WAF告警、IDS拦截、终端防护阻断等),判断防守措施的有效性。 FR-2.6.3 失败反馈与迭代 (通过AI对话框提示): 若攻击失败,将失败信息反馈给规划Agent,并通过AI对话框向用户提示失败原因,促使规划Agent迭代生成新的攻击任务(形成自适应循环)。 FR-2.6.4 攻击步骤记录: 记录详细的攻击执行步骤和关键事件。 FR-2.7 演练总结 Agent (Exercise Summary Agent): FR-2.7.1 演练总结: 汇总攻击执行和对抗验证的结果,对整个演练过程进行总结。 FR-2.7.2 可视化报告生成: 基于演练数据,自动生成结构化、可视化的攻防演练报告。报告内容包括攻击路径、漏洞发现、攻击成功率、防守响应情况等。 FR-2.7.3 防守响应信息采集: 收集并整理防守响应的详细信息,为后续防御改进提供依据。 3.3 模块3: 攻击任务列表 描述: 展示和管理所有历史及进行中的攻击任务。 FR-3.1 任务列表展示: 提供界面展示所有攻击任务,包括“全链路演练任务”、“生产主机”、“边界巡检”、“办公主机”、“邮件巡检”等类型。 FR-3.2 任务状态: 清晰展示每个任务的当前状态(待启动、进行中、已完成、失败等)。 FR-3.3 任务详情查看: 用户可点击任务查看详细执行进度、结果摘要。 FR-3.4 任务创建: 允许用户手动创建攻击任务(除了Agent自动创建的任务)。 3.4 模块4: 攻击数据解读 描述: 对攻防演练的结果数据进行深度分析和智能解读。 FR-4.1 总结报告生成: 自动生成完整、专业的总结报告,涵盖攻防演练的各个方面。 FR-4.2 情况分析与要点提取: 对演练过程中发现的威胁、漏洞和防守弱点进行智能分析,提取关键要点和建议。 FR-4.3 Chat 对话解读: 提供基于自然语言处理的交互式解读功能,用户可以通过对话方式查询演练结果,获取更深层次的洞察。 FR-4.4 结果推送: 支持将报告和关键结果通过邮件、IM等方式推送到指定接收人。 3.5 模块5: MCP Tools (管理控制平台工具) 描述: 提供平台管理、剧本调用、资产选择和Agent管理等辅助工具。 FR-5.1 剧本调用: 用户可在界面上直接选择和调用已有的攻击剧本发起演练。 FR-5.2 资产选择: 提供资产选择器,用户可指定攻击目标资产(如特定主机、IP段、应用等)。 FR-5.3 垂类巡检管理: 支持对特定垂类巡检(主机、邮件、边界)进行配置和管理。 FR-5.4 新 Agent 管理: 允许系统管理员注册和管理新的攻击 Agent,如“浏览器/远程shell执行”等,以扩展攻击能力。 FR-5.5 攻击任务创建: 提供用户界面,允许用户通过MCP Tools手动创建攻击任务。 3.6 模块6: 数据管理与集成 描述: 负责平台所需数据的存储、管理和外部数据集成。 FR-6.1 攻击剧本库 (5): FR-6.1.1 DLP 剧本: 存储数据防泄漏相关的攻击剧本。 FR-6.1.2 ATT&CK 攻击剧本: 存储基于 MITRE ATT&CK 框架的攻击剧本。 FR-6.1.3 攻击剧本生成 Agent: 具备根据用户输入或历史数据智能生成新攻击剧本的能力。 FR-6.2 资产库 (Asset Library): FR-6.2.1 人员信息数据: 存储与攻防演练相关的人员信息。 FR-6.2.2 设备库 (Mac/Win): 存储企业内部 Mac/Windows 设备信息。 FR-6.2.2 应用数据: 存储企业应用系统信息(URL、端口、版本等)。 FR-6.2.4 IP 数据: 存储 IP 地址资产信息。 FR-6.2.5 RASP 部署率: 记录应用程序运行时自我保护(RASP)的部署情况。 FR-6.2.6 ATP 版本: 记录高级威胁防护(ATP)系统的版本信息。 FR-6.3 外部引入数据: FR-6.3.1 云亮心跳: 集成外部云安全平台的实时心跳数据。 FR-6.3.2 其他外部威胁情报/漏洞库: 支持集成其他外部安全数据源。 FR-6.4 数据采集: FR-6.4.1 攻击结果: 集中存储所有攻击执行Agent产出的攻击结果数据。 FR-6.4.2 攻击返回详情: 存储攻击过程中返回的详细信息和日志。 FR-6.4.3 防守响应信息: 存储防守方(如安全设备、安全团队)的响应数据。 非功能性需求 (Non-Functional Requirements) 4.1 性能 (Performance) 响应时间: 核心操作(如攻击规划生成、任务分发)应在秒级响应。AI对话框的响应时间应低于2秒,以保证流畅的交互体验。 并发能力: 平台应支持同时执行多个攻击任务,且不影响整体性能。 吞吐量: 能够处理大量数据采集和报告生成任务。 4.2 安全性 (Security) 权限管理: 严格的用户角色和权限控制,确保数据和操作的隔离。 数据加密: 敏感数据(如攻击剧本内容、资产信息、对话内容)在存储和传输过程中应加密。 审计日志: 记录所有关键操作和系统事件,便于溯源和审计,包括AI对话框中的关键交互。 沙箱机制: 攻击执行Agent应具备沙箱机制,防止攻击行为对生产环境造成不可控影响。 4.3 可用性 (Usability) 用户界面 (UI): 直观、简洁、易于操作的图形用户界面,AI对话框界面应符合主流对话式AI产品的设计规范,提供良好的视觉和交互反馈。 用户体验 (UX): 提供流畅的工作流,减少用户操作路径。AI对话框应能够智能引导用户,降低操作复杂性,提升人机协作效率。 帮助文档: 提供清晰的用户手册和在线帮助。 4.4 可靠性 (Reliability) 容错性: 系统应具备良好的容错机制,单个模块故障不影响整体系统运行。 数据备份与恢复: 定期进行数据备份,并提供快速恢复机制。 稳定性: 系统长时间稳定运行,故障率低。 4.5 可扩展性 (Scalability) 模块化设计: 系统采用模块化设计,方便新增功能和Agent。 Agent 扩展: 能够方便地接入新的攻击 Agent 类型。 数据存储扩展: 支持存储容量的水平扩展。 AI能力扩展: 能够方便地集成新的AI模型或自然语言处理能力,以提升对话交互的智能性。 4.6 可维护性 (Maintainability) 代码规范: 遵循统一的代码开发规范。 日志系统: 完善的日志系统,方便故障排查和性能监控。 配置管理: 灵活的配置管理,支持运行时调整。 4.7 兼容性 (Compatibility) 浏览器兼容: 支持主流现代浏览器。 操作系统兼容: 攻击Agent应能兼容主流操作系统(Windows, Linux, macOS)。 数据接口兼容: 提供标准API接口,方便与第三方系统集成。 技术架构概述 (Architecture Overview) (本PRD基于架构图生成,此处仅为对架构图的简要描述,详细架构设计将在技术设计文档中体现) 本平台采用分布式 Agent 架构,以 AI Hacker Agent 为核心,实现攻击规划、执行、验证和总结的自动化流程。 Prompt 攻击剧本配置库: 集中管理各类攻击剧本。 AI Hacker Agent: 核心交互层,通过AI对话框作为用户与规划Agent、人工确认/编辑的主要接口。 规划 Agent: 基于 AI 智能生成攻击路径。 人工确认/编辑: 人机协作的审查环节,通过对话形式进行。 Agent Router: 负责任务分发。 攻击执行 Agent 集群: 包括生产主机、办公主机、邮件、边界和全链路等多种类型的执行 Agent,部署在目标环境附近,进行实际攻击操作。 攻击对抗 Agent: 负责攻击效果的验证和防守方响应的分析。 演练总结 Agent: 生成可视化报告和总结。 数据层: 包含攻击剧本库、资产库和外部引入数据,为 Agent 提供数据支撑,并收集攻击结果、防御响应等数据。 MCP Tools: 提供用户操作界面和管理功能。 攻击任务列表 & 攻击数据解读: 提供任务监控、报告展示和智能分析能力。 附录 术语表: (待补充,如Agent, Prompt, RASP, ATP, NLU等) 参考文档: (如相关行业标准、技术规范等)
|