Hack The Box Academy 实战记录 — 密码攻击 — 编写自定义字典与规则
目的/免责声明
本实战记录旨在弥合Hack The Box模块中理论概念与实际解决练习所需具体逻辑步骤之间的差距(在某些情况下)。它不是直接提供答案,而是引导读者通过一系列小而递增的推理步骤,每一步都强化模块的核心课程,使学生最终不仅能得出正确答案,而且真正理解每个步骤的必要性。通过这样做,本实战记录旨在通过明确和可访问的方式展示其底层逻辑,从而增强模块对整个社区的价值。
模块练习 — Mark的密码是什么?
在本模块中,我们仅快速概述了CeWL工具,如何爬取自定义字典以及为后续使用制作规则集。练习本身期望我们更深入:收集自己的OSINT以进一步练习除显示命令外的其他命令,将其组织成有意义的字典种子,并有条不紊地应用转换,直到生成保证能破解目标哈希的列表。
在以下部分,我们将逐步分解该过程。
步骤1:使用CeWL生成基础字典
首先,我们将利用CeWL的自动网络爬取能力(在这种情况下是杀鸡用牛刀,但我们正在建立肌肉记忆)来生成初始字典,从而节省手动梳理页面内容的时间。首先,我们将从提示中获取OSINT详细信息,并将其嵌入到简单的mark.html文件中,在本地将其作为网站提供服务,然后将CeWL指向它。这种方法模拟爬取真实网页,同时确保Mark的所有个人数据都被捕获到我们的基础列表中。
mark.html
为确保我们的自定义字典相关且有效,我们应仔细选择要包含在CeWL使用的HTML文件中的详细信息。目标是捕获有意义的个人关键词,而不是盲目粘贴整个练习提示。
例如,尽管提示包括公司密码策略的信息(例如最小长度、所需字符),但这作为原始字典材料无用。包含它会用非个人、通用术语(如“大写”、“符号”或“数字”)使输出混乱,这些不太可能出现在实际密码中。
相反,我们仅提取关于目标的特定个人数据点,如姓名、日期、地点、兴趣和家庭成员。这些更可能出现在现实世界的密码组合中。
遵循此逻辑,我们构建一个干净的HTML页面,仅包含关于Mark White的相关OSINT。然后该页面在本地提供服务,并使用CeWL爬取以构建我们目标字典的基础。
切换到mark.html目录并启动http.server:
|
|
mark.html
|
|
生成初始字典
随着HTML页面就位,我们准备使用CeWL生成初始字典。由于页面是扁平且简单的,我们不需要深度蜘蛛或复杂选项。
我们使用以下命令:
|
|
选项说明:
-d 1:蜘蛛深度设置为1,因为我们的本地HTML文件没有链接到任何其他页面。-m 2:我们包含最小长度为2个字符的单词,以捕获短但可能有用的条目,如CA或US。--with-numbers:启用包含数字值,如Mark的出生年份(1998),否则CeWL会忽略。
输出写入到mark_initial.txt。要快速了解捕获了多少唯一单词,我们可以计算文件中的行数:
|
|
步骤2:通过组合扩展字典
在此阶段,我们纳入之前注意到的密码策略详细信息。由于最小密码长度为12个字符,合理假设用户可能将两个或多个个人元素组合成一个密码。
为了在字典中反映这一点,我们从初始关键词生成所有可能的成对组合。这是使用Hashcat的组合攻击模式(-a 1)完成的,该模式将每个单词与每个其他单词(包括自身)连接。
我们运行以下命令:
|
|
这创建了一个新文件mark_pairs.txt,包含所有2单词组合。为了监控列表的增长,我们计算生成了多少条目:
|
|
这些组合显著增加了我们匹配目标密码的机会,尤其是在需要更长密码的策略下。
步骤3:按最小密码长度过滤
在应用更计算密集的基于规则的突变之前(再次,此列表在此上下文中可能不是问题,但我们正在建立肌肉记忆),我们可以通过过滤掉任何不满足最小密码长度12个字符的条目来优化字典。
为了高效地做到这一点,我们使用awk仅保留那些12个字符或更长的组合:
|
|
然后我们检查剩余多少条目:
|
|
这将我们的列表从729个条目减少到仅76个,帮助我们在后续步骤中节省时间和处理能力。
步骤4:使用规则应用自定义字典转换
随着我们过滤后的12+字符条目列表就位,我们准备使用自定义规则应用高级转换,如本模块中介绍。
我们首先使用heredoc在工作目录中创建custom.rule文件:
|
|
确认正确写入:
|
|
此规则集涵盖一系列转换,包括:
- 首字母大写(c)
- 将a替换为@(sa@)
- 将o替换为0(so0)
- 在末尾附加!($!)
- 这些的各种组合
现在,我们使用这些自定义规则处理过滤后的字典:
|
|
最后,我们检查生成了多少转换后的密码候选:
|
|
此步骤将我们的列表扩展到1140个条目 — 每个都符合策略并针对我们的目标定制。
步骤5:使用最终字典破解哈希
随着最终字典(mut_mark_final.txt)准备就绪,最后一步是尝试破解练习中提供的目标哈希。
识别哈希类型
为了确定正确的Hashcat模式,我们首先使用hashid分析哈希格式:
|
|
在候选项中,MD5是最可能的匹配。
为了验证此假设,我们生成一个已知的MD5哈希并比较长度:
|
|
长度和结构与目标哈希匹配,增加了我们这确实是标准MD5哈希(Hashcat模式0)的信心。
破解哈希
现在我们使用模式0和最终自定义字典运行Hashcat:
|
|
-a 0:直接字典攻击模式-m 0:指定MD5哈希模式- 最终字典路径指向我们的自定义文件
过程完成后,如果哈希成功破解,Hashcat将在屏幕上显示恢复的密码。
结论
在本练习中,我们遵循结构化和现实的方法进行针对性密码破解,利用OSINT、自动化和逻辑。从公开可用的个人详细信息开始,我们使用CeWL等工具生成自定义字典,然后通过组合和基于规则的转换来改进和扩展它。
通过基于密码策略进行过滤并使用Hashcat进行最终破解尝试,我们成功展示了精心制作的字典在现实场景中如何高效。此过程突出了在渗透测试期间将技术工具与战略思维相结合的价值。
准备好提升你的黑客技能了吗?
加入Hack The Box — 学习渗透测试和网络安全的终极实践平台。 👉 开始黑客攻击这里 并获得对真实世界实验室、挑战和职业提升技能的访问权限。
whoami
我是Ilias Mavropoulos,TP的渗透测试员,持有PenTest+、eWPT、eJPT、SC-200、Gold BTL1、ISC2 CC认证,以及网络安全硕士学位。
基于希腊雅典地区,我拥有超过十年的IT和网络安全环境经验。
LinkedIn: https://www.linkedin.com/in/imavropoulos
希望你喜欢本实战记录!如果觉得有帮助,请随意与社区中的其他人分享。
网络安全 | 渗透测试 | 密码破解 | 开源情报 | 网络安全培训