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

一次小事故:安全账户管理器初始化失败 这两天在准备给新员工培训的资料,想打算给他们演示windows下文件权限控制例子,不小心改掉了注册表SAM键值权限属性,重启系统后再也无法进入系统。 阅读详情

 一、摘要  

  分析安全帐号管理器结构是在一个多月前做的事情了,只零碎地记录下片段,没有发布过。不发布的主要原因是安全帐户管理器(SAM)是WIN系统帐户管理的核心,并且非常系统化,我也有很多地方仅仅是进行的推断和猜测,同时,SAM hack可能造成启动时lsass.exe加载帐户管理器出错,即便是安全模式也不能修复(启动时候必然加载SAM)使得整个系统启动崩溃(我通常需要依靠第二系统删除SAM文件来启动)。至于现在发布出来,主要是因为Adam和叮叮的《克隆管理员帐号》种所描述的制作rootkit办法隐蔽性和危害性,对SAM的结构的熟悉,可以帮助安全维护人员做好安全检测(当然也可能让不良企图者利用)。这里只介绍关于SAM的内容,同Security相关的暂时不公开。
  
二、关于SAM
  
  不要误解了SAM,这不是一个文件sam这么简单。SAM(Security Accounts Manager安全帐户管理器)负责SAM数据库的控制和维护。SAM数据库位于注册表HKLMSAMSAM下,受到ACL保护,可以使用regedt32.exe打开注册表编辑器并设置适当权限查看SAM中的内容。SAM数据库在磁盘上就保存在%systemroot%system32config目录下的sam文件中,在这个目录下还包括一个security文件,是安全数据库的内容,两者有不少关系。
  
  SAM数据库中包含所有组、帐户的信息,包括密码HASH、帐户的SID等。这些内容在后面详细介绍。分析的系统中文Win2K Adv Server为例。
  
三、注册表中SAM数据库的结构
  
  展开注册表HKLMSAMSAM:
  
  HKLM---SAM
  |---SAM
  |---Domains
  | |---Account
  | | |---Aliases
  | | | |---Members
  | | | |---Names
  | | |---Groups
  | | | |---00000201
  | | | |---Names
  | | | |---None
  | | |---Users
  | | |---000001F4
  | | |---000001F5
  | | |---000003E8
  | | |---000003E9
  | | |---Names
  | | |---Adaministrator
  | | |---Guest
  | | |---IUSR_REFDOM
  | | |---IWASM_REFDOM
  | |---Builtin
  | |---Aliases
  | | |---00000220
  | | |---00000221
  | | |---00000222
  | | |---00000223
  | | |---Members
  | | | |---S-1-5-21-1214440339-706699826-1708537768
  | | | |---000001F4
  | | | |---000001F5
  | | | |---000003E8
  | | | |---000003E9
  | | |--- Names
  | | |---Administrators
  | | |---Users
  | | |---Guests
  | | |---Power Users
  | |---Groups
  | | |---Names
  | |
  | |---Users
  | |---Names
  |
  |---RXACT
  
  这是机器上注册表中的SAM树。
  
  对照SAM文件中的内容,可以看出,注册表中的SAM树实际上就是SAM文件中一样。不过,SAM文件中是先列RXACT然后在是Domains内容(以此类推),文件中的表达顺序和注册表中的树形顺序是相反的。如果习惯于看文件内容,从文件的0000h到0006Ch,表示的是SAM数据库所在的位置:systemrootsystem32configsam,然后是一端空白,直到01000h(hbin),从这里开始就是整个数据库的内容。SAM数据库的文件内容不作主要介绍,不过会穿插着介绍,有兴趣可以自己去研究。
  
四、SAM数据库的结构和主要内容:
  
  在整个数据库中,帐号主要内容存在于下面这些位置:
  
  在Domains下就是域(或本机)中的SAM内容,其下有两个分支“Account”和“Builtin”
  
  DomainsAccount是用户帐号内容。
  
  DomainsAccountUsers下就是各个帐号的信息。其下的子键就是各个帐号的SID相对标志符。比如000001F4,每个帐号下面有两个子项,F和V。其中Names下是用户帐号名,每个帐号名只有一个默认的子项,项中类型不是一般的注册表数据类型,而是指向标志这个帐号的SID最后一项(相对标识符),比如其下的Administrator,类型为0x1F4,于是从前面的000001F4就对应着帐户名administrator的内容。由此可见MS帐号搜索的逻辑。

