在网站渗透测试期内,为了更好地提升审核员对信息管理系统的管理权限,很多人都是会挑选横着挪动方式。在这种情况下,称之为Pass The Hash(传送hach)的新技术被广泛运用,使审核员变成电子计算机上的管理人员。
NTLM协议
NTLM协议是在Microsoft自然环境中采用的一种身份认证协议,尤其是,它容许客户向服务器证实自身到底是谁,便于应用该服务器给予的服务项目。
留意:在这篇文章中,专业术语“服务器”是在手机客户端/服务器实际意义上采用的,“服务器”很可能是一个工作平台。
有2种有可能的状况:
1. 客户应用服务器的当地账号的凭证,在这种情况下,服务器在其本地数据库中便带有客户的密秘,将可以对使用者开展身份认证。
2. 在Active Directory自然环境中,客户在身份认证期内应用域账号,在这种情况下,服务器务必规定域控制器认证客户带来的信息内容。
在这里2种情形下,身份认证都是以手机客户端和服务器中间的挑戰/回应环节进行的。
挑戰/回应
应用挑戰/回应标准,便于服务器认证客户是不是了解他已经认证的账号的密秘,而无需根据互联网传送登陆密码。这被称作零知识证明。整个过程分3步:
1.商议:手机客户端告知服务器它要想对它进行身份认证(NEGOTIATE_MESSAGE)。
2.挑戰:服务器向手机客户端推送一个挑戰。这只不过一个64位的任意值,随每一个身份认证要求而转变(CHALLENGE_MESSAGE)。
3.回应:手机客户端应用其登陆密码的hach版本号做为密匙数据加密此前接受到的挑戰,并将此数据加密版本号连着其登录名和域(AUTHENTICATE_MESSAGE)回到给服务器。
NTLM互换框顶端是鲜红色的,底端是服务器回应CHALLENGE_MESSAGE中包括的信息内容。在这种互换以后,服务器有着俩件物品:
1. 发给手机客户端的挑戰;
2. 手机客户端的回应被本身的密秘数据加密了。
要进行身份认证,服务器只需查验手机客户端推送的回应的实效性。但在哪以前,使我们来检查一下顾客的密秘。
身份认证的密秘
大家说过,手机客户端应用一个hach版本号的登陆密码做为密匙,缘故如下所示:为了防止在服务器内以密文方式存储用户登陆密码,它是储存的登陆密码的哈希值。如今,此hach是NT哈希,它不过是MD4函数公式的結果,不含盐量值。
总的来说,当手机客户端开展身份验证时,它应用其登陆密码的MD4指纹识别来数据加密挑戰。随后,使我们看一下接受到此回应后服务器端会产生哪些。
身份验证
如前所述,有两类不一样的身份验证状况。最先,用以身份验证的帐户是一个当地帐户,因而服务器了解这一帐户,并有着该帐户的秘密团本。第二种是应用域帐户,在这样的情况下服务器不清楚这一帐户或它的秘密,它需要将身份验证授权委托给域控制器。
当地帐户
在应用当地帐户开展身份验证的情形下,服务器将应用用户的密钥(更准确地说成用户秘密的MD4hach) 对发给手机客户端的挑戰开展数据加密。随后,它将查验其使用的结论是不是相当于手机客户端的回应,进而证实用户有着合理的秘密。要是没有,则用户应用的密钥并不是恰当的,由于探索的数据加密沒有得出预估的密钥。
为了更好地实行此实际操作,服务器必须储存当地用户以及登陆密码的hach。这一数据库查询的命名是SAM(安全性帐户管理工具)。可以在注册表文件中寻找SAM,尤其是应用regedit专用工具时,但只有做为系统软件浏览。但是,还能够应用psexec开启:
团本也坐落于C:\Windows\System32\SAM的硬盘上,因而,它包括当地用户目录以及hach登陆密码,及其当地组目录。更确切地说,它包括了hach的数据加密版本号。可是,因为破译他们需要的全部数据也在注册表文件(SAM和SYSTEM)中,因此我们可以毫无疑问地说hach储存之中。假如你要掌握破译体制是怎样作业的,你能查看secretsdump.py编码或Mimikatz代码。
可以备份数据SAM和SYSTEM数据库查询,以获取用户的hach登陆密码数据库查询。
最先,大家将2个数据库查询储存在一个文档中。
因为服务器推送了挑戰(1),而且手机客户端应用其秘密的哈希值对该挑戰开展数据加密,随后应用其用户名(2)将其推送回服务器,因而服务器将在其SAM中搜索用户登陆密码的哈希值数据库查询(3)。接到挑戰后,它还将数据加密此前应用此hach(4)推送的挑戰,并将其結果与用户回到的挑戰开展较为。假如同样(5),则表明用户已根据身份验证!不然,用户沒有给予合理的秘密。
域账号
当应用域账号开展身份验证时,用户的NT哈希不会再储存在服务器上,反而是储存在域控制器上。用户期待对它进行身份验证的服务器接受其挑戰的回答,但没法查验该回答是不是合理。它将把这个每日任务授权委托给域控制器。
因此,它将应用Netlogon服务,该服务项目可以与域控制器创建可靠联接。此安全性联接称之为安全出口,往往可以开展这类安全性联接,是由于服务器了解自已的登陆密码,而域控制器也了解服务器登陆密码的哈希值,她们可以可靠地互换对话密匙并可靠地开展通讯。
我是不会详解,可是念头是服务器将以NETLOGON_NETWORK_INFO的构造将不一样的原素发送至域控制器:
1. 手机客户端的用户名(Identity);
2. 此前发给手机客户端的挑戰(LmChallenge);
3. 手机客户端推送的对探索的回应(NtChallengeResponse)。
域控制器将在其数据库查询中搜索用户的NT哈希,针对域控制器,它没有在SAM中,因为它是一个尝试开展身份验证的域账号。此次它坐落于一个名叫NTDS.DIT的资料中,该文件是全部域用户的数据库查询。查找NT哈希后,它将采用该哈希和挑戰测算预估的回应,并将此結果与顾客的回应开展较为。
随后,一条信息将被发送至服务器(NETLOGON_VALIDATION_SAM_INFO4),标示手机客户端是不是通过身份验证,它还将推送一组有关用户的信息。这与应用Kerberos身份验证时在PAC中发觉的信息同样。
下列便是一个域控制器的检验全过程:
与之前一样,服务器推送挑戰(1),手机客户端应用其密秘的哈希值对该挑戰开展数据加密,并将其连着用户名和网站域名一起推送回服务器(2)。此次服务器将应用Netlogon服务(3)在安全出口里将此信息发送至域控制器。把握了这种信息后,域控制器还将应用在其NTDS.DIT数据库查询(4)中寻找的用户哈希来对挑戰开展数据加密,随后将其結果与用户回到的效果开展较为。假如同样(5),则对用户开展身份验证。不然,用户未给予合理的密秘。在这里2种情形下,域控制器都将信息发送至服务器(6)。
NT哈希的安全风险
在这种互换中从不应用弱密码,反而是应用名叫NT哈希的哈希登陆密码,它是弱密码的简易哈希。
细心想一想,盗取弱密码或盗取哈希值是相同的。因为它是用于回应挑戰/回应的哈希,因此有着该哈希可以对服务器开展身份验证。因而,将登陆密码以密文表明压根没有用。
可以那么说,在大部分情形下,应用NT哈希与使用弱密码是一样的。
传送哈希
假如网络攻击了解一台电子计算机的当地管理人员的NT哈希,那麼他可以应用这一哈希轻轻松松地对该电子计算机开展身份验证。相近地,假如他有着服务器上当地管理方法组员的域用户的NT哈希,他还可以做为当地管理人员向该服务器开展身份验证。
当地管理人员
如今,使我们看一下它在具体条件中是怎样作业的:一名新员工赶到企业,公司为他/她给予了一个工作平台。IT单位都没有非常的时长为每一个职工从头开始安裝和配备Windows系统。因而,先设定一个安裝和配备Windows系统的版本号,以达到一个新员工的全部基本上要求和规定。随后,这一称之为master的基本上版本号储存某点,而且该版的团本给予给每一个初学者。
这代表着,当地管理人员账号在全部应用同样主服务器复位的工作平台中是一致的。假如在其中一台服务器被毁坏,而且网络攻击从工作平台的当地管理人员账号获取NT哈希,由于全部别的工作平台都具备同样的系统管理员账号和同样的登陆密码,那麼他们也将具备同样的NT哈希。随后,网络攻击可以运用在损伤服务器上寻找的哈希,并在全部别的服务器上回播该哈希,便于在这种服务器上开展身份验证,以上的整个过程就称为传送哈希。
没错,这一哈希还可以在新服务器上应用,并且我们在它上边有一个管理人员shell。
特权域账号
也有另一种应用传送哈希技术性的方式,假定针对远程控制生态公园管理方法,在Active Directory中有一个“HelpDesk”组。为了更好地使其值的人员可以管理方法客户的工作平台,将其值加上到每一个服务器的当地“Administrators”组里。这时,这一当地组包括在电子计算机上具备管理员权限的任何目标中。
你能应用下列指令列举他们:
因而,大家有着ADSEC \ HelpDesk域组,该域组是服务器的当地管理人员组的组员。假如网络攻击从其值中的一个组员那边盗取了NT哈希,则他可以应用管理人员目录中的ADSEC \ HelpDesk在全部服务器上开展身份认证。
与当地账号对比,其优点取决于,无论应用哪些服务器来设定电子计算机,GPO都是会将其值加上到服务器的配制中。该账号具备更普遍的管理员权限的可能更高,而与电脑操作系统和电子计算机设定全过程不相干。
因而,当要求身份认证时,网络服务器会将身份认证委任给域控制器,假如身份认证取得成功,则域控制器将向服务器发送相关客户的信息内容,例如登录名,客户隶属的组目录,登陆密码期满日期等。
随后,网络服务器将了解该客户是HelpDesk组的一部分,并向该用户授于管理人员访问限制。
另一个实例:大家发觉客户jsnow的NT哈希为89db9cd74150fc8d8559c3c19768ca3f。此账号是HelpDesk组的一部分,其值是任何客户工作平台的当地管理人员,让我们在另一台服务器上应用他的哈希。
一样,身份认证成功了,大家变成了总体目标机器设备的管理人员。
自动化技术
即然大家己经了解了NTLM身份认证的工作方式,及其为何可以应用NT哈希对别的服务器开展身份认证,那麼根据并行处理化每日任务来全自动对不一样方向开展身份认证以获得更多的消息将是特别有效的。
在这里,我建议应用CrackMapExec专用工具。
传送hach是在一些电子计算机上实行,随后电子计算机接着遭受毁坏。早已向CrackMapExec传送了一个主要参数,来列举现阶段登陆到这种电子计算机上的用户。
有着联接的用户目录非常好,可是有着她们的登陆密码或NThach会更好!因此,我研发了lsassy,——远程控制获取lsass密秘的专用工具。
大家从联接的用户中查找全部NThach,因为大家早已是这种电子计算机的管理员,因此不容易表明来源于电子计算机账号的文档。
传送hach限定
传送哈希值是一项在云服务器上开启NTLM身份认证时自始至终合理的技术性,默认设置状况下,该工艺是合理的。可是,Windows中有一些体制可以限定或很有可能限定管理方法每日任务。
在Windows上,应用浏览动态口令实行管理权限,进而可以了解谁有权利干什么。“Administrators”组的组员有两个动态口令。一个具备规范用户管理权限,另一个具备管理员管理权限。默认设置状况下,当管理员执行任务时,它是在规范的、比较有限的前后文中实行的。另一方面,假如必须管理方法每日任务,那麼Windows将表明这一称之为UAC(用户账号操纵)的大家都知道的对话框。
能够看见发生用户警示:应用软件要求管理员权限。
那麼远程控制实行的监管每日任务是什么呢?有2种很有可能。
1. 归属于服务器“Administrators”组员的域账号都能够要求他们,在这样的情况下,不容易因此账号激话UAC,他可以实行其管理方法每日任务。
2. 是由服务器的“Administrators”组员的当地账号要求的,在这样的情况下,UAC在某种情形下是开启的,但并不是一直开启。
为了更好地了解第二种状况,使我们看一下2个注册表项,这两个注册表项有时候是不明的,可是当应用当地管理方法账号开展NTLM身份认证后试着实行管理方法每日任务时,有两个注册表项(LocalAccountTokenFilterPolicy,FilterAdministratorToken)饰演了重要人物角色。
下表汇总了这两个注册表项的每一种组成,每一种组成都能够根据服务器的身份认证。
汇总
现如今,NTLM身份认证仍在企业中普遍应用。以我的工作经验,我从来没见过可以在所有互联网上禁止使用NTLM的自然环境。这代表着,传送hach的进攻依然十分合理。
该工艺是NTLM协议书原有的,可是可以利用防止在全部工作平台上采用同样的当地管理方法登陆密码来减轻。微软公司的LAPS 解决方法是这其中一种解决方法,它可以根据保证全部工作平台上的登陆密码(也包含NThach)都不一样。
文中翻譯自:https://en.hackndo.com/pass-the-hash/倘若转截,请标明全文详细地址。