2026年年初计划通过AI辅助代码审计,次篇为agent初次尝试,使用agent+mcp进行应急响应。

0.1 MCP server

MCP服务器是模型上下文协议(MCP)架构中的关键组件。

MCP只规定了与MCP server 与MCP host(cline、claude、kiro等agent)之间的协议。

image-20260113152204251

也就是mcp server相等于AI的触手,AI可以通过MCP达成各种各样的操作,如下案例(在下文中会详细描述如何编写一个mcp)

0.1.2 java内存马查杀MCP编写

uv地址:https://github.com/astral-sh/uv

uv 是一个极快的 Python 包和项目管理工具,由 Astral(Ruff 的创建者)开发,使用 Rust 编写。它旨在替代传统 Python 工具链中的多个工具(如 pippip-toolsvirtualenvpoetry 等),提供更高效的依赖管理、环境管理和脚本执行功能。

使用下面命令创建项目:

1
2
3
4
5
6
7
8
9
10
11
uv init weather           # 初始化一个名为 "weather" 的新项目
# 会创建 weather 文件夹,包含 pyproject.toml 等基础文件

cd weather # 进入项目目录

uv venv # 创建 Python 虚拟环境
# 默认在当前目录下生成 .venv 文件夹

source .venv/bin/activate # 激活虚拟环境(macOS/Linux)
# 激活后,pip/python 命令都指向虚拟环境
# Windows 用: .venv\Scripts\activate

这里使用kiro(aws编程助手,使用其他编程助手也可)编写一个mcp,下面为提示词:

1
2
3
4
5
6
7
8
9
10
11
网络搜索关于MCP的信息,帮我编写一个java 内存马查杀的mcp,其中你需要调用https://github.com/private-xss/memory-shell-detector 这个工具,下载地址是https://xget.xi-xu.me/gh/private-xss/memory-shell-detector/releases/download/1/java.zip 

1、需要编写一个ssh连接的tools,并可以执行命令
2、需要编写一个在本地执行命令的tools
3、需要编写一个可以使用memory-shell-detector的tools(你需要查看https://github.com/private-xss/memory-shell-detector如果使用)


注意:
1、使用uv执行项目
2、加载source .venv/bin/activate虚拟环境秩序
3、你可以查看当前目录下的文件,修改,main.py

提示:

private-xss/memory-shell-detector 是一个内存马检测查杀的项目

MCP中可以有多个tools(功能,如:sqlmap,其中可以注入,查询,写文件等功能)

此时完成之后,我们只需要配置agent的MCP,就可以使用此MCP功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"mcpServers": {
// 服务器名称:Java 内存马检测器
"java-memory-shell-detector": {
// 启动命令:使用 uv (Python 包管理器) 来运行
"command": "uv",

// 命令参数:
// - "run": 执行 Python 脚本
// - "--directory": 指定项目目录
// - "/path/to/this/project": 项目的实际路径(需要替换为真实路径)
// - "main.py": 入口文件
"args": ["run", "--directory", "/path/to/this/project", "main.py"],

// 环境变量(当前为空)
"env": {},

// 是否禁用此服务器(false = 启用)
"disabled": false,

// 自动批准的工具列表(当前为空,所有工具调用都需要用户确认)
"autoApprove": []
}
}
}

如下图:

image-20260113153409813

0.1.2 java内存马查杀MCP使用

此时我们打开对话框:

image-20260113153720029

此时kiro会询问我们是否使用此tools。

image-20260113153752402

image-20260113153817954

运行结果:

image-20260113153837073

0.2 agent之ReAct

在上面中MCP接入的kiro也是一个agent,包括claude也是一个agent,agent不同的区别在于架构范式以及内置tools。

  • ReAct (Reasoning and Acting): 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
  • Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
  • Reflection: 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。

上面三种是业内常见的架构范式,在下文中,我们使用ReAct编写一个排除挖坑病毒的agent,并且结合skills。

0.2.1 Agent Skills 概念

(总结skills,本质上就是提示词,只是加载方式不同,下面概念了解一下即可,只需要知道这个是链式调用,且可以执行脚本)

