前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >甲方安全建设-利用AI大模型协助安全运营

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

作者头像
Jumbo
发布2024-06-24 20:11:05
1200
发布2024-06-24 20:11:05
举报
文章被收录于专栏:中国白客联盟中国白客联盟

前言

现在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_llm`的`url`参数去处理。如果用户提交的是日志或数据包,您需要立即将这些数据输入到`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->自动化封禁等等。

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

本文分享自 中国白客联盟 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
高级威胁追溯系统
腾讯高级威胁追溯系统(Advanced Threat Tracking System,ATTS)由腾讯安全团队构建的高级威胁追溯平台,旨在帮助用户通过该平台进行线索研判,攻击定性和关联分析,追溯威胁源头,有效预测威胁的发生并及时预警。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档