甲方安全建设-利用AI大模型协助安全运营

前言

现在AI流行,chatgpt官方和很多公司都开放了类gpts接口,也就是用户可以创建自己的gpt,内置好自己的知识库和处理逻辑,然后根据用户的输入进行处理和输出,那么在安全运营的工作中,我们也可以借助AI帮我们完成如攻击payload分析、告警日志分析、IP威胁情报查询并自动封禁等安全运营工作。

coze使用

coze简称扣子,是字节开放的大模型 AI 应用开发平台,用户可以借助该平台完成bot的开发以完成用户特定的需求。记得使用coze.com而不是coze.cn,com里面包含的大模型更多。

coze有很多组件,包括bot、plugin、workflow、code、bot Prompt、workflow Prompt等等,到现在笔者都只摸索了大致含义。

代码语言:javascript
复制
bot: 机器人,对接用户的输入并返回结果,可以理解为就是一个chatgpt              
plugin: 插件,可以用python3、nodejs的方式编写代码,对输入的内容进行处理和输出              
workflow: 工作流,能够编排多个阶段,并对每个阶段的输入输出进行处理              
code:workflow中的code,能够编写简单的python、nodejs代码来处理输入和输出              
bot Prompt:更偏向于让bot更好的解析用户的输入,也包括对输出的格式不符合要求时对其要求进行格式化              
workflow Prompt:更偏向于在多步骤的流水线中,能否准确的处理上一步的数据和格式化输出结果。

本文将以安全小助手为例,给用户带来分析攻击payload、分析告警日志、总结技术文章的能力。虽然很多功能仅靠一个bot就能完成,但是因为考虑到未来编排的可能性,因此bot仅仅是获取输入,核心处理逻辑都是在workflow上面。 先以文章总结为例,workflow的流程应为:获取用户的输入->访问url获取网页内容->llm总结网页内容。在创建该worflow时,发现有个browser plugin,但是测试并不满足需求,其一网页返回的数据必须是json格式,其二是返回的网页内容被截断:

本想借助workflow中的code完成,但是貌似只有几个内置的函数,且可能为了防止SSRF等一些安全问题出现,限制了请求的url:

因此索性自己写一个plugin吧。也很简单,直接使用python3 requests完成即可,https://www.coze.com/docs/guides/plugin_ide?_lang=zh会给出相应的代码demo,告诉你如何获取参数。最终的代码如下:

代码语言:javascript
复制
from runtime import Args              
from typings.get_web_response.get_web_response import Input, Output              
import requests              
"""              
Each file needs to export a function named `handler`. This function is the entrance to the Tool.

Parameters:
args: parameters of the entry function.
args.input - input parameters, you can get test input value by args.input.xxx.
args.logger - logger instance used to print logs, injected by runtime.

Remember to fill in input/output in Metadata, it helps LLM to recognize and use tool.

Return:
The return data of the function, which should match the declared output parameters.
"""
def handler(args: Args[Input])->Output:
url = args.input.url
args.logger.info(url)
try:
response = requests.get(url, timeout=30, verify=False).text
except Exception as e:
response = str(e)
args.logger.info(response)
return {"response": response }

注意,代码中的args.input代表输入,return代表输出,都需要在Metadata中定义好:

完成访问网站的plugin后,就可以继承到workflow中,然后最后丢给llm进行分析即可:

代码语言:javascript
复制
如下是网页内容:
{{response}}

请对内容进行总结。总结内容可包括内容目录、内容结构、内容大概讲了什么、总结全文等。


完成workflow后可点击右上角的test run进行测试,保证流程没问题。

接下来完成对日志进行解析的workflow,很简单,直接把日志丢给llm就行,然后定义好让llm返回什么:

代码语言:javascript
复制
# 角色
你是一位资深的安全专家,专注于技术向导和安全问题解析。

技能

技能 1: 安全问题解答

  • 根据用户面临的安全问题,提供专业的解决方案。
  • 执行全面的安全检查并采取相应的补救措施。
  • 检查用户的网络环境和系统,发现并解决威胁。

技能 2: 恶意代码和数据包分析

  • 分析用户提供的信息,进行威胁分析并给出专业的指导意见。
  • 解读数据包,进行安全分析并提供相应的修复方案。

技能 3: 安全性建议和修复代码供应

  • 根据需要,给出个性化的安全建设方案和漏洞修复建议。
  • 提供有效的代码修复方案。

约束条件

  • 只讨论与信息安全相关的问题。
  • 努力保护用户的隐私和数据安全。
  • 尽量减少行业术语,以用户易于理解的方式解释问题。
  • 在确认信息的准确性的基础上,从多个可靠的信息源获取信息以支持答案。

内容如下:
{{input}}

对内容进行分析,并返回分析结果。分析结果包含是否存在威胁,如果存在威胁,威胁是什么、处置建议是什么、检测方案是什么。处置建议可以基于WAF、HIDS等安全设备纬度提供,检测方案可以基于Suricata、Falco、YARA、Sysmon等防护设备的规则提供。


最后我们创建bot,这里得感谢倾旋,不然我还不知道怎么让bot调用workflow:

代码语言:javascript
复制

角色

您是网络安全行业里的杰出人才,专门针对各类复杂的安全问题进行深入解读和处理。

技能

技能 1: 用户输入的精准解析

  • 您的解析能力高效且准确,能够透彻理解用户的需求。如果用户输入了一个网址,您需要立刻把这个任务交到browser_web_and_llmurl参数去处理。如果用户提交的是日志或数据包,您需要立即将这些数据输入到log_analyze工作流的input参数,进行详细的分析处理。对于其他类型的输入,您应依据自己的专业理解提供相应的反馈。

技能 2: 用户需求的精确响应

  • 针对用户的不同输入类型,您需要根据相应工作流的处理结果,以中文向用户反馈工作流的原始内容。每个结果反馈都应详尽而直接地展现所处理过程的各个信息。

技能 3: 持续等待工作流的反馈

  • 您会不断等待工作流的反馈,且过程中不会因为超时而终止工作流。

最后注意下,bot这里建议选chatgpt,你选gemini他不知道你在说什么,因此也不会把输入传给工作流。而workflow那里可以选gemini,因为他处理比较快,毕竟平台所有模型都是免费的,用的人很多,因此如果响应慢的话得自行调节模型选择。

手动测试bot

输入url:

输入日志:

自动调用bot

coze也提供了api,可以对接机器人实现自动化对话: https://www.coze.com/docs/developer_guides/coze_api_overview?_lang=zh

代码语言:javascript
复制
curl --location --request POST 'https://api.coze.com/open_api/v2/chat' --header 'Authorization: Bearer xxxxx' --header 'Content-Type: application/json' --header 'Accept: */*' --header 'Host: api.coze.com' --header 'Connection: keep-alive' --data-raw '{              
    "bot_id": "xxxxxx",              
    "user": "my",              
    "query": "GET /index.php?file=../../../../../etc/passwd",              
    "stream": false              
}'

总结

本文通过coze完成了bot的创建,并利用bot完成对日志的分析、文章的解读,最终目的是为了提升安全运营效率,减少人工。当然在自动化路上,本文讲的还不够,未来可以基于llm的分析结果进行自动化的应急处置,如分析日志->判断是否存在威胁->如果存在威胁则提取攻击IP->交给安全设备进行自动化封禁。或者获取IP->威胁情报网站查询是否是恶意IP->自动化封禁等等。