使用大型语言模型(LLMs)强化网络防御

运用大语言模型增强网络防御:Sophos关于如何与Amazon Bedrock和Amazon SageMaker结合使用LLMs的策略

由Benoît de Patoul、Naresh Nagpal、Adarsh Kyadige与SalmaTaoufiq于2024年11月26日发布,摘自、及

关键要点

  • Sophos致力于保护超过50万家组织,并借助人工智能提升网络安全防御。
  • 大语言模型(LLMs)在自然语言理解和生成方面表现出色,但在网络安全等专业领域中,需要通过微调来提高其效果。
  • 本文讨论的三项任务包括从自然语言生成SQL查询、预测事件严重性以及基于警报数据总结事件,这些都有助于提升安全运营中心(SOC)的生产力。

作为网络安全领域的领导者,专注于保护超过500,000个组织和数百万用户,遍及150多个国家。通过利用威胁情报、机器学习(ML)和人工智能(AI)技术,Sophos提供先进的产品和服务,旨在防御各种网络威胁,如网络钓鱼、勒索软件和恶意软件。由负责推动Sophos主要的 ML 安全技术的开发与维护。

近年来,大语言模型(LLMs)在自然语言处理与生成领域展现了显著能力,然而在网络安全等专业领域的效果则依赖于领域特定的知识。在此背景下,微调作为一种重要技术显得至关重要,能够将这些通用模型调整至网络安全的复杂性。例如,我们可以利用来提升模型在事件分类或摘要生成方面的表现。微调之前,重要的是对开箱即用模型的潜力进行测试,以确定其在一系列基于领域的任务中的表现。我们定义了以下三项专业任务,后文将详细介绍。这些任务也可用于测量通过微调、(RAG)或知识蒸馏所获得的性能提升。

在本文中,SophosAI分享了使用和评估开箱即用 LLMs 的心得,以提升安全运营中心(SOC)的生产力,结合使用和。我们使用Anthropic的Claude 3Sonnet模型在Amazon Bedrock上进行案例分析。

任务

我们将展示三项示例任务,以深入探讨LLMs在SOC中的应用。SOC是负责监控、检测、分析和响应网络安全威胁和事件的组织单位。它结合了技术、流程和技能人员,确保信息系统和数据的保密性、完整性和可用性。SOC分析师持续监控安全事件,调查潜在威胁,并采取适当措施降低风险。

SOC面临的共同挑战包括检测工具生成的高警报数量,以及分析师因疲劳导致的警报处理能力下降。这些问题通常还伴随着人手不足。为了解决这些挑战,并提高运营效率和可扩展性,许多SOC逐渐转向自动化技术,以简化重复性任务、优先处理警报并加快事件响应。考虑到分析师需要执行的任务性质,LLMs是提升SOC自动化水平和增强安全团队能力的有效工具。

针对这项工作,我们集中在三项关键的SOC使用案例,它们在很大程度上能够为分析师提供支持,具体包括:

任务描述
1. 自然语言生成SQL查询简化数据提取,使安全分析师能够高效调查
2. 事件严重性预测帮助分析师优先处理最紧急的事件
3. 事件摘要根据警报数据提高分析师的生产力

根据这些任务的token消耗,特别是摘要生成部分,我们需要一个上下文窗口至少能容纳4000个tokens。虽然这些任务在英语上进行了测试,但Anthropic的Claude3 Sonnet模型也可以在其他语言中执行。然而,我们建议您在特定语言中进行性能评估。

让我们深入了解每项任务的细节。

任务1:从自然语言生成查询

此任务旨在评估模型将自然语言问题转换为SQL查询的能力,依据数据架构的上下文知识来简化数据提取过程,使安全分析师能更高效地进行调查,而不需要深入技术知识。我们使用了来优化提示,从 LLM 中生成更好的反应。

我们为此任务使用三样本提示策略。给定一个数据库架构,模型将接收到三个实例,其中自然语言问题与对应的SQL查询相配对。随后,模型将被提示生成一个感兴趣问题的SQL查询。

以下是从自然语言生成查询的三样本提示示例。我们发现,使用几样本提示(相较于一次样本或零样本)能取得更好的效果。

network_table的架构 <表架构>

以下是一些示例  请求:告诉我在2021年10月19日至2021年11月30日之间执行的进程列表 SQL:select * fromprocess_table where timestamp between '2021-10-19' and '2021-11-30';