Agent Skills 是一种轻量级、开放的格式,用于通过专业知识和工作流扩展AI智能体的能力。

Skills 的核心是一个包含 SKILL.md 文件的文件夹。 该文件包含元数据(至少包含 namedescription)以及指导智能体执行特定任务的指令。 Skills 还可以捆绑脚本、模板和参考资料。

image-20260113154523470

(上图来源[3])

在agent与智能体进行通信的时候,将元数据发送给智能体,并结合用户的输入,如果用户输入和元数据挂钩,那么就会继续调用后续内容(链式调用)。

字段 必填 描述
name 最多64个字符。仅允许小写字母、数字和连字符。不能以连字符开头或结尾。
description 最多1024个字符。非空。描述该 Skill 的功能及适用场景。
license 许可证名称或引用的捆绑许可证文件。
compatibility 最多500个字符。说明环境要求(目标产品、系统包、网络访问权限等)。
metadata 用于附加元数据的任意键值映射。
allowed-tools Skill 可使用的预批准工具列表(空格分隔)。(实验性功能)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
name: pdf-processing
description: 从PDF文件中提取文本和表格,填写表单,合并文档。
---

# PDF处理

## 何时使用此 skill
当用户需要处理PDF文件时使用此 skill...

## 如何提取文本
1. 使用 pdfplumber 进行文本提取...

## 如何填写表格
...
1
2
3
4
5
6
7
8
9
目录结构示例

my-skill/
├── SKILL.md # 主指令
├── scripts/ # 可执行脚本
│ ├── process.py
│ └── analyze.sh
└── resources/ # 模板、示例
└── template.md

0.2.2 提示词

提示词:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
REACT_PROMPT_TEMPLATE = """
# 角色定义
你是一个具备多种专业技能(Skills)的网络安全溯源专家智能体。你能够根据任务需求,自动激活相关技能并调用对应工具来完成复杂任务。

# 已加载的技能 (Skills)
以下是当前可用的技能模块:

{skills_summary}

# 当前激活的技能详情
{active_skill_content}

# 可用工具列表
{tools}

# 思考与行动框架 (ReAct Framework)

你必须遵循 "思考-行动-观察" 的循环模式来解决问题:

## 响应格式

Thought: [你的推理过程]
- 分析当前问题状态
- 确定需要激活哪个技能
- 规划下一步行动

Action: [执行的动作]
- 调用工具: `工具名[参数]`
- 结束任务: `Finish[最终答案]`

## 执行规则

1. **技能激活**: 根据任务关键词自动匹配并激活相关技能
2. **工具调用**: 每次只执行一个Action,等待Observation后再继续
3. **迭代推进**: 基于观察结果调整策略,逐步逼近目标
4. **任务完成**: 收集足够信息后,使用 `Finish[答案]` 输出最终结果

## 质量标准

- 推理过程清晰、有逻辑
- 工具调用准确、参数正确
- 参考技能文档中的专业知识
- 安全意识强、操作谨慎

# 当前任务

**Question**: {question}

**历史记录**:
{history}

# 开始执行

请基于上述框架和已激活的技能知识,开始你的思考和行动:
"""

