大家好!各位安全研究员 🕵️♂️
上次我们学习了如何用Ghidra打开Hello World程序并向AI简单提问。但是,AI并非总是能完美理解。如果你随便问一句“解释一下这段代码”,AI也会随便回答“这只是C语言代码”。我们称之为GIGO(Garbage In, Garbage Out)。🗑️
今天,我们将学习即使使用相同的AI,也能获得比他人精确10倍、更深入的分析结果的秘诀——“安全专用提示工程”。我们不再是简单的提问者,而是指挥AI的“提示工程师”!🚀

1. 什么是提示工程?🤷
提示(Prompt)是指向AI发出的“指令”或“问题”。提示工程是“精心设计问题,使AI给出我所期望的最佳答案的技术”。
在恶意软件分析中,一个好的提示具有以下结构:
✨ 魔法公式:[角色(Persona)] + [上下文(Context)] + [数据(代码)] + [指令(目标)] + [输出格式]
我们来逐一解析这个公式吧?
2. 步骤1:设置角色(你是谁?)🎭
为AI赋予角色会显著改变回答的质量。如果只是随便问,它会以“普通人”的水平回答,但如果赋予专家角色,它会使用专业术语进行深入分析。
- ❌ 坏例子:“这段代码是什么?”
- ✅ 好例子:“你是一名拥有10年经验的高级恶意软件分析师(Senior Malware Analyst)。请从安全监控和事件响应(CERT)的角度进行回答。”
这样赋予角色后,AI会突然改变态度,努力寻找“攻击者的意图”、“IoC(入侵指标)”等安全核心信息。
3. 步骤2:问题优化实践(Before & After)🧪
我们将以实际恶意软件中常见的“套接字连接(网络通信)”代码为例进行比较。
📝 待分析代码(C语言)
// 待分析的代码片段
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);
s = socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family = AF_INET;
addr.sin_port = htons(4444);
addr.sin_addr.s_addr = inet_addr("192.168.0.10");
connect(s, (struct sockaddr*)&addr, sizeof(addr));
😱 [Before] 初学者的提问
提示:“解释一下下面的代码。”
>
AI的回答(示例):“这段代码初始化了Windows套接字,并尝试与IP 192.168.0.10的4444端口建立TCP连接。它使用了socket函数和connect函数。”
👉 问题:虽然没有错,但它缺乏关于为什么这很危险以及分析师应该做什么的信息。它只是进行了“翻译”。
🤩 [After] 应用提示工程
提示:“角色:你是一名网络安全专家。背景:我从一个可疑的可执行文件中提取了以下代码片段。这段代码被推定为未经用户同意而执行。目标:
>
1. 分析这段代码的行为目的。(例如:后门、下载器等)
2. 推断攻击者希望通过这段代码实现什么。
3. 提取分析师应阻止的网络IoC(入侵指标)信息。格式:以项目符号的形式总结关键内容。
>
代码:[在此处粘贴代码]”
AI的回答(示例):🔍 安全分析报告
>
– 行为分析:这段代码是典型的反向Shell(Reverse Shell)或C2(命令与控制)服务器连接尝试。它主动与特定IP建立连接。
– 攻击意图:
– 建立与外部攻击者服务器(C2)的通信通道
– 等待下载额外的恶意负载或接收远程控制命令
– 主要IoC(需要阻止):
– 目标IP:192.168.0.10(看起来像是内网IP,但在实际攻击中很可能是公网IP)
– 目标端口:4444(常被Metasploit等黑客工具用作默认端口 🚩)
👉 区别:看到了吗?它提供的不仅仅是简单的“连接”,而是“反向Shell”、“C2”、“Metasploit默认端口”等洞察!这正是我们想要的分析。
4. 小贴士:连环提问(Chain of Thought)🔗
不要止步于一个问题。你需要根据AI的回答进行更深入的探究。
- 反驳:“这有没有可能是正常的网络管理程序?请检查误报(False Positive)的可能性。”
- 要求应对:“请编写一个用于检测此攻击的YARA规则(YARA Rule)。”
- 要求解释:“请用简单的语言总结这个威胁,以便初级安全分析师能够理解。”
5. 保存你自己的“作弊码”提示 💾
每次都打很长的提示很麻烦吧?将你自己的提示模板保存在记事本或Notion中,随时使用。
[模板:用于恶意软件分析]
Role: Senior Malware Researcher
Task: Analyze the following assembly/C code snippet.
Details:
1. Identify the malicious functionality (Keylogging, Ransomware, RAT, etc.).
2. Explain the logic step-by-step.
3. Highlight crucial API calls and their parameters.
Format: Markdown Table
Code:
[Insert Code Here]
🎉 总结
今天,我们学习了如何告诉AI它应该成为“谁(专家)”以及“如何(从安全角度)”回答。这项技术是核心能力,不仅适用于恶意软件分析,还适用于报告撰写、电子邮件回复等所有工作。
下一次,我们将利用这项技术,与AI一起实践解开那些人类难以阅读的“混淆(Obfuscation)脚本”。敬请期待!🔥
如有任何疑问,请随时在评论中留言!👇
发表回复