提示词工程不仅仅是“提问”,更是将复杂的安全问题分解、格式化,并以大模型能够理解和处理的方式呈现。
核心原则
明确性与具体性:避免模糊不清的指令,提供详细、具体的任务描述。
角色设定:赋予大模型一个具体的安全角色,如“你是一名高级安全分析师”。
约束条件:明确告知大模型输出的格式、长度、风格及应避免的内容。
上下文关联:提供足够的背景信息和数据,帮助大模型理解问题的全貌。
迭代优化:提示词并非一蹴而就,需要根据大模型的响应不断调整和完善。
提示词技巧和策略
角色扮演
示例
你是一名经验丰富的安全分析师,擅长识别日志中的异常活动
请扮演一位恶意软件逆向工程师,详细解释这个二进制文件可能的行为。明确任务和目标
示例
弱提示:“这段日志有问题吗?”
强提示:“请分析以下Web服务器访问日志,判断是否存在SQL注入攻击,并指出具体攻击载荷和受影响的参数。”输入与输出格式规范
指定输入数据的格式和期望的输出格式,这对于后续自动化处理至关重要。
示例
以下是JSON格式的SIEM告警数据。请提取告警类型、源IP和目标IP,并以Markdown表格形式输出。提供丰富的上下文
安全问题往往需要大量的上下文信息才能准确判断。提供相关的系统配置、威胁情报、历史事件等能极大地提升大模型的判断能力。
我们观察到来自IP 192.168.1.100 的大量SSH登录失败尝试。该IP不属于我们的已知资产,且近期无变更管理操作。请根据以下日志片段,判断这是否为暴力破解攻击,并评估其严重性。我们公司的安全策略规定,5分钟内超过10次登录失败即被视为暴力破解。负面提示与约束条件
明确告知大模型不要做什么,或必须遵守的限制。
请勿生成任何可能导致系统不稳定的命令。
仅给出判断结论和理由,不需要提供历史背景知识。链式思考与逐步指导
对于复杂的多步骤分析任务,引导大模型进行逐步思考,有助于提高其逻辑推理能力和最终结果的准确性。这可以通过在提示词中加入“逐步思考”、“分步分析”等指令实现。
示例:
请逐步分析以下网络流量日志:
1、识别所有HTTP GET请求。
2、检查这些请求的User-Agent头是否异常。
3、寻找URL中是否存在可疑参数或编码内容。
4、综合以上分析,判断是否存在恶意探测行为。Few-shot/zero-shot学习
Zero-Shot:直接提出问题,不提供任何示例。
Few-Shot:提供一到两个类似问题及其正确答案作为示例,帮助大模型理解任务模式和期望的输出格式。
示例 (Few-Shot):
示例1: 日志:[2023-10-26 10:00:01] INFO User 'admin' logged in from 192.168.1.1. 分析结果:正常登录。
示例2: 日志:[2023-10-26 10:05:30] ERROR Failed login for 'root' from 1.2.3.4. 分析结构:异常登录失败,可能存在暴力破解。攻击来源:1.2.3.4。
现在请分析以下日志: 日志:[2023-10-26 10:10:15] WARN SQL Injection attempt detected from 5.6.7.8 on /api/users?id=1' OR '1'='1 分析:”基于以上特点,以下为一个有效的提示词示例
你是一名资深的安全事件响应分析师。你的任务是根据提供的原始安全告警,对其进行富化,生成一份更详细的分析报告。报告应包含以下部分:
1. **告警概述**:简要概括原始告警内容。
2. **可能攻击阶段 (Kill Chain Stage)**:根据告警类型,推断其可能处于攻击生命周期的哪个阶段(例如:初始访问、执行、持久化等),并解释理由。
3. **恶意软件行为推测**:根据文件名和检测类型(如Cylance检测到恶意软件),推测该恶意软件的典型行为模式(如:窃取数据、传播蠕虫、勒索加密等)。
4. **初步响应建议**:提供基于最佳实践的初步响应措施,例如:隔离主机、检查进程、收集样本等。
5. **额外信息请求**:指出进行更深入分析还需要哪些额外信息(例如:文件哈希、进程树、网络连接日志)。
----
请以Markdown格式输出报告,确保专业、清晰、易于理解。
----
原始告警:
Malware Detected on Host A1_Win10. File: C:\temp\evil.exe. Severity: High.通过这样的提示词,大模型可以生成一份结构化、信息更丰富的报告,辅助安全分析师快速理解告警并采取行动。
注意的点
迭代与测试:提示词工程是一个持续迭代的过程。在实际环境中测试提示词的效果,并根据反馈进行优化。
避免过度泛化:过于宽泛的提示词可能导致大模型输出不相关或不准确的内容。
处理幻觉 :大模型可能会“编造”事实。对于关键的安全决策,大模型的输出必须经过人工验证或与权威信息源交叉核对。
数据隐私与敏感信息:在将敏感日志或数据传递给大模型时,务必考虑数据脱敏和合规性问题,尤其是在使用第三方LLM API时。
提示词工程模式
Few-Shot Prompting 少量样本学习
核心思想: 通过提供1到N个(通常是少数几个)高质量的输入-输出对(样本),向模型展示期望的响应模式
示例如下:
请将以下安全告警内容进行分类,分类结果必须是 '钓鱼攻击', '恶意软件', '入侵尝试', 或 '正常活动' 之一。请参考以下示例:
示例1:
告警内容:用户收到一封声称来自CEO的邮件,要求立即转账至一陌生账户。
分类:钓鱼攻击
----
示例2:
告警内容:主机检测到恶意进程 'ransom.exe' 试图加密文件。
分类:恶意软件
----
示例3:
告警内容:防火墙日志显示IP 192.168.1.100 在短时间内尝试SSH暴力破解。
分类:入侵尝试
----
现在请分类以下告警:
告警内容:****Chain-of-Thought (COT)思维链
模型被鼓励在给出最终答案之前,显式地输出其推理过程(加入“一步一步地思考”)。这有助于提高复杂任务的性能,并增强结果的可解释性。
适用场景:
安全事件分析:分析事件日志,逐步推断攻击链、攻击者意图和影响范围。
漏洞分析:解释某个漏洞的原理、利用方式以及潜在风险。
威胁情报研判:综合多条情报,逐步分析威胁的严重性、相关性。
示例如下:
请分析以下安全告警,并一步一步地推断其潜在的攻击意图和受影响资产,最终给出总结性判断和初步建议:
告警内容:用户'a'的账户在非工作时间(凌晨3点)从一个从未登录过的俄罗斯IP地址(185.X.X.X)成功登录,并随后在数分钟内创建了两个新的高权限用户账户'devops_admin'和'db_owner'。
思考过程:
1. **分析登录行为:**
* 用户'a':正常用户,但登录时间异常(凌晨3点)。
* 来源IP:未知且位于俄罗斯,高度可疑。
* 结果:成功登录,表明凭证可能已被泄露或盗用。
2. **分析后续操作:**
* 创建新的高权限用户:在短时间内创建了'devops_admin'和'db_owner',这是典型的权限提升和持久化操作。
* 意图:攻击者获得初步访问后,试图创建后门账户以维持访问权限并扩大影响。
3. **判断攻击类型:**
* 结合异常登录和权限提升,这很可能是一起账户凭证泄露后的入侵事件,旨在建立持久性访问和横向移动。
4. **受影响资产:**
* 直接受影响:用户'a'的账户本身(凭证泄露),以及新创建的'devops_admin'和'db_owner'账户。
* 潜在受影响:如果'devops_admin'和'db_owner'账户获得成功,所有相关系统(开发环境、数据库)都面临高风险。
ReAct Prompting(推理和行动)
ReAct 是一种结合了 CoT 推理能力和与外部环境交互的“行动”能力的提示词模式。LLM 不仅可以进行内部思考,还可以决定何时以及如何使用外部工具(如API、数据库查询、脚本执行),然后观察工具的输出,并根据观察结果继续推理或采取进一步行动。
模型通过交替的 Thought (思考) 和 Action (行动) 步骤来解决问题。
Thought:模型推理下一步应该做什么。Action:模型调用一个外部工具。Observation:模型接收工具的输出。
适用于自动化安全事件响应场景
flowchart TD
A[用户输入 / 初始告警] --> B[LLM: Thought — 我需要做什么?]
B --> C[LLM: Action — 使用哪个工具?参数是什么?]
C --> D[外部工具执行]
D --> E[工具输出 / Observation]
E --> F[LLM: Thought — 基于观察,下一步是什么?]
F --> G[LLM: Action — 给出最终答案 或 执行最终响应]
G --> H[最终结果 / 响应]
%% 循环逻辑
subgraph Loop[循环]
F --> C
end