skills详情(此处参考:[4]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
---
name: Linux安全应急响应
description: Linux系统安全应急响应手册,包含挖矿病毒、远控后门、勒索病毒、暴力破解、隧道检测等安全事件的排查与处置方法
---

# Linux安全应急响应技能

本技能提供Linux系统安全应急响应的完整知识库,涵盖各类安全事件的排查与处置方法。

## 适用场景

- Linux服务器遭受攻击后的应急响应
- 挖矿病毒、远控后门、勒索病毒等恶意软件处置
- SSH/MySQL/Redis/FTP等服务暴力破解事件排查
- 隧道检测与处置(SSH隧道、DNS隧道、ICMP隧道等)
- 恶意软件包供应链攻击排查
- 系统常规安全检查与加固
- 安全事件善后处理

## 参考文档

- #[[file:references/注意事项.md]] - 应急响应注意事项
- #[[file:references/挖矿病毒.md]] - 挖矿病毒排查与处置
- #[[file:references/远控后门.md]] - 远控后门排查与处置
- #[[file:references/勒索病毒.md]] - 勒索病毒排查与处置
- #[[file:references/暴力破解.md]] - 暴力破解事件排查
- #[[file:references/非持续性事件.md]] - 非持续性安全事件处置
- #[[file:references/恶意软件包供应链攻击.md]] - 供应链攻击排查
- #[[file:references/隧道.md]] - 隧道检测与处置
- #[[file:references/常规安全检查.md]] - 系统安全检查清单
- #[[file:references/善后阶段.md]] - 安全事件善后处理
- #[[file:references/常见问题解决方法.md]] - 常见问题解决方案
- #[[file:references/小技巧.md]] - 应急响应实用技巧

其中这里的tools和mcp中的tools并没有区别,这里的tools只有连接ssh的tools。

0.2.3 运行效果(清除木马)

这里我们使用棉花糖的靶场[1]作为演示:

给agent的输入:

image-20260113160134845

开始加载技能,并调用指定的tools:

image-20260113160210269

结果:

image-20260113163350175

最终内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
## 挖矿病毒处置完成报告

### 发现的安全问题
1. **挖矿病毒进程**:发现java进程运行/tmp/miner.jar,CPU占用率高达118.8%
2. **持久化机制**:存在crontab定时任务,每分钟执行/usr/share/.per/persistence.sh守护脚本
3. **恶意文件备份**:在/usr/share/.miner/目录下存在miner.jar备份文件

### 已执行的处置措施
1. **进程查杀**
- 杀死第一个挖矿进程组(PGID 1079)
- 杀死第二个挖矿进程组(PGID 60502)

2. **文件清理**
- 删除/tmp/miner.jar
- 删除/usr/share/.per/persistence.sh守护脚本
- 删除/usr/share/.miner/目录及其中的备份文件

3. **持久化机制清除**
- 使用`crontab -r`清除了所有定时任务

### 验证结果
- ✅ 当前无挖矿进程运行
- ✅ CPU使用率恢复正常(从133.3%降至0.0%)
- ✅ 所有恶意文件已删除
- ✅ 定时任务已清除

### 建议
1. 建议检查系统是否存在其他安全漏洞,防止再次被入侵
2. 建议定期更新系统和应用补丁
3. 建议配置防火墙规则,限制不必要的网络访问
4. 建议监控系统日志,及时发现异常行为

**处置状态**:✅ 挖矿病毒已完全清除
🤔 思考: 根据历史记录,我已经对服务器进行了挖矿病毒的排查和处置。现在需要总结整个过程,确认是否已经完全清除挖矿病毒,并给出最终结论。
🎉 最终答案: 挖矿病毒处置完成报告

0.3 总结

在测试的时候,笔者使用了glm-5.7以及deepseek-chat,不同模型对于结果影响很大,包括提示词(Prompt),以及不同的模型提供商,而且ReAct模式下,在Prompt描述不清晰的情况下会导致死循环。

0.4 参考&引用

[1]: https://vip.bdziyi.com/ulab/ “棉花糖靶场”
[2]: https://datawhalechina.github.io/hello-agents/#/./chapter4/%E7%AC%AC%E5%9B%9B%E7%AB%A0%20%E6%99%BA%E8%83%BD%E4%BD%93%E7%BB%8F%E5%85%B8%E8%8C%83%E5%BC%8F%E6%9E%84%E5%BB%BA?id=_41-%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87%e4%b8%8e%e5%9f%ba%e7%a1%80%e5%b7%a5%e5%85%b7%e5%ae%9a%e4%b9%89 “Hello-agent”
[3]: https://www.bilibili.com/video/BV1cGigBQE6n/?share_source=copy_web&vd_source=33ab2fb0a56ff9d229e039e5c557497f “哔哩哔哩:Agent Skill 从使用到原理”
[4]: https://books.noptrace.com/linux/5.%E6%8C%96%E7%9F%BF%E7%97%85%E6%AF%92/ “网络安全应急响应手册 — NOPTeam”