推断一:从注册表中结构来看帐号,如果查询一个帐户名refdom的相关信息,那么,微软从帐号名refdom中
  
  找到其类型0x3EB,然后查找相对标志符(或者SID)为000003EB的帐号内容。所有的API函数(比如NetUserEnum())都是这样来执行的。因此,如果改变refdom帐号中的类型0x3EB为0x1F4,那么这个帐号将被指向类000001F4的帐户。而这个帐号000001F4就是administrator帐户,这样,系统在登录过程中就把refdom帐号完全转为了administrator帐号,帐号refdom所使用的所有内容、信息都是adminisrtator内容,包括密码、权限、桌面、记录、访问时间等等。这个推断应该成立,但是,将意味着两个用户名对应一个用户信息,系统启动上应该会发生错误!
  
  推断一是在以前分析结构的时候即得出了,揭示了登录过程中及之后帐户名和SID关联的关系。
  
  DomainsAccountUsers00001F4,这就是administrator的帐户信息(其他类似)。其中有两个子项V和F。
  
  项目V中保存的是帐户的基本资料,用户名、用户全名(full name)、所属组、描述、密码hash、注释、是否可以更改密码、帐户启用、密码设置时间等。项目F中保存的是一些登录记录,比如上次登录时间、错误登录次数等,还有一个重要的地方就是这个帐号的SID相对标志符。
  
  以前分析结构的时候没有留意到这个地方,这就是Adam提出的思路。这个地方就是这个SID相对标志符在注册表中一个帐号出现了两遍,一个是在子键000001F4,另一个地方就是子键中项F的内容里面,从48到51的四个字节:F4 01 00 00,这实际上是一个long类型变量,也就是00 00 01 F4。当一个标志出现在两个地方的时候就将发生同步问题。明显,微软犯了这个毛病。两个变量本应该统一标志一个用户帐号,但是微软把两个变量分别发挥各自的作用,却没有同步统一起来。
  
  子键中000001F4用来同用户名administrator对应,方便通过用户查询帐户信息,比如LookupAccountSid()等帐号相关API函数都是通过这个位置来定位用户信息的,这个关联应该是用在了帐户登录以后。而项目V值中的F4 01 00 00是同帐户登录最直接相关联的。
  
  推断二:WIN登录的时候,将从SAM中获得相对标志符,而这个相对标志符的位置是V值中的 F4 01 00 00。但是,帐户信息查询却使用的SAM中子键内容。
  
  推断二的原因假设(假设一):在帐户登录的时候,登录过程获得SAM数据库中用户名使用的帐户记录信息中的相对标志符值(相当于V值中的 F4 01 00 00),帐户登录之后,所有跟帐户相关的之后,这个值不再被API函数使用,而相对标志符由一个数据记录项的字段名代替(相当于子键000001F4)。微软犯了一个同步逻辑问题!
  
  推断二是根据Adam提出而进行的,以前没有这样推断过。 推断二如果成立,揭示了在登录过程中帐户SID进行的过程。这就是为什么V中的值都是跟帐户登录记录(登录时间,密码错误次数等)相关的原因。同时,因为F中保存了一个用户名内容,而API函数查询的是这个用户名,所以Adam的克隆办法还是容易露脸,经叮叮补充过后,这个用户名也被恢复原用户名了,从用户名上检测就相对难了。
  
  上面对项目V的介绍可以知道,其中保存的是帐户的基本资料,用户名、用户全名(full name)、所属组、描述、密码hash、注释、是否可以更改密码、帐户启用、密码设置时间等。现在来关心的是密码HASH。
  
  假设二:在帐户的项V中,包含了用户HASH,分别包括是LM2和NT的密码加密散列,Crack时,可分开进行。毕竟LM2简单。
  
  DomainsBuiltin下的内容是同帐户组相关的。其结构同Account下的类似,并且也存在相应的问题,就不再罗嗦了。
  
  SAM数据库保存的文件sam中,可没有注册表中的这么简明的内容,而主要是通过偏移量、长度来定位内容。并且单个帐号的信息都是集中在一块的,而不是象注册表形式这样分隔开(名字的一个键而内容在另外一个键)。

  sam文件中,可根据这些下面这些分隔符来定位数据含义:
  
  nk (6E 6B) 键或者子键名
  vk (76 6B) 相应的值
  if (6C 66) 子键列表
  sk (73 6B) 权限
  
五、关于SAM数据库分析的结论:
  
  SAM HACK是非常有危险性的。不正确的修改会将系统的安全数据管理器破坏,造成系统启动问题,虽然可以通过删除SAM文件来让启动恢复。如果能够熟悉SAM的结构,你将发现,可以对用户名与用户名之间、用户组与用户组之间进行调换,以及帐户和帐户组伪造,完全打破微软的帐户格局。并且非常隐蔽,让帐户相关的API函数摸不着头脑。虽然微软处理帐号信息中犯了不少逻辑问题,但是安全帐号数据库并非不安全,所有操作都必须能完全拥有管理员权限。
  
  当隐蔽后门的办法被提出来之后,一定会让不少“黑客”利用,管理员也应该多多熟悉相关技术,作好安全检测。

