【CTF-MISC-取证】只有sam和system文件,进行Windows 账户哈希分析 + Hashcat 爆破 + SilentEye 隐写与 OpenSSL 解密 题目第十届“楚慧杯”湖北省网络与数据安全实践能力竞赛\MISC\SAM_and_Steg一、解题思路通过分析Windows系统中的SAM和System文件提取用户密码哈希并爆破同时结合图片隐写、AES加密解密等操作最终获取目标文件flag相关。整个过程涉及Windows系统安全机制、哈希提取与爆破、隐写术、OpenSSL加密等知识点。二、解题全过程含详细解释步骤1获取并分析目标文件1.1 打开压缩包识别核心文件解题初始获取到一个压缩包解压后发现两个关键文件sam文件和system文件。文件作用解释这两个文件均是Windows系统的核心系统文件缺一不可——System文件存储系统注册表信息包含解密SAM文件所需的密钥SAM文件安全账户管理器文件存储Windows系统中所有用户的账户信息包括用户密码的哈希值并非明文密码是密码经过加密运算后的一串字符。下图为解压后看到的两个核心文件sam和system1.2 将文件放入Kali系统进行分析由于后续需要使用Kali Linux系统自带的哈希提取工具samdump2、爆破工具hashcat以及OpenSSL工具因此将解压得到的sam和system文件复制到Kali系统中本次放入Kali的桌面目录方便后续执行命令。下图为文件放入Kali系统后的显示效果步骤2使用samdump2工具提取Windows密码哈希值核心目的从sam文件中提取用户密码的哈希值LM哈希和NTLM哈希为后续密码爆破做准备。由于sam文件经过加密保护必须结合system文件中的密钥才能成功提取哈希因此需要同时使用这两个文件。下图为执行提取命令后的效果2.1 核心命令解析执行的提取命令为samdump2 system sam命令中每个参数的详细解释samdump2Kali系统内置的专门用于提取Windows SAM文件中密码哈希的工具核心功能是读取system文件中的密钥解密sam文件中的哈希信息并输出。system指定Windows系统的system文件路径本次文件在当前目录直接输入文件名即可该文件提供解密sam文件所需的密钥。sam指定Windows系统的sam文件路径该文件存储需要提取的用户密码哈希信息。2.2 提取结果详细解析两条用户记录执行命令后输出了两条用户记录分别对应Windows系统的Administrator管理员账户和Guest访客账户每条记录的格式均为用户名:RID:LM哈希:NTLM哈希:::以下逐一条解析。第一条记录 - Administrator 账户管理员账户Administrator:500:aad3b435b51404eeaad3b435b51404ee:476b4dddbbffde29e739b618580adb1e:::各字段详细解释用户名AdministratorWindows系统默认的管理员账户拥有系统最高权限是我们重点分析的对象。RID500这是Windows系统给管理员账户分配的固定标识符RID即相对标识符无论系统如何配置管理员账户的RID始终为500用于区分不同类型的账户。LM哈希aad3b435b51404eeaad3b435b51404ee这是一个特殊的哈希值并非真正的密码哈希代表两种情况之一要么账户密码为空要么LM哈希功能被禁用Windows系统中LM哈希安全性较低部分系统会默认禁用。NTLM哈希476b4dddbbffde29e739b618580adb1e这是我们需要重点关注的哈希值——它是Administrator账户密码经过NTLM加密算法运算后的结果也是后续进行密码爆破的核心目标破解该哈希值即可得到管理员账户的明文密码。末尾三个冒号为系统默认的字段分隔符无实际含义是SAM文件哈希记录的固定格式。第二条记录 - Guest 账户访客账户*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::各字段详细解释*disabled*表示该账户已被禁用无法用于登录系统因此后续无需对该账户的哈希值进行爆破。用户名GuestWindows系统默认的访客账户权限极低主要用于临时访问。RID501访客账户的固定RID与管理员账户的500区分开。LM哈希与管理员账户的LM哈希一致均为aad3b435b51404eeaad3b435b51404ee代表密码为空或LM哈希禁用。NTLM哈希31d6cfe0d16ae931b73c59d7e0c089c0这个哈希值是Windows系统中“空密码”的固定NTLM哈希也就是说该Guest账户的明文密码为空即便账户已禁用密码仍为空。补充说明本次提取的哈希结果是典型的Windows系统密码哈希格式广泛应用于安全测试、密码恢复和CTF取证场景核心价值在于通过哈希爆破获取明文密码进而获取系统访问权限。步骤3使用Hashcat工具爆破NTLM哈希获取管理员明文密码核心目的通过Hashcat工具利用字典文件rockyou.txt.gz对步骤2中提取到的Administrator账户的NTLM哈希476b4dddbbffde29e739b618580adb1e进行爆破还原明文密码。Hashcat是目前最常用、效率最高的哈希爆破工具之一支持多种哈希类型的爆破。3.1 爆破命令解析执行的爆破命令为hashcat-m1000476b4dddbbffde29e739b618580adb1e /usr/share/wordlists/rockyou.txt.gz命令中每个参数的详细解释-m 1000指定哈希类型为NTLMHashcat中用“1000”表示NTLM哈希这是爆破的关键参数必须与待爆破的哈希类型一致否则无法爆破成功。476b4dddbbffde29e739b618580adb1e待爆破的NTLM哈希值即Administrator账户的哈希值。/usr/share/wordlists/rockyou.txt.gzKali系统自带的密码字典文件是目前最常用的密码字典之一包含1400多万条常见密码压缩格式Hashcat可直接读取无需解压覆盖了大部分简单、常用的密码适合快速爆破。3.2 常用哈希类型代码补充方便后续复用Hashcat中不同哈希类型对应不同的代码本次用到的是NTLM1000以下补充常用的哈希类型代码方便后续遇到其他哈希爆破场景时使用-m 0MD5哈希最基础的哈希类型-m 100SHA1哈希-m 1000NTLM哈希本次使用-m 1400SHA256哈希-m 1700SHA512哈希-m 5500NetNTLMv1哈希-m 5600NetNTLMv2哈希3.3 爆破结果解析执行爆破命令后Hashcat会自动读取字典文件逐一将字典中的密码进行NTLM加密运算与待爆破的哈希值进行比对直到找到匹配的密码即爆破成功。以下是爆破过程的完整输出及关键信息解析┌──(kali㉿kali)-[~/Desktop]└─$ hashcat-m1000476b4dddbbffde29e739b618580adb1e /usr/share/wordlists/rockyou.txt.gz hashcat(v7.1.2)starting OpenCL API(OpenCL3.0PoCL6.0debian Linux, NoneAsserts, RELOC, SPIR-V, LLVM18.1.8, SLEEF, DISTRO, POCL_DEBUG)- Platform#1 [The pocl project]* Device#01: cpu-haswell-Intel(R) Core(TM) i7-10700 CPU 2.90GHz, 2930/5861 MB (1024 MB allocatable), 4MCUMinimum password length supported by kernel:0Maximum password length supported by kernel:256Hashes:1digests;1unique digests,1unique salts Bitmaps:16bits,65536entries, 0x0000ffff mask,262144bytes,5/13 rotates Rules:1Optimizers applied: * Zero-Byte * Early-Skip * Not-Salted * Not-Iterated * Single-Hash * Single-Salt * Raw-Hash ATTENTION!Pure(unoptimized)backend kernels selected. Pure kernels can crack longer passwords, but drastically reduce performance. If you want to switch to optimized kernels, append-Oto your commandline. See the above message tofindout about the exact limits. Watchdog: Temperature abort triggersetto 90c Host memory allocatedforthis attack:513MB(6521MBfree)Dictionary cache built: * Filename..: /usr/share/wordlists/rockyou.txt.gz * Passwords.:14344392* Bytes.....:139921507* Keyspace..:14344385* Runtime...:1sec 476b4dddbbffde29e739b618580adb1e:!checkerboard1 Session..........: hashcat Status...........: Cracked Hash.Mode........:1000(NTLM)Hash.Target......: 476b4dddbbffde29e739b618580adb1e Time.Started.....: Tue Mar3122:08:452026(5secs)Time.Estimated...: Tue Mar3122:08:502026(0secs)Kernel.Feature...: Pure Kernel(password length0-256 bytes)Guess.Base.......: File(/usr/share/wordlists/rockyou.txt.gz)Guess.Queue......:1/1(100.00%)Speed.#01........: 3625.9 kH/s (0.15ms) Accel:1024 Loops:1 Thr:1 Vec:8Recovered........:1/1(100.00%)Digests(total),1/1(100.00%)Digests(new)Progress.........:14340096/14344385(99.97%)Rejected.........:0/14340096(0.00%)Restore.Point....:14336000/14344385(99.94%)Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1Candidate.Engine.: Device Generator Candidates.#01...: #!hottie - !carragold!Hardware.Mon.#01.: Util: 30%Started: Tue Mar3122:08:402026Stopped: Tue Mar3122:08:512026关键信息提炼重点关注Status...........: Cracked表示爆破成功已找到与哈希值匹配的明文密码。476b4dddbbffde29e739b618580adb1e:!checkerboard1这是爆破的核心结果冒号前面是待爆破的NTLM哈希后面是对应的明文密码——!checkerboard1即Administrator账户的明文密码。Time.Started.....: Tue Mar 31 22:08:45 2026 (5 secs)爆破耗时仅5秒由于密码在rockyou.txt字典中且字典已被Hashcat缓存因此爆破速度极快。Recovered........: 1/1 (100.00%) Digests表示1个待爆破的哈希值已全部破解成功无遗漏。下图为爆破过程及结果的可视化截图最终结果成功获取Administrator账户的明文密码——!checkerboard1。步骤4分离System文件核心目的进一步分析System文件的内容确认是否包含其他隐藏信息或密钥本次解题中分离System文件主要是为了查看是否有额外的加密相关信息。分离操作主要是通过相关工具读取System文件的详细内容拆解其内部结构。下图为分离System文件的操作过程及结果截图我们发现了一张额外的图片000240072.jpg从最后一张截图中可提取关键信息OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)提示后续可能会用到OpenSSL工具进行加密解密操作与后续步骤中的AES解密呼应。步骤5用010 Editor查看SAM文件寻找隐藏密码核心目的除了通过samdump2工具提取哈希值SAM文件中可能还隐藏有明文密码或其他关键信息因此使用010 Editor一款专业的二进制文件编辑工具打开SAM文件查看其二进制内容寻找隐藏线索。工具说明010 Editor支持二进制文件的查看、编辑能够清晰显示文件的十六进制内容适合寻找隐藏在文件中的明文信息、特殊字符等是取证分析中常用的工具。操作结果在SAM文件的末尾发现一串明文密码——ps4w0rd该密码后续将用于AES加密文件的解密是关键线索。下图为010 Editor查看SAM文件及发现隐藏密码的截图步骤6使用SilentEye工具解析图片隐写获取加密文件核心目的解题过程中通常会有图片隐写将文件或信息隐藏在图片中的环节本次解题中结合前面获取的线索使用SilentEye工具一款专门用于图片隐写分析和解密的工具提取图片中隐藏的内容。6.1 SilentEye工具获取工具的项目地址和下载地址如下可直接下载使用无需额外配置项目地址https://github.com/TajangSec/silenteye/releases/tag/0.4.1下载地址https://github.com/TajangSec/silenteye/releases/download/0.4.1/silenteye.exe6.2 隐写解析过程打开SilentEye工具导入待分析的图片本次解题中的隐写图片000240072.jpg输入密码点击解密发现里面有一个文件AES256点击解密将文件保存出来将AES256文件拷贝到kali中6.3 解析结果通过SilentEye工具解析后成功提取出图片中隐藏的一个文件该文件名为AES256文件内容是一段OpenSSL的enc密文即经过AES-256加密后的内容需要使用对应的密码进行解密才能获取文件中的核心信息后续步骤将进行解密。步骤7使用OpenSSL工具解密AES256文件获取最终目标核心目的使用OpenSSL工具结合步骤5中从SAM文件中找到的隐藏密码ps4w0rd对步骤6中提取到的AES256加密文件进行解密得到最终的目标文件flag.tar.gz。工具说明OpenSSL是一款强大的加密解密工具支持多种加密算法包括AES-256本次使用其解密功能还原AES加密的文件。7.1 解密命令解析执行的解密命令为openssl enc-d-aes-256-cbc-mdsha256-kps4w0rd-inAES256-outflag.tar.gz命令中每个参数的详细解释openssl enc调用OpenSSL的加密解密模块enc即encryption/decryption。-d表示执行“解密”操作默认是加密-d参数用于切换为解密。-aes-256-cbc指定解密算法为AES-256-CBC与加密时使用的算法一致否则无法解密AES-256是一种高强度的对称加密算法安全性极高。-md sha256指定消息摘要算法为SHA256用于验证加密和解密的完整性确保文件未被篡改。-k ps4w0rd指定解密密码为ps4w0rd即步骤5中从SAM文件中找到的隐藏密码密码必须与加密时使用的密码一致。-in AES256指定待解密的文件为AES256即步骤6中从图片隐写中提取的加密文件。-out flag.tar.gz指定解密后的输出文件为flag.tar.gz即最终的目标文件后续可解压该文件获取flag。7.2 解密过程及结果执行解密命令后若密码正确、算法匹配将成功解密AES256文件生成flag.tar.gz压缩包。以下是解密过程的截图解密结果成功生成flag.tar.gz压缩包后续只需解压该压缩包即可获取本次解题的最终目标flag。三、附录常见问题解决附录1Hashcat重复爆破提示无需重复执行问题描述如果之前已经破解过该NTLM哈希再次执行Hashcat爆破命令时工具会直接退出不再重复执行爆破操作。原因Hashcat会缓存已破解的哈希结果避免重复运算提高效率。现象截图解决方法无需处理若需重新爆破可删除Hashcat的缓存文件默认缓存路径为~/.hashcat或更换哈希值重新执行命令。附录2Hashcat内存不足提示解决方法问题描述执行Hashcat爆破命令时出现如下错误提示* Device#1: Not enough allocatable device memory or free host memory for mapping.错误原因分析Hashcat无法为字典文件如rockyou.txt.gz分配足够的内存进行映射系统可用内存不足如Kali系统内存较小或同时运行了其他占用内存的程序字典文件过大rockyou.txt.gz约130MB若系统内存小于1GB可能出现此问题。解决方法关闭Kali系统中其他占用内存的程序释放可用内存将rockyou.txt.gz解压后筛选出常用密码精简字典减小字典文件大小增加Kali系统的内存如虚拟机运行Kali可调整虚拟机内存分配建议至少4GB。四、解题总结本次解题全程围绕“Windows系统取证哈希爆破隐写分析AES解密”展开核心步骤为获取sam和system文件→提取NTLM哈希→Hashcat爆破获取明文密码→分析sam和system文件寻找隐藏线索→图片隐写提取加密文件→OpenSSL解密获取目标文件。整个过程串联了多个安全工具的使用涉及Windows系统安全、哈希加密、隐写术等知识点适合作为CTF取证类题目的实战笔记后续可复用本次用到的工具命令和分析思路应对类似解题场景。