1。Windows的主要认证方式有哪些?Windows的认证方式主要有NTLM认证和Kerberos认证。同时,WindowsAccessToken记录了用户的SID、组ID、Session、权限等信息,也起到了权限认证的作用。其中,NTLM认证主要包括本地认证和网络认证。在本地登录时,用户密码存储在文件%SystemRoot%\system32\config\sam中。当用户输入密码进行本地认证时,所有操作都在本地进行。他实际上是将用户输入的密码转换成NTLMHash,然后与SAM中的NTLMHash进行比对。网络认证是一种基于Challenge/Response认证机制的认证方式。他的认证过程将在下面详细描述。Kerberos身份验证用于域环境,它是一种基于票据的身份验证方法。他的整个认证过程涉及三个方面:客户端、服务器和KDC(KeyDistributionCenter)。在Windows域环境中,DC(域控制器)充当KDC。访问令牌(accesstoken)是用来描述进程或线程安全上下文的对象,令牌中包含的信息是与用户账号相关的进程或线程的身份和权限信息。当用户登录时,系统会生成一个访问令牌,然后以该用户身份运行的所有进程都将拥有该令牌的副本。这也就说明用户A创建了一个进程,而用户B对该进程没有权限。2、NTLM的认证流程是怎样的?首先是本地认证,也就是NTLMHash的生成方式。当用户注销、重启或锁屏时,操作系统会让winlogon显示登录界面,也就是输入框。当winlogon.exe收到输入后,会将密码传递给LSASS进程,LSASS进程会存储明文密码,将明文密码加密成NTLMHash,并与SAM数据库进行比对验证。(winlogon.exe,WindowsLogonProcess,是WindowsNT用户登录程序,用于管理用户登录和注销。LSASS用于MicrosoftWindows系统的安全机制,用于本地安全和登录策略。)例如,当用户输入密码123456时,操作系统会将123456转为16进制,经过Unicode转换后,再调用MD4加密算法进行加密,加密结果的16进制为NTLMHash123456->hex(16进制代码)=313233343536313233343536->Unicode=610064006d0069006e00610064006d0069006e00->MD4=209c6174da490caeb422f3fa5a7ae634了解了本地认证流程后,我们来说说网络认证的具体流程。NTLM协议的认证需要三个消息来完成:协商、质询和认证。协商:主要用于确认双方的协议版本和加密级别。挑战:服务端收到客户端的协商报文后,会读取内容,选择自己可以接受的服务内容、加密级别、安全服务等。等待。并生成一个随机数challenge,然后生成一个challengemessage返回给client。该消息是挑战/响应认证机制的主要功能。Authentication:验证主要是在challenge完成后,验证结果,是验证的最后一步。详细过程如下:第一步,输入密码,LSASS会将密码的NTLMHash后的值存储到本地。第二步,客户端将用户名的明文发送给服务器。第三步,服务端会生成一个16位的随机数,即challenge,然后发回给客户端。第四步,当client收到challenge时,使用第一步保存的NTLMHash对其进行加密,然后将加密后的challenge发送给server,即为response。第五步:服务器收到响应后,会向DC发送对客户端的验证请求。该请求主要包括以下三个方面:客户端用户名、客户端NTLMHash加密的Challenge、原始Challenge。第六步,DC收到这三个值后,会根据用户名在DC的账户数据库(ntds.dit)中找到用户名对应的NTLMHash,然后取出hash传过去over和challenge值进行比较,如果相同,则认证成功,否则,认证失败。上面说的是NTLMv1的认证方式。NTLMv2和v1最显着的区别在于Challenge不同于加密算法。共同点是加密密钥都是NTLMHash。NTLMv1的Challenge有8位,NTLMv2的Challenge有16位。NTLMv1的主要加密算法是DES,NTLMv2的主要加密算法是HMAC-MD5。3、对抗NTLM的主要姿态有哪些?当我们通过dumphash得到NTLMHash的时候,我一般会先尝试一下能不能直接在线破解。常用破解网站:https://www.objectif-securite.ch/en/ophcrack.php/http://www.cmd5.com/https://www.somd5.com/如果破解不了,你可以试试PassTheHash(哈希传递)。Hash传输是使用用户名对应的NTLMHash对服务器给出的Challenge进行加密,生成Response完成认证。PassTheHash可以完成一个不需要密码的NTLM协议认证过程,所以不是漏洞,而是技巧。常用的pth工具主要有:mimikatz(***)、wmiexec/psexec、exploit/windows/smb/psexec_psh、powershellinvoke系列小脚本。当然,pth也是有条件的。如果目标机器安装了KB2871997,那么我们不能pth。然后我们有另一个姿势:传递钥匙。对于安装了补丁kb2871997的8.1/2012r2、Win7/2008r2/8/2012,您可以使用AES密钥代替NTLM哈希。mimikatz抓hash的时候可以一起抓。其实mimikatz中的pth本身就是ptk。命令:mimikatz"privilege::debug""sekurlsa::pth/user:a/domain:test.local/aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c"除了这些还有很多其他的姿势,比如打了补丁,管理员账号可以抛出pth开启RestrictedAdminMode后,win8.1和server12R2默认支持pth,开启WDigest劫持winlogon仙女跳转等。4、Kerberos认证中需要注意的主要知识点有哪些?先解释一些术语:基本概念:KDC:KeyDistributionCenter,密钥分发中心,负责管理票证、认证票证、分发票证,但KDC并不是一个独立的服务。它由AS和TGS组成。AS:AuthenticationService,验证服务,为客户端生成TGT的服务TGS:TicketGrantingService,票证授权服务,为客户端生成某项服务的票证准考证,是临时证件存在的。Ticket:票证,是网络中对象之间相互访问的凭证AD:AccountDatabase,存放所有客户端的白名单。只有存在于白名单中的客户端才能成功申请TGT。DC:DomainController,域控制器KRBTGT:每个域控制器都有一个krbtgt账户,是KDC的服务账户,用于创建TGS加密的密钥。Kerberos提供了一种集中式身份验证方法。整个认证过程涉及三方:客户端、服务器和KDC。在Windows域环境中,KDC的角色由DC承担。Kerberos是一种基于票证的认证方式,票证(Ticket)用于在认证服务器和用户请求的服务之间安全地传递用户的身份,同时也传递一些附加信息以确保使用票证的用户必须是Ticket中指定的用户,Ticket一旦生成,在生命周期内可以被Client多次使用,申请同一个Server的服务。这里有一个盗票问题。下面说说kerberos的大致工作流程。当一个域中的客户端想要访问同一域中的服务器资源时,需要购买服务器认可的票证(Ticket)。也就是说客户端在访问服务器之前需要先访问服务器。提前买票,等服务验票后入场,但此票不能直接购买,需要认购权证(TGT),即客户需要先取得认购权证后方可购买一张票。服务器的认购证和入场券均由KDC发行。引用网上的一张图思路清晰。5、域渗透中对抗Kerberos的主要姿势有哪些?说完认证流程,我们再来说说两种常用的票:银票和金票。银票的特点是:不需要和KDC交互,需要目标服务的NTLMHash。因此,当我们有了ServerHash后,我们就可以伪造一张未经KDC认证的Ticket。利用:kerberos::golden/domain:
