HackBot - AI网络安全聊天机器人
_ _ _ ____ _
| | | | __ _ ___| | _| __ ) ___ | |_
| |_| |/ _` |/ __| |/ / _ \ / _ \| __| 作者: Morpheuslord
| _ | (_| | (__| <| |_) | (_) | |_ 使用的AI: Meta-LLama2
|_| |_|\__,_|\___|_|\_\____/ \___/ \__|
简介
欢迎使用HackBot,这是一个由AI驱动的网络安全聊天机器人,旨在为您的网络安全相关问题提供有用和准确的答案,还可以进行代码分析和扫描分析。无论您是安全研究员、道德黑客,还是对网络安全感兴趣的人,HackBot都能帮助您找到所需的信息。
HackBot通过"LlamaCpp"库使用强大的语言模型Meta-LLama2。这使HackBot能够以连贯和相关的方式回答您的问题。请确保用英语提问,并遵守提供的指南,以便从HackBot获得最佳结果。
特点
- 本地AI/Runpod部署支持: 我添加了一个选项,您可以轻松部署Hackbot聊天界面,并通过两种方式使用llama:
- 使用RunPod: 您可以使用runpod无服务器端点部署llama,并通过更改.env文件的
AI_OPTION
部分将它们连接到聊天机器人。对于Runpod,您需要使用RUNPOD
,对于本地Llama部署,使用LOCALLLAMA
。RUNPOD
和LOCALLLAMA
- 关键注意事项: 要使llama的runpod版本正常工作,您需要确保设置了
RUNPOD ID
和您的RUNPOD API密钥
。 - AI网络安全聊天: HackBot可以回答各种网络安全相关的查询,帮助您进行渗透测试、安全分析等。
- 交互式界面: 聊天机器人提供了一个交互式命令行界面,方便您与HackBot进行对话。
- 清晰输出: HackBot以格式良好的markdown呈现其响应,提供易读且有组织的答案。
- 静态代码分析: 利用提供的扫描数据或日志文件进行静态代码分析。它在不执行代码的情况下彻底检查源代码,识别潜在的漏洞、编码错误和安全问题。
- 漏洞分析: 使用提供的扫描数据或日志文件执行全面的漏洞分析。它识别和评估目标系统或网络中存在的安全弱点、配置错误和潜在漏洞。
外观展示
使用Llama
使用LLama2是目前最好的离线和免费选择之一。它目前正在改进中,我正在研究一个能更好地将网络安全视角融入AI的提示。 我要感谢**@thisserand**和他的llama2_local仓库,以及他的YouTube视频YT_Video。它们是很好的资源。坦白说,llama2代码95%是他的,我只是提取了代码并为其添加了Flask API功能。
AI在离线和代码测试之外的准确性很高,与openai或bard相当,但在代码中遇到了一些问题,可能是因为提示等原因。我会尝试修复它。
速度取决于您的系统以及GPU和CPU配置。目前,它使用TheBloke/Llama-2-7B-Chat-GGML
模型,可以通过portscanner
和dnsrecon
文件更改。
目前,llama代码和扫描是分开处理的。经过几次测试,我发现llama需要一些训练才能按我预期的方式运作,所以需要一些时间。任何关于如何做到这一点的建议都可以添加到此仓库的讨论中讨论链接。目前,输出不会是所有数据的分列表,而是AI发现的漏洞或问题的解释。
模型使用的提示如下:
[INST] <<SYS>> {user_instruction}<</SYS>> 要分析的NMAP数据: {user_message} [/INST]
指令如下:
对提供的NMAP扫描信息进行NMAP扫描分析。NMAP输出必须按照提供的输出格式返回。数据必须准确地符合渗透测试报告的要求。
数据必须遵循以下规则:
1) NMAP扫描必须从渗透测试员的角度进行
2) 最终输出必须根据给定的格式保持最小化
3) 最终输出必须保持最小化
4) 如果在扫描中未找到某个值,只需提及一个空字符串
5) 分析一切,即使是最小的数据
6) 完全分析提供的数据,并使用输出格式给出确认答案
7) 在提供的输出格式中提及您发现的所有数据,以便可以对其使用正则表达式
8) 避免不必要的解释
9) 关键分数必须根据存在的CVE或开放服务的性质计算
10) 操作系统信息必须包含目标使用的操作系统
11) 开放端口必须包括数据[tcp]中列出的所有开放端口,并通过检查其状态值来验证。您不应忽视任何一个开放端口
12) 可以通过推测服务性质或分析发现的CVE来确定易受攻击的服务
输出格式:
关键分数:
- 提供关键性信息
"操作系统信息":
- 列出操作系统信息
"开放端口和服务":
- 列出开放端口
- 列出开放端口服务
"易受攻击的服务":
- 根据CVE或开放端口的性质列出易受攻击的服务
"发现的CVE":
- 列出发现的CVE并列出主要问题。
使用指令集和通过提示提供的数据,llama AI生成其输出。
为了最佳使用,我建议您创建一个runpod无服务器端点部署的llama,您可以参考这个教程教程。按照教程获得更好的使用体验。
聊天:
静态代码分析:
漏洞分析:
安装
前提条件
在开始安装之前,请确保您具备以下条件:
- Python (3.11或更高版本)
pip3
包管理器Visual Studio Code
- 请按照此链接中的步骤操作llama-cpp-prereq-install-instructionscmake
步骤1: 克隆仓库
git clone https://github.com/morpheuslord/hackbot.git
cd hackbot
步骤2: 安装依赖
pip3 install -r requirements.txt
步骤3: 下载AI模型
python3 hackbot.py
首次运行HackBot时,它会检查聊天机器人所需的AI模型。如果模型不存在,它会自动下载并保存为项目目录中的"llama-2-7b-chat.ggmlv3.q4_0.bin"。
使用方法
要开始与HackBot对话,请运行以下命令:
对于本地LLama用户
.env
文件必须如下所示:
RUNPOD_ENDPOINT_ID = ""
RUNPOD_API_KEY = ""
AI_OPTION = "LLAMALOCAL"
完成后运行以下命令:
python hackbot.py
对于RunPod LLama用户
.env
文件必须如下所示:
RUNPOD_ENDPOINT_ID = "<<SERVERLESS ENDPOINT ID>>"
RUNPOD_API_KEY = "<<RUNPOD API KEY>>"
AI_OPTION = "RUNPOD"
完成后运行以下命令:
python3 hackbot.py
HackBot将显示一个横幅并等待您的输入。您可以询问与网络安全相关的问题,HackBot会给出信息丰富的回答。要退出聊天,只需在输入提示中输入"quit_bot"。
以下是一些您可以使用的附加命令:
clear_screen
: 清除控制台屏幕以提高可读性。quit_bot
: 用于退出聊天应用程序。bot_banner
: 打印默认的机器人横幅。contact_dev
: 提供我的联系信息。save_chat
: 保存当前会话交互。vuln_analysis
: 使用扫描数据或日志文件进行漏洞分析。static_code_analysis
: 使用扫描数据或日志文件进行静态代码分析。
注意: 我正在开发更多的插件和更多这样的命令,以提供更类似chatGPT的体验。
请注意: HackBot的回答基于Meta-LLama2 AI模型,其准确性取决于提供给它的查询和数据的质量。
我也在进行AI训练,通过这种方式,我可以教它如何更准确地调整以更专业的水平为黑客工作。
贡献
我们欢迎贡献以改进HackBot的功能和准确性。如果您遇到任何问题或有改进建议,请随时提出问题或提交拉取请求。按照以下步骤贡献:
- Fork仓库。
- 创建一个具有描述性名称的新分支。
- 进行更改并提交。
- 将更改推送到您的forked仓库。
- 向此仓库的
main
分支打开拉取请求。
请保持清晰的提交历史,并遵守项目的编码准则。
AI训练
如果有人了解如何训练文本生成模型并能帮助改进代码,那将非常有帮助。对于AI训练部分,我已经准备了一个数据集和一个可用的训练代码,但我在训练部分遇到了问题,对此的合作将不胜感激。 您可以在以下位置查看数据集:
GitHub版本的数据集用于OpenAI训练,而另一个版本用于Meta的Llama2-7b。数据集的目标是尝试并可能生成一个能够更好地处理CVE数据的AI模型。如果您认为数据集有所欠缺,请随时修改并分享您的看法。
联系方式
如果您对HackBot有任何问题、反馈或询问,请随时联系项目维护者:
- 电子邮件: morpheuslord@protonmail.com
- Twitter: @morpheuslord2
- LinkedIn: ChiranjeeviG