请求:显示23天前的低严重性安全警报 SQL:select * from alert_table where severity='low' andtimestamp>=DATEADD('day', -23, CURRENT_TIMESTAMP());

请求:显示在12月1日至12月11日期间运行的msword.exe进程数量 SQL:select count(*) from process_tablewhere process='msword.exe' and timestamp>='2022-12-01' andtimestamp<='2022-12-11';

请求:“任何由用户“admin”从“db-server”主机运行的Ubuntu进程” SQL: ```

为了评估模型在此任务上的表现,我们依赖于一个基于测试数据库架构的约100个目标查询的专有数据集。我们采取多步骤评估的方法,首先验证模型所生成的输出是否与预期的SQL语句完全匹配。完全匹配的查询将被记录为成功。如果存在不匹配,我们将分别对模型的查询和预期查询在我们的模拟数据库中运行以比较其结果。然而,这种方法可能会导致假阳性和假阴性。因此我们进一步使用更强的LLM对查询等价性进行评估。这种方法被称为。

Anthropic的Claude 3Sonnet模型在选定数据集上达到了88%的良好准确率,表明这个自然语言到SQL的任务对LLMs来说相对简单。因此,通过基本的几样本提示,分析师可以直接使用LLM而无需微调,以帮助他们在调查威胁时获取关键信息。以上模型性能基于我们的数据集和实验,您可以根据上述策略进行测试。

### 任务2:事件严重性预测

在第二项任务中,我们评估模型识别观察到的事件严重性的能力,以此作为事件的指示。这项任务旨在确定LLM是否能够审查安全事件并准确评估其重要性。具有这种能力,模型可以帮助分析师确定最紧迫的事件,帮助他们更有效率地组织工作队列,进一步节省时间和精力。

此用例中的输入数据是半结构化的警报数据,通常是各种检测系统在事件发生期间生成的。这些模型需要清楚地定义严重性类别——关键、高、中、低以及信息性,模型需基于这些分类来判断事件的严重程度。这是一个分类问题,测试了LLM在网络安全领域的内在知识。

在Sophos管理检测与响应(MDR)平台中,每个安全事件由多个检测组成,这些检测突出显示了用户环境中发生的可疑活动。检测可能包括识别潜在有害模式,如异常命令执行、异常文件访问、非正常网络流量或可疑的脚本使用。我们附上了一个示例输入数据。

“检测”部分提供关于每种具体可疑活动的详细信息。包括安全事件的类型,例如“执行”,以及说明威胁性质的描述,如使用可疑的PowerShell命令。检测与用于跟踪和引用目的的唯一标识符相连。此外,包含来自的详细信息,这些信息将威胁中的战术和技术进行分类。此部分也可能引用相关的Sigma规则,这些规则是社区驱动的用于检测跨不同系统威胁的特征。通过纳入这些元素,检测部分能够全面概述潜在威胁,帮助分析师理解检测内容以及其重要性。

“机器数据”部分则持有关于发生检测的机器的关键信息。这可以提供机器的额外元数据,有助于精确定位可疑活动在环境中的发生位置。

`json { "detection": { "attack": "Execution", "description": "识别可疑PowerShellIEX模式的使用。IEX是Invoke-Expression PowerShell命令的缩写。该命令将指定字符串作为命令运行。", "id":
<Detection ID>, "mitre_attack": [ { "tactic": { "id": "TA0002", "name": "执行",
"techniques": [ { "id": "T1059.001", "name": "PowerShell" } ] } }, { "tactic":
{ "id": "TA0005", "name": "防御规避", "techniques": [ { "id": "T1027", "name":
"模糊文件或信息" } ] } } ], "sigma": { "id": <Detection ID>, "references": [
"https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_susp_powershell_download_iex.yml",
"https://github.com/VirtualAlllocEx/Payload-Download-
Cradles/blob/main/Download-Cradles.cmd" ] }, "type": "process" },
"machine_data": { "username": <Username> }, "customer_id": <Customer ID>,
"decorations": { <Customer data> }, "original_file_name": "powershell.exe",
"os_platform": "windows", "parent_process_name": "cmd.exe",
"parent_process_path": "C:\\Windows\\System32\\cmd.exe", "powershell_code":
"iex
([system.text.encoding]::ASCII.GetString([Convert]::FromBase64String('aWYoR2V0LUNvbW1hbmQgR2V0LVdpbmRvd3NGZWF0dXJlIC1lYSBTaWxlbnRseUNvbnRpbnVlKQp7CihHZXQtV2luZG93c0ZlYXR1cmUgfCBXaGVyZS1PYmplY3QgeyRfLm5hbWUgLWVxICdSRFMtUkQtU2VydmVyJ30gfCBTZWxlY3QgSW5zdGFsbFN0YXRlKS5JbnN0YWxsU3RhdGUKfQo=')))",
"process_name": "powershell.exe", "process_path":
"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" }`

为便于评估,这一任务的提示要求模型以统一的方式传达其严重性评估,以标准化格式进行响应,例如以字典的形式,其中_severity_pred_为键,选择的严重性级别为值。以下是事件严重性分类的示例提示。模型的表现随后根据3800多起安全事件的测试集进行评估,这些事件有目标严重性级别。

```json 您是一个乐于助人的网络安全事件调查专家,根据每次事件的检测数据分类事件的严重性级别。 严格按照此 JSON格式响应:{“severity_pred”: “xxx”} 其中xxx只能是: \- 关键的, <关键事件的标准> \- 高的, <高严重性事件的标准>
\- 中的, <中等严重性事件的标准> \- 低的, <低严重性事件的标准> \- 信息性的 <信息性事件的标准> 不允许其他值。

检测: ```

我们将在此任务中采用多种实验设置,包括零样本提示、使用随机或最近邻事件示例的三样本提示和简单分类器。

此次任务表现得相当具有挑战性,因为目标标签中的噪声以及在没有进一步调查的情况下评估事件临界性的内在难度对于未进行专项训练的模型而言是一大隐患。

在多种设置下,例如使用最近邻事件的几样本提示,模型的表现并未能可靠地超越随机机会。作为参考,测试集的基准准确率约为71%,平衡准确率为20%。

图1展示了模型响应的。混淆矩阵能够一图展示模型分类的表现。我们看到,只有12%
(0.12)
的实际关键事件被正确预测/分类。50%的关键事件被预测为高严重事件,25%被预测为中等严重事件,12%被预测为信息事件。其余标签的准确率同样相对较低,最低为低事件标签,仅2%的事件被正确预测。此外,模型在各个类别中有明显的倾向于过度预测高和中等类别。

删除)

图1:使用Anthropic Claude 3 Sonnet进行的五级严重性分类的混淆矩阵

在基准任务中观察到的表现表明,这是一个特别困难的问题,未经修改的通用 LLM可能不足以胜任,解决该问题需要专门在网络安全数据上训练或微调的模型。

### 任务3:事件摘要

第三项任务聚焦于即将到来的事件的摘要生成。它评估模型在事件发生时提供简洁明了的活动摘要的潜力,帮助威胁分析师进行筛选和调查。

安全事件通常由发生在用户终端或网络上的一系列事件组成,这些事件与检测到的可疑活动相关。调查事件的分析师会接收到一系列在可疑活动被检测到时在终端上发生的事件。然而,分析这一事件序列可能比较困难且耗时,导致难以识别值得关注的事件。在这方面,LLMs可以通过帮助组织和分类事件数据,从而改善理解,并帮助分析师快速确定适当的后续行动。

我们使用来自SophosMDR的真实事件数据进行事件摘要。此任务的输入包括一组JSON事件,每个事件根据捕获的传感器具有不同的架构和属性。在提供指令和预定义模板的基础上,将这些数据提供给模型以生成摘要。以下是生成SOC数据事件摘要的示例模板提示。

```markdown 作为一名网络安全助手,您的任务是: 1\. 分析提供的网络安全检测数据。 2\. 使用“###
检测”部分的信息创建事件报告,可能包括命令行和文件路径等安全工件。 3\. [任何其他附加的一般格式要求等] 报告大纲应如下所示: 总结:
<几句描述活动的摘要。 [总结的其他要求:包括哪些内容等]> 观察到的MITRE技术: <列出所有已注册的MITRE技术或策略ID和名称对,如果可用>
受影响的主机: <列出检测中观察到的所有主机名,提供对应的IP(如果可用)> 活跃用户: <列出检测中观察到的所有用户名称。可能有多个,列出所有> 事件:
<对前三个检测事件的描述用一句话表示。列表前以\n1. 开始> IPs/URLs: <列出可用的IP和URL>
<在每个报告类别下只列举最多十个工件,并总结超出数量的其余事件。> 文件: <列出检测事件中发现的文件,格式如下:> <带有详细信息的文件模板> 命令行:
<

Leave a Reply

Required fields are marked *