目标
打造一个能够理解用户 kali 终端操作需求,并自动执行命令以及分析结果的渗透测试智能体。
-
应用场景提问举例
-
当前系统是否存在恶意进程? -
使用 nmap 快速扫描 example.com 并分析可能存在的威胁 -
有哪些进程在监听 80 和 443 端口? -
解析 http://example.com/index.php?id=1
参数,并尝试使用sqlmap
进行盲注测试。 -
当前系统内存大小 * 67891 = ? 【智能体数学公式能力】
开放端口进程扫描
智能体调用 nmap 并分析扫描结果
智能体调用 Python 计算器
(智能体把问题拆分成多个步骤完成,先调用系统命令获取内存大小,再调用 Python 完成计算,最后对结果总结输出)
申请 Deepseek API
前往 Deepseek 开发者平台申请 API,地址是:https://platform.deepseek.com/api_keys
创建后,记得保存 API Key,比如刚才创建的 key 长这样
sk-b908e392ab1742bc9a112e**********
安装相关的库
pip install llama-indexpip install llama-index-llms-deepseek
一步一步写代码
基础对话能力
先写一段简单的代码来测试申请的 API Key 是否能够正常使用,记得替换下面这段代码中的 API Key。
from llama_index.llms.deepseek import DeepSeekapi_key = 'sk-b908e392ab1742bc9a112e**********'api_base = 'https://api.deepseek.com/v1'model_name = 'deepseek-chat'llm = DeepSeek(model=model_name, api_key=api_key, api_base=api_base)response = llm.complete("你好, 你是谁?")print(response)
如果 API 正常,将得到如下输出。
> python3 agent.py您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-V3。如您有任何任何问题,我会尽我所能为您提供帮助。
如果您申请的 Deepseek API 无法使用,或没有额度,可以使用 OpenAI 的接口。
智能体
智能体(Agent)是能够自主感知环境、做出决策并执行动作以实现特定目标的系统或程序。
智能体的重要组件:
-
llm:大语言模型(比如 Deepseek、OpenAI 提供的在线模型) -
tools:智能体能够使用的工具(比如系统命令、Python、搜索引擎) -
prompt:提示词,给智能体描述背景、任务等。
from llama_index.core.agent.workflow import AgentWorkflowtools = [calculate_expression_python, my_system]agent = AgentWorkflow.from_tools_or_functions( tools, llm=llm, system_prompt="You are a helpful kali linux assistant that can execute python expressions, and execute system commands.(all kali linux commands are available).",)
在这个教程中,kali 渗透智能体可以使用两个工具【calculate_expression_python】、【my_system】分别对应 Python 表达式执行以及系统命令执行。
智能体能够使用这两个工具完成基础数学运算以及 kali 系统操作能力。
import subprocessdefcalculate_expression_python(expression: str):""" 调用 python 的 eval 计算并返回 python 表达式的结果。 """ print("python execute: ", expression)try: result = eval(expression)return str(result)except Exception as e:return str(e)defmy_system(cmd: str) -> str:"""Executes a system command using bash and returns its output.(all kali linux commands are available)""" print("system execute:", cmd)try: result = subprocess.run(cmd, shell=True, text=True, capture_output=True)return result.stdoutexcept Exception as e:return str(e)
agent 将自主思考用户问题以及理解calculate_expression_python、my_system 函数并自动生成合理的函数调用。
集成
最后,实现 main 函数,将 llm、agent、tools 全部集中,以及实现用户交互。
import asynciofrom llama_index.core.workflow import Contextasyncdefmain(): ctx = Context(agent)whileTrue: user = input("> ")if'bye'in user:break response = await agent.run(user, ctx=ctx) print(str(response))if __name__ == "__main__": asyncio.run(main())
Context
让 agent 拥有上下文记忆,也就是多轮对话能力。您可以修改代码添加检测用户输入 clear
关键字来清除上下文,实现重新开一个新的对话。
完整代码
import asynciofrom llama_index.core.agent.workflow import AgentWorkflowfrom llama_index.core.workflow import Contextfrom llama_index.llms.openai import OpenAIfrom llama_index.llms.deepseek import DeepSeekimport subprocessimport jsonapi_key = 'sk-************'api_base = 'https://api.deepseek.com/v1'model_name = 'deepseek-reasoner'defcalculate_expression_python(expression: str):""" 调用 python 的 eval 计算并返回 python 表达式的结果。 """ print("python execute: ", expression)try: result = eval(expression)return str(result)except Exception as e:return str(e)defmy_system(cmd: str) -> str:"""Executes a system command using bash and returns its output.(all kali linux commands are available)""" print("execute:", cmd)try: result = subprocess.run(cmd, shell=True, text=True, capture_output=True)return result.stdout + result.stderrexcept Exception as e:return str(e)llm = DeepSeek(model=model_name, api_key=api_key, api_base=api_base)#llm = OpenAI(model="gpt-4o", api_key=api_key, api_base=api_base)agent = AgentWorkflow.from_tools_or_functions( [calculate_expression_python, my_system], llm=llm, system_prompt="You are a helpful kali linux assistant that can execute python expressions, and execute system commands.(all kali linux commands are available).",)async defmain(): ctx = Context(agent)while True: user = input("> ")if 'bye' in user:break response = await agent.run(user, ctx=ctx) print(str(response))if __name__ == "__main__": asyncio.run(main())
后台回复 "智能体" 获取代码下载链接
其他模型
最近 Deepseek 太火了,如果 Deepseek 的 API 接口不稳定,不妨尝试一下第三方的 OpenAI gpt-4o 模型,只需要简单修改即可。
api_key = 'sk-*****'api_base = 'https://api.gpt*****.us/v1'llm=OpenAI(model="gpt-4o", max_retries=3, api_key=api_key, api_base=api_base)
或者使用本地的 ollama 模型来加载本地的 Deepseek 模型。
pip3 install llama-index-llms-ollama
from llama_index.llms.ollama import Ollamallm = Ollama(model="deepseek-r1:7b", request_timeout=60.0)response = llm.complete("你好")print(response)
学习资源
大语言模型安全智能体开发交流群
立即关注【二进制磨剑】公众号
原文始发于微信公众号(二进制磨剑):Deepseek 动手开发安全智能体——(1) kali 渗透智能体
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论