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

相关文章

  • feign如何打印出http请求

    Feign 是一个声明式、模板化的 HTTP 客户端,它使得编写 Web 服务客户端变得更简单。我们可以使用它来发送 HTTP 请求到目标服务器,但有时候我们需要查看请求细节以便调试和定位问题。那么,如何打印出 Feign 发送的 HTTP 请求呢?下面是完整攻略。 1. 设置日志级别 在使用 Feign 发送请求时,我们可以设置日志级别来查看请求的详细信息…

    other 2023年6月26日
    00
  • Laravel自动生成UUID,从建表到使用详解

    下面是“Laravel自动生成UUID,从建表到使用详解”的完整攻略。 1. 什么是UUID UUID是Universally Unique Identifier(通用唯一标识符)的缩写,是一种标准的32位数字和字母的组合,可以用来唯一标识一个实体,与数据类型无关,具有唯一性和跨平台性。在Laravel中,可以使用UUID来替代自增长的id作为模型的主键。 …

    other 2023年6月27日
    00
  • MySQL 升级方法指南大全第3/5页

    MySQL 升级方法指南大全 第3/5页 在这个页面中,我们将详细讲解 MySQL 的升级方法。MySQL 是一个常用的关系型数据库管理系统,升级是保持系统安全和性能的重要步骤。 1.备份数据库 在进行任何升级之前,务必备份数据库以防止数据丢失。以下是备份数据库的示例命令: mysqldump -u [用户名] -p [密码] [数据库名] > [备份…

    other 2023年8月18日
    00
  • Windows XP更新 添加对exFAT文件系统格式的支持

    Windows XP更新 添加对exFAT文件系统格式的支持攻略 简介 exFAT是微软发行的一种新型文件系统格式,可以解决FAT32文件系统体积限制和NTFS文件系统兼容性问题。Windows XP本来不支持exFAT文件系统格式,但是可以通过安装相关更新实现对exFAT文件系统格式的支持。 步骤 步骤一:下载KB955704更新 首先,需要下载KB955…

    other 2023年6月27日
    00
  • Gradle相对于Maven有哪些优点

    Gradle和Maven是两种流行的构建工具。虽然它们有很多相同的特性,但是Gradle相较于Maven有以下几个优点: 1. 声明式构建 Gradle使用Groovy语言,可以使用DSL(Domain-Specific Language)定义构建脚本。相比Maven的XML约束,Gradle更加灵活。这使得Gradle的构建脚本更清晰、更易于维护。 以下是…

    other 2023年6月27日
    00
  • 在python中[:-1]是什么意思?

    下面是关于“在Python中[:-1]是什么意思?”的完整攻略: 1. 问题描述 在Python中,有时会到类似于[:-1]这样的代码片段,这是什么意思呢? 2. 解决方法 [:-1]Python中的切片操作符,用于获取一个序列的子序列。具体来说,[:-1]表示从序列的第一个元素开始,倒数第二个元素为止,不括最后一个元素。 以下是两个示例说明: 示例1:获取…

    other 2023年5月7日
    00
  • SpringBoot多环境配置及配置文件分类实例详解

    SpringBoot多环境配置及配置文件分类实例详解 SpringBoot的多环境配置是指在不同的应用环境中使用不同的配置参数。例如,在开发和生产环境中使用不同的数据库地址、账号和密码等参数。 为此,我们需要在应用的配置文件中进行相应的配置。本文将详细介绍SpringBoot多环境配置及配置文件分类,以示例说明。 配置文件分类 SpringBoot的应用配置…

    other 2023年6月25日
    00
  • Springboot的yml配置文件用法

    当我们使用Spring Boot时,可以通过yaml文件(或properties文件)为我们的应用程序配置一些属性。yaml是一种方便的格式化语言,可用于在文件中定义配置项。本文将为大家介绍Spring Boot中yaml文件的用法,包括设置应用程序端口、数据库连接等等。 1. 简介 1.1 YAML是什么 YAML是一种层次性,复合性数据格式,通常起到配置…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部