一些Windows服务器系统登录安全与NTFS技巧
windows中对用户帐户的安全管理使用了安全账号管理器(Security Account Manager)的机制,安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识都是完全不同的。 安全账号管理器的具体表现就是%SystemRoot%system32configsam文件。sam文件是Windows的用户帐户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中。 如果我们用编辑器打开这些sam文件,除了乱码什么也看不到。因为NT系统中将这些资料全部进行了加密处理,一般的编辑器是无法直接读取这些信息的。 SAM文件的位置: 第一个:C:WINDOWSrepairSAM 第二个:C:WINDOWSsystem32configSAM 第一个位置的SAM是账户数据库的备份文件,第二个是系统正在使用的账户数据库文件。 SAM是构成windows注册表里的五大分支之一,具体内容保存在%SystemRoot%system32configsam里;在windows域控制器上,账户和口令字谜文保存在活动目录(Active Directory,AD)里,对应文件是:%SystemRoot%ntdsntds.dit这里面包含不止是Username和HASH,还有OU、Group等等。破解方式: (1)Sam文件存储在C:WINDOWSsystem32config文件夹内,指直接复制粘贴不可行。 (2)使用hWinHax,将目录下的SAM文件和system文件导出。或使用samcopyer直接复制导出SAM文件。 (3)使用ophcrack进行彩虹表破解:运行ophcrack点击load->encrypted sam->再选择刚才准备好的sam文件,加载彩虹表后点击crack,即可。 --LSA(本地安全认证)注入: 本地安全认证(Local Security Authority)作用:调用所有的认证包,检查注册表;重新找回本地组的SIDs和用户权限;创建用户的访问令牌;管理本地安装的服务所使用的服务账号;储存和映射用户权限;管理审核的策略和设置;管理信任关系…… 破解方式: WinPswLogger2:windows的身份验证一般最终都是lsass进程,默认模块是msv1_0.dll,而关键在其导出函数LsaApLogonUserEx2。本程序通过注入代码到lsass进程hook LsaApLogonUserEx2,截取密码。在cmd中加载相应dll文件即可。 --Netlogon Service(NTLM认证): 早期SMB协议在网络上传输明文口令。后来出现了LAN Manager Challenge/Response 验证机制,简称LM,它是如此简单以至于很容易被破解。微软提出了WindowsNT挑战/响应验证机制,称之为NTLM。现在已经有了更新的NTLMv2以及Kerberos验证体系(保存的加密后的散列称为hash,一般翻译作"散列",也有直接译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,输出的就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出。所以不可能从散列值来唯一地确定输入值。)NTLM是windows早期的安全协议,因向后兼容性而保留下来。NTLM是NT LAN Manager的缩写,即NT LAN管理器。 NTLM的适用场景: 在网络环境中,NTLM用作身份验证协议以处理两台计算机(其中至少有一台计算机运行windows NT 4.0或更早版本)之间的事务。例如,以下列举了两种配置将使用NTLM作为身份验证机制: Windows或Windows xp professional 客户端向 Windows NT 4.0 的域控制器验证身份。 Windows NT 4.0 WorkStation 客户端向Windows 或Windows Server 2003 域控制器验证身份。 NTLM原理解析: 解析之前先看NTLM传输的例子TELNET 通过[开始]--[网络工具]--[服务] (或运行tlntsvr.exe程序)就可启动该服务。在客户端单击“开始”按钮,在弹出的菜单中选择“运行”命令,然后输入以下命令建立连接:
正常情况下,服务启动后,键入该命令后应该是远程计算机回送Login和Password信息,提示用户输入用户名和口令。 可是仔细看看上显示,根本没有给你输入用户名和密码的机会,直接断开连接,这是什么原因呢? 原来是win2000以后的telnet的一种验证身份方式所致:Windows NT LAN Manager(NTLM) NTLM的工作流程: (1)客户端首先在本地加密当前用户的密码称为密码散列; (2)客户端向服务器发送自己的账号,这账号是没有经过加密的,明文传输; (3)服务器产生一个16位的随机数字发送给客户端,作为一个challenge(挑战); (4)客户端再用加密后的密码散列来加密这个challenge,然后把这个返回给服务器。作为response(响应) (5)服务器把用户名、给客户端的challenge、客户端返回的response这三个东西,发送域控制器; (6)域控制器用这个用户名在SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密challenge。 (7)域控制器比较两次加密的challenge,如果一样,那么认证成功。 从上面的过程中我们可以看出,NTLM是以当前用户的身份向Telnet服务器发送登录请求的,而不是用你自己的账户和密码登录的,显然,你的登陆将会失败。 破解方式: (1)在命令行使用pwdump7,获取NTLM散列; (2)在ophcrack内load中选择single hash,复制需破解用户的NTLM散列; (3)用彩虹表破解。 防范方法(禁止LMHASH存取): (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |