lateral-move-ssh · git:20260801.6c9c129 · 2026-08-01 · sha256 84747e9d5f04c713
lateral-move-ssh git:20260801.6c9c129A
Immutable. This exact content is served forever at /api/v1/blob/84747e9d5f04c713.
--- name: lateral-move-ssh description: 使用已授权且已匹配的 SSH 私钥,对明确指定的内网 Linux 目标执行单跳登录和最小分诊,验证能否获得对任务有价值的新立足点。当红队人员已有目标、用户名、私钥路径并明确要求横向验证时使用;不得用于密码喷洒、用户名猜测或自动多跳。 --- # SSH 单跳横向验证 用一次受控认证回答:凭据是否有效、远端权限是什么、新立足点是否比当前主机更接近演练目标。 ## 行动目标 - 验证一条明确的“源立足点—凭据—目标”路径。 - 成功后在同一 SSH 会话中完成最小主机分诊。 - 判断新主机的权限收益、网络收益、凭据收益和任务价值。 - 达到目标或没有新增价值时停止,不自动继续下一跳。 ## 必要输入 - 用户授权的目标主机和端口。 - 明确用户名,不猜测常见账号。 - 可直接引用的私钥路径或既有 SSH 配置。 - 已知或待核验的主机密钥指纹。 - 本次只读远端命令和成功标准。 缺少凭据时交接 `hunt-credentials`;缺少目标时请求用户提供,不自动扫描网段。 ## 授权与 ROE - 风险等级:high;访问模式:active-login。 - 每次确认只覆盖一个目标和一组凭据。 - 不通过命令行参数传递明文密码,不喷洒、不轮换账号或凭据。 - 不跳过主机密钥校验,不进入交互 Shell。 - 不修改远端文件、authorized_keys、任务、服务或日志。 - 不在新主机自动继续横向;每一跳都要重新选择路径并确认。 - 摘要记录凭据来源和指纹,不记录密码或私钥正文。 ## OPSEC 与失败预算 - 主机指纹采集最多一次,登录认证最多一次。 - `Permission denied` 后立即停止,不用其他用户名或密钥补试。 - 超时或拒绝后不自动扫描替代端口。 - 成功后所有分诊在一次连接中完成,减少认证和会话日志。 - 预先说明目标 `auth.log`/`secure`、lastlog/wtmp 和网络监控可见性。 ## 目标优先级 只有满足必要输入的候选才可执行。优先选择: 1. 与用户指定业务目标直接相关的主机。 2. 已有 SSH config/known_hosts 关联且凭据映射明确的主机。 3. 预计带来新网段、运维权限、关键服务或更高权限的主机。 4. 成功率更高、失败锁定风险更低、噪声更可控的路径。 不要仅因 22 端口开放就尝试登录。 ## 工作流 1. 读取摘要,确认源立足点、目标价值、凭据来源和授权边界。 2. 创建计划:路径核验、用户确认、单次登录、价值评估与交接。 3. 只读检查 SSH 客户端、私钥路径、权限、公钥指纹和 known_hosts。 4. 主机密钥未知时低频采集一次指纹,并与登录动作一起请求确认。 5. 调用 `request_user_input`,列明源/目标、端口、用户名、凭据来源、主机指纹、远端命令、认证次数、日志影响和停止条件;随后停止本轮。 6. 用户确认后执行批准的单次登录和一次性分诊。 7. 评估新立足点价值,用一次摘要追加保存结果并完成计划。 ## 确认前核验 ```bash command -v ssh; ls -l <keyfile>; ssh-keygen -lf <keyfile>.pub 2>/dev/null ssh-keygen -F <target> 2>/dev/null ``` 只有私钥时,可用 `ssh-keygen -y -f <keyfile>` 派生公钥并计算指纹;不要输出或保存私钥正文。 主机密钥未知时: ```bash ssh-keyscan -T 5 -p <port> <target> 2>/dev/null | ssh-keygen -lf - ``` 指纹在确认前后发生变化时停止,报告潜在中间人风险。 ## 单次登录与分诊 ```bash ssh -o BatchMode=yes -o StrictHostKeyChecking=yes -o ConnectTimeout=5 \ -p <port> -i <keyfile> <user>@<target> \ "echo SSH_OK; whoami; id; hostname; uname -a; cat /etc/os-release 2>/dev/null; ip addr 2>/dev/null || ifconfig 2>/dev/null; ip route 2>/dev/null || netstat -rn 2>/dev/null; ss -tln 2>/dev/null || netstat -tln 2>/dev/null; sudo -n -l 2>/dev/null; ps -eo pid,user,comm --no-header 2>/dev/null | head -60" ``` 如果需要临时 `known_hosts` 文件,创建、使用和清理都必须包含在确认范围内,且严格绑定采集到的指纹。 ## 新立足点价值评估 - 权限收益:root、sudo NOPASSWD、特殊组或仅普通用户。 - 网络收益:新接口、路由、DNS、代理或当前源主机不可见网段。 - 目标收益:是否托管指定业务、数据库、运维或控制服务。 - 凭据收益:是否存在值得后续定向猎取的配置或账号线索;不读取正文。 - 继续成本:下一步的认证、写入、日志和检测风险。 ## 成功与停止条件 成功:收到 `SSH_OK` 和远端身份,且完成价值评估;即使新主机价值低,也视为路径验证完成。 立即停止并报告: - 凭据拒绝、网络超时、端口拒绝或主机密钥异常。 - 目标或远端身份超出授权范围。 - 登录成功但无新增权限、网络或任务价值。 - 下一步需要写入、提权利用或继续横向。 ## 摘要与交接 ```markdown ## SSH 横向路径更新 - 源立足点 → 目标:... - 用户名、凭据来源和指纹:... - 主机指纹与认证结果:... - 远端身份和权限:... - 权限/网络/目标/凭据收益:... - 已产生痕迹:SSH 认证与登录记录 - 建议:继续分诊 / 提权评估 / 凭据猎取 / 停止扩散 ``` 新立足点信息不足时交接 `recon-basic-info`;普通 Linux 用户且提权能推进任务时交接 `escalate-linux-privilege`;出现明确凭据入口时,经用户决定交接 `hunt-credentials`。