在获准服务上检查恢复的凭据对

LinuxBeginner
立即练习

介绍

从停用的门户恢复出一个密码,不代表它仍能打开当前员工档案服务。你必须将旧记录对应到获准的当前身份,再测试该准确对应关系。

制作不含密码的影响清单,区分当前仍复用、旧凭据被拒绝、人员不在授权范围、记录尚未解决四种情况。John 执行真实离线恢复;Hydra 执行有限的在线认证;SSH 让你观察认证成功的账户身份。合成目标与 Kali 审计端是共享一个 VM 内核的隔离容器。

请先完成上一节引导实验,或已掌握其中的 John、私密文件和稳定 ID 流程。本单元解释 Hydra 与影响判断。这个全新环境不包含上一 VM 的任何结果。预计约需 50 分钟,包括阅读和普通错误处理;这是作者估计。

在全新环境中重新建立证据

在这一步中,你将确认正常访问,并恢复本单元的原始导出文件。打开 Auditor,起始位置为 /home/auditor/project。无需从上一 VM 复制任何文件。先使用已知的演示登录:

ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 demo@staff-archive whoami

在密码提示处输入 welcome-7;预期看到 demo,然后返回本地提示符。密码输入不可见。这能在测试旧凭据之前确认正常服务访问。输入错误时按 Ctrl+C 取消后重试。连接或主机密钥失败不代表凭据被拒绝;保持严格主机密钥检查开启。

创建私密结果区域,再执行已学过的恢复流程。umask 仅作用于会话,重连后需重新执行。如果 findings 已经存在,请保留并继续。

umask 077
mkdir -m 700 findings
cat inputs/legacy.txt
cat inputs/candidates.txt
OMP_NUM_THREADS=2 john --format=sha512crypt --wordlist=inputs/candidates.txt --pot=/home/auditor/project/findings/audit.pot --session=/home/auditor/project/findings/recovery inputs/legacy.txt
john --show --format=sha512crypt --pot=/home/auditor/project/findings/audit.pot inputs/legacy.txt > findings/recovered.txt
cat findings/recovered.txt

预期看到 portal-17:cedar42、portal-23:pebble7、portal-41:birch81,以及摘要 3 password hashes cracked, 1 left。重复运行可以复用 pot;应检查 --show,而非把没有新增恢复结果当作失败。在此候选预算内,portal-58 仍未解决。

目录错误后,用 pwd 和 cd /home/auditor/project 恢复。修正拼错的路径后重跑受影响的命令。chmod 600 findings/recovered.txt 可以修复过宽的结果权限;其他私密文件必要时采用相同方法。不要修改输入文件或档案服务的当前密码。

仅测试获准的准确凭据对

在这一步中,你将判断哪些恢复记录允许被测试,并用 Hydra 测试两组准确凭据对。留在 Auditor。分别读取身份对应关系和当前授权:

cat inputs/legacy-roster.tsv
cat inputs/scope.tsv

在脑中通过 employee_id 关联两个文件,不要使用显示名称。portal-17 对应 E101,其当前登录名为 mrivera。portal-23 对应 E102,现在是 ncho。另一个 Morgan Rivera 是 E103,该员工没有获准测试的当前身份。不要替此人猜测登录名。E104 有获准的当前登录名,但旧密码没有恢复,因此在此预算内没有可测试的旧凭据对。

Hydra 的 -C 读取每行一组的 login:password 对。这会保留各组关系,而不是将每个登录名与每个恢复的密码组合。printf、\n、单引号和 > 的行为与上一实验相同。只保存这两组获准且已恢复的凭据对:

printf 'mrivera:cedar42\nncho:pebble7\n' > findings/pairs.txt
cat findings/pairs.txt

在以下命令中,-C 选择该文件,-s 选择 SSH 端口,-t 1 将并发限制为一个任务,-w 8 限制响应等待时间。-o 保存 Hydra 的发现。ssh://staff-archive 选择协议及准确目标。Hydra 通常的主机处理方式不同于原生 SSH 的固定密钥流程;只使用这个准备好的内部目标。本课程只授权这两组原始恢复凭据,并不允许扩大猜测范围。

hydra -C findings/pairs.txt -s 12222 -t 1 -w 8 -o findings/hydra.txt ssh://staff-archive

等待完成。预期看到 mrivera 与 cedar42 的成功行,随后出现 1 valid password found 和目标完成摘要。ncho 的凭据对被拒绝。Hydra 输出含有明文凭据,必须保持私密。退出状态为零本身不能证明有可用凭据:完成的运行即使没有有效密码,也可能成功退出。

cat findings/hydra.txt

未完成的运行、连接错误或被禁用的目标,都不能证明密码被拒绝。先检查准确主机、端口和凭据对文件。如果你有意重跑已完成的运行,而 Hydra 提示 hydra.restore,在相同命令中加入 -I 忽略旧恢复文件。这只会重复两次获准尝试,不会扩大范围。不要使用首次成功后即停止的选项,因为两组都需要结果。评分观察原始准确凭据对的实际认证决定,包括拒绝;复制一行 Hydra 成功输出并不足够。

确认身份并记录有明确边界的影响

在这一步中,你将观察认证成功的身份,并编写不含密码的交接清单。留在 Auditor,使用恢复出的密码通过原生 SSH 访问:

ssh -o UserKnownHostsFile=/etc/reuse/known_hosts -o StrictHostKeyChecking=yes -p 12222 mrivera@staff-archive whoami

在密码提示处输入 cedar42。预期看到 mrivera,然后返回本地提示符。档案服务的受限命令返回实际认证的账户,不会打开目标 shell。你已确认旧凭据能到达哪个当前身份。这里展示的影响是认证成功,并不证明可以访问档案中的所有资源。

findings/impact.tsv 必须包含 record_id、employee_id、current_login、result、identity 五列。没有可用的当前登录名,或尚未通过成功认证确认身份时,使用 -。允许的结果值含义如下:

  • current-reused:获准的当前账户接受该员工恢复出的旧密码。
  • current-not-accepted:这组准确的已恢复凭据确实到达服务并被拒绝。这不能证明该账户没有其他弱密码。
  • out-of-scope:恢复成功,但该员工没有获准的当前身份。不要测试猜测的身份。
  • not-recovered:这个字典没有恢复出旧密码。当前是否复用仍未知。

为每条旧记录写一行清单,不要包含密码:

printf 'record_id\temployee_id\tcurrent_login\tresult\tidentity\nportal-17\tE101\tmrivera\tcurrent-reused\tmrivera\nportal-23\tE102\tncho\tcurrent-not-accepted\t-\nportal-41\tE103\t-\tout-of-scope\t-\nportal-58\tE104\tlpark\tnot-recovered\t-\n' > findings/impact.tsv
cat findings/impact.tsv

检查身份对应关系和四种不同结论。修正拼写错误时,编辑 printf 文本后重跑。行顺序可以不同,但所有对应关系必须完整。保留 pot、明文导出文件、凭据对文件和 Hydra 结果的私密性;影响清单是不含密码的交接物。保留演示登录和所有原始账户及密码。本次评估不进行密码轮换:修复是后续任务,需要单独的授权和计划。

总结

你将旧记录对应到获准的当前身份,用 Hydra 测试准确凭据对,并通过 SSH 观察了复用密码的账户。清单把一项已证实的复用与一组被拒绝的凭据、一个不在范围内的身份、一条未解决的记录区分开来。这些结论描述本次限定评估,不认证所有密码或服务均安全。挑战将同样的方法迁移到不同的工作坊人员表和目标。