SAM机架破解版.exe 软件已破解 可直接使用效果器可编辑 也可以添加现成组件 立即下载

相关推荐

基于PWM的汽车仪表步进电机微步驱动优化实践

本文深入探讨了基于PWM的微步驱动技术,用于优化汽车仪表步进电机的运行性能。通过将传统的分步驱动升级为PWM微步细分驱动,利用正弦/余弦查表法合成旋转磁场,有效消除了指针抖动与噪声,实现了指针的平滑、精准运动。文章以STM32和VID2905电机为例,提供了详细的硬件连接、代码实现及高级优化技巧,为提升汽车仪表体验提供了实用方案。

weixin_29169505的博客 514

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

解剖安全帐号管理器(SAM)结构(转)[@more@]  一、摘要    分析安全帐号管理器结构是在一个多月前做的事情了,只零碎地记录下片段,没有发布过。不发布的主要原因是安全帐户管理器(SAM)是WIN系统帐户管理的核心,并且...

263

从仿真到打样:PMOS栅极泄放电路设计全流程复盘与三个踩坑点总结

本文详细复盘了PMOS栅极泄放电路从仿真到打样的全流程设计,重点总结了三个关键踩坑点:三极管BE结过压击穿、静态功耗超标和栅极振荡现象。通过优化缓启动电路、改进保护设计和布局调整,最终实现18ms开通时间、190μs关断时间和8μA静态功耗的工业级性能指标,为类似电源开关设计提供实用参考。

weixin_28693683的博客 371

一次解决“计算机管理”中用户列表为空的经历

最近XPFOX叫我看看他朋友的服务器,说计算机管理的“本地用户和组”的“用户”没有显示的!我第一想到的就是有人进了服务器,在他朋友的服务器上创建隐藏的帐号,人为错误导致列表不显示!以前测试隐藏帐号时也试过这样!我进了他的服务器,在“本地用户和组”下的“用户”,真的是没有显示!在 CMD 里 输入 net user 可以显示全部帐户我再去看看 HKEY_LOCAL_MACHINE\SAM\SAM 里

随风的专栏 1066

初探802.11协议(0)——PCF/DCF与CSMA/CA机制

IEEE802.11 CSMA/CA机制与DCF机制

FanFF的博客 4507

172、摄像头振动与异响分析:VCM 共振、OIS 机械噪声的用户体验改善

摘要: 本文深入探讨了手机摄像头模组中VCM(音圈马达)与OIS(光学防抖)系统产生的振动异响问题及其解决方案。通过实际案例,分析了VCM弹簧片共振、OIS悬丝机械噪声以及系统级共振的成因,提出了硬件改进(如弹簧片厚度调整、阻尼材料应用)、驱动优化(PWM频率微调、软启动配置)和算法避让等综合解决策略。特别强调了量产阶段隐蔽性问题的排查技巧,包括扫频测试、机械阻尼处理和用户体验优化方法(如频率掩蔽)。作者建议工程师避免过度依赖仿真数据,重视实物测试,并与声学团队协作,以解决这类"玄学"问题,提升用户感知体验

sundong_81的博客 131

内网渗透体系学习4

内网

m0_55772907的博客 1104

VTK实战完整教程介绍

该专栏以VTK提供的Example为基础,讲解VTK中的相关接口和使用方法。订阅该专栏,带你了解所有VTK的功能,以便VTK更好的解决工作中遇到的问题。一起学习起来吧!

qq_40041064的博客 2511

众多的操作系统中哪种操作系统更安全(转)

众多的操作系统中哪种操作系统更安全(转)  在很多用户印象里,Windows系统存在着很多漏洞,容易受到尼姆达、红色代码、冲击波、震荡波等病毒的攻击。Windows不安全的证据还有,在Windows中使用Active-X控件也存...

cuemes08808的博客 622

OpenClaw实战系列07:定时任务与自动化工作流实战——让AI从“被动响应”到“主动执行”

通过本文的学习,你已经将 OpenClaw 从“被动应答”升级为“主动执行”的自动化引擎。定时简报:每天8点自动生成行业简报推送飞书/钉钉GitHub事件触发:PR合并自动触发Code ReviewAgent间协作:数据采集→分析→报告全自动流水线系统监控:定时检查服务器状态,异常自动告警核心收获掌握 OpenClaw 内置 Cron 系统的三种调度模式学会 Webhook 配置和事件触发机制理解 Agent 间通信的两种方式(sessions_spawn / sessions_send)

PeterPan的博客 691

ROS2 - 乐动激光雷达 LD06

