完全解剖安全帐号管理器(SAM)结构攻略
什么是安全帐号管理器(SAM)
安全帐号管理器(Security Account Manager,SAM)是Windows操作系统中的一个重要组件,负责管理本地帐号与组的信息,包括用户名、密码哈希值、SID等。
SAM结构简介
SAM结构是由多个数据结构组成,其中最为重要的是SAM数据库和SYSTEM注册表项。
SAM数据库存储着本地账户与组的信息,存储文件通常是C:\Windows\security\Database\文件名.sam,其中文件名不重要,但扩展名为“.sam”是固定的。
SYSTEM注册表项中存储着密码哈希值加密相关的参数及加密算法的信息,存储位置通常是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA,下面有多个键值,最重要的是Security和JD,其中Security中存储着密码哈希值加密密钥,JD中存储着指定的密码哈希值算法。
完全解剖SAM结构攻略
现在我们开始完全解剖SAM结构:
-
首先我们需要获取SAM数据库文件,一种常见方法是使用Windows原生CMD命令并以管理员权限运行:
copy C:\Windows\System32\config\SAM C:\Windows\security\Database\SAM.sam
-
在获取SAM数据库文件后,我们需要获取SYSTEM注册表项,也可以使用CMD命令并以管理员权限运行:
reg save HKLM\SYSTEM SYSTEM.hive
-
从SAM数据库中,我们可以使用工具如“SAM-Inside”、“Pwdump”或“Fgdump”解析其中的数据结构,其中最为常见的就是提取密码哈希值。以使用“Fgdump”工具为例,命令如下:
fgdump.exe -s C:\Windows\security\Database\SAM.sam
-
从SYSTEM注册表项中,我们可以使用工具如“Mimikatz”来解析其中存储的加密相关参数和算法信息。以使用“Mimikatz”工具为例,命令如下:
mimikatz> sekurlsa::crypto /system:SYSTEM.hive
,其中输出内容中包含了密码哈希值加密密钥和算法信息。
示例说明
示例一:提取密码哈希值
在第三步中,我们提到使用“Fgdump”工具提取密码哈希值,命令如下:
fgdump.exe -s C:\Windows\security\Database\SAM.sam
输出结果如下:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
...
可以看到,输出结果中包含了用户名、用户SID及加密后的密码哈希值(其中“aad3b435b51404eeaad3b435b51404ee”表示空密码的哈希值)。
示例二:提取加密密钥和算法信息
在第四步中,我们提到使用“Mimikatz”工具提取加密密钥和算法信息,命令如下:
mimikatz> sekurlsa::crypto /system:SYSTEM.hive
输出结果中包含了使用的密码哈希值算法、加密密钥及加密相关参数。例如:
[CRYPTO] AES256 : F657F4D223103F67A76D1264EA6261FD14CD53962AED535CE7B84F1D388FE727
[CRYPTO] AES128 : C493D0A9B42F946E20BE51F6A473EAB3F06B3D81F435A1C6F41E3BAB223231F9
[CRYPTO] RC4 : 1221D8B670F9CF998008770B1506D0FF
...
可以看到,输出结果中包含了使用的密码哈希值算法、加密密钥及加密相关参数,其中AES256、AES128、RC4均为常见的密码哈希值算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:完全解剖安全帐号管理器(SAM)结构 - Python技术站