完全解剖安全帐号管理器(SAM)结构

完全解剖安全帐号管理器(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结构:

  1. 首先我们需要获取SAM数据库文件,一种常见方法是使用Windows原生CMD命令并以管理员权限运行:copy C:\Windows\System32\config\SAM C:\Windows\security\Database\SAM.sam

  2. 在获取SAM数据库文件后,我们需要获取SYSTEM注册表项,也可以使用CMD命令并以管理员权限运行:reg save HKLM\SYSTEM SYSTEM.hive

  3. 从SAM数据库中,我们可以使用工具如“SAM-Inside”、“Pwdump”或“Fgdump”解析其中的数据结构,其中最为常见的就是提取密码哈希值。以使用“Fgdump”工具为例,命令如下:fgdump.exe -s C:\Windows\security\Database\SAM.sam

  4. 从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技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • AndroidStudio实现能在图片上涂鸦程序

    Android Studio实现能在图片上涂鸦程序攻略 1. 准备工作 在开始编写涂鸦程序之前,确保你已经完成以下准备工作:- 安装Android Studio,并确保其正常运行。- 创建一个新的Android项目,并设置好相关的配置。 2. 添加涂鸦功能 2.1 导入涂鸦库 在项目的build.gradle文件中,添加以下依赖项: dependencies…

    other 2023年9月7日
    00
  • mybatis-plus Wrapper条件构造器updateForSet更新方式

    来分享一下“mybatis-plus Wrapper条件构造器updateForSet更新方式”的完整攻略。 首先,需要说明的是,mybatis-plus是MyBatis的增强工具,在使用过程中比较方便、简单。在进行update操作时,我们常使用的是updateById或者update实体对象的方法,但是这种方式的不足之处是只可以更新指定的列,而不能在不更改…

    other 2023年6月25日
    00
  • C语言详细讲解while语句的用法

    C语言详细讲解while语句的用法 1. while语句的格式 while(循环条件){ // 执行的代码 } while关键字表示循环开始的地方 循环条件是一个表达式,当为真时,执行代码块,否则跳出循环 循环体是被花括号括起来的代码块,可包含一个或多个语句 2. while语句的使用注意事项 循环条件必须是一个可以计算出值的表达式 循环体中必须有能改变循环…

    other 2023年6月27日
    00
  • python的文件锁使用

    简介 在Python中,我们可以使用文件锁来控制对文件的访问。文件锁是一种同步原语,用于协调对共享资源的访问。在多个进程或线程同时访问同一文件时,文件锁可以确保数据的一致性和完整性。 步骤 以下是在Python中使用文件锁的步骤。 步骤1:导入必要的模块 在使用文件锁之前,我们需要导入必要的模块。我们可以使用以下代码导入fcntl和os模块: import …

    other 2023年5月6日
    00
  • Python基础教程之if判断,while循环,循环嵌套

    Python基础教程之if判断,while循环,循环嵌套攻略 本攻略将详细讲解Python中的if判断、while循环和循环嵌套的用法和示例。这些是Python编程中非常重要的基础知识,掌握它们可以帮助你编写更加灵活和高效的代码。 if判断 if判断是一种条件语句,用于根据条件的真假执行不同的代码块。它的基本语法如下: if 条件: # 条件为真时执行的代码…

    other 2023年7月28日
    00
  • 整理Javascript基础入门学习笔记

    整理Javascript基础入门学习笔记攻略 学习Javascript的基础知识是成为一名优秀的前端开发人员的重要一步。下面是一个详细的攻略,帮助你整理Javascript基础入门学习笔记。 1. 学习资源 首先,你需要找到一些优质的学习资源来学习Javascript的基础知识。以下是一些推荐的资源: MDN Web 文档:MDN提供了非常详细和权威的Jav…

    other 2023年8月8日
    00
  • MYSQL中varchar和TEXT的相关问题详析

    MYSQL中varchar和TEXT的相关问题详析 一、varchar和TEXT的区别 1. varchar varchar是MySQL中一种定义数据类型的关键字,用于指定一个可变长度的字符串,其长度不超过指定的最大长度。varchar类型的数据占用的存储空间与其中存放的实际数据长度有关。 CREATE TABLE student( s_id INT PRI…

    other 2023年6月25日
    00
  • Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释

    Visual Studio+VAssistX自动添加注释,函数头注释,文件头注释 在编写代码的过程中,添加注释对于代码可读性和方便后期维护起到了很大的作用。但是手动添加注释会浪费不少时间,特别是在一个工程中有多个文件和函数时。因此,Visual Studio的插件VAssistX就可以很好的解决这个问题,它可以自动添加注释。 VAssistX介绍 VAssi…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部