STL-06P 主要由激光测距核心,无线传电单元,无线通讯单元,角度测量单元、电机驱动单元和机械外壳组成。STL-06P 测距核心采用 DTOF 技术,可进行每秒 5000 次的测距。每次测距时,雷达发射出红外激光,激光遇到目标物体后被反射到单光子接收单元。

机器人控制与仿真应用 3496

系统安全从自己电脑的“安全红线”开始(转)

系统安全从自己电脑的“安全红线”开始(转)[@more@]  所谓安全红线,就是你机器的安全底线,我想这就不必我过多的解释了。但是大家在一般测试时都开这防火墙和杀毒软件测试,这其实也没有什么不妥的。但是此时测试的是你在有防御能力...

cuanjun1153的博客 187

从零开始理解Linux中断架构(1)-前言

前段时间在转行手撸WIFI路由器,搞wifi路由器需要理解网络驱动程序,以太网卡驱动程序,无线WIFI驱动程序,而网卡驱动的关键路径就在中断程序中,需要了解NIC设备驱动程序如何收发数据,为了彻底的知道数据包是如何二层传递上来的,又需要了解一点Linux中断系统。第一次看到这张表是无感的,大概能够看懂的就是那个中断次数,因为不停的cat,这个数值会一直不停的增加。第一列是逻辑中断号,第二三列是中断次数,第四列是中断控制器的名字,第五列是硬件中断号,第六列 中断类型,第七列是 中断源关联设备。

maxleng的专栏 881

深入了解自己电脑的“安全红线”(转)

深入了解自己电脑的“安全红线”(转)[@more@]  所谓安全红线,就是你机器的安全底线,我想这就不必我过多的解释了。但是大家在一般测试时都开这防火墙和杀毒软件测试,这其实也没有什么不妥的。但是此时测试的是你在有防御能力下的情...

cuanjun1153的博客 211

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

系统安全:WindowsXP系统的五点安全策略(转)

系统安全:WindowsXP系统的五点安全策略(转)[@more@]  随着Windows XP在个人电脑上面的普及,越来越多的人开始与Windows XP形影不离,尽管Windows XP有着超强的稳定性和可靠的安全性。然而,...

cuanjun1153的博客 221

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

昔日的加密英雄:MD5算法不安全(转)

昔日的加密英雄:MD5算法不安全(转)[@more@]  以色列科技研究所研究员EliBiham和Rafi Chen原本计划在会中发布报告,指出几种破解“SHA-0”演算法安全功能的方法。现在,他们打算在会议中进一步谈论有关“S...

cuanjun1153的博客 608

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

eTrust全方位实现安全管理(转)

eTrust全方位实现安全管理(转)[@more@]  eTrust作为CA的四大品牌之一,是一套全面管理电子商务环境安全的解决方案套件,它提供了对企业环境进行保护所需的综合安全功能,能够保护从浏览器到大型主机的所有资源,并管理...

cuanjun1153的博客 967

ISA2004的结构图,与ISA2K的不同(转)

ISA2004的结构图,与ISA2K的不同(转)[@more@]          ISA SERVER2000  可以看出2004以把所有的服务通过防火墙来处理。   本文来自:http://www.linuxpk.c...

csd3176的博客 131

微软警告:Java虚拟机发现2个重要安全漏洞(转)

微软警告:Java虚拟机发现2个重要安全漏洞(转)[@more@]  微软公司9月18日晚上向Windows操作系统的所有用户发出警告说,有两个重要的安全漏洞能够让恶意的攻击者控制受害者的计算机。  ??  这两个安全漏洞在执行...

cuanjun1153的博客 288

防下载网站文件后缀被改为asp的安全隐患(转)

防下载网站文件后缀被改为asp的安全隐患(转)[@more@]  可能是随着网络安全技术的发展吧,管理员的素质都在提高,在使用access+asp系统时,为不数据库被人下载,到把mdb改为asp或asa.先不说直接改后缀,直接可...

cuanjun1153的博客 208

针对MSSQLSERVER的安全防御方案(转)

针对MSSQLSERVER的安全防御方案(转)[@more@]  我将整个防御方案分为两个部分:防御MS SQL SERVER服务本身的漏洞解决方案、防止SQL注入脚本攻击  的解决方案。  1)防御MS SQL SERVER服...

csd3176的博客 355

网络处理器与安全设备的结合提高了安全性(转)

网络处理器与安全设备的结合提高了安全性(转)[@more@]  NP被看好,与网络设备和安全设备功能界限的日趋淡化息息相关。交换机和路由器需要支持安全模块,防火墙需要支持VLAN管理和IDS功能。这就为能够进行完整性校验、身份认...

cuanjun1153的博客 151

如何成为一名黑客(新手入门到大师3集)

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。需要完整版PDF学习资源私我。

1042
上一篇: pwdump2/samdump.c浅析与改进
下一篇: System Security Administration for